![]() |
![]() |
|
Как изменить значение в табличной части документа | ☑ | ||
---|---|---|---|---|
0
vivago
08.07.21
✎
12:43
|
Добрый день!
Помогите пожалуйста новичку. Есть два документа с табличной частью. Надо при вводе КолВып из второго документа внести данные с таким же полем в первый документ и поменять статус из перечисления, со сравнением по номенклатуре. Процедуру выполняется при записи второго документа из его модуля объекта. Данные реквизитам табличной части первого документа присваиваются, но не записываются. Пробовал записать в 1 документ комментарий - все записывается. Если ставлю в код .Добавить(); - то новая строка добавляется с нужными мне значениями. А мне надо изменить текущие. Отладчиком проверял - КолВып первого документа показывал старое значение в табло и при обработке кода менял на требуемое. Но по факту значение не поменялось. Ранее была тема v8: Как изменить значение в табличной части документа - но я не увидел там решения. Процедура ЗаполнитьСостояниеЗаказа(Выпуск) ТабличнаяЧастьТовары = Товары.Выгрузить(); Для каждого СтрокаТовары Из ТабличнаяЧастьТовары Цикл ТекНоменклатура = СтрокаТовары.Номенклатура; ТекКолВып = СтрокаТовары.КолВып; ЗаказЛистогиб = СтрокаТовары.ЗаказЛистогиб; ТекЗаказЛистогиб = СтрокаТовары.ЗаказЛистогиб.ПолучитьОбъект(); //ТекЗаказ = Документы.ЗаказЛистогиб.ПолучитьФорму("ФормаДокумента"); // Пробовал с получением и обновлением формы. ТекЗаказЛистогибТовары = ТекЗаказЛистогиб.Товары.Выгрузить(); Для каждого СтрокаТоварыТекЗаказ Из ТекЗаказЛистогибТовары Цикл Если СтрокаТоварыТекЗаказ.Номенклатура = ТекНоменклатура Тогда //СтрокаТоварыТекЗаказ = ТекЗаказЛистогиб.Товары.Добавить(); СтрокаТоварыТекЗаказ.Состояние = Перечисления.СтатусыЗаказаЛистогиб.ВПроизводстве; СтрокаТоварыТекЗаказ.КолВып = ТекКолВып; //ТекЗаказЛистогиб.Комментарий = "Коммент проба1 записи"; // ТекЗаказЛистогиб.Комментарий = ЭтотОбъект.Комментарий; //ТекЗаказ.Обновить(); ТекЗаказЛистогиб.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; КонецЦикла ; КонецЦикла ; КонецПроцедуры Где ошибка? |
|||
1
fisher
08.07.21
✎
12:53
|
Ты меняешь данные в таблице значений, в которую выгрузил данные из табличной части документа (т.е. это фактически отдельная копия этих данных в памяти). А надо менять непосредственно в табличной части документа. Либо загрузить данные из модифицированной таблицы значений в табличную часть документа.
|
|||
2
fisher
08.07.21
✎
12:56
|
В общем, достаточно заменить строку
на
а
удалить за ненадобностью |
|||
3
Мультук
гуру
08.07.21
✎
13:28
|
(0) ТекЗаказЛистогиб.Записать(РежимЗаписиДокумента.Запись);
Спустя некоторое время другие специально обученные люди будут удивляться, что в документе одна информация, а в его движениях другая. |
|||
4
vivago
08.07.21
✎
13:59
|
(2) fisher Спасибо большое!!! Все получилось и ЗАРАБОТАЛО!!!
(3) Мультук Что-то не так с этой строчкой? |
|||
5
Мультук
гуру
08.07.21
✎
14:22
|
(4) Я бы заменил эту строку на конструкцию
Если ТекЗаказЛистогиб.Проведен Тогда ТекЗаказЛистогиб.Записать(РежимЗаписиДокумента.Проведение); Иначе ТекЗаказЛистогиб.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; |
|||
6
vivago
08.07.21
✎
14:49
|
(5) Мультук
Спасибо за подсказку Я немного уже реализовал эту часть с небольшим дополнением: НадоСохранить=Истина; КонецЕсли; КонецЦикла ; Если НадоСохранить тогда ..... То что вы предложили. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |