Как перейти на платформу 8.3.12 для работы с новыми релизами 1С:УПП 1.3 и решить возникающие ошибки

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

Начиная с релиза 1.3.123.1, конфигурация «Управление производственным предприятием» (УПП) требует использования технологической платформы «1С:Предприятие 8» версии не ниже 8.3.12.1685. Это изменение вызвало множество вопросов у администраторов и разработчиков, так как УПП традиционно работала на ветке 8.2. Разберем подробно причины этого перехода, проанализируем возникающие проблемы и рассмотрим по шагам методы их решения.

Причины перехода на платформу 8.3.12

Выясним, чем вызвана такая резкая смена системных требований. Основными факторами стали развитие государственных информационных систем и унификация кода между различными прикладными решениями 1С. Рассмотрим их подробнее:

  1. Интеграция с ИС Маркировки (Честный Знак) и ЕГАИС: Новые подсистемы маркировки табака (МОТП), обуви и других товаров используют методы платформы, которые отсутствуют в версии 8.2. В частности, это касается работы с защищенными протоколами передачи данных (TLS 1.2), необходимыми для прямой связи с серверами регуляторов.
  2. Использование нового синтаксиса: В модули конфигурации массово внедрены директивы #Область и #КонецОбласти. Хотя это элементы оформления, старый конфигуратор 8.2 не может корректно обрабатывать такие модули, что приводит к ошибкам при глобальном поиске или сохранении конфигурации.
  3. Асинхронные вызовы и длительные операции: Для повышения стабильности работы в конфигурацию добавлены вызовы методов ВыполнитьОбработкуОповещения. Эти функции появились в платформе 8.3.3 и активно используются в современных библиотеках (БСП), внедряемых в УПП.
  4. Лицензионная политика: Платформа 8.3.12 стала рубежной для технического разделения лицензий уровней ПРОФ и КОРП. Теперь использование более 12 ядер процессора или более 500 одновременных сеансов требует соответствующих лицензий КОРП.

Решение ошибки SDBL при обновлении конфигурации базы данных

Проанализируем ситуацию, когда при попытке обновить базу данных после наката релиза 1.3.123 возникает критическая ошибка: «Ошибка SDBL: Для одного ссылочного кода существует более одной таблицы в базе данных». Эта проблема часто встречается на крупных базах при переходе с платформы 8.2 на 8.3. Посмотрим на алгоритм исправления:

Причина кроется в некорректном сопоставлении внутренних идентификаторов таблиц при смене движка платформы. Для решения выполним следующие действия:

  1. Загрузим обновление конфигурации (файл .cf или .cfu), но не будем сразу нажимать «Обновить конфигурацию базы данных» (F7).
  2. Переведем базу на новую платформу (8.3.12 или выше).
  3. Запустим конфигуратор и выполним реструктуризацию таблиц. Для этого перейдем в меню «Администрирование» — «Тестирование и исправление». Установим только флаг «Реструктуризация таблиц информационной базы».
  4. Только после успешного завершения реструктуризации выполним обновление конфигурации базы данных (F7).

Исправление ошибок прав доступа к маркировке (МОТП)

Разберем типичную проблему релиза 1.3.123.2: у пользователей без полных прав перестают открываться документы «Реализация товаров и услуг» или «Поступление товаров и услуг». Выясним причину: программа пытается проверить дату обязательной маркировки табака через обращение к константе, на которую у рядовых сотрудников нет прав.

Посмотрим на пример кода, вызывающего ошибку в общем модуле ИнтеграцияМОТПВызовСервера:

Возврат Константы.ДатаОбязательнойМаркировкиТабачнойПродукцииМОТП.Получить();

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

  1. Использование роли: Найдем в списке ролей новую роль БазовыеПраваМОТП и добавим ее всем пользователям, работающим с торговыми документами.
  2. Корректировка роли Пользователь: В конфигураторе найдем роль Пользователь и добавим ей право «Чтение» на константу ДатаОбязательнойМаркировкиТабачнойПродукцииМОТП, а также на справочник ШтрихкодыУпаковокТоваров.

Настройка COM-соединения для разных версий платформ

Часто возникает ситуация «зоопарка» платформ: УПП требует 8.3.12, а другие базы (например, «Альфа-Авто») работают только на 8.3.10. При попытке обмена через COM-соединение возникнет ошибка несоответствия версий. Рассмотрим, как настроить совместную работу через COM+:

  1. Откроем «Службы компонентов» в Windows.
  2. Создадим новое приложение COM+ (пустое приложение) под названием, например, V83_COM_Connector. Установим способ активации — «Серверное приложение».
  3. В ветке «Компоненты» выберем «Установка новых компонентов» и укажем путь к библиотеке comcntr.dll нужной версии платформы (например, из папки 8.3.12.xxxx\bin).
  4. В свойствах созданного приложения на вкладке «Удостоверение» укажем системного пользователя с правами администратора.
  5. Теперь при обращении через V83.COMConnector система будет использовать изолированный процесс с нужной версией библиотеки.

Исправление визуальных багов в формах (скролл в платежных поручениях)

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

Зайдем в модуль формы документа и найдем процедуру УстановитьВидимость. Рассмотрим фрагмент кода, который нужно закомментировать, так как в новых версиях платформы расчет высоты элементов в толстом клиенте изменился:

// ЭлементыФормы.РасшифровкаПлатежа.Высота = ЭлементыФормы.ПанельПлатежи.Высота;

Это позволит платформе самостоятельно рассчитать геометрию формы согласно установленным привязкам, не вызывая конфликта размеров.

Адаптация кода для работы на старых платформах (не рекомендуется)

Если по каким-то причинам переход на 8.3.12 невозможен (например, из-за старого серверного оборудования), некоторые специалисты прибегают к «вырезанию» нового функционала. Рассмотрим, какие места потребуют правки, но помним, что это лишит нас возможности использовать маркировку и ЕГАИС:

  1. Удаление областей: С помощью регулярных выражений или глобальной замены необходимо удалить конструкции #Область и #КонецОбласти во всех модулях.
  2. Заглушки для оповещений: В общих модулях ДлительныеОперацииГлобальный и ИнтеграцияИСУТГлобальный нужно закомментировать вызовы ВыполнитьОбработкуОповещения или обернуть их в конструкцию Попытка...Исключение.

Пример «безопасного» вызова для работы на разных платформах:


Попытка
    ВыполнитьОбработкуОповещения(Оповещение, Результат);
Исключение
    // Метод не поддерживается данной платформой
КонецПопытки;

Резюме и рекомендации

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

← На главную