Рассмотрим эту задачу на следующем примере:
В конфигурации существует документ РеализацияТовара с табличной частью, одним из реквизитов которой является СуммаНДС. При изменении ставки НДС в документе сумма НДС должна пересчитываться. Процедура пересчета НДС находится в модуле объекта нашего документа.
Содержание самой процедуры пересчета рассматривать в рамках данной статьи не будем.
Итак, чтобы вызвать процедуру из модуля объекта на управляемой форме нужно выполнить следующие действия:
- Сделать вызываемую процедуру экспортируемой (то есть доступной не только из самого модуля объекта, но и из других модулей)
123Процедура ПересчетНДС () Экспорт//Содержание процедурыКонецПроцедуры - Получить объект документа. Обычно, на управляемых формах документов есть основной реквизит Объект.
Однако, на клиенте, на управляемых формах не существует прикладных объектов. Они есть только на сервере. Поэтому нужно преобразовать реквизит формы Объект в переменную с типом ДокументОбъект, и при этом сделать все это на сервере.
Итак, создаем команду, назначаем ей процедуру на клиенте, из которой вызываем контекстную серверную процедуру
1234567891011121314151617181920&НаКлиентеПроцедура ПересчитатьНДС(Команда)ПересчитатьНДСНаСервере();КонецПроцедуры&НаСервереПроцедура ПересчитатьНДСНаСервере//Получаем объект документа из реквизита формыДокОбъект = РеквизитФормыВЗначение("Объект");//Вызываем экспортную процедуру ПересчетНДС из модуля объектаДокОбъект.ПересчетНДС();//Возвращаем объект документа в реквизит формыЗначениеВРеквизитФормы(ДокОбъект, "Объект");КонецПроцедуры
Теперь немного об использованных функциях:
- РеквизитФормыВЗначение(<ИмяРеквизита>, <ТипОбъекта>) — преобразует указанный реквизит управляемой формы в объект прикладного типа. Первый параметр — имя реквизита управляемой формы (в кавычках, т.к. это строка), второй параметр — тип прикладного объекта (переменная со типом Тип).
- ЗначениеВРеквизитФормы(<Значение>, <ИмяРеквизита>) — выполняет обратную процедуру — преобразует прикладной объект в указанный реквизит управляемой формы. Первый параметр — переменная, содержащая прикладной тип, второй параметр — имя реквизита управляемой формы, в который нужно преобразовать объект.
Абсолютно не работает
Напишите ваш код, который не заработал