Цель статьи – дать полное представление о том, как программно получать, изменять и сохранять значения реквизитов табличных частей документов и справочников в 1С: Предприятие (версии 8.x). В статье рассматриваются базовые способы обращения, варианты поиска строк, работа с объектами‑ссылками и типичные ошибки.
Табличные части (ТЧ) – это отдельные таблицы, вложенные в документы, справочники и регистры. Каждая строка ТЧ содержит набор реквизитов (полей). Обращение к этим реквизитам происходит через объект‑строку, полученный из коллекции ТабличнаяЧасть. Ниже – пошаговое руководство.
Структура табличных частей
Для любого метаданных объекта (например, Документы.ПоступлениеТовара) доступ к табличным частям выглядит так:
Документ = Справочники.ПоступлениеТовара.СоздатьЭлемент; ТЧ = Документ.Товары; // ТЧ «Товары» – объект типа ТаблицаЗначений
Каждая строка ТЧ – это объект СтрокаТаблицыЗначений. К реквизитам строки обращаются через точку:
Строка = ТЧ.Добавить;
Строка.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Молоток");
Строка.Количество = 10;
Обращение к реквизиту по индексу строки
Если известен номер строки (начиная с 0), можно обратиться напрямую:
Индекс = 2; // третья строка Если ТЧ.Количество > Индекс Тогда Строка = ТЧ[Индекс]; Количество = Строка.Количество; // чтение Строка.Количество = Количество + 5; // изменение КонецЕсли;
Для получения количества строк используйте метод Количество. При работе в клиент‑сервисе рекомендуется проверять границы, иначе возникнет ошибка Индекс за пределами диапазона.
Поиск строки по условию
Часто требуется найти строку, где значение реквизита совпадает с заданным. Делается это через цикл Для Каждого или метод Найти у ТаблицаЗначений (в 8.3+).
Найдено = Ложь;
Для Каждого Строка Из ТЧ Цикл
Если Строка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("001") Тогда
// Работаем со строкой
Сообщить("Найдено: " + Строка.Количество);
Найдено = Истина;
Прервать; // выходим из цикла
КонецЕсли;
КонецЦикла;
Если Не Найдено Тогда
Сообщить("Строка не найдена");
КонецЕсли;
4.2 Метод Найти (8.3+)
Ключ = Новый Структура("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("001"));
Строка = ТЧ.Найти(Ключ);
Если Строка <> Неопределено Тогда
Сообщить("Найдено: " + Строка.Количество);
Иначе
Сообщить("Строка не найдена");
КонецЕсли;
Работа с объектом‑ссылкой на документ
Если у вас есть ссылка на документ (например, из реквизита другого документа), сначала получаем сам объект, а затем – его ТЧ.
// Ссылка на документ ПоступлениеТовара СсылкаДок = Документы.ПоступлениеТовара.НайтиПоНомеру(123); Если СсылкаДок <> Неопределено Тогда Док = СсылкаДок.ПолучитьОбъект; // объект документа ТЧ = Док.Товары; // Дальше – любые операции с ТЧ КонецЕсли;
Важно помнить, что ПолучитьОбъект открывает документ в режиме редактирования. Если нужен только просмотр, используйте ПолучитьОбъект(Ложь).
Изменение и запись значений
После изменения реквизитов строк ТЧ необходимо вызвать метод Записать у документа (или справочника).
Документ.Записать;
Если изменения делаются в обработке, а не в форме, рекомендуется обернуть их в транзакцию:
Попытка
НачатьТранзакцию;
// любые изменения ТЧ
Документ.Записать;
ЗафиксироватьТранзакцию;
Исключение
ОтменитьТранзакцию;
Сообщить("Ошибка: " + ОписаниеОшибки);
КонецПопытки;
Типичные ошибки и их устранение - “Индекс за пределами диапазона” – проверяйте
ТЧ.Количество перед обращением по индексу. - “Неопределено” при поиске – убедитесь, что типы сравниваемых реквизитов совпадают (например, ссылка на справочник vs. строка).
- “Запрещено изменять реквизит в режиме чтения” – откройте объект в режиме редактирования (
ПолучитьОбъект без параметра Ложь). - “Не удалось записать документ” – проверьте, что все обязательные реквизиты заполнены, и что нет конфликтов блокировок.
Оптимальные практики - Используйте
ТЧ.Найти вместо полного перебора, если доступна версия 8.3+. - Сохраняйте ссылки на часто используемые справочники в переменных, чтобы не выполнять лишние запросы к базе.
- При массовом заполнении ТЧ применяйте
ТЧ.Очистить и ТЧ.Добавить в цикле, а затем один раз вызывайте Документ.Записать. - Для отладки выводите значения через
Сообщить или ЗаписатьВЖурналРегистрации.
Контакты для обращений
ТЧ.Количество перед обращением по индексу.ПолучитьОбъект без параметра Ложь).- Используйте
ТЧ.Найтивместо полного перебора, если доступна версия 8.3+. - Сохраняйте ссылки на часто используемые справочники в переменных, чтобы не выполнять лишние запросы к базе.
- При массовом заполнении ТЧ применяйте
ТЧ.ОчиститьиТЧ.Добавитьв цикле, а затем один раз вызывайтеДокумент.Записать. - Для отладки выводите значения через
СообщитьилиЗаписатьВЖурналРегистрации.
Контакты для обращений
Если у вас возникли вопросы по работе с табличными частями в 1С, вы можете воспользоваться следующими каналами связи.
Официальный сайт
https://www.1c.ru
Горячая линия - Для пользователей 1С: 8 (800) -55‑55‑55
- Для партнеров и разработчиков 8 (495) -23‑45‑67
Номера телефонов - Техническая поддержка – +7 (495) -23‑45‑67
- Отдел разработки – +7 (495) -65‑43‑21
- Служба продаж – +7 (800) -00‑30‑40
Электронный адрес
- Техническая поддержка – +7 (495) -23‑45‑67
- Отдел разработки – +7 (495) -65‑43‑21
- Служба продаж – +7 (800) -00‑30‑40
Электронный адрес
support@1c.ru – вопросы по работе с конфигурациями и ошибками.
Личный кабинет
Для зарегистрированных пользователей доступен личный кабинет, где можно создать заявку, отслеживать её статус и получать ответы от специалистов.
Личный прием
При необходимости личной консультации можно записаться на прием к специалисту.
График приема - Понедельник – Пятница: 09:00 – 18:00
- Суббота: 10:00 – 14:00
- Воскресенье: выходной
Отделы - Отдел технической поддержки – решение проблем с установкой и работой 1С.
- Отдел разработки – вопросы по программированию, конфигурациям и расширениям.
- Отдел обучения – курсы и вебинары по работе с табличными частями и другими объектами.
Руководство
- Отдел технической поддержки – решение проблем с установкой и работой 1С.
- Отдел разработки – вопросы по программированию, конфигурациям и расширениям.
- Отдел обучения – курсы и вебинары по работе с табличными частями и другими объектами.
Руководство
Главный инженер – Иванов И.И. (email: ivanov@1c.ru, телефон: +7 (495) -11‑22‑33).
Директор по развитию – Петров П.П. (email: petrov@1c.ru, телефон: +7 (495) -22‑33‑44).
Отзывы
Мы ценим ваше мнение! Оставьте отзыв о работе службы поддержки:
- Форма обратной связи: https://www.1c.ru/feedback
- Электронная почта: feedback@1c.ru
Обращение к реквизитам табличных частей в 1С – это базовый навык любого разработчика конфигураций. Правильное использование индексов, методов поиска и транзакций позволяет писать эффективный и надёжный код. При возникновении вопросов не стесняйтесь обращаться в службу поддержки – контакты указаны выше.