Пишу расширение для конфигурации УТ11.4.13.57, которое выводит дополнительные значения для табличной части товары.
Тут возникла проблема. Не могу перехватить код после ввода штрихкода, после добавления товара из подбора и после повторного получения данных с сервера для этого документа. Т.е. перехватываются события после непосредственной работы с табличным полем.
Какими способами можно перехватить вышеописанные события?
---
Сталкивался с такой же проблемой. Никакие события таблицы или колонок не вызываются при программном добавлении строк, а подборы это именно программное добавление. Можно по каждому подбору смотреть отдельно, где форма документа ловит результаты закрытия, но это не универсально. Можно подписаться на событие таблицы ПриИзменении - оно перехватит любые интерактивные изменения в таблице и дополнительно добавить кнопку обновления ваших значений в командную панель таблицы.
---
Сталкивался с такой же проблемой. Никакие события таблицы или колонок не вызываются при программном добавлении строк, а подборы это именно программное добавление. Можно по каждому подбору смотреть отдельно, где форма документа ловит результаты закрытия, но это не универсально. Можно подписаться на событие таблицы ПриИзменении - оно перехватит любые интерактивные изменения в таблице и дополнительно добавить кнопку обновления ваших значений в командную панель таблицы.
---
Сталкивался с такой же проблемой. Никакие события таблицы или колонок не вызываются при программном добавлении строк, а подборы это именно программное добавление. Можно по каждому подбору смотреть отдельно, где форма документа ловит результаты закрытия, но это не универсально. Можно подписаться на событие таблицы ПриИзменении - оно перехватит любые интерактивные изменения в таблице и дополнительно добавить кнопку обновления ваших значений в командную панель таблицы.

Спасибо. Попытался перехватить пользовательские процедуры. Но, почему, то перехват не работает. Так что остается только кнопка.
---
Еще есть вариант с ПодключитьОбработчикОжидания. Фокус в том, что обработчик не будет создавать серверный вызов, если данные не менялись, поэтому можно хоть каждую секунду проверять. Пример с выводом штрихкода в ТЧ Товары документа ПриобретениеТоваровУслуг. Модуль формы документа в расширении:
```1c
    &НаКлиенте
    Перем ЗначенияКлючевыхПолей;

    &НаСервере
    Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)

    НовыеРеквизиты = Новый Массив;

    НовыйРеквизит = Новый РеквизитФормы(
    "Расш1_Штрихкод",
    Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)),
    "Объект.Товары",
    "Штрихкод");

    НовыеРеквизиты.Добавить(НовыйРеквизит);
    ИзменитьРеквизиты(НовыеРеквизиты);

    НовыйЭлемент = Элементы.Вставить("ТоварыРасш1_Штрихкод", Тип("ПолеФормы"), Элементы.Товары, Элементы.ТоварыНоменклатура);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи;
    НовыйЭлемент.ПутьКДанным = "Объект.Товары.Расш1_Штрихкод";

    КонецПроцедуры

    &НаКлиенте
    Процедура Расш1_ПриОткрытииПосле(Отказ)

    ЗначенияКлючевыхПолей = Новый Соответствие;

    ПодключитьОбработчикОжидания("ПроверитьИзменениеТабличнойЧасти", 1, Ложь);

    КонецПроцедуры

    &НаКлиенте
    Процедура ПроверитьИзменениеТабличнойЧасти()

    ИменаКлючевыхПолей = "Номенклатура,Характеристика,Упаковка";
    ИдентификаторыИзмененныхСтрок = Новый Массив;

    Для Каждого Стр Из Объект.Товары Цикл
    ИдентификаторСтроки = Стр.ПолучитьИдентификатор();
    ЗначенияПолей = ЗначенияКлючевыхПолей[ИдентификаторСтроки];
    Если ЗначенияПолей = Неопределено Тогда
    ИдентификаторыИзмененныхСтрок.Добавить(ИдентификаторСтроки);
    Продолжить;
    КонецЕсли;

    ЕстьИзменения = Ложь;

    Для Каждого П Из ЗначенияПолей Цикл Если Стр[П.Ключ] <> П.Значение Тогда ЕстьИзменения = Истина; Прервать КонецЕсли КонецЦикла;

    Если ЕстьИзменения Тогда
    ИдентификаторыИзмененныхСтрок.Добавить(ИдентификаторСтроки);
    КонецЕсли;

    КонецЦикла;

    Если ИдентификаторыИзмененныхСтрок.Количество() = 0 Тогда
    Возврат
    КонецЕсли;

    Для Каждого ИдентификаторСтроки Из ИдентификаторыИзмененныхСтрок Цикл
    СтрокаТабличнойЧасти = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
    ЗначенияПолей = Новый Структура(ИменаКлючевыхПолей);
    ЗаполнитьЗначенияСвойств(ЗначенияПолей, СтрокаТабличнойЧасти);
    ЗначенияКлючевыхПолей.Вставить(ИдентификаторСтроки, ЗначенияПолей);
    КонецЦикла;

    ОбновитьЗначенияВИзмененныхСтроках(ИдентификаторыИзмененныхСтрок);

    КонецПроцедуры

    &НаСервере
    Процедура ОбновитьЗначенияВИзмененныхСтроках(Знач ИдентификаторыИзмененныхСтрок)

    МассивНоменклатуры = Новый Массив;

    Для Каждого ИдентификаторСтроки Из ИдентификаторыИзмененныхСтрок Цикл
    СтрокаТабличнойЧасти = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
    МассивНоменклатуры.Добавить(СтрокаТабличнойЧасти.Номенклатура);
    КонецЦикла;

    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
    | ШтрихкодыНоменклатуры.Характеристика КАК Характеристика,
    | ШтрихкодыНоменклатуры.Упаковка КАК Упаковка,
    | ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
    |ИЗ
    | РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
    |ГДЕ
    | ШтрихкодыНоменклатуры.Номенклатура В(&МассивНоменклатуры)");
    Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
    Штрихкоды = Запрос.Выполнить().Выгрузить();

    ИменаКлючевыхПолей = "Номенклатура,Характеристика,Упаковка";
    Штрихкоды.Индексы.Добавить(ИменаКлючевыхПолей);

    СтруктураПоиска = Новый Структура(ИменаКлючевыхПолей);

    Для Каждого ИдентификаторСтроки Из ИдентификаторыИзмененныхСтрок Цикл
    СтрокаТабличнойЧасти = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
    ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТабличнойЧасти);
    МассивСтрок = Штрихкоды.НайтиСтроки(СтруктураПоиска);
    Если МассивСтрок.Количество() > 0 Тогда
    СтрокаТабличнойЧасти.Расш1_Штрихкод = МассивСтрок[0].Штрихкод;
    Иначе
    СтрокаТабличнойЧасти.Расш1_Штрихкод = ";
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры
```