Имя: Пароль:
1C
 
Нельзя изменять поле, содержащее объект данных формы, УФ, тонкий клиент
0 rowvg
 
naïve
11.05.21
11:32
На форме есть реквизит СписокКомплектующих, тип - ТаблицаЗначений. Если в серверной процедуре написать
ЭтотОбъект.СписокКомплектующих = Запрос.Выполнить().Выгрузить();
получим ошибку - Нельзя изменять поле, содержащее объект данных формы.

В тоже время вот такой код
НоваяСтрока = ЭтотОбъект.СписокКомплектующих.Добавить();
в той же процедуре прекрасно работает.

Но ведь он тоже изменяет поле, содержащее объект данных формы.

Почему в первом случает это ошибка, а во втором - нет?
1 Жан Пердежон
 
11.05.21
11:38
Загрузить()
2 Жан Пердежон
 
11.05.21
11:39
(0) очевидно, что в первом случае ты изменяешь поле, а во втором нет
3 rowvg
 
naïve
11.05.21
11:41
(2) Поле меняется и во втором случае, ведь я добавляю в него новые строки, которых ранее не было.
4 Kassern
 
11.05.21
11:43
(3) если вы будете заполнять строки типа: НоваяСтрока =ТЗ[0]; то словите точно такую же ошибку. В первом случае вы присваиваете к объекту данных формы таблицу значений. Во втором случае вы добавляете средствами объекта данных формы новую строку.
5 rowvg
 
naïve
11.05.21
11:47
(4) Это понятно

Непонятна логика разработчиков платформы. Почему Запрос.Выполнить().Выгрузить(), если он работает с ДанныеФормаКоллекция не может просто очистить существующий объект и заполнить его новыми строками?

Мне таблицу значений на сервере можно только в цикле заполнить?
6 mikecool
 
11.05.21
11:48
(5) тебе в (1) ответили
7 Kassern
 
11.05.21
11:48
(5) Вам же написали в (1) ЭтотОбъект.СписокКомплектующих.Загрузить(ТвоеТЗ);
8 mikecool
 
11.05.21
11:49
+6 и если тебе что-то не понятно, то это не вина разработчиков
9 rowvg
 
naïve
11.05.21
11:49
(6) Не тебе все - таки я думаю...
(7) Спасибо, понял
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс