Как исправить ошибку «ПолучитьСклоненияСтроки не найдена» и сбои обмена с ФСС в УПП 1.3.152.2?

Программист 1С v8.3 (Обычные формы)
← На главную

Обновление конфигурации «1С:Управление производственным предприятием» (УПП) до релиза 1.3.152.2 (вышедшего в январе 2021 года) принесло разработчикам и системным администраторам немало сюрпризов. Сразу после обновления пользователи начали сталкиваться с падением системы при запуске, критическими ошибками при загрузке электронных листков нетрудоспособности (ЭЛН) из ФСС, а также с невозможностью записать базовые документы из-за сбоев в подписках ЕГАИС.

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

---

Проблема 1: Ошибка «Процедура или функция с указанным именем не определена (ПолучитьСклоненияСтроки)»

При попытке запустить систему в режиме «Предприятие» после обновления конфигурация аварийно завершает работу, выдавая в окно сообщений следующий текст:

{ОбщийМодуль.ИнтеграцияИСМП.Модуль(911,35)}: Процедура или функция с указанным именем не определена (ПолучитьСклоненияСтроки)

Выясним причину: В данном релизе разработчики фирмы «1С» активно внедряли модули интеграции с государственной системой маркировки (ГИС МП). В одном из общих модулей был добавлен вызов встроенной функции платформы ПолучитьСклоненияСтроки для автоматического склонения наименований документов в винительный падеж. Однако данная функция появилась в технологической платформе «1С:Предприятие» только начиная с версии 8.3.13. Если ваша информационная база работает на платформе версии 8.3.12 или ниже, система просто «не знает» эту функцию, что и приводит к ошибке компиляции модуля.

Рассмотрим два варианта решения этой проблемы.

Решение А: Обновление технологической платформы (рекомендуемое)

Официальные требования к релизу УПП 1.3.152.2 прямо указывают на необходимость использования платформы «1С:Предприятие 8» версии не ниже 8.3.13. Если у вас нет жестких ограничений, выполните обновление платформы на сервере и рабочих станциях пользователей до актуального стабильного релиза (например, ветки 8.3.16 или выше).

Решение Б: Программный обход в конфигураторе (если платформу обновить нельзя)

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

Разберем этот процесс по шагам:

  1. Откройте базу в режиме Конфигуратор.
  2. Найдите общий модуль ИнтеграцияИСМП и перейдите к строке 911 (или воспользуйтесь глобальным поиском по тексту ПолучитьСклоненияСтроки).
  3. Найдите строку кода:
    
    ФормыИмениДокумента.Склоненная = ПолучитьСклоненияСтроки(НРег(Лев(ФормыИмениДокумента.Основная, 1)) + Сред(ФормыИмениДокумента.Основная, 2), , "ПД=Винительный")[0];
    
  4. Замените этот вызов на более универсальный вариант, который не требует вызова новой платформенной функции:
    
    ФормыИмениДокумента.Склоненная = НРег(Лев(ФормыИмениДокумента.Основная, 1)) + Сред(ФормыИмениДокумента.Основная, 2);
    

Для тех, кто хочет сохранить штатный функционал склонения на новых платформах, но при этом обеспечить совместимость со старыми, мы рекомендуем внедрить проверку версии платформы:


СистемнаяИнформация = Новый СистемнаяИнформация;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.13.0") >= 0 Тогда
    ФормыИмениДокумента.Склоненная = ПолучитьСклоненияСтроки(НРег(Лев(ФормыИмениДокумента.Основная, 1)) + Сред(ФормыИмениДокумента.Основная, 2), , "ПД=Винительный")[0];
Иначе
    ФормыИмениДокумента.Склоненная = НРег(Лев(ФормыИмениДокумента.Основная, 1)) + Сред(ФормыИмениДокумента.Основная, 2);
КонецЕсли;

---

Проблема 2: Ошибки при обмене с ФСС по электронным больничным (ЭЛН)

Данный релиз совпал с переходом ФСС на новые форматы обмена версии 2.0. Спешка при реализации привела к нескольким критическим ошибкам в общем модуле ОбменСведениямиОПособияхсФСС.

Проанализируем ключевые симптомы этих ошибок:

Рассмотрим способы исправления этих багов.

Способ А: Локальная корректировка кода формата 2.0

Если вы хотите оставить работу по новым протоколам версии 2.0, откройте общий модуль ОбменСведениямиОПособияхсФСС, перейдите к строке 5555 и замените обращение к свойству:


// Было:
Если ДанныеИзСервиса.LN_RESULT <> Неопределено Тогда

// Нужно написать:
Если ДанныеИзСервиса.lnResult <> Неопределено Тогда

Также потребуется скорректировать разбор XML-схем в частях, касающихся тега отчества (заменив букву "I" на "Y" в имени поля PATRONYMIC), чтобы избежать предупреждений системы.

Способ Б: Принудительный временный откат на формат обмена 1.1 (наиболее стабильный вариант)

Шлюзы ФСС на момент выпуска релиза поддерживали обратную совместимость. Чтобы полностью избавиться от всех недоработок формата 2.0 (включая проблему с незаполненным хешем и неверной идентификацией типа больничного), мы можем временно переключить модуль обмена на работу по спецификации 1.1. Это полностью решает проблему без ущерба для сдачи отчетности.

Проанализируем, как это сделать:

  1. Откройте общий модуль ОбменСведениямиОПособияхсФСС.
  2. Найдите экспортную функцию ВерсияЭЛН().
  3. Измените возвращаемое значение функции следующим образом:
    
    Функция ВерсияЭЛН() Экспорт
        // Возврат "2.0"; // закомментировано из-за ошибок в схеме 1С
        Возврат "1.1";
    КонецФункции
    

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

---

Проблема 3: Ошибка подписок на события ЕГАИС при записи документов

При попытке провести или просто записать стандартные документы реализации или поступления товаров система выдает ошибку следующего вида:

При подписке РассчитатьСтатусОформленияТТНИсходящаяЕГАИС на событие ПриЗаписи произошла ошибка. Метод обработчика события РассчитатьСтатусОформленияТТНИсходящаяЕГАИС не найден.

Выясним причину: Данная проблема типична для нетиповых (доработанных) конфигураций, которые обновлялись вручную методом сравнения и объединения. В релизе 1.3.152.2 разработчики «1С» провели рефакторинг кода интеграции с ЕГАИС: старые обработчики событий были перенесены в другие общие модули или переименованы, а устаревшие методы — удалены. Если при обновлении старые подписки на события не обновились автоматически, они остались ссылаться на несуществующие процедуры.

Решение проблемы:

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

---

Резюме

Мы подробно разобрали три критические уязвимости релиза 1.3.152.2 конфигурации «1С:Управление производственным предприятием». Своевременное исправление этих ошибок позволит вашей компании продолжить стабильную работу без экстренного перехода на новые версии платформы и исключит задержки при обработке больничных листов сотрудников в ФСС.

← На главную