Изменение значения в табличной части справочника - это распространенная операция, которая позволяет обновлять данные, связанные с элементами справочника.
Способы изменения значения
1. Прямой доступ:
- Получение элемента справочника:1C
ЭлементСправочника = Справочники.Номенклатура.НайтиПоКоду("Товар1");
Обращение к табличной части:
ТабличнаяЧасть = ЭлементСправочника.Характеристики; // Предположим, есть табличная часть "Характеристики"
Поиск нужной строки:
Для Каждого СтрокаТабличнойЧасти Из ЭлементСправочника.Характеристики Цикл
Если СтрокаТабличнойЧасти.Характеристика = "Цвет" Тогда
СтрокаТабличнойЧасти.Значение = "Синий";
Прервать; // Выходим из цикла, как только нашли нужную строку
КонецЕсли;
КонецЦикла;
Через запрос:
- Создание запроса на обновление:
Запрос = Новый Запрос;
Запрос.Текст = "ОБНОВИТЬ
| Справочник.Номенклатура
ПО
| Справочник.Номенклатура.Код = 'Товар1' И
| Справочник.Номенклатура.Характеристики.Характеристика = 'Цвет'
УСТАНОВИТЬ
| Справочник.Номенклатура.Характеристики.Значение = 'Синий'";
Запрос.Выполнить();
Через форму элемента справочника:
- Получение формы элемента:1C
ФормаЭлемента = Справочники.Номенклатура.ПолучитьФорму("ФормаЭлемента");
Обращение к элементу формы табличной части:
ТабличныйДокумент = ФормаЭлемента.Элементы.Характеристики;
// Найти нужную строку и изменить значение в режиме редактирования формы
Важные моменты:
- Сохранение изменений: После изменения данных в табличной части необходимо сохранить изменения элемента справочника.
- Индексы: Для ускорения поиска данных рекомендуется создавать индексы по полям табличной части, которые часто используются для фильтрации.
- Проверка данных: Перед сохранением изменений рекомендуется проверять корректность данных в табличной части.
- События: При изменении данных в табличной части могут вызываться различные события, которые можно использовать для выполнения дополнительных действий.
Пример: изменение цены товара в таблице цен
1C
// Получаем элемент справочника "Номенклатура"
Товар = Справочники.Номенклатура.НайтиПоКоду("Товар1");
// Получаем табличную часть "Цены"
Цены = Товар.Цены;
// Находим строку с нужной организацией
Для Каждого СтрокаЦены Из Цены Цикл
Если СтрокаЦены.Организация = Справочники.Организации.НайтиПоКоду("Организация1") Тогда
СтрокаЦены.Цена = 100; // Устанавливаем новую цену
Прервать;
КонецЕсли;
КонецЦикла;
// Сохраняем изменения
Товар.Записать();
Выбор способа изменения значения зависит от конкретной задачи и контекста. Прямой доступ удобен для выполнения простых операций, а запросы позволяют выполнять более сложные обновления данных. Формы элементов предоставляют удобный интерфейс для пользователя для редактирования данных в табличной части.
Дополнительные возможности:
- Массовое изменение: Для изменения значений в нескольких строках табличной части можно использовать циклы и условия.
- Вычисление новых значений: Можно использовать выражения для вычисления новых значений полей.
- Проверка прав доступа: Перед изменением данных необходимо проверить права доступа пользователя.