Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 июн 2024, 08:49

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

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

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

NewCoder

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

Я делал так:
  ТекДокО = ТекДокС.ПолучитьОбъект();
ТЧ =  ТекДокО.ТЧ;

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

По итогу все находит , но не сохраняет и ошибку не выдает. Как сохранить и присвоить?

LexaK

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

wise

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

LexaK

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

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

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

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

wise

(3) предположим:
Поле = ОбъектНоменклатура.Наименование;
Поле = "Ля-Ля-Ля";
ОбъектНоменклатура.Записать();

ну РАЗВЕ у элемента Номенклатуры изменится наименование..??
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:

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

Рейтинг@Mail.ru

Поиск