Как включить соглашения в 1С:УТ 11 без сброса цен в проведенных документах и повторной выгрузки в 1С:Бухгалтерию?

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

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

Взаимодействие соглашений с договорами и влияние на синхронизацию с 1С:Бухгалтерией

Проанализируем архитектуру взаиморасчетов при включении соглашений. Включение подсистемы соглашений не ломает существующую аналитику по контрагентам и договорам, если правильно настроить параметры типовых и индивидуальных соглашений:

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

Почему сбрасываются цены и как корректно обновить исторические документы

Выясним причину сброса цен в проведенных документах. Пересчет табличной части, скидок и сумм происходит только при ручном (интерактивном) изменении реквизита Соглашение пользователем в форме документа, так как при этом отрабатывает программный код клиентских событий. Если выполнить заполнение соглашения программно в режиме обычной записи, алгоритмы автозаполнения цен не вызываются, и табличные части остаются в неизменном виде.

Чтобы заполнить соглашение в закрытых периодах и избежать платформенных ошибок проверки заполнения обязательных реквизитов, воспользуемся режимом записи без проведения с установкой флага загрузки данных:


Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий() Цикл
    Если Не ЗначениеЗаполнено(Выборка.Соглашение) Тогда
        ДокументОбъект = Выборка.ПолучитьОбъект();
        ДокументОбъект.ОбменДанными.Загрузка = Истина;
        ДокументОбъект.Соглашение = ТиповоеСоглашение;
        ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    КонецЕсли;
КонецЦикла;

Установка свойства ДокументОбъект.ОбменДанными.Загрузка = Истина отключает платформенные и конфигурационные проверки корректности заполнения реквизитов, предотвращает возникновение лишних блокировок и не вызывает пересчет регистров.

Подавление повторной регистрации документов в планах обмена

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


ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокументОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов", Истина);
ДокументОбъект.Соглашение = ТиповоеСоглашение;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

Свойство ОтключитьМеханизмРегистрацииОбъектов блокирует обработчики подсистемы обмена данными БСП, гарантируя, что документ не попадет в таблицу изменений для выгрузки. Если же используется режим ОбменДанными.Загрузка = Истина, механизмы регистрации большинства планов обмена также штатно игнорируют такие записи.

Устранение постоянной повторной выгрузки документов при синхронизации

Разберем ситуацию, когда при каждом сеансе синхронизации повторно передаются одни и те же документы (платежные поручения, накладные), несмотря на отсутствие ручных изменений. Основная причина такого поведения — отсутствие квитирования (подтверждения приема пакета узлом-получателем).

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

  1. Завершение полного цикла синхронизации: Выполним выгрузку из базы-источника, затем полную загрузку в базе-приемнике, сформируем ответный пакет в приемнике и загрузим его обратно в базу-источник. Только после обработки входящего подтверждения узел-источник очищает номера отправленных сообщений и удаляет записи из таблиц регистрации.
  2. Ручная очистка очереди регистрации: Если очередь зарегистрированных объектов переполнена устаревшими записями, откроем встроенную обработку Регистрация изменений для обмена данными (доступную через панель администрирования синхронизации или меню функций для технического специалиста), выберем нужный план обмена и снимем с регистрации состав документов, выгрузка которых не требуется.

Использование описанных подходов позволяет плавно включить соглашения в работающей базе, сохранить неизменность финансовых результатов и исторических документов, а также обеспечить стабильный обмен данными с бухгалтерией.

← На главную