Имя: Пароль:
1C
1С v8
Как обновить реквизиты объекта сразу при изменении данных в ТЧ на УФ?
0 Беата Смит
 
06.04.19
16:29
Есть документ. У него есть табличная часть ТЧ1 и реквизит Реквизит1, есть УФ, на которой есть соответствующие им элементы Таблица1 и Поле1. Все поля таблицы на форме содержат списки значений. Поле1 содержит строку, составляемую программно из содержимого ячеек таблицы.
К каждой колонке в Таблице1 привязаны процедуры класса ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка), выполняемые НА КЛИЕНТЕ, еще на таблице висят процедуры ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование), ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) и ПослеУдаления(Элемент)
тоже, соответственно, клиентские.
И есть моя процедура ЗаписьСтрокТаблицыВПоле()

Для Каждого Строчка из Объект.ТЧ1 Цикл
   Стр = Строчка.Колонка1 + Строчка.Колонка2 + ... + Строчка.КолонкаН;
КонецЦикла;
Объект.Реквизит1 = Стр;

Короче, я вызываю ее в процедурах ОбработкаВыбора(), чтобы при любом изменении содержимого ячеек в Таблице1 значение Поле1 перезаписывалось. Но ничего в Поле1 не меняется. Да, я в курсе, что данные передаются по цепочке клиент-сервер-бд, и что когда я вызываю ЗаписьСтрокТаблицыВПоле() в конце процедуры ОбработкаВыбора(), данные в объекте все еще хранятся те, что были ДО того, как пользователь выбрал новые значения. Но я бьюсь уже чертову кучу времени не могу понять, как мне тогда быть? Как мне обновить реквизиты объекта сразу при изменении данных в тч на форме?
1 RomanYS
 
06.04.19
16:57
(0)
1. Ваш код собирает данные только из последней строки ТЧ
2. выбор для подобных целей события ОбработкаВыбора() не очевиден (и вероятно не правилен)
3. включите отладчик
2 RomanYS
 
06.04.19
17:00
ТаблицаФормы (FormTable)
ОбработкаВыбора (ChoiceProcessing)
Синтаксис:

ОбработкаВыбора(<ВыбранноеЗначение>, <СтандартнаяОбработка>)
......
Описание:

Вызывается после выполнения выбора из другой формы.
3 Беата Смит
 
06.04.19
17:10
(1) насчет пункта 1: я просто опечаталась, пока писала сюда, там Стр = Стр + .... вот эти все колонки.
2. А как тогда мне проверять выбор, сделанный в поле ТЧ? Мне нужно что-то типа обработки выбора, потому что там я не даю пользователю выбрать неверные данные.
4 RomanYS
 
06.04.19
17:29
(3) >>Мне нужно что-то типа обработки выбора, потому что там я не даю пользователю выбрать неверные данные.
Это другая задача, с (0) не связанная.

Судя по описанию в (2) ОбработкаВыбора не вызывается при выборе из списка, а только из другой(!) формы.

У каждой колонки есть обработчик есть ПриИзменении, у таблицы формы есть обработчики завершения редактирования строки
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс