Таблицы значений и табличные части 1С
Два вида «таблиц» в 1С
| Понятие | Где живёт | В базе |
|---|---|---|
| Таблица значений | Память сеанса (клиент толстый / сервер) | Нет |
| Табличная часть | Объект документа или справочника | Да, вместе с объектом |
Таблица значений — универсальная коллекция строк и колонок для алгоритмов, промежуточных расчётов и вывода на форму. Табличная часть — часть метаданных (например, Товары в документе «Реализация»).
Базовые операции с Массив и коллекциями — в 114.md.
Таблица значений
Создание и колонки
&НаСервере
Функция НоваяТаблицаТоваров()
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150)));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2)));
Возврат ТЗ;
КонецФункции
Каждая колонка имеет имя и тип. Строки добавляют методом Добавить() или Вставить(Индекс).
Операции
| Действие | Метод |
|---|---|
| Добавить строку | Добавить() |
| Прочитать ячейку | Строка.ИмяКолонки |
| Удалить строку | Удалить(Индекс) |
| Найти строки | Найти(Значение, "Колонка") |
| Сортировка | Сортировать("Колонка Убыв") |
| Итог по колонке | Итог("Сумма") |
| Свернуть / развернуть | Свернуть, Развернуть |
| Копия с отбором | Скопировать(СтруктураОтбора) |
Обход
Для Каждого Строка Из ТЗ Цикл
Строка.Сумма = Строка.Количество * Строка.Цена;
КонецЦикла;
Тонкий и веб-клиент
ТаблицаЗначений на клиенте нельзя. Работайте в процедурах &НаСервере или передавайте на форму уже готовые данные через серверный вызов.Паттерн для формы:
- На сервере заполнить
ТаблицаЗначений. - Присвоить реквизиту формы.
- Элемент «Таблица» привязать к этому реквизиту.
Табличная часть объекта
Табличная часть — строки, которые сохраняются с документом или элементом справочника.
&НаСервере
Процедура ДобавитьСтрокуВДокумент(ДокументОбъект, Номенклатура, Количество)
НоваяСтрока = ДокументОбъект.Товары.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = Количество;
КонецПроцедуры
На управляемой форме табличная часть отображается элементом «Таблица» с путём Объект.Товары. Редактирование строк синхронизируется с объектом при записи.
Выгрузка и загрузка
ТЗ = ДокументОбъект.Товары.Выгрузить();
// обработка ТЗ
ДокументОбъект.Товары.Загрузить(ТЗ);
Выгрузить() создаёт ТаблицаЗначений с теми же колонками — удобно для массовых правок и обмена с внешними данными.
Таблица на форме
- Реквизит формы типа
ТаблицаЗначенийили привязка кОбъект.ТабличнаяЧасть. - Элемент Таблица в компоновке формы.
- Колонки элемента соответствуют колонкам данных (не обязательно все).
Программное изменение на сервере при открытии:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокДляФормы = ПостроитьСписокНаСервере();
ЗначениеВРеквизитФормы(СписокДляФормы, "СписокДляФормы");
КонецПроцедуры
ЗначениеВРеквизитФормы / РеквизитФормыВЗначение — стандартный мост между серверными данными и реквизитами формы.
Типичные ошибки
| Ошибка | Решение |
|---|---|
| Пустая таблица на форме | Заполнить реквизит в ПриСозданииНаСервере |
| Колонка не отображается | Добавить колонку в элемент «Таблица» |
«Тип не определён» при Выгрузить | Задать типы колонок в метаданных ТЧ |
| ТЗ на клиенте в тонком клиенте | Перенести логику на сервер |
Связанные материалы
- Управляемые формы
- Переменные и коллекции
- Выборки и запросы — когда ТЗ заполняют из запроса
Практика 15 минут
- Создайте на сервере
ТаблицаЗначенийс тремя колонками и пятью строками. - Посчитайте итог по числовой колонке через
Итог(). - Выведите таблицу на форме обработки элементом «Таблица».
Лаборатория — ТЧ и таблица на форме (55 минут)
Блок 1 — табличная часть
В документе ПоступлениеТоваров добавьте команду «Заполнить тестовыми» в модуле формы:
&НаСервере
Процедура ЗаполнитьТестовымиНаСервере()
Объект.Товары.Очистить();
Для Индекс = 1 По 3 Цикл
Строка = Объект.Товары.Добавить();
Строка.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Тестовый товар " + Индекс, Истина);
Строка.Количество = Индекс;
КонецЦикла;
КонецПроцедуры
На клиенте — вызов этой процедуры и ОповеститьОбИзменении для таблицы ТЧ.
Блок 2 — таблица значений на форме
- Реквизит формы
ОтчетОстатков—ТаблицаЗначений. ПриСозданииНаСервере— запрос остатков →Выгрузить()в реквизит.- Элемент «Таблица» — колонки
Товар,Остаток. - Кнопка «Обновить» — повторный серверный запрос.
Блок 3 — свертка
Добавьте в ТЗ колонку Сумма = Количество * Цена, затем Свернуть("Номенклатура", "Количество, Сумма") в отдельной обработке — тренировка агрегации без запроса.
Проверка себя
- Чем табличная часть отличается от таблицы значений при записи в базу?
- Почему сортировку большой ТЗ лучше делать до вывода на форму?
- Когда уместно
Выгрузить()табличную часть в ТЗ?
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Платформа 1С - архитектура среды исполнения, назначение и место в автоматизации бизнес-процессов. История 1С - развитие платформы, ключевые этапы роста и влияние на цифровизацию бизнеса и госсектора. Экосистема 1С - продукты платформы, инструменты разработки, внедрение и сопровождение корпоративных решений. Архитектура платформы 1С, объекты метаданных, регистры, модули и исполнение прикладного кода. Пошаговое создание учебной конфигурации: справочники, документ, регистры, проведение, подсистемы и роли. Синтаксис и пунктуация 1С - базовые правила записи кода, операторы и структура выражений. Типизация, набор правил определения типа данных значений языка. Управление потоком выполнения в 1С - последовательность операций, ветвления и контроль выполнения сценариев. Функции и процедуры 1С - различия, правила использования и организация переиспользуемой бизнес-логики. Объекты и классы 1С - модель метаданных, экземпляры объектов и работа с прикладными сущностями. Данные — это конкретные записи, созданные пользователями или автоматически системой в рамках определённых объектов. Каждая запись имеет уникальный идентификатор и соответствует описанию в метаданных. Обработка ошибок в 1С - перехват исключений, диагностика сбоев и устойчивые сценарии обработки.Платформа 1С
История 1С
Экосистема 1С
Архитектура и мета-объекты 1С
Конфигурирование — мини-склад
Синтаксис и пунктуация 1С
Переменные и типы данных 1С
Управление потоком выполнения 1С
Функции и процедуры 1С
Объекты и классы 1С
Работа с базами данных 1С
Обработка ошибок 1С