Имя: Пароль:
1C
1С v8
УТ 10.3 разраничение прав доступа по складам
0 Stim
 
19.10.12
10:10
возможно ли? Если да, то в каком релизе?
1 Stim
 
19.10.12
10:13
+ или как-то склад привязать к организации..
2 Vadim_37
 
19.10.12
10:17
Не надо склад к организации привязывать, просто храните на одном складе товар одной организации.
3 Vadim_37
 
19.10.12
10:17
разграничение только доработкой
4 Vadim_37
 
19.10.12
10:18
http://infostart.ru/public/87531/ я так делал
5 Stim
 
19.10.12
10:26
(2) заводить кучу организаций?
6 Vadim_37
 
19.10.12
10:35
Куда? А они разве не заведены?
7 floody
 
19.10.12
10:48
группа доступности складов, не?
8 Stim
 
19.10.12
10:48
(6) заведены. но мне нужно, чтобы пользователь не смог выбрать в документе склады, к которым он не имеет доступа
9 Stim
 
19.10.12
10:49
(7) это для заказов вроде бы. не для РлС
10 Vadim_37
 
19.10.12
10:55
(8) Тогда (4) Проверено-работает
11 Stim
 
19.10.12
11:02
(10) какой-то гемор.. а в УТ 11 реализовано?
12 Stim
 
19.10.12
11:11
хм. вроде бы есть ограничение по складам в УТ11
13 Vadim_37
 
19.10.12
11:29
(11) час работы с перекурами, какой гемор
14 ProProg
 
19.10.12
11:30
я тупо в журналах зашил куско кода по отборам. который устанавливает отбор по складу юзера и запрещает его отключать.
15 ProProg
 
19.10.12
11:30
было актуально когда в одной базе работало 7 магазов.
16 Stim
 
19.10.12
11:37
(14) пздц. не проще было через РЛС сделать?
17 ProProg
 
19.10.12
11:44
(16) Нет. Я сделал для магазов специальный интерфейс в виде одной обработки. убрал полностью типовой интерфейс. Сделал автооткрытие обработки. В ней закладками только те списки что им нужны и пипец. Своего рода рабочее месито продавца/кассира розницы.
Даже не пришлось типовую трогать.
18 Vadim_37
 
19.10.12
11:45
(17) Хорошо не попался умный продавец, а мож и попался - вы уже не узнаете.
19 pumbaEO
 
19.10.12
11:45
(16) Для некоторых проще вот такие гов нокоды делать:

Функция ДоступКОтчету(Пользователь, ИмяОтчета, ОбъектОтчета) Экспорт
   Если НЕ ЗначениеЗаполнено(Пользователь) Тогда
       Сообщить("Неверная авторизация!");
       Возврат Ложь;
   КонецЕсли;    
   Если ПустаяСтрока(ИмяОтчета) Тогда
       Сообщить("Неверный идентификатор отчета");
       Возврат Ложь;
   КонецЕсли;
   
   Если ИмяОтчета = "Продажи" Тогда
       //Объект - универсальныйотчет
       ЗапрФилиалы = Новый Запрос;
       ЗапрФилиалы.Текст =
       "ВЫБРАТЬ
       |    ДоступКОтчетам.Филиалы
       |ИЗ
       |    РегистрСведений.ДоступКОтчетам КАК ДоступКОтчетам
       |ГДЕ
       |    ДоступКОтчетам.Пользователь = &Пользователь
       |    И ДоступКОтчетам.ИмяОтчета = &ИмяОтчета
       |    И ДоступКОтчетам.Доступен = ИСТИНА";
       ЗапрФилиалы.УстановитьПараметр("Пользователь", Пользователь);
       ЗапрФилиалы.УстановитьПараметр("ИмяОтчета", "Продажи");
       ТабФилиалов = ЗапрФилиалы.Выполнить().Выгрузить();
       МассивФилиалов = ТабФилиалов.ВыгрузитьКолонку("Филиалы");
       
       ЗапросВсеФилиалы = Новый Запрос;
       ЗапросВсеФилиалы.Текст =
       "ВЫБРАТЬ
       |    Филиалы.Ссылка
       |ИЗ
       |    Справочник.Филиалы КАК Филиалы
       |ГДЕ
       |    Филиалы.ПометкаУдаления = ЛОЖЬ
       |    И Филиалы.ЭтоГруппа = ЛОЖЬ";
       ТабВсеФилиалы = ЗапросВсеФилиалы.Выполнить().Выгрузить();
       МассивВсеФилиалы = ТабВсеФилиалы.ВыгрузитьКолонку("Ссылка");
       ЕстьНедоступныеФилиалы = Ложь;
       Для Каждого ТекФилиал Из МассивВсеФилиалы Цикл
           Если МассивФилиалов.Найти(ТекФилиал) = Неопределено Тогда
               ЕстьНедоступныеФилиалы = Истина;
               Прервать;
           КонецЕсли;    
       КонецЦикла;    
       
       //Добавлено: Сосна Евгений <shenja@sosna.zp.ua> 04.08.2012
       // [[https://bitbucket.org/.../1|Issue #1]]
       // филиалов нет, разделение доступа по филиалам не используется.
       // автоматом ДокументПродажи.Ответственный не добавляется . Данный фильтр не имеет смысла.
       // Я только исправляю.
       //
       // Автору:
       // Что бы тебе с ц уко икнулось - ВСЕ НАДО ДЕЛАТЬ НА РЛС
       //
       ЕстьНедоступныеФилиалы = Ложь;
       
       /// Сосна Евгений <shenja@sosna.zp.ua> 04.08.2012
       Если ЕстьНедоступныеФилиалы Тогда
           СписокФилиалов = Новый СписокЗначений;
           СписокФилиалов.Очистить();
           
           ОтборВОтчете = ОбъектОтчета.УниверсальныйОтчет.ПостроительОтчета.Отбор;
           ЭлементОтбора = ОтборВОтчете.Найти("ДокументПродажиОтветственныйОтделение");
           //ЭлементОтбора = ОтборВОтчете.Найти("ДокументПродажиСклад");
           Если ЭлементОтбора = Неопределено Тогда
               ЭлементОтбора = ОтборВОтчете.Добавить("ДокументПродажи.Ответственный.Отделение");
               //ЭлементОтбора = ОтборВОтчете.Добавить("Документ продажи.Склад");
               для Каждого ТекФилиал из МассивФилиалов Цикл
                   СписокФилиалов.Добавить(ТекФилиал);
               КонецЦикла;    
           Иначе
               //СписокВОтборе = ОтборВОтчете["ДокументПродажиСклад"].Значение;
               СписокВОтборе = ОтборВОтчете["ДокументПродажиОтветственныйОтделение"].Значение;
               Если ТипЗнч(СписокВОтборе) = Тип("СписокЗначений") Тогда
                   Для Каждого ТекЗначение из СписокВОтборе Цикл
                       Если НЕ МассивФилиалов.Найти(ТекЗначение.Значение)=Неопределено Тогда
                           СписокФилиалов.Добавить(ТекЗначение.Значение);
                       КонецЕсли;    
                   КонецЦикла;    
               КонецЕсли;
           КонецЕсли;
           Если СписокФилиалов.количество() = 0 Тогда
               для Каждого ТекФилиал из МассивФилиалов Цикл
                   СписокФилиалов.Добавить(ТекФилиал);
               КонецЦикла;    
           КонецЕсли;
           //ЭлементОтбора.доступность = ложь;
           ОтборВОтчете["ДокументПродажиОтветственныйОтделение"].Использование = Истина;
           ОтборВОтчете["ДокументПродажиОтветственныйОтделение"].Видсравнения = ВидСравнения.ВСписке;
           ОтборВОтчете["ДокументПродажиОтветственныйОтделение"].Значение = СписокФилиалов;
           //ОтборВОтчете["ДокументПродажиСклад"].Использование = Истина;
           //ОтборВОтчете["ДокументПродажиСклад"].Видсравнения = ВидСравнения.ВСписке;
           //ОтборВОтчете["ДокументПродажиСклад"].Значение = СписокСкладов;
       КонецЕсли;
       Если НЕ (Пользователь.ПолныйДоступКБалансам или Пользователь.ICQАдминистратор) Тогда
           ОтборВОтчете = ОбъектОтчета.УниверсальныйОтчет.ПостроительОтчета.Отбор;
           ЭлементОтбора = ОтборВОтчете.Найти("КонтрагентМенеджерыПокупателяМенеджерПокупателя");
           //ЭлементОтбора = ОтборВОтчете.Найти("ДокументПродажиСклад");
           Если ЭлементОтбора = Неопределено Тогда
               ЭлементОтбора = ОтборВОтчете.Добавить("Контрагент.МенеджерыПокупателя.МенеджерПокупателя");
           КонецЕсли;
           
           //ЭлементОтбора.доступность = ложь;
           ОтборВОтчете["КонтрагентМенеджерыПокупателяМенеджерПокупателя"].Использование = Истина;
           ОтборВОтчете["КонтрагентМенеджерыПокупателяМенеджерПокупателя"].Видсравнения = ВидСравнения.Равно;
           ОтборВОтчете["КонтрагентМенеджерыПокупателяМенеджерПокупателя"].Значение = Пользователь;    
       КонецЕсли;                    
       
   КонецЕсли;    



перед формирования отчета вызывается процедурка, которая добавляет свои отборы...
20 Stim
 
19.10.12
11:47
(17) это интерфейсное решение. оно небезопасное
21 pumbaEO
 
19.10.12
11:48
(17) страус тоже голову в песок прячет - льва не вижу, значит я в безопасности.
22 ProProg
 
19.10.12
11:50
(20) небезопасно любое решение) тк юзеры хоть писти их - свои пароли любят раздавать направо и налево.
23 Stim
 
19.10.12
11:50
(22) ну с РЛС решение гораздо более надежное
24 Stim
 
19.10.12
11:51
+ правда приходится изменять конфу. это тоже не гуд
25 ProProg
 
19.10.12
11:51
(21) какая нафиг безопасность в ограничении по складу.
И кстати да это решение - хрен обойдешь.
26 ProProg
 
19.10.12
11:51
(24) вот в этом вся проблема.
Закон Брукера: Даже маленькая практика стоит большой теории.