v8: Как разрешить проведение будущей датой в форме документа Ключевые слова: будущая,дата,проведение,документ,оперативный,неоперативный
Суть метода - в том, чтобы при установке в форме будущей даты режим проведения документа менялся автоматически на неоперативный и возвращался обратно в автоматический при установке нормальной даты.
Вызов обработчика в режиме Данные="" происходит при открытии формы, при этом нужно также контролировать дату. Т.е. например пользователь сохранил документ будущей датой, потом его открыл и не меняя даты проводит.
В модуль формы документа добавляется процедура:
Процедура п_ОбработчикИзмененияДаты(Данные)
Если Данные="ДокументОбъект.Дата" ИЛИ Данные="" Тогда
Если Дата>ТекущаяДата() Тогда
ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.НеОперативный;
Иначе
ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.Оперативный;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
В самый конец модуля формы добавляется строчка:
ПодключитьОбработчикИзмененияДанных("Дата","ОбработчикИзмененияДаты");
Вот и все.
Я было подумал, что если просто добавить в конец формы строку включения автоматического режима, то проведение будущей датой будет работать нормально, но ничего подобного, нужна именно моя схема, такая строка не дает ничего для проведения будущей датой:
ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.Авто;
Некоторым ленивым программистам можно порекомендовать вставлять проверку в метод ПередЗаписью формы, чтобы не подключать лишние обработчики, видимо так оно проще:
Процедура ПередЗаписью()
....
Если Дата>ТекущаяДата() Тогда
ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.НеОперативный;
Иначе
ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.Оперативный;
КонецЕсли;
....
КонецПроцедуры
|