При работе с алкогольной продукцией в программе «1С:Бухгалтерия предприятия 3.0» пользователи часто сталкиваются со специфическими ошибками при обмене данными через УТМ (Универсальный транспортный модуль). Одной из наиболее неприятных является ошибка при загрузке входящего ответа (Ticket) от ЕГАИС, которая блокирует дальнейший документооборот. В этой статье мы подробно разберем, почему возникает ошибка Поле объекта не обнаружено (ДополнительныеСвойства) в общем модуле интеграции и как её устранить различными способами.
Рассмотрим типичный сценарий: бухгалтер или оператор оформляет документ «Возврат поставщику», на его основании создается «ТТН-исходящая ЕГАИС». При попытке выполнить обмен (получить квитанцию от сервера Росалкогольрегулирования) система выдает критический сбой. Текст ошибки обычно выглядит следующим образом:
{ОбщийМодуль.ИнтеграцияЕГАИСПереопределяемый.Модуль(2756)}: Поле объекта не обнаружено (ДополнительныеСвойства)
Проанализируем программный код в указанной точке. Проблема кроется в процедурах, обрабатывающих запись документов или выполнение подписок на события. Разработчики системы добавили проверку на так называемое «Групповое перепроведение», чтобы оптимизировать нагрузку. Код выглядит примерно так:
Если Источник.ДополнительныеСвойства.Свойство("ГрупповоеПерепроведение") Тогда
Возврат;
КонецЕсли;
Выясним причину сбоя: переменная Источник в данном контексте является ссылкой на документ (ДокументСсылка), а не самим объектом документа. В языке 1С свойство ДополнительныеСвойства существует только у объектов (ДокументОбъект), которые находятся в оперативной памяти в момент редактирования или записи. У ссылок, которые просто указывают на запись в базе данных, этого свойства нет, что и приводит к падению программы.
Поскольку данная проблема признана официальным багом релизов ветки 3.0.67 и 3.0.68, самым правильным решением будет обновление программы. Разберем по шагам, что необходимо сделать:
Если у вас установлена Базовая версия «1С:Бухгалтерии», вы не можете вносить изменения в программный код самостоятельно. Однако фирма «1С» выпускает оперативные исправления (патчи), которые можно установить без полного обновления конфигурации. Рассмотрим, как это сделать:
Проверим наличие патча с кодом EF_00_00192518. Именно это исправление отвечает за корректную обработку Ticket в ЕГАИС. Для установки выполним следующие действия:
Если обновление по каким-то причинам невозможно осуществить оперативно, а работать нужно сейчас, проанализируем возможность ручной правки кода в конфигураторе (при условии, что конфигурация снята с замка). Нам необходимо изменить логику обращения к источнику в модуле ИнтеграцияЕГАИСПереопределяемый.
Вместо прямого обращения к свойству применим безопасную проверку. Рассмотрим пример исправленного кода:
// Было:
// Если Источник.ДополнительныеСвойства.Свойство("ГрупповоеПерепроведение") Тогда
// Стало (вариант с проверкой типа):
Если ОбщегоНазначения.ДанныеЯвляютсяСсылкой(Источник) Тогда
// Если это ссылка, мы можем либо пропустить проверку,
// либо получить объект, если свойства критически важны
Возврат;
ИначеЕсли Источник.ДополнительныеСвойства.Свойство("ГрупповоеПерепроведение") Тогда
Возврат;
КонецЕсли;
Использование метода ПолучитьОбъект() у ссылки также решит проблему, но это может негативно сказаться на производительности, если обработка идет в цикле. Поэтому лучше всего просто убедиться, что мы работаем именно с объектом, прежде чем обращаться к его ДополнительнымСвойствам.
Иногда ошибка может «зациклиться». Это происходит, когда в УТМ висит проблемный тикет, который 1С пытается прочитать снова и снова при каждом обмене. Если вы уже обновились, но ошибка сохраняется, попробуем очистить входящую очередь запросов:
http://localhost:8080).Ticket, на котором спотыкается система (номер тикета обычно указан в логе ошибки 1С, например /opt/out/Ticket/659).В среде специалистов 1С существует нюанс: конфигурация «Бухгалтерия предприятия» официально предназначена для учета розничной продажи пива и слабоалкогольной продукции. Если при обращении в техподдержку вы укажете, что ведете учет крепкого алкоголя (опт или производство), велика вероятность получить отказ в поддержке с рекомендацией перейти на отраслевые решения (например, «1С:Управление торговлей алкогольной продукцией»). Поэтому при описании проблемы стоит акцентировать внимание именно на техническом сбое в общем модуле, который мешает работе с любыми типами алкогольной номенклатуры.
Подведем итог: ошибка ДополнительныеСвойства — это типичный «промах» разработчиков при типизации переменных. Решение всегда заключается либо в обновлении на стабильный релиз (начиная с 3.0.69.32), либо в установке соответствующего патча через интернет-поддержку.