Как сортировать по группам в 1с
Продолжим изучать методы работы с таблицами значений. В предыдущей статье мы научились работать с поиском по таблице значений, а также копировать таблицы значений.
В этой статье мы научимся сортировать, получать итоги и сворачивать таблицу значений.
Сортировка таблицы значений 1С
Сортировка таблицы значений 1С осуществляется при помощи метода Сортировать, этот метод является процедурой, выполнение которой изменяет порядок строк в таблице значений. Данный метод имеет следующий синтаксис.
Сортировать(Колонки, ОбъектСравнения)
Колонки – обязательный параметр, который имеет тип Строка, в этой строке должны быть перечислены колонки таблицы значений, по которым осуществляется сортировка. После названия колонки можно указывать направление сортировки: или «Убыв», тогда сортировка осуществляется по убыванию, или «Возр», в этом случае сортировка будет по возрастанию. Если не указать направление сортировки, то сортировка будет по возрастанию. Можно перечислять несколько колонок, тогда таблица значений будет отсортирована сначала по первой указанной колонке, потом строки с одинаковым значением в первой колонке будут отсортированы по второй колонке и т.д.
ОбъектСравнения — необязательный параметр, в него передается переменная с типом СравнениеЗначений. Этот параметр необходимо применять, когда в сортируемых колонках содержатся значения не примитивных типов. Если этот параметр не указан, то элементы не примитивных типов сравниваются по своему строковому представлению. Если же он указан, то они сравниваются по следующим правилам:
- Объекты сравниваются по идентификатору
- Моменты времени сравниваются по дате и идентификатору объекта
- Если есть элементы с разными типами, то они сравниваются по коду типа
- Элементы остальных типов сравниваются по строковому представлению
Рассмотрим работу этого метода без второго параметра.
ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «ФИО» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
ТЗ . Колонки . Добавить ( «Оклад» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Иванов И.И» ;
НСтр . ДатаРождения = Дата ( 1985 , 1 , 15 );
НСтр . Оклад = 2000 ;
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Петров П.С» ;
НСтр . ДатаРождения = Дата ( 1984 , 5 , 25 );
НСтр . Оклад = 1000 ;
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Тарасов К.В» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );
НСтр . Оклад = 2000 ;
//сортируем по окладу и дате рождения (убывание)
ТЗ . Сортировать ( «Оклад,ДатаРождения УБЫВ» );
В этом коде мы отсортировали таблицу по окладу, поскольку название колонки было без указания направления, то сортировка осуществлялась по возрастанию. И вторая колонка для сортировки это дата рождения, здесь мы указали направление сортировки – по убыванию.
Посмотрим в отладке, какая таблица значений была до сортировки.
И после сортировки.
Итоги таблицы значений 1С
При работе с таблицей значений можно получить общий итог по какой-то колонке. Это осуществляется при помощи метода Итог. Этот метод является функцией, которая возвращает сумму значений определенной колонки всех строк таблицы. У этого метода следующий синтаксис:
Итог(Колонка)
Где: Колонка – это колонка, по которой будут просуммированы значения всех строк. Обычно данный метод применяется к колонкам, в которых содержатся значения с типом число.
ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «ФИО» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
ТЗ . Колонки . Добавить ( «Зарплата» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Иванов И.И» ;
НСтр . ДатаРождения = Дата ( 1985 , 1 , 15 );
НСтр . Зарплата = 2000 ;
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Петров П.С» ;
НСтр . ДатаРождения = Дата ( 1984 , 5 , 25 );
НСтр . Зарплата = 5000 ;
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Тарасов К.В» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );
НСтр . Зарплата = 3000 ;
//итог по зарплатам
Общая = ТЗ . Итог ( «Зарплата» );
Посмотрим, какой итог получился по указанной колонке.
Свернуть таблицу значений 1С
Рассмотрим еще один метод, который очень полезен при работе с таблицами значений. Метод Свернуть сворачивает используемую таблицу значений по значениям одной или нескольких колонок. Данный метод является процедурой, которая изменяет текущую таблицу значений.
Рассмотрим синтаксис этого метода
Свернуть(КолонкиГруппы, КолонкиСуммы)
КолонкиГруппы – колонки, по которым будет свернута таблица значений. Это обязательный параметр типа строка, в котором нужные колонки должны быть перечислены через запятую.
КолонкиСуммы – колонки, значения по которым будут просуммированы (необязательный параметр).
Причем, обратите внимание, после применения метода, в измененной таблице значений останутся только колонки группы и колонки суммы, остальные колонки, те, что были до свертки, будут удалены и информация в них потеряется!
Данный метод производит свертку таблицы значений: значения в колонках, которые перечисленные в первом параметре (КолонкиГруппы) будут сгруппированы, а значения в колонках, которые перечислены во втором параметре (КолонкиСуммы) будут просуммированы. Одна и та же колонка не может быть указанна и в первом параметр, и во втором.
Рассмотрим пример: в таблице значений будут следующие колонки: ФИО, Вид работ , сумма выданных средств и дополнительная информация (аванс, «окончаловка» и т.п.), свернем эту таблицу значений по колонкам ФИО и Вид работ, и просуммируем колонку «Сумма».
ТабВыплат = Новый ТаблицаЗначений ;
ТабВыплат . Колонки . Добавить ( «ФИО» );
ТабВыплат . Колонки . Добавить ( «ВидРабот» );
ТабВыплат . Колонки . Добавить ( «Сумма» );
ТабВыплат . Колонки . Добавить ( «Причина» );
//первая строка
НовВыплата = ТабВыплат . Добавить ();
НовВыплата . ФИО = «Иванов» ;
НовВыплата . ВидРабот = «Отделка» ;
НовВыплата . Сумма = 1000 ;
НовВыплата . Причина = «Аванс» ;
//вторая строка
НовВыплата = ТабВыплат . Добавить ();
НовВыплата . ФИО = «Иванов» ;
НовВыплата . ВидРабот = «Монтаж» ;
НовВыплата . Сумма = 1500 ;
НовВыплата . Причина = «Расчет» ;
//третья строка
НовВыплата = ТабВыплат . Добавить ();
НовВыплата . ФИО = «Иванов» ;
НовВыплата . ВидРабот = «Монтаж» ;
НовВыплата . Сумма = 500 ;
НовВыплата . Причина = «аванс» ;
//четверта строка
НовВыплата = ТабВыплат . Добавить ();
НовВыплата . ФИО = «Петров» ;
НовВыплата . ВидРабот = «Монтаж» ;
НовВыплата . Сумма = 500 ;
НовВыплата . Причина = «аванс» ;
//пятая строка
НовВыплата = ТабВыплат . Добавить ();
НовВыплата . ФИО = «Петров» ;
НовВыплата . ВидРабот = «Монтаж» ;
НовВыплата . Сумма = 1500 ;
НовВыплата . Причина = «Расчет» ;
//свертка
ТабВыплат . Свернуть ( «ФИО,ВидРабот» , «Сумма» );
Посмотрим в отладке, что было до свертки.
И после свертки
Как видите, произошла группировка по колонкам ФИО и ВидРабот, а значения в колонке Сумма просуммировались, причем колонка Причина была удалена и информация в ней пропала.
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект.
Более подробно и основательно работа с таблицей значений в дается в моей книге:
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
В редакции 3.0 есть возможность установить сортировку списка документов или элементов справочника по любому реквизиту, в том числе по контрагенту, по сумме и т. п. Для этого достаточно щелкнуть мышкой по заголовку нужной колонки. Установка сортировки по выбранному реквизиту видна сразу же по появлению специальной пиктограммы в заголовке этого реквизита. В интерфейсе «Такси» пиктограмма выглядит в виде стрелки, при этом внешний вид стрелки указывает на тип сортировки:
- стрелка, направленная вниз, означает возрастание для числовых полей или по алфавиту для символьных;
- стрелка, направленная вверх, означает убывание для числовых полей или в обратном алфавитном порядке для символьных.
Повторный щелчок мыши по названию колонки переключает направление сортировки.
Стандартные настройки формы списка предлагают вариант сортировки только по одному реквизиту (то есть пиктограмма сортировки присутствует лишь в одной из колонок), однако пользователь при необходимости всегда может настроить сортировку в соответствии со своими собственными потребностями.
Чтобы настроить вариант сортировки, отличающийся от стандартного, необходимо выполнить следующую последовательность действий:
- открыть вертикальное меню нажатием на кнопку Еще;
- выбрать пункт Настроить список;
- открыть окно выбора в поле Сортировка;
- в форме Редактирование порядка добавить необходимое поле (либо щелчком по кнопке Выбрать, либо простым перетаскиванием поля) в правую часть формы, после чего нажать кнопку ОК;
- сохранить выбранную настройку с помощью кнопки Завершить редактирование;
- убедиться в том, что пиктограмма сортировки появилась в заголовке нужной колонки.
Описанный механизм одинаково применим как в интерфейсе «Такси», так и в интерфейсе предыдущих версий «1С:Бухгалтерии 8».
Подробнее, как установить сортировку в списке документов (элементов справочника) читайте, а также смотрите видео на сайте.
Механизм настройки списков предоставляется платформой, как говорят программисты «из коробки». Поэтому он доступен пользователям любых прикладных решений. С его помощью пользователи могут изменить внешний вид списка в соответствии со своими предпочтениями или требованиями текущей задачи . Система позволяет в пользовательском режиме изменять структуру списков, устанавливать отборы, группировать элементы и даже настраивать условное оформление выводимых данных.
1. Быстрая сортировка данных
Первой мы рассмотрим такую полезную функцию, как сортировка данных по колонке. Обратите внимание, все колонки списка имеют заголовки с названиями. Их можно «кликать» мышкой. Щелчек левой клавишей мыши по шапке нужного столбца, включает сортировку списка по возрастанию, повторное нажатие меняет направление сортировки.
2. Быстрая сортировка данных по нескольким столбцам одновременно.
Быстрые сортировки можно комбинировать. Например, когда мы хотим сначала отсортировать список по контрагентам, а потом по суммам поступлений. Для этого достаточно нажимать на заголовки столбцов с зажатой клавишей CTRL.
3. Установка периода
Когда речь идет о списке документов, то для него весьма важен период выводимых документов. Включить ограничение по периоду можно через контекстное меню. Его, в свою очередь, можно отрыть, щелкнув правой клавишей мыши по любой строке списка. Далее необходимо выбрать в нем пункт Установить период .
4. Быстрый отбор по текущему значению
Если вам нужно быстро отобрать данные по какому-то значению, то достаточно кликнуть правой кнопкой по этому элементу в списке и выбрать пункт «Найти».
5. Поиск по текущей колонке.
Далее можно включить расширенный поиск по выбранной колонке. Для этого в контекстном меню нужно выбрать пункт Расширенный поиск.
6. Вывод списка
После установок отбора и сортировки списка, вам может понадобиться вывести полученные результаты на печать или сохранить их в файл. Для этого нужно нажать на кнопку « Ещё » и выбрать пункт « Вывести список ». В открывшейся форме настроек, можно флажками указать, какие именно колонки будут показаны в списке, который мы будем выводить на печать.
7. Изменение формы (настройка порядка и видимости колонок)
Для настройки формы нажмите на кнопку еще, и далее выберете пункт Изменить форму . В открывшейся форме настройки, можно управлять видимостью колонок, менять их местами, объединять их в группы и даже добавлять новые. Колонкам можно задавать собственные заголовки, менять их стиль и размеры.
Стоит отметить, что информация представлена достаточно сжато. Поэтому вы можете посмотреть подробный видеоурок. По его материалам написана данная статья.
На этом пока все. Полный текст статьи можно прочитать в разделе Приемы работы с 1с .
Подписывайтесь на канал и наши группы в социальных сетях, чтобы не пропустить новые публикации.
Новая порция лайфхаков по работе с интерфейсом 1С. На этот раз разбираем работу со списками - учимся их упорядочивать, сортировать, создавать новые и перемещать старые. Это очень полезное дополнение к уже имеющимся знаниям по интерфейсу 1С.
Ссылки на предыдущие статьи
Значительная часть информации, связанной с учетом или ведением бухгалтерии, хранится в виде списков. Эта традиция заведена уже очень давно и табличная информация воспринимается уже как нечто само собой понятное. Списки могут быть разными и представлены могут быть различными способами.
Программные продукты от 1С предлагают свою версию реализации списков. Это стандартный механизм для всех продуктов от 1С. Очень полезно научиться работать со списками в этой среде. Знания будут полезны как бухгалтерам, так и абсолютно всем, кто так или иначе, вынужден работать в программах от 1С.
Начнем по порядку.
1. Дату можно не вбивать полностью
Можно не вбивать текущую дату каждый раз. Просто введите сегоднящнее число в соответствующее поле и нажмите Enter. Программа сама допишет отсутствующую информацию. Это не ахти насколько важные знания, но если вы работаете с большим потоком документов, то этот лайфхак значительно ускорит обработку данных. Ведь каждый раз тратятся драгоценные секунды.
2. Функция "вывести список" - начальная сортировка
Нажимаем кнопку "Ещё" и находим опцию "Вывести список". Нажимаем на этот пункт и перед нами открывается панель настройки. Эта панель позволяет галочками указать, какие данные нужно сохранить в результирующем списке, который мы, например, хотим вывести на печать.
После такой сортировки, на выходе мы получим таблицу со всеми выбранными данными. Эту таблицу можно распечатать или использовать любым способом.
3. Быстрый отбор
Если нам нужно получить данные по какому-то контрагенту, то можно использовать простой способ сортировки. Достаточно кликнуть правой кнопкой по наименованию партнера или контрагента и выбрать опцию "Найти". В результате, система предложит вам сводную таблицу со всеми данными, отвечающими поставленному запросу. Это называется быстрый отбор. Очень полезная на практике функция. Кстати говоря. результат отбора будет висеть над всей таблицей как закладка. Его можно закрыть крестиком.
4. Сортировка данных
Ещё одна очень полезная функция - это сортировка данных внутри сводной таблицы. На самом деле штука довольно стандартная, но пользу. безусловно, имеет.
Обратите внимание, что колонки имеют шапки с названиями, которые можно кликать. Кликайте по нужному столбцу и произойдет сортировка в установленном порядке. Это очень удобно, когда нужно выполнить сортировку по одному из параметров.
5. Изменить форму
Если перейти во вкладку "ещё", то там вы увидите закладку изменить форму. Появляется форма настройки.
Тут можно поубирать галочками лишние пункты или добавить что-то новое. Благодаря этому можно сделать список более компактным. Здесь же можно изменить стиль и форму отображения объектов.
У некоторых пунктов возможно расширить набор полей. используя справочник. Там, где это возможно. появляется зеленый плюсик рядом с надписью добавить поле в конструкторе формы. Там есть много интересных и полезных полей. Например, можно вытащить поле ИНН и т.п.
Здесь же можно сформировать удобный быстрый отбор. Просто кликните по вкладке, как показано на рисунке. а в появившемся наборном поле введите нужного контрагента (или любую другую информацию, соответствующую выбранному полю). Впоследствии, программа выведет подборку, аналогичную быстрому подбору.
6. Подборка документов по признаку
С помощью опции настройка списков можно не только сформировать удобную для прочтения форму или упорядочить данные, но и сделать выборку по признаку. Например, вывести все документы, которые нужно подписывать. Очень полезная функция. которая значительно сократит рутинную обработку стандартных документов.
Настроить эту функцию очень просто. Переходите во вкладку "ещё", выбирайте настройку списков. Тут выбираем вкладку отбор, как показано на картинке выше и в итоге получаем отсортированные данные, где подобраны все неподписанные документы.
7. Группировка
Данные можно не только сортировать, но и группировать. Иногда группировка внутри списка бывает очень и очень полезной. поскольку позволяет работать сразу с несколькими важными параметрами. Для того, чтобы выполнить группировку, нужно в уже знакомой нам вкладке "ещё", выбрать соответствующий раздел.
После выполнения группировки все данные будут отсортированы по группам. Можно сделать, например. группировку по контрагенту, как указано на рисунке выше. Это позволит нам выполнить удобную подборку всех данных, которые будут объединены в сводный перечень данных. Так можно в одном раскрывающемся списке увидеть и долги, и неподписанные документы, и другое.
8. Изменить форму внутри документа
Менять можно не только общий список, но и конкретный документ. Перейдем в уже известный нам раздел, там выберем "изменение формы".
Настройка формы позволяет открыть или спрятать ненужные нам пункты. Обратите внимание, что мы работаем не просто со списком, а с папками. Пункты будущего списка можно перемещать из папки в папку, а затем выводить в нужном поле.
Войдите как ученик, чтобы получить доступ к материалам школы
Язык запросов 1С 8.3 для начинающих программистов: упорядочивание
Автор уроков и преподаватель школы: Владимир Милькин
Упорядочивание в запросах
Давайте напишем запрос, который получает из таблицы Справочник.Еда код и название еды:
Как всегда, выполните этот запрос у себя на компьютере.
С большой долей вероятности у вас получится следующий результат:
Возможно вы удивитесь, но при таком написании запроса никто не гарантирует нам именно такого порядка выдачи записей в таблице. В случае использования клиент-серверного режима работы на различных СУБД результат мог бы быть и такой:
И . ну в общем вы поняли, что если мы не указываем порядок сортировки (упорядочивания) результата запроса, то этот самый порядок может быть абсолютно любым.
Секция УПОРЯДОЧИТЬ ПО
Поля по которым требуется упорядочить запрос перечисляются в секции УПОРЯДОЧИТЬ ПО через запятую:
Следом за именем поля упорядочивания может идти одно из двух ключевых слов:
- ВОЗР- упорядочивание по возрастанию.
- УБЫВ - упорядочивание по убыванию.
Если не указывать ни одно из этих слов, считается, что сортировка идёт по возрастанию.
Вооружившись знаниями, давайте упорядочим результат нашего запроса по убыванию поля Код:
По возрастанию поля Наименование (алфавитный порядок):
А теперь упорядочим следующую таблицу
так, чтобы сначала шла сортировка по полю Вкус по возрастанию, а затем (среди строчек с одинаковым значением поля Вкус) шла сортировка по полю Цвет по убыванию:
Отдельно обращаю ваше внимание на то, что мы указали сортировку не по самим полям Вкус и Цвет, а по их строковому реквизиту Наименование. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Это связано с тем, что сортировка возможна лишь по полям имеющим один из типов: Строка, Число, Дата.
А поля Вкус и Цвет являются ссылками на элементы справочников Вкус и Цвет, сортировать по которым не имеет смысла (в этом случае сортировка будет вестись по внутреннему идентификатору ссылки). Зато можно сделать сортировку по одному из реквизитов этих элементов. Наиболее подходящим в нашем случае будет строковый реквизит Наименование.
Возможность автоупорядочивания
Ключевое слово АВТОУПОРЯДОЧИВАНИЕ позволяет включить режим автоматического формирования полей для упорядочивания результатов запроса.
Мы сейчас познакомимся с этой возможностью подробно, но сразу хочется оговориться, что фирма "1С" в своих методических рекомендациях не советует использовать её без необходимости (о причинах этого мы поговорим ниже).
Прежде всего, ключевое слово АВТОУПОРЯДОЧИВАНИЕ может быть расположено в запросе сразу за или вместо секции УПОРЯДОЧИТЬ ПО:
Автоупорядочивание работает по следующим принципам:
Тогда ссылка на каждую таблицу в этой секции будут заменена полями, по которым по умолчанию сортируется эта таблица.
Для таблиц справочников полями сортировки по умолчанию являются код и наименование, выбор из которых осуществляется в соответствии с настройками справочника в конфигураторе:
Для таблиц документов полем сортировки по умолчанию является дата документа.
Так как поле сортировки ЛюбимыйЦвет имеет тип Справочник.Цвета, в настройках которого основным представлением выбрано поле Наименование, то этот запрос эквивалентен:
- отсутствует секция УПОРЯДОЧИТЬ ПО
- но есть секция ИТОГИ ПО (её мы будем проходить позже)
В этом случае результат запроса будет упорядочен по полям итогов (в той же последовательности).
Если среди этих полей есть ссылки на таблицы, то они также будут заменены полями, по которым сортируются эти таблицы по умолчанию.
- отсутствует секция УПОРЯДОЧИТЬ ПО
- отсутствует секция ИТОГИ ПО
- но есть секция СГРУППИРОВАТЬ ПО (группировку мы проходили здесь)
В этом случае результат запроса будет упорядочен по полям группировки (в той же последовательности).
Если среди этих полей есть ссылки на таблицы, то они также будут заменены полями, по которым сортируются эти таблицы по умолчанию.
Так как поле группировки Город имеет тип Справочник.Города, в настройках которого основным представлением выбрано поле Наименование, то этот запрос эквивалентен:
Наконец, если в запросе:
- отсутствует секция УПОРЯДОЧИТЬ ПО
- отсутствует секция ИТОГИ ПО
- отсутствует секция СГРУППИРОВАТЬ ПО
В этом случае результат запроса будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
Так как данные выбираются из справочника Еда, в настройках которого основным представлением выбрано поле Наименование, то этот запрос будет эквивалентен:
Почему использование автоупорядочивания нежелательно
- для универсальных запросов, когда разработчик не может предвидеть из каких таблиц будут запрашиваться данные
- для случаев, когда получаемый порядок записей не важен, но при этом он должен быть одинаковым в независимости от применяемой СУБД
Во всех остальных случаях использовать возможность автоупорядочивания нежелательно, так как поля, которые являются полями сортировки сегодня, могут перестать быть такими завтра.
Например, сегодня мы можем написать код, чувствительный к тому, чтобы результаты запроса из справочника Еда были отсортированы по полю Наименование.
А завтра фирма "1С" (или другой разработчик) изменят настройки базы в конфигураторе так, что полем сортировки по умолчанию для справочника Еда станет, к примеру, поле Код. И, если мы использовали автоупорядочивание в запросе, то наш отчет сломается, ведь порядок сортировки уже будет другим. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Поэтому всегда старайтесь указывать конкретные поля и конкретный порядок сортировки по ним в секции УПОРЯДОЧИТЬ ПО, такой запрос уже не сломать просто так:
Читайте также: