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

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

+7 (800) 301-07-30

Реклама jurik.ru

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


Содержание
  1. Что такое табличная часть справочника
  2. Как обратиться к табличной части в коде
  3. Обращение к табличной части в запросах
  4. Выборка и перебор строк
  5. Работа с множественным выделением
  6. Лучшие практики и типичные ошибки
  7. Табличная часть vs подчинённый справочник
  8. Отладка и диагностика
  9. Контакты для обращения

Что такое табличная часть справочника

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

Пример типовой структуры:

  • Справочник.Контрагенты – основной объект.
  • Табличная часть «КонтактныеЛица» – хранит ФИО‚ телефон‚ e‑mail.

Как обратиться к табличной части в коде

Для доступа к ТЧ необходимо сначала получить объект справочника‚ а затем обратиться к
его реквизиту‑таблице.

Поиск элемента справочника
// Поиск контрагента по коду
Контрагент = Справочники.Контрагенты.НайтиПоКоду("0036");
Если Контрагент = Неопределено Тогда
 Сообщить("Контрагент не найден");
 Возврат;
КонецЕсли;

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

Добавление/изменение строки
НоваяСтрока = Контрагент.КонтактныеЛица.Добавить;
НоваяСтрока.ФИО = "Иванов Иван Иванович";
НоваяСтрока.Телефон = "+7 (495) -23‑45‑67";
НоваяСтрока.ЭлектроннаяПочта = "ivanov@example.com";

// Сохранить изменения справочника
Контрагент.Записать;

Удаление строки
Для Каждого Строка Из Контрагент.КонтактныеЛица Цикл
 Если Строка.ФИО = "Старый контакт" Тогда
 Строка.Удалить;
 КонецЕсли;
КонецЦикла;
Контрагент.Записать;

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

В запросах язык Запрос позволяет обращаться к ТЧ как к отдельной таблице‚ используя
синтаксис ИмяСправочника.ИмяТабличнойЧасти.

Пример простого запроса
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
 Контрагенты.Ссылка КАК Контрагент‚
 Контакты.ФИО‚
 Контакты.Телефон
ИЗ
 Справочник.Контрагенты КАК Контрагенты
 ЛЕВОЕ СОЕДИНЕНИЕ Контрагенты.КонтактныеЛица КАК Контакты
 ПО Контакты.Ссылка = Контрагенты.Ссылка
ГДЕ
 Контрагенты.Наименование = &Наименование";

Запрос.УстановитьПараметр("Наименование"‚ "ООО Ромашка");
Результат = Запрос.Выполнить;
Выборка = Результат.Выбрать;

ПОКА Выборка.Следующий ЦИКЛ
 Сообщить("Контрагент: " + Выборка.Контрагент + 
 "‚ ФИО: " + Выборка.ФИО + 
 "‚ Тел.: " + Выборка.Телефон);
КОНЕЦЦИКЛА;

Выборка только нужных колонок
Запрос.Текст = 
"ВЫБРАТЬ
 ТЧ.Наименование‚
 ТЧ.Количетсво
ИЗ
 Справочник.Продукция.Характеристики КАК ТЧ
ГДЕ
 ТЧ.Наименование = &Наименование";

Выборка и перебор строк

Для работы с большими объёмами данных рекомендуется использовать ВыборкаИзТаблицыЗначений
или ВыборкаИзЗапроса‚ а не прямой перебор Для Каждого‚ так как последний вариант

загружает всю таблицу в память.

// Пример с ВыборкойИзТаблицыЗначений
Таблица = Контрагент.КонтактныеЛица;
Выборка = Таблица.Выбрать;
ПОКА Выборка.Следующий ЦИКЛ
 // Обрабатываем строку
КОНЕЦЦИКЛА;

Работа с множественным выделением

Если табличная часть имеет свойство РежимВыделения = Множественный‚ то можно получить
список выбранных строк через метод ПолучитьВыделенныеСтроки.

Выделенные = Форма.ЭлементыТЧ.ПолучитьВыделенныеСтроки;
Для Каждого Строка Из Выделенные Цикл
 Сообщить("Выбрано: " + Строка.ФИО);
КонецЦикла;

Лучшие практики и типичные ошибки
  • Не храните в табличной части большие объёмы данных. Если требуется более 10 000 строк‚
    лучше использовать подчинённый справочник.
  • Индексация. При необходимости ускорить поиск добавляйте реквизит‑поле с
    пометкой Индекс (например‚ код товара).
  • Не меняйте структуру ТЧ в режиме работы. Добавление/удаление колонок должно
    происходить в конфигураторе‚ иначе возникнут ошибки синхронизации.
  • Сохраняйте только изменённые строки. При массовом обновлении используйте
    Записать(‚ Истина) – параметр Истина указывает системе‚ что запись
    происходит без проверки блокировок.
  • Обрабатывайте пустые ссылки. При работе с объектом‚ полученным через
    НайтиПоКоду или НайтиПоНаименованию‚ проверяйте‚ что он не
    Неопределено.

Табличная часть vs подчинённый справочник
Критерий Табличная часть Подчинённый справочник
Объём данных до ~10 000 строк (рекомендация) не ограничено‚ хранится в отдельной таблице
Скорость доступа быстрее при небольшом объёме‚ т.к. хранится в той же записи медленнее – требуется отдельный запрос
Поддержка иерархии нет можно использовать рекурсивные ссылки
Возможность использовать в запросах как отдельная таблица‚ но без индексов полный набор возможностей запросов

Отладка и диагностика

Для отладки кода‚ работающего с ТЧ‚ используйте:

  • Отладчик 1С (точка останова в цикле Для Каждого).
  • Встроенный журнал ЖурналРегистрации – выводите Сообщить или
    ЗаписатьВЖурналРегистрации.
  • Трассировку запросов (Запрос.Текст + Запрос.Выполнить).

Если получаете ошибку Объект не найден‚ проверьте‚ что ссылка на справочник
получена корректно и что у него действительно есть нужная табличная часть.


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

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

https://www.1c.ru

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

Телефон: 8 (800) -55‑35‑35 (круглосуточно)

Номера телефонов
  • Техническая поддержка: +7 (495) -27‑00‑00
  • Отдел продаж: +7 (495) -27‑01‑01
  • Сервисный центр: +7 (495) -27‑02‑02

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

support@1c.ru

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

Для доступа к личному кабинету используйте портал portal.1c.ru.
В кабинете можно просматривать лицензии‚ загружать обновления и оставлять заявки.

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

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

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

Пн‑Пт: 09:00 – 18:00 (перерыв 13:00 – 14:00). Суббота‚ воскресенье – выходные.

Отделы
  1. Техническая поддержка
  2. Разработка и кастомизация
  3. Обучение и сертификация
  4. Продажи и лицензирование

Руководство
  • Генеральный директор – Иванов И.И.
  • Директор по развитию – Петров П.П.
  • Начальник службы поддержки – Сидорова А.А.

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

«Отличная поддержка‚ быстро решают любые вопросы по конфигурациям» – ООО «ТехноСервис»

«Интеграция 1С с нашими системами прошла без проблем‚ благодарим команду разработки» – ЗАО «ИнвестТех»


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