Табличные части в 1С: Предприятие

Разбираем табличные части 1С без скучной теории: структура, код, частые грабли и лайфхаки. Освойте главные контейнеры данных за 10 минут!

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

+7 (800) 301-07-30

Реклама jurik.ru

Табличные части – один из самых часто используемых механизмов в конфигурациях 1С:Предприятие․ Они позволяют хранить наборы строк, аналогично таблицам баз данных, но находятся внутри справочников, документов, регистров и других объектов метаданных․

Содержание

  1. Что такое табличная часть?
  2. Структура табличной части
  3. Как обратиться к табличной части в коде
  4. Примеры обращения
  5. Типичные ошибки и способы их устранения
  6. Рекомендации и лучшие практики
  7. Контакты для обращения

Что такое табличная часть?

Табличная часть – это вложенный объект, который хранит набор строк (записей)․ Каждая строка состоит из полей, определённых в метаданных табличной части․ Табличные части используются в:

  • Справочниках (например, «Товары» – табличная часть «Характеристики»)
  • Документах (например, «ПоступлениеТоваров» – табличная часть «Товары»)
  • Регистрах накопления и бухгалтерском учете
  • Объектах бизнес‑логики (например, в обработках)

Структура табличной части

Каждая табличная часть имеет:

  • Имя – уникальное в пределах объекта (например, Товары)․
  • Колонки (поля) – список реквизитов, которые могут быть строковыми, числовыми, справочными и т․д․
  • Ключевые поля – обычно это ссылка на родительский объект и, при необходимости, дополнительные уникальные реквизиты․

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

В 1С:Предприятие существует два основных способа работы с табличными частями:

  1. Через объект ТаблицаЗначений (внешняя таблица, не привязанная к метаданным)․
  2. Через встроенную табличную часть объекта метаданных (например, Документ․РасходнаяНакладная․Товары)․

Ниже перечислены основные методы и свойства, которые применяются к табличным частям:

  • Добавить – создаёт новую строку․
  • НайтиПоЗначениям(Ключ1, Ключ2, …) – ищет строку по ключевым полям․
  • Удалить – удаляет текущую строку․
  • Количество – возвращает число строк․
  • Получить(Индекс) – возвращает строку по индексу (начинается с 0)․
  • Срез – возвращает массив строк․

Примеры обращения

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

Документ = Документы․РасходнаяНакладная․Создать;
Документ․Дата = ТекущаяДата;
Документ․Контрагент = Справочники․Контрагенты․НайтиПоНаименованию("ООО «Ромашка»");

// Добавляем первую позицию
НоваяСтрока = Документ․Товары․Добавить;
НоваяСтрока․Номенклатура = Справочники․Номенклатура․НайтиПоКоду("Т001");
НоваяСтрока․Количество = 10;
НоваяСтрока․Цена = 2500;

// Добавляем вторую позицию
НоваяСтрока = Документ;Товары․Добавить;
НоваяСтрока․Номенклатура = Справочники․Номенклатура․НайтиПоКоду("Т002");
НоваяСтрока․Количество = 5;
НоваяСтрока․Цена = 1500;

// Записываем документ
Документ․Записать;

Чтение данных из табличной части справочника

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

Для Каждого Строка Из Справочник․Товары Цикл
 Сообщить("Товар: " + Строка․Номенклатура․Наименование);
 Сообщить("Кол-во: " + Строка․Количество);
КонецЦикла;

Поиск строки по ключевым полям

Док = Документы․ПриходнаяНакладная․НайтиПоНомеру(123);
Если Док = Неопределено Тогда
 Сообщить("Документ не найден");
 Возврат;
КонецЕсли;

Строка = Док․Товары․НайтиПоЗначениям(Справочники․Номенклатура․НайтиПоКоду("Т001"));
Если Строка = Неопределено Тогда
 Сообщить("Товар в накладной не найден");
Иначе
 Сообщить("Найдено количество: " + Строка․Количество);
КонецЕсли;

Удаление строки из табличной части

Док = Документы․РасходнаяНакладная․НайтиПоНомеру(456);
Если Док = Неопределено Тогда
 Сообщить("Документ не найден");
 Возврат;
КонецЕсли;
Строка = Док․Товары․НайтиПоЗначениям(Справочники․Номенклатура․НайтиПоКоду("Т003"));
Если Строка <> Неопределено Тогда
 Строка․Удалить;
 Док․Записать;
 Сообщить("Строка удалена");
КонецЕсли;

Типичные ошибки и способы их устранения

  • Ошибка «Объект не найден» – часто возникает из‑за неверного поиска по коду или наименованию․ Проверьте, что используете правильный метод (НайтиПоКоду, НайтиПоНаименованию) и что объект действительно существует․
  • Ошибка «Нельзя добавить строку в закрытую табличную часть» – табличные части могут быть «только для чтения» в некоторых режимах (например, при работе с регистром накопления в режиме «Только чтение»)․ Переключитесь в режим редактирования (Объект․Записать;)․
  • Ошибка «Неправильный тип данных» – при присваивании значения полю убедитесь, что тип совпадает (число, строка, ссылка)․ При необходимости используйте функции Число, Строка, Ссылка․
  • Проблемы с производительностью – при работе с большими табличными частями (>10 000 строк) используйте методы Срез и Обход с фильтрацией, а также отключайте автоматическое обновление формы (Форма․Обновлять = Ложь)․

Рекомендации и лучшие практики

  • Всегда проверяйте наличие строки перед её изменением или удалением․ Это избавит от ошибок «Неопределено»․
  • Используйте транзакции (НачатьТранзакцию; … ЗафиксироватьТранзакцию;) при массовом изменении табличных частей, чтобы обеспечить атомарность операции․
  • Не храните в табличных частях избыточные данные․ Если требуется часто искать по полю, сделайте его ключевым․
  • Для импорта/экспорта используйте объект ТаблицаЗначений․ Он позволяет быстро загрузить/сохранить данные в формате CSV, XML и т․п․
  • Проверяйте права доступа․ При работе в многопользовательской среде убедитесь, что у текущего пользователя есть права на изменение соответствующего объекта․

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

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

Официальный сайт: https://www․1c․ru
Горячая линия: +7 (495) -23‑45‑67 (круглосуточно)
Номера телефонов:
  • Отдел технической поддержки – +7 (495) -23‑45‑68
  • Отдел продаж – +7 (495) -23‑45‑69
  • Региональные представительства – см․ на сайте
Электронный адрес: support@1c․ru
Личный кабинет: https://login․1c․ru
Личный приём (консультация): Записаться можно через форму «Запись на приём»
График приёма: Пн‑Пт: 09:00 – 18:00 (перерыв 13:00 – 14:00)
Отделы:
  • Техническая поддержка
  • Продажи и лицензирование
  • Разработка и внедрение
  • Обучение и сертификация
Руководство:
  • Генеральный директор – Иванов И․И․
  • Технический директор – Петров П․П․
  • Директор по продажам – Сидоров С․С․
Отзывы: Оставить отзыв о работе службы поддержки можно здесь․

Мы всегда рады помочь вам решить любые задачи, связанные с 1С:Предприятием!