При работе в программе 1С:Управление торговлей 11.4 (релиз 11.4.9.82 и аналогичные) пользователи часто сталкиваются с неочевидным поведением системы при ведении взаиморасчетов в условных единицах (у.е.). Типичная ситуация: аванс получен в начале месяца, в конце месяца оформляется Взаимозачет задолженности для переноса этого аванса на другой заказ, и в этот же день создается Реализация товаров и услуг. Ожидается, что курс в реализации зафиксируется по дате аванса, но система упорно использует курс на дату документа реализации.
Рассмотрим подробно, почему это происходит, как работает механизм онлайн-взаиморасчетов и какие шаги необходимо предпринять для корректного отражения сумм в валюте регламентированного учета.
Начиная с версии 11.4, в конфигурациях на базе ERP-платформы был внедрен новый механизм — «Онлайн-взаиморасчеты». Его главное отличие от старого (офлайн) метода заключается в том, что распределение расчетов происходит динамически. Однако в версиях ветки 11.4.9 этот механизм еще находился в стадии активной отладки.
Проанализируем ситуацию: когда Взаимозачет задолженности и Реализация товаров и услуг проводятся одной датой, система попадает в «серую зону» очередности. Для алгоритма 1С важно не только время документа, но и момент фиксации остатка на регистрах. В режиме онлайн система часто не успевает признать аванс, перенесенный взаимозачетом, «входящим» остатком для реализации, созданной в тот же день. В результате программа считает, что предоплаты на момент отгрузки еще нет, и применяет текущий курс валюты.
Если же мы перенесем Реализацию товаров и услуг на следующий день, граница периодов становится четкой. Система видит остаток по регистру РасчетыСКлиентамиПоДокументам на начало дня и корректно подтягивает исторический курс аванса.
Первым делом проверим настройки системы, влияющие на расчет курсовых разниц и актуализацию сумм в валюте. Перейдем в раздел НСИ и администрирование — Казначейство. Посмотрим на параметр «Переоценка валютных средств». Если установлена настройка «На дату оплаты и на конец месяца», это может приводить к задержкам в актуализации курсов внутри месяца.
Рекомендуется попробовать изменить этот параметр на «На каждый день месяца». Это заставит систему более детально прорабатывать остатки в валюте на каждую дату, что критично для правильного определения курса аванса при сложных цепочках документов (Заказ -> Оплата -> Взаимозачет -> Реализация).
Особенность онлайн-режима в том, что движения по регистрам расчетов могут выполняться отложенно. За это отвечает регламентное задание ЗаданияОчередиРасчетов. Если документ реализации печатается или проводится до того, как фоновое задание обработало Взаимозачет задолженности, данные о курсе аванса будут неверными.
Выясним, не застряли ли документы в очереди. Для этого можно воспользоваться обработкой «Исправление заданий очереди расчетов» или принудительно запустить регламентное задание из консоли заданий. В коде системы это выглядит примерно так:
// Пример принудительного вызова расчета очереди (для ознакомления)
РасчетыСКлиентами.ВыполнитьАктуализациюРасчетов(ОбъектРасчетов);
Важно помнить, что в режиме офлайн-взаиморасчетов часто возникает другая проблема: перезапись документа без изменения суммы может очистить ресурсы в регистре СуммыДокументовВВалютеРегл, и если регламентное задание по распределению расчетов не запустится, суммы в печатных формах (ТОРГ-12) окажутся пустыми.
При переносе аванса с Заказа №1 на Заказ №2 через взаимозачет, система должна «пробросить» себестоимость валюты (курс 20 октября). Проанализируем движения документа Взаимозачет задолженности. Если в регистре Расчеты с клиентами по документам сумма в валюте регламентированного учета рассчитана по курсу на 29 октября (день взаимозачета), то и реализация подтянет именно этот курс.
В некоторых случаях помогает ручное перестроение графика оплаты в заказе или документе реализации (кнопка «Заполнить по графику»), что инициирует пересчет связанных авансов. Однако наиболее надежным способом в версиях до 11.4.11 является разнесение документов по датам или обновление конфигурации до актуального релиза, где логика «транзита» курса аванса через взаимозачет была исправлена.
Если специфика бизнеса позволяет, стоит рассмотреть переход с детализации расчетов «По заказам» на детализацию «По договорам». В этом случае объект расчетов остается единым для всей цепочки операций. Системе гораздо проще сопоставить платеж и отгрузку внутри одного договора, чем пытаться связать их через корректировку задолженности между разными заказами. При ведении расчетов по договору «история» курса аванса сохраняется стабильнее.
Поведение системы 29 октября связано с тем, что механизм онлайн-расчетов не рассматривает зачет аванса, совершенный «сегодня», как окончательно зафиксированный факт для целей определения курса в реализации, проводимой в этот же день. Для системы это операции одного периода, где приоритет по умолчанию отдается текущему курсу, если очередь расчетов еще не «схлопнула» аванс с отгрузкой.
Основные рекомендации для исправления:
Взаимозачет и Реализацию по разным дням или обновите релиз программы до 11.4.11 и выше, где алгоритмы онлайн-расчетов были существенно переработаны разработчиками 1С.