1с после добавления роли обновить
В данной статье предлагаю рассмотреть, что такое «расширение конфигурации», как добавить расширение или же отключить его. Начиная с версии 1C 8.3.6.1977 в платформе введен новый механизм – расширения конфигурации. Сначала немного теории.
Что такое расширения?
Расширения представляют в 1С собой что-то вроде параллельных конфигураций, которые автоматически объединяются с основной конфигурацией поставщика. Причем в расширениях можно добавлять как свои объекты, так и заимствовать объекты основной конфигурации.
Для чего нужны расширения?
В первую очередь расширения созданы для облегчения внесения изменений в программу. То есть, если пользователи просят добавить какой-либо функционал, то до появления расширений программистам приходилось снимать конфигурацию с полной поддержки и менять типовую конфигурацию.
Снятие с полной поддержки влечет за собой ряд неудобств:
- пропадает возможность автоматического обновления, что приводит как минимум к увеличению времени на то, чтобы обновить конфигурацию;
- требуется высокая квалификация специалиста, обслуживающего программу;
- если изменения вносились в стандартные объекты типовой конфигурации, то при обновлении они могут пропасть, то есть замениться опять на типовые, от поставщика.
При использовании расширений при внесении изменений программист не будет трогать типовую конфигурацию. Все изменения будут делаться при помощи расширений, которые (как я писал выше) тоже являются конфигурациями. Таким образом, основная конфигурация останется на полной поддержке.
После обновления основной конфигурации, если произошли в новом релизе какие-то изменения с объектом, который ранее был изменен расширением, то изменения все равно возьмутся из расширения. То есть расширения имеют больший приоритет, чем основная конфигурация.
Видео — расширения в 1С за 45 минут
Пример добавления расширения в 1С
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Чтобы показать, что такое расширение, лучше привести пример его создания в конфигураторе 1С.
В конфигураторе зайдем в меню «Конфигурация» и выберем пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Нажмем кнопку «Добавить» и добавим новое расширение. Теперь можно открыть конфигурацию расширения:
Как видно, конфигурация расширения имеет точно такую же структуру, как и основная. Только она изначально совершенно чистая, без объектов.
Недавно я писал статью о том, как самим сделать обработку для перенумерации объектов. На её примере я хочу сделать ее встроенной при помощи расширения.
В обработке у меня есть поле со ссылкой на справочник «Организации». Поэтому мне этот справочник необходим. Но мы не будем создавать новый справочник «Организации», тем более что платформа этого и не позволит. Нельзя, чтобы в конфигурации расширения были объекты, одноименные с объектами в основной конфигурации.
Поэтому справочник мы позаимствуем из основной конфигурации:
Теперь нажмем правой кнопкой мышки на «Обработки» и выберем «Вставить внешнюю обработку, отчет…» Таким образом, добавим новую обработку в конфигурацию расширения. Если Вы используете мою обработку, то сразу переименуйте ее, так как в основной конфигурации уже есть обработка с таким именем.
Ну и последний штрих. Я хочу, чтобы моя обработка отражалась в меню «Администрирование». Для этого позаимствуем одноименную подсистему основной конфигурации. Не забудьте указать в обработке, что она относится к этой подсистеме.
Вот такая структура у меня получилась:
Посмотрим, что у нас получилось. Обновляем конфигурацию базы данных и запускаем программу в режиме 1C: Предприятие, и идем в меню «Администрирование». Да, чуть не забыл, конфигурацию расширения необходимо закрыть, иначе программа не запустится:
Таким образом, мы добавили в программу новую обработку, не изменив при этом основную конфигурацию.
Расширение можно выгрузить в файл и загрузить потом в другую конфигурацию. Это очень удобно для разработчиков. Получив заказ, программист на своей конфигурации делает расширение и передает его потом заказчику.
В заключение хочу сказать, что работа с расширениями еще не закончена. Постоянно добавляются новые возможности, расширяется круг объектов, с которыми можно работать. Поэтому, если Вы решили активно работать с расширениями, чаще обновляйте платформу.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Как мы и обещали в предыдущей статье, мы постепенно наращиваем функциональность механизма расширений и улучшаем диагностику их работоспособности.
Добавление собственных ролей
Раньше существовала возможность изменять роли типовой конфигурации, заимствуя их и добавляя в них объекты, созданные в расширении. Теперь в расширениях вы можете создавать собственные роли.
Мы видим два основных сценария использования собственных ролей. Во-первых, они могут потребоваться для создания атомарных или комплексных наборов прав на те объекты, которые расширение привносит в конфигурацию. Без какой-либо привязки к уже существующим в конфигурации ролям.
Во-вторых, с их помощью можно создавать атомарные или комплексные наборы прав на объекты конфигурации, которые учитывают специфику доработки.
Роли, созданные в расширениях, вы можете добавить пользователю только программно. Например, таким образом:
Пользователь, роли которого дополнены расширением, отображается в конфигураторе со специальным новым значком.
В конфигураторе вы можете удалить роли пользователя, которые добавлены ему расширениями. Но не по-одиночке, а только все вместе. Для этого у пользователя на вкладке Прочее появился пункт Роли, добавленные расширениями конфигурации. Для удаления ролей нужно снять отметку с этого пункта.
Если добавившее роль расширение в какой-то момент перестаёт проходить проверку применимости и становится неактивным, то роль, добавленная из него, продолжает быть доступной через коллекцию РолиПользователя как обычный объект метаданных. С помощью встроенного языка вы можете удалить её из ролей пользователя, или добавить в набор ролей другого пользователя.
Если же вы удаляете расширение, то все добавленные им роли также удаляются из списков ролей пользователей.
Расширение ролей конфигурации
- Устанавливать права для новых собственных объектов;
- Устанавливать права для собственных реквизитов и табличных частей по умолчанию.
Ограничения собственных и заимствованных ролей
Проверка возможности применения
Некоторое конкретное расширение не всегда может быть применено к некоторой конкретной конфигурации. Например потому, что оно само по себе содержит ошибки в модулях. Или потому, что не совпадают значения контролируемых свойств заимствованных объектов.
Первая проблема легко решается ещё до запуска с помощью проверки модулей расширения. А вот о второй проблеме вы могли узнать только после запуска приложения и подключения расширения. Если в этот момент что-то не так с объектами, к которым выполняется обращение, то платформа сообщала об этом и не подключала расширение.
Для того чтобы снизить трудоёмкость разработки расширений, мы проанализировали сложившуюся ситуацию, немного изменили поведение системы, и реализовали ряд проверок.
Теперь новые средства диагностики позволят вам проверить применимость расширений ещё до их реального запуска вместе с конфигурацией.
При запуске клиентского приложения
В Конфигураторе
Первое место, в котором доступна диагностика, это конфигуратор. Здесь, в окне Расширения конфигурации мы добавили две новых команды: Проверка возможности применения и Проверка возможности применения всех расширений.
Эти команды проверяют применимость выбранного расширения (или всех расширений) к данной информационной базе. При этом проверка учитывает даже те изменения в расширениях и конфигурации, которые выполнены, но не применены к информационной базе.
Аналогичную проверку вы можете выполнить и при пакетном запуске конфигуратора. Для этого мы добавили новый параметр командной строки /CheckCanApplyConfigurationExtensions.
Во встроенном языке
Второе место, в котором вам доступна такая диагностика, это встроенный язык. В МенеджерРасширенийКонфигурации мы добавили новый метод ПроверитьВозможностьПримененияВсех(). А в объект РасширениеКонфигурации - метод ПроверитьВозможностьПрименения(). С помощью этих методов вы можете проверить применимость всех (или одного) расширений информационной базы в текущей области данных по порядку загрузки с учётом уже участвовавших в проверке расширений.
Важной и интересной возможностью здесь является то, что метод ПроверитьВозможностьПрименения() позволяет вам проверить применимость новой версии расширения ещё до того, как она будет загружена непосредственно в информационную базу. Новую версию расширения вы можете передать этому методу в виде двоичных данных.
В стандартной обработке «Управление расширениями конфигурации»
И, наконец, последнее место, где доступна новая диагностика, это стандартная обработка Управление расширениями конфигурации. Здесь мы добавили флажок Проверять применимость при добавлении и загрузке расширений. Если он установлен, а по-умолчанию это так, то применимость будет проверяться перед добавлением или перед загрузкой расширения.
Кроме этого в меню Еще мы добавили две команды, которые позволят вам проверить применимость тех расширений, которые уже имеются в списке.
Поэтому работа с правами доступа – одна из частотных задач при внедрении типовых решений.
И, конечно, при добавлении новых документов или справочников – также нужно сразу настроить права доступа на них.
В сегодняшнем видео
В видео мы рассмотрим, что нужно знать о системе прав доступа в типовых решениях:
- Возможности расширений конфигурации – работа с ролями
- Объекты типовых конфигураций для организации прав доступа
- Ограничения текущей версии БСП
- Права доступа на функциональность типовых решений с помощью функций БСП
Таким образом, Вы узнаете не только как дорабатывать права доступа, но и как выделить привилегированных пользователей, например, кому запрещена отгрузка ниже плановой себестоимости.
Если Вы хотите разобраться с этим прямо сейчас – у нас есть курс по администрированию 1С:
Не откладывайте свое обучение!
Комментарии / обсуждение (45):
Добрый день. Подскажите, что делаю не так- беру стандартную роль которая отвечает за список выводимых разделов, переношу ее в расширение, в нее переношу описание раздела и снимаю полностью галку. После запуска раздел продолжается отображаться.
Добрый день!
Возможно, в конфигурации есть еще одна роль, которая предоставляет права на просмотр подсистемы, поэтому она и отображается в режиме “1С:Предприятие”.
Еще одно предположение – расширение не было подключено при старте сеанса, например, из-за того, что значение какого-либо из контролируемых свойств в расширении не совпало со значением этого свойства в основной конфигурации.
Добрый день.
Подскажите пожалуйста, в расширении создаю роль и даю права на реквизит документа, который создан в расширении конфигурации, а пользователям назначаю группу доступа с этими правами из расширения.
Но у меня с полными правами нет доступа к объекту, а у пользователя – есть. Причем проблема в том, что новые реквизиты объекта в расширении существуют для пользователя, например, Объект.НовыйРеквизит, как и Элементы.НовыйРеквизит, а вот для меня с полными правами Элементы.НовыйРеквизит не существует при открытии формы. БСП 3.0.3
Скорее всего Ваши полные права “не видят” реквизит из расширения. Заимствуйте полные права в расширение и проверьте, что для нового реквизита есть право доступа.
Добрый день.
Не хватало прав на работу с отдельными документами в Бух 3.0 (Расходный кассовый ордер). Точнее они есть, но уж больно широкие, почти полные. Пришлось добавить в расширение БП 3.0 соответствующую роль с правами на РКО и форму журнала. При открытии формы журнала под новой ролью, состав команд и кнопок не соответствует типовой заимствованной форме. Вроде дал все нужные права, в составе команд ничего не менял, функциональных опций не менял.А вот при добавлении на заимствованную форму новых кнопок – все отражается как надо…
Все проверил, трассировка кода ничего не показывает. Подскажите в каком направлении рыть. Спасибо!
Бывает в работе с 1С возникает такая ситуация, вы создали в конфигураторе новые Роли, прописали их права, создали новый Профиль групп доступа, отметили ему необходимые Роли, назначили Профиль пользователю. После чего понимаете что нужных прав у пользователя не появилось. Заходите в конфигуратор, а галочки напротив новых ролей не стоят.
Роли в конфигураторе 1С
Очень неприятно, много работы впустую. В чем же может быть дело? Мне известно 2 причины, рассмотрим их в данной статье.
1. Нужно запустить обработку Обновление вспомогательных данных
Данная обработка может быть либо встроена в конфигурацию, либо ее можно найти на диске ИТС. Эту обработку нужно запускать после добавления новых ролей. Она обновит данные в справочнике «Идентификаторы объектов метаданных». Причем порядок ваших действий должен быть такой:
- Снять галочки в правах пользователей с вашего нерабочего профиля
- Удалить нерабочий профиль
- Запустить обработку
- Создать новый профиль с вашей новой ролью
- Назначить профиль пользователям
Если у вас планируется обновление конфигурации можете вместо запуска обработки выполнить его, т.к. во время обновления все эти функции тоже запускаются.
2. Назначение новой роли пользователю с правами Администратора
Если вы проделали все предыдущие пункты, но ваш профиль групп доступа все равно не назначает роли и права, обратите внимание на такой момент — в типовых конфигурациях 1С последних версий, если у пользователя есть роль Администратор или Полные права то вы не сможете присвоить ему какую-либо другую роль. Это прописано в коде программы и при назначении ролей идет проверка «Если роль Администратор или Полные права тогда» назначение ролей пропускается.
Видимо разработчики пользовались такой логикой, что раз у пользователя итак полные права, дополнительные роли ему не понадобятся. Но мы конечно понимаем, что это не так и ситуации и запросы у пользователей к разработчику могут быть разными.
Покажу вам, один пример как я поступила в данной ситуации, может это конечно не лучший вариант, но со свой задачей он справляется.
Задача была запретить пользователю с полными правами открывать справочник пользователей, причем чтоб раздавать этот запрет мог руководитель при помощи профилей групп доступа.
Столкнулся с небольшой проблемкой при создании "своих" ролей в конфигураторе и добавлении их пользователям. Пользователю не добавляются созданные в конфигураторе роли, 1С 8.3, Управляемые формы. Гуглил много, ответа толкового не нашёл, поэтому пришлось разбираться самому и как результат, решил поделиться опытом. Возможно, кому-то пригодится.
Столкнулся с небольшой проблемкой при создании "своих" ролей в конфигураторе и добавлении их пользователям. Гуглил много, ответа толкового не нашёл, поэтому пришлось разбираться самому и как результат, решил поделиться опытом. Возможно кому-то пригодится.
Итак, проблема заключалась в следующем:
В какой-либо конфигурации на управляемых формах создаём свою роль (или несколько ролей, как в примере) (см. рис.1), обновляем конфигурацию. В режиме предприятия создаём профиль групп доступа с нашей новой ролью (см. рис.2), добавляем пользователю этот профиль (см. рис.3) и. ничего не происходит, как-будто у этого пользователя не добавлена наша роль. Заходим в конфигуратор, администрирование, пользователи, заходим в пользователя, смотрим "доступные роли" и видим, что у нашего пользователя не выбрана наша роль (см. рис.4).
Почему так происходит? Всё очень просто, разработчики сделали так, что если пользователь "администратор", то есть у него полные права, то собственно говоря, зачем же ему ещё какие-то роли? Ведь у него же и так полные права!
В целом вполне логично и кстати если пользователь не администратор, то всё работает корректно (см. рис.5 и рис.6). Сложности возникают только в том случае, если мы хотим добавить нашу роль/роли пользователю с полными правами. Можно конечно просто в конфигураторе выбрать у пользователя нашу роль/роли, но всё будет работать ровно до тех пор, пока кто-нибудь не решит перезаписать в режиме предприятия права доступа у этого пользователя, после этого "галочка" у добавленной роли "слетит".
Что же делать и где это происходит?
Идём в общие модули - "УправлениеДоступомСлужебный", находим процедуру "ОбновитьРолиПользователей". В ней есть следующий код:
"НовыеРоли" это Таблица значений, в которой выбраны все роли пользователя, которые мы ему назначили в режиме предприятия (включая "наши" роли). Как видно далее по коду, эта таблица очищается, в неё добавляются "ОбязательныеРолиАдминистратора" (Администратор системы, Полные права) и если выбрано, "ДополнительныеРолиАдминистратора" (Интерактивное открытие внешних отчетов и обработок).
Как мне показалось, самый простой и очевидный вариант, это добавить "наши" роли в таблицу "НовыеРоли". Для этого нам надо как-то отделить эти роли от всех остальных, поэтому у всех добавленных нами в конфигураторе ролей, делаем префикс "Доп_". Те "наши" роли, которые мы выбрали для пользователя, собираем в массив "ВыбранныеДополнительныеРоли" и далее из этого массива добавляем роли в таблицу значений "НовыеРоли". Ниже представлен код:
В заключение добавлю, процедура "ОбновитьРолиПользователей" абсолютна одинакова у многих конфигураций (благодаря "унификации" 1С), смотрел в УНФ 1.6, Бухгалтерия предприятия 3.0, Управление торговлей 11.4 (все конфигурации в нескольких версиях), поэтому сделал расширение, которое по идее должно работать на многих конфигурациях на управляемых формах. Можете скачать и добавить его себе, но предварительно не забудьте, что все добавленные роли должны иметь префикс "Доп_". Расширение написано на версии платформы: 8.3.12.1685. В расширение добавлен один общий модуль "УправлениеДоступомСлужебный", в котором только одна процедура "ОбновитьРолиПользователей" (&Вместо) с добавленным, по описанию выше, кодом. При добавлении расширения, не забываем снять галочки "безопасный режим" и "защита от опасных действий".
Читайте также: