Работа с табличными частями в 1С:Предприятие — принципы, запросы и программный доступ

Гайд по табличным частям 1С: чтение, запись и запросы без боли. Разбираем примеры кода, лайфхаки и типичные грабли, чтобы ваш код работал как часы.

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Табличные части – это встроенные таблицы‚ которые могут находиться в документах‚ справочниках‚ регистре сведений и других объектах 1С. Они позволяют хранить произвольный набор строк с набором колонок. В большинстве задач разработчика возникает необходимость получить данные из табличной части‚ изменить их или использовать в запросах.

Содержание

  1. Общие принципы работы с табличными частями
  2. Обращение к табличной части через запрос
  3. Работа с табличной частью в коде (1С:Предприятие)
  4. Практические примеры
  5. Полезные рекомендации и типичные ошибки
  6. Контакты для обращения

Общие принципы работы с табличными частями

Табличная часть – это отдельный объект типа ТаблицаЗначений. Она существует в составе родительского объекта (документа‚ справочника и т.п.) и имеет собственный набор реквизитов (колонок). При работе с табличной частью следует помнить:

  • Табличная часть хранится в базе как отдельная таблица‚ но доступ к ней осуществляется через объект‑родитель.
  • Каждая строка табличной части – это объект СтрокаТаблицыЗначений.
  • Колонки табличной части могут быть как простыми типами (Строка‚ Число‚ Дата)‚ так и ссылками на другие объекты 1С.

Как выглядит структура в конфигураторе

В конфигураторе у документа (например‚ Документ.ПриходнаяНакладная) в разделе Табличные части создаётся табличная часть Товары. Внутри неё задаются колонки: Номенклатура‚ Количество‚ Цена и т.д.

Обращение к табличной части через запрос

В языке запросов 1С:Предприятия табличную часть можно использовать двумя способами:

  1. Как поле основной таблицы – через псевдоколонку ТабличнаяЧасть.Колонка. Этот способ удобен‚ когда требуется получить отдельные значения из табличной части‚ но не требуется работать со всеми строками.
  2. Как самостоятельную таблицу – перетаскивая имя табличной части в окно Таблицы конструктора запросов. В результате появляется отдельный источник данных‚ и к нему можно обращаться как к обычной таблице.

Пример запроса к табличной части как к отдельной таблице

ВЫБРАТЬ
 Документ.ПриходнаяНакладная.Дата КАК ДатаДок‚
 Товары.Номенклатура КАК Товар‚
 Товары.Количество КАК Кол‚
 Товары.Цена КАК Цена
ИЗ
 Документ.ПриходнаяНакладная КАК Документ
 // Перетаскиваем табличную часть "Товары" в раздел "Таблицы"
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Товары КАК Товары
 ПО Товары.Ссылка = Документ.Ссылка
ГДЕ
 Документ.Дата МЕЖДУ &ДатаНачала И &ДатаКонца

В этом запросе Товары – отдельный источник данных‚ представляющий все строки табличной части Товары всех документов ПриходнаяНакладная.

Обращение к колонке табличной части через псевдоколонку

ВЫБРАТЬ
 ПриходнаяНакладная.Дата‚
 ПриходнаяНакладная.Товары.Количество КАК СуммаКоличества
ИЗ
 Документ.ПриходнаяНакладная
ГДЕ
 ПриходнаяНакладная.Товары.Количество > 0

Здесь Товары.Количество – псевдоколонка‚ которая агрегирует значения по всем строкам табличной части.

Работа с табличной частью в коде (1С:Предприятие)

Для программного доступа к табличной части используются методы объекта‑родителя:

  • ПолучитьТабличнуюЧасть(ИмяТЧ) – возвращает объект ТаблицаЗначений.
  • Добавить – создаёт новую строку в табличной части.
  • Удалить(Строка) – удаляет строку.
  • Очистить – удаляет все строки.

Пример получения данных из табличной части

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

Добавление новой строки в табличную часть

Процедура ДобавитьТовар(Номенклатура‚ Количество‚ Цена)
 ТЧ = ЭтотОбъект.Товары; // Табличная часть документа
 НоваяСтрока = ТЧ.Добавить;
 НоваяСтрока.Номенклатура = Номенклатура;
 НоваяСтрока.Количество = Количество;
 НоваяСтрока.Цена = Цена;
КонецПроцедуры

Удаление строк‚ соответствующих условию

Процедура УдалитьТоварыСНулевойЦеной
 ТЧ = ЭтотОбъект.Товары;
 Для i = ТЧ.Количество По 1 Шаг -1 Цикл
 Если ТЧ[i].Цена = 0 Тогда
 ТЧ.Удалить(i);
 КонецЕсли;
 КонецЦикла;
КонецПроцедуры

Практические примеры

Автоматическое заполнение базовой единицы измерения

Задача: при выборе номенклатуры в табличной части Товары автоматически подставлять базовую единицу измерения из справочника Номенклатура‚ но позволять пользователю изменить её вручную.

Процедура Товары_ПриИзмененииНоменклатуры(Элемент)
 Если Не ПустаяСтрока(Элемент.Значение) Тогда
 БазоваяЕд = Элемент.Значение.БазоваяЕдиницаИзмерения;
 // Устанавливаем значение в колонку "ЕдиницаИзмерения"
 Элемент.Строка.ЕдиницаИзмерения = БазоваяЕд;
 КонецЕсли;
КонецПроцедуры

Сводный отчёт по продажам из табличных частей разных документов

В запросе объединяем табличные части Товары из документов Продажа и ВозвратПродажи:

ВЫБРАТЬ
 Продажа.Дата КАК ДатаДок‚
 ТоварыПродажи.Номенклатура КАК Товар‚
 ТоварыПродажи.Количество КАК Кол‚
 ТоварыПродажи.Сумма КАК Сумма
ИЗ
 Документ.Продажа КАК Продажа
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыПродажи КАК ТоварыПродажи
 ПО ТоварыПродажи.Ссылка = Продажа.Ссылка

ОБЪЕДИНИТЬ

ВЫБРАТЬ
 Возврат.Дата КАК ДатаДок‚
 ТоварыВозврата.Номенклатура КАК Товар‚
 -ТоварыВозврата.Количество КАК Кол‚
 -ТоварыВозврата.Сумма КАК Сумма
ИЗ
 Документ.ВозвратПродажи КАК Возврат
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыВозврата КАК ТоварыВозврата
 ПО ТоварыВозврата.Ссылка = Возврат.Ссылка

Полезные рекомендации и типичные ошибки

  • Не путайте имена табличных частей и имена колонок. При работе в запросах всегда указывайте полное имя: Документ.ТабличнаяЧасть.Колонка.
  • При работе в коде используйте метод ПолучитьТабличнуюЧасть только если имя табличной части передаётся динамически. Прямой доступ через свойство (например‚ Док.Товары) быстрее.
  • Не забывайте про индексацию. При больших объёмах данных лучше использовать запросы‚ а не перебор в цикле.
  • При удалении строк в цикле проходите от последней к первой. Иначе индексы смещаются и могут быть пропущены.
  • Для массового изменения используйте Записать после завершения всех изменений‚ а не внутри цикла.

Контакты для обращений

Если у вас возникли вопросы по работе с табличными частями‚ вы можете воспользоваться следующими каналами связи с нашей технической поддержкой.

Официальный сайт

https://support-1c.example.com

Горячая линия

Тел.: +7 (495) -23‑45‑67 (круглосуточно)

Номера телефонов

  • Техническая поддержка – +7 (495) -23‑45‑67
  • Отдел внедрения – +7 (495) -23‑45‑68
  • Отдел продаж – +7 (495) -23‑45‑69

Электронный адрес

support@1c.example.com

Личный кабинет

Для зарегистрированных пользователей доступен личный кабинет‚ где можно создать заявку‚ отслеживать её статус и получать ответы от специалистов.

Личный приём (офис)

Адрес офиса: г. Москва‚ ул. Тверская‚ д. 7‚ офис 310.

График приёма

День недели Время
Понедельник 09:00 – 18:00
Вторник 09:00 – 18:00
Среда 09:00 – 18:00
Четверг 09:00 – 18:00
Пятница 09:00 – 18:00
Суббота 10:00 – 15:00
Воскресенье Выходной

Отделы

  • Отдел технической поддержки
  • Отдел внедрения и адаптации
  • Отдел разработки типовых решений
  • Отдел обучения и сертификации

Руководство

  • Генеральный директор – Иванов И.И.
  • Технический директор – Петров П.П.
  • Директор по развитию – Сидорова С.С.

Отзывы клиентов

Мы ценим обратную связь. Ниже несколько отзывов от наших партнёров:

ООО «ТехноСервис»: «Поддержка 1С помогла быстро решить проблему с запросом к табличной части. Профессиональный подход и оперативность – на высоте!»

ЗАО «СтройИнвест»: «Благодаря рекомендациям по работе с табличными частями мы оптимизировали отчётность и сократили время формирования документов в два раза.»

ИП «Кузнецов А.В.»: «Отличный сервис! Личный кабинет удобный‚ а ответы от специалистов всегда точные и понятные.»


Надеемся‚ что данная статья помогла вам разобраться‚ как обратиться к табличной части документа в 1С:Предприятие‚ и вы сможете эффективно использовать её в своих проектах. При возникновении вопросов – смело обращайтесь по указанным контактам.