В современных версиях 1С:Управление торговлей 11 (начиная с 11.4 и более поздних, таких как 11.5) произошла серьезная смена парадигмы учета расчетов с контрагентами. Мы привыкли к модели, где после проведения документов требовалось запускать регламентное задание по распределению расчетов. Теперь же система перешла на так называемые онлайн-взаиморасчеты. В этой статье мы подробно разберем, что это значит для пользователей и разработчиков, какие регистры уходят в прошлое и как правильно работать с новой архитектурой.
Ранее в 1С:УТ 11 использовался «офлайн» режим. При такой схеме документы реализации или оплаты просто делали записи в регистры накопления, а конечное распределение авансов по накладным выполнялось фоновым заданием. Это часто приводило к тому, что в отчетах в течение дня пользователь видел неактуальную информацию: долг висел одновременно и как аванс, и как дебиторская задолженность.
Проанализируем, что изменилось с введением онлайн-режима. Теперь распределение происходит непосредственно в момент проведения документа. Система сама находит свободные остатки авансов или неоплаченные накладные и выполняет зачет по методу FIFO или по конкретным объектам расчетов. Это позволяет получать актуальные данные в отчетах мгновенно.
Важным вопросом для разработчиков (особенно тех, кто дорабатывал типовые механизмы) является изменение структуры данных. Разберем, какие регистры постепенно выводятся из эксплуатации:
РасчетыСКлиентамиПоДокументам — старый регистр, использовавшийся для офлайн-распределения.РасчетыСПоставщикамиПоДокументам — аналогичный регистр для закупок.Вместо них в актуальных версиях (УТ 11.5+) основная нагрузка ложится на новые регистры:
РасчетыСКлиентами — содержит общую информацию о состоянии расчетов.РасчетыСКлиентамиПоСрокам — ключевой регистр для детализации задолженности по датам возникновения и плановым датам погашения.ПлановыеОплатыКлиентов — отвечает за хранение графиков оплат, которые еще не наступили фактически.Важный момент для программистов: если у вас реализованы дописки, опирающиеся на регистры «По документам», при обновлении на релизы 11.5 и выше их необходимо переносить на новые регистры, так как старые перестают заполняться при включении новой функциональности.
Рассмотрим ситуацию, часто встречающуюся у пользователей: документ реализации проведен, по договору установлена отсрочка (например, 14 дней), но в отчетах сумма сразу попадает в колонку «Долг», и система может блокировать отгрузку из-за «наличия задолженности». Выясним причину такого поведения.
В новой модели взаиморасчетов система четко разделяет два понятия:
Если отчет Ведомость расчетов с клиентами показывает долг, это не всегда означает ошибку. Это констатация факта отгрузки. Однако, если система блокирует проведение новых документов, проверьте следующие настройки:
Реализация товаров и услуг, перейдите на вкладку Дополнительно и проверьте поле График оплаты. Если он не заполнен или заполнен как «Оплата после отгрузки (0 дней)», система посчитает долг просроченным сразу в день отгрузки.Посмотрим на пример того, как система теперь обрабатывает данные. Поскольку распределение идет «на лету», в модулях менеджеров расчетов активно используются временные таблицы. Разработчикам больше не нужно искать код в регламентных заданиях, теперь логика сосредоточена в общих модулях, отвечающих за проведение документов по регистрам расчетов.
Для анализа движений мы можем использовать запросы к регистру РасчетыСКлиентамиПоСрокам. Обратите внимание на измерение ДатаПлановогоПогашения. Именно по нему система определяет, является ли долг просроченным.
// Пример получения остатка просроченной задолженности
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(РасчетыСКлиентамиПоСрокамОстатки.ДолгОстаток) КАК Просрочено
|ИЗ
| РегистрНакопления.РасчетыСКлиентамиПоСрокам.Остатки(
| &ТекущаяДата,
| АналитикаУчетаПоПартнерам = &Аналитика
| И ДатаПлановогоПогашения < &ТекущаяДата) КАК РасчетыСКлиентамиПоСрокамОстатки";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Запрос.УстановитьПараметр("Аналитика", СсылкаНаАналитику);
Результат = Запрос.Выполнить().Выбрать();
Несмотря на сложность перестройки существующих систем, онлайн-взаиморасчеты дают ряд преимуществ, которые мы сейчас разберем:
Таким образом, будущее, о котором спрашивали на форумах, уже наступило. Полный переход на онлайн-взаиморасчеты — это не просто смена имен регистров, а качественное изменение оперативности учета. Рекомендуем пользователям внимательнее следить за заполнением графиков оплаты, а программистам — готовиться к рефакторингу своих расширений под новую структуру РасчетыСКлиентамиПоСрокам.