Табличная часть справочника – это один из самых часто используемых механизмов в 1С:Предприятие‚ позволяющий хранить набор строковых записей‚ связанных с конкретным элементом справочника. Правильное обращение к этим элементам критично для корректной работы бизнес‑логики и отчетов.
Содержание
- Что такое табличная часть справочника
- Как обратиться к элементу табличной части
- Примеры кода
- Типичные ошибки и их устранение
- Часто задаваемые вопросы
- Контакты для обращений
Что такое табличная часть справочника
Табличная часть (ТЧ) – это вложенный набор строк‚ каждый из которых представляет собой отдельный объект со своим набором реквизитов. ТЧ хранится в отдельной таблице базы данных‚ но логически привязывается к родительскому элементу справочника.
Основные свойства ТЧ:
- Имя табличной части (например‚
Товары). - Список реквизитов (Колонка‚ Количество‚ Цена и т.д.).
- Связь «многие‑к‑одному» с родительским элементом.
Как обратиться к элементу табличной части
В 1С существует несколько способов обращения к строкам ТЧ‚ в зависимости от контекста (модуль объекта‚ обработка‚ внешний запрос и т.п.). Ниже перечислены основные подходы.
Через объект справочника
Если у вас уже есть объект справочника Справочник.Контрагенты‚ то к его ТЧ можно обратиться так:
Контрагент = Справочники.Контрагенты.НайтиПоКоду("001");
Если Контрагент <> Неопределено Тогда
// Перебор всех строк ТЧ "Контакты"
Для Каждого Строка Из Контрагент.Контакты Цикл
Сообщить("Тип: " + Строка.ТипКонтакта + "‚ Значение: " + Строка.Значение);
КонецЦикла;
КонецЕсли;
Через запрос (SQL‑подобный язык 1С)
Для выборки конкретных строк ТЧ удобно использовать запросы:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
ТЧ.ТипКонтакта‚
ТЧ.Значение
ИЗ
Справочник.Контрагенты КАК К
ЛЕВОЕ СОЕДИНЕНИЕ Контакты КАК ТЧ
ПО ТЧ.Контрагент = К.Ссылка
ГДЕ
К.Код = &КодКонтрагента";
Запрос.УстановитьПараметр("КодКонтрагента"‚ "001");
Результат = Запрос;Выполнить;
Для Каждого Строка Из Результат.Выбрать Цикл
Сообщить(Строка.ТипКонтакта + ": " + Строка.Значение);
КонецЦикла;
Через методы объекта ТЧ
Табличные части поддерживают методы Найти‚ Добавить‚ Удалить и др.
// Добавление новой строки
НоваяСтрока = Контрагент.Контакты.Добавить;
НоваяСтрока.ТипКонтакта = "Телефон";
НоваяСтрока.Значение = "+7 (495) -23‑45‑67";
Контрагент.Записать;
Примеры кода
Пример 1. Поиск строки по значению реквизита
Контрагент = Справочники.Контрагенты.НайтиПоКоду("001");
Если Контрагент = Неопределено Тогда
Сообщить("Контрагент не найден");
Возврат;
КонецЕсли;
Строка = Контрагент.Контакты.Найти(‚ "Телефон"‚ "+7 (495) -23‑45‑67");
Если Строка = Неопределено Тогда
Сообщить("Контакт не найден");
Иначе
Сообщить("Контакт найден‚ ID = " + Строка.УникальныйИдентификатор);
КонецЕсли;
Пример 2. Обновление нескольких строк ТЧ
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");
Для Каждого Строка Из Контрагент.Контакты Цикл
Если Строка.ТипКонтакта = "Электронная почта" Тогда
Строка.Значение = СтрЗаменить(Строка.Значение‚ "@oldmail.ru"‚ "@newmail.ru");
КонецЕсли;
КонецЦикла;
Контрагент.Записать;
Типичные ошибки и их устранение
- Ошибка «Элемент не найден» – обычно происходит‚ когда объект справочника не был найден или ТЧ пуста. Проверьте‚ что
НайтиПоКодуилиНайтиПоНаименованиюдействительно возвращают объект. - Ошибка доступа «Табличная часть не найдена» – имя ТЧ указано неверно (регистр имеет значение). Убедитесь‚ что используете точное имя‚ как оно объявлено в конфигураторе.
- Конфликт транзакций – при одновременной записи в одну и ту же ТЧ из разных сеансов может возникнуть конфликт. Используйте
Транзакцияи проверяйтеТекущийКонтекст.Заблокировано. - Проблемы с типами данных – реквизиты ТЧ могут иметь тип
Дата‚Числои т.д. При присваивании строковых значений убедитесь в корректном преобразовании (СтрДата‚Число).
Часто задаваемые вопросы
- Можно ли обратиться к ТЧ без загрузки самого справочника?
Да. Через запросы (см. пункт 2) можно получать только нужные строки ТЧ без полной загрузки объекта. - Как удалить все строки ТЧ за один вызов?
Используйте методОчистить:Контрагент.Контакты.Очистить;Затем запишите объект.
- Можно ли сортировать строки ТЧ в коде?
Внутри 1С сортировка происходит только в представлении (например‚ в формах). Для упорядоченного получения данных используйте запрос с операторомУПОРЯДОЧИТЬ ПО.
Контакты для обращений
Если у вас возникли вопросы по работе с табличными частями справочников‚ вы можете воспользоваться следующими каналами связи:
| Тип контакта | Информация |
|---|---|
| Официальный сайт | https://www.example.com |
| Горячая линия | +7 (495) -23‑45‑67 (круглосуточно) |
| Телефоны отдела поддержки |
|
| Электронный адрес | support@example.com |
| Личный кабинет | https://portal.example.com (вход по корпоративным учетным данным) |
| Личный прием руководителя | Пн‑Пт‚ 10:00‑12:00‚ кабинет 305‚ ул. Примерная‚ д. 1 |
| График приёма отдела разработки | Вт‚ Чт – 14:00‑16:00 (по предварительной записи) |
| Отделы |
|
| Руководство |
|
| Отзывы |
|
Мы ценим ваше время и стремимся предоставить максимально быстрый и качественный ответ.
Дата актуализации информации: