В процессе работы с конфигурацией «1С:Управление торговлей» версии 11 (11.1, 11.2 или 11.3) пользователи часто сталкиваются с ситуацией, когда после массового перепроведения документов или исправления отрицательных остатков в списке заказов клиентов перестает отображаться процент оплаты. Вместо ожидаемых цифр в колонке стоит прочерк или ноль, хотя фактические оплаты от клиентов зафиксированы в системе. Рассмотрим подробно, почему это происходит и как восстановить корректное отображение данных. В качестве готовой альтернативы для наглядного контроля взаиморасчетов можно применить расширение для отображения индикаторов оплаты в списках документов.
Для начала проанализируем, как система вычисляет процент оплаты в форме списка. В большинстве версий УТ 11 для этого используется запрос в динамическом списке. Процент не хранится в самом документе как статичное число, а рассчитывается «на лету» на основании данных регистров и реквизитов заказа. Посмотрим на пример типичного запроса, который отвечает за формирование этой колонки:
|// ПРОЦЕНТ ОПЛАТЫ ///////////////////////////////////////////////////////////
|ВЫБОР
| КОГДА
| ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным) И
| ДокументЗаказКлиента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) И
| ДокументЗаказКлиента.Проведен И
| ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И
| ДокументЗаказКлиента.СуммаДокумента > 0
| ТОГДА
| ВЫРАЗИТЬ ((ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеРасход, 0)) * 100 / ДокументЗаказКлиента.СуммаДокумента КАК ЧИСЛО(15, 0))
| ИНАЧЕ
| 0
|КОНЕЦ КАК ПроцентОплаты
Проанализируем этот код. Мы видим, что для появления процента в списке должен быть соблюден ряд жестких условий. Если хотя бы одно из них не выполняется, система вернет 0 или прочерк. Основными «камнями преткновения» здесь являются поле ПорядокРасчетов и данные из виртуальной таблицы остатков регистра РасчетыСКлиентами.
Рассмотрим по шагам основные причины, которые приводят к «потере» процента оплаты после групповых перепроведений:
ПорядокРасчетов (например, вместо «По заказам» установилось «По накладным» или «По договорам»), то условие в запросе перестает отрабатывать. В УТ 11 расчет процента оплаты в списке часто завязан именно на детализацию «По заказам».ЗаданияКРаспределениюРасчетов. Пока регламентное задание по распределению не отработает, данные в списке будут некорректными.КОплатеРасход. Этот ресурс заполняется только в том случае, если в заказе корректно заполнены Этапы оплаты (вкладка «Основное» — ссылка «Оплата»). Если при программном перепроведении или обработке эти данные были очищены или не актуализированы, регистр останется пустым.Чтобы понять, где именно кроется ошибка, рекомендуем воспользоваться Консолью запросов. Попробуем выполнить запрос из динамического списка вручную, подставив ссылку на конкретный «проблемный» заказ. Проверим следующие значения:
ДокументЗаказКлиента.ПорядокРасчетов.РасчетыСКлиентами.Остатки с фильтром по нашему заказу.КОплате.Если в консоли запрос выдает данные, а в списке — нет, значит, проблема в кэше метаданных или настройках самого динамического списка (например, наложены скрытые отборы или изменены свойства колонок в расширении).
В зависимости от того, что показал анализ, выберем подходящий способ исправления:
Если проблема вызвана массовым перепроведением, в первую очередь необходимо запустить процедуры распределения расчетов. Для этого перейдем в раздел «Закрытие месяца» или воспользуемся обработкой «Исправление графиков оплаты и расчетов с клиентами» (в разных версиях путь может отличаться: обычно это «НСИ и администрирование» — «Обслуживание» — «Корректировка данных»). Выполним распределение всех накопленных заданий. Для корректной привязки платежей к объектам расчетов также можно использовать обработку для автоматической разноски платежей.
Убедимся, что в заказах заполнена табличная часть с графиком платежей. Если вы перепроводили заказы программно (через ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение)), проверьте, не очищаются ли этапы оплаты при записи. Для массового восстановления можно воспользоваться типовой обработкой «Групповое изменение реквизитов», если нужно заполнить какой-то типовой график, но лучше всего перепровести документы через стандартный интерфейс или обработку проведения, которая учитывает логику заполнения графиков.
Как показывает практика, иногда проблема возникает из-за случайного изменения свойств метаданных самого динамического списка или форм. Если у вас есть резервная копия базы, где процент отображался корректно, выполните следующие действия:
Список.Помните, что в УТ 11 существует два ключевых регистра для взаиморасчетов: РасчетыСКлиентами (старая архитектура) и РасчетыСКлиентамиПоДокументам (новая архитектура). Если вы обновили версию программы (например, с 11.1 на 11.3), проверьте, какой режим взаиморасчетов установлен в настройках «НСИ и администрирование» — «Взаиморасчеты». При переходе на новую архитектуру старые запросы в динамических списках, ориентированные на РасчетыСКлиентами.Остатки, могут перестать видеть актуальную информацию, если документы не были корректно конвертированы.
Подводя итог, можно сказать, что исчезновение процента оплаты — это чаще всего следствие несоответствия данных в регистрах условиям запроса в форме списка. Внимательный анализ реквизита ПорядокРасчетов и актуализация движений через регламентные задания в 90% случаев решают данную проблему.