Ошибка в процедуре призаполнениивидовдоступа общего модуля управлениедоступомпереопределяемый

По данным, полученным из процедуры ПриЗаполненииВидовДоступа

общего модуля УправлениеДоступомПереопределяемый, в определяемом типе

«Значение доступа с группами значений доступа объект» не указаны требуемые типы:

— Справочник объект: Банковские счета

Суть в чем. Нашла мануал, пробую по пунктам разобраться.

Начну с начала. Необходимо к одному банковскому счёту ограничить доступ.

Начала делать неверно, потом решила по другому.

Создала справочник ГруппыДоступаБанковскихСчетов, сделала владельца — спр.БанковскиеСчета.

В общем модуле УправлениеДоступомПереопределяемый допилила следующее:

Процедура ПриЗаполненииВидовДоступа(ВидыДоступа) Экспорт

    
    ЗарплатаКадры.УправлениеДоступомЗаполнитьСвойстваВидаДоступа(ВидыДоступа);

    
     // +Наша вставка

    ВидДоступа = ВидыДоступа.Добавить();

    ВидДоступа.Имя = «ГруппыБанковскихСчетов»; // имя вида доступа (используется в ролях для RLS)

    ВидДоступа.Представление    = НСтр(«ru = ‘Группы банковских счетов'»);

    ВидДоступа.ТипЗначений      = Тип(«СправочникСсылка.БанковскиеСчета»); // критерий ограничения доступа

    ВидДоступа.ТипГруппЗначений = Тип(«СправочникСсылка.ГруппыДоступаБанковскихСчетов»); // средство ограничения доступа

    // -Наша вставка

        
        УправлениеДоступомБП.ЗаполнитьВидыДоступа(ВидыДоступа);

    // бит_Финанс Изменение кода. Начало. 09.02.2015{{

    бит_ПраваДоступаОсновной.ЗаполнитьСвойстваВидовДоступа(ВидыДоступа);

    // бит_Финанс Изменение кода. Конец. 09.02.2015}}

    РегламентированнаяОтчетность.ПриЗаполненииВидовДоступа(ВидыДоступа);

        
    //bt_04_0971_suyy_191217_N

    бит_стр_ОМТС_Сервер.УправлениеДоступомЗаполнитьСвойстваВидаДоступа(ВидыДоступа);

    //bt_04_0971_suyy_191217_K

    
КонецПроцедуры

Процедура ПриЗаполненииИспользованияВидаДоступа(ВидДоступа, Использование) Экспорт

    
    ЗарплатаКадры.УправлениеДоступомЗаполнитьИспользованиеВидаДоступа(ВидДоступа, Использование);

    
    // +Наша вставка    

    Если ВидДоступа = «ГруппыБанковскихСчетов» Тогда

        Использование = Истина;

    КонецЕсли;

    // -Наша вставка

//bt_04_0971_suyy_191217_N

    бит_стр_ОМТС_Сервер.УправлениеДоступомЗаполнитьИспользованиеВидаДоступа(ВидДоступа, Использование);

    //bt_04_0971_suyy_191217_K

    
КонецПроцедуры

Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт

        
    Описание = «»;

    
    // +Наша вставка

    // указание прав объектов метаданных, на которые распространяется RLS

    Описание = Описание + »

    |Справочник.БанковскиеСчета.Чтение.ГруппыБанковскихСчетов

    |Справочник.БанковскиеСчета.Изменение.ГруппыБанковскихСчетов

    |»;

    // -Наша вставка

УправлениеДоступомБП.ЗаполнитьВидыОграниченийПравОбъектовМетаданных(Описание);

    
    РегламентированнаяОтчетность.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание);

    
    ЭлектронноеВзаимодействие.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание);

    
    //bt_04_0971_suyy_191217_N

    бит_стр_ОМТС_Сервер.ЗаполнитьВидыОграниченийПравОбъектовМетаданных(Описание);

    //bt_04_0971_suyy_191217_K

КонецПроцедуры

База не типовая, да, НО! Вид доступа добавляется по идее так же. Никаких сильных различий быть не должно.

И как видно по коду, тип у меня указан.

Что может быть?

Как доработать производительный RLS

Вступление

Неоднократно в последнее время сталкивался с задачами, когда требовалось доработать новый производительный RLS. В данной статье опишу последовательность действий при доработке нового RLS, опишу ключевые моменты и сложности, с которыми столкнулся. В Интернете статей или инструкций, которые подробно и просто описывают – как доработать производительный RLS, я не обнаружил и решил сам поделиться своим опытом.

В данной статье не буду описывать различия и плюсы/минусы между стандартным и производительным RLS, в Интернете по этому вопросу есть много информации.

Задачи, требующие доработок RLS

Опишу типы задач, в которых потребовалась доработка RLS и приведу примеры реальных задач. В последующих разделах подробно раскрою каждую задачу.

1) Объект должен учитывать типовое ограничение доступа (реальная задача: типовой документ «Реестр платежей» должен содержать типовое ограничение доступа: «Организация»);

2) Расширение типового ограничения доступа на другие реквизиты объекта (реальная задача: типовой документ «Перемещение товаров» должен учитывать типовое ограничение доступа: «Организация» по реквизитам: «Организация» и «ОрганизацияПолучатель»); более подробно как организовать работу между филиалами с включенным RLS будет рассказано в следующей статье.

3) Новое ограничение доступа на типовые объекты (реальная задача: добавить новое ограничение: «Группы финансового учета расчетов» для документа: «Реализация товаров и услуг»).

4) Объект должен учитывать ограничение доступа через другой объект (реальная задача: добавить новое ограничение «Группы финансового учета расчетов» из объекта «Договоры контрагента» для документа «Заказ клиента»).

Объект должен учитывать типовое ограничение доступа

Чтобы объект учитывал типовое ограничение доступа (организация, склад и т.д.), необходимо выполнить ряд следующих действий:

1) В первую очередь новый объект нужно добавить в определяемы тип:

  • все объекты добавляем в: ВладелецЗначенийКлючейДоступа

  • документы в: ВладелецЗначенийКлючейДоступаДокумент

  • справочники в: ВладелецЗначенийКлючейДоступаОбъект

  • регистры сведений и регистры накопления в: ВладелецЗначенийКлючейДоступаНаборЗаписей

  • регистры расчета в: ВладелецЗначенийКлючейДоступаНаборЗаписейРегистраРасчета

2) В общей модуль «УправлениеДоступомПереопределяемый» в процедуру «ПриЗаполненииСписковСОграничениемДоступа»
добавить объект (метаданные).

3) В общей модуль «УправлениеДоступомПереопределяемый» в процедуру «ПриЗаполненииВидовОграниченийПравОбъектовМетаданных»
в запрос — добавить объект и вид доступа.

4) Добавить новую роль на чтение нашего объекта. Добавить права на – «Чтение», «Просмотр» объекта.

Скопировать в новую роль типовой шаблон RLS — ДляОбъекта(ПолеОбъекта)

Для права «Чтение» для полей <Прочие поля> добавить ограничение: #ДляОбъекта(«»)

5) Добавить новую роль на изменение/добавление нашего объекта. Добавить все права, кроме удалений.

Скопировать в новую роль типовой шаблон RLS — ДляОбъекта(ПолеОбъекта)

Для права «Изменение», «Добавление» для полей <Прочие поля> добавить ограничение: #ДляОбъекта(«»)

6) В модель менеджера объекта добавить (при её отсутствии):

#Область ДляВызоваИзДругихПодсистем и процедуру

 Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

в модуле процедуры заполнить — Ограничение.Текст запросом с нужными видами доступа.

7) В форму объекта добавить код в начало процедуры ПриЧтенииНаСервере:

// СтандартныеПодсистемы.УправлениеДоступом

Если ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.УправлениеДоступом») Тогда

МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль(«УправлениеДоступом»);

МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);

КонецЕсли;

// Конец СтандартныеПодсистемы.УправлениеДоступом

8)       В форму объекта добавить код в конец процедуры ПослеЗаписиНаСервере:

// СтандартныеПодсистемы.УправлениеДоступом

УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);

// Конец СтандартныеПодсистемы.УправлениеДоступом

9) В пользовательском режиме при создании новых профилей/ групп доступа (с ограничениями)  обязательно нужно учитывать, чтобы не добавить типовую роль, на которой отключен RLS (отсутствуют шаблоны ограничений). В следующих статьях я подробно опишу об ограничениях типового RLS.

10) Запустить конфигурацию с параметром: «/c обновление информационной базы» или запустить обработку – «Инструменты разработчика. Обновление Вспомогательных Данных» (можно скачать на сайте ИТС).

11) В пользовательском режиме удалить запись из регистра сведений «Параметры ограничений доступа» (через возможности – «Еще»). В «НСИ и администрирование» — «Настройки пользователей и прав» — «Ограничение доступа на уровне записей», запустить процедуру обновления доступа на уровне записей. При выполнения данной процедуры будут появляться ошибки, если они есть в ограничениях доступа объектов.

Реальная задача: типовой документ «Реестр платежей» должен содержать типовое ограничение доступа: «Организация»:

1. Добавим документ «Реестр платежей» в определяемый тип: ВладелецЗначенийКлючейДоступа

2. Добавим документ «Реестр платежей» в определяемый тип: ВладелецЗначенийКлючейДоступаДокумент

3. В общей модуль «УправлениеДоступомПереопределяемый» в конец процедуры «ПриЗаполненииСписковСОграничениемДоступа»
добавил код:

Списки.Вставить(Метаданные.Документы.РеестрПлатежей, Истина);

4. В общей модуль «УправлениеДоступомПереопределяемый» в процедуру «ПриЗаполненииВидовОграниченийПравОбъектовМетаданных»
в конец запроса добавим следующий код:

|Документ.РеестрПлатежей.Чтение.Организации

|Документ.РеестрПлатежей.Изменение.Организации

5. Добавим новую роль на чтение документа «Реестр платежей», согласно рисунку 1.

1.png

Рисунок 1 – Роль «Чтение реестра платежей».

6. Добавим новую роль на добавление/изменение документа «Реестр платежей», согласно рисунку 2.

2.png

Рисунок 2 – Роль «Добавление изменение реестра платежей».

7. Добавим в модуль менеджера документа «Реестр платежей» следующий код:

#Область ДляВызоваИзДругихПодсистем

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

           Ограничение.Текст =

           «РазрешитьЧтениеИзменение

           |ГДЕ

           |           ЗначениеРазрешено(Организация»;

КонецПроцедуры

#КонецОбласти

8. В форме документа «Реестр Платежей» добавим в начало процедуры ПриЧтенииНаСервере, следующий код:

// СтандартныеПодсистемы.УправлениеДоступом

Если ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.УправлениеДоступом») Тогда

МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль(«УправлениеДоступом»);

МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);

КонецЕсли;

// Конец СтандартныеПодсистемы.УправлениеДоступом

9. В форме документа «Реестр Платежей» добавим в конец процедуры ПослеЗаписиНаСервере, следующий код:

// СтандартныеПодсистемы.УправлениеДоступом

УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);

// Конец СтандартныеПодсистемы.УправлениеДоступом

10. Создаем новый профиль/группу доступа – «Реестр платежей» (ограничение по организациям) добавляем туда новые роли.

Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Реестр платежей» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа)).

12) Запустим обработку – «Инструменты разработчика. Обновление Вспомогательных Данных», выполним все пункты (можно скачать на сайте ИТС).

13) В пользовательском режиме удалить запись из регистра сведений «Параметры ограничений доступа» (через возможности – «Еще»). В «НСИ и администрирование» — «Настройки пользователей и прав» — «Ограничение доступа на уровне записей», запустить процедуру обновления доступа на уровне записей. При выполнения данной процедуры будут появляться ошибки, если они есть в ограничениях доступа документа «Реестр платежей».

Подпишитесь на дайджест!

Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.

Расширение типового ограничения доступа на другие реквизиты объекта

Чтобы расширить типовое ограничения доступа на другие реквизиты объекта, необходимо доработать только в модуле менеджера процедуру – ПриЗаполненииОграниченияДоступа.

В пользовательском режиме при создании новых профилей/групп доступа (ограничение по организациям) – обязательно нужно учитывать, чтобы не добавить типовую роль, на которой отключен RLS (отсутствуют шаблоны ограничений). В следующих статьях я подробно опишу об ограничениях типового RLS.

Реальная задача: типовой документ «Перемещение товаров» должен учитывать типовое ограничение доступа: «Организация» по реквизитам: «Организация» и «ОрганизацияПолучатель».

Изменяем код процедуры «ПриЗаполненииОграниченияДоступа»
документа «Перемещение товаров» в модуле менеджера на следующий:

            Ограничение.Текст =

            «РазрешитьЧтениеИзменение

            |ГДЕ

            |           (ЗначениеРазрешено(Организация)

            |           ИЛИ ЗначениеРазрешено(ОрганизацияПолучатель))

            |           И( ЗначениеРазрешено(СкладОтправитель)

            |           ИЛИ ЗначениеРазрешено(СкладПолучатель)

            |           ) «;

Создаем новый профиль/группу доступа – «Перемещение товаров» добавляем туда роли для документа «Перемещение товаров» или выбираем уже существующий и туда добавляем роли (ограничение по организациям).

Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Перемещение товаров» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа)).

Новое ограничение доступа на объекты

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

1. Добавить новое ограничение в два определяемых типа:

  • ЗначениеДоступа;

  • ЗначениеДоступаОбъект.

2. В общей модуль «УправлениеДоступомУТ» в процедуру «ПриЗаполненииВидовДоступа» добавить данные о новом виде доступа.

3. В общей модуль «УправлениеДоступомПереопределяемый» в процедуру «ПриЗаполненииВидовОграниченийПравОбъектовМетаданных»
добавить в запросе — данные о новом виде доступа в объекте.

4. В модуле менеджера объекта в процедуру «ПриЗаполненииОграниченияДоступа» добавить необходимый реквизит для ограничения в переменную: Ограничение.Текст

5. В пользовательском режиме при создании новых профилей/групп доступа (с ограничениями) – обязательно нужно учитывать, чтобы не добавить типовую роль, на которой отключен RLS (отсутствуют шаблоны ограничений). В следующих статьях я подробно опишу об ограничениях типового RLS.

6. Запустить конфигурацию с параметром: «/c обновление информационной базы» или запустить обработку – «Инструменты разработчика. Обновление Вспомогательных Данных»
(можно скачать на сайте ИТС).

7. В пользовательском режиме удалить запись из регистра сведений «Параметры ограничений доступа»
(через возможности – «Еще»). В «НСИ и администрирование» — «Настройки пользователей и прав» — «Ограничение доступа на уровне записей», запустить процедуру обновления доступа на уровне записей. При выполнения данной процедуры будут появляться ошибки, если они есть в ограничениях доступа объектов.

Для добавление нового ограничения доступа на нетиповой объект, нужно выполнить также действия из пункта «Объект должен учитывать типовое ограничение доступа».

Реальная задача: добавить новое ограничение: «Группы финансового учета расчетов» для документа: «Реализация товаров и услуг».

1. Добавить новое ограничение «Группы финансового учета расчетов» в два определяемых типа:

  • ЗначениеДоступа;

  • ЗначениеДоступаОбъект.

2. В общей модуль «УправлениеДоступомУТ» в процедуру «ПриЗаполненииВидовДоступа» добавим следующий код:

ВидДоступа = ВидыДоступа.Добавить();

ВидДоступа.Имя = «ГруппыФинансовогоУчетаРасчетов»;

ВидДоступа.Представление = НСтр(«ru = ‘Группы финансового учета расчетов'»);

ВидДоступа.ТипЗначений   = Тип(«СправочникСсылка.ГруппыФинансовогоУчетаРасчетов»);

3. В общей модуль «УправлениеДоступомПереопределяемый»
в процедуру «ПриЗаполненииВидовОграниченийПравОбъектовМетаданных»
добавим следующий код в конец запроса:

|Документ.РеализацияТоваровУслуг.Чтение.ГруппыФинансовогоУчетаРасчетов

|Документ.РеализацияТоваровУслуг.Изменение.ГруппыФинансовогоУчетаРасчетов

4. В модуле менеджера документа «Реализация товаров и услуг» в процедуру «ПриЗаполненииОграниченияДоступа» внесем следующий код:

      Ограничение.Текст =

      «РазрешитьЧтениеИзменение

      |ГДЕ

      |           ЗначениеРазрешено(Организация)

      |           И ЗначениеРазрешено(Склад)

      |           И ЗначениеРазрешено(Подразделение)

      |           И ЗначениеРазрешено(Партнер)

      |           И ЗначениеРазрешено(ГруппаФинансовогоУчета)»;

5. Создаем новый профиль/группу доступа – «Реализация товаров и услуг» добавляем туда роли для документа «Реализация товаров и услуг» или выбираем уже существующий и туда добавляем роли (ограничение по группа финансового учета расчетов) (см. рисунок 3).

3.png

Рисунок 3 – Отображение нового вида доступа: Группы финансового учета расчетов.

6. Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Реализация товаров и услуг» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа)).

7. Запустить обработку – «Инструменты разработчика. Обновление Вспомогательных Данных», выбрать все пункты (можно скачать на сайте ИТС).

8. В пользовательском режиме удалить запись из регистра сведений «Параметры ограничений доступа»
(через возможности – «Еще»). В «НСИ и администрирование» — «Настройки пользователей и прав» — «Ограничение доступа на уровне записей», запустить процедуру обновления доступа на уровне записей. При выполнения данной процедуры будут появляться ошибки, если они есть в ограничениях доступа документа «Перемещение товаров».

Объект должен учитывать ограничение доступа через другой объект

Чтобы учитывалось ограничение доступа через другой объект в исходном объекте, достаточно в модуле менеджера объекта в процедуре «ПриЗаполненииОграниченияДоступа» добавить следующую конструкцию в переменную Ограничение.Текст:

Ограничение.Текст =

«ПрисоединитьДополнительныеТаблицы

|ЭтотСписок КАК Т //Исходный объект с его реквизитами

|ЛЕВОЕ СОЕДИНЕНИЕ ХХХ КАК Т2 //присоединяем другие объекты

|           ПО Т2.хх = Т.ххх //можем использовать необходимые поля в соединениях

|……….. //может быть несколько соединений

|;

|РазрешитьЧтениеИзменение

|ГДЕ

|ЗначениеРазрешено(Т.ххх) //ограничение из основного объекта

|И ЗначениеРазрешено(Т2.ххх)//ограничение через реквизиты другого объекта»;

В пользовательском режиме при создании новых профилей/групп доступа (с учетом нужного ограничения) – обязательно нужно учитывать, чтобы не добавить типовую роль, на которой отключен RLS (отсутствуют шаблоны ограничений). В следующих статьях я подробно опишу об ограничениях типового RLS.

Реальная задача: добавить новое ограничение «Группы финансового учета расчетов» из объекта «Договоры контрагента» для документа «Заказ клиента»

Добавим в модуле менеджера документа «Заказ клиента» в процедуру «ПриЗаполненииОграниченияДоступа» следующий код:

            Ограничение.Текст =

            «ПрисоединитьДополнительныеТаблицы

            |ЭтотСписок КАК Т

            |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК Т2

            |           ПО Т2.Ссылка = Т.Договор

            |;

            |РазрешитьЧтениеИзменение

            |ГДЕ

            |           ЗначениеРазрешено(Т.Организация)

            |           И ЗначениеРазрешено(Т.Склад)

            |           И ЗначениеРазрешено(Т.Партнер)

            |           И ЗначениеРазрешено(Т.Подразделение)

            |           И ЗначениеРазрешено(Т2.ГруппаФинансовогоУчета)»;

Создаем новый профиль/группу доступа – «Заказ клиента» добавляем туда роли для документа «Заказ клиента» или выбираем уже существующий и туда добавляем роли (ограничение по группам финансового учет расчетов).

Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Заказ клиента» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа).

Тестирование описанных доработок проводил на конфигурации: 1С:ERP. Управление холдингом (3.1.4.31).  Но это применимо и для всех остальных конфигураций, которые поддерживают производительный RLS.

Содержание:

1.      Постановка задачи – ограничение доступа к учету остатков товара на складе

2.       Решение задачи – работа в ИБ

1.     Постановка задачи – ограничение доступа к учету остатков товара на складе

В конфигурации 1С «Управление нашей фирмой 1.6» не реализовано ограничение прав на уровне записей по «Структурным единицам» (склады и подразделения). Такая возможность все чаще становится востребованной, поэтому в данной статье я расскажу, как реализовать такое ограничение на примере конкретной задачи.   

Итак, организация осуществляет розничную и оптовую торговлю через несколько торговых точек и складов. Все сотрудники работают в одной информационной базе. Между складами и торговыми точками также происходит перемещение товаров. Требуется ограничить влияние на учет остатков товаров на складе сотрудников других складов.

2.     Решение задачи – работа в ИБ

Для того чтобы получить возможность использовать в отборе видов доступа значения справочника «Структурные единицы», необходимо расширить определяемый тип «ЗначениеДоступа», включив в него тип «СправочникСсылка.СтруктурныеЕдиницы» (1).

Рис. 1 Расширение определяемого типа в 1С 8 УНФ

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

Следующим этапом в процедуре «ПриЗаполненииВидовДоступа» общего модуля «УправлениеДоступомПереопределяемый» необходимо добавить новый вид доступа «Структурные единицы» в 1С УНФ 1.6. Сделать это лучше через расширение. Получим такой код:    


Рис. 2 Код для расширения типа в 1С 8 УНФ

На этом этапе нужно сохранить и обновить конфигурацию 1С:Управление нашей формой 8, запустить работу ИБ в режиме «Предприятие» и выполнить код (с помощью обработки): «УправлениеДоступомСлужебный.ОбновитьОписаниеСвойствВидовДоступа();». Завершаем работу в ИБ.

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

Рис. 3 Код расширения процедуры в 1С 8 УНФ

Также сохраняем и обновляем конфигурацию, запускаем ИБ в режиме «Предприятие» и выполняем код (с помощью обработки): «Справочники.ПрофилиГруппДоступа.ОбновитьОписаниеПоставляемыхПрофилей();». Завершаем работу в ИБ и запускаем ее в режиме «Предприятие» вновь.

В 1С:Управление нашей фирмой 8.3 открываем справочник «Профили групп доступа», находим в нем элемент «Закупки» и открываем его форму.

Рис. 4 Справочник Профили групп доступа в 1С 8 УНФ

На ней мы видим сообщение (1) о том, что в поставляемый профиль были внесены изменения. Чтобы привести настройку профиля в соответствие с описанием поставляемого профиля в 1С 8 УНФ, необходимо выполнить команду «Восстановить по начальному заполнению» (3). Далее последовательно появятся два диалоговых окна, где необходимо нажать кнопку «Да».



Рис. 5 Восстановление профиля по начальному заполнению в 1С 8 УНФ

После чего в списке «Ограничения доступа» появится вид доступа «Структурные единицы».

Рис. 6 Вид доступа Структурные единицы в 1С 8 УНФ

Указанные действия необходимо проделать с профилями групп доступа «Продажи» и «Производство».

Далее составим перечень документов, изменение которых мы хотим ограничить, с контролем доступности на складе:

·         ПриходнаяНакладная;

·         РасходнаяНакладная;

·         ПеремещениеЗапасов;

·         ИнвентаризацияЗапасов;

·         ОприходованиеЗапасов;

·         ПересортицаЗапасов;

·         СписаниеЗапасов;

·         СборкаЗапасов;

·         ОтчетОРозничныхПродажах;

·         ЧекККМ;

·         ЧекККМВозврат.

Поместим эти документы в расширение.

Далее через контекстное меню «Все роли» определяем состав ролей, которые имеют право на «Добавление» и «Изменение» указанных документов для доступа на склад:

·         ДобавлениеИзменениеВозвратовОтПокупателей;

·         ДобавлениеИзменениеВозвратовПоставщикам;

·         ДобавлениеИзменениеПеремещенийЗапасов;

·         ДобавлениеИзменениеПодсистемыЗакупки;

·         ДобавлениеИзменениеПодсистемыЗапасыИСклад;

·         ДобавлениеИзменениеПодсистемыИзлишкиИНедостачи;

·         ДобавлениеИзменениеПодсистемыПродажи;

·         ДобавлениеИзменениеПодсистемыПроизводство;

·         ДобавлениеИзменениеПодсистемыРозничныеПродажи.

Эти роли также поместим в расширение в 1С УНФ 1.6.

Далее в расширении будем поочередно для выбранной роли и документа (при условии, что в основной конфигурации у роли установлены права «Чтение», «Добавление», «Изменение» на документ) устанавливать права следующим образом (на примере документа «Расходная накладная»):

·         «Чтение»

·         Скопируем текст ограничения доступа из основной конфигурации, его изменять не будем;

Рис. 7 Вид доступа Чтение в 1С 8 УНФ

·         «Добавление»

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

Рис. 8 Вид доступа Добавление в 1С 8 УНФ

·         «Изменение»

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

Рис. 9 Вид доступа Добавление в 1С 8 УНФ

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

·         «Добавление»

Рис. 10 Добавление в Перемещении остатков в 1С 8 УНФ

·         «Изменение»

Рис. 11 Изменение в Перемещении остатков в 1С 8 УНФ

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

Результирующий состав расширения:

Рис. 12 Результирующий состав расширения  в 1С 8 УНФ

На этом работы завершены и дело только за настройкой ограничений 1С:Управление нашей фирмой 1.6 в режиме «Предприятие».

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

Специалист компании «Кодерлайн»

Павел Коротин

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Функционал подсистемы УправлениеДоступом позволяет работать с RLS в двух режимах: стандартном и производительном. Оба режима RLS в 1С имеют свои преимущества и недостатки.

RLS в 1С

Для гибкой настройки прав пользователей в конфигурациях на базе БСП (подсистема УправлениеДоступом) реализован механизм настройки доступа на уровне записей (RLS). Этот механизм позволяет ограничивать доступ не только по видам объектов (для конкретных справочников, документов…), но и по данным в этих объектах (т.е., например, ограничить список документов только по одной организации или по конкретному менеджеру).

Функционал подсистемы УправлениеДоступом позволяет работать с RLS в двух режимах: стандартном и производительном. Каждый из режимов имеет свои преимущества и недостатки относительно другого. Основные из них будут рассмотрены в тексте далее.

Для дальнейших скриншотов, примеров кода, а также для решения задачи будем использовать демонстрационную конфигурацию «Библиотека стандартных подсистем», редакция 3.1 (3.1.5.132).

Ограничения RLS описываются в роли для конкретного объекта. Например, ограничение на чтение документа _ДемоСчетНаОплатуПокупателю в роли
_ДемоЧтениеДокументовПокупателей описывается следующим образом:

Производительный режим RLS в 1С

Рисунок 1 – Роль «Чтение реестра платежей».

6. Добавим новую роль на добавление/изменение документа «Реестр платежей», согласно рисунку 2.

2.png

Рисунок 2 – Роль «Добавление изменение реестра платежей».

7. Добавим в модуль менеджера документа «Реестр платежей» следующий код:

#Область ДляВызоваИзДругихПодсистем

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

           Ограничение.Текст =

           «РазрешитьЧтениеИзменение

           |ГДЕ

           |           ЗначениеРазрешено(Организация»;

КонецПроцедуры

#КонецОбласти

8. В форме документа «Реестр Платежей» добавим в начало процедуры ПриЧтенииНаСервере, следующий код:

// СтандартныеПодсистемы.УправлениеДоступом

Если ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.УправлениеДоступом») Тогда

МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль(«УправлениеДоступом»);

МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);

КонецЕсли;

// Конец СтандартныеПодсистемы.УправлениеДоступом

9. В форме документа «Реестр Платежей» добавим в конец процедуры ПослеЗаписиНаСервере, следующий код:

// СтандартныеПодсистемы.УправлениеДоступом

УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);

// Конец СтандартныеПодсистемы.УправлениеДоступом

10. Создаем новый профиль/группу доступа – «Реестр платежей» (ограничение по организациям) добавляем туда новые роли.

Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Реестр платежей» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа)).

12) Запустим обработку – «Инструменты разработчика. Обновление Вспомогательных Данных», выполним все пункты (можно скачать на сайте ИТС).

13) В пользовательском режиме удалить запись из регистра сведений «Параметры ограничений доступа» (через возможности – «Еще»). В «НСИ и администрирование» — «Настройки пользователей и прав» — «Ограничение доступа на уровне записей», запустить процедуру обновления доступа на уровне записей. При выполнения данной процедуры будут появляться ошибки, если они есть в ограничениях доступа документа «Реестр платежей».

Подпишитесь на дайджест!

Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.

Расширение типового ограничения доступа на другие реквизиты объекта

Чтобы расширить типовое ограничения доступа на другие реквизиты объекта, необходимо доработать только в модуле менеджера процедуру – ПриЗаполненииОграниченияДоступа.

В пользовательском режиме при создании новых профилей/групп доступа (ограничение по организациям) – обязательно нужно учитывать, чтобы не добавить типовую роль, на которой отключен RLS (отсутствуют шаблоны ограничений). В следующих статьях я подробно опишу об ограничениях типового RLS.

Реальная задача: типовой документ «Перемещение товаров» должен учитывать типовое ограничение доступа: «Организация» по реквизитам: «Организация» и «ОрганизацияПолучатель».

Изменяем код процедуры «ПриЗаполненииОграниченияДоступа»
документа «Перемещение товаров» в модуле менеджера на следующий:

            Ограничение.Текст =

            «РазрешитьЧтениеИзменение

            |ГДЕ

            |           (ЗначениеРазрешено(Организация)

            |           ИЛИ ЗначениеРазрешено(ОрганизацияПолучатель))

            |           И( ЗначениеРазрешено(СкладОтправитель)

            |           ИЛИ ЗначениеРазрешено(СкладПолучатель)

            |           ) «;

Создаем новый профиль/группу доступа – «Перемещение товаров» добавляем туда роли для документа «Перемещение товаров» или выбираем уже существующий и туда добавляем роли (ограничение по организациям).

Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Перемещение товаров» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа)).

Новое ограничение доступа на объекты

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

1. Добавить новое ограничение в два определяемых типа:

  • ЗначениеДоступа;

  • ЗначениеДоступаОбъект.

2. В общей модуль «УправлениеДоступомУТ» в процедуру «ПриЗаполненииВидовДоступа» добавить данные о новом виде доступа.

3. В общей модуль «УправлениеДоступомПереопределяемый» в процедуру «ПриЗаполненииВидовОграниченийПравОбъектовМетаданных»
добавить в запросе — данные о новом виде доступа в объекте.

4. В модуле менеджера объекта в процедуру «ПриЗаполненииОграниченияДоступа» добавить необходимый реквизит для ограничения в переменную: Ограничение.Текст

5. В пользовательском режиме при создании новых профилей/групп доступа (с ограничениями) – обязательно нужно учитывать, чтобы не добавить типовую роль, на которой отключен RLS (отсутствуют шаблоны ограничений). В следующих статьях я подробно опишу об ограничениях типового RLS.

6. Запустить конфигурацию с параметром: «/c обновление информационной базы» или запустить обработку – «Инструменты разработчика. Обновление Вспомогательных Данных»
(можно скачать на сайте ИТС).

7. В пользовательском режиме удалить запись из регистра сведений «Параметры ограничений доступа»
(через возможности – «Еще»). В «НСИ и администрирование» — «Настройки пользователей и прав» — «Ограничение доступа на уровне записей», запустить процедуру обновления доступа на уровне записей. При выполнения данной процедуры будут появляться ошибки, если они есть в ограничениях доступа объектов.

Для добавление нового ограничения доступа на нетиповой объект, нужно выполнить также действия из пункта «Объект должен учитывать типовое ограничение доступа».

Реальная задача: добавить новое ограничение: «Группы финансового учета расчетов» для документа: «Реализация товаров и услуг».

1. Добавить новое ограничение «Группы финансового учета расчетов» в два определяемых типа:

  • ЗначениеДоступа;

  • ЗначениеДоступаОбъект.

2. В общей модуль «УправлениеДоступомУТ» в процедуру «ПриЗаполненииВидовДоступа» добавим следующий код:

ВидДоступа = ВидыДоступа.Добавить();

ВидДоступа.Имя = «ГруппыФинансовогоУчетаРасчетов»;

ВидДоступа.Представление = НСтр(«ru = ‘Группы финансового учета расчетов'»);

ВидДоступа.ТипЗначений   = Тип(«СправочникСсылка.ГруппыФинансовогоУчетаРасчетов»);

3. В общей модуль «УправлениеДоступомПереопределяемый»
в процедуру «ПриЗаполненииВидовОграниченийПравОбъектовМетаданных»
добавим следующий код в конец запроса:

|Документ.РеализацияТоваровУслуг.Чтение.ГруппыФинансовогоУчетаРасчетов

|Документ.РеализацияТоваровУслуг.Изменение.ГруппыФинансовогоУчетаРасчетов

4. В модуле менеджера документа «Реализация товаров и услуг» в процедуру «ПриЗаполненииОграниченияДоступа» внесем следующий код:

      Ограничение.Текст =

      «РазрешитьЧтениеИзменение

      |ГДЕ

      |           ЗначениеРазрешено(Организация)

      |           И ЗначениеРазрешено(Склад)

      |           И ЗначениеРазрешено(Подразделение)

      |           И ЗначениеРазрешено(Партнер)

      |           И ЗначениеРазрешено(ГруппаФинансовогоУчета)»;

5. Создаем новый профиль/группу доступа – «Реализация товаров и услуг» добавляем туда роли для документа «Реализация товаров и услуг» или выбираем уже существующий и туда добавляем роли (ограничение по группа финансового учета расчетов) (см. рисунок 3).

3.png

Рисунок 3 – Отображение нового вида доступа: Группы финансового учета расчетов.

6. Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Реализация товаров и услуг» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа)).

7. Запустить обработку – «Инструменты разработчика. Обновление Вспомогательных Данных», выбрать все пункты (можно скачать на сайте ИТС).

8. В пользовательском режиме удалить запись из регистра сведений «Параметры ограничений доступа»
(через возможности – «Еще»). В «НСИ и администрирование» — «Настройки пользователей и прав» — «Ограничение доступа на уровне записей», запустить процедуру обновления доступа на уровне записей. При выполнения данной процедуры будут появляться ошибки, если они есть в ограничениях доступа документа «Перемещение товаров».

Объект должен учитывать ограничение доступа через другой объект

Чтобы учитывалось ограничение доступа через другой объект в исходном объекте, достаточно в модуле менеджера объекта в процедуре «ПриЗаполненииОграниченияДоступа» добавить следующую конструкцию в переменную Ограничение.Текст:

Ограничение.Текст =

«ПрисоединитьДополнительныеТаблицы

|ЭтотСписок КАК Т //Исходный объект с его реквизитами

|ЛЕВОЕ СОЕДИНЕНИЕ ХХХ КАК Т2 //присоединяем другие объекты

|           ПО Т2.хх = Т.ххх //можем использовать необходимые поля в соединениях

|……….. //может быть несколько соединений

|;

|РазрешитьЧтениеИзменение

|ГДЕ

|ЗначениеРазрешено(Т.ххх) //ограничение из основного объекта

|И ЗначениеРазрешено(Т2.ххх)//ограничение через реквизиты другого объекта»;

В пользовательском режиме при создании новых профилей/групп доступа (с учетом нужного ограничения) – обязательно нужно учитывать, чтобы не добавить типовую роль, на которой отключен RLS (отсутствуют шаблоны ограничений). В следующих статьях я подробно опишу об ограничениях типового RLS.

Реальная задача: добавить новое ограничение «Группы финансового учета расчетов» из объекта «Договоры контрагента» для документа «Заказ клиента»

Добавим в модуле менеджера документа «Заказ клиента» в процедуру «ПриЗаполненииОграниченияДоступа» следующий код:

            Ограничение.Текст =

            «ПрисоединитьДополнительныеТаблицы

            |ЭтотСписок КАК Т

            |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК Т2

            |           ПО Т2.Ссылка = Т.Договор

            |;

            |РазрешитьЧтениеИзменение

            |ГДЕ

            |           ЗначениеРазрешено(Т.Организация)

            |           И ЗначениеРазрешено(Т.Склад)

            |           И ЗначениеРазрешено(Т.Партнер)

            |           И ЗначениеРазрешено(Т.Подразделение)

            |           И ЗначениеРазрешено(Т2.ГруппаФинансовогоУчета)»;

Создаем новый профиль/группу доступа – «Заказ клиента» добавляем туда роли для документа «Заказ клиента» или выбираем уже существующий и туда добавляем роли (ограничение по группам финансового учет расчетов).

Добавляем в группу доступа пользователей, обязательно проверяем – чтобы не были даны права на документ – «Заказ клиента» без RLS (т.к. в типовых ролях может отсутствовать RLS (шаблоны ограничений доступа).

Тестирование описанных доработок проводил на конфигурации: 1С:ERP. Управление холдингом (3.1.4.31).  Но это применимо и для всех остальных конфигураций, которые поддерживают производительный RLS.

Содержание:

1.      Постановка задачи – ограничение доступа к учету остатков товара на складе

2.       Решение задачи – работа в ИБ

1.     Постановка задачи – ограничение доступа к учету остатков товара на складе

В конфигурации 1С «Управление нашей фирмой 1.6» не реализовано ограничение прав на уровне записей по «Структурным единицам» (склады и подразделения). Такая возможность все чаще становится востребованной, поэтому в данной статье я расскажу, как реализовать такое ограничение на примере конкретной задачи.   

Итак, организация осуществляет розничную и оптовую торговлю через несколько торговых точек и складов. Все сотрудники работают в одной информационной базе. Между складами и торговыми точками также происходит перемещение товаров. Требуется ограничить влияние на учет остатков товаров на складе сотрудников других складов.

2.     Решение задачи – работа в ИБ

Для того чтобы получить возможность использовать в отборе видов доступа значения справочника «Структурные единицы», необходимо расширить определяемый тип «ЗначениеДоступа», включив в него тип «СправочникСсылка.СтруктурныеЕдиницы» (1).

Рис. 1 Расширение определяемого типа в 1С 8 УНФ

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

Следующим этапом в процедуре «ПриЗаполненииВидовДоступа» общего модуля «УправлениеДоступомПереопределяемый» необходимо добавить новый вид доступа «Структурные единицы» в 1С УНФ 1.6. Сделать это лучше через расширение. Получим такой код:    


Рис. 2 Код для расширения типа в 1С 8 УНФ

На этом этапе нужно сохранить и обновить конфигурацию 1С:Управление нашей формой 8, запустить работу ИБ в режиме «Предприятие» и выполнить код (с помощью обработки): «УправлениеДоступомСлужебный.ОбновитьОписаниеСвойствВидовДоступа();». Завершаем работу в ИБ.

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

Рис. 3 Код расширения процедуры в 1С 8 УНФ

Также сохраняем и обновляем конфигурацию, запускаем ИБ в режиме «Предприятие» и выполняем код (с помощью обработки): «Справочники.ПрофилиГруппДоступа.ОбновитьОписаниеПоставляемыхПрофилей();». Завершаем работу в ИБ и запускаем ее в режиме «Предприятие» вновь.

В 1С:Управление нашей фирмой 8.3 открываем справочник «Профили групп доступа», находим в нем элемент «Закупки» и открываем его форму.

Рис. 4 Справочник Профили групп доступа в 1С 8 УНФ

На ней мы видим сообщение (1) о том, что в поставляемый профиль были внесены изменения. Чтобы привести настройку профиля в соответствие с описанием поставляемого профиля в 1С 8 УНФ, необходимо выполнить команду «Восстановить по начальному заполнению» (3). Далее последовательно появятся два диалоговых окна, где необходимо нажать кнопку «Да».



Рис. 5 Восстановление профиля по начальному заполнению в 1С 8 УНФ

После чего в списке «Ограничения доступа» появится вид доступа «Структурные единицы».

Рис. 6 Вид доступа Структурные единицы в 1С 8 УНФ

Указанные действия необходимо проделать с профилями групп доступа «Продажи» и «Производство».

Далее составим перечень документов, изменение которых мы хотим ограничить, с контролем доступности на складе:

·         ПриходнаяНакладная;

·         РасходнаяНакладная;

·         ПеремещениеЗапасов;

·         ИнвентаризацияЗапасов;

·         ОприходованиеЗапасов;

·         ПересортицаЗапасов;

·         СписаниеЗапасов;

·         СборкаЗапасов;

·         ОтчетОРозничныхПродажах;

·         ЧекККМ;

·         ЧекККМВозврат.

Поместим эти документы в расширение.

Далее через контекстное меню «Все роли» определяем состав ролей, которые имеют право на «Добавление» и «Изменение» указанных документов для доступа на склад:

·         ДобавлениеИзменениеВозвратовОтПокупателей;

·         ДобавлениеИзменениеВозвратовПоставщикам;

·         ДобавлениеИзменениеПеремещенийЗапасов;

·         ДобавлениеИзменениеПодсистемыЗакупки;

·         ДобавлениеИзменениеПодсистемыЗапасыИСклад;

·         ДобавлениеИзменениеПодсистемыИзлишкиИНедостачи;

·         ДобавлениеИзменениеПодсистемыПродажи;

·         ДобавлениеИзменениеПодсистемыПроизводство;

·         ДобавлениеИзменениеПодсистемыРозничныеПродажи.

Эти роли также поместим в расширение в 1С УНФ 1.6.

Далее в расширении будем поочередно для выбранной роли и документа (при условии, что в основной конфигурации у роли установлены права «Чтение», «Добавление», «Изменение» на документ) устанавливать права следующим образом (на примере документа «Расходная накладная»):

·         «Чтение»

·         Скопируем текст ограничения доступа из основной конфигурации, его изменять не будем;

Рис. 7 Вид доступа Чтение в 1С 8 УНФ

·         «Добавление»

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

Рис. 8 Вид доступа Добавление в 1С 8 УНФ

·         «Изменение»

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

Рис. 9 Вид доступа Добавление в 1С 8 УНФ

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

·         «Добавление»

Рис. 10 Добавление в Перемещении остатков в 1С 8 УНФ

·         «Изменение»

Рис. 11 Изменение в Перемещении остатков в 1С 8 УНФ

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

Результирующий состав расширения:

Рис. 12 Результирующий состав расширения  в 1С 8 УНФ

На этом работы завершены и дело только за настройкой ограничений 1С:Управление нашей фирмой 1.6 в режиме «Предприятие».

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

Специалист компании «Кодерлайн»

Павел Коротин

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Функционал подсистемы УправлениеДоступом позволяет работать с RLS в двух режимах: стандартном и производительном. Оба режима RLS в 1С имеют свои преимущества и недостатки.

RLS в 1С

Для гибкой настройки прав пользователей в конфигурациях на базе БСП (подсистема УправлениеДоступом) реализован механизм настройки доступа на уровне записей (RLS). Этот механизм позволяет ограничивать доступ не только по видам объектов (для конкретных справочников, документов…), но и по данным в этих объектах (т.е., например, ограничить список документов только по одной организации или по конкретному менеджеру).

Функционал подсистемы УправлениеДоступом позволяет работать с RLS в двух режимах: стандартном и производительном. Каждый из режимов имеет свои преимущества и недостатки относительно другого. Основные из них будут рассмотрены в тексте далее.

Для дальнейших скриншотов, примеров кода, а также для решения задачи будем использовать демонстрационную конфигурацию «Библиотека стандартных подсистем», редакция 3.1 (3.1.5.132).

Ограничения RLS описываются в роли для конкретного объекта. Например, ограничение на чтение документа _ДемоСчетНаОплатуПокупателю в роли
_ДемоЧтениеДокументовПокупателей описывается следующим образом:

Производительный режим RLS в 1С

Производительный режим RLS в 1С

Производительный режим RLS в 1С

Как мы видим, для описания ограничений используются специальные шаблоны. В данном случае #ДляОбъекта и #ПоЗначениям. Шаблоны, которые могут быть использованы в роли необходимо описать на вкладке “Шаблоны ограничений”:

Производительный режим RLS в 1С

В свою очередь, эти шаблоны можно скопировать из поставляемой роли ИзменениеУчастниковГруппДоступа.

Рассмотрим текст ограничения доступа подробнее.

#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям( "Документ._ДемоСчетНаОплатуПокупателю", "","",
"_ДемоОрганизации", "Организация",
"_ДемоГруппыПартнеров","Партнер", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")
#КонецЕсли

Как мы видим, выбор шаблона зависит от параметра &ОграничениеДоступаНаУровнеЗаписейУниверсально, который как раз и определяет режим, в котором должно использоваться RLS — стандартный или производительный. Значение этого параметра хранится в параметрах сеанса, а в самой базе выбрать режим можно двумя способами:

1. Зайти в раздел Администрирование — Настройки пользователей и прав — Группы доступа — Вариант работы — Производительный

Производительный режим RLS в 1С

2. В окне “Все функции” изменить значение константы “Ограничивать доступ на уровне записей универсально” на ИСТИНА, если нужен производительный режим и, соответственно на ЛОЖЬ, если стандартный.

Производительный режим RLS в 1С

Соответственно, если &ОграничениеДоступаНаУровнеЗаписейУниверсально = ЛОЖЬ, то будет использоваться стандартный метод и выполняться код

#ПоЗначениям( "Документ._ДемоСчетНаОплатуПокупателю", "","",
"_ДемоОрганизации", "Организация",
"_ДемоГруппыПартнеров","Партнер", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "",""),

а если &ОграничениеДоступаНаУровнеЗаписейУниверсально = ИСТИНА, то будет использоваться производительный метод и выполняться код

#ДляОбъекта("").

Подробнее о синтаксисе и использовании шаблонов можно почитать в их описании.

При стандартном режиме ограничение прописывается прямо в роли (установлен отбор по разрешенным организации и партнеру). Эти отборы добавляются к итоговому запросу при обращении к СУБД. При наличии нескольких ролей с описанными ограничениями все условия собираются в один запрос, растет количество левых соединений, повышается риск неправильного использования индексов, выбора неоптимального плана выполнения запроса, что значительно его усложняет и замедляет выполнение. А так как при стандартном режиме работы ограничения рассчитываются “на лету” при каждом обращении к данным (формирование списков справочников и документов, их открытие и записи), то работа пользователя может значительно замедлиться из-за сложности сформированного запроса.

Эту проблему решает включение производительного режима. При нём все отборы и ограничения не добавляются в запрос, раздувая его, а предварительно рассчитываются в некоторые ключи доступа и в итоговый запрос попадают только они, что увеличивает производительность. О ключах и их расчете подробнее далее.

Как мы видим, в ограничении роли для производительного режима не описаны никакие условия, нет никакой информации о видах доступа, по которым необходимо ограничивать данные. Где же они указаны? Для этого в подсистеме УправлениеДоступом предусмотрена специальная экспортная процедура ПриЗаполненииОграниченияДоступа(), который описывается в модуле менеджера объекта, указанного в роли.

Так, для документа _ДемоСчетНаОплатуПокупателю эта процедура описана следующим образом:

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)";КонецПроцедуры

Здесь мы видим, что ограничение описывается с помощью некоторых типов ограничения (РазрешитьЧтениеИзменение) и функций ограничений (ЗначениеРазрешено()). Это нужно понимать так: пользователю будет разрешено читать и изменять документ _ДемоСчетНаОплатуПокупателю, когда ему будут разрешены значения организации и партнера, указанные в этом документе.

Примечание. Подробно о типах, функциях, синтаксисе ограничений описано на сайте ИТС в разделе — Инструкции по разработке на 1С

— Библиотека стандартных подсистем 3.1.6. Документация

— Глава 3. Настройка и использование подсистем при разработке конфигурации

— Управление доступом

— Разработка ограничений прав доступа

Далее в статье рассмотрим кратко лишь некоторые.

Некоторые типы ограничений

Типы ограничения могут быть:

  • РазрешитьЧтениеИзменение
  • РазрешитьИзменениеЕслиРазрешеноЧтение
  • РазрешитьИзменение 

Основным способом описания ограничений необходимо считать функцию ЗначениеРазрешено(). Функция выполняет поиск проверяемого значения среди разрешенных значений в группах доступа, профили которых предоставляют соответствующие права на список.

  • ЗначениеРазрешено(<Реквизит> [<проверяемые типы>] [, <уточнение сравнения 1> [, <уточнение сравнения 2>] …]), где проверяемые типы могут быть (значения непроверяемых типов запрещены, если не уточнены отдельно):

— ТОЛЬКО <Имя таблицы>;
— ТОЛЬКО (<Имя таблицы 1>, <Имя таблицы 2>, … );
— КРОМЕ <Имя таблицы>;
— КРОМЕ (<Имя таблицы 1>, <Имя таблицы 2>, … );

  • Уточнение сравнения может быть:

— ПустаяСсылка КАК Ложь/Истина;
— Неопределено КАК Ложь/Истина;
— Null КАК Ложь/Истина;
— Отключено КАК Ложь/Истина (только для функции ЗначениеРазрешено);
— <Таблица> КАК Ложь/Истина (например, Справочник.Проекты КАК Истина).

Также существуют следующие функции:

  • ЧтениеОбъектаРазрешено
  • ЧтениеСпискаРазрешено
  • ИзменениеОбъектаРазрешено
  • ИзменениеСпискаРазрешено

Синтаксис этих функций аналогичен функции ЗначениеРазрешено().

Эти функции необходимо использовать, когда необходимо установить доступность (чтение/изменение) объекта в зависимости от доступности его реквизита. Например, документ _ДемоСчетНаОплатуПокупателю должен быть доступен, когда доступен его реквизит Организация. В таком случае ограничение будет описано как:

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЧтениеОбъектаРазрешено(Организация)";
КонецПроцедуры
  • ДляВсехСтрок(<Условие>)

Функция выполняет проверку в строках с помощью логического «И». Используется для одновременного выполнения условия во всех строках табличной части объекта.

  • ДляОднойИзСтрок(<Условие>)

Функция выполняет проверку в строках с помощью логического «ИЛИ». Используется для выполнения условия хотя бы в одной строке табличной части объекта.

Примеры возможных ограничений

Организация и контрагент в шапке документа:

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
|И ЗначениеРазрешено(Контрагент)";

Организация в шапке документа, контрагент в табличной части, достаточно одного разрешенного контрагента:

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
|И ЗначениеРазрешено(Поставщики.Контрагент)";

Организация в шапке документа, контрагент в табличной части, достаточно одного разрешенного контрагента (если табличная часть пустая, тогда доступ по контрагенту разрешен):

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
|И ЗначениеРазрешено(Поставщики.Контрагент, Null КАК Истина)";

Организация в шапке документа, контрагент в табличной части, и требуется, чтобы все контрагенты были разрешены (если табличная часть пустая, тогда доступ по контрагенту запрещен):

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
|И ДляВсехСтрок(ЗначениеРазрешено(Поставщики.Контрагент))";

Организация и контрагент в табличной части, при этом достаточно, чтобы любая из пар организации с контрагентом была разрешена:

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Поставщики.Организация)
|И ЗначениеРазрешено(Поставщики.Контрагент)";

Организация и контрагент в табличной части, при этом требуется, чтобы все пары организации с контрагентом были разрешены:

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ДляВсехСтрок(
| ЗначениеРазрешено(Поставщики.Организация)
| И ЗначениеРазрешено(Поставщики.Контрагент))";

Организация и контрагент в табличной части, при этом требуется, чтобы одна из организаций и один из контрагентов были разрешены:

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ДляОднойИзСтрок(ЗначениеРазрешено(Поставщики.Организация))
|И ДляОднойИзСтрок(ЗначениеРазрешено(Поставщики.Контрагент))";

Отправитель – измерение составного типа, при этом требуется проверять только ссылки Справочник.Склады:

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Отправитель ТОЛЬКО Справочник.Склады)";

Отличительная особенность производительного режима RLS в 1С

Вернёмся к основной отличительной особенности производительного режима RLS в 1С. Она заключается в том, что в этом режиме расчет прав происходит предварительно и записывается в специальные таблицы (справочник и регистры сведений). Это позволяет достичь высокой производительности запросов с RLS, так как добавляет простой и статический фрагмент к текстам запросов в ролях. За счет этого обеспечивается одинаково хорошая скорость работы при различной прикладной логике ограничений доступа, при различных условиях и их комбинациях. Но, так как предварительный расчет прав доступа занимает некоторое время, поэтому изменения в правах вступают в силу с некоторой задержкой.

Для хранения этих предварительно рассчитанных данных (ключей) используются следующие таблицы:

  • справочник КлючиДоступа
  • регистр сведений КлючиДоступаКОбъектам
  • регистр сведений КлючиДоступаПользователей

Справочник КлючиДоступа имеет структуру:

Производительный режим RLS в 1С

В реквизитах Значение1 — Значение5 хранятся комбинации конкретных значений доступа. В зависимости от ограничений каждого конкретного типа объектов конфигурации состав значений разный. Например, как упоминалось выше, для документа _ДемоСчетНаОплатуПокупателю определено ограничение по Организации и Партнеру. Соответственно, будут сформированы ключи с возможными комбинациями организации и партнера.

В реквизит Хэш реквизит рассчитывается специальный хеш функции. Он позволяет быстро понять, существует ли уже в системе ключ с такой комбинацией значений или нет.

Структура регистров следующая:

Производительный режим RLS в 1С

Причем Объект РС КлючиДоступаКОбъектам имеет тип ОпределяемыйТип.ВладелецЗначенийКлючейДоступа, которые содержит в себе ссылки на все объекты, которые могут быть ограничены с помощью RLS.

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

Таким образом при проверке ограничений доступа вне зависимости от количества настроенных для конкретного проверяемого объекта видов доступа запрос всегда будет дополняться одним соединением с регистром «Ключи доступа к объектам» по проверяемому объекту и с регистром «Ключи доступа пользователей» по текущему пользователю:

Производительный режим RLS в 1С

Обновление ключей объектов и ключей доступа к ним выполняются регламентным заданием. А также оно может быть запущено из обработки “Обновление доступа на уровне записей”:

Производительный режим RLS в 1С

Эта обработка позволяет запускать процесс обновления ключей вручную, а также настраивать и контролировать процесс выполнения.

Запуск обработки выполняется по кнопке

Производительный режим RLS в 1С

Можно настроить обновление ключей по определенным объектам. Эта настройка выполняется по кнопке Ещё — Ручное управление… На этой форме можно выбрать конкретные справочники, документы или регистры, по которым необходимо обновить ключи, отметить их флажками, после этого запланировать обновление и запустить обработку:

Производительный режим RLS в 1С

Также есть возможность выводить более подробную информацию о ходе выполнения обработки

Производительный режим RLS в 1С

Для удобного написания и контроля текстов ограничений в комплекте поставки есть специальная обработка УправлениеДоступом:

Производительный режим RLS в 1С

Она позволяется в пользовательском режиме, без редактирования конфигурации формировать и проверять тексты ограничения доступа для объектов. Для этого необходимо во вкладке “Разработка ограничений доступа” необходимо выбрать список, ограничение на который нужно отредактировать:

Производительный режим RLS в 1С

После этого на форму загрузится текст ограничений из процедуры ПриЗаполненииОграниченияДоступа, а также шаблон ограничения в роли, а также кнопки для проверки текста вставки его в код:

Производительный режим RLS в 1С

При наличии ошибки в тексте ограничения и нажатии на кнопку “Проверить” появляется вкладка “(ошибки)”, в которой описаны ошибка как самого текста, так и всего внедрения механизма ограничений по записям для объекта:

Производительный режим RLS в 1С

Производительный режим RLS в 1С

Несколько конкретных примеров внедрения

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

— создать новый документ ТестовыйДокументСОграничениями

Производительный режим RLS в 1С

— добавить объект в определяемые типы ВладелецЗначенийКлючейДоступа и ВладелецЗначенийКлючейДоступаДокумент.

Примечание. В определяемый тип ВладелецЗначенийКлючейДоступаДокумент добавляются документы. Справочники нужно добавить в ВладелецЗначенийКлючейДоступаОбъект, регистры сведений — в ВладелецЗначенийКлючейДоступаНаборЗаписей, регистры расчета — в ВладелецЗначенийКлючейДоступаНаборЗаписейРегистраРасчета.

— в процедуру ПриЗаполненииСписковСОграничениемДоступа общего модуля УправлениеДоступомПереопределяемый вставить текст

Списки.Вставить(Метаданные.Документы.ТестовыйДокументСОграничениями, Истина);
Процедура ПриЗаполненииСписковСОграничениемДоступа(Списки) Экспорт

…
Списки.Вставить(Метаданные.Документы.ТестовыйДокументСОграничениями, Истина);
КонецПроцедуры

— на форме документа в обработчики ПриЧтенииНаСервере и ПослеЗаписиНаСервере добавить следующий код:

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.УправлениеДоступом
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры

— создать новые роли для чтения и добавления/изменения нового документа: ЧтениеТестовыхДокументовСОграничениями и ДобавлениеИзменениеТестовыхДокументовСОграничениями. Для них определить соответствующие права (чтение, добавление, изменение), скопировать шаблон ограничений ДляОбъекта() из роли ИзменениеУчастниковГруппДоступа и прописать код ограничения доступа для необходимых прав:

#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
ИСТИНА
#КонецЕсли

Примечание. В данном конкретном случае принимаем, что производительный режим RLS используется, поэтому ограничение для обычного режима не прописываем и в соответствующей ветке прописываем просто ИСТИНА.

Производительный режим RLS в 1С

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

— в модуле менеджера документа в процедуре ПриЗаполненииОграниченияДоступа прописать текст ограничения:

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Подразделение)";
КонецПроцедуры

— в пользовательском режиме создать профили доступа с созданными ранее ролями, группы доступа и прописать в них ограничения по организациям и подразделениям и назначить их пользователям:

Производительный режим RLS в 1С Производительный режим RLS в 1С Производительный режим RLS в 1С

— создать документы и запустить задание обновления ключей доступа.

В результате получим ограниченный список документов для тестового менеджера:

под полными правами

Производительный режим RLS в 1С

под ограниченными правами

Производительный режим RLS в 1С

  • Нужно реализовать ограничение, чтобы были доступны только те документы, в которых доступны организация и было доступно хотя бы одно место хранения из ТЧ Запасы.

— в модуле менеджера документа в процедуре ПриЗаполненииОграниченияДоступа прописать текст ограничения:

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ДляОднойИзСтрок(ЗначениеРазрешено(Запасы.МестоХранения))";
КонецПроцедуры

— добавить вид ограничения в профиль доступа, прописать в группе доступа ограничения по местам хранения, обновить ключи:

Производительный режим RLS в 1С Производительный режим RLS в 1С

В результате под пользователем с ограниченными правами увидим только те документы, у которых доступна организация и в ТЧ Запасы хотя бы в одной строке указан Розничный склад:

Производительный режим RLS в 1С Производительный режим RLS в 1С Производительный режим RLS в 1С Производительный режим RLS в 1С

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

— создать новый справочник ТестовыйРегион. Выполнить для него все те же операции, что и для самого документа ТестовыйДокументСОграничениями (роли можно создать новые или прописать в какие-то существующие, например для чтения/изменения документа. В данном примере это не принципиально. В ПриЗаполненииОграниченияДоступа прописать ограничение на само себя: ЗначениеРазрешено(Ссылка)).

— добавить ссылку и объект ТестовыйРегион в определяемые типы соотстветственно ЗначениеДоступа и ЗначениеДоступаОбъект

— в процедуру ПриЗаполненииВидовДоступа общего модуля УправлениеДоступомПереопределяемый вставить текст:

Процедура ПриЗаполненииСписковСОграничениемДоступа(Списки) Экспорт

…
ВидДоступа = ВидыДоступа.Добавить();
ВидДоступа.Имя = "ТестовыйРегион";
ВидДоступа.Представление = НСтр("ru = 'Тестовый регион'");
ВидДоступа.ТипЗначений = Тип("СправочникСсылка.ТестовыйРегион");
КонецПроцедуры

— запустить обработку ОбновлениеВспомогательныхДанных (из Инструментов разработчика) и  обновить всё.

— добавить новый вид доступа в профиль доступа и определить конкретные ограничения в группе доступа:

Производительный режим RLS в 1С Производительный режим RLS в 1С

— добавить реквизит в документ, вывести на форму, заполнить (скриншот от пользователя с полными правами):

Производительный режим RLS в 1С

— изменить текст ограничения в процедуре ПриЗаполненииОграниченияДоступа документа ТестовыйДокументСОграничениями, чтобы он учитывал новый реквизит:

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(ТестовыйРегион)";
КонецПроцедуры

— обновить ключи доступа.

В результате на пользователя с ограниченными правами распространяются ограничения по организациям (ООО Тестовая организация и Новые технологии ООО) и регионам (Центральный и Южный) и он получит такой список документов:

Производительный режим RLS в 1С

Кто-нибудь настраивал управление доступом в БСП 2.2? Взял эту версию + справочники из демо-примера БСП 2.1. В демо-примере в УправлениеДоступомПереопределяемый в процедуре ЗаполнитьСвойстваВидаДоступа один вид доступа может использоваться для 2-х справочников:     ИначеЕсли Свойства.ВидДоступа = ПланыВидовХарактеристик.ВидыДоступа._ДемоГруппыНоменклатуры Тогда в БСП 2.2 пытался сделать подобным образом в процедуре ПриЗаполненииВидовДоступа (как в статье ): Пишет ошибку:  {Константа.ПараметрыОграниченияДоступа.МодульМенеджераЗначения}: Ошибка в процедуре ЗаполнитьСвойстваВидаДоступа общего модуля УправлениеДоступомПереопределяемый. Тип групп значений «Группа доступа номенклатуры» уже указан для вида доступа «ГруппыНоменклатуры». Для вида доступа «ГруппыВидовНоменклатуры» его нельзя указать.             ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Как правильно настроить? Нужно отдельный справочник заводить?

в версии 2_3_3_59 обнаружилась демо-база 2.2.5  в каталоге ExtFilesСинхронизация данных. Вопрос снят.

А на основе демо-конфы можно начать разработку? Убрав _Демо отовсюду?

попробуй, заодно нам расскажешь

я серьезно спрашиваю, т.к. не в курсе

ну если с «_Демо» работает, то почему без «_Демо» не будет работать?

БСП — это же конфигурация, а не какая-то отдельная платформа со своими фичами

может там какие ограничения есть, в т.ч., к примеру, в плане поддержки

в 2.1 и 2.2 много поменяно в УправлениеДоступом, лучше взять соответствующие версии

да, я это уже понял. Поэтому хочу взять демо базу 2.2 и на ней начать разработку. Можно на демо-базе разрабатывать или есть какие нюансы?

нюансы есть — надо уметь читать код

есть. не надо разрабатывать на демо базе, надо взять инструкцию по внедрению с ИТС и делать всё по ней.

например в демо базе внедрена работа в модели сервиса с автономными рабочими местами. в 95% случаев это не нужно, ИМХО.

а планы обмена, всякие подписки и прочее — выполняются, общие реквизиты-разделители создаются и т.п.

не получается выпилить ненужные подсистемы из неё, постоянно какие-то хвосты остаются и ошибки лезут

ну я хз, я занимался не выпиливанием, в нормальным внедрением по инструкции — и все было четко

через настройки нельзя это отключить?

лишние колонки в СУБД и проверки в коде всё равно будут

в составе БСП есть обработка «помощник внедрения» или как-то так (в папке шаблонов 1с)

да я делал всё по инструкции, всё равно ошибки лезут

я так понял ты предлагаешь внедрять 2.2.5 по инструкции, а потом для этой же версии из демо-базы дотягивать справочники?

в демо базе не так много справочников, часто быстрее самому набросать

ну это если совсем примитив какой-то ваять, а мне нужны основные справочники.

те урезанные 20 справочников и 10 документов, которые там есть с приставкой демо_ при разработке чего-то сложного не сильно помогут

ладно, попробую еще раз внедрить нужные подсистемы. Кстати, может посоветуешь по составу (перевожу самописку по взаиморасчетам): Список внедряемых подсистем АдресныйКлассификатор АнализЖурналаРегистрации БазоваяФункциональность Банки Валюты ВариантыОтчетов ВерсионированиеОбъектов ГрупповоеИзменениеОбъектов ДатыЗапретаИзменения ДополнительныеОтчетыИОбработки ЗавершениеРаботыПользователей ЗагрузкаДанныхИзФайла ЗапретРедактированияРеквизитовОбъектов ЗащитаПерсональныхДанных ИнформацияПриЗапуске КалендарныеГрафики КонтактнаяИнформация НапоминанияПользователя НастройкаПорядкаЭлементов НастройкиПрограммы ОбменДанными ОбновлениеВерсииИБ ОбновлениеКонфигурации Организации Печать ПоискИУдалениеДублей ПолучениеФайловИзИнтернета Пользователи РаботаСКонтрагентами РаботаСПочтовымиСообщениями РассылкаОтчетов РегламентныеЗадания РезервноеКопированиеИБ Свойства СтруктураПодчиненности УдалениеПомеченныхОбъектов УправлениеДоступом УправлениеИтогамиИАгрегатами Список подсистем, не запланированных к внедрению Анкетирование БизнесПроцессыИЗадачи Взаимодействия ГрафикиРаботы ЗаметкиПользователя Интеграция1СБухфон ОтправкаSMS ОценкаПроизводительности ПолнотекстовыйПоиск ПрефиксацияОбъектов ПрисоединенныеФайлы ПроверкаЛегальностиПолученияОбновления РаботаВМоделиСервиса РаботаСФайлами ТекущиеДела ФайловыеФункции ЭлектроннаяПодпись

нафига ИнформацияПриЗапуске?

ЗащитаПерсональныхДанных, версионирование и НапоминанияПользователя тоже под вопросом

кстати, если внедрять самую последнюю БСП — то в подсистеме Администрирование ничего не надо комментировать

на всякий случай, для объявлений Защита, думаю не критично; версионирование нужно — в прошлой самописке использовал — пригодилась; Напоминания — м.б. и не нужно (возможно зависима). ничего не комментировал, но ошибки всё-равно словил

в 2.2 (и даже 2.3.2) надо комментировать в обработках администрирования

это где об этом? Думаю делать на последней 2.2 (2.2.5.36). 2.3 не беру только из-за того, что она требует 1С 8.3.8, а у нас 8.3.6 крутится. Не хотелось бы проблем с COM-коннектором.

2.3.2 на 8.3.6 работает, вроде

но там тоже надо комментировать

вот за это спасибо! А я чё-то подумал, что у них там опечатка в релизе 2.3.2.67, т.к. вышел позже, и не посмотрел, что внутри…

а насчет комментирования, это на ИТС написано или доходить нужно?

спасибо, буду пробовать внедрять.

+ хотя, судя по дате, она вышла только позавчера, так что может её и не было, когда я смотрел…

Тэги:

Комментарии доступны только авторизированным пользователям

Понравилась статья? Поделить с друзьями:
  • Ошибка в профиле яндекс браузер как убрать
  • Ошибка в профиле что это значит
  • Ошибка в профиле файл настроек поврежден или недействителен
  • Ошибка в профиле ваш профиль открылся некорректно
  • Ошибка в профиле google chrome