Ограничение доступа к справочнику склады для конфигурации Управление торговлей 8.1(8.2), редакция 10.3.

Администрирование - Защита, права, пароли

Статья для тех, кто только начинает разбираться с RLS (Record Level Security - доступ на уровне записей)
А также для тех, кому лень разбираться в тонкостях программирования. Можете взять за основу код приведенный в статье.

Появилась у меня необходимость в конфигурации "Управление торговлей" определенным группам пользователей ограничить доступ к списку складов. Поскольку в типовой конфигурации не предусмотрено такой возможности, я порылся в интернете и понял, что у многих возникал этот вопрос. Находил ответы на свой вопрос с примерами кода, но отрывками. Вот, решил оформить то, что у меня в результате получилось. Сразу оговорюсь, что с 8.X я недавно стал работать поэтому не пинайте сильно. В основном публикация предназначена для новичков.

Исходная конфигурация: Управление торговлей 10.3.8.9.

1) Добавляем новое значение в перечисление ВидыОбъектовДоступаСклады.

2) Вносим изменения в регистр сведений НастройкиПравДоступаПользователей. В измерениях ОбъектДоступа и ВладелецПравДоступа  отмечаем флажком  тип данных  СправочникСсылка.Склад.

3) Вносим изменения в обработку НастройкаПравДоступа:

  • Добавляем новую страницу, на которой будет происходить настройка доступа к складам. Я назвал её Склады.
  • Размещаем табличное поле на новой странице и настраиваем его по аналогии с табличными полями расположенными на закладках Организации и Контрагенты.

3.1) Добавляем строчки кода в модуль формы  НастройкаПравДоступа:

  •  Изменим функцию ПолучитьСписокОбластейДанных


Функция ПолучитьСписокОбластейДанных(ТипДанных)
   
СписокОбластей = Новый СписокЗначений;
    Если
ТипДанных = Тип("СправочникСсылка.Организации") Тогда
       
СписокОбластей.Добавить(Перечисления.ВидыОбъектовДоступа.Организации);
    ИначеЕсли
ТипДанных = Тип("СправочникСсылка.ГруппыДоступаККонтрагентам") Тогда
       
СписокОбластей.Добавить(Перечисления.ОбластиДанныхОбъектовДоступа.КонтрагентыСписок);
    ИначеЕсли
ТипДанных = Тип("СправочникСсылка.ГруппыПользователей") Тогда
       
// Добавим только те виды объектов доступа, для которых нет областей данных
       
СписокОбластей.Добавить(Перечисления.ВидыОбъектовДоступа.Организации);
       
// Добавим все области данных
       
Для каждого Перечисление Из Перечисления.ОбластиДанныхОбъектовДоступа Цикл
           
СписокОбластей.Добавить(Перечисление);
        КонецЦикла;
       
// Для ограничения доступности по складам. Начало
   
ИначеЕсли ТипДанных = Тип("СправочникСсылка.Склады") Тогда
       
СписокОбластей.Добавить(Перечисления.ВидыОбъектовДоступа.Склады);
       
// Для ограничения доступности по складам. Конец
   
КонецЕсли;
    Возврат
СписокОбластей;
КонецФункции

  •    Добавим код в  функцию ПередОткрытием:


ТипыОбъектовДоступа.Вставить("Склады"     , Тип("СправочникСсылка.Склады"));

4) Вносим изменения в ОбщийМодуль -  НастройкаПравДоступа


Функция ПолучитьВидОбъектаДоступа(ОбъектДоступа) Экспорт
    Если
ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.Организации") Тогда
        Возврат
Перечисления.ВидыОбъектовДоступа.Организации;
    ИначеЕсли
ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.ГруппыДоступаККонтрагентам") Тогда
        Возврат
Перечисления.ВидыОбъектовДоступа.Контрагенты;
       
// Для ограничения доступности по складам. Начало
   
ИначеЕсли ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.Склады") Тогда
        Возврат
Перечисления.ВидыОбъектовДоступа.Склады;
       
// Для ограничения доступности по складам. Конец
   
Иначе
        Возврат
Перечисления.ВидыОбъектовДоступа.ПустаяСсылка();
    КонецЕсли;
КонецФункции
 

5) Добавляем ограничение доступа к данным на чтение у роли Пользователь для объекта Справочники Склады. В поле Ограничение доступа пишем следующий код: 
#ТаблицаОсновогоВидаОбъектаДоступа("Склады", "Ссылка", "")

1.png

Поскольку шаблон ограничений ТаблицаОсновогоВидаОбъектаДоступа уже есть, то здесь больше ничего не делаем. Теперь доступ на видимость складов в справочнике склады настроен. Далее нам нужно чтобы в отчеты попадали только те склады, которые доступны группе пользователей.

 6) Для роли, которую надо ограничить в доступе добавляем шаблон ограничений (закладка шаблоны ограничений). Назовем ограничение Склад, а  в тексте шаблона напишем код:

#Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей #Тогда
ТекущаяТаблица
ИЗ
   
#ТекущаяТаблица КАК ТекущаяТаблица
       
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
            СоставГруппы.Ссылка КАК ГруппаПользователей
        ИЗ
           
Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
        ГДЕ
            СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
        ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И
    (НЕ
1 В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    1
               
ИЗ
                   
РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа

                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                        ПО
                           
НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
                               
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
                                И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)

                                И
НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
                ГДЕ
                     НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                           И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады))

                    И
НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли 

7) Затем, возвращаемся на закладку Права и находим в дереве объект Регистр накопления -  ТоварыНаСкладах и добавляем ограничение доступа к данным на чтение. В поле Ограничение доступа пишем следующий код:

#Cклад("Склад") 

8) Далее, для этого регистра для роли Пользователь создаем ограничение доступа к данным на чтение. Для этого добавляем ограничение следующего содержания ГДЕ ЛОЖЬ

9) Теперь нам нужно настроить форму списка документов таким образом, чтобы пользователь видел только те документы: реализация, заказ и т.д., где указан доступный для чтения склад. Я сделал ограничение в документе РеализацияТоваровУслуг. По аналогии с этим можно ограничить и другие формы списков документов.
Открываем роль, которой мы хотим назначить ограничение и переходим на закладку Шаблоны ограничений. Добавляем новый шаблон ОрганизацияВШапкеКонтрагентВШапкеСкладВШапке,в тексте шаблона пишем следующий код:

##Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей ##Тогда
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
   
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
        СоставГруппы.Ссылка КАК ГруппаПользователей
    ИЗ
       
Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
    ГДЕ
        СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
    ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей)
ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ
            ИЛИ (НЕ
1 В
                    (ВЫБРАТЬ ПЕРВЫЕ 1
                        1
КАК ПолеОтбора
                    ИЗ
                       
РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                    ГДЕ
                        НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                        И ВЫБОР
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                И
ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Организации
                               
И НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                               
ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                               
ИЗ
                                                    (
ВЫБРАТЬ
                                                        1 КАК ПолеОтбора
                                                    ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                           
НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(1)
                                                               
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                И (
НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)))
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                   
КОНЕЦ
                            КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                И
ТекущаяТаблица.#Параметр(2) ССЫЛКА Справочник.Контрагенты
                               
И НЕ ТекущаяТаблица.#Параметр(2) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                               
ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                               
ИЗ
                                                   
Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                           
НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту
                                                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                                                И (
НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                               
ГДЕ
                                                    Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(2))
                                           
ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                   
КОНЕЦ
                            // Для контроля доступности по складам. Начало
                           
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                И
ТекущаяТаблица.#Параметр(3) ССЫЛКА Справочник.Склады
                               
И НЕ ТекущаяТаблица.#Параметр(3) = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
                               
ТОГДА ВЫБОР
                                        КОГДА 1 В
                                                (ВЫБРАТЬ ПЕРВЫЕ 1
                                                    1
                                               
ИЗ
                                                    (
ВЫБРАТЬ
                                                        1 КАК ПолеОтбора
                                                    ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                        ПО
                                                           
НастройкиПравДоступаПользователей.ОбъектДоступа = ТекущаяТаблица.#Параметр(3)
                                                               
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                                                И (
НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                                    ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)))
                                            ТОГДА ИСТИНА
                                        ИНАЧЕ ЛОЖЬ
                                   
КОНЕЦ
                             // Для контроля доступности по складам. Конец
                            
ИНАЧЕ ИСТИНА
                       
КОНЕЦ = ЛОЖЬ))
                        И НЕ
ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL)
##КонецЕсли

Далее, переходим на закладку права, находим в ней Документ РеализацияТоваровиУслуг.
Если у вас уже есть ограничение вида:


#ОрганизацияВШапкеКонтрагентВШапке("Организация", "Контрагент")


то заменяем его нашим кодом:


#ОрганизацияВШапкеКонтрагентВШапкеСкладВШапке("Организация", "Контрагент","Склад")

 
Если такового нет, то добавляем новое ограничение прав и указываем текст нашего ограничения.

10) Сохраняем все. Заходим в предприятие и открываем справочник Группы пользователей. Жмем кнопку Права на нужной группе пользователей. На закладке склады указываем склады, которые должны быть доступны данной группе пользователей. После этого пользователи в справочнике складов смогут увидеть только указанные склады и отчеты, которые используют регистр ТоварыНаСкладах будут выводить ограниченный список складов.

 Следует заметить, что если у пользователя есть несколько ролей и хотя бы одна из них разрешает доступ к справочнику складов, то ограничение не будет срабатывать. В этом случае следует ограничение прописать для нескольких ролей по аналогии.

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

Обновлено 22.02.12. Изменен пункт 8 статьи. Не было ограничения на чтение регистра для прав Пользователь. В связи с этим при формировании без выбора склада отчетов используемых данный регист приводило к выводу в отчет строк вида.

P.S Проверял работоспособность на 8.2- работает. Правда в режиме совместимости с 8.1 Smile

Спасибо пользователю Sai-2010 за замечание.

После данной доработки обновился на 8.2, прошел несколько релизов, сейчас остановился на 10.3.15.9 - все работает без сбоев.

См. также

Комментарии
0. sanches (sanches) 232 19.07.11 08:22 Сейчас в теме
Статья для тех, кто только начинает разбираться с RLS (Record Level Security - доступ на уровне записей)
А также для тех, кому лень разбираться в тонкостях программирования. Можете взять за основу код приведенный в статье.

Перейти к публикации

1. Александр Зубцов (iov) 363 19.07.11 17:40 Сейчас в теме
не ну прям вот сразу посл прочтения статьи - как раз это и попросили... вот прям дорогая ложка и прям к обеду
2. sanches (sanches) 232 19.07.11 17:45 Сейчас в теме
Рад, что пригодилось :)
Добавил еще ограничение по типу цен, делается все по подобию складов.
3. bsi bsi (bsi) 19.07.11 23:01 Сейчас в теме
а документы (ПТУ, ОРП, РТУ, ...) с НЕразрешенными складами как у ограниченного юзера видятся?
4. sanches (sanches) 232 19.07.11 23:22 Сейчас в теме
Вот таким образом пока выглядит реализация :(
Да, и если используются склады в табличной части документа, то тут надо как-то выворачиваться...
Прикрепленные файлы:
5. Александр Косолапов (AlexKoso) 17 20.07.11 11:54 Сейчас в теме
Аналогичное делал несколько месяцев назад. Только в добавок еще номенклатуру, физлиц, подразделения, цены номенклатуры и кассы :)
Вот таким образом пока выглядит реализация

такое бывает если несколько ролей у пользователя, и под одной из них для нужного документа/регистра и т.д. не прописан RLS
6. sanches (sanches) 232 20.07.11 12:01 Сейчас в теме
Изменил 8 пункт. Описал в нем пример ограничений на форму списка документов.
Чтобы не было строк вида <Объект не найден>

Вот только код нормально пока не могу опубликовать :)
7. Александр Косолапов (AlexKoso) 17 20.07.11 12:05 Сейчас в теме
вот...дело за малым: еще половину регистров так обстругать, чтобы в банальной "Ведомсти по товарам на складах" тоже не выводилось <Объект не найден> ;)
8. Александр Косолапов (AlexKoso) 17 20.07.11 12:06 Сейчас в теме
Аналогичная ситуация если нужно сделать право не только на чтение, но и на запись:
а) ставите галку на права "Добавление" и "Изменение";
б) создаете еще один шаблон (к имени в конце можно приписать "..._Запись" - по аналогии с типовыми).
в этом новом шаблоне к условию
И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей

добавляете еще условие чтобы оно стало вот таким:
И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей И НастройкиПравДоступаПользователей.Запись = ИСТИНА

в) получите - распишитесь :)

P.S. жаль что автор не коснулся этой темы раньше и мне не повезло как iov, пришлось самому. На форумах полазить как то в голову не пришло.
9. sanches (sanches) 232 20.07.11 12:13 Сейчас в теме
AlexKoso пишет:

вот...дело за малым: еще половину регистров так обстругать, чтобы в банальной "Ведомсти по товарам на складах" тоже не выводилось <Объект не найден>

Да, в регистре ТоварыНаСкладах я уже написал ограничение (в статье есть). Просто есть еще и другие регистры.
Думаю, кому надо, тот по аналогии сможет добавить и в другие регистры.
Да и сам добавлю :)
10. kay05 (kay05) 10.08.11 17:58 Сейчас в теме
Всем привет.
Делаю для спр."Виды номенклатуры", в результате выполненных манипуляций получаю предупреждение:

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

Следует проверить следующие группы пользователей:
- Продажи (Виды номенклатуры)

Где включить это ограничение?
11. sanches (sanches) 232 12.08.11 06:28 Сейчас в теме
Тут
Прикрепленные файлы:
12. Евгений Лопатин (Blade Runner) 51 26.08.11 10:59 Сейчас в теме
Фильтр на регистр не сработал, зато удивительно хорошо работает
#ОрганизацияВШапкеКонтрагентВШапкеСкладВШапке("Организация", "Контрагент","Склад")
пока не пойму, отчего, и чем это чревато :D
13. sanches (sanches) 232 26.08.11 14:33 Сейчас в теме
Blade Runner пишет:

Фильтр на регистр не сработал, зато удивительно хорошо работает
#ОрганизацияВШапкеКонтрагентВШапкеСкладВШапке("Организация", "Контрагент","Склад")
пока не пойму, отчего, и чем это чревато

Возможно, у пользователя несколько ролей и в одной из них не прописано ограничение на чтение вашего регистра.
14. Костромин Евгений (Djus) 160 03.09.11 18:15 Сейчас в теме
Спасибо автору за мануал :)
15. sanches (sanches) 232 03.09.11 20:32 Сейчас в теме
16. v i (vis_tmp) 28 24.09.11 10:32 Сейчас в теме
Большое спасибо, очень помогло в работе!
Часть я уже и сам сделал, но хорошо, что автор описал всё подробно и по порядку.
17. Станислав Сидоряк (WildDancer) 3 21.10.11 08:51 Сейчас в теме
Большое спасибо автору, отличная работа, в типовой все отлично работает. Жаль мне не помогло... У меня отраслевка, в ней документ основной имеет товары в табличной части со статусами (есть на складе, нет на складе, заказан, и тп), соответственно склады в табличной части. При открытии документа, в котором есть товары, имеющиеся на складе к которому нет доступа - ошибка
{ВнешняяОбработка.бит_ус_ЗащищенныеФункции.МодульОбъекта(738)}: Ошибка при вызове метода контекста (Выполнить)
	ВыборкаНоменклатура = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
по причине:

по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.

До запроса даже не добраться, он в защищенном куске кода(
18. sanches (sanches) 232 21.10.11 16:15 Сейчас в теме
19. Игорь Серебренников (PastorNak) 13 25.11.11 14:11 Сейчас в теме
20. Дмитрий Титов (dtitov) 28.11.11 12:36 Сейчас в теме
Написано доступно и понятно. А главное актуально для нашего предприятия. Огромное спасибо! С удовольствием плюсую!!!
21. ирина (irinrish) 6 05.12.11 16:59 Сейчас в теме
Добрый день, sanches!

Спасибо за материал, он очень пригодился, только вот не получается воспроизвести... Сделала все как написано до пункта 5, включительно. Пользователю настроила в регистре доступ, на картинке настройка, и почему то ему не доступен стал ВЕСЬ справочник - при открытии списка, выходит ошибка "Нарушение прав доступа". Как узнать, в чем дело? Как вообще этот механизм отлаживать?
Прикрепленные файлы:
22. sanches (sanches) 232 06.12.11 13:50 Сейчас в теме
Здравствуйте, спасибо за отзыв. Проверьте у роли Пользователь права на справочник склады. У меня так сделано
Прикрепленные файлы:
23. ирина (irinrish) 6 06.12.11 14:29 Сейчас в теме
точно! не было галочки для просмотра! Спасибо огромное!! Буду дальше ковыряться :-)
24. sanches (sanches) 232 06.12.11 14:47 Сейчас в теме
25. Ksandr2010 (aochkasov) 20.12.11 13:59 Сейчас в теме
26. Аня (Ankiss) 10.01.12 16:48 Сейчас в теме
Спасибо большое все работает
27. oleg grom (ThunderUA) 20.01.12 00:17 Сейчас в теме
Спасибо работает, а со складами в табличной части ничего нельзя придумать?
29. sanches (sanches) 232 20.01.12 12:47 Сейчас в теме
(27) ThunderUA,
Можете сделать ограничения и на табличную часть документа.
Вот только как быть с доступностью документа если в нем несколько складов и один из них доступен, а второй нет - решать вам.
Ну и если все-таки давать открывать документ, то части строк в нем видно не будет, что может озадачить пользователя.
82. interlamersha Internetkina (interlamersha) 19.11.12 11:16 Сейчас в теме
(27) ThunderUA, можете попробовать посмотреть в типовой УТ шаблон КонтрагентВТабличнойЧасти и КонтрагентВТабличнойЧасти_Запись, этот шаблон в частности используется в документе "Классификация покупателей по стадиям взаимоотношения" в роли "МенеджерПоПродажам". Можно попробовать замутить что-нибудь по аналогии, но со складами, но опять же ОЧЕНЬ ОЧЕНЬ АККУРАТНО!!! В 2х словах о работе данного RLS в типовой УТ, на примере указанного документа. Если создать документ в табличной части которого указан контрагент право доступа к которому пользователь с "ограничениями" не имеет, то документ не будет виден в списке, даже если в этом документе были указаны в том числе разрешенные контрагенты.
Т.е. если данный механизм перекладывать на Склады, то только при условии, что заказчика, руководство и т.п. устраивает данный вариант. Если же пользователь хочет только скрывать строки в документе с "запрещенными" складами, то тут сложнее. Опять же необходимо оттестить как будет вести себя система при автоматическом заполнении складов в табличной части.
Еще раз ОЧЕНЬ ОЧЕНЬ АККУРАТНО, чётко осознавая каждую букву и запиточку кода RLS и понимая всю структуру вашей конфигурации.
86. Алекс Ю (AlexO) 120 21.11.12 09:35 Сейчас в теме
(82) interlamersha,
Если же пользователь хочет только скрывать строки в документе с "запрещенными" складами, то тут сложнее. Опять же необходимо оттестить как будет вести себя система при автоматическом заполнении складов в табличной части.

так-так, уже и строки в документах решили ограничивать через RLS...
Молодцы!
Как у вас тут весело... :)
87. sanches (sanches) 232 21.11.12 09:56 Сейчас в теме
(86) а я было обрадовался что вы нас покинули, ан нет...
Только и можете что трепаться, а на деле пусто!
Свербит видимо в одном месте...
Вы точно читать не умеете. Написано же, что в реальной практике не было случаев использования складов в табличной части, и что это сложнее чем ограничивать видимость в журнале и в регистрах.
90. Алекс Ю (AlexO) 120 24.11.12 20:09 Сейчас в теме
(87)
RLS ни в коем случае нельзя ограничивать строки в ТАБЛИЧНОЙ ЧАСТИ ДОКУМЕНТА.
Но у вас все можно, вы ж студенты :)
92. interlamersha Internetkina (interlamersha) 26.11.12 08:34 Сейчас в теме
(90) AlexO, если я студентка с 7ми летним стажем ежедневного программирования на платформе 7.7, 8.1 и 8.2, с наличием профильного высшего образования и с несколькими сертификатами СПЕЦИАЛИСТА 1С в том числе по УТ 10.3, работающая на крупных проектах, в том числе работающая не первый год с RLS, то вы ДАЖЕ НЕ УДОСУЖИЛИСЬ ПОЛУЧИТЬ НАЧАЛЬНОЕ ШКОЛЬНОЕ ОБРАЗОВАНИЕ, ЧИТАТЬ НЕ УМЕЕТЕ.
КУПИТЕ БУКВАРЬ И НАУЧИТЕСЬ ЧИТАТЬ ДЕТОЧКА!!!
А то у вас как в том анекдоте, писать умею, читать не умею. Думать, судя по комментам, также как читать, не научили.
pizhenkov; sanches; +2 Ответить
102. Андрей Курылёв (Audag) 24.04.13 09:57 Сейчас в теме
Добрый день. Спасибо автору за познавательную статью!
Пытаюсь сделать так как написано, внес все изменения, сохранил конфигурацию.

Создаю для группы пользователей права. При сохранении ругается на:
{Обработка.НастройкаПравДоступа.Форма.НастройкаПравДоступа(92)}: Поле объекта не обнаружено (Чтение_)
СтрокаТаблицыПравДоступа["Чтение_" + Индекс] = Истина;

Не подскажете в чем может быть причина?
103. sanches (sanches) 232 24.04.13 11:25 Сейчас в теме
(102) Audag,
Проверьте, что бы на закладке Склады в табличном поле ТаблицаПравДоступа_Склады были поля Чтениеи Запись, по аналогии с организациями и контрагентами
Прикрепленные файлы:
130. WWW olfy (WWWolfy) 112 02.10.14 02:36 Сейчас в теме
(102) Audag, тут ещё надо прописать:
НастройкаПравДоступа (общий модуль) -> ПолучитьВидОбъектаДоступа
это п.4
88. interlamersha Internetkina (interlamersha) 22.11.12 13:40 Сейчас в теме
(86) AlexO, оставьте ваши шизофренические идеи при себе. В каком именно из моих постов вы увидели фразу
строки в документах решили ограничивать через RLS... 
?
ЕЩЕ РАЗ, ДЛЯ ОСОБО "ОДАРЁННЫХ", повторю, читайте внимательно посты, прежде чем что-либо писать в ответ, если не умеете читать, сходите в книжный магазин, купите букварь, или в оптику за очками.
89. Алекс Ю (AlexO) 120 24.11.12 20:08 Сейчас в теме
(88) interlamersha,
Это вы тут студенты и недоучки :)
уже даже на ИС есть первые жертвы вашего незнания.
А будет их еще больше.
113. Аднан Аднан (Antimyslitel) 29 23.08.13 17:19 Сейчас в теме
(86) AlexO,
Слушай умный дядя!
Хочешь подскажу тебе где находится место в котором ты будешь чувствовать себя комфортно?
Если ты столь умный возьми да и подскажи или наведи или напиши как это правильно тебя за это миллионы поблагодарят, а не умничай! А если еще в придачу ты напишешь все правильно и все будет у всех работать то тогда тебя возможно еще и материально поблагодарят!
Prad2002; sanches; +2 Ответить
28. Алексей Сергеев (aleksru24) 20.01.12 07:18 Сейчас в теме
Народ помогите плиз. все сделал - начинаю жать кнопку права - пишет:

{Обработка.НастройкаПравДоступа.Форма.НастройкаПравДоступа(522)}: Тип не определен
Если ТаблицаПравДоступа.Найти(Новый(СтраницаПанели.Значение), "ТипОбъектаДоступа") = Неопределено Тогда

Что не там сделал?
30. sanches (sanches) 232 20.01.12 13:15 Сейчас в теме
(28) aleksru24,
Возможно, у вас по какой-то причине не заполнено СтраницаПанели.Значение
31. Андрей Сериков (sai-2010) 16.02.12 13:35 Сейчас в теме
Добрый день!
Отличная статья!
Все получилось и прекрасно работает!
У меня вопрос к уважаемому автору и аудитории:
Как сделать аналогичные ограничения на отчет по "Ведомость товаров на складах"
Есть необходимость ограничить определенных пользоваптелей информацией ТОЛЬКО по им
доступным складам.

Заранее спасибо!
Всем удачи!
32. sanches (sanches) 232 16.02.12 15:55 Сейчас в теме
(31) sai-2010, Спасибо! :)

Достаточно просто вставить для всех регистров используемых в данном отчете ограничение на чтение данных по такому же принципу, что описано в публикации. А еще лучше сразу добавте для всех регистров, где есть упоминание о складах.
33. Андрей Сериков (sai-2010) 17.02.12 11:08 Сейчас в теме
Добрый день!
Спасибо огромное за подсказку, только не очень удалось зажать Ведомость по товарам.
Всеравно дает отчет по ЛЮБОМУ складу!
Может еще где что то добавить надо...

Удачи!
34. sanches (sanches) 232 17.02.12 21:59 Сейчас в теме
(33) sai-2010,
Посмотрел у себя, действительно показывает все склады если не выбирать фильтр.
Пишет <Объект не найден> для складов не доступных для чтения.
Надо разобраться. Отпишу позже о рерультатах
Спасибо за подсказку!
35. Андрей Сериков (sai-2010) 20.02.12 07:10 Сейчас в теме
Спасибо за вснимание к моей проблеме!
С нетерпением буду ждать Вашего решения.
Очень хочется запустить это ограниченеи по правам.
Это очень актуальная задача для удаленных пользователей, когда они
работают в терминале. У них есть свой склад, и зачем им видеть все остальные склады,
а главное движением! по чужим складам.
Так что вопрос не надуманный, а реально по жизни.

Удачи!
Жду Вашего решенния.
38. sanches (sanches) 232 21.02.12 23:04 Сейчас в теме
(35) sai-2010,
Решение проблемы следующее.
Заходите в Роль Пользователь, заходите в ветку РегистрыНакопления затем ТоварыНаСкладах.
Создаете ограничение на чтение, где указываете в поле ограничение доступа текст ГДЕ ЛОЖЬ
в поле поля автоматически установится значение <Прочие поля>
После этого "лишние" склады исчезнут из отчета.
36. Александр Ф (leon111) 12 20.02.12 07:16 Сейчас в теме
Спасибо, отличная статья!
37. Сергей Григорьев (serq82) 21.02.12 08:49 Сейчас в теме
дошел до 7 пункта
Затем, возвращаемся на закладку Права и находим в дереве объект Регистр накопления - ТоварыНаСкладах и добавляем ограничение доступа к данным на чтение. В поле Ограничение доступа пишем следующий код:

#Cклад("Склад")

пишет:
Шаблон 'Склад' не существует(

все получилось,а никто не подскажет какие регистры надо изменить чтобы все получилось в роли менеджера по продажам и покупкам?
39. sanches (sanches) 232 22.02.12 11:40 Сейчас в теме
(37) serq82, Для этого нужно для необходимых ролей повторить пункты 5-7. Создать для них ограничение на чтение регистров.
47. 123 321 (Lenten) 24 24.05.12 16:20 Сейчас в теме
(37) serq82,
дошел до 7 пункта

Затем, возвращаемся на закладку Права и находим в дереве объект Регистр накопления - ТоварыНаСкладах и добавляем ограничение доступа к данным на чтение. В поле Ограничение доступа пишем следующий код:

#Cклад("Склад")

пишет:
Шаблон 'Склад' не существует(

А как с этим разобрались?
48. 123 321 (Lenten) 24 24.05.12 16:54 Сейчас в теме
(47) Lenten, Оказалось что если #Cклад("Склад") не копировать, а написать, то все норм(в чем разница я так и не увидел). Может кому поможет
deni1982; NE_ZNAIY; +2 Ответить
40. sanches (sanches) 232 22.02.12 11:40 Сейчас в теме
41. Сергей Григорьев (serq82) 22.02.12 12:04 Сейчас в теме
(40) большое спасибо,к нужным справочникам я закрыл доступ,ща буду смотреть отчеты
42. Георгий Суворов (OscarTT) 13.03.12 03:39 Сейчас в теме
"Рад, что пригодилось
Добавил еще ограничение по типу цен, делается все по подобию складов."

Где же это добавление по типу цен? Ткните носом, надо именно по ценам и выбору их в документе.
44. sanches (sanches) 232 13.03.12 08:24 Сейчас в теме
(42) OscarTT,
Добавил в своей конфигурации, но выкладывать не стал, поскольку принцип ограничения схож с тем, что описан в статье. Создаем закладку Типы цен в настройках прав доступа и т.д.
Но на самом деле с типами цен не все так просто как казалось. При включении ограничения у меня проявились проблемы
1) В программе есть возможность указать тип цен для каждого пользователя ниже которого нельзя продавать. И получилось так, что я запретил пользователю видеть закупочный тип цен, а он стоял у него в настройках как тип цен ниже которого нельзя продавать в результате при проведении документа(вроде) вываливается ошибка.
2) При ведении индивидуальных типов цен для контрагентов необходимо каждый раз держать актуальным список типов цен доступных пользователю иначе в подборе будет вываливаться ошибка. Дело в том,что в настройках прав доступа указываются объекты, которые может пользователь видеть, все что не указано будет не доступно. Поэтому может получиться ситуация такая. Был тип цен Розница и он был доступен пользователю. Добавили тип цен Розница-3% и назначили этот тип цен для покупателя, но поскольку этот тип цен не был указан как доступный для пользователя, то про выписке документов в подборе будет выходить ошибка о нарушении прав доступа до тех пор пока не указать новый тип цен как доступный для пользователя. У меня типов цен в базе более сотни и часто добавляют новые (возможно и не правильно) и эта проблема актуальна. Поэтому пока не развиваю тему с ограничением типов цен.
43. Георгий Суворов (OscarTT) 13.03.12 03:44 Сейчас в теме
"10) Сохраняем все. Заходим в предприятие и открываем справочник Группы пользователей. Жмем кнопку Права на нужной группе пользователей. На закладке склады указываем склады, которые должны быть доступны данной группе пользователей. После этого пользователи в справочнике складов смогут увидеть только указанные склады и отчеты, которые используют регистр ТоварыНаСкладах будут выводить ограниченный список складов."

Пытаюсь сделать по аналогии, но не могу понять где "Жмем кнопку Права на нужной группе пользователей. На закладке склады указываем склады, которые должны быть доступны данной группе пользователей."
Куда дальше жать? ))
Прикрепленные файлы:
45. sanches (sanches) 232 13.03.12 14:00 Сейчас в теме
(43) OscarTT,
У вас видимо другой релиз конфигурации. Можно попробовать зайти в сам элемент справочника (дерево справа) может там есть что-то связаное с правами.
К тому же я делал это на 8.1. Сейчас 8.2 но в режиме совместимости с 8.1 - работает все нормально.+ У меня довольно древний релиз 10.3.9.4 и выглядит справочник так

46. Diev Ivan (VanechkaDiev) 12.04.12 12:06 Сейчас в теме
Отличный и простой для понимания материал! только "+"
49. 123 321 (Lenten) 24 26.05.12 16:26 Сейчас в теме
День добрый, сделал ограничение на Реализация товаров и услуг как в публикации, все работает. Пытаюсь сделать тоже самое в Поступлении вылезает

Ошибка в ограничении доступа к данным.
объект: 'Документ.ПоступлениеТоваровУслуг', поле: 'Проведен'; право: 'Чтение'
{(59, 50)}: Поле не найдено "ТекущаяТаблица.Склад"
И ТекущаяТаблица.<<?>>Склад ССЫЛКА Справочник.Склады
по причине:
{(59, 50)}: Поле не найдено "ТекущаяТаблица.Склад"
И ТекущаяТаблица.<<?>>Склад ССЫЛКА Справочник.Склады

Почему это может быть? Притом что стандартное ограничение по Организации в Поступлении нормально срабатывает

Оказалось там надо
#ОрганизацияВШапкеКонтрагентВШапкеСкладВШапке("Организация", "Контрагент","СкладОрдер")
50. mic auto (4ur) 29.06.12 16:05 Сейчас в теме
как раз то, что просили сделать, только для цен, как раз и попробую, думал, что придется программировать, а тут оказывается и по другому можно...
51. sanches (sanches) 232 29.06.12 16:18 Сейчас в теме
(50) 4ur, Если Вы про типы цен, то там посложнее будет реализация, я писал выше некоторые моменты, с которыми мне пришлось столкнуться при введении ограничения по типам цен. В итоге оно работает, но местами - криво.
52. mic auto (4ur) 30.06.12 00:24 Сейчас в теме
попробую прилепить с УПП, там эти ограничения очень дотошно сделаны, только напильником придется немного обработать...
78. interlamersha Internetkina (interlamersha) 16.11.12 11:47 Сейчас в теме
(52) 4ur, Для чего вам в УПП пилить RLS по складам? там и так этот механизм уже написан, зачем изобретать велосипед?
79. mic auto (4ur) 16.11.12 12:05 Сейчас в теме
(78) interlamersha, как всегда не совсем верно выразился, т.к. этот механизм очень дотошно сделан в УПП, то для примера взял себе как раз реализацию его в УПП, надо было в УТ немного подправить...
53. protsenkoDV (prodv) 05.07.12 14:41 Сейчас в теме
Спасибо автору, кучу времени сэкономил.
Большущий ПЛЮС!
54. Elxan EKO LX (ekoelxan) 06.11.12 15:45 Сейчас в теме
Автор, ОГРОМНОЕ ВАМ СПАСИБО!
55. sanches (sanches) 232 06.11.12 21:27 Сейчас в теме
Пожалуйста, рад, что пользуется спросом!
56. Оксана (2791) 8 12.11.12 15:43 Сейчас в теме
А ограничение по учетам кто-то делал? Ограничить группу пользователей к просмотру документов "ОтражатьВ УпрвленческомУчете"(в базе ведутся отдельно документы бух и упр учета)
58. sanches (sanches) 232 13.11.12 17:54 Сейчас в теме
(56)Я не делал, но думаю там не сложнее чем с организациями и контрагентами. Даже проще, наверное.
(57)Да, согласен. В УТ11 еще больше возможностей ограничить доступ к данным через RLS, интересно как там с быстродействием.
61. Оксана (2791) 8 13.11.12 18:14 Сейчас в теме
(58) Разобралась, оказалось намного проще, чем по организации и контрагентам
62. Алекс Ю (AlexO) 120 13.11.12 18:20 Сейчас в теме
(61) 2791,
Разобралась, оказалось намного проще, чем по организации и контрагентам

не забудьте вспомнить только впоследствии, что когда-то залезли и наделали RLS вне типовых.
...чтобы знать, где и откуда начать вычищать авгиевы конюшни...
63. interlamersha Internetkina (interlamersha) 14.11.12 13:05 Сейчас в теме
(58) Насчет БУ и УУ не сложнее чем с контрагентом, эт не так. Пару месяцев назад разруливала RLS в УТ, и обнаружила интересную деталь по ограничениям по регистрам. Ограничение можно поставить только в том случае если оно накладывается на измерение или ресурс регистра. Наложить ограничение по реквизиту документа регистратора фигушки! Признак УУ и БУ в УТ в регистрах нигде не значится, а это значит, что документы из журналов скрыть ноу проблемз, а сделать так чтобы движуха по этим документам не вылазила при открытии регистра на просмотр, при формировании отчетов по регистрам, это как говорил Шарик "Индейская изба, фиг вам называется!".
66. Алекс Ю (AlexO) 120 15.11.12 17:41 Сейчас в теме
(63) interlamersha,
а вы еще больше довепряйте студенческим статьям, еще не такого наворотите...
Хотите под девизом "RLS - это просто" наподелать ограничений? Флаг в руки, кто вам за это заплатит - заплатит помто вдвойне за разгребание понаделанного и возвращение к исходному состоянию.
77. interlamersha Internetkina (interlamersha) 16.11.12 11:43 Сейчас в теме
(66) AlexO, Вы по ходу читать не умеете, или не желаете. В моём комменте как раз то обозначено, что RLS это не просто, и приведен один из ярких примеров, где можно лихо сесть в лужу. А троллем вас не зря назвали, все ваши комменты содержат одно "я такой умный, а вы тут все идиоты, я где то там в интернете написал кучу статей по RLS и не одной на инфостате, а вы их даже почитать не удосужились". Ссылки в студию! И пофиг, что на инфостате ваша статья практически перепечатка руководства по администрированию.
Насчет "а вы еще больше доверяйте студенческим статьям", я не имею привычки тупой бездумной скачки или переписки чужих работ, чужого программного кода. Я не первый год программирую на 1С, в том числе работаю с механизмом RLS, есть несколько клиентов с доработками RLS, работает как часы. Да в этой статье не раскрыт механизм работы с RLS, ни принципы работы, ни способы работы с параметрами, ни плюсы минусы.
Грабли есть в RLS и не одни, но пишите о них в комментах, пишите о статье по существу, а не тратьте попусту моё время и время посетителей данной статьи на чтение вашего пустого трёпа.
samadov; Accident; _Бестия_; sergant500; Sitex; Antimyslitel; musly; AlexanderEkb; sanches; +9 Ответить
57. Сергей Радченко (Rad90210) 11 13.11.12 14:11 Сейчас в теме
Плавали знаем... На больших базах притормаживает ... а за описание обнозначно +
59. Алекс Ю (AlexO) 120 13.11.12 18:09 Сейчас в теме
(0) можно было бы многое написать, начиная от "код скопирован с типового РЛС, но не понят/не разобран" и до ошибок в статье, но - зачем?
Пусть студенты учатся сами, и сами набивают свои собственные шишки.
Во, 70 плюсов, рванет, и не раз.
60. sanches (sanches) 232 13.11.12 18:14 Сейчас в теме
(59)Я и не претендовал на оригинальность, код брал из типовой УТ и добавлял то, что нужно. Лично у меня все работает.
Вы уже либо пишите по существу про ошибки либо не спамьте. Или вам надо заработать на комментариях рейтинг?
Знающий человек бы написал и указал на ошибки,а смысл вашего комментария мне не понятен. Показать свои знания? Так покажите на деле, укажите на ошибки по существу.
Хорошо, что у вас всегда получается идеально и с первого раза.
65. Алекс Ю (AlexO) 120 15.11.12 17:39 Сейчас в теме
(60)
Знающий человек бы написал и указал на ошибки

не-1сник давно бы погугли + поиск по ИС включил бы, и нашел много интересного по RLS + масса моих разъяснений в том числе, тянущих на три статьи по RLS.
67. sanches (sanches) 232 15.11.12 17:42 Сейчас в теме
(65)И опять комментарий ни о чем.
Когда я искал решение данного вопроса, то в интернете ничего не нашел в одной статье, все было размазно
69. Алекс Ю (AlexO) 120 15.11.12 17:45 Сейчас в теме
(67)
оно и понятно, что не нашли - вы даже не знаете, что искать.
а я уже один раз месяцев пять назад собирал ссылки для очередной ежемесячной волны студентов, надеялся, что хоть поиском умеют пользоваться, а - нет, не умеют.
Захотите - найдете по моим сообщениям.
71. sanches (sanches) 232 15.11.12 17:50 Сейчас в теме
(69)Вы еще и читать не умеете. Если внимательно посмотреть на дату публикации статьи, то можно увидеть 18.07.2011, что намного раньше чем ваши ссылки, которые непонятно где...
72. Алекс Ю (AlexO) 120 15.11.12 17:55 Сейчас в теме
(71)
а причем тут дата? есть статьи в инете от 2004-2006, обсуждения.
А это как раз вам минус - вы так с той поры и не знаете, чему учите, и призываете также "не знать" и бездумно выполнять механические действия других, хотя что-что, а настройка RLS может обернуться не просто ошибкой в коде.
64. Аднан Аднан (Antimyslitel) 29 15.11.12 17:33 Сейчас в теме
У меня возникла проблема все описанное выше проделал но выдает ошибку Поле Объекта не обнаружено и {Обработка.НастройкаПравДоступа.Форма.НастройкаПравДоступа(148)}: Поле объекта не обнаружено (ТаблицаПравДоступа_Склады)
Элемент = ЭлементыФормы["ТаблицаПравДоступа_" + КлючИЗначение.Ключ];
Что делать как поступить? спасибо!
73. sanches (sanches) 232 15.11.12 17:59 Сейчас в теме
(64)Antimyslitel, проверьте, чтобы табличное поле, которое вы добавили на новой закладке склады имело имя ТаблицаПравДоступа_Склады
NE_ZNAIY; +1 Ответить
68. sanches (sanches) 232 15.11.12 17:43 Сейчас в теме
Все ясно, тролль у нас завелся.
70. Алекс Ю (AlexO) 120 15.11.12 17:45 Сейчас в теме
(68)
тролли - это вы и подобные вам студенты.
74. Аднан Аднан (Antimyslitel) 29 15.11.12 18:31 Сейчас в теме
Теперь возникла эта ошибка:
{ОбщийМодуль.ЗаполнениеДокументов(569)}: Ошибка при получении значения атрибута контекста (ОтражатьВРегламентированномУчете)
ФлагОтражРеглУчете = ЗначениеЗаполнено(ДокументОбъект.Организация) И ДокументОбъект.Организация.ОтражатьВРегламентированномУчете;
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
Вроде в группу пользователей - пользователя добавил!
и после включение под этим пользователем в документе реализации когда пытаюсь добавить документ выскакивает вышеуказанная ошибка помогите плззз!
75. sanches (sanches) 232 15.11.12 23:44 Сейчас в теме
(74)Antimyslitel, попробуйте создать новую роль путем копирования роли Пользователь, и в ней проделать п.5 статьи. Если не хочется править типовые роли, то можете оставить эту новую роль и назначить ее пользователям
76. Алекс Ю (AlexO) 120 16.11.12 10:18 Сейчас в теме
(75)
давайте, давайте - множьте роли с RLS, давайте вредные советы.
Вся статья об этом, неофиты-последователи быстрее по голове получат.
80. interlamersha Internetkina (interlamersha) 19.11.12 10:13 Сейчас в теме
Нашла свободные пару минут времени на работе, проанализировать статью и код. Судя по шестому пункту, код был не переделан по шаблону "Контрагенты" в УТ, а был взят из комплексной или УПП. Один существенный момент не учтён в данной статье, это документы перемещения и наличие СкладаОтправителя и СкладаПолучателя, также необходимо учитывать наличие ордерных схем приема и реализации товара, выше приведенные шаблоны не позволяют корректно фильтровать данные по этим документам. В частности при ограничении доступа по складам у перемещений в комплексной используются не шаблоны, а непосредственно прописаны запросы на чтение данных в ролях. Например в запросе есть такой кусок кода:
#Если &ИспользоватьОграничениеПоСклады #Тогда
                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                        ТОГДА НастройкиПравДоступаПользователей.ОбъектДоступа В (ТекущаяТаблица.СкладОтправитель, ТекущаяТаблица.СкладПолучатель)
                                    #КонецЕсли

Что касается ордерных складов, то если внимательно посмотреть запрос в настройке документа поступление то можно найти следующий немаловажный кусок:
#Если &ИспользоватьОграничениеПоСклады #Тогда
 , ВЫБОР КОГДА ТекущаяТаблица.СкладОрдер ССЫЛКА Справочник.Склады
ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
КОНЕЦ
#КонецЕсли


Думаю тут всё вполне понятно, если нужно будет прокомментить, пишите, будет время отвечу.
Полностью код приводить не буду, кому нужно будет, думаю посмотрит сам.
Еще раз обращаю внимание читателей: приведенный код это лишь маленький кусочек запроса, не надо сразу же запихивать его в настройки прав в указанные документы!
81. sanches (sanches) 232 19.11.12 10:27 Сейчас в теме
interlamersha, большое спасибо за констуктивный комментарий. Я постараюсь как можно быстрее отредактировать статью.
Я уже точно не помню откуда взял за основу шаблон, вроде из УТ 11
83. interlamersha Internetkina (interlamersha) 19.11.12 11:20 Сейчас в теме
маленький докоммент к моему предыдущему пОсту:
Тупо взять и поменять в указанных шаблонах Контрагента на Склад нельзя, т.к. необходимо также учитывать тот факт, что СКЛАД В ДОКУМЕНТАХ И В ШАПКЕ И В ТАБЛИЧНОЙ ЧАСТИ!!! Т.е. моя рекомендация есть ни что иное как подсказка в какую сторону глянуть, где подсмотреть кусочек, а не готовое решение, продумывайте внимательно алгоритм.
84. sanches (sanches) 232 19.11.12 11:37 Сейчас в теме
Да, про склады в табличной части я писал, что если используются склады в табличной части, то нужно что-то придумывать... Показывать часть строк в документе как-то не хорошо.
85. interlamersha Internetkina (interlamersha) 19.11.12 11:47 Сейчас в теме
На самом деле в моей практике варианты с использованием складов в табличной части попадаются редко, и тому есть одна немаловажная причина, это стыковка УТ-БП. В бухии нет складов в табличной части, и такие документы будут грузиться на тот склад который указан в шапке документа, или же на склад указанный "Основной по умолчанию". Если в УТ ведется складской учет, а в БП не ведется или же весь товар кидается на единый склад и не заморачиваются с перемещениями, то такая схема прокатывает, а если же этот складской учет есть, то ждите криков бухгалтеров "почему это в торговле реализация прошла, а в бухгалтерии не проводится!". Частенько перепиливаю типовые правила конвертации УТ-БП на работу через обработку, а не через планы обмена, т.е. так как это было в УТ-БП 1.6., на это тоже есть ряд причин, но это другая история, так вот, в типовых правилах данная схема на сколько мне помнится до сих пор не разрулина корректно.
91. sanches (sanches) 232 24.11.12 21:57 Сейчас в теме
Вы что ли жертва? :))
Вы жертва окулиста, это да
Sitex; Antimyslitel; interlamersha; +3 Ответить
93. Владимир Родионов (Балабас) 164 16.01.13 10:00 Сейчас в теме
внимательнее читаем, и все получится
94. Гусен Халилуллаев (Afandi) 28.01.13 13:25 Сейчас в теме
А как сделать, что бы к складу дополнительно добавить разрешение на операцию приход/расход...?
К примеру у меня в базе 4 организации. Мне нужно 3-м из 4-х организации дать возможность перемещения товаров с основных складов 4-й организации к себе.
т.е. указывать к каждому складу какие операции (приход/расход) можно делать с ним.
Оставьте свое сообщение