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