Почему в 1С:Бухгалтерию 8.3 не выгружается «Патент» из УТ 11.5 и как это исправить?

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

Синхронизация данных между Управление торговлей 11.5 и Бухгалтерия предприятия 3.0 — это сложный процесс, который опирается на универсальный формат обмена EnterpriseData. Одной из частых проблем, с которой сталкиваются пользователи, является некорректная передача статуса «Продажа по патенту». В результате в БП 8.3 документы приходят без установленного флага патентной системы налогообложения, а любые ручные правки затираются при следующем сеансе обмена. Давайте разберемся, как проанализировать и устранить эту проблему.

Этап 1: Проверка базовых настроек синхронизации

Прежде чем приступать к изменению программного кода, проанализируем ситуацию на уровне пользовательских настроек:

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

Этап 2: Технический анализ проблемы в коде

Если настройки верны, а флаг все равно не передается, значит, проблема кроется в логике формирования данных для выгрузки. В типовом механизме обмена за этот процесс отвечает общий модуль МенеджерОбменаЧерезУниверсальныйФормат.

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

Этап 3: Решение через модификацию модуля

Для исправления ситуации необходимо скорректировать текст запроса в функции ПатентДляВыгрузки. Мы добавим логику, которая будет более гибко искать подходящий патент. Рассмотрим пример правильной структуры запроса:


Функция ПатентДляВыгрузки(Организация, Подразделение)
    Патент = Справочники.Патенты.ПустаяСсылка();
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Патенты.Ссылка КАК Ссылка
    |ИЗ        
    |    Справочник.Патенты.ПрименениеПатента КАК ПатентыПрименениеПатента
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Патенты КАК Патенты
    |        ПО ПатентыПрименениеПатента.Ссылка = Патенты.Ссылка
    |ГДЕ
    |    НЕ Патенты.ПометкаУдаления
    |    И Патенты.Владелец = &Организация
    |    И ПатентыПрименениеПатента.Подразделение = &Подразделение
    |;
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Патенты.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.Патенты.ПрименениеПатента КАК ПатентыПрименениеПатента
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Патенты КАК Патенты
    |        ПО ПатентыПрименениеПатента.Ссылка = Патенты.Ссылка
    |ГДЕ
    |    НЕ Патенты.ПометкаУдаления
    |    И Патенты.Владелец = &Организация
    |    И ПатентыПрименениеПатента.Подразделение В ИЕРАРХИИ(&Подразделение)";
    
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Подразделение", Подразделение);
    // Далее следует логика обработки результата...

Важные замечания по реализации:

Этап 4: Альтернативный подход — расширение на стороне БП

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

Этот метод считается более «чистым» с точки зрения архитектуры, так как он не затрагивает универсальные правила обмена, которые часто обновляются разработчиками 1С. Таким образом, мы обеспечиваем стабильность даже после установки очередного патча платформы или конфигурации.

← На главную