При использовании встроенного типового механизма дополнительных реквизитов может понадобиться возможность выполнять какие-либо расчеты и действия при изменении определенного дополнительного реквизита, а также часто требуется выполнять проверку заполненных данных, как основных реквизитов, так и дополнительных при записи документа.
Расширение также позволяет добавлять скрипт, который будет выполняться при записи документа для проверки нужных данных. В случае когда документ не проходит условие проверки при записи, запись будет отменена. Подробнее на видео в текущей статье.
В статье есть видео, на которых постарался детально рассказать и показать на что направлено разработанное расширение. Видео записаны на примере разбора задач в 1С Документооборот 2.1. Для 1С Документооборот 3.0 действия аналогичны.
Примеры использования:
1. Действие при изменении дополнительного реквизита на форме (внутреннего, входящего и исходящего документа)
Предположим, есть задача в которой необходимо выполнить следующие пункты:
В форме внутреннего документа - Приказ о направлении в командировку, при изменении дополнительного реквизита «Дата начала» необходимо заполнить следующие данные:
- Значение доп.реквизита «Дата окончания» рассчитать + 1 день, от даты начала
- Значение доп.реквизита «Длительность» рассчитать разницу между «Дата начала» и «Дата окончания» в часах
- Значение доп.реквизита «Сотрудник», установить текущего пользователя
- Значение в типовой реквизит «Содержание» любой текст.
На видео ниже, подробно рассказываю и показываю, как данная задача реализовывается с помощью расширения:
2. Условие проверки при записи документа (внутреннего, входящего и исходящего документа)
Предположим, есть задача в которой необходимо выполнить следующие пункты:
При интерактивной записи внутреннего документа - Приказ о направлении в командировку, необходимо выполнить следующие проверки:
- Содержание документа должно быть заполнено
- Дата указанная в дополнительном реквизита "Дата начала" должна быть больше текущей даты.
На видео ниже, подробно рассказываю и показываю, как данная задача реализовывается с помощью расширения:
Описание и характеристики тестирования:
- Вкладка «Встроенный язык» — это поле HTML представление. Редактировать текст в нем нельзя. При написании кода на вкладке "Тест", скрипт автоматически раскрашивается и помещается на вкладку "Встроенный язык". Сделано для удобства просмотра написанного скрипта. Весь код пишется на вкладке «Текст».
- Изменения в форм ах справочников:
- R03;R03;R03;R03;R03;R03;R03;Документооборот 2.1
- Виды внутренних
- Виды входящих
- Виды исходящих
- Документооборот 3.0
- Виды документов
- R03;R03;R03;R03;R03;R03;R03;Документооборот 2.1
в части добавления новых элементов формы, выполнено на встроенном языке. Данные через конструктор форм не менялись.
- Тестирование проводилось на платформе (1С:Предприятие 8.3 (8.3.23.1782)), конфигурации - Документооборот 8 КОРП, редакция 2.1 (2.1.34.1) и Документооборот КОРП, редакция 3.0 (3.0.14.31)
Текстовое описание реализации задачи 1:
Необходимо в справочнике «Действия при изменении дополнительного реквизита на форме» создать новый объект, указать наименование, в моем случае название «При изменении – Дата начала».
Далее в поле «Свойство» нужно выбрать дополнительный реквизит, при изменении которого, будет выполняться указанный в поле «Алгоритм» скрипт. Реквизит нужно выбирать тот, который есть в документе - Приказ о направлении в командировку.
При выборе в поле свойство доп.реквизита, в поле «Алгоритм» вкладки «Текст» автоматически добавиться скрипт, с помощью которого выполняется чтение выбранного значения. (Название переменной сформируется автоматически на основании имени доп.реквизита).
Для удобства написания скрипта, в части обращения к доп. реквизитам нужного объекта, в поле «Список видов объектов» можно выбрать требуемый вид документа. В нашем случае это вид документа – Приказ о направлении в командировку.
Для реализации пункта
1) Значение доп.реквизита «Дата окончания» рассчитать + 1 день, от даты начала
выполняем следующие действия:
В сформированном списке доп.реквизитов (который сформируется после выбора в поле «Список видов объектов»), ищем реквизит «Дата окончания» и нажимаем по нему два раза. Откроется окно выбора варианта действия:
- Вариант Скрипт для чтения – добавит скрипт, который будет читать значение доп.реквизита на форме
- Вариант Скрипт для заполнения – добавит скрипт, который будет заполнять нужным значение доп.реквизит на форме.
В нашем случае, нам нужно доп.реквизит «Дата окончания» заполнить, поэтому выбираем – Скрипт для заполнения.
В поле «Алгоритм» вкладки «Текст» автоматически добавится скрипт:
Теперь необходимо выполнить расчет в соответствии с заданием, в итоге получим скрипт:
Аналогично выполняются последующие пункты, в итоге общий скрипт имеет следующий вид:
Далее необходимо нажать «Записать и закрыть».
Открываем в «Виды внутренних документов (Справочники)» вид – Приказ о направлении в командировку.
Переходим на вкладку «Действия при изменении доп.реквизита» и добавляем в табличную часть ранее созданное действие – «При изменении – Дата начала»
Далее записываем изменения.
В результате в открытой форме внутреннего документа с видом Приказ о направлении в командировку при изменении «Дата начала» выполниться расчет и установка значений в доп.реквизиты и не только:
После того, как виду документу назначили какие-либо действие, в форме назначенного действия можно увидеть в каком объекте он используется.
Для этого нужно развернуть группу в нижней части экрана – Используется в следующих объектах.
Проверено на следующих конфигурациях и релизах:
- Документооборот КОРП, релизы 2.1.34.1
- Документооборот КОРП, редакция 3.0, релизы 3.0.14.31