Содержание · 6 разделов
Таблица значений 1С — это универсальный объект встроенного языка платформы «1С:Предприятие», который представляет собой двумерную структуру данных, состоящую из строк и колонок. Она похожа на лист Excel внутри программы: каждая строка — это запись, каждая колонка — свойство записи (дата, сумма, наименование). Таблица значений не привязана к реальной базе данных, а существует только в оперативной памяти, поэтому с ней удобно обрабатывать промежуточные данные, строить отчёты и передавать наборы строк между процедурами.
Основные факты о таблице значений:
- Хранится в памяти, а не в базе данных — работает быстро даже с тысячами строк.
- Колонки могут быть любого типа: строка, число, дата, ссылка на справочник и др.
- Поддерживает индексы для ускорения поиска.
- Есть встроенные методы сортировки, фильтрации, поиска и выгрузки в табличный документ.
- Можно создавать как программно, так и в визуальном конструкторе на форме.
Эта инструкция адресована главным бухгалтерам, которые хотят понимать, как работают их отчёты в 1С, ИТ-директорам и администраторам, оценивающим сложность доработок, а также владельцам малого бизнеса — чтобы при общении с программистом точно формулировать требования к отчётам. После прочтения вы получите чёткое представление о том, как таблицы значений помогают решать повседневные учётные задачи, и сможете самостоятельно создавать простые конструкции.
В этой статье мы разберём устройство таблицы значений, способы её создания — от чистого кода до визуальной настройки на управляемой форме, а также приёмы работы с данными. В конце покажем, в каких случаях эта структура незаменима и чем она отличается от похожих объектов 1С. А если задача окажется слишком сложной, всегда можно обратиться в компанию «Интеграция» — наши специалисты помогут с доработкой и настройкой любой конфигурации.
Что такое таблица значений в 1С: простая аналогия
Чтобы понять таблицу значений, представьте распечатку сводной ведомости по зарплате. На листе есть столбцы: «Сотрудник», «Начислено», «Удержано». И несколько строк — по одной на каждого работника. В терминах 1С такая распечатка и есть таблица значений: колонки задают состав данных, а строки — конкретные записи. Отличие от бумаги в том, что эта таблица живёт в памяти компьютера, и программист может манипулировать ею через встроенный язык.
Таблица значений — это временный контейнер данных, который не хранится в базе. После выполнения алгоритма она очищается. Именно поэтому её так любят разработчики: можно прочитать выборку из базы, быстро посчитать агрегированные показатели, отфильтровать, свернуть и передать в отчёт, не засоряя регистры. Для бухгалтера это означает, что сложный отчёт, построенный «на лету», не повлияет на работу других пользователей и не изменит реальные учётные данные.
Структура таблицы значений включает:
- Коллекцию колонок — каждая с именем и типом данных.
- Коллекцию строк — один строковый массив.
- Индексы (опционально) — для ускорения поиска по колонкам.
Все стандартные операции — добавление, удаление, сортировка, поиск — встроены в платформу и выполняются одним методом.
Создание таблицы значений в коде 1С
Программное создание таблицы значений — самый гибкий способ, который даёт полный контроль над колонками и данными. Рассмотрим пошаговый алгоритм, понятный даже начинающему пользователю.
- Объявите переменную и создайте пустую таблицу:
ТЗ = Новый ТаблицаЗначений;
- Добавьте колонки с указанием имени и типа:
ТЗ.Колонки.Добавить("Сотрудник", Тип("Строка")); ТЗ.Колонки.Добавить("Сумма", Тип("Число"));
- Заполните строками. Создайте новую строку и установите значения:
НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Сотрудник = "Иванов"; НоваяСтрока.Сумма = 50000;
- Повторите для нужного количества записей.
- Дальше используйте таблицу для расчётов или вывода на форму.
Важные моменты:
- Имена колонок чувствительны к регистру — «Сотрудник» и «сотрудник» для платформы разные сущности.
- При добавлении колонки можно указать заголовок — он будет показан пользователю в табличном документе.
- Новые строки добавляются в конец, но можно вставить в произвольное место методом Вставить().
Если нужно заполнить таблицу выборкой из реальной базы, используют объект Запрос. Результат запроса можно выгрузить в таблицу значений одной командой: ТЗ = Запрос.Выполнить().Выгрузить();. Это самый производительный способ для больших объёмов.
Компания «Интеграция» регулярно помогает клиентам с доработкой отчётов на базе таблиц значений — от простой группировки по контрагентам до сложных многомерных сводов. При необходимости вы всегда можете обратиться за доработкой 1С в рамках разовой задачи или долгосрочного сопровождения 1С.
Подсказка
При программном создании задайте хотя бы одну колонку до добавления строк — иначе платформа выдаст ошибку исполнения.
Создание таблицы значений на форме 1С
В управляемых формах 1С:Предприятия таблицу значений можно создать визуально, без единой строки кода. Это удобно, когда нужно вывести на экран список справочников или промежуточный результат расчёта для просмотра пользователем.
Пошаговая настройка:
- Откройте управляемую форму в конфигураторе.
- На вкладке «Реквизиты» добавьте новый реквизит с типом «ТаблицаЗначений».
- В свойствах реквизита укажите колонки (можно добавлять/удалять визуально).
- Перетащите реквизит на форму — автоматически создастся табличное поле.
- При необходимости настройте связи с другими реквизитами или обработчиками событий.
После этого на форме появится интерактивная таблица, куда пользователь сможет вводить данные или где будет отображаться результат работы алгоритма. Однако программное заполнение такой таблицы всё равно потребуется — например, в обработчике события «ПриОткрытии» вы сможете написать код, который заполнит таблицу из базы или проведёт расчёт.
Частая ошибка — пытаться менять состав колонок динамически на уже отображённой таблице. Платформа может не перерисовать её корректно. Если колонки должны меняться в зависимости от условий, лучше создать таблицу программно и передать её в форму отдельным действием. Наши специалисты часто используют этот приём при настройке отчётов по требованию — это даёт гибкость без усложнения интерфейса.
По нашему опыту, большинство задач по отображению таблиц на форме решаются стандартной настройкой реквизитов — без программирования. Но если нужны динамические колонки или условное форматирование, без кода не обойтись.
Работа с таблицей значений: основные операции
После создания таблицы значений начинается самая интересная часть — обработка данных. Рассмотрим ключевые методы, которые нужны в повседневной работе 1С-специалиста.
Добавление, изменение и удаление строк:
- НоваяСтрока = ТЗ.Добавить() — создать строку в конце.
- ТЗ.Удалить(НоваяСтрока) — удалить конкретную строку.
- ТЗ.Очистить() — удалить все строки, колонки останутся.
Поиск по значению:
- НайденныеСтроки = ТЗ.НайтиСтроки(Отбор) — возвращает массив подходящих строк.
- Строка = ТЗ.Найти(Значение, "ИмяКолонки") — возвращает первую найденную строку. Важно: если колонка не проиндексирована, поиск будет медленным на больших объёмах. Индекс создаётся через ТЗ.Индексы.Добавить("ИмяКолонки").
Сортировка:
- ТЗ.Сортировать("ИмяКолонки") — сортирует таблицу по возрастанию.
- Можно сортировать по нескольким колонкам с указанием направления: ТЗ.Сортировать("Дата Убыв, Сотрудник Возр").
Фильтрация и группировка:
- ТЗ.Скопировать(НовыйОтбор) — создаёт копию с применением фильтра.
- ТЗ.Свернуть("ИмяКолонки1, ИмяКолонки2", "Сумма") — группирует по указанным колонкам с суммированием числовых полей.
Эти приёмы покрывают 90% потребностей при разработке отчётов и обработок. Для особо сложных аналитических запросов таблицу значений часто комбинируют с запросами, что даёт максимальную производительность.
Чего избегать
Не используйте метод Найти() в цикле по тысячам строк без предварительной индексации — поиск будет медленным. Лучше создать индекс по ключевой колонке или использовать выборку запросом.
Когда таблица значений лучше, чем массив или запрос
В 1С существует несколько контейнеров для данных, и у каждого — своя ниша. Таблица значений, массив, список значений, структура — как выбрать подходящий?
Массив — это простая последовательность однотипных элементов без колонок. Удобен для хранения списка чисел или ссылок, но не подходит, если нужно несколько атрибутов у каждого элемента. Таблица значений выигрывает, когда запись имеет хотя бы два поля — например, «Товар» и «Цена».
Запрос — это инструмент чтения данных из базы. Он быстрее, чем построчная выгрузка в цикле, но не позволяет редактировать данные или добавлять вычислимые колонки «на лету» так, как это делает таблица значений. Поэтому стандартный приём: выполнили запрос, выгрузили результат в таблицу значений, а затем дополнили расчётными полями или агрегатами.
Список значений — это более простой объект, чем таблица. Он хранит лишь отметку и представление, не поддерживая множество колонок. Подходит для выбора пользователем, но не для аналитики.
Таким образом, таблица значений — золотая середина: она достаточно гибка для любых манипуляций и при этом не требует сохранения в базе, что делает её идеальной для временных вычислений. В наших проектах по внедрению 1С этот объект используется практически в каждом нестандартном отчёте.
Типичные ошибки и как их избежать
Даже опытные разработчики иногда спотыкаются на нюансах. Перечислим самые частые грабли, чтобы вы сберегли время.
- Путаница с индексами. Поиск Найти() без индекса на больших таблицах работает медленно, но многие забывают добавить индекс заранее. Если планируете многократный поиск — обязательно создайте индекс по ключевой колонке.
- Изменение состава колонок после заполнения. Добавление колонки после того, как в таблице уже есть строки, допустимо, но помните, что в старых строках новая колонка будет пустой. Лучше определить все колонки сразу.
- Неверный тип данных. При сравнении значений разных типов (например, число и строка) платформа может неявно преобразовывать типы, что ведёт к неочевидным ошибкам. Следите за строгой типизацией.
- Зацикливание. При использовании методов Сортировать() или Свернуть() внутри цикла по строкам той же таблицы можно получить непредсказуемое поведение. Лучше сначала скопировать таблицу и работать с копией.
Если вы столкнулись с ошибкой, которую не можете решить самостоятельно, помните: в «Интеграции» есть услуга программист 1С на час — можно оперативно подключить специалиста и исправить проблему без длительных контрактов.
Материал носит справочный характер и не является налоговой или юридической консультацией; для применения к Вашей ситуации согласуйте действия с бухгалтером или юристом.









ОбсуждениеВопросы читателей и ответы эксперта · 3 веток