Книга знаний

1С:Предприятие / v8 / Объекты конфигурации / Документы

v8: Как разрешить проведение будущей датой в форме документа

В 8-ке документ будущей датой по умолчанию не проводится. Небольшая независимая от остального кода заплатка в форму документа решит эту проблемуАвтор статьи: Гений 1С | Редакторы: evGenius
Последняя редакция №5 от 28.05.07 | История
URL: http://kb.mista.ru/article.php?id=137

Ключевые слова: будущая,дата,проведение,документ,оперативный,неоперативный


Суть метода - в том, чтобы при установке в форме будущей даты режим проведения документа менялся автоматически на неоперативный и возвращался обратно в автоматический при установке нормальной даты.

Вызов обработчика в режиме Данные="" происходит при открытии формы, при этом нужно также контролировать дату. Т.е. например пользователь сохранил документ будущей датой, потом его открыл и не меняя даты проводит.

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

В самый конец модуля формы добавляется строчка:
ПодключитьОбработчикИзмененияДанных("Дата","ОбработчикИзмененияДаты");

Вот и все.

Я было подумал, что если просто добавить в конец формы строку включения автоматического режима, то проведение будущей датой будет работать нормально, но ничего подобного, нужна именно моя схема, такая строка не дает ничего для проведения будущей датой:
    ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.Авто;




Некоторым ленивым программистам можно порекомендовать вставлять проверку в метод ПередЗаписью формы, чтобы не подключать лишние обработчики, видимо так оно проще:


Процедура ПередЗаписью()
    ....
    Если Дата>ТекущаяДата() Тогда
            ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.НеОперативный;
        Иначе
            ЭтаФорма.ИспользоватьРежимПроведения=ИспользованиеРежимаПроведения.Оперативный;
    КонецЕсли;
    ....
КонецПроцедуры


Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика