Почему смещаются сроки оплаты в Счете покупателю в 1С:Бухгалтерия 3.0 после синхронизации из 1С:Управление торговлей 11?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Управленческий учет Торговля и дистрибуция
← На главную

При настройке синхронизации между 1С:Управление торговлей 11 (УТ) и 1С:Бухгалтерия предприятия 3.0 (БП) специалисты часто сталкиваются с неприятным эффектом: в исходной базе (УТ) дата оплаты в заказе или счете выставлена верно, но после переноса в БП она «уплывает» на несколько дней вперед. Разберем детально, почему это происходит, как программа делает расчет и каким образом настроить систему, чтобы даты совпадали.

Проанализируем причину возникновения проблемы

Основная причина «плавающих» дат кроется в различии алгоритмов расчета сроков оплаты и настроек рабочих календарей в двух конфигурациях. Когда документ Счет на оплату покупателю попадает в 1С:Бухгалтерия, система не просто копирует дату, пришедшую из УТ, но и зачастую инициирует внутреннюю проверку и пересчет этой даты при записи объекта. Это происходит из-за того, что в БП 3.0 заложена логика автоматического определения срока задолженности на основе параметров договора или общих настроек учета.

Выясним, на что именно опирается программа при расчете. Если в БП 3.0 в настройках указано использование рабочих дней, то программа берет дату документа и прибавляет к ней количество дней отсрочки, пропуская все выходные и праздники, отмеченные в справочнике Производственный календарь. Если в УТ отсчет шел в календарных днях, а в БП — в рабочих, или если календари в базах заполнены по-разному, мы получим расхождение.

Разберем влияние Производственного календаря

Как показывает практика и обсуждения на форумах, ключевым фактором часто выступают праздничные дни. Рассмотрим ситуацию: если срок оплаты установлен в 21 день, а на этот период выпадают новогодние каникулы (с 1 по 8 января), то 1С:Бухгалтерия, настроенная на расчет по рабочим дням, прибавит эти 8 дней к итоговому сроку. В результате вместо ожидаемого 16 января мы получим 24 января.

Для исправления ситуации выполним следующие действия по проверке календаря:

  1. Перейдем в раздел Администрирование — Параметры учета (или через поиск «Производственные календари»).
  2. Проверим заполнение Основного календаря на текущий и следующий годы.
  3. Убедимся, что праздничные дни в календаре БП полностью соответствуют календарю в УТ.

Важно помнить, что даже если вы измените вид дня в календаре (например, с «Праздника» на «Рабочий день»), изменения вступят в силу только для новых или перепроведенных документов.

Настройка сроков оплаты в 1С:Бухгалтерия 3.0

Проанализируем, где в БП 3.0 задаются правила, которые могут переопределять данные из синхронизации. В программе существует иерархия настроек:

  1. Настройки договора: Это самый высокий приоритет. Откроем карточку договора с контрагентом, перейдем во вкладку Расчеты. Здесь можно установить конкретный срок оплаты. Если мы хотим, чтобы дата всегда «прилетала» из УТ без изменений, попробуем установить значение «0» или убедиться, что способ отсчета (в рабочих или календарных днях) совпадает с торговой базой.
  2. Общие параметры учета: Если в договоре срок не указан, программа заглядывает в общие настройки. Перейдем в Администрирование — Параметры учета — Сроки оплаты покупателями. По умолчанию там часто стоит 15 дней.

Проанализируем поведение системы при записи: если механизм синхронизации EnterpriseData передает документ, срабатывает процедура ЗаполнитьСчетаУчета, которая может инициировать пересчет зависимых полей. Чтобы этого избежать, настройки в обеих базах должны быть идентичными.

Проверка настроек в 1С:Управление торговлей 11

Посмотрим на настройки на стороне источника (УТ). Здесь также важно понимать, как система считает дни. Проделаем следующий путь:

  1. Зайдем в меню НСИ и администрирование.
  2. Выберем Настройка НСИ и разделов — Продажи.
  3. Найдем блок Оптовые продажи и проверим настройку Способ контроля дней задолженности.

Если в УТ выбрано «В календарных днях», а в БП по умолчанию или в договоре стоит «В рабочих днях», то при каждом обмене вы будете получать разницу в датах, равную количеству выходных дней в периоде отсрочки.

Рекомендации по устранению проблемы

Чтобы окончательно решить проблему «плывущих» дат, выполним комплексную настройку обеих систем:

  1. Синхронизируем календари: Это обязательный шаг. Производственные календари должны быть заполнены и идентичны в обеих базах.
  2. Унифицируем правила расчета: Если бизнес-процесс предполагает расчет в календарных днях, убедимся, что в БП в карточках договоров (раздел «Расчеты») выбран именно этот способ.
  3. Настройка правил обмена: В некоторых случаях, если типовые средства не помогают, программисты прибегают к расширениям. Рассмотрим пример логики, которую можно внедрить: при загрузке документа в БП необходимо проверять, заполнена ли уже дата оплаты в структуре данных, пришедшей из УТ. Если заполнена — блокировать стандартный пересчет БП при записи.
  4. Контроль даты документа: Иногда дата оплаты смещается из-за того, что меняется сама дата документа (например, из-за разницы часовых поясов серверов). Проверим, чтобы дата счета в обеих базах была идентичной секунда в секунду.

Важный нюанс: В последних версиях 1С:Бухгалтерия 3.0 появилась возможность явно указывать срок оплаты в днях прямо в форме договора. Если там установлено значение, отличное от нуля, программа будет упорно пересчитывать дату оплаты в Счете покупателю при любом его обновлении, даже если значение было корректно перенесено из УТ.

Итоги

Мы выяснили, что причина расхождения дат — это работа встроенных алгоритмов 1С:БП 3.0, которые используют Производственный календарь и настройки договора для пересчета сроков. Для решения проблемы необходимо привести справочники календарей к единому виду и убедиться, что способы отсчета (рабочие/календарные дни) в УТ и БП настроены одинаково. Только полное соответствие настроек позволит избежать «плавающих» сроков при регулярной синхронизации данных.

← На главную