gifts2017

Особенности работы формы документа

Опубликовал Андрей Слаута (Стил) в раздел Программирование - Практика программирования

Если  основной реквизит формы имеет тип значения ДокументОбъект.<Имя>, то для данной формы действует расширение формы документа. Посредством него решаются вопросы специфичной функциональности формы документа. Расширение помогает обрабатывать различные команды пользователя, выполнять предварительные проверки и другие сервисные действия.

Кроме того, действие расширения формы документа распространяется и на механизмы записи и проведения документа. При этом неважно, была вызвана запись документа интерактивными действиями пользователя в форме документа или средствами языка Записать().

Рассмотрим ряд примеров работы этих механизмов.

Установка даты документа при открытии формы 

Если дата документа изначально не установлена, то при открытии формы нового документа происходит установка дате документа значения текущей даты сеанса.

Причем время документа будет установлено в зависимости от следующих настроек. Если свойство АвтоВремя расширения формы документа имеет значение НеИспользовать то время документа будет установлено по значению текущей даты сеанса. В остальных случаях дате документа присваивается время начала дня (00:00:00).

 

 


Установка даты нового документа при записи нового документа в форме

При записи документа в режиме оперативного проведения значение даты документа устанавливается согласно выданной оперативной отметке времени. Тут настройки свойств расширения формы не играют роли.

Но если время документа "нулевое" (0:00:00), то при неоперативном проведении документа оно будет изменено согласно настройкам свойства АвтоВремя. Исключение - когда АвтоВремя имеет значение НеИспользовать тогда время документа не меняется.

.

 
Запрет интерактивной записи проведенного документа без проведения (перепроведения)

Запрет интерактивной записи проведенного документа без проведения (перепроведения) используется, чтобы не создавалась, например, такая ситуация: сначала документ реализации был заполнен и проведен, при проведении сформированы движения по регистру с указанием количества, соответствующего количеству в документе. После этого пользователь исправил данные документа и сохранил без проведения.


 

 В результате таких манипуляций в документе будут записаны новые данные, а в движениях по регистру останутся данные от прошлого проведения документа, то есть они никак не будут соответствовать текущим данным документа.

Предотвращение подобных ситуаций достигается за счет установки свойства расширения формы документа ПриЗаписиПерепроводить  значение Истина. Тогда отказ в обработке проведения приведет к откату транзации - документ не будет и перезаписан.

Установка режима проведения

При проведении документа из формы система проверяет наличие у пользователя соответствующих прав (Проведение, Интерактивное проведение, Интерактивное проведение неоперативное). Если их нет, то выдается сообщение о невозможности проведения документа, и запись с проведением документа из формы отменяется. Мы будем рассматривать только возможность отсутствия/наличия прав на неоперативное проведение, в зависимости от которого система может менять свое поведение, так как если нет первых двух прав, то документ не может быть проведен из формы в принципе.

Если интерактивное проведение разрешено, сам выбор варианта проведения должен быть обусловлен логикой применения механизма установки режима проведения из формы. То есть в некоторых ситуациях система должна выбирать режим жестко, в некоторых право выбора режима можно предоставить пользователю. Для этого разработчик обладает рядом возможностей, предоставляемых системой посредством разграничения прав и расширениями формы документа.

При записи документа из формы расширение формы документа выполняет установку режима проведения документа.

Для реализации данного функционала система использует вариант (Автоматически, Оперативный, Неоперативный, Запрашивать) указанный в качестве значения свойства ИспользоватьРежимПроведения расширения формы документа.

 
Вариант "Автоматически"

Вариант Автоматически устанавливается посредством выбора значения Автоматически у свойства ИспользоватьРежимПроведения расширения формы документа. Платформа стандартно устанавливает это значение для новой формы.

При испльзовании данного варианта, в зависимости от ситуации и настроек, происходит первичный подбор режима проведения из вариантов Оперативный или Неоперативный.

Для проводимого документа происходит проверка положения даты документа относительно текущей даты сеанса.

Если дата документа (без учета времени) равна текущей дате сеанса, то система автоматически выбирает вариант проведения Оперативный.

Если дата документа (без учета времени) больше текущей даты сеанса, пользователю выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется. 

Если дата документа (без учета времени) меньше текущей даты сеанса, выбирается вариант проведения Неоперативный. При этом если у пользователя нет права на неоперативное проведение, выдается предупреждение: "Недостаточно прав для неоперативного проведения", и проведение документа отменяется.

 Использование режима проведения

 

Вариант "Оперативный"

Вариант Оперативный устанавливается посредством выбора значения Оперативный у свойства ИспользоватьРежимПроведения расширения формы документа. 

В данном варианте, если дата документа (без учета времени) меньше текущей даты сеанса, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Если дата документа (без учета времени) равна текущей дате сеанса, производится запись документа с оперативным проведением. 

Если дата документа (без учета времени) больше текущей даты сеанса, выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется. 

 

Использование режима проведения


Вариант "Неоперативный"

Вариант Неоперативный устанавливается посредством выбора значения Неоперативный у свойства ИспользоватьРежимПроведения расширения формы документа.

При испльзовании данного варианта проведение документа из формы всегда производится в неоперативном режиме, независимо от положения даты документа по отношению к текущей дате сеанса.

При этом еслу у пользователя нет права на неоперативное проведение, выдается предупреждение: "Недостаточно прав для неоперативного проведения", и проведение документа отменяется.


 Использование режима проведения

 

Вариант "Запрашивать" 

Вариант Запрашивать устанавливается посредством выбора значения Запрашивать у свойства ИспользоватьРежимПроведения расширения формы документа. 

Данный вариант реализован в системе для того, чтобы помочь пользователю принять решение о выборе режима проведения для каждой конкретной ситуации.

В данном варианте пользователь перед началом проведения должен будет выбрать режим проведения документа в специальном системном окне.

 

Выбор режима проведения 

 
Поведение системы при этом варианте определяется прежде всего положением даты документа (без времени) по отношению к текущей дате сеанса.

При равенстве этих дат далее проверяется, имеет ли пользователь право проводить документ неоперативно. Если пользователь такого права не имеет, система проводит данный документ в оперативном режиме. Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора режима проведения система проводит документ соответственно в оперативном или неоперативном режиме.


Использование режима проведения


Если дата документа (без учета времени) меньше текущей даты сеанса, поведение системы определяется опять же наличием права на неоперативное проведение у пользователя. Если пользователь таким правом не обладает, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора неоперативного режима проведения система проводит документ в неоперативном режиме. Если же пользователь выберет оперативный режим проведения, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Использование режима проведения

Если дата документа (без учета времени) больше текущей даты сеанса, система не позволяет проводить документ оперативно. Поэтому если права неоперативного проведения нет, сразу выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.

Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора неоперативного режима проведения система проводит документ в неоперативном режиме. Если же пользователь выберет оперативный режим проведения, будет выдано предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменится.

Использование режима проведения

Прочие функции

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

  • при открытии формы проведенного документа, если у пользователя нет права Интерактивное изменение данных форма переводится в режим ТолькоПросмотр;
  • при открытии формы документа, в которой находятся таблицы, отражающие движения основного реквизита (объекта документа), эти движения автоматически считываются из базы данных и отображаются;
  • при записи из формы (даже если и программной - посредством Записать()) система выполняет проверку прав на интерактивное проведение или интерактивную отмену проведения.

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Марина Чирина (chmv) 19.08.13 08:49
2. Андрей Слаута (Стил) 19.08.13 17:13
(1) chmv, на самом деле всё довольно просто. Стоит всего лишь один раз попробовать на практике и всё становится предельно ясно и понятно.
3. Алекс Ю (AlexO) 19.08.13 17:22
и зачем перепостили Профразработку? А что, было слабо написать такую статью, когда её не было в первом издании?
4. Андрей Слаута (Стил) 20.08.13 15:42
(3) AlexO, слабо! Не писатель я, к сожалению. Непонятно, правда, что за первое издание и существует ли второе. У меня нет цифры 2, значит это первое? Так получается, что есть это в первом издании? Или у нас с вами книжечки разные? Неужели 1С занимается перепостом своих статей? Как же это немыслимо.
Не понимаю в чем проблема? Купил, прочитал, поведал людям. Зачем? Сами прекрасно знаете ответ на этот вопрос.
5. Dima Dima (bayce) 19.12.13 22:11
Очень познавательная статья.
6. Dmitry Bas (b-dm) 22.10.15 15:24
Как будет время обязательно прочитаю про проведение документов :-)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа