Работа с большим списком контрагентов в 1С:Предприятие часто превращается в головную боль: поиск нужного партнёра занимает минуты, а отчёты формируются хаотично. Сортировка по контрагенту — базовая функция, которая должна экономить время, но её настройка не всегда интуитивно понятна. В зависимости от версии платформы (1С 8.3, 8.2 или даже 7.7) и конфигурации (Бухгалтерия, Управление торговлей, ERP) способы организации данных различаются кардинально.
Эта статья охватывает все актуальные методы — от ручной сортировки в интерфейсе до автоматизации через запросы и внешние обработки. Мы разберём, как отсортировать контрагентов по алфавиту, юридическому адресу, ИНН или даже пользовательским реквизитам (например, по дате последнего заказа). Особое внимание уделим типичным ошибкам, из-за которых сортировка «ломается»: дубликаты в справочнике, неверные настройки прав доступа или конфликты с другими фильтрами.
Если вы бухгалтер, который хочет быстро найти контрагента для проводки, или программист, которому нужно интегрировать сортировку в отчёт — здесь найдётся решение под вашу задачу. В 1С 8.3.22+ появилась возможность гибкой сортировки прямо в динамических списках без изменения конфигурации, и мы покажем, как ею пользоваться.
1. Базовая сортировка в интерфейсе 1С: 3 способа без программирования
Начнём с простейших методов, которые доступны любому пользователю без прав администратора. Эти способы работают во всех типичных конфигурациях (Бухгалтерия 3.0, УТ 11, КА 2.4) и не требуют изменения кода.
Самый очевидный вариант — сортировка прямо в списке справочника Контрагенты. Откройте его через меню Справочники → Контрагенты (или через панель быстрого доступа). В верхней части таблицы вы увидите заголовки колонок — кликните по любому из них (например, Наименование или ИНН), чтобы отсортировать данные по возрастанию. Повторный клик поменяет порядок на убывание. Этот метод работает и в тонком клиенте, и в веб-клиенте.
- 📌 По алфавиту: кликните по колонке
Наименование— контрагенты отсортируются от «А» до «Я». Удобно для поиска конкретной компании. - 📊 По ИНН/КПП: сортировка по этим реквизитам поможет быстро найти контрагента по налоговым данным, например, для проверки дубликатов.
- 🏢 По юридическому адресу: полезно для логистики или массовой рассылки писем по регионам.
Если стандартных колонок недостаточно, добавьте дополнительные через меню Ещё → Настроить список. Здесь можно включить отображение таких полей, как Дата создания, Ответственный менеджер или пользовательские реквизиты (например, Категория контрагента). После добавления колонки её тоже можно использовать для сортировки.
Второй способ — фиксированная сортировка через настройки списка. Откройте тот же справочник Контрагенты, затем перейдите в Ещё → Сохранить настройки. В открывшемся окне выберите вкладку Сортировка и добавьте нужные поля (например, сначала по Городу, затем по Наименованию). Эти настройки сохранятся для вашего пользователя и будут применяться автоматически при следующем открытии справочника.
⚠️ Внимание: Фиксированная сортировка может конфликтовать с отборами (фильтрами). Если вы применили отбор по группе контрагентов (например, только «Поставщики»), а затем сохранили сортировку, при сбросе отбора порядок может сбиться. Всегда проверяйте результат после изменений.
Третий метод — группировка с сортировкой. В том же окне настроек (Ещё → Настроить список) перейдите на вкладку Группировка. Здесь можно сгруппировать контрагентов, например, по Виду контрагента (юридическое/физическое лицо), а внутри групп отсортировать по алфавиту. Это удобно для анализа структуры контрагентов или подготовки данных для отчётности.
2. Продвинутая сортировка: фильтры и отборы
Когда базовых инструментов недостаточно, на помощь приходят отборы и фильтры. Они позволяют не только сортировать данные, но и предварительно отсеивать ненужные записи. Например, вы можете отобразить только активных контрагентов, отсортировав их по дате последнего документа.
Чтобы применить отбор, откройте справочник Контрагенты и нажмите Отбор и сортировка (или Ещё → Отбор в некоторых конфигурациях). В открывшемся окне:
- Добавьте условие, например,
Пометка на удаление = Ложь(чтобы исключить помеченные на удаление записи). - Добавьте второе условие:
Дата последнего документа > [введите дату]. - На вкладке
Сортировкаукажите поле для упорядочивания, например,Дата последнего документапо убыванию.
Такой подход полезен для работы с «горячими» контрагентами — теми, с кем недавно были операции. Например, бухгалтер может быстро найти всех поставщиков, с которыми работали в текущем квартале, и отсортировать их по сумме оборотов.
Проверьте, что справочник не заблокирован другими пользователями
Сохраните текущие настройки списка (на случай сбоя)
Убедитесь, что у вас есть права на просмотр всех реквизитов контрагентов
Отключите групповую обработку, если она мешает отображению-->
Для более сложных сценариев используйте сохранённые настройки отборов. Например, можно создать отдельные настройки для:
- 🏭 Поставщиков с сортировкой по сумме закупок;
- 🛒 Покупателей с сортировкой по региону;
- 📉 Неактивных контрагентов (без документов за последний год).
Сохранённые настройки позволяют быстро переключаться между разными представлениями данных. Это особенно удобно для менеджеров, которые работают с разными сегментами контрагентов.
⚠️ Внимание: В 1С:ERP и УТ 11 некоторые реквизиты (например, Сумма оборотов) не доступны для сортировки напрямую. В этом случае потребуется использовать запросы или внешние отчёты, о которых пойдёт речь далее.
3. Сортировка в отчётах и печати документов
Часто сортировка нужна не в справочнике, а в отчётах — например, при формировании Акта сверки, Счёта-фактуры или Реестра контрагентов. В большинстве стандартных отчётов 1С сортировка настраивается через параметры формирования.
Рассмотрим на примере отчёта Анализ субконто (для бухгалтеров). При его формировании:
- В поле
СубконтовыберитеКонтрагенты. - Перейдите на вкладку
Дополнительно. - В разделе
Порядокукажите поле для сортировки, например,НаименованиеилиИНН. - Выберите направление:
По возрастаниюилиПо убыванию.
Аналогичным образом настраивается сортировка в отчётах Оборотно-сальдовая ведомость по контрагентам или Карточка счёта. Если нужного поля нет в списке доступных для сортировки, его можно добавить через настройку структуры отчёта (кнопка Настроить).
| Тип отчёта | Где настраивается сортировка | Доступные поля для сортировки |
|---|---|---|
| Aкт сверки | В параметрах формирования, вкладка «Порядок» | Наименование, ИНН, Дата документа, Сумма |
| Оборотно-сальдовая ведомость | Кнопка «Настроить» → «Порядок» | Субконто (Контрагент), Сальдо, Оборот |
| Реестр документов | В настройках отбора и сортировки | Дата, Номер, Контрагент, Сумма |
| Анализ субконто | Вкладка «Дополнительно» → «Порядок» | Наименование, ИНН, КПП, Вид контрагента |
Если вам нужно распечатать документ (например, Счёт на оплату) с сортировкой контрагентов по определённому признаку, используйте групповую обработку. Например, в 1С:Бухгалтерии 3.0 можно:
- Выделить нужных контрагентов в справочнике (с предварительной сортировкой).
- Нажать
Ещё → Печать → Счета на оплату. - В параметрах печати указать порядок следования документов.
Если в отчёте нет нужного поля для сортировки, создайте внешний отчёт через Конфигуратор или используйте СКД (Система компоновки данных). Это позволит добавить любые реквизиты, включая пользовательские.
4. Программная сортировка: запросы и код 1С
Когда стандартных инструментов недостаточно, на помощь приходит встроенный язык 1С. С его помощью можно реализовать любую логику сортировки, включая многоуровневую или по пользовательским алгоритмам. Рассмотрим основные подходы.
Самый универсальный метод — использование запросов. Например, следующий запрос отсортирует контрагентов по алфавиту, а затем по дате создания:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент,
Контрагенты.Наименование КАК Наименование,
Контрагенты.ДатаСоздания КАК ДатаСоздания
ИЗ
Справочник.Контрагенты КАК Контрагенты
УПОРЯДОЧИТЬ ПО
Наименование ВОЗР,
ДатаСоздания УБЫВ
Этот запрос можно выполнить в Конфигураторе (меню Файл → Новый → Запрос) или встроить в внешнюю обработку. Для вывода результата используйте конструкцию:
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование + " (" + Формат(Выборка.ДатаСоздания, "ДФ=dd.MM.yyyy") + ")");
КонецЦикла;
Для сортировки по пользовательским реквизитам (например, по Категории контрагента) модифицируйте запрос:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент,
Контрагенты.Наименование КАК Наименование,
Контрагенты.КатегорияКонтрагента КАК Категория
ИЗ
Справочник.Контрагенты КАК Контрагенты
УПОРЯДОЧИТЬ ПО
Категория,
Наименование
Если вам нужна сортировка в динамическом списке (например, в форме документа), используйте свойство Порядок у коллекции данных. Пример для управляемой формы:
&НаКлиенте
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокКонтрагентов = ДокументОбъект.СписокКонтрагентов;
СписокКонтрагентов.Порядок.Очистить();
СписокКонтрагентов.Порядок.Добавить("Наименование", НаправлениеСортировки.Возр);
КонецПроцедуры
Как отладить запрос, если сортировка не работает?
Если запрос возвращает данные в неожиданном порядке, проверьте:
1. Типы данных: Убедитесь, что сортируемое поле имеет корректный тип (например, дата сравнивается как дата, а не как строка).
2. NULL-значения: Поля с пустыми значениями могут выводиться первыми или последними — добавьте условие ГДЕ НЕ ЗначениеЗаполнено(Поле) = Ложь.
3. Индексы: В больших базах данных сортировка без индексов работает медленно. Проверьте наличие индексов в конфигураторе (Администрирование → Поддержка и обслуживание → Тестирование и исправление → Просмотр индексов).
4. Локализацию: В некоторых конфигурациях сортировка зависит от языковых настроек (например, кириллица vs латиница).
Для сортировки в отчётах на СКД (Система компоновки данных) используйте настройки компоновщика. В схеме компоновки данных найдите раздел Порядок и добавьте нужные поля. Пример для отчёта по контрагентам:
Порядок.Очистить();
ЭлементПорядка = Порядок.Добавить("Контрагент");
ЭлементПорядка.Направление = НаправлениеСортировки.Возр;
⚠️ Внимание: При программной сортировке в 1С 8.3 учитывайте контекст выполнения. Код, работающий на сервере, не может напрямую взаимодействовать с элементами формы клиента. Для динамической сортировки в интерфейсе используйте клиент-серверные процедуры с директивой &НаКлиенте.
5. Сортировка с учётом иерархии и групп
Многие компании используют группы контрагентов для классификации (например, «Поставщики», «Покупатели», «Банки»). В этом случае сортировка усложняется, так как нужно учитывать иерархию справочника. Рассмотрим, как правильно сортировать контрагентов с учётом их принадлежности к группам.
В интерфейсе 1С по умолчанию группы отображаются отдельно от элементов справочника, и сортировка внутри групп может отличаться от общей. Чтобы отсортировать всех контрагентов единообразно (включая группы), используйте запрос с рекурсией:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Наименование КАК Наименование,
Контрагенты.ЭтотОбъект.ЭтоГруппа КАК ЭтоГруппа
ИЗ
Справочник.Контрагенты КАК Контрагенты
УПОРЯДОЧИТЬ ПО
Наименование
Если нужно сортировать сначала группы, затем элементы, модифицируйте запрос:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Наименование КАК Наименование,
Контрагенты.ЭтотОбъект.ЭтоГруппа КАК ЭтоГруппа
ИЗ
Справочник.Контрагенты КАК Контрагенты
УПОРЯДОЧИТЬ ПО
ЭтоГруппа УБЫВ, // Сначала группы (истина = 1), затем элементы (ложь = 0)
Наименование
Для визуального разделения групп и элементов в отчётах используйте условное оформление. Например, в СКД можно настроить выделение групп жирным шрифтом или фоновым цветом.
Если иерархия контрагентов многоуровневая (группы внутри групп), для сортировки с учётом полного пути используйте функцию ПолноеНаименование():
ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.ПолноеНаименование() КАК ПолноеНаименование
ИЗ
Справочник.Контрагенты КАК Контрагенты
УПОРЯДОЧИТЬ ПО
ПолноеНаименование
При сортировке иерархических справочников всегда учитывайте производительность. Рекурсивные запросы к большим справочникам (10 000+ записей) могут тормозить систему. В этом случае лучше использовать помеченные группы или дополнительные реквизиты для классификации.
Для программной обработки иерархии (например, обход всех контрагентов в группе с сортировкой) используйте метод ПолучитьГруппу():
Группа = Справочники.Контрагенты.НайтиПоНаименованию("Поставщики");
Если НЕ Группа.Пустая() Тогда
Выборка = Группа.ПолучитьГруппу();
Пока Выборка.Следующий() Цикл
// Обработка элемента с сортировкой
КонецЦикла;
КонецЕсли;
6. Автоматизация сортировки: внешние обработки и расширения
Если вам регулярно требуется нестандартная сортировка (например, по сумме оборотов за период или по географическому признаку), имеет смысл создать внешнюю обработку или расширение конфигурации. Это позволит применять настройки одним кликом, не вводя код каждый раз.
Рассмотрим пример создания внешней обработки для сортировки контрагентов по сумме продаж за текущий месяц:
- В Конфигураторе создайте новую внешнюю обработку (
Файл → Новый → Внешняя обработка). - Добавьте реквизит
Период(типДата) для указания периода анализа. - В модуле обработки напишите код для получения данных и сортировки:
Процедура Выполнить(Команда)Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент,
| СУММА(Документы.СуммаДокумента) КАК СуммаПродаж
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Документы
| ПО Контрагенты.Ссылка = Документы.Контрагент
|ГДЕ
| Документы.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|СГРУППИРОВАТЬ ПО
| Контрагенты.Ссылка
|УПОРЯДОЧИТЬ ПО
| СуммаПродаж УБЫВ";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Период));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Период));
Результат = Запрос.Выполнить().Выгрузить();
// Вывод результата в таблицу обработки
КонецПроцедуры
- Добавьте таблицу для вывода результатов и кнопку
Выполнить. - Сохраните обработку и подключите её в пользовательском режиме через
Файл → Открыть.
Такую обработку можно доработать, добавив:
- 📅 Выбор периода (месяц, квартал, год);
- 📈 Графическое представление (диаграмма топ-10 контрагентов);
- 📄 Экспорт в Excel с сохранением сортировки;
- 🔍 Фильтр по типу контрагента (только покупатели или поставщики).
Для автоматизации рутинных задач (например, ежемесячной рассылки актов сверки отсортированным по обороту контрагентам) создайте регламентное задание. В 1С 8.3 это делается через Администрирование → Поддержка и обслуживание → Регламентные задания. В обработчике задания пропишите логику сортировки и отправки документов.
Если вы не хотите изменять конфигурацию, используйте расширения. Они позволяют добавлять новые функции (включая нестандартную сортировку) без снятия поддержки. Например, можно создать расширение, которое добавляет кнопку «Сортировка по обороту» в справочник Контрагенты.
⚠️ Внимание: При использовании внешних обработок и расширений учитывайте политику безопасности вашей компании. Некоторые организации запрещают подключение внешних файлов из-за риска внедрения вредоносного кода. Перед использованием согласуйте изменения с администратором 1С.
7. Типичные ошибки и их решение
Даже опытные пользователи 1С сталкиваются с проблемами при сортировке контрагентов. Рассмотрим наиболее распространённые ошибки и способы их устранения.
1. Сортировка игнорирует регистр или символы
Если контрагенты с названиями «АО Ромашка» и «ао ромашка» отображаются отдельно, проблема в настройках сравнения строк. В запросе явно укажите параметр сравнения:
УПОРЯДОЧИТЬ ПО ВЫРАЖЕНИЕ НСТР("ру", Наименование) ВОЗР
Функция НСТР() нормализует строку согласно правилам указанного языка ("ру" для русского).
2. Медленная сортировка в больших базах
Если справочник Контрагенты содержит десятки тысяч записей, сортировка может занимать несколько секунд или даже минут. Решения:
- 🛠️ Добавьте индексы на поля, по которым часто сортируете (через Конфигуратор).
- 🗃️ Архивируйте неактивных контрагентов в отдельную группу или справочник.
- ⚡ Используйте серверный вызов для сортировки (в управляемых формах).
3. Сортировка сбивается после обновления конфигурации
Это типичная проблема при переходе на новую версию 1С. После обновления:
- Проверьте, не сбросились ли сохранённые настройки списков.
- Обновите внешние обработки и расширения под новую версию платформы.
- Если используете СКД, проверьте схему компоновки данных на совместимость.
4. Нельзя отсортировать по пользовательскому реквизиту
Если вы добавили в справочник Контрагенты новый реквизит (например, Рейтинг), но его нет в списке доступных для сортировки:
- Убедитесь, что реквизит добавлен в форму списка справочника.
- Проверьте, что у пользователя есть права на чтение этого реквизита.
- Если реквизит вычисляемый, используйте запрос с явным указанием поля.
5. Контрагенты дублируются после сортировки
Дубликаты в справочнике Контрагенты — распространённая проблема. Чтобы их найти и устранить:
- Выполните запрос на поиск дубликатов по ИНН или наименованию:
ВЫБРАТЬИНН,
КОЛИЧЕСТВО(*) КАК Количество
ИЗ
Справочник.Контрагенты
СГРУППИРОВАТЬ ПО
ИНН
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
- Используйте обработку
Поиск и замена дубликатов(доступна в некоторых конфигурациях). - Настройте контроль уникальности по ИНН в настройках справочника.
Перед массовым удалением дубликатов обязательно сделайте резервную копию базы. Используйте обработку ВыгрузкаЗначенийВФайл.epf для сохранения справочника перед изменениями.
8. Сортировка в специфических конфигурациях
Разные конфигурации 1С имеют свои особенности работы со справочником Контрагенты. Рассмотрим нюансы для самых популярных решений.
1С:Бухгалтерия 3.0
В этой конфигурации сортировка контрагентов чаще всего требуется для:
- 📑 Актов сверки — настройте порядок в параметрах формирования;
- 📊 Оборотно-сальдовой ведомости — используйте настройку СКД;
- 💰 <