1с свернуть таблицу значений

Обновлено: 03.07.2024

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

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

Сортировка таблицы значений 1С

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

Сортировать(Колонки, ОбъектСравнения)

Колонки – обязательный параметр, который имеет тип Строка, в этой строке должны быть перечислены колонки таблицы значений, по которым осуществляется сортировка. После названия колонки можно указывать направление сортировки: или «Убыв», тогда сортировка осуществляется по убыванию, или «Возр», в этом случае сортировка будет по возрастанию. Если не указать направление сортировки, то сортировка будет по возрастанию. Можно перечислять несколько колонок, тогда таблица значений будет отсортирована сначала по первой указанной колонке, потом строки с одинаковым значением в первой колонке будут отсортированы по второй колонке и т.д.

  • Объекты сравниваются по идентификатору
  • Моменты времени сравниваются по дате и идентификатору объекта
  • Если есть элементы с разными типами, то они сравниваются по коду типа
  • Элементы остальных типов сравниваются по строковому представлению

Рассмотрим работу этого метода без второго параметра.

В этом коде мы отсортировали таблицу по окладу, поскольку название колонки было без указания направления, то сортировка осуществлялась по возрастанию. И вторая колонка для сортировки это дата рождения, здесь мы указали направление сортировки – по убыванию.

Посмотрим в отладке, какая таблица значений была до сортировки.

Сортировка таблицы значений 1С

И после сортировки.

Сортировка таблицы значений 1С

Итоги таблицы значений 1С

При работе с таблицей значений можно получить общий итог по какой-то колонке. Это осуществляется при помощи метода Итог. Этот метод является функцией, которая возвращает сумму значений определенной колонки всех строк таблицы. У этого метода следующий синтаксис:

Итог(Колонка)

Где: Колонка – это колонка, по которой будут просуммированы значения всех строк. Обычно данный метод применяется к колонкам, в которых содержатся значения с типом число.

Посмотрим, какой итог получился по указанной колонке.

Метод Итог таблицы значений

Свернуть таблицу значений 1С

Рассмотрим еще один метод, который очень полезен при работе с таблицами значений. Метод Свернуть сворачивает используемую таблицу значений по значениям одной или нескольких колонок. Данный метод является процедурой, которая изменяет текущую таблицу значений.

Рассмотрим синтаксис этого метода

Свернуть(КолонкиГруппы, КолонкиСуммы)

КолонкиГруппы – колонки, по которым будет свернута таблица значений. Это обязательный параметр типа строка, в котором нужные колонки должны быть перечислены через запятую.

КолонкиСуммы – колонки, значения по которым будут просуммированы (необязательный параметр).

Причем, обратите внимание, после применения метода, в измененной таблице значений останутся только колонки группы и колонки суммы, остальные колонки, те, что были до свертки, будут удалены и информация в них потеряется!

Данный метод производит свертку таблицы значений: значения в колонках, которые перечисленные в первом параметре (КолонкиГруппы) будут сгруппированы, а значения в колонках, которые перечислены во втором параметре (КолонкиСуммы) будут просуммированы. Одна и та же колонка не может быть указанна и в первом параметр, и во втором.

Рассмотрим пример: в таблице значений будут следующие колонки: ФИО, Вид работ , сумма выданных средств и дополнительная информация (аванс, «окончаловка» и т.п.), свернем эту таблицу значений по колонкам ФИО и Вид работ, и просуммируем колонку «Сумма».

Посмотрим в отладке, что было до свертки.

Свернуть таблицу значений

И после свертки

Свернуть таблицу значений

Как видите, произошла группировка по колонкам ФИО и ВидРабот, а значения в колонке Сумма просуммировались, причем колонка Причина была удалена и информация в ней пропала.

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

Более подробно и основательно работа с таблицей значений в дается в моей книге:


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

Возвращает копию текущей таблицы значений

Метод Скопировать() имеет несколько вариантов синтаксиса:

Вариант синтаксиса 1: копирование по строкам и колонкам

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

А также альтернативный англоязычный синтаксис:

Параметры

Описание параметров метода Скопировать() :

Имя параметра Тип Описание
Строки (необязательный) Массив Массив строк для копирования. Если параметр не указан, копируются все строки таблицы значений
Колонки (необязательный) Строка Перечисление имен копируемых колонок через запятую. Если параметр не указан, будут скопированы все колонки
Жирным шрифтом выделены обязательные параметры

Возвращаемое значение

Описание варианта 1

Метод Скопировать() возвращает копию текущей таблицы значений. Если указан параметр Строки , то копируются только указанные строки. Если указан параметр Колонки , то копируются значения только для указанных колонок. Если оба параметра опущены, создается полная копия текущей таблицы значений.

Вариант синтаксиса 2: копирование по отбору

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

А также альтернативный англоязычный синтаксис:

Параметры

Описание параметров метода Скопировать() :

Возвращаемое значение

Описание варианта 2

Метод Скопировать() возвращает копию текущей таблицы значений. Если указан параметр ПараметрыОтбора , то копируются только строки, удовлетворяющие условиям отбора. Если указан параметр Колонки , то копируются значения только для указанных колонок. Если оба параметра опущены, создается полная копия текущей таблицы значений.

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Любая таблица значений состоит из колонок, каждая из которых имеет свой тип и уникальное название, а также из строк. Если таблица значений размещена на управляемой форме в виде элемента Таблица, то колонки создаются изначально на этапе разработки, а строки пользователь может создать самостоятельно, нажав на кнопку «Добавить» в командной панели этой таблицы.

Для добавления новой строки нужно нажать на кнопку добавить

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

Программное добавление строк таблицы значений в 1С

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

Новая строка таблицы значений создается следующим образом:

НоваяСтрока = ФИО.Добавить();

Как видите, с помощью метода Добавить мы создали переменную НоваяСтрока, тип значения которой Строка таблицы значений. Но, просто создать строку мало, нам еще необходимо записать в нее определенные данные. Как получить доступ к колонкам данной строки?

Осуществить это можно двумя способами:

Допустим, у нас есть некоторая таблица значений ФИО с колонками Фамилия, Имя, Отчество, ФИО и ДатаРождения, то добавить новую строку этой таблицы и заполнить колонки этой строки можно следующим образом.

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

Добавим с помощью этого метода еще одну строку в таблицу ФИО. И поставим ее на первое место.

Программный обход строк таблицы значений в 1С

Оператор цикла Для…Цикл.

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

Когда мы используем квадратные скобки применительно к таблице значений (например, ФИО[н]), то результатом данной операции является строка таблицы с соответствующим индексом.

Индекс строки таблицы значений

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

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

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

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

ФИО . Удалить ( 0 )

У новичков основные сложности возникают, когда нужно удалить несколько строк из таблицы значений. Если делать обход таблицы значений циклом, то данное удаление пройдет не совсем корректно. Я в этом случае поступаю так: сохраняю нужные строки в массиве, а потом обхожу этот массив циклом и уже в нем их все удаляю. Получается примерно так:

МассивДляУдаления = Новый Массив ;
Для Каждого Стр из ФИО цикл
Если тогда //какое-то условие
МассивДляУдаления . Добавить ( Стр );
КонецЕсли
КонецЦикла;
Для Каждого СтрМассива из МассивДляУдаления Цикл
ФИО . Удалить ( стрМассива )
КонецЦикла


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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

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

Таблица значений 1С на управляемой форме

На любой управляемой форме 1С 8.3 разработчик может разместить таблицу значений в виде реквизита формы. Для этого нужно создать новый реквизит и задать ему тип «Таблица значений».

Реквизит формы 1С с типом Таблица значений

Таблица значений на форме размещается в виде элемента формы Таблица. Это элемент будет создан автоматически, если мы перетащим мышкой реквизит с типом таблица значений в дерево элементов.

Элемент таблица формы 1С

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

Программное создание таблицы значений 1С

Вы можете создать таблицу значений в любом программном модуле при помощи оператора Новый.

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

Эта таблица значений будет существовать в том контексте, в котором Вы её создали: если Вы создали её в процедуре или функции, то она будет существовать до того момента пока выполняется эта процедура или функция. Если Вы её создали в программном модуле объекта, то таблица значений будет существовать пока выполняется обращение к этому объекту.

Но имейте в виду, что если вы создали таблицу значений в процедуре или функции программного модуля управляемой формы 1С 8.3, то на клиенте (под директивой &НаКлиенте) код будет выполняться только в толстом клиенте. В тонком клиенте и на веб-клиенте нельзя работать с таблицей значений. Возникнет ошибка!

 Ошибка при работе с таблицей значений в тонком клиенте

Но, на тонком и веб-клиенте нельзя работать только с таблицей значений 1С, которая создана программно (с помощью оператора Новый). Если же таблица значений создана на форме в виде реквизита, то обращаться к этому реквизиту можно в любом контексте, платформа преобразует её в объект ДанныеФормыКоллекция.

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

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

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

О работе с колонками и строками в таблицах значений 1С читайте в статьях по ссылкам:

Статьи о других универсальных коллекциях значений в 1С


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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Вступайте в мои группы:

One thought on “ Таблица значений 1С ”

Добрый день, Ильяз! хотела поддержать проект и не смогла оплатить с Карты Маэстро.
М.б. другие варианты.
Спасибо за проект!

Читайте также: