click fraud detection

Изменение условного оформления формы из внешней обработки в 1С

Дата публикации: 23.11.2018

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

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

То есть, в обработке создается форма, в ней клиентская процедура с фиксированным именем ВыполнитьКоманду. В нее и будет передано выполнение кода при вызове обработки. ВладелецФормы – это и есть форма документа, из которого вызывается внешняя обработка.

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

Для решения подобных задач в БСП версии 2.1.6 был добавлен тип команды ЗаполнениеФормы. Использование этого типа выглядит следующим образом:

Ключевые моменты выделены цветом:

  1. Мы указываем параметр «Назначения» - тем самым даем понять системе, что это не просто внешняя обработка, а именно обработка заполнения, привязанная к определенному типу метаданных (в нашем случае к документу ОтпускаСотрудников). При этом логично будет указать вид обработки ЗаполнениеОбъекта. В этом случае команда из нашей обработки будет добавлена в подменю «Заполнить» указанного документа. Вместо вида ЗаполнениеОбъекта можно указывать другие виды: ПечатнаяФорма – подменю «Печать», СозданиеСвязанныхОбъектов – подменю «Создать на основании», Отчет – подменю «Отчеты». Виды обработки ДополнительнаяОбработка и ДополнительныйОтчет указывать не стоит – они не будут работать при заполненном массиве назначений.
  2. Версию БСП следует указать явным образом в параметрах, она должна быть не ниже 2.1.6, ну и конечно она должна быть внедрена в конфигурацию.
  3. Указывая тип команды ЗаполнениеФормы, мы даем системе понять, что в параметры выполнения команды должна быть передана форма для заполнения.
  4. Обработчик команды описываем в модуле объекта, добавляем третий параметр ПараметрыВыполнения.
  5. ПараметрыВыполнения – это структура из 2 элементов: ДополнительнаяОбработкаСсылка (тип СправочникСсылка. ДополнительныеОтчетыИОбработки – ссылка на нашу обработку) и ЭтаФорма (тип УправляемаяФорма). Код исполняется в контексте сервера, здесь становится доступно условное оформление, что нам и требовалось.

В данном примере для наглядности структура параметров и тип команды заданы явным образом. Для совместимости с будущими версиями БСП разработчики библиотеки рекомендуют использовать функции БСП, возвращающие корректные структуры и строки. Например:

Подробное описание типов команд, параметров и подробностей размещения обработчиков можно найти в общем модуле ДополнительныеОтчетыИОбработкиКлиентСервер в комментариях к функциям вида ТипКоманды<ИмяТипаКоманды>.

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

Еще одна особенность - данный способ не требует записи объекта перед вызовом нашей команды, в отличие от команд с типом ВызовКлиентскогоМетода. Что довольно удобно. Например при ручном заполнении документа – нет лишних обращений на сервер для записи объекта и перечитывания его по ссылке.

 

Автор статьи: Олег Т., разработчик 1С компании Neti.

 

Аренда разработчика 1С

Опытные специалисты, 1 400 руб./час

Подробнее

Другие записи в блоге

22.10.2018
Рассмотрим задачу, когда колонку СКД нужно выводить в зависимости от выполнения какого-то условия.Рассмотрим на примере внешнего отчета (без формы отчета, только СКД), условие вывода колонки задано в...
22.10.2018
Рассмотрим задачу, когда отчет на СКД нужно расшифровать другим отчетом. Рассмотрим на примере конфигурации УТ 11.4.1.271.Для этого нужно добавить строки кода в процедуру ОбработкаРасшифровки общего...
22.10.2018
Рассмотрим задачу, когда нужно обновить типовую конфигурацию, в которую внесены изменения. Рассмотрим на примере конфигурации ЗУП, в которой в документ НачислениеЗарплаты был добавлен новый реквизит...

Подпишитесь на блог

Все интересные статьи нашего блога на Вашем почтовом ящике!

Подписка
 
Сервис звонка с сайта RedConnect