Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
07 апр 2025, 10:47

Как присвоить значение полю строки табличной части документа

Автор NewCoder, 21 окт 2021, 11:33

0 Пользователей и 1 гость просматривают эту тему.

NewCoder

Добрый день, подскажите пожалуйста, как присвоить значение полю строки табличной части документа (на сервере). При чем сложность в том, что эта строка уже существует, у ней несколько полей, часть заполнена цифрами и одну нужно заполнить числом. В ТЧ много строк и необходимо предварительно отобрать нужную.
 Если примерно : ТЧ.Номенклатура, ТЧ.КоличествоПлан, ТЧ.КоличествоФакт. ТЧ.Номенклатура и ТЧ.КоличествоПлан уже заполнены.
По номенклатуре нужно отобрать нужную строку и в ней заполнить ТЧ.КоличествоФакт.

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

LexaK

NewCoder, в синтаксическом плане вроде все правильно
попробуйте добавить тестовую печать, и попытку записи документа, больше идей нет
ТекДокО = ТекДокС.ПолучитьОбъект();         ТЧ =  ТекДокО.ТЧ;                 Отбор = Новый Структура();         Отбор.Вставить("Номенклатура", Справочники.ОсновныеСредства.ПолучитьСсылку(Новый УникальныйИдентификатор(УИДНоменклатура)));         НайденноеЗначение =  ТЧ.НайтиСтроки(Отбор);         Попытка          Для Каждого СтрЗн Из НайденноеЗначение Цикл  //всегда массив из 1 шт.           СтрЗн.КоличествоФакт =  1;           Сообщить("" + СтрЗн.Номенклатура + " изменен факт: " + (СтрЗн.КоличествоФакт =  1));          КонецЦикла         Исключение              ош= ОписаниеОшибки();              Сообщить("Ошибка: " + ош);         КонецПопытки;                 Попытка         ТекДокО.ОбменДанными.Загрузка = Истина;//для проверки записи, только запись без изменения проводок         ТекДокО.Записать();         Исключение              ош= ОписаниеОшибки();              Сообщить("Ошибка: " + ош);         КонецПопытки;
если помогло нажмите: Спасибо!

wise

(0) НайденноеЗначение =  ТекДокО.ТЧ.НайтиСтроки(Отбор);
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

LexaK

wise, у автора так

ТЧ =  ТекДокО.ТЧ;
НайденноеЗначение =  ТЧ.НайтиСтроки(Отбор);

вы предлагаете так
НайденноеЗначение =  ТекДокО.ТЧ.НайтиСтроки(Отбор);

а в чем разница? (ну принципиальная)
если помогло нажмите: Спасибо!

wise

(3) предположим:
Поле = ОбъектНоменклатура.Наименование; Поле = "Ля-Ля-Ля"; ОбъектНоменклатура.Записать();
ну РАЗВЕ у элемента Номенклатуры изменится наименование..??
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск