Табличные части – это встроенные таблицы‚ которые могут находиться в документах‚ справочниках‚ регистре сведений и других объектах 1С. Они позволяют хранить произвольный набор строк с набором колонок. В большинстве задач разработчика возникает необходимость получить данные из табличной части‚ изменить их или использовать в запросах.
Содержание
- Общие принципы работы с табличными частями
- Обращение к табличной части через запрос
- Работа с табличной частью в коде (1С:Предприятие)
- Практические примеры
- Полезные рекомендации и типичные ошибки
- Контакты для обращения
Общие принципы работы с табличными частями
Табличная часть – это отдельный объект типа ТаблицаЗначений. Она существует в составе родительского объекта (документа‚ справочника и т.п.) и имеет собственный набор реквизитов (колонок). При работе с табличной частью следует помнить:
- Табличная часть хранится в базе как отдельная таблица‚ но доступ к ней осуществляется через объект‑родитель.
- Каждая строка табличной части – это объект СтрокаТаблицыЗначений.
- Колонки табличной части могут быть как простыми типами (Строка‚ Число‚ Дата)‚ так и ссылками на другие объекты 1С.
Как выглядит структура в конфигураторе
В конфигураторе у документа (например‚ Документ.ПриходнаяНакладная) в разделе Табличные части создаётся табличная часть Товары. Внутри неё задаются колонки: Номенклатура‚ Количество‚ Цена и т.д.
Обращение к табличной части через запрос
В языке запросов 1С:Предприятия табличную часть можно использовать двумя способами:
- Как поле основной таблицы – через псевдоколонку ТабличнаяЧасть.Колонка. Этот способ удобен‚ когда требуется получить отдельные значения из табличной части‚ но не требуется работать со всеми строками.
- Как самостоятельную таблицу – перетаскивая имя табличной части в окно Таблицы конструктора запросов. В результате появляется отдельный источник данных‚ и к нему можно обращаться как к обычной таблице.
Пример запроса к табличной части как к отдельной таблице
ВЫБРАТЬ
Документ.ПриходнаяНакладная.Дата КАК ДатаДок‚
Товары.Номенклатура КАК Товар‚
Товары.Количество КАК Кол‚
Товары.Цена КАК Цена
ИЗ
Документ.ПриходнаяНакладная КАК Документ
// Перетаскиваем табличную часть "Товары" в раздел "Таблицы"
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Товары КАК Товары
ПО Товары.Ссылка = Документ.Ссылка
ГДЕ
Документ.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
В этом запросе Товары – отдельный источник данных‚ представляющий все строки табличной части Товары всех документов ПриходнаяНакладная.
Обращение к колонке табличной части через псевдоколонку
ВЫБРАТЬ
ПриходнаяНакладная.Дата‚
ПриходнаяНакладная.Товары.Количество КАК СуммаКоличества
ИЗ
Документ.ПриходнаяНакладная
ГДЕ
ПриходнаяНакладная.Товары.Количество > 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С:Предприятие‚ и вы сможете эффективно использовать её в своих проектах. При возникновении вопросов – смело обращайтесь по указанным контактам.