При работе с аналитическими отчетами в 1С:ERP, особенно с отчетом «Движение денежных средств» (ДДС), пользователи часто сталкиваются с неприятной проблемой: при попытке отсортировать данные по статьям ДДС строки упорядочиваются хаотично. Сортировка не подчиняется ни алфавитному порядку, ни логике финансовых показателей. Выясним, почему это происходит, как устроена работа Системы компоновки данных (СКД) в ERP и какими способами можно вернуть правильное алфавитное упорядочивание, что особенно актуально после миграции из подбора решений для переноса данных в 1С:ERP.
Когда мы настраиваем сортировку в отчете 1С и просто указываем поле СтатьяДвиженияДенежныхСредств, платформа пытается отсортировать записи по значению самого поля. Поскольку это поле имеет ссылочный тип данных (ссылается на справочник Статьи движения денежных средств), СУБД производит сортировку по внутреннему уникальному идентификатору ссылки (UUID/GUID). На уровне базы данных это выглядит как случайный набор символов, поэтому визуально порядок строк в готовом отчете кажется абсолютно хаотичным.
Для корректного вывода данных нам необходимо сортировать статьи не по самой ссылке, а по текстовому представлению — реквизиту Наименование. Рассмотрим подробнее, как решить эту задачу и с какими трудностями можно столкнуться при настройке схемы компоновки данных.
Самый простой и очевидный путь — указать системе, что сортировать нужно именно по наименованию статьи. Разберем по шагам, как это сделать в пользовательском режиме или режиме конфигурирования:
СтатьяДвиженияДенежныхСредств в левом списке доступных полей.+), раскроем его, найдем дочернее поле Наименование и перетащим его в правое окно сортировки.Однако на практике пользователи часто сталкиваются с тем, что плюсик возле статьи ДДС отсутствует, и раскрыть поле, чтобы добраться до наименования, невозможно. Проанализируем, почему это происходит.
Отсутствие возможности раскрыть ссылочное поле в СКД обычно связано с двумя причинами на уровне конфигуратора:
Причина А. Отключено автозаполнение в наборе данных
Если в схеме компоновки данных (вкладка «Наборы данных») для вашего запроса снят флаг «Автозаполнение», СКД не создает автоматически дочерние поля для ссылочных типов. В таком случае платформа «видит» только те поля, которые явно описаны разработчиком.
Чтобы исправить это, вернемся в конфигуратор:
СтатьяДвиженияДенежныхСредств.Наименование, чтобы сделать это поле доступным пользователю для выбора.Причина Б. Ограничения доступности полей
Разработчик отчета мог намеренно ограничить использование реквизитов справочника. Проверим настройки ограничений:
Чтобы избавить пользователей от необходимости вручную «раскрывать плюсики» и искать реквизит Наименование, разработчик может переопределить стандартное поведение сортировки для ссылочного поля. Сделаем так, чтобы при выборе поля-ссылки СтатьяДвиженияДенежныхСредств СКД «под капотом» автоматически сортировала данные по алфавиту.
Разберем, как настроить это свойство:
СтатьяДвиженияДенежныхСредств.Наименование Возр (или просто Наименование).После этого изменения, как только система или пользователь добавит сортировку по полю СтатьяДвиженияДенежныхСредств, СКД сама обратится к текстовому наименованию справочника и выстроит строки по алфавиту.
В процессе обсуждения часто возникает вопрос об использовании механизма автоупорядочивания. Выясним разницу между его настройкой в запросе и в СКД.
Автоупорядочивание в запросе
Использование конструкции АВТОУПОРЯДОЧИВАНИЕ в тексте SQL-запроса внутри СКД часто игнорируется или работает не так, как ожидается. Это связано с тем, что СКД сама генерирует итоговый текст запроса к СУБД на основе переданных пользователем настроек компоновщика.
Автоупорядочивание в настройках СКД
Правильный способ — использовать предопределенный элемент порядка СКД. По умолчанию в настройках структуры отчета (на вкладке «Порядок») всегда присутствует элемент «Авто» (объект АвтоЭлементПорядкаКомпоновкиДанных).
Этот элемент указывает системе, что группировки нужно сортировать по их ключевым полям. Для справочников это означает сортировку по их «Основному представлению» (которое у справочника статей ДДС по умолчанию настроено по наименованию). Если авто-сортировка сбилась, скорее всего, этот элемент был случайно удален. Чтобы его вернуть, нажмите правой кнопкой мыши в окне настройки порядка группировки и выберите команду «Добавить автополе».
Даже при правильной настройке сортировки по наименованию порядок статей в готовом отчете ДДС может показаться хаотичным. Это связано с тем, что справочник Статьи движения денежных средств является иерархическим (содержит группы/папки и элементы). Для контроля корректности итоговых сумм после настройки отчета можно автоматически сверить бухгалтерские проводки между базами.
Посмотрим, как СКД обрабатывает иерархию при сортировке:
Если в вашей системе структура справочника ДДС нарушена (например, часть элементов лежит непосредственно в корне справочника вперемешку с группами, или создана слишком глубокая и разнородная вложенность), визуальный порядок строк в отчете покажется пользователю «сломанным». Для решения этой проблемы необходимо навести порядок в самом справочнике ДДС, переместив все элементы в соответствующие логические группы. При большом объеме справочника такую рутинную операцию можно поручить роботу на платформе для роботизации действий пользователя One RPA.
В сообщении №5 темы приведен пример шаблона запроса, который используется в ERP для формирования оборотной аналитики. Обратите внимание на важную деталь: этот запрос является динамическим шаблоном.
При формировании отчета ДДС программный код общего модуля ERP (например, ИсполняемыйЗапросОборотнаяАналитика) перехватывает этот текст и перестраивает его на лету, добавляя необходимые временные таблицы, соединения и условия. Если вы попытаетесь жестко прописать конструкцию упорядочивания прямо в текст запроса в конфигураторе:
// Пример жесткой сортировки, которая может привести к ошибкам выполнения в ERP
УПОРЯДОЧИТЬ ПО
СтатьяДвиженияДенежныхСредств.Наименование
Программные механизмы ERP при генерации финального SQL-пакета могут некорректно обработать или вырезать эту секцию, что приведет к ошибке выполнения отчета. Поэтому все настройки сортировки в отчетах ERP крайне важно выполнять исключительно через механизмы СКД (вкладку «Порядок» или свойства полей набора данных), избегая прямого вмешательства в текст исходного SQL-запроса.