- Работа с таблицей значений в 1С 8.3
- Создание и использование таблиц значений 1С в примерах
- 1С 8.3 Таблица значений — Программист 1С Минск. Автоматизация бизнеса.
- 1С 8.3 Таблица значений
- Работаем с таблицей значений программно
- Создание таблицы значений
- Колонки таблицы значений
- Свойства колонки таблицы значений
- Методы коллекции колонок таблицы значений
- Строки таблицы значений
- Добавление и удаление строк
- Перебор строк таблицы значений
- Поиск строк
- Все методы таблицы значений:
- Выгрузить значения колонки таблицы значений
- Таблица значений
- Создание таблицы значений
- Добавление строк в таблицу значений
- Перебор строк таблицы значений
- Сортировка таблицы значений
- Поиск в таблице значений
- Итоги и группировка таблицы значений
- Удаление строк и колонок из таблицы значений
- Таблица значений как элемент диалога
- Методы УстановитьЗначение и ПолучитьЗначение
Работа с таблицей значений в 1С 8.3
Таблица значений — специальный объект в программировании 1С 8.3, который позволяет хранить промежуточные значения в виде двумерного массива со строками и колонками. Таблицы значений можно использовать как источник данных в запросе.
Таблицу значений, как любую коллекцию, можно обойти циклом. Например:
Получить нужную строку можно по индексу, например:
Индексы в 1С начинается с 0 (нуля).
Рассмотрим основные свойства и методы этого объекта на примерах.
Создание и использование таблиц значений 1С в примерах
Создать таблицу можно следующим образом:
Добавить колонки в таблицу значений 1С:
Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
После создания колонок добавим несколько новых строк и заполним колонки:
Добавим еще одну колонку:
Которую мы можем заполнить одинаковыми значениями двумя способами — перебором таблицы или функцией ЗаполнитьЗначения:
Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:
Скопировать строку таблицы значений 1С, для примера — первую:
Поиск в таблице значений 1С с ценой «17400» с помощью структуры:
Сортировка программ в таблице по цене:
Количество строк в таблице:
Выгрузить колонку таблицы значений в массив 1С:
Чтобы удалить строку в таблице значений, нужно передать саму строку или индекс в метод «Удалить». Два варианта:
Полностью скопировать таблицу значений 1С можно так:
Просуммировать итог по колонке таблицы значений:
Свернуть таблицу можно так:
При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».
Ну и напоследок очистим строки таблицы значений 1С 8.3 полностью:
И удалим все колонки:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Источник
1С 8.3 Таблица значений — Программист 1С Минск. Автоматизация бизнеса.
1С 8.3 Таблица значений
// Создаем таблицу значений
ТЗ = Новый ТаблицаЗначений ;
// Добавляем колонки в таблицу значений
ТЗ . Колонки . Добавить ( «Овощь» );
ТЗ . Колонки . Добавить ( «Цвет» );
ТЗ . Колонки . Добавить ( «Вкус» );
// Добавляем строки в таблицу значений
Стр = ТЗ . Добавить ();
Стр . Овощь = «Дыня» ;
Стр . Цвет = «Желтая» ;
Стр . Вкус = «Сладкая» ;
Стр = ТЗ . Добавить ();
Стр . Овощь = «Лук» ;
Стр . Цвет = «Зеленый» ;
Стр . Вкус = «Горький» ;
Стр = ТЗ . Добавить ();
Стр . Овощь = «Помидор» ;
Стр . Цвет = «Красный» ;
Стр . Вкус = «Сочный» ;
// Добавляем в таблицу значений колонку с описанием типа и заголовка
ОписаниеВеса = Новый ОписаниеТипов ( «Число» , Новый КвалификаторыЧисла ( 14 , 2 ));
ТЗ . Колонки . Добавить ( «ВесОвоща» , ОписаниеВеса , «Вес овоща в граммах» );
ТЗ [ 0 ]. ВесОвоща = 2500. 50 ;
ТЗ [ 1 ]. ВесОвоща = 39. 07 ;
ТЗ [ 2 ]. ВесОвоща = 90. 45 ;
// Перечисляем все строки в таблице значений
Для Каждого Стр Из ТЗ Цикл
Сообщить ( Стр . Овощь + » » + Стр . Цвет + » » + Стр . Вкус + » » + Стр . ВесОвоща );
КонецЦикла;
// Перечисляем все колонки в таблице значений
Для Каждого Колонка Из ТЗ . Колонки Цикл
Сообщить ( Колонка . Имя );
КонецЦикла;
// Выгружаем колонку названий таблицы значений в массив
МассивОвощей = ТЗ . ВыгрузитьКолонку ( «Овощь» );
// Ничего не измениться, так как массив не менялся
ТЗ . ЗагрузитьКолонку ( МассивОвощей , «Овощь» );
// Заполнение значения в колонке для всех строк таблицы. Обнулим вес во всех строках
ТЗ . ЗаполнитьЗначения ( 0 , «ВесОвоща» );
// Перезапишем на новые веса
ТЗ [ 0 ]. ВесОвоща = 2500 ;
ТЗ [ 1 ]. ВесОвоща = 40 ;
ТЗ [ 2 ]. ВесОвоща = 90 ;
// Расчет итогов по колонке в таблице значений
ИтогПоКолонке = ТЗ . Итог ( «ВесОвоща» ); // Общий вес овощей = 2630
// Поиск строки в Таблице значений — найдём строчку с яблоком и покажем его цвет
СтрокаПоиска = ТЗ . Найти ( «Помидор» );
Если СтрокаПоиска <> Неопределено Тогда
Сообщить ( СтрокаПоиска . Цвет ); // Красный
КонецЕсли;
// Ищем строку в таблице значений поиском значения в определенных колонках
// будем искать по слову «Сочный» в колонках «Вкус» и «Цвет»
СтрокаПоиска = ТЗ . Найти ( «Сочный» , «Вкус, Цвет» );
Если СтрокаПоиска <> Неопределено Тогда
Сообщить ( СтрокаПоиска . Овощь ); // Помидор
КонецЕсли;
// Добавляем ещё один красный овощь Перец, Вариант №1
Стр = ТЗ . Добавить ();
Стр . Овощь = «Перец» ;
Стр . Цвет = «Красный» ;
Стр . Вкус = «Сладкий» ;
Стр . ВесОвоща = 120 ;
// Добавляем ещё один красный овощь Перец, Вариант №2
Стр = ТЗ . Добавить ();
Стр [ «Овощь» ] = «Перец» ;
Стр [ «Цвет» ] = «Красный» ;
Стр [ «Вкус» ] = «Сладкий» ;
Стр [ «ВесОвоща» ] = 120 ;
// Выполняем поиск в Таблице Значений (неуникальные значения)
Отбор = Новый Структура ;
Отбор . Вставить ( «Цвет» , «Красный» );
Строки = ТЗ . НайтиСтроки ( Отбор );
Для Каждого Стр Из Строки Цикл
Сообщить ( Стр . Овощь ); // Помидор Перец
КонецЦикла;
// Сдвигаем первую строку Таблицы Значений на одну позицию вперёд
ТЗ . Сдвинуть ( 0 , 1 );
// Возвращаем обратно строку Таблицы Значений
ТЗ . Сдвинуть ( 1 , — 1 );
// Скопировать (выгрузить) табличную часть документа/справочника/. в Таблицу Значений
ТЗ = ТабличнаяЧастьN . Выгрузить ();
// Создаем полную копию Таблицы Значений
КопияТЗ = ТЗ . Скопировать ();
// Создаем копию таблицы значений по нужным колонкам — будет только две колонки Овощь и Цвет
КопияТЗ = ТЗ . СкопироватьКолонки ( «Овощь, Цвет» );
// Создаем полную копию Таблицы Значений по отбору
Отбор = Новый Структура ;
Отбор . Вставить ( «Овощь» , «Помидор» );
// Таблица Значений будет содержать только строчку с помидором
КопияТЗ = ТЗ . Скопировать ( Отбор );
// Таблица Значений будет содержать цвет и вес помидора
КопияТЗ = ТЗ . Скопировать ( Отбор , «Цвет, ВесОвоща» );
// Сворачиваем Таблицу значений по колонке «Вкус», просуммируем по весу
ТЗ . Свернуть ( «Вкус» , «ВесОвоща» );
// Отсортируем Таблицу Значений по колонке
ТЗ . Сортировать ( «ВесОвоща Возр» );
// Отсортируем Таблицу Значений по нескольким колонкам
ТЗ . Сортировать ( «ВесОвоща Возр, Вкус Убыв» );
// Удаляем строку из Таблицы Значений (по индексу или по значению)
ТЗ . Удалить ( 0 );
// Очистим (удалим) все строки из Таблицы Значений
ТЗ . Очистить ();
Источник
Работаем с таблицей значений программно
ТаблицаЗначений — это программный объект встроенного языка, позволяющий строить произвольные наборы данных в памяти компьютера, отображать их в табличном виде, а также программно и интерактивно манипулировать ими (добавлять, редактировать, удалять и сортировать).
Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали. Строки и колонки имеют индексы, по которым к ним можно обращаться напрямую (начинаются с 0). Кроме этого, к колонкам можно обращаться по идентификатору.
Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом значения колонки.
Таблица значений является полностью динамическим объектом, т.е. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.
Таблица значений может использоваться явно при создании в коде необходимого количества переменных типа ТаблицаЗначений , либо неявно: при добавлении элемента управления ТабличноеПоле на обычную форму, и ТаблицаФормы — на управляемую. Здесь мы рассмотрим только программную работу с таблицей значений.
Создание таблицы значений
Как и большинство объектов встроенного языка, новая таблица значений может быть создана с помощью оператора Новый :
Колонки таблицы значений
Прежде чем начать работу с таблицей значений, необходимо создать структуру колонок. Каждая колонка характеризуется следующими свойствами:
- Имя — идентификатор колонки (может содержать только алфавитные символы, цифры и знаки подчеркивания. Причем, начинаться имя колонки может только с буквы или символа подчеркивания);
- Заголовок — представление колонки в диалогах (может содержать произвольные символы);
- ТипЗначения — тип значения содержимого ячеек в этой колонке. Если тип не задан, в ячейке можно хранить значения произвольного типа;
- Ширина — ширина колонки в диалогах;
Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений . Для добавления новой колонки используется метод Добавить():
Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():
Перебор колонок выполняется следующим образом:
Для удаления колонки используется метод Удалить():
Свойства колонки таблицы значений
Имя | Тип | Описание |
---|---|---|
Имя | Строка | символьный идентификатор колонки, по которому к ней можно обращаться из кода |
Заголовок | Строка | строковое представление колонки на форме |
ТипЗначения | ОписаниеТипов | свойство органичивает пространство доступных значений, которые можно указать в данной колонке |
Ширина | Число | ширина колонки на форме (выражается в количестве символов) |
Методы коллекции колонок таблицы значений
Вставить() | Вставляет новую колонку в указанную позицию коллекции |
Добавить() | Добавляет новую колонку в конец коллекции |
Количество() | Возвращает количество колонок в коллекции |
Найти() | Ищет колонку в коллекции по имени |
Очистить() | Удаляет все колонки из коллекции |
Сдвинуть() | Сдвигает колонку влево или вправо |
Удалить() | Удаляет колонку из коллекции |
Строки таблицы значений
С колонками разобрались. Давайте теперь разберемся со строками. Строки таблицы значений можно программно добавлять и удалять, перемещать и сортировать, а также выполнять операции поиска и отбора.
Добавление и удаление строк
Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений . Метод возвращает объект СтрокаТаблицыЗначений , с которым доступны дальнейшие манипуляции:
И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:
Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():
Для удаления строки используется метод Удалить() объекта ТаблицаЗначений . Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:
Перебор строк таблицы значений
Для перебора строк удобнее всего использовать оператор цикла Для Каждого . В редких случаях оправдано применение цикла Для :
Поиск строк
В отличие от платформы 1С:Предприятие 7.7 в 8-ке расширен функционал работы с таблицей значений. Поиск можно выполнять не только по значению в колонке (в этом случае будет возвращена первая найденная строка), но и по набору свойств (в этом случае возвращается массив строк):
Все методы таблицы значений:
Вставить() | Вставляет строку на указанное место |
ВыбратьСтроку() | Позволяет интерактивно выбрать строку в диалоговом окне |
ВыгрузитьКолонку() | Выгружает значения ячеек указанной колонки в массив значений |
Добавить() | Добавлет новую строку в таблицу значений |
ЗагрузитьКолонку() | Загружает значения в ячейки указанной колонки из массива |
ЗаполнитьЗначения() | Заполняет ячейки указанных колонок определенным значением |
Индекс() | Возвращает индекс строки таблицы значений |
Итог() | Возвращает просуммированный итог по колонке таблицы значений |
Количество() | Возвращает количество строк в таблице значений |
Найти() | Выполняет поиск строки по значению |
НайтиСтроки() | Выполняет поиск строк по указанным параметрам |
Очистить() | Очищает строки таблицы значений |
Получить() | Возвращает строку по ее индексу |
Свернуть() | Выполняет сжатие строк и колонок таблицы значений |
Сдвинуть() | Сдвигает строку вверх или вниз по таблице |
Скопировать() | Создает новую таблицу значений копированием текущей |
СкопироватьКолонки() | Создает новую пустую таблицу значений путем копирования колонок текущей таблицы |
Сортировать() | Выполняет сортировку строк таблицы значений по указанным колонкам |
Удалить() | Удаляет строку таблицы значений |
Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева:
Источник
Выгрузить значения колонки таблицы значений
Таблица значений
Таблица значений — это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. | Автор статьи: Волшебник | Редакторы: Туц, vligm Последняя редакция №5 от 10.01.09 | История URL: http://kb.mista.ru/article.php?id=188 |
Создание таблицы значений
Добавление строк
Перебор строк
Сортировка
Поиск значения
Итоги и группировка
Удаление строк и колонок
Таблица значений в диалоге
Специальные методы
Выгрузка таблицы значений
Создание таблицы значений
Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
//можно указать тип данных каждой колонки
//если тип данных колонки не указан, то можно хранить данные любого типа
Синтаксис: НоваяКолонка( , , , , , , , )
Добавление строк в таблицу значений
Перебор строк таблицы значений
Сортировка таблицы значений
Поиск в таблице значений
Синтаксис: НайтиЗначение( , , )
Возвращает число: 0 — значение не найдено; 1 — значение найдено
Если указан параметр , то поиск производится только по заданной строке
Если указан параметр , то поиск производится только по заданной колонке
Итоги и группировка таблицы значений
//часто требуется группировать строки и подсчитывать итоги по группам,
//в этом случае применяется метод Свернуть
Удаление строк и колонок из таблицы значений
ВНИМАНИЕ
Часто требуется удалить строки, удовлетворяющие определенному условию.
Так как при удалении строки из таблицы значений следующая строка становится текущей,
то указанная ниже программа может удалить НЕ ВСЕ необходимые строки.
В этом случае я рекомендую использовать следующий прием:
А вот еще один правильный алгоритм, предложенный Wlad:
Замечание(Туц). Предыдущий вариант не совсем правильный. Случай, когда последняя строка попадает под условие и в условии идёт обращение к строке таблицы, приводит к ошибке. Т.е. происходит попытка чтения для строки 0.
И ещё вариант, предложенный Туц:
Замечание (vligm). А я использую такой алгоритм (это, собственно говоря, шаблон):
Таблица значений как элемент диалога
Таблица значений может использоваться в экранных формах как элемент диалога с пользователем.
Методы УстановитьЗначение и ПолучитьЗначение
Эти методы позволяют обращаться к данным в таблице значений для чтения и записи.
Они могут пригодиться в особых случаях при написании универсальных программ (мастеры отчетов и т.д.).
Синтаксис: УстановитьЗначение( , , )
Синтаксис: ПолучитьЗначение( , )
Источник