официальный партнёр 1С по деловому софту
Закрыть
Логин:
Пароль:
Забыли свой пароль?
  Войти
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
 
8(495)229-30-42

Работаем с механизмами обработки табличных частей. Заполнение. УТ 11

Управление торговлей 11. Управляемая форма

Есть плановая себестоимость (вид цен, валюта руб., меняется раз в месяц), вводимая вручную менеджером. Необходимо, чтобы эта себестоимость отображалась отдельной колонкой в документе "Заказ клиента". Задача проста, но мне захотелось решить ее плотно вклинившись в типовой функционал по работе с табличными частями.
На мой взгляд важно дорабатывать конфигурации так, чтоб минимизировать вызовы сервера потому выбираем тяжелый путь :).  [spoiler]

Итак:
Первое что я сделал, добавил предопределенный вид цен "ПлановаяСебестоимость" и заполнил этот элемент справочника программно (поля "Валюта", "Идентификатор"... нельзя изменть после записи элементов, потому заполнил обработкой). Способ заполнения определил как "Задавать вручную".

 1. В табличную часть "Товары" добавил реквизит "Плановая себестоимость".    
 2. Вынес реквизит на форму.

Далее проанализировал алгоритм действий программы при изменении реквизитов "номенклатра"  и "характеристика"

Первое что происходит в событии "При изменении" это формируется некоторая структура "СтруктураДействий":
вклиниваемся:



после заполнения структуры идет обращение к общему модулю:
ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент(...СтруктураДействий...);


Этот общий модуль работает со всеми табличными частями документов. Перейдем в него:



Тут нам интересна следующая функция:

ПолучитьСтруктуруПолейТЧ


Формирует и возвращает структуру полей табличной части. Вклиниваемся:



Далее возвращаемся к процедуре:
ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент




тут нас интересует вызов серверной процедуры:

ОбработкаТабличнойЧастиТоварыСервер.ПриИзмененииРеквизитовВТЧСервер


Перейдя в нее внесем коррективы:



добавил вызов процедуры по заполнению данных строки. Эта процедура была определена в конце этого модуля.

В ней важно проверить относится ли заполняемые данные к нашей доработке:



P.S. Я не претендую на абсолютную верность данного решения. Конечно эта задача не завершена, в идеале реквизит на форму нужно выносить динамически (программно) и т.п. На данный момент я считаю, что это оптимальный способ решения и он работает! :)