Как вызвать процедуру или функцию из модуля объекта на управляемой форме

Рассмотрим эту задачу на следующем примере:

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

Содержание самой процедуры пересчета рассматривать в рамках данной статьи не будем.

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

  1. Сделать вызываемую процедуру экспортируемой (то есть доступной не только из самого модуля объекта, но и из других модулей)
  2. Получить объект документа. Обычно, на управляемых формах документов есть основной реквизит Объект.
    Как вызвать процедуру или функцию из модуля объекта на управляемой форме
    Однако, на клиенте, на управляемых формах не существует прикладных объектов. Они есть только на сервере. Поэтому нужно преобразовать реквизит формы Объект в переменную с типом ДокументОбъект, и при этом сделать все это на сервере.
    Итак, создаем команду, назначаем ей процедуру на клиенте, из которой вызываем контекстную серверную процедуру

Теперь немного об использованных функциях:

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

Как вызвать процедуру или функцию из модуля объекта на управляемой форме: 2 комментария

    1. Автоматизация малого бизнеса Автор записи

      Напишите ваш код, который не заработал

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *