УТ 11.4: Новая архитектура взаиморасчетов - отчеты и обработки
Учетные задачи - Взаиморасчеты
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Описывая ситуацию на примере Управление торговлей, редакция 11 (11.4.6.166).
Началось все с того, что в какой то момент данные отчета Ведомость расчетов с клиентами перестали совпадать с данными сверок взаиморасчетов. Попытку идти привычным путем - искать, какой же документ вызвал расхождение, ожидало фиаско. Если посмотреть на код формирования отчета, то можно увидеть, что данные он получает из регистра "РасчетыСКлиентамиПоСрокам". А регистратор у этого регистра всего один - документ "Регистратор расчетов", у которого всего несколько реквизитов: ОбъектРасчетов, АналитикаУчетаПоПартнерам, Валюта и ТипРасчетов. ТипРасчетов в моем случае - это "Расчеты с клиентом". АналитикаУчетаПоПартнерам включает в себя комбинацию "Организация"+"Партнер". Объект расчетов - в моем случае - Заказ клиента. Что происходит при проведении любого документа, из группы документов, сформированных по этому критерию ? А происходит полный пересчет всех данных по этой группе, и полученный результат записывается в регистр "Расчеты с киентами по срокам" при помощи регистратора "Регистратор расчетов". Вследствии чего данные в этом регистре всегда актуальны, независимо от последовательности проведения документов этой группы. Причем, при простом перепроведении документов учета - будь то реализация или документ оплаты, пересчета происходить не будет - для оптимизации сделано так, что пересчет производится только при выявлении каких либо изменений в документе учета. Следовательно, при переборе путей исправления расхождения отчета и акта сверки - простое перепроведение документов помочь не может. Да и неплохо бы понять, сколько вообще в базе таких ошибок. Сваял для этого отчет по выявлению таковых ошибок. Отчет прилагается в архиве, запрос СКД привожу здесь:
Отчет показал, что некоторое количество ошибок в базе накопилось. Сразу оговорюсь, что вины типовой конфигурации в моем случае не было, причиной послужила некорректная доработка, а именно, документ, который записывал движения непосредственно в регистр "РасчетыСКлиентамиПоСрокам", что недопустимо. Ниже я приведу шаблон модуля документа, которому необходимо следовать при разработке.
Что ж, список ошибок получен. Нужно их исправлять. Самый простой способ - это переключить в настройках способ ведения взаиморасчетов - вначале на офлайн, потом вернуть обратно онлайн.

Но тут я не советовал бы торопиться это делать - довольно длительная операция - как в ту, так и в обратную сторону. Поэтому я стал исправлять точечно. Тут есть муторный путь - отменять проведение какого либо документа из группы по объекту расчетов (Заказу клиента) и проводить его. Ошибка при этом пропадает. Решил несколько оптимизировать - написал такой код для исправления выбранного заказа клиента:
Код работает - ошибки исправляет. Чтож, финита! остается все лишь совместить первый отчет со списком ошибок и запустить этот кусок кода в цикле, и база исправлена.
Каким же образом действовать, если требуется добавить в конфигурацию документ, который будет делать движения по регистру "РасчетыСКлиентами" и работать корректно при использовании новой архитектуры взаиморасчетов ? Пишу шаблон модуля такого документа (это опять таки - для УТ 11.4.6.166. Для других релизов возможны отличия)
Все написанное не претендует на полное описание данного функционала, которое можно посмотреть в мануале. Да и здесь, на сайте, я видел довольно грамотную статью - я так точно писать не умею. Пишу скорее о том, как столкнулся с ним, и как действовал.
Что в архиве:
ВыявлениеРасхожденийМеждуРегистрами.erf
ПерепроведениеРегистратораРасчетов.epf
В принципе, практически весь код файлов из архива приведен в статье. В качестве бонуса прилагаю отчет по взаиморасчетам, который строится по регистру "РасчетыСКлиентами" - просто РасчетыСКлиентами.ОстаткиИОбороты; группировки Партнер / Заказ клиента / Регистратор
Вступайте в нашу телеграмм-группу Инфостарт