Андрей Смирнов
Время чтения: ~17 мин.
Просмотров: 29

Программная обработка табличных частей 1С 8.3

Таблица значений в языке 1С 8.3, 8.2 (в примерах)

Всё для программиста >> Справочник языка 1С

Вступайте в мою группу помощник программиста.В ней мы обсуждаем программирование в 1С.

ДатаЕслиМассивыМатематикаПроцедурыСтрокиЦиклыДиалогиОписаниеТиповОперационнаяСистемаПриложениеСоответствиеСписокЗначенийСтруктура ТаблицаЗначенийФайловаяСистемаФорматОбщиеОбъектыЗапросыПрикладныеОбъектыУниверсальныеФункции

lesson.png См. уроки на другие возможности языка 1С Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Таблица значений

Описание:

Таблица значений — это несохраняемый в базе данных объект, который позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одной таблице типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.

Необходимо отметить, что таблица значений, связанная с элементом управления ТабличноеПоле, будет иметь все колонки, имеющиеся в табличном поле, с соответствующими именами. Кроме того, таблица значений может иметь также и собственные колонки, не отображаемые в табличном поле, при этом их имена должны отличаться от имен колонок табличного поля.

Элементы коллекции: СтрокаТаблицыЗначений

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.

Возможно обращение к элементу коллекции посредством оператора […]. В качестве аргумента передается индекс строки (нумерация с 0).

Свойства:

Индексы Содержит коллекцию индексов таблицы значений.
Колонки Содержит коллекцию колонок таблицы значений.

Методы:

Вставить(Индекс) Вставляет строку на позицию в таблице значений, соответствующую указанному индексу. Возвращает вставленную строку.
ВыбратьСтроку(Заголовок, НачальнаяСтрока) Вызывает модальное диалоговое окно для интерактивного выбора строки из таблицы значений. Возвращает выбранную строку или Неопределено, если пользователь отказался от выбора.
ВыгрузитьКолонку(Колонка) Создает массив и копирует в него значения, содержащиеся в колонке таблицы значений. Возвращает этот массив.
Добавить() Добавляет строку в конец таблицы значений. Возвращает добавленную строку.
ЗагрузитьКолонку(Массив, Колонка) Загружает колонку таблицы значений из массива значений.
ЗаполнитьЗначения(Значение, Колонки) Заполняет все строки таблицы значений указанным значением.
Индекс(Строка) Получает индекс строки в коллекции строк таблицы значений. Если не найдено, то возвращается -1.
Итог(Колонка) Суммирует значения всех строк в указанной колонке. Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число. Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться. Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться. Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.
Количество() Получает количество строк таблицы значений.
Найти(Значение, Колонки) Осуществляет поиск значения в указанных колонках таблицы значений. Возвращает строку, в которой содержится искомое значение. Если значение не найдено, то возвращается значение Неопределено.
НайтиСтроки(ПараметрыОтбора) Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска. Возвращает массив строк таблицы значений, соответствующих условиям поиска. Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным.
Очистить() Удаляет все строки таблицы значений. Структура колонок остается неизменной.
Получить(Индекс) Получает значение по индексу. Работает аналогично оператору [].
Свернуть(КолонкиГруппировок, КолонкиСуммирования) Осуществляет свертку таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются. Важно! Списки колонок не должны пересекаться. Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений.
Сдвинуть(Строка, Смещение) Сдвигает строку на указанное количество позиций.
Скопировать(Строки, Колонки) Если указаны строки и колонки, то только они будут скопированы. Если не указаны, то будет создана полная копия таблицы значений.
СкопироватьКолонки(Колонки) Создает таблицу значений с заданным списком колонок.
Сортировать(Колонки, ОбъектСравнения) Сортирует таблицу значений в соответствии с указанными правилами сортировки.
Удалить(Строка) Удаляет строку таблицы значений, где Строка — индекс или сама строка.

Конструктор:

НовыйТаблицаЗначений
&НаСервере Процедура ВыполнитьКодНаСервере()       /// Как создать таблицу значений в 1с 8.3, 8.2       // с таблицей значений можно работать только на сервере      Таб =Новый ТаблицаЗначений;           /// Как добавить колонки в таблицу значений в 1с 8.3, 8.2       Таб.Колонки.Добавить("Фрукт");     Таб.Колонки.Добавить("Цвет");     Таб.Колонки.Добавить("Вкус");       /// Как добавить строки в таблицу значений в 1с 8.3, 8.2       Стр = Таб.Добавить();     Стр.Фрукт ="Яблоко";     Стр.Цвет ="Зелёный";     Стр.Вкус ="Кислый";       Стр = Таб.Добавить();     Стр.Фрукт ="Банан";     Стр.Цвет ="Желтый";     Стр.Вкус ="Сладкий";       Стр = Таб.Добавить();     Стр.Фрукт ="Слива";     Стр.Цвет ="Синий";     Стр.Вкус ="Терпкий";        /// Как добавить в таблицу значений колонку с    /// описанием типа и заголовка в 1с 8.3, 8.2       ОписаниеВеса =Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(12,3));       Таб.Колонки.Добавить("ВесФрукта", ОписаниеВеса,"Вес фрукта");     Таб[].ВесФрукта =100.005;     Таб[1].ВесФрукта =60.010;     Таб[2].ВесФрукта =25.000;       /// Как перечислить все строки в таблице значений в 1с 8.3, 8.2       ДляКаждого Стр Из Таб Цикл         Сообщить(Стр.Фрукт +" "+ Стр.Цвет +" "+ Стр.Вкус +" "+ Стр.ВесФрукта);КонецЦикла;       /// Как перечислить все колонки в таблице значений    /// в 1с 8.3, 8.2       ДляКаждого Колонка Из Таб.Колонки Цикл         Сообщить(Колонка.Имя);КонецЦикла;        /// Как выгрузить колонку таблицы значений в массив в 1с 8.3, 8.2       // выгрузка названий фруктов в массив     МассивФруктов = Таб.ВыгрузитьКолонку("Фрукт");       // ничего не измениться, так как массив не менялся     Таб.ЗагрузитьКолонку(МассивФруктов,"Фрукт");       /// Как заполнить значения в колонке для всех строк таблицы     /// значений в 1с 8.3, 8.2       // обнулим вес во всех строках     Таб.ЗаполнитьЗначения(,"ВесФрукта");       // выставим новые веса     Таб[].ВесФрукта =100;     Таб[1].ВесФрукта =60;     Таб[2].ВесФрукта =25;       /// Как в таблице значений посчитать итог по колонке в 1с 8.3, 8.2       Сообщить(Таб.Итог("ВесФрукта"));// 185       /// Как найти строку в таблице значений по значению в 1с 8.3, 8.2       // найдём строчку с яблоком и покажем его цвет     НайденнаяСтрока = Таб.Найти("Яблоко");Если НайденнаяСтрока <>НеопределеноТогда         Сообщить(НайденнаяСтрока.Цвет);// ЗелёныйКонецЕсли;       /// Как найти строку в таблице значений поиском значения    /// в определенных колонках в 1с 8.3, 8.2       // будем искать по слову "Кислый" в колонках вкус и цвет     НайденнаяСтрока = Таб.Найти("Кислый","Вкус, Цвет");Если НайденнаяСтрока <>НеопределеноТогда         Сообщить(НайденнаяСтрока.Фрукт);// ЯблокоКонецЕсли;       // добавим ещё один зелёный фрукт     Стр = Таб.Добавить();     Стр.Фрукт ="Киви";     Стр.Цвет ="Зелёный";     Стр.Вкус ="Сладкий";     Стр.ВесФрукта =30;       /// Как искать в таблице значений неуникальные значения    /// в 1с 8.3, 8.2       Отбор =Новый Структура;     Отбор.Вставить("Цвет","Зелёный");     Строки = Таб.НайтиСтроки(Отбор);ДляКаждого Стр Из Строки Цикл         Сообщить(Стр.Фрукт);// Яблоко КивиКонецЦикла;       /// Как сдвинуть строку таблицы значений в 1с 8.3, 8.2       // сдвигаем первую строку на одну позицию вперёд     Таб.Сдвинуть(,1);       // и возвращаем обратно     Таб.Сдвинуть(1,-1);       /// Как создать копию таблицы значений в 1с 8.3, 8.2       // полная копия     КопияТаб = Таб.Скопировать();       /// Как создать копию таблицы значений по нужным колонкам    /// в 1с 8.3, 8.2       // только две колонки будет Фрукт и Цвет     КопияТаб = Таб.СкопироватьКолонки("Фрукт, Цвет");       /// Как создать копию таблицы значений по отбору в 1с 8.3, 8.2       Отбор =Новый Структура;     Отбор.Вставить("Фрукт","Яблоко");       // таблица будет содержать только строчку с яблоком     КопияТаб = Таб.Скопировать(Отбор);       // таблица будет содержать цвет и вес яблока     КопияТаб = Таб.Скопировать(Отбор,"Цвет, ВесФрукта");       /// Как свернуть таблицу значений по колонке в 1с 8.3, 8.2       // свернём по вкусу, просуммируем по весу     Таб.Свернуть("Вкус","ВесФрукта");       /// Как отсортировать таблицу значений по колонке в 1с 8.3, 8.2       Таб.Сортировать("ВесФрукта Возр");       /// Как отсортировать таблицу значений по нескольким колонкам    /// в 1с 8.3, 8.2       Таб.Сортировать("ВесФрукта Возр, Вкус Убыв");       /// Как удалить строку из таблицы значений в 1с 8.3, 8.2       // по индексу или по значению     Таб.Удалить();   КонецПроцедуры   /// Как программно вывести таблицу значений на/// форму в 1с 8.3, 8.2    // см. примеры использования этой функции ниже   // ТабВКоде - таблица значений, созданная программно// ТабРеквизит - имя реквизита формы типа ТаблицаЗначений// ТабНаФорме - имя элемента формы, связанного с ТабРеквизит    &НаСервере Процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, ТабРеквизит, ТабНаФорме)       // реквизит ТабРеквизит и соответствующий// ему элемент формы ТабНаФорме уже созданы// нами в визуальном режиме       // 1. добавляем колонки из ТабВкоде в реквизит ТабРеквизит       НовыеРеквизиты =Новый Массив;       ДляКаждого Колонка Из ТабВКоде.Колонки Цикл          НовыеРеквизиты.Добавить(Новый РеквизитФормы(                 Колонка.Имя, Колонка.ТипЗначения,                 ТабРеквизит             ));КонецЦикла;       ИзменитьРеквизиты(НовыеРеквизиты);       // 2. добавляем колонки из ТабВКоде в элемент ТабНаФорме       ДляКаждого Колонка Из ТабВКоде.Колонки Цикл           НовыйЭлемент = Элементы.Добавить(             ТабРеквизит +"_"+ Колонка.Имя, Тип("ПолеФормы"), Элементы[ТабНаФорме]);         НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;         НовыйЭлемент.ПутьКДанным = ТабРеквизит +"."+ Колонка.Имя;КонецЦикла;       // 3. наконец, передаём данные из ТабВКоде в ТабРеквизит       ЗначениеВРеквизитФормы(ТабВКоде, ТабРеквизит);       // готово!       КонецПроцедуры   &НаСервере Процедура СоздатьТаблицуНаФормеНаСервере()       // программно создаём таблицу значений ТабВКоде       ТабВКоде =Новый ТаблицаЗначений;       ОписаниеСтроки =Новый ОписаниеТипов("Строка");     ОписаниеВеса =Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(12,3));       ТабВКоде.Колонки.Добавить("Фрукт", ОписаниеСтроки,"Имя фрукта");     ТабВКоде.Колонки.Добавить("Цвет", ОписаниеСтроки,"Цвет фрукта");     ТабВКоде.Колонки.Добавить("Вес", ОписаниеВеса,"Вес фрукта");       Стр = ТабВКоде.Добавить();     Стр.Фрукт ="Яблоко";     Стр.Цвет ="Зелёный";     Стр.Вес =200;       Стр = ТабВКоде.Добавить();     Стр.Фрукт ="Банан";     Стр.Цвет ="Желтый";     Стр.Вес =150;       ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде,"ТабРеквизит1","ТабНаФорме1");   КонецПроцедуры   /// Как программно вывести на форму результат запроса/// в виде таблицы значений в 1с 8.3, 8.2   &НаСервере Процедура ВывестиНаФормуРезультатЗапросаНаСервере()               Запрос =Новый Запрос;     Запрос.Текст ="ВЫБРАТЬ         |   Товары.Ссылка,         |   Товары.ВерсияДанных,         |   Товары.ПометкаУдаления,         |   Товары.Код,         |   Товары.Наименование,         |   Товары.Цвет,         |   Товары.ЕдиницаИзмерений,         |   Товары.Предопределенный,         |   Товары.ИмяПредопределенныхДанных         |ИЗ         |   Справочник.Товары КАК Товары";       РезультатЗапроса = Запрос.Выполнить();       ТабВКоде = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);          // функция ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме определена выше     ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде,"ТабРеквизит2","ТабНаФорме2");   КонецПроцедуры   /// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Таблица значений в языке 1С 8.3, 8.2 (в примерах)

ДатаЕслиМассивыМатематикаПроцедурыСтрокиЦиклыДиалогиОписаниеТиповОперационнаяСистемаПриложениеСоответствиеСписокЗначенийСтруктура ТаблицаЗначенийФайловаяСистемаФорматОбщиеОбъектыЗапросыПрикладныеОбъектыУниверсальныеФункции

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора). Всё для программиста >> Справочник языка 1С

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Milkin_Vladimir_Photo_180.jpgКак помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Для того, чтобы учитывать деньги и товары, в бизнесе широко используют разные таблицы. Почти каждый документ – это таблица.

В одной таблице перечислены товары к отгрузке со склада. В другой таблице – обязательства по оплате этих товаров.

Поэтому в 1С видное место занимает работа с таблицами.

1.tablicy-1s.png

Таблицы в 1С также называют «табличные части». Они есть у справочников, документов и других объектов конфигурации 1С.

В языке 1С таблицы называют «таблица значений».

Сегодня мы поговорим про работу в 1С с таблицами.

Что такое таблица 1С

Самое наглядное представление электронное таблицы можно посмотреть в Excel.

Таблица – это колонки, у которых есть имя. В большинстве случаев колонки имеют тип (типизированы). Это значит, что значения в этих колонках будут одного типа (строка или число или дата).

Строки пронумерованы и содержат значения в разрезе колонок.

2.tablicy-1s.png

На следующем скриншоте изображена таблица «Товары» из документа 1С. Таблицу документа называют «табличная часть». Она тоже имеет колонки, которые типизированы, и строчки, которые пронумерованы.

Над таблицей обычно расположена «командная панель» — группа кнопок для управления таблицей.

3.tablicy-1s.png

Другое «представление» таблиц в 1С – это таблица значений, которую программист использует в языке 1С. Таблицу значений можно вывести на экран с помощью метода ВыбратьСтроку().

И снова Вы видите те же колонки, пронумерованные строки. В таблице значений колонки могут быть как типизированны, так и нет. В последнем случае это значит, что в одной и той же колонке, в разных строчках будут совершенно разные значения.

4.tablicy-1s.png

Табличные части Объектов 1С

Итак, раскрыв в дереве объектов конфигурации любой справочник или документ Вы увидите ветку «Табличные части». С помощью нее можно добавить таблицу.

Такая таблица будет частью документа и будет сохраняться вместе с ним.

С точки зрения базы SQL – документ теперь будет хранится в двух таблицах, первая из которых будет хранить шапку документа и его идентификатор (одна строка на документ). Вторая таблица будет хранить табличные части с указанием идентификатора документа и номера строки (несколько строк на документ).

После добавления табличной части, в нее можно добавить реквизиты, также как и в шапку документа. Реквизиты табличной части – это ее колонки.

5.tablicy-1s.png

Так как для каждого реквизита необходимо указывать тип, то значения в этих колонках можно будет указать строго определенного типа.

6.tablicy-1s.png

Добавление строчек в такую таблицу проводится пользователем, в режиме Предприятие. Пользователь работает с формой документа, поэтому таблицу необходимо поместить на форму.

7.tablicy-1s.png

Таблицы в языке 1С

В языке 1С есть возможность создавать таблицы не привязанные к справочнику или документу.

//таблица Таблица = Новый ТаблицаЗначений();// создаем таблицу

//колонки Таблица.Колонки.Добавить(«Наименование»);//добавляем нетипизированную колонку Таблица.Колонки.Добавить(«Товар», Новый ОписаниеТипов(«СправочникСсылка.Номенклатура»));//добавляем колонку со строгим указанием типа

//строчки Строка = Таблица.Добавить(); Строка.Наименование = «Лопата»;//указываем произвольное значение Строка.Товар = Справочники.Номенклатура.НайтиПоНаименованию(«Лопата»); //указываем значение со строго определенным типом

//обход всей таблицы Для каждого Строка из Таблица Цикл      Сообщить(Строка.Наименование); КонецЦикла;

Таблица как результат запроса

В предыдущих уроках мы обсуждали с Вами язык запросов 1С и возможность получения данных из базы 1С с помощью запросов 1С.

Запрос в результате своего выполнения возвращает таблицу, доступ к которой возможно получить двумя разными способами.

Первый – более быстрый – выборка, получение строк из нее возможен только по порядку. Второй – выгрузка результата запроса в таблицу значений и далее произвольный доступ к ней.

//Вариант 1 – последовательный доступ к результатам запроса Запрос = Новый Запрос(«ВЫБРАТЬ Наименование ИЗ Справочник.Номенклатура»); //получение таблицы Выборка = Запрос.Выполнить().Выбрать(); //по порядку обходим все строки результата запроса Пока Выборка.Следующий() Цикл      Сообщить(Выборка.Наименование); КонецЦикла;

//Вариант 2 – выгрузка в таблицу значений Запрос = Новый Запрос(«ВЫБРАТЬ Наименование ИЗ Справочник.Номенклатура»); //получение таблицы Таблица = Запрос.Выполнить().Выгрузить(). //далее можем также обойти все строки Для каждого Строка из Таблица Цикл      Сообщить(Строка.Наименование); КонецЦикла; //или произвольно обращаться к строкам Строка = Таблица.Найти(«Лопата», «Наименование»);

Важная особенность – в таблице, которая получена из результата запроса, все колонки будут строго типизированы. Это значит, что запросив поле Наименование из справочника Номенклатура, Вы получите колонку вида Строка с допустимой длиной не более N символов.

Таблица на форме (толстый клиент)

Пользователь работает с таблицей, когда она размещена на форме.

Базовые принципы работы с формами мы с Вами обсуждали в уроке по формам толстого клиента и в уроке по управляемым формам

Итак, разместим таблицу на форме. Для этого можно перетащить таблицу с панели элементов управления. Аналогично можно выбрать в меню Форма/Вставить элемент управления.

8.tablicy-1s.png

Далее необходимо зайти в свойства таблицы. Самое важное свойство для таблицы – Данные. В нем указывается связь таблицы на форме с хранением данных.

9.tablicy-1s.png

Данные могут храниться в конфигурации – тогда нужно выбрать существующую (ранее добавленную) табличную часть того объекта конфигурации, форму которого Вы редактируете.

Нажмите кнопку «…» в свойстве Данные. Для того, чтобы увидеть список табличных частей, нужно раскрыть ветку Объект.

При выборе табличной части 1С сама добавит колонки у таблицы на форме. Строки введенные пользователем в такую таблицу будут сохраняться автоматически вместе со справочником/документом.

10.tablicy-1s.png

В этом же свойстве Данные Вы можете ввести произвольное имя и выбрать тип ТаблицаЗначений.

Это значит, что выбрана произвольная таблица значений. Она не добавит автоматически колонки, не будет автоматически сохраняться, но и делать с ней можно все, что угодно.

Нажав правой кнопкой на таблице Вы можете добавить колонку. В свойствах колонки можно указать его имя (для обращения в коде 1С), заголовок колонки на форме, связь с реквизитом табличной части (последнее – если выбрана не произвольная таблица, а табличная часть).

11.tablicy-1s.png

В свойствах таблицы на форме Вы можете указать – доступно ли пользователю добавлять/удалять строки. Более продвинутая форма – галочка ТолькоПросмотр. Эти свойства удобно использовать для организации таблиц предназначенных для вывода информации, но не редактирования.

12.tablicy-1s.png

Чтобы управлять таблицей, нужно вывести на форму командную панель. Выберите пункт меню Форма/Вставить элемент управления/Командная панель.

13.tablicy-1s.png

В свойствах командной панели выберите галочку Автозаполнение, чтобы кнопки на панели появились автоматически.

Таблица на форме (тонкий/управляемый клиент)

На управляемой форме указанные действия выглядят немного по другому. Если Вам нужно разместить на форме табличную часть – раскройте ветку Объект и перетащите одну из табличных частей влево. И все!

Если нужно разместить таблицу значений, добавьте новый реквизит формы и в его свойствах укажите тип – таблица значений.

Чтобы добавить колонки, используйте меню по правой кнопке мыши на этом реквизите формы, пункт Добавить колонку реквизита.

После чего также перетащите таблицу влево.

Чтобы у таблицы появилась командная панель, в свойствах таблицы выберите значения в секции Использование – Положение командной панели.

Выгрузка таблицы в Excel

Любую таблицу 1С, расположенную на форме, можно распечатать или выгрузить в Excel.

Для этого щелкните правой кнопкой мыши на свободном месте в таблице и выберите пункт Вывести список.

В управляемом (тонком) клиент аналогичные действия можно выполнить с помощью пункта меню Все действия/Вывести список.

Список в табличном документе можно сохранить в Excel с помощью пункта меню Файл/Сохранить как с выбранным типом Excel.

Таблица значений — специальный объект в программировании 1С 8.3 (8.2), который позволяет хранить промежуточные значения в виде двумерного массива со строками и колонками. Таблицы значений можно использовать как источник данных в запросе.

Таблицу значений, как любую коллекцию, можно обойти циклом. Например:

ДляКаждого Строка Из Товары Цикл

Получить нужную строку можно по индексу, например:

Строка = ТаблицаЗначений[];

Индексы в 1С начинается с 0 (нуля).

Рассмотрим основные свойства и методы этого объекта на примерах.

Создание и использование таблиц значений 1С в примерах

Создать таблицу можно следующим образом:

ТаблицаТоваров =Новый ТаблицаЗначений;

Добавить колонки в таблицу значений 1С:

ТаблицаТоваров.Колонки.Добавить("Программа",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));  ТаблицаТоваров.Колонки.Добавить("Цена",Новый ОписаниеТипов("Число"));

Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.

После создания колонок добавим несколько новых строк и заполним колонки:

НоваяСтрока = ТаблицаТоваров.Добавить();  НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("1C 8.3 Управление торговлей");  НоваяСтрока.Цена =17400;    НоваяСтрока = ТаблицаТоваров.Добавить();  НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("1С 8.2 Бухгалтерия");  НоваяСтрока.Цена =13000;    НоваяСтрока = ТаблицаТоваров.Добавить();  НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("1С 8 Управление небольшой фирмой");  НоваяСтрока.Цена =17400;

Получите 267 видеоуроков по 1С бесплатно:

  • Бесплатный видео самоучитель по 1С Бухгалтерии 8.3;
  • Самоучитель по новой версии 1С ЗУП 3.1;

Добавим еще одну колонку:

ТаблицаТоваров.Колонки.Добавить("ВерсияПлатформы",Новый ОписаниеТипов("Строка"));

Которую мы можем заполнить одинаковыми значениями двумя способами — перебором таблицы или функцией ЗаполнитьЗначения:

ДляКаждого Строка Из ТаблицаТоваров.ВерсияПлатформы Цикл  Строка.ВерсияПлатформы ="1C 8.3";КонецЦикла;//или    ТаблицаТоваров.ЗаполнитьЗначения("8.3","ВерсияПлатформы");

Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:

Сообщить(ТаблицаТоваров[].Программа);

Скопировать строку таблицы значений 1С, для примера — первую:

ЗаполнитьЗначенияСвойств(ТаблицаТоваров.Добавить(), ТаблицаТоваров[]);

Поиск в таблице значений 1С с ценой «17400» с помощью структуры:

МассивСтрок = ТаблицаТоваров.НайтиСтроки(Новый Структура("Цена",17400));

Сортировка программ в таблице по цене:

ТаблицаТоваров.Сортировать("Цена");

Количество строк в таблице:

ВсегоСтрок = ТаблицаТоваров.Количество();

Выгрузить колонку таблицы значений в массив 1С 8.3 или 8.2:

ТаблицаТоваров.ВыгрузитьКолонку("Программа");

Чтобы удалить строку в таблице значений, нужно передать саму строку или индекс в метод «Удалить». Два варианта:

//по строке  ТаблицаТоваров.Удалить(ТаблицаТоваров[ВсегоСтрок  -1]);//по индексу  ТаблицаТоваров.Удалить(ВсегоСтрок  -1);

Полностью скопировать таблицу значений 1С можно так:

НоваяТаблицаТоваров = ТаблицаТоваров.Скопировать();

Просуммировать итог по колонке таблицы значений:

СуммаЦен = ТаблицаТоваров.Итог("Цена");

Свернуть таблицу можно так:

ТаблицаТоваров.Свернуть("ВерсияПлатформы","Цена");

При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».

Ну и напоследок очистим строки таблицы значений 1С 8.3 (8.2) полностью:

ТаблицаТоваров.Очистить();

И удалим все колонки:

ТаблицаТоваров.Колонки.Очистить();

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Оцените статью, пожалуйста!

Используемые источники:

  • https://helpme1c.ru/tablica-znachenij-v-yazyke-1s-8-v-primerax
  • http://howknow1c.ru/programmirovanie-1c/tablicy-1s.html
  • https://programmist1s.ru/rabota-s-tablitsami-znacheniy-v-1s-8-3-8-2/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации