При обслуживании и обновлении информационных баз конфигурации «Бухгалтерия предприятия», редакция 2.0 разработчики и администраторы сталкиваются с ситуацией, когда очередное регламентированное обновление отказывается компилироваться или запускаться на платформе «1С:Предприятие 8.2». Разберем технические причины такого поведения, выясним, какие именно механизмы перестают работать, и рассмотрим пути решения возникшей проблемы.
Основное техническое препятствие при установке свежих релизов конфигурации на платформу 8.2 заключается в появлении новых директив препроцессора. Начиная с платформы «1С:Предприятие 8.3», разработчикам стал доступен синтаксический механизм группировки программного кода в модулях с помощью ключевых слов #Область (#Region) и #КонецОбласти (#EndRegion).
Синтаксический анализатор платформы 8.2 не обучен работе с этими директивами. Когда компилятор на платформе 8.2 встречает подобную конструкцию, он определяет ее как нераспознанный оператор препроцессора и аварийно завершает синтаксический контроль модуля:
#Область СлужебныеПроцедурыИФункции
Процедура ПроверитьЗаполнениеДанных()
// Логика проверки
КонецПроцедуры
#КонецОбласти
В результате база данных не может применить обновление конфигурации («Обновить конфигурацию базы данных»), выдавая критическую синтаксическую ошибку.
Помимо синтаксических ошибок модулей, сохранение базы на платформе 8.2 влечет за собой функциональные ограничения в прикладных подсистемах:
DirectBank, сервис 1С-Отчетность или проверку контрагентов платформа выдает ошибки защищенного соединения.Самое надежное и технически корректное решение — перевести информационную базу на платформу «1С:Предприятие 8.3», сохранив при этом режим совместимости конфигурации. В таком режиме интерфейс, логика проведения документов и привычные обычные формы остаются абсолютно неизменными.
Разберем процесс настройки по шагам:
Версия 1С:Предприятия укажем 8.3 (или оставим поле пустым, чтобы запускалась последняя установленная версия).Конфигуратор. Перейдем в свойства корневого элемента конфигурации. Убедимся, что свойство Режим совместимости установлено в значение Версия 8.2.13 или Версия 8.2.16. Это гарантирует, что конфигурация продолжит функционировать в привычном режиме Толстый клиент (обычное приложение).При таком подходе платформа 8.3 успешно обрабатывает директивы #Область и #КонецОбласти, штатно выполняет компиляцию всех модулей и позволяет обновлять базу стандартными файлами поставок (.cf / .cfu) без вмешательства в код.
Если по инфраструктурным причинам (например, эксплуатация базы на устаревшей операционной системе Windows Server 2003, где запуск актуальных версий 8.3 затруднен) переход на 8.3 временно невозможен, существует обходной путь. Проанализируем, как устранить ошибку компиляции вручную.
Для продолжения работы на платформе 8.2 потребуется отключить директивы областей в модулях, где они присутствуют:
#Область и #КонецОбласти (или англоязычных аналогов #Region и #EndRegion). Обычно они встречаются в нескольких общих модулях и модулях регламентированных отчетов.
//#Область СлужебныеПроцедурыИФункции
Процедура ПроверитьЗаполнениеДанных()
// Логика процедуры остается без изменений
КонецПроцедуры
//#КонецОбласти
После комментирования сохраним изменения нажатием клавиши F7. Платформа 8.2 успешно обновит базу данных.
Обратите внимание на риски данного способа: ручная правка кода требует снятия конфигурации с типовой поддержки. При выпуске каждого следующего обновления операцию комментирования придется повторять заново при сравнении и объединении конфигураций. Кроме того, внешние регламентированные отчеты и обработки, поставляемые разработчиком, также могут содержать синтаксис 8.3 и перестанут открываться на платформе 8.2.