Алфавитный порядок в 1С: списки, отчёты, запросы и печатные формы
Содержание
Открыли справочник «Номенклатура», а позиции идут в порядке ввода: «Ящик» стоит выше «Автомата», «Бумага» затерялась посередине. Чтобы отсортировать по алфавиту в 1С 8.3, щёлкните по заголовку колонки «Наименование». Один клик даёт порядок от А до Я, второй — от Я до А.
Это работает в любом списке обычных форм. В отчётах, запросах и печатных формах порядок задают иначе: в настройках отчёта, оператором УПОРЯДОЧИТЬ ПО или методом Сортировать. Ниже разобраны все четыре случая и то, что чаще всего идёт не так.
Сортировка по алфавиту в списке: клик по заголовку
Самый быстрый способ — заголовок колонки. Работает в справочниках, журналах документов и любых списках с интерфейсом «Такси».
Как это выглядит на практике
- Откройте список, например
Справочники → Номенклатура(в конфигурациях разные разделы, но принцип одинаков). - Щёлкните по заголовку нужной колонки. В заголовке появится стрелка направления.
- Щёлкните ещё раз — порядок развернётся.
Порядок хранится только пока открыта форма. Закрыли список, открыли заново — вернулась сортировка по умолчанию, которую задал разработчик конфигурации.
Что даёт клик, а что нет
| Колонка | Как сортируется |
|---|---|
| Строковая («Наименование») | по алфавиту, регистр не учитывается |
| Числовая («Сумма») | по возрастанию или убыванию значения |
| Дата | по хронологии |
| Ссылка на другой элемент | по представлению этого элемента |
| Колонка-флажок | сначала без отметки, потом с отметкой |
Если щёлкнуть по заголовку нельзя, значит, сортировка по этому полю не разрешена. Так бывает у вычисляемых колонок: платформа не может упорядочить то, чего нет в данных.
Нужно сохранить порядок на постоянной основе? Для личного пользования используйте настройки списка в форме. Для всех пользователей порядок меняет только разработчик.
Папки и группы: почему сортировка «ломается»
В иерархическом справочнике сначала идут группы, затем элементы. Это не ошибка. Платформа сортирует внутри каждого уровня отдельно.
Что видит пользователь:
- 📁 группы стоят вверху списка, даже если их названия начинаются на «Я»;
- 📄 элементы внутри группы упорядочены по алфавиту;
- ➡️ чтобы увидеть всё одним плоским списком, отключите иерархический просмотр. Кнопка переключения находится в командной панели списка.
Когда вы ищете позицию, не помня группу, плоский вид удобнее. Но для долгой работы лучше оставить дерево: иначе в списке на несколько тысяч строк легко потеряться.
Алфавитная сортировка в отчётах
В отчётах на системе компоновки данных (большинство стандартных отчётов) порядок строк настраивается в пользовательских настройках.
Порядок действий
- Сформируйте отчёт.
- Откройте настройки отчёта кнопкой
Настройки(она есть в командной панели). - Перейдите на вкладку или в раздел
Сортировка. - Добавьте поле, по которому нужен порядок, например «Контрагент» или «Номенклатура».
- Выберите направление: по возрастанию или по убыванию.
- Нажмите
Сформировать.
Несколько полей работают как цепочка. Сначала порядок по первому, внутри одинаковых значений — по второму. Например: сначала «Организация», потом «Контрагент». Стрелками можно поменять очерёдность.
Если в отчёте есть группировки, сортировка внутри группировки задаётся отдельно от общей. Не нашли нужное поле в общих настройках — ищите его в настройках конкретной группировки.
Когда отчёт сортирует сам
Некоторые отчёты, например оборотно-сальдовая ведомость, выводят данные в порядке, который задал разработчик: по коду счёта. Менять его можно, но часть полей, например итоговые, для сортировки недоступна.
Сортировка в запросах: УПОРЯДОЧИТЬ ПО
Для разработчиков и тех, кто пишет запросы в консоли, порядок задаёт оператор УПОРЯДОЧИТЬ ПО в конце запроса.
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
НЕ Номенклатура.ЭтоГруппа
УПОРЯДОЧИТЬ ПО
Наименование ВОЗР
ВОЗР — от А до Я, УБЫВ — от Я до А. Если слово не указать, подразумевается порядок по возрастанию.
Несколько полей и ссылки
Можно перечислять поля через запятую:
УПОРЯДОЧИТЬ ПО
Контрагент.Наименование ВОЗР,
Дата УБЫВ
Для ссылочного поля есть два варианта:
УПОРЯДОЧИТЬ ПО Контрагент— порядок определяется внутренним значением ссылки, а не названием. Алфавита не получится.УПОРЯДОЧИТЬ ПО Контрагент.Наименование— именно по тексту наименования. Нужен он.
Оператор АВТОУПОРЯДОЧИВАНИЕ добавляется после перечня полей. Он упорядочивает ссылки по их основному представлению, например по наименованию справочника или по дате и номеру документа. Для быстрых проверок удобно, для отчётов с точным порядком лучше указывать поля явно.
Порядок строк задавайте в итоговом запросе. Результат подзапроса или временной таблицы никто не обещает вернуть в нужной последовательности: СУБД вправе переставить строки при соединении.
Таблица значений, список и массив в коде
Когда данные уже в памяти, запрос не нужен. У разных коллекций разные методы.
Таблица значений. Метод Сортировать принимает перечень колонок через запятую и направление:
Таблица.Сортировать("Наименование");
Таблица.Сортировать("Группа Убыв, Наименование Возр");
Список значений. Здесь два метода: СортироватьПоЗначению и СортироватьПоПредставлению. Второй нужен, когда в списке лежат ссылки, а показываем мы их текст:
Список.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
Массив. Своего метода сортировки у массива нет. Выход: переложить значения в список значений, отсортировать и вернуть обратно. Или собрать таблицу значений из одной колонки.
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Массив);
Список.СортироватьПоЗначению(НаправлениеСортировки.Возр);
Массив = Список.ВыгрузитьЗначения();
Строки сравниваются без учёта регистра в таблице и списке по умолчанию, но если вы сравниваете их самостоятельно оператором < или >, регистр может повлиять. Для сложных правил, например «сначала латиница, потом кириллица», нужен собственный компаратор через цикл или запрос.
Русский алфавит: ё, цифры и пробелы
Тут чаще всего возникают вопросы «почему порядок неправильный».
Числа в строковых полях
Коды часто хранятся строкой. Тогда «10» идёт раньше «2», потому что сравниваются символы, а не значения. Спасает код с ведущими нулями: «0002», «0010». У справочников с кодом типа «Число» такой проблемы нет.
Пробелы и спецсимволы
Лишний пробел в начале наименования сдвигает элемент в самое начало списка. Кавычки и скобки тоже влияют. Если «ООО “Ромашка”» оказалось выше «Агат», ищите пробел перед названием или нестандартный символ.
Поиск таких элементов: отберите в списке наименования, начинающиеся с пробела, и поправьте вручную или обработкой.
Буква ё
Порядок для «ё» зависит от правил сравнения, которые использует конкретный движок хранения. Если в справочнике есть и «Елена», и «Ёлкин», проверьте результат на своих данных, не полагаясь на память. Надёжный путь — договориться о написании: во всей базе либо с «ё», либо с «е».
Выгрузка в файлы
Кодировка влияет не на сортировку, а на чтение результата. Если вы выгружаете отсортированный список в текстовый файл и в Блокноте видны «кракозябры», сохраняйте файл в UTF-8 и открывайте с той же кодировкой.
Алфавитный порядок в печатных формах
Табличный документ сам по себе ничего не сортирует: он выводит строки в том порядке, в каком их передали. Поэтому порядок нужно навести до вывода.
Три рабочих способа:
- Отсортировать табличную часть документа. Если в командной панели табличной части есть команда сортировки, упорядочьте строки ею. Печатная форма, которая берёт данные из табличной части, часто повторит порядок экрана, но не всегда: это зависит от того, как написан макет. Такой способ годится для разовой печати.
- Сортировка в запросе печатной формы. Если форма строится запросом, добавьте
УПОРЯДОЧИТЬ ПО. Единственный способ, который гарантирует результат. - Сортировка таблицы значений перед выводом. Если данные собираются в коде, перед циклом вывода вызовите
Таблица.Сортировать("Наименование").
Если печатная форма внешняя, подключенная как обработка, порядок задаёт её автор. Сами пользователи его не меняют.
Нужна накладная в алфавитном порядке, а форма стандартная? Отсортируйте табличную часть документа и проверьте предварительный просмотр. Если порядок не изменился, запрос печатной формы придётся править через расширение конфигурации: прямое изменение типовой формы осложнит обновления.
Как проверить результат до печати
Не отправляйте документ на принтер вслепую. Откройте предварительный просмотр и пройдитесь по первым и последним строкам: ошибки порядка обычно видны на краях. Для таблицы из сотни строк достаточно проверить три места: начало, середину и конец. Если встретилась пара строк в обратном порядке, ищите в наименованиях лишний пробел или латинскую букву, похожую на русскую («С», «А», «О», «Е» бывают и там и там). Такая «подмена» часто возникает при копировании из почты и мессенджеров, и порядок она ломает без видимых причин.
Личные настройки и сохранение порядка в отчёте
Настроили сортировку в отчёте и хотите вернуться к ней завтра? Сохраните вариант отчёта: в окне настроек есть команда сохранения варианта под своим именем. Следующий раз вы откроете отчёт сразу с нужным порядком, без повторной настройки.
Несколько практических замечаний:
- 💾 личный вариант видите только вы, общий вариант доступен всем, у кого есть право на отчёт;
- 💾 типовой вариант лучше не перезаписывать: при обновлении конфигурации он вернётся к исходному виду;
- 💾 если вариантов много, назовите их по смыслу: «Контрагенты по алфавиту», «Номенклатура по группам».
Для регулярной выгрузки, например реестра контрагентов раз в месяц, личный вариант экономит минуты, а ошибок с порядком становится меньше: настройка не зависит от памяти исполнителя.
Когда сортировка тормозит
На справочнике из десятков тысяч позиций порядок по наименованию срабатывает мгновенно. На миллионе записей и по неиндексированному полю — уже нет.
Что помогает:
- ⚡ в свойствах реквизита метаданных включить индексирование. Вариант «Индексировать с дополнительным упорядочиванием» нужен как раз для быстрой сортировки по тексту;
- ⚡ сортировать по меньшему числу полей. Каждое новое поле в
УПОРЯДОЧИТЬ ПО— дополнительная работа для СУБД; - ⚡ ограничивать выборку: отборами и оператором
ПЕРВЫЕ N, если нужны только первые строки; - ⚡ не упорядочивать то, что не будут читать. В промежуточных запросах порядок часто бесполезен.
Индексы добавляет разработчик в конфигураторе, и обновление структуры базы занимает время. Делайте это вне рабочих часов и в копии базы.
УПОРЯДОЧИТЬ ПО Поле ВОЗР, для таблицы значений — Сортировать("Поле").Сортировать.Если порядок не тот, который нужен
Типичные причины, если после всех действий строки стоят не так:
- 🔎 в наименовании есть ведущий пробел или невидимый символ;
- 🔎 колонка хранит число строкой, и «100» идёт перед «20»;
- 🔎 в запросе сортируется ссылка, а не её наименование;
- 🔎 в иерархическом справочнике вы ждёте плоский список, а платформа показывает группы сверху;
- 🔎 в отчёте остались пользовательские настройки, которые перекрывают сортировку, заданную в варианте отчёта.
Последний случай решается просто: сбросьте настройки варианта или создайте новый вариант отчёта и сохраните его под своим именем.
Частые вопросы
Как отсортировать список в 1С по алфавиту от Я до А?
Почему сортировка сбрасывается после закрытия списка?
Как отсортировать массив в 1С?
ЗагрузитьЗначения, вызовите СортироватьПоЗначению и выгрузите обратно методом ВыгрузитьЗначения.В чём разница между ВОЗР и УБЫВ в запросе?
ВОЗР упорядочивает по возрастанию, для текста это от А до Я. УБЫВ — по убыванию, от Я до А. Без указания направления подставляется возрастание.Почему «10» стоит выше «2»?
Можно ли отсортировать по двум колонкам сразу?
УПОРЯДОЧИТЬ ПО. В таблице значений — укажите колонки через запятую в Сортировать.