Табличные части – один из самых часто используемых механизмов в конфигурациях 1С:Предприятие․ Они позволяют хранить наборы строк, аналогично таблицам баз данных, но находятся внутри справочников, документов, регистров и других объектов метаданных․
Содержание
- Что такое табличная часть?
- Структура табличной части
- Как обратиться к табличной части в коде
- Примеры обращения
- Типичные ошибки и способы их устранения
- Рекомендации и лучшие практики
- Контакты для обращения
Что такое табличная часть?
Табличная часть – это вложенный объект, который хранит набор строк (записей)․ Каждая строка состоит из полей, определённых в метаданных табличной части․ Табличные части используются в:
- Справочниках (например, «Товары» – табличная часть «Характеристики»)
- Документах (например, «ПоступлениеТоваров» – табличная часть «Товары»)
- Регистрах накопления и бухгалтерском учете
- Объектах бизнес‑логики (например, в обработках)
Структура табличной части
Каждая табличная часть имеет:
- Имя – уникальное в пределах объекта (например,
Товары)․ - Колонки (поля) – список реквизитов, которые могут быть строковыми, числовыми, справочными и т․д․
- Ключевые поля – обычно это ссылка на родительский объект и, при необходимости, дополнительные уникальные реквизиты․
Как обратиться к табличной части в коде
В 1С:Предприятие существует два основных способа работы с табличными частями:
- Через объект
ТаблицаЗначений(внешняя таблица, не привязанная к метаданным)․ - Через встроенную табличную часть объекта метаданных (например,
Документ․РасходнаяНакладная․Товары)․
Ниже перечислены основные методы и свойства, которые применяются к табличным частям:
Добавить– создаёт новую строку․НайтиПоЗначениям(Ключ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 (круглосуточно) |
| Номера телефонов: |
|
| Электронный адрес: | support@1c․ru |
| Личный кабинет: | https://login․1c․ru |
| Личный приём (консультация): | Записаться можно через форму «Запись на приём» |
| График приёма: | Пн‑Пт: 09:00 – 18:00 (перерыв 13:00 – 14:00) |
| Отделы: |
|
| Руководство: |
|
| Отзывы: | Оставить отзыв о работе службы поддержки можно здесь․ |
Мы всегда рады помочь вам решить любые задачи, связанные с 1С:Предприятием!