Как решить проблемы с расширениями и правами доступа при переходе на платформу 8.3.23

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Проблема 1: Ошибки Drag-and-Drop при работе с формами в расширении

Одной из первых проблем, с которой мы сталкиваемся в конфигураторе 8.3.23, является невозможность перетащить ссылочные реквизиты объекта на форму расширения. Если простые типы данных (строка, число, дата) переносятся без проблем, то при попытке перетащить СправочникСсылка или ДокументСсылка система просто игнорирует действие, даже если соответствующие объекты метаданных уже добавлены в расширение.

Разберем причину: Данное поведение связано с внутренним багом платформы (Bug ID: 00170422), некорректно обрабатывающим фоновую проверку метаданных при захвате элементов мышью. Проблема особенно остро проявляется, когда база данных находится на сервере, а расширение активно используется в режиме отладки.

Рассмотрим варианты решения:

  1. Изменение скорости манипуляций: Как отмечают многие коллеги, временным «костылем» может стать замедленное выполнение операции. Если удерживать реквизит над формой в течение 1–2 секунд перед тем, как отпустить кнопку мыши (drop), платформа иногда успевает корректно отработать проверку типов.
  2. Использование контекстного меню: Вместо перетаскивания попробуйте использовать добавление элементов через правую кнопку мыши или через список доступных полей в окне свойств формы, минуя механизм Drag-and-Drop.
  3. Обновление платформы: Официально данная проблема была исправлена в релизе 8.3.23.1865. Если вы используете сборки .1688 или .1739, рекомендуется незамедлительно обновиться до версии 8.3.23.1912 или выше.

Проблема 2: Исчезновение команд печати и кнопок в управляемых формах

Проанализируем ситуацию, когда после обновления платформы пользователи начинают жаловаться на отсутствие привычных кнопок в подменю «Печать» или пропадание произвольных командных кнопок, которые выведены в расширении. Это происходит из-за радикального изменения модели безопасности 1С, начиная с версии 8.3.23.

Выясним причину: Разработчики платформы ужесточили логику проверки прав (Bug ID: 60003417). Раньше система позволяла суммировать права: например, право на чтение документа могло быть в одной роли, а право на просмотр команды этого документа — в другой. Теперь же платформа требует «самодостаточности» роли. Если роль дает право на команду, она обязана давать право хотя бы на чтение объекта-владельца этой команды в рамках той же самой роли.

Разберем алгоритм исправления прав доступа в расширении:

Посмотрим на конкретный пример. Если у вас в расширении создана своя роль для управления печатными формами, выполните следующие действия:

  1. Откройте дерево метаданных расширения и найдите нужную Роль.
  2. В окне свойств этой роли обратите внимание на флаг «Независимые права подчиненных объектов». Установите его в значение «Истина».
  3. Убедитесь, что в этой же роли для соответствующего документа установлены права Чтение и Просмотр.
  4. Если вы используете типовую конфигурацию (например, БП 3.0), проверьте, чтобы объект-владелец (справочник или документ) был захвачен в расширение хотя бы с минимальными правами.

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

Проблема 3: Агрессивное поведение конструктора запросов

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

Рассмотрим подводные камни: В ранних релизах 8.3.23 этот механизм работал избыточно. При попытке добавить одно поле из справочника Контрагенты, конструктор мог по цепочке ссылок (через типы реквизитов) добавить в расширение десятки других объектов (валюты, банки, страны, договора). Это приводит к «раздуванию» расширения и проблемам с реструктуризацией базы данных.

Как работать правильно:

  1. Перед использованием конструктора запросов в расширении, постарайтесь заранее вручную добавить только необходимые объекты.
  2. Внимательно проверяйте список объектов, который предлагает добавить конструктор при выходе. Если список слишком велик — лучше отказаться и добавить нужные таблицы вручную через правую кнопку мыши в дереве метаданных.
  3. Используйте релизы не ниже 8.3.23.1912, где алгоритм автоматического добавления был оптимизирован.

Проблема 4: Конфликты режима совместимости

Многие ошибки, связанные с функциями ПолучитьСеансыИнформационнойБазы или некорректным отображением форм, возникают из-за разрыва между режимом совместимости расширения и актуальной версией платформы. Рассмотрим ситуацию: ваша конфигурация находится в режиме совместимости 8.3.17, а платформа обновлена до 8.3.23.1739.

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

  1. Проверьте режим совместимости самого расширения. Он должен соответствовать режиму совместимости основной конфигурации.
  2. Если конфигурация позволяет, попробуйте поднять режим совместимости до актуального, предварительно протестировав работу на копии.
  3. Обратите внимание на свойство ИспользоватьОсновныеРолиДляВсехПользователей в расширении. В новых релизах некорректная настройка этого свойства может блокировать доступ даже к тем объектам, на которые у пользователя есть полные права в основной базе.

Технические выводы по стабильности релизов

На основе опыта эксплуатации и анализа форумов разработчиков, мы можем составить краткий гид по версиям 8.3.23:

  1. Релизы до 8.3.23.1865: Содержат критические ошибки в Drag-and-Drop, проблемы с отрисовкой команд в расширениях и возможные утечки памяти в процессе rphost при работе с веб-клиентом. Крайне не рекомендуются к использованию.
  2. Релиз 8.3.23.1865: Исправлено большинство интерфейсных багов в конфигураторе. Исправлена ошибка с исчезновением кнопок печати.
  3. Релиз 8.3.23.1912 и выше: Считается наиболее стабильным в данной ветке. Оптимизирована работа конструктора запросов и исправлены ошибки миграции ссылочных типов через XML-выгрузку.

Совет эксперта: Если вы столкнулись с тем, что код в расширении перестал работать без видимых причин, первым делом проверьте флаг «Независимые права подчиненных объектов» в ваших ролях. В 90% случаев в платформе 8.3.23 проблема кроется именно в обновленной модели безопасности прав доступа.

Рассмотрим пример кода для проверки наличия прав в коде, чтобы избежать исключений, о которых упоминалось в сообщениях коллег:


// Вместо прямого вызова, который может вызвать исключение в 8.3.23
Попытка
    Сеансы = ПолучитьСеансыИнформационнойБазы();
Исключение
    ЗаписьЖурналаРегистрации("Ошибка прав", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеОписаниеОшибки());
    Сеансы = Новый Массив;
КонецПопытки;

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

← На главную