Изменение времени документа
03.12.2008
09:14
#21
Спасибо, образумили тёмного...)) Только про эти методы работают только в оперативном учете, а у меня только бухгалтерский, и о их существовании я знал еще до своего вопроса... Если они работают и в бухгалтерском учете, то объясните их принцип поподробнее - стану еще менее темным))
03.12.2008
10:32
#23
Мои корявенькие ручонки уже неоднократно пытались что-то подобное наваять, но ничего нужного из этого не получалось...))
03.12.2008
11:45
#25
ТА в бух.программах 7.7 не существует, вернее не применяется!
З,Ы, Кстати по ссылку на главной странице дата 58 августа 2009
))
З,Ы, Кстати по ссылку на главной странице дата 58 августа 2009
03.12.2008
14:01
#26
> ТА в бух.программах 7.7 не существует, вернее не применяется!
Да, тут надо делать через обработку ожидания, но, что-то у меня не работает, не запускается процедура которую передаю в параметре обработе ожидания.
> З,Ы, Кстати по ссылку на главной странице дата 58 августа 2009
))
8)))
Да, тут надо делать через обработку ожидания, но, что-то у меня не работает, не запускается процедура которую передаю в параметре обработе ожидания.
> З,Ы, Кстати по ссылку на главной странице дата 58 августа 2009
8)))
03.12.2008
14:06
#27
"Про обработку не могу сказать, сейчас практически не работаю с 7.7, просто не хочу, каждый раз вспоминать, что там и как там! ;))"
03.12.2008
15:29
#28
Я своими корявенькими ручонками вчера и написал в бухгалтерии аналог ТА для нужного типа документов, только теперь хочу его правильно запустить... Не могу определиться с точкой вызова обработки...
03.12.2008
16:22
#29
"Вот рабочий вариант с обработкой ожидания.
В Глобальном мобуле:
Перем ДанныеДляИзмененияВремениДокумента Экспорт;
Процедура глИзменитьВремениДокумента() Экспорт
ОткрытьФорму("Обработка.УстановитьВремяДокумента");
КонецПроцедуры
В документе:
Процедура ИзменитьВремяДокумента()
Данные=СоздатьОбъект("СписокЗначений");
Данные.ДобавитьЗначение(ТекущийДокумент());
Данные.ДобавитьЗначение(ТекущееВремя());
Данные.ДобавитьЗначение(1);
ДанныеДляИзмененияВремениДокумента=ЗначениеВСтрокуВнутр(Данные);
Форма.Закрыть();
ОбработкаОжидания("глИзменитьВремениДокумента",1);
КонецПроцедуры
Текст обработки УстановитьВремяДокумента:
Процедура ПриОткрытии()
ОбработкаОжидания("""");
Данные=СоздатьОбъект("СписокЗначений");
Данные=ЗначениеИзСтрокиВнутр(ДанныеДляИзмененияВремениДокумента);
Если Данные.РазмерСписка()<>3 Тогда
Сообщить("Не верное количество входящих параметров");
Форма.Закрыть();
Возврат;
КонецЕсли;
ОбрабатываемйДокумент=Данные.ПолучитьЗначение(1);
Если ТипЗначения(ОбрабатываемйДокумент)<>12 Тогда
Сообщить("Не правильно задан входящий параметр Документ");
Форма.Закрыть();
Возврат;
КонецЕсли;
Время=Данные.ПолучитьЗначение(2);
Если ТипЗначения(Время)<>2 Тогда
Сообщить("Не правильно задан входящий параметр Время (не совпадает тип значения)");
Форма.Закрыть();
Возврат;
КонецЕсли;
Если СтрДлина(Время)<>8 Тогда
Сообщить("Не правильно задан входящий параметр Время (не совпадает длина параметра)");
Форма.Закрыть();
Возврат;
КонецЕсли;
Открыть=Данные.ПолучитьЗначение(3);
Если ТипЗначения(Открыть)<>1 Тогда
Сообщить("Не правильно задан входящий параметр Открыть (не совпадает тип значения)");
Форма.Закрыть();
Возврат;
КонецЕсли;
Док=СоздатьОбъект("Документ."+ОбрабатываемйДокумент.Вид());
Док.НайтиДокумент(ОбрабатываемйДокумент);
//Док=Док.ТекущийДокумент();
ЧЧ=Лев(Время,2);
ММ=Сред(Время,4,2);
СС=Прав(Время,2);
БылПроведен=0;
Если Док.Проведен()=1 Тогда
Док.СделатьНеПроведенным();
БылПроведен=1;
КонецЕсли;
Док.УстановитьВремя(ЧЧ,ММ,СС);
Док.Записать();
Если БылПроведен=1 Тогда
Док.Провести();
КонецЕсли;
Если Открыть=1 Тогда
ОткрытьФорму(Док.ТекущийДокумент());
КонецЕсли;
Форма.Закрыть();
КонецПроцедуры
Как работает. При нажатии в документе кнопки с формулой ИзменитьВремяДокумента() вормируется список параметров в который заностся ссылка на текущий документ, текущее время и режим 1 - открыть документ после изменения времени, 0 - не открывать, параметры помещаются в глобальную переменную ДанныеДляИзмененияВремениДокумента. Далее документ закрывается и устанавливается обработка ожидания с интервалом в 1 сек - вызов процедуры глобального модуля - глИзменитьВремениДокумента. Далее через 1 сек срабатывает обработка ожидания и в процедуре глИзменитьВремениДокумента вызывается обработка УстановитьВремяДокумента. В обработке УстановитьВремяДокумента останавливается обработка ожидания, считываются параметры из глобальной переменной ДанныеДляИзмененияВремениДокумента и проверяются. Далее ищется документ переданный в 1 параметре, парсится сремя переданное во втором патаметре, если документ проведен отменятеся его проведение, изменятеся время документа и он запистывается, потом если документ был ранне проведен то он проводится и в зависимости от третьего полученного параметра , елси он равен 1 документ открывается и обработка закрывается."
В Глобальном мобуле:
Перем ДанныеДляИзмененияВремениДокумента Экспорт;
Процедура глИзменитьВремениДокумента() Экспорт
ОткрытьФорму("Обработка.УстановитьВремяДокумента");
КонецПроцедуры
В документе:
Процедура ИзменитьВремяДокумента()
Данные=СоздатьОбъект("СписокЗначений");
Данные.ДобавитьЗначение(ТекущийДокумент());
Данные.ДобавитьЗначение(ТекущееВремя());
Данные.ДобавитьЗначение(1);
ДанныеДляИзмененияВремениДокумента=ЗначениеВСтрокуВнутр(Данные);
Форма.Закрыть();
ОбработкаОжидания("глИзменитьВремениДокумента",1);
КонецПроцедуры
Текст обработки УстановитьВремяДокумента:
Процедура ПриОткрытии()
ОбработкаОжидания("""");
Данные=СоздатьОбъект("СписокЗначений");
Данные=ЗначениеИзСтрокиВнутр(ДанныеДляИзмененияВремениДокумента);
Если Данные.РазмерСписка()<>3 Тогда
Сообщить("Не верное количество входящих параметров");
Форма.Закрыть();
Возврат;
КонецЕсли;
ОбрабатываемйДокумент=Данные.ПолучитьЗначение(1);
Если ТипЗначения(ОбрабатываемйДокумент)<>12 Тогда
Сообщить("Не правильно задан входящий параметр Документ");
Форма.Закрыть();
Возврат;
КонецЕсли;
Время=Данные.ПолучитьЗначение(2);
Если ТипЗначения(Время)<>2 Тогда
Сообщить("Не правильно задан входящий параметр Время (не совпадает тип значения)");
Форма.Закрыть();
Возврат;
КонецЕсли;
Если СтрДлина(Время)<>8 Тогда
Сообщить("Не правильно задан входящий параметр Время (не совпадает длина параметра)");
Форма.Закрыть();
Возврат;
КонецЕсли;
Открыть=Данные.ПолучитьЗначение(3);
Если ТипЗначения(Открыть)<>1 Тогда
Сообщить("Не правильно задан входящий параметр Открыть (не совпадает тип значения)");
Форма.Закрыть();
Возврат;
КонецЕсли;
Док=СоздатьОбъект("Документ."+ОбрабатываемйДокумент.Вид());
Док.НайтиДокумент(ОбрабатываемйДокумент);
//Док=Док.ТекущийДокумент();
ЧЧ=Лев(Время,2);
ММ=Сред(Время,4,2);
СС=Прав(Время,2);
БылПроведен=0;
Если Док.Проведен()=1 Тогда
Док.СделатьНеПроведенным();
БылПроведен=1;
КонецЕсли;
Док.УстановитьВремя(ЧЧ,ММ,СС);
Док.Записать();
Если БылПроведен=1 Тогда
Док.Провести();
КонецЕсли;
Если Открыть=1 Тогда
ОткрытьФорму(Док.ТекущийДокумент());
КонецЕсли;
Форма.Закрыть();
КонецПроцедуры
Как работает. При нажатии в документе кнопки с формулой ИзменитьВремяДокумента() вормируется список параметров в который заностся ссылка на текущий документ, текущее время и режим 1 - открыть документ после изменения времени, 0 - не открывать, параметры помещаются в глобальную переменную ДанныеДляИзмененияВремениДокумента. Далее документ закрывается и устанавливается обработка ожидания с интервалом в 1 сек - вызов процедуры глобального модуля - глИзменитьВремениДокумента. Далее через 1 сек срабатывает обработка ожидания и в процедуре глИзменитьВремениДокумента вызывается обработка УстановитьВремяДокумента. В обработке УстановитьВремяДокумента останавливается обработка ожидания, считываются параметры из глобальной переменной ДанныеДляИзмененияВремениДокумента и проверяются. Далее ищется документ переданный в 1 параметре, парсится сремя переданное во втором патаметре, если документ проведен отменятеся его проведение, изменятеся время документа и он запистывается, потом если документ был ранне проведен то он проводится и в зависимости от третьего полученного параметра , елси он равен 1 документ открывается и обработка закрывается."
Не проводится ни один документ в 1С:Бухгалтерия8.1пересчет оклада за предыдущий месяц в 1С ЗП и кадры
Читают тему
(гостей: 1)