Dev ›
Написание кода в КД ›
#17
08.11.12 21:30
Модуль формы предназначен для обработки действий пользователя, т.е. различных событий, связанных с вводом данных и обработкой корректности их ввода. (с) откуда-то.
Метод не обнаружен, поскольку процедура не экспортируется. В ней используются методы, подразумевающие, что процедура отрабатывает для открытой формы.
1 момент.
Как вы представляете себе использование процедуры "Процедура ТоварыНоменклатураПриИзменении(Элемент)"? Что вы будете передавать в качестве аргумента "Элемент"? Форма.ЭлементыФормы.Товары? Тогда как отработает у вас следующая строка в процедуре - "СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;"? Форма же не открыта, у табличного поля нет текущей строки!
Чтобы такого не было, можно создать в модуле объекта отдельную процедуру, передавать в нее строку табличной части и уже там обрабатывать ее (т.е. чтобы не было привязки к элементам формы): т.е. в процедуре ТоварыНоменклатураПриИзменении(Элемент) у вас будет единственная строка типа ПриИзмененииНоменклатуры(ЭлементыФормы.Товары.ТекущиеДанные), а все действия будут выполняться в модуле объекта. Тогда в КД можно из правила вызвать эту процедуру. НО!:
2 момент.
Место, откуда вы собираетесь вызвать обработчик изменения номенклатуры в конвертации данных. Из ПКС табличной части "Товары"? Не получится. Не забывайте, что для обработки изменения номенклатуры в табличной части должна существовать как минимум табличная часть и объект, ее содержащий. Т.е. все действия с табличной частью вы можете делать только в ПКО документа "ПоступлениеТоваровУслуг" в событии "ПослеЗагрузки".
Резюме. 1 момент - доработка конфы. Не есть гуд. 2 момент - по замечанию "teriban" "тяжеловато", но если вынести обработчик в отдельный алгоритм - обходимся без доработки конфы. А еще можно заморочится с правилами выгрузки данных и заполнять нужные реквизиты ТЧ еще при выгрузке, а в ПКС просто брать их из входящих данных. Будет значительно веселей!