При настройке синхронизации между 1С:Управление торговлей 11 (УТ) и 1С:Бухгалтерия предприятия 3.0 (БП) специалисты часто сталкиваются с неприятным эффектом: в исходной базе (УТ) дата оплаты в заказе или счете выставлена верно, но после переноса в БП она «уплывает» на несколько дней вперед. Разберем детально, почему это происходит, как программа делает расчет и каким образом настроить систему, чтобы даты совпадали.
Основная причина «плавающих» дат кроется в различии алгоритмов расчета сроков оплаты и настроек рабочих календарей в двух конфигурациях. Когда документ Счет на оплату покупателю попадает в 1С:Бухгалтерия, система не просто копирует дату, пришедшую из УТ, но и зачастую инициирует внутреннюю проверку и пересчет этой даты при записи объекта. Это происходит из-за того, что в БП 3.0 заложена логика автоматического определения срока задолженности на основе параметров договора или общих настроек учета.
Выясним, на что именно опирается программа при расчете. Если в БП 3.0 в настройках указано использование рабочих дней, то программа берет дату документа и прибавляет к ней количество дней отсрочки, пропуская все выходные и праздники, отмеченные в справочнике Производственный календарь. Если в УТ отсчет шел в календарных днях, а в БП — в рабочих, или если календари в базах заполнены по-разному, мы получим расхождение.
Как показывает практика и обсуждения на форумах, ключевым фактором часто выступают праздничные дни. Рассмотрим ситуацию: если срок оплаты установлен в 21 день, а на этот период выпадают новогодние каникулы (с 1 по 8 января), то 1С:Бухгалтерия, настроенная на расчет по рабочим дням, прибавит эти 8 дней к итоговому сроку. В результате вместо ожидаемого 16 января мы получим 24 января.
Для исправления ситуации выполним следующие действия по проверке календаря:
Основного календаря на текущий и следующий годы.Важно помнить, что даже если вы измените вид дня в календаре (например, с «Праздника» на «Рабочий день»), изменения вступят в силу только для новых или перепроведенных документов.
Проанализируем, где в БП 3.0 задаются правила, которые могут переопределять данные из синхронизации. В программе существует иерархия настроек:
Проанализируем поведение системы при записи: если механизм синхронизации EnterpriseData передает документ, срабатывает процедура ЗаполнитьСчетаУчета, которая может инициировать пересчет зависимых полей. Чтобы этого избежать, настройки в обеих базах должны быть идентичными.
Посмотрим на настройки на стороне источника (УТ). Здесь также важно понимать, как система считает дни. Проделаем следующий путь:
Способ контроля дней задолженности.Если в УТ выбрано «В календарных днях», а в БП по умолчанию или в договоре стоит «В рабочих днях», то при каждом обмене вы будете получать разницу в датах, равную количеству выходных дней в периоде отсрочки.
Чтобы окончательно решить проблему «плывущих» дат, выполним комплексную настройку обеих систем:
БП при записи.Важный нюанс: В последних версиях 1С:Бухгалтерия 3.0 появилась возможность явно указывать срок оплаты в днях прямо в форме договора. Если там установлено значение, отличное от нуля, программа будет упорно пересчитывать дату оплаты в Счете покупателю при любом его обновлении, даже если значение было корректно перенесено из УТ.
Мы выяснили, что причина расхождения дат — это работа встроенных алгоритмов 1С:БП 3.0, которые используют Производственный календарь и настройки договора для пересчета сроков. Для решения проблемы необходимо привести справочники календарей к единому виду и убедиться, что способы отсчета (рабочие/календарные дни) в УТ и БП настроены одинаково. Только полное соответствие настроек позволит избежать «плавающих» сроков при регулярной синхронизации данных.