Почему в списке заказов 1С:УТ не отображается процент оплаты и как это исправить?

Программист 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе работы с конфигурацией «1С:Управление торговлей» версии 11 (11.1, 11.2 или 11.3) пользователи часто сталкиваются с ситуацией, когда после массового перепроведения документов или исправления отрицательных остатков в списке заказов клиентов перестает отображаться процент оплаты. Вместо ожидаемых цифр в колонке стоит прочерк или ноль, хотя фактические оплаты от клиентов зафиксированы в системе. Рассмотрим подробно, почему это происходит и как восстановить корректное отображение данных. В качестве готовой альтернативы для наглядного контроля взаиморасчетов можно применить расширение для отображения индикаторов оплаты в списках документов.

Разберем логику работы динамического списка

Для начала проанализируем, как система вычисляет процент оплаты в форме списка. В большинстве версий УТ 11 для этого используется запрос в динамическом списке. Процент не хранится в самом документе как статичное число, а рассчитывается «на лету» на основании данных регистров и реквизитов заказа. Посмотрим на пример типичного запроса, который отвечает за формирование этой колонки:


|// ПРОЦЕНТ ОПЛАТЫ ///////////////////////////////////////////////////////////
|ВЫБОР
|    КОГДА
|        ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
|        ДокументЗаказКлиента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) И
|        ДокументЗаказКлиента.Проведен И
|        ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
|        ДокументЗаказКлиента.СуммаДокумента > 0
|    ТОГДА
|        ВЫРАЗИТЬ ((ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0)) * 100 / ДокументЗаказКлиента.СуммаДокумента КАК ЧИСЛО(15, 0))
|    ИНАЧЕ
|        0
|КОНЕЦ КАК ПроцентОплаты

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

Выясним причину: почему данные могут исчезнуть?

Рассмотрим по шагам основные причины, которые приводят к «потере» процента оплаты после групповых перепроведений:

  1. Изменение порядка расчетов. Если в результате перепроведения или изменения настроек соглашений/договоров в документах изменилось значение реквизита ПорядокРасчетов (например, вместо «По заказам» установилось «По накладным» или «По договорам»), то условие в запросе перестает отрабатывать. В УТ 11 расчет процента оплаты в списке часто завязан именно на детализацию «По заказам».
  2. Отложенное проведение расчетов (Офлайн-режим). Это одна из самых частых причин в версиях 11.3+. Если в настройках системы включен режим отложенных расчетов, то после перепроведения документов движения по регистрам взаиморасчетов (которые используются в запросе) не формируются мгновенно. Система создает записи в специальном техническом регистре ЗаданияКРаспределениюРасчетов. Пока регламентное задание по распределению не отработает, данные в списке будут некорректными.
  3. Нарушение графиков оплаты. Процент оплаты рассчитывается исходя из ресурса КОплатеРасход. Этот ресурс заполняется только в том случае, если в заказе корректно заполнены Этапы оплаты (вкладка «Основное» — ссылка «Оплата»). Если при программном перепроведении или обработке эти данные были очищены или не актуализированы, регистр останется пустым.
  4. Борьба с отрицательными остатками. Когда мы массово перепроводим документы за большой период (например, два года), мы меняем хронологию движений. Оплата, которая раньше «цеплялась» за конкретный заказ, может перераспределиться на другие документы или зависнуть на авансе по договору в целом, если изменились настройки распределения.

Проанализируем ситуацию в консоли запросов

Чтобы понять, где именно кроется ошибка, рекомендуем воспользоваться Консолью запросов. Попробуем выполнить запрос из динамического списка вручную, подставив ссылку на конкретный «проблемный» заказ. Проверим следующие значения:

Если в консоли запрос выдает данные, а в списке — нет, значит, проблема в кэше метаданных или настройках самого динамического списка (например, наложены скрытые отборы или изменены свойства колонок в расширении).

Рассмотрим варианты решения проблемы

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

Способ 1: Актуализация взаиморасчетов

Если проблема вызвана массовым перепроведением, в первую очередь необходимо запустить процедуры распределения расчетов. Для этого перейдем в раздел «Закрытие месяца» или воспользуемся обработкой «Исправление графиков оплаты и расчетов с клиентами» (в разных версиях путь может отличаться: обычно это «НСИ и администрирование» — «Обслуживание» — «Корректировка данных»). Выполним распределение всех накопленных заданий. Для корректной привязки платежей к объектам расчетов также можно использовать обработку для автоматической разноски платежей.

Способ 2: Проверка этапов оплаты в документах

Убедимся, что в заказах заполнена табличная часть с графиком платежей. Если вы перепроводили заказы программно (через ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение)), проверьте, не очищаются ли этапы оплаты при записи. Для массового восстановления можно воспользоваться типовой обработкой «Групповое изменение реквизитов», если нужно заполнить какой-то типовой график, но лучше всего перепровести документы через стандартный интерфейс или обработку проведения, которая учитывает логику заполнения графиков.

Способ 3: Сравнение и объединение (метод для разработчиков)

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

  1. Выполните сравнение текущей конфигурации с конфигурацией из бэкапа.
  2. Обратите внимание на форму списка заказов клиентов и свойства динамического списка Список.
  3. Если обнаружены расхождения в тексте запроса или свойствах полей, верните настройки из старой версии.
  4. После обновления конфигурации БД обязательно выполните перепроведение документов за период, чтобы система пересчитала итоги в регистрах.

Важные моменты при работе с регистрами

Помните, что в УТ 11 существует два ключевых регистра для взаиморасчетов: РасчетыСКлиентами (старая архитектура) и РасчетыСКлиентамиПоДокументам (новая архитектура). Если вы обновили версию программы (например, с 11.1 на 11.3), проверьте, какой режим взаиморасчетов установлен в настройках «НСИ и администрирование» — «Взаиморасчеты». При переходе на новую архитектуру старые запросы в динамических списках, ориентированные на РасчетыСКлиентами.Остатки, могут перестать видеть актуальную информацию, если документы не были корректно конвертированы.

Подводя итог, можно сказать, что исчезновение процента оплаты — это чаще всего следствие несоответствия данных в регистрах условиям запроса в форме списка. Внимательный анализ реквизита ПорядокРасчетов и актуализация движений через регламентные задания в 90% случаев решают данную проблему.

← На главную