Синхронизация данных между Управление торговлей 11.5 и Бухгалтерия предприятия 3.0 — это сложный процесс, который опирается на универсальный формат обмена EnterpriseData. Одной из частых проблем, с которой сталкиваются пользователи, является некорректная передача статуса «Продажа по патенту». В результате в БП 8.3 документы приходят без установленного флага патентной системы налогообложения, а любые ручные правки затираются при следующем сеансе обмена. Давайте разберемся, как проанализировать и устранить эту проблему.
Прежде чем приступать к изменению программного кода, проанализируем ситуацию на уровне пользовательских настроек:
УТ 11.5.Если настройки верны, а флаг все равно не передается, значит, проблема кроется в логике формирования данных для выгрузки. В типовом механизме обмена за этот процесс отвечает общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
Разберем функцию ПатентДляВыгрузки(Организация, Подразделение). В типовом варианте она содержит запрос к справочнику Патенты и его табличной части ПрименениеПатента. Ошибка часто заключается в том, что ВНУТРЕННЕЕ СОЕДИНЕНИЕ накладывает слишком жесткое условие по подразделению. Если в документе (например, Реализация товаров и услуг) подразделение не совпадает с тем, что указано в регистре применения патента, запрос возвращает пустую ссылку.
Для исправления ситуации необходимо скорректировать текст запроса в функции ПатентДляВыгрузки. Мы добавим логику, которая будет более гибко искать подходящий патент. Рассмотрим пример правильной структуры запроса:
Функция ПатентДляВыгрузки(Организация, Подразделение)
Патент = Справочники.Патенты.ПустаяСсылка();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Патенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Патенты.ПрименениеПатента КАК ПатентыПрименениеПатента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Патенты КАК Патенты
| ПО ПатентыПрименениеПатента.Ссылка = Патенты.Ссылка
|ГДЕ
| НЕ Патенты.ПометкаУдаления
| И Патенты.Владелец = &Организация
| И ПатентыПрименениеПатента.Подразделение = &Подразделение
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Патенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Патенты.ПрименениеПатента КАК ПатентыПрименениеПатента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Патенты КАК Патенты
| ПО ПатентыПрименениеПатента.Ссылка = Патенты.Ссылка
|ГДЕ
| НЕ Патенты.ПометкаУдаления
| И Патенты.Владелец = &Организация
| И ПатентыПрименениеПатента.Подразделение В ИЕРАРХИИ(&Подразделение)";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Подразделение", Подразделение);
// Далее следует логика обработки результата...
Важные замечания по реализации:
Конфигуратор. Оптимальным решением будет использование Расширения конфигурации, в котором можно переопределить (функция &Вместо) данный метод.Если вы не хотите менять логику выгрузки в УТ, можно реализовать логику «подхвата» патента на стороне Бухгалтерии предприятия. Создайте расширение, которое при событии ПередЗаписью (или ПриЗаписи) документа Реализация товаров и услуг проверяет наличие признака патента в данных обмена. Если документ пришел без него, расширение анализирует договор контрагента и, если там указано налогообложение «Продажа по патенту», автоматически заполняет соответствующее поле в документе.
Этот метод считается более «чистым» с точки зрения архитектуры, так как он не затрагивает универсальные правила обмена, которые часто обновляются разработчиками 1С. Таким образом, мы обеспечиваем стабильность даже после установки очередного патча платформы или конфигурации.