- Таблица значений в 1С 8.3
- Создание таблицы значений
- Типы колонок таблицы значений
- Работа с колонками таблицы значений
- Изменение значений в существующих строках
- Перебор строк таблицы значений
- Удаление строк
- Программирование в 1С для всех
- Программное создание колонок таблицы значений в 1С
- Создание колонок в таблице значений на форме
- 1С 8.3 Таблица значений — Программист 1С Минск. Автоматизация бизнеса.
- 1С 8.3 Таблица значений
Таблица значений в 1С 8.3
Таблица значений — это универсальная коллекция 1С, которая предназначена для хранения данных в табличном виде. Таблица значений хранит ссылки на объекты СтрокаТаблицыЗначений. Помимо строк у таблицы есть колонки. Таблицу значений нельзя создать на клиенте и нельзя передавать между клиентом и сервером.
Создание таблицы значений
Для создания таблицы значений используются конструктор:
В данной таблице не будет ни одной колонки и добавление в нее строк бессмысленно. Для добавления колонок нужно использовать свойство Колонки таблицы значений:
Теперь в таблицу можно добавить несколько строк. Добавление строк выполняется методом Добавить. Данный метод вернет строку таблицу значений. К именам колонок таблицы значений можно обращаться как к свойствам строки:
Типы колонок таблицы значений
В таблицу было добавлено 2 колонки. Тип не был определен и поэтому в эту колонку можно поместить любой тип данных, тип будет определяться в зависимости от типа данных значения в колонке. В примере выше тип колонки Товар — строка, а колонки Цена — число. Если добавить еще одну строку с другим типом, то тип колонки станет составным:
Тип можно указать при добавлении новой колонки, тогда в нее можно будет помещать значения только данного типа, для всех остальных значений будет выполняться преобразование типа:
Работа с колонками таблицы значений
Для проверки наличия необходимой колонки в таблице можно выполнить поиск в коллекции колонок. Если такой колонки нет, то метод Найти вернет Неопределено:
Колонку можно переименовать. При этом, значения в данной колонке сохранятся. Изменить тип колонки нельзя.
Колонки можно удалять, соответственно будут удалены и все значения в данной колонке:
Изменение значений в существующих строках
К строкам таблицы значений можно обращаться через оператор индексации [ ]. Индексация строк начинается с нуля, чтобы изменить значение в первой строке нужно использовать индекс 0:
Перебор строк таблицы значений
Перебрать все строки таблицы значений можно с помощью циклов Для Каждого и Для. При необходимости на каждой итерации цикла можно изменить значения колонок строки.
Удаление строк
Удалить строку из таблицы можно методом Удалить. Параметром можно передать индекс строки или саму строку. Для удаления всех строк таблицы можно воспользоваться методом Очистить.
Иногда нужно удалить несколько строк из таблицы по условию. Например, все строки, где цена меньше 100. На первый взгляд это можно сделать так:
Однако после удаления линейка осталась в таблице, хотя ее цена равна 80. Почему так произошло? При удалении строки, таблица как бы сжимается. То есть на первой итерации цикла мы получили первую строку с диваном, его цена больше 100, поэтому строка осталась. Получаем вторую строку с ручкой за 50. Так как цена меньше 100, строка была удалена. И после удаления все строки сдвинулись, третья строка переместилась на вторую позицию, четвертая на третью и т.д. На следующей итерации мы получаем третью строку, а там уже кресло за 2000. Линейка была пропущена, цикл даже не проверял ее цену.
Поэтому правильно удалять строки с конца таблицы. При удалении строки цикл может несколько раз пройти по одной строке, но точно не пропустит ни одну строку:
Источник
Программирование в 1С для всех
В предыдущей статье мы научились создавать таблицу значений, как в программном модуле, так и на форме, интерактивно.
Но создать таблицу значений, это только малая часть работы, поскольку сама по себе таблица значений нам абсолютно не нужна. Чтобы начать с ней работать, необходимо ее, как минимум, заполнить колонками.
Программное создание колонок таблицы значений в 1С
Программно добавить колонку в таблицу значений 1С просто. Для этого необходимо использовать одно из основополагающих свойств таблиц значений — это свойство Колонки. Данное свойство представляет собой коллекцию значений, в которой хранятся все колонки конкретной таблицы, и имеет тип Коллекция колонок таблицы значений.
У объекта Коллекция колонок таблицы значений существует два метода по созданию новых колонок. Это Добавить и Вставить.
Метод Добавить – добавляет новую колонку в конец коллекции, а метод Вставить – вставляет колонку в нужное место по соответствующему индексу.
ФИО = Новый ТаблицаЗначений ;
ФИО . Колонки . Добавить ( «Фамилия» );
ФИО . Колонки . Добавить ( «Имя» );
ФИО . Колонки . Добавить ( «Отчество» );
В этом примере я использовал самый простой вариант использование метода Добавить: мы указываем только название колонки и всё.
Рассмотрим синтаксис этого метода
Добавить( , , , )
Как видно, у данного метода всего четыре параметра.
Параметр Имя — это имя колонки таблицы значений, задается также как и имя переменной. Обязательный параметр.
Параметр Тип имеет тип ОписаниеТипов, задает тип данных, которые будут храниться в колонке, т.е. при помощи этого параметра, мы задаем тип колонки таблицы значений.
Параметр Заголовок имеет тип Строка и задает заголовок колонки, который отобразиться пользователю, если она будет создана программно на форме.
Параметр Ширина имеет тип Число и задает длину колонки(количество символов).
Если мы зададим все параметры, то наше создание колонок будет выглядеть следующим образом.
ОписаниеТиповСтрока = Новый ОписаниеТипов ( «Строка» );
ОписаниеТиповДата = Новый ОписаниеТипов ( «Дата» )
ФИО = Новый ТаблицаЗначений ;
ФИО . Колонки . Добавить ( «Фамилия» , ОписаниеТиповСтрока , «Фамилия» , 50 );
ФИО . Колонки . Добавить ( «Имя» , ОписаниеТиповСтрока , «Имя» , 50 );
ФИО . Колонки . Добавить ( «Отчество» , ОписаниеТиповСтрока , «Отчество» , 50 );
ФИО . Колонки . Добавить ( «ДатаРождения» , ОписаниеТиповДата , «Дата рождения» , 10 );
Метод Вставить имеет следующий синтаксис:
Вставить( , , , , )
Метод Вставить имеет синтаксис, как и у метода Добавить, но только появился первый параметр Индекс, он указывает тот индекс, на место которого будет вставляться новая колонка.
Доработаем предыдущий код:
ФИО . Колонки . Вставить ( 3 , «ФИО» , ОписаниеТиповСтрока , «ФИО» , 50 );
В нашем случае колонка ФИО встала точно между Отчеством и Датой рождения.
Создание колонок в таблице значений на форме
Если мы создали таблицу значений на управляемой форме 1С 8.3 в виде реквизита формы, то колонки также можно создать интерактивно. Для этого нужно выделить нужный реквизит, и нажать на кнопку «Добавить колонку реквизита».
После этого колонка будет создана, и нам нужно задать ей имя, заголовок и тип.
Если таблица значений размещена на управляемой форме в виде элемента формы Таблица, то вновь созданную колонку можно разместить в таблице двумя способами.
Первый способ – перетащить колонку из реквизитов в элементы.
После этого, колонка появиться под таблицей, а сама таблица отобразиться на форме (таблица без колонок на форме не отображается).
Второй способ – создать новое поле «под» таблицей на форме и привязать к нему нужную колонку таблицы значений 1С.
Для того, чтобы создать новое поле, привязанное к таблице на форме 1С, нужно выделить эту таблицу, нажать на кнопку «Добавить» панели управления дерева Элементы, и в открывшемся окне выбрать тип элемента «Поле».
После этого нужно задать имя нового поля и связать его с колонкой таблицы значений, используя свойство «ПутьКДанным».
После этого колонка сразу же появиться в таблице на форме 1С.
О работе со строками в таблицах значений читайте в статье по ссылке:
Таблице значений 1С: работа со строками
Более подробно о работе с таблицами значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Источник
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 );
// Очистим (удалим) все строки из Таблицы Значений
ТЗ . Очистить ();
Источник