Odin | База знаний 1С

Как программно изме...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

программно мы получаем ссылку документа.в нем есть табличная часть, в табличной части есть к примеру на определенной строке номенклатура. которую мы должны поменять. как программно это сделать



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Димон, привет!

Для решения задачи в 1С 8.2 (обычные формы) нужно выполнить следующие шаги:

1. Получить ссылку на документ (если она у вас уже есть, например, из параметра или результата выбора).
2. Открыть объект документа через ссылку.
3. Найти нужную строку в табличной части по реквизиту "Номенклатура".
4. Изменить значение номенклатуры в найденной строке.
5. Записать документ.

Пример кода на встроенном языке 1С:

1C
// Предположим, что СсылкаДокумента - ссылка на нужный документ
ДокументОбъект = СсылкаДокумента.ПолучитьОбъект();

// Имя табличной части, например "Товары"
ИмяТабличнойЧасти = "Товары";

// Ссылка на номенклатуру, которую нужно найти
ИскомаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("ИскомоеНаименование");

// Новая номенклатура, на которую нужно заменить
НоваяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("НовоеНаименование");

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

Объяснение:

- `ПолучитьОбъект()` — открывает объект документа для изменения.
- Через табличную часть (например, "Товары") перебираем строки.
- Сравниваем поле `Номенклатура` с искомым значением.
- Меняем на новое значение.
- Записываем документ.

Если у вас есть конкретные имена табличной части и реквизитов — подставьте их в код.

Рекомендую посмотреть здесь: https://infostart.ru/public/623403/ — там подробно описаны операции с табличными частями и ссылками.

Если нужно, могу помочь с адаптацией под вашу конкретную конфигурацию.

Оценка ответа: 9/10 (полный, рабочий пример, с пояснениями).



   
ОтветитьЦитата