Переход на новые версии платформы 1С часто сопровождается не только появлением новых возможностей, но и возникновением специфических ошибок в механизмах, которые ранее работали безупречно. Ветку 8.3.23 многие разработчики называют «сырой», особенно в части работы с расширениями конфигурации. В этой статье мы детально проанализируем основные проблемы, с которыми сталкиваются программисты при работе в конфигураторе и веб-клиенте на данных релизах, и разберем пошаговые инструкции по их устранению.
Одной из первых проблем, с которой мы сталкиваемся в конфигураторе 8.3.23, является невозможность перетащить ссылочные реквизиты объекта на форму расширения. Если простые типы данных (строка, число, дата) переносятся без проблем, то при попытке перетащить СправочникСсылка или ДокументСсылка система просто игнорирует действие, даже если соответствующие объекты метаданных уже добавлены в расширение.
Разберем причину: Данное поведение связано с внутренним багом платформы (Bug ID: 00170422), некорректно обрабатывающим фоновую проверку метаданных при захвате элементов мышью. Проблема особенно остро проявляется, когда база данных находится на сервере, а расширение активно используется в режиме отладки.
Рассмотрим варианты решения:
8.3.23.1865. Если вы используете сборки .1688 или .1739, рекомендуется незамедлительно обновиться до версии 8.3.23.1912 или выше.Проанализируем ситуацию, когда после обновления платформы пользователи начинают жаловаться на отсутствие привычных кнопок в подменю «Печать» или пропадание произвольных командных кнопок, которые выведены в расширении. Это происходит из-за радикального изменения модели безопасности 1С, начиная с версии 8.3.23.
Выясним причину: Разработчики платформы ужесточили логику проверки прав (Bug ID: 60003417). Раньше система позволяла суммировать права: например, право на чтение документа могло быть в одной роли, а право на просмотр команды этого документа — в другой. Теперь же платформа требует «самодостаточности» роли. Если роль дает право на команду, она обязана давать право хотя бы на чтение объекта-владельца этой команды в рамках той же самой роли.
Разберем алгоритм исправления прав доступа в расширении:
Посмотрим на конкретный пример. Если у вас в расширении создана своя роль для управления печатными формами, выполните следующие действия:
Роль.Чтение и Просмотр.Проанализируем, почему это критично именно для расширений: часто программисты выносят в расширение только «верхушку айсберга» — саму команду, полагая, что основные права подтянутся из основной конфигурации. Но новая логика платформы игнорирует права основной конфигурации при проверке доступности интерфейсных элементов, если в расширении есть роль, затрагивающая этот объект, но не имеющая полных связанных прав.
В платформе 8.3.23 реализована долгожданная функция: конструктор запросов в расширении теперь видит объекты основной конфигурации, которые еще не добавлены в расширение. При закрытии конструктора система предлагает автоматически добавить недостающие таблицы.
Рассмотрим подводные камни: В ранних релизах 8.3.23 этот механизм работал избыточно. При попытке добавить одно поле из справочника Контрагенты, конструктор мог по цепочке ссылок (через типы реквизитов) добавить в расширение десятки других объектов (валюты, банки, страны, договора). Это приводит к «раздуванию» расширения и проблемам с реструктуризацией базы данных.
Как работать правильно:
8.3.23.1912, где алгоритм автоматического добавления был оптимизирован.Многие ошибки, связанные с функциями ПолучитьСеансыИнформационнойБазы или некорректным отображением форм, возникают из-за разрыва между режимом совместимости расширения и актуальной версией платформы. Рассмотрим ситуацию: ваша конфигурация находится в режиме совместимости 8.3.17, а платформа обновлена до 8.3.23.1739.
Проанализируем последствия: При таком сценарии механизмы отрисовки управляемых форм начинают использовать новые алгоритмы оптимизации, которые могут конфликтовать со старыми скриптами расширения. Если у вас наблюдаются «белые экраны» в веб-клиенте или ошибки прав доступа в привилегированных модулях, выполните следующие шаги:
ИспользоватьОсновныеРолиДляВсехПользователей в расширении. В новых релизах некорректная настройка этого свойства может блокировать доступ даже к тем объектам, на которые у пользователя есть полные права в основной базе.На основе опыта эксплуатации и анализа форумов разработчиков, мы можем составить краткий гид по версиям 8.3.23:
rphost при работе с веб-клиентом. Крайне не рекомендуются к использованию.Совет эксперта: Если вы столкнулись с тем, что код в расширении перестал работать без видимых причин, первым делом проверьте флаг «Независимые права подчиненных объектов» в ваших ролях. В 90% случаев в платформе 8.3.23 проблема кроется именно в обновленной модели безопасности прав доступа.
Рассмотрим пример кода для проверки наличия прав в коде, чтобы избежать исключений, о которых упоминалось в сообщениях коллег:
// Вместо прямого вызова, который может вызвать исключение в 8.3.23
Попытка
Сеансы = ПолучитьСеансыИнформационнойБазы();
Исключение
ЗаписьЖурналаРегистрации("Ошибка прав", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеОписаниеОшибки());
Сеансы = Новый Массив;
КонецПопытки;
Использование таких конструкций поможет вашей системе сохранять работоспособность даже при возникновении нестабильного поведения платформенных функций в переходный период обновления.