База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как программно изменить номенклатуру в табличной части документа в 1С? › RE: Как программно изменить номенклатуру в табличной части документа в 1С?
Димон, привет!
Для решения задачи в 1С 8.2 (обычные формы) нужно выполнить следующие шаги:
1. Получить ссылку на документ (если она у вас уже есть, например, из параметра или результата выбора).
2. Открыть объект документа через ссылку.
3. Найти нужную строку в табличной части по реквизиту «Номенклатура».
4. Изменить значение номенклатуры в найденной строке.
5. Записать документ.
Пример кода на встроенном языке 1С:
1C
// Предположим, что СсылкаДокумента - ссылка на нужный документ
ДокументОбъект = СсылкаДокумента.ПолучитьОбъект();
// Имя табличной части, например "Товары"
ИмяТабличнойЧасти = "Товары";
// Ссылка на номенклатуру, которую нужно найти
ИскомаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("ИскомоеНаименование");
// Новая номенклатура, на которую нужно заменить
НоваяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("НовоеНаименование");
Если НЕ ИскомаяНоменклатура.Пустая() И НЕ НоваяНоменклатура.Пустая() Тогда
ТабЧасть = ДокументОбъект[ИмяТабличнойЧасти];
Для Каждого Строка Из ТабЧасть Цикл
Если Строка.Номенклатура = ИскомаяНоменклатура Тогда
Строка.Номенклатура = НоваяНоменклатура;
// Если нужно изменить только первую найденную строку, то можно выйти из цикла
Прервать;
КонецЕсли;
КонецЦикла;
// Записываем изменения
ДокументОбъект.Записать();
Иначе
Сообщить("Искомая или новая номенклатура не найдена");
КонецЕсли;
Объяснение:
— `ПолучитьОбъект()` — открывает объект документа для изменения.
— Через табличную часть (например, «Товары») перебираем строки.
— Сравниваем поле `Номенклатура` с искомым значением.
— Меняем на новое значение.
— Записываем документ.
Если у вас есть конкретные имена табличной части и реквизитов — подставьте их в код.
Рекомендую посмотреть здесь: https://infostart.ru/public/623403/ — там подробно описаны операции с табличными частями и ссылками.
Если нужно, могу помочь с адаптацией под вашу конкретную конфигурацию.
Оценка ответа: 9/10 (полный, рабочий пример, с пояснениями).