Ограничение на просмотр счетов в стандартных отчетах

13.12.16

Администрирование - Роли и права

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

Скачать файлы

Наименование Файл Версия Размер
Расширение конфигурации + Текст общего модуля
.rar 315,90Kb
128
.rar 315,90Kb 128 Скачать
Свободная конфигурация со справочником "ОграничениеПравДоступа"
.cf 17,39Kb
50
.cf 17,39Kb 50 Скачать

Здравствуйте ! 

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

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

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

Все настройки рассмотрим на примере Бухгалтерии БП 3.0 (релиз  3.0.44.140) 

1. Для хранения данных о пользователях,  у которых ограничены права на просмотр счетов,  и самих счетов, доступ к которым ограничен, я добавил Справочник  "ОграничениеПравПользователей" с реквизитом "Пользователь" - СправочникСсылка.Пользователи  и две табличные части:. Длину наименования у спрвочника  указываем  50 символов.  

"СписокЗапрещенныхСчетов" - Колонки "Счет" - ПланыСчетов.Хозрасчетный, "Использование" - Тип Булево.

"СписокЗапрещенныхСубконто" - Колонки "ЗапрещенноеСубконто" - Тип ПланВидовХарактеристик.ВидыСубконтоХозрасчетный

Тут важное уточнение - полные права доступа на этот справочник должны быть только у администратора (или пользователя с полными правами), у других должен быть доступ только на чтение. 

2.  Добавление общего модуля «ОграничениеПравПользователей» (если кто использует платформу 8.3.9 модуль можно добавить в расширение) 

Код Модуля (сразу оговорюсь, что данный код не оптимизировался , вполне возможно привести данный код в более красивый вид). Необходимые комментарии в коде


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

////ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ И ПРОЦЕДУРЫ///////////////////////
Функция ПоискиУстановкаОтбора (КомпоновщикНастроек,ПолеОтбора,ВидСравнения,ЗначениеОтбора)
	
	ОтборНайден = Ложь;  
	
	Для каждого Отбор Из КомпоновщикНастроек.Отбор.Элементы Цикл 
		
		Если Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных (ПолеОтбора) Тогда 
	
			Если Отбор.Использование = Истина Тогда // Возможно пользователь сам установил какой-то отбор по заданному полю, 
            //поэтому мы должные проверить 		
	            ОтборНайден = ПроверитьУстановленныйОтбор(Отбор,ВидСравнения,ЗначениеОтбора);
			Иначе
				
			Отбор.Использование = Истина;
			Отбор.ВидСравнения = ВидСравнения;		
			Отбор.ПравоеЗначение = ЗначениеОтбора;

			ОтборНайден = Истина;
			
			КонецЕсли;		
     	КонецЕсли;
	КонецЦикла;
	
	Возврат  ОтборНайден;
	
КонецФункции


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

/////////////ОСНОВННЫЕ ФУНКЦИИ И ПРОЦЕДУРЫ /////////////////////////////////
Процедура УстановитьОграничениеНаПросмотрСчетов(ОтчетОбъект,НастройкаКомпоновкиДанных,Форма,СКД=неопределено) Экспорт;
	
	// Получим список  запрещенных Счетов для текущего пользователя
	Запрос = Новый Запрос;
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВЫБОР
	|		КОГДА ОграничениеПравПользователейСписокРазрещенныхСчетов.Использование = ЛОЖЬ
	|			ТОГДА ОграничениеПравПользователейСписокРазрещенныхСчетов.Счет
	|	КОНЕЦ КАК ЗапрещенныеСчета
	|ИЗ
	|	Справочник.ОграничениеПравПользователей.СписокРазрещенныхСчетов КАК ОграничениеПравПользователейСписокРазрещенныхСчетов
	|ГДЕ
	|	ОграничениеПравПользователейСписокРазрещенныхСчетов.Ссылка.Пользователь = &Пользователь
	| И ОграничениеПравПользователейСписокРазрещенныхСчетов.Использование = ЛОЖЬ";
	
		
	Запрос.УстановитьПараметр("Пользователь",ПараметрыСеанса.ТекущийПользователь);
	
	Результат = Запрос.Выполнить();
	                
	ТаблицаСчетов = Результат.Выгрузить(); // результат выгружаем в таблиц  
		
	ЗапрещенныеСчета = ТаблицаСчетов.ВыгрузитьКолонку("ЗапрещенныеСчета"); // Получаем массив запрещенных счетов
	
    //Получим список запррещенных к просмотру субконто
    Запрос.Текст ="ВЫБРАТЬ
	|	ОграничениеПравПользователейЗапрещенныеСубконто.ЗапрещенноеСубконто
	|ИЗ
	|	Справочник.ОграничениеПравПользователей.ЗапрещенныеСубконто КАК ОграничениеПравПользователейЗапрещенныеСубконто
	|ГДЕ
	|	ОграничениеПравПользователейЗапрещенныеСубконто.Ссылка.Пользователь = &Пользователь";
	
	Запрос.УстановитьПараметр("Пользователь",ПараметрыСеанса.ТекущийПользователь);
	
	ТаблицаЗапрещенныхСубконто = Запрос.Выполнить().Выгрузить();
	
	Если ЗапрещенныеСчета.Количество()= 0 И ТаблицаЗапрещенныхСубконто.Количество() = 0 тогда  // Если нет ограничений , то выходим 
		Возврат;
	КонецЕсли;	
	
	
	МассивЗапрещенныхСубконто = ТаблицаЗапрещенныхСубконто.ВыгрузитьКолонку("ЗапрещенноеСубконто");
		
	СписокЗапрещенныхСчетов = Новый СписокЗначений;
	СписокЗапрещенныхСчетов.ЗагрузитьЗначения(ЗапрещенныеСчета); // из массива преобразуем в список значений

    //Определим какой отчет запустил пользователь  
	ИдентификаторОбъекта = БухгалтерскиеОтчетыКлиентСервер.ПолучитьИдентификаторОбъекта(Форма); // получаем идентификатор отчета 
	
    // В зависимости от вида отчета переходим к обработке 

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




Процедура ОСВПоСчету_АнализСчета_КарточкаСчета(ОтчетОбъект,ИдентификаторОбъекта,НастройкаКомпоновкиДанных,СписокЗапрещенныхСчетов,СКД)
	
	    		
		ОтборПоСчету = Ложь ; // установим флаг для поиска Отбора 
		
		ОтборПоСчету = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"Счет",ВидСравнения.НеВСписке,СписокЗапрещенныхСчетов);
		
		Если Не ОтборПоСчету Тогда // Если отбор не найден - установим 
			ДобавитьОтбор(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов,Истина);
		КонецЕсли;	
				
		Если  ИдентификаторОбъекта = "ОборотноСальдоваяВедомостьПоСчету" Тогда 
			
			// В стандартной настройке СКД на поле "Счет" установлено отграничение по условию , поэтому необходимо
			// изменить запрос (только в части настроек для СКД , т.е. основной текст запроса не меняется) и отключить ограничение 
            // на поле "Счет" 
			
			Запрос = СКД.НаборыДанных.ОсновнойНаборДанных.Элементы.ОстаткиИОбороты.Запрос;
			
			ЗапросБезСубконто = СКД.НаборыДанных.ОсновнойНаборДанных.Элементы.ОстаткиИОборотыБезСубконто.Запрос;
			
			ПоляОсновногоНабораДанных = СКД.НаборыДанных.ОсновнойНаборДанных.Поля;
			
			СтрокаЗамены = "{ГДЕ"+ Символы.ПС + "ХозрасчетныйОстаткиИОбороты.Счет.*,";
			ЗаменяемаяСтрока = "{ГДЕ";
			
			Запрос = СтрЗаменить(запрос,ЗаменяемаяСтрока,СтрокаЗамены);
			
			ЗапросБезСубконто = СтрЗаменить(ЗапросБезСубконто,ЗаменяемаяСтрока,СтрокаЗамены);
			
			
			//Ищем поле и отключаем ограничение
			ПолеСчет = ПоляОсновногоНабораДанных.Найти("Счет");
			
			Если ПолеСчет <> неопределено тогда 
				
				ПолеСчет.ОграничениеИспользования.Условие = Ложь;
				ПолеСчет.ОграничениеИспользованияРеквизитов.Условие = Ложь;
				
			КонецЕсли;	
			
			 СКД.НаборыДанных.ОсновнойНаборДанных.Элементы.ОстаткиИОбороты.Запрос = Запрос;
			 СКД.НаборыДанных.ОсновнойНаборДанных.Элементы.ОстаткиИОборотыБезСубконто.Запрос= ЗапросБезСубконто;
			
             // После данных действий - отбор который был установлен выше будет работать 
 	
		КонецЕсли;

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

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


Процедура ОСВ(НастройкаКомпоновкиДанных,СписокЗапрещенныхСчетов)
		
	ПараметрыКомпоновки = НастройкаКомпоновкиДанных.ПараметрыДанных;	
	
	ПараметрСчет = ПараметрыКомпоновки.Элементы.Найти("СчетаИсключенныеИзЗапросаПоСчетам"); 
	
	ПараметрСчетДетализации =ПараметрыКомпоновки.Элементы.Найти("Счетдетализации"); 
	
	Если  ПараметрСчет <> Неопределено Тогда 	
		Если СписокЗапрещенныхСчетов.Количество()>0 Тогда	
			БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(ПараметрыКомпоновки.Элементы,"СчетаИсключенныеИзЗапросаПоСчетам",СписокЗапрещенныхСчетов,Истина);
		КонецЕсли;		
	КонецЕсли;
	
	СчетНайден = Ложь;
		
    СчетНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
		
	Если Не СчетНайден Тогда 	
		ДобавитьОтбор(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов,Истина);
	КонецЕсли;
		
КонецПроцедуры

Процедура АнализСубконто_КарточкаСубконто(НастройкаКомпоновкиДанных,МассивЗапрещенныхСубконто,СписокЗапрещенныхСчетов)
	
// В принципе можно обойтись только установкой  отбора по счету. Но все таки решил оставить первоначальный вариант с двойной проверкой как по счету так и 
// через удаление запрещенных субконто из списка параметров 

	Если СписокЗапрещенныхСчетов.Количество()> 0 Тогда 
		
		СчетНайден = Ложь;
		
		СчетНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
		
		Если Не СчетНайден Тогда 	
			ДобавитьОтбор(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов,Истина);
		КонецЕсли;	
		
	КонецЕсли;
	
	Если МассивЗапрещенныхСубконто.Количество() > 0 Тогда 
		
		ПараметрыКомпоновки = НастройкаКомпоновкиДанных.ПараметрыДанных;	
		
		ПараметрСписокСубконто = ПараметрыКомпоновки.Элементы.Найти("СписокВидовСубконто");
		
		Если  ПараметрСписокСубконто<> неопределено Тогда 
			
			МассивУстановленныхСубконто = ПараметрыКомпоновки.Элементы.Найти("СписокВидовСубконто").Значение;
			
			Для каждого Субконто из МассивЗапрещенныхСубконто Цикл 
				
				ИндексЭлемента = МассивУстановленныхСубконто.найти (Субконто) ;	
				
				Если  ИндексЭлемента<> Неопределено Тогда 			
					МассивУстановленныхСубконто.удалить(ИндексЭлемента) ;
				КонецЕсли;	
				
			КонецЦикла;
			
			Если МассивУстановленныхСубконто.Количество() = 0 Тогда 
				МассивУстановленныхСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка());
			КонецЕсли;	
			
			БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(ПараметрыКомпоновки.Элементы,"СписокВидовСубконто",МассивУстановленныхСубконто,Истина);
			
		КонецЕсли;		
		
	КонецЕСли;
		
	КонецПроцедуры

Процедура ОтчетПоПроводкам_ОборотыМеждуСубконто(НастройкаКомпоновкиДанных,СписокЗапрещенныхСчетов)
	
	    ОтборКтНайден = Ложь;
		ОтборДтНайден = Ложь;
			
		ОтборКтНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
		ОтборДтНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"КорСчет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
		
		Если Не ОтборДтНайден тогда 
			ДобавитьОтбор(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов,Истина);
		КонецЕсли;
		
		Если Не ОтборКтНайден тогда 
			ДобавитьОтбор(НастройкаКомпоновкиДанных,"КорСчет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов,Истина);
		КонецЕсли;
	
КонецПроцедуры

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

3. В конфигурацию добавляем расширение (имя заданное по умолчанию я менять  не стал Расширение1 , префикс Расш1_

В расширение следует добавить формы отчетов, к которым настраивается ограничение. В моем случае это:

  • Анализ счета
  • Карточка счета
  • Анализ субконто
  • Карточка субконто
  • Оборотно-сальдовая ведомость
  • Оборотно-сальдовая ведомость по счету
  • Обороты между субконто
  • Сводные проводки
  • Обороты счета
  • Отчет по проводкам

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

  • Процедура "СформироватьОтчет"
  • Функция "СформироватьОтчетНаСервере"
  • Функция "ПодготовитьПараметрыОтчета" 

 К указанным функциям и процедуре необходимо добавить префикс расширения.   А для команды "СформироватьОтчет" (кнопка "Сформировать" на форме) назначить новое действие "Расш1_СформирватьОтчет" 

Вот пример  для отчета КарточкаСчета

&НаСервере
Функция Расш1_ПодготовитьПараметрыОтчета()
   // В этой функции происходит подмена настроек "НастройкиКомпоновкиДанных"

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

&НаСервере
Функция Расш1_СформироватьОтчетНаСервере() Экспорт
 
	Если Не КомпоновщикИнициализирован Тогда
		ИнициализацияКомпоновщикаНастроек();
	КонецЕсли;
	
	Если Не ПроверитьЗаполнение() Тогда
		Возврат Новый Структура("ЗаданиеВыполнено, ОтказПроверкиЗаполнения", Истина, Истина);
	КонецЕсли;
	
	ИБФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая();
	
	ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
	
	ИдентификаторЗадания = Неопределено;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "НеИспользовать");
	
	Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ВыводитьЗаголовок", ВыводитьЗаголовок);
	Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ВыводитьПодвал"   , ВыводитьПодвал);
	Отчет.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки              = "";
	Отчет.КомпоновщикНастроек.Настройки.Порядок.ИдентификаторПользовательскойНастройки            = "";
	Отчет.КомпоновщикНастроек.Настройки.УсловноеОформление.ИдентификаторПользовательскойНастройки = "";
	
    // Получаем параметры отчета из нашей функции

	ПараметрыОтчета = Расш1_ПодготовитьПараметрыОтчета();
	
	Если ИБФайловая Тогда
		АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
		БухгалтерскиеОтчетыВызовСервера.СформироватьОтчет(ПараметрыОтчета, АдресХранилища);
		РезультатВыполнения = Новый Структура("ЗаданиеВыполнено", Истина);
	Иначе
		РезультатВыполнения = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
			УникальныйИдентификатор,
			"БухгалтерскиеОтчетыВызовСервера.СформироватьОтчет",
			ПараметрыОтчета,
			БухгалтерскиеОтчетыКлиентСервер.ПолучитьНаименованиеЗаданияВыполненияОтчета(ЭтаФорма));
			
		АдресХранилища       = РезультатВыполнения.АдресХранилища;
		ИдентификаторЗадания = РезультатВыполнения.ИдентификаторЗадания;
	КонецЕсли;
	
	Если РезультатВыполнения.ЗаданиеВыполнено Тогда
		ЗагрузитьПодготовленныеДанные();
	КонецЕсли;
	
	Элементы.Сформировать.КнопкаПоУмолчанию = Истина;
	
	Возврат РезультатВыполнения;
	
КонецФункции

&НаКлиенте
Процедура Расш1_СформироватьОтчет(Команда)
	
	// СтандартныеПодсистемы.ОценкаПроизводительности
	УИДЗамера = ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Ложь, "ФормированиеОтчетаАнализСчета");
	// СтандартныеПодсистемы.ОценкаПроизводительности
	
	ОчиститьСообщения();
	
	ОтключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания");
	
    // Вызываем нашу функцию Расш1_сформироватьОтчетНаСервере

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


&НаСервере
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)	
	УстановитьВыполнениеПослеОбработчиковСобытия("Расш1_ПриСозданииНаСервереПосле", Неопределено);
КонецПроцедуры

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ,СтандартнаяОбработка,ДополнительныйПараметр) 
	
	Если Параметры.Свойство("ОткрытьРасшифровку") И Параметры.ОткрытьРасшифровку Тогда
	  Расш1_СформироватьОтчетНаСервере();
	КонецЕсли;  
		
КонецПроцедуры

Здесь следует обратить внимание на несколько моментов 

1)  Не забыть указать метод УстановитьВыполнениеОбработчиковСобытия(ложь) в самом конце процеду "СформироватьОтчет", что бы не вызывался обработчик  из основной конфигурации

2) В перенесенных функциях и процедуре  заменить обращение к стандарным функциям  на наши 

В процедуре Расш1_СформироватьОтчет - заменить строку 

РезультатВыполнения = СформироватьОтчетНаСервер()

 на  

РезультатВыполнения = Расш1_СформироватьОтчетНаСервер()

   И в функции  "СформироватьОтчетНаСервере" 

ПараметрыОтчета = ПодготовитьПараметрыОтчета();

на 

ПараметрыОтчета = Расш1_ПодготовитьПараметрыОтчета();

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

Стоит сказать пару слов о недостатках данного подхода

  1. В заголовках отчета пользователь будет видеть установленный отбор (но в настройках его не будет,  и снять отбор пользователь не сможет). 
  2. Некорректные данные. Ну тут все стандартно.   В принципе, как вариант, можно оставлять не закрывать ОСВ так как пользователь будет видеть общую сумму и полную картину, а вот расшифровки через другие отчеты придется закрывать.
  3. Требуется настройка прав на документы. В отчете суммы он может не увидеть, а вот если сможет открыть документ ...
  4. В данном решении не все отчеты прописаны, через которые можно получить данные (например отсутствует Шахматка) - пока не дошли руки . Думаю, реализовать в ближайшее время.
  5. Более сложная настройка по сравнению с RLS - Кода хоть и немного, но все же больше чем  настройка через RLS   

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

P.S. В прикрепленном файле содержится Расширение конфигурации + текстовый файл с кодом Общего модуля 
Вам остается создать справочник.  

Напомню - Эксперименты лучше проводить сначала на копии базы)))  

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

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119981    656    389    

701

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

Зарплата Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    32526    202    89    

162

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2770    11    1    

30

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    3257    10    1    

31

Роли для кладовщика

Логистика, склад и ТМЦ Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

2520 руб.

21.05.2019    1692166    551    192    

131

Расширение для разграничения доступа к контрагентам и обработка для группового назначения доступа для Бухгалтерии (RLS) 3.0.143.42

Роли и права Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение предназначено для Бухгалтерии предприятия (версии ПРОФ и КОРП). Типовая конфигурация остается на поддержке. С помощью расширения менеджер по продажам будет иметь доступ к контрагентам и списку их документов только в случае, если он является для них ответственным. Пользователю с полными правами также доступна обработка «Назначение ответственных» для группового добавления/удаления ответственного в карточке контрагента. Есть версия данного расширения для клиентов Fresh - в магазине расширений (Fresh)

9360 руб.

14.09.2022    5734    6    4    

8

Универсальная система оповещений в базе или по почте по произвольным условиям, расписанием, ролям и пользователям (Расширение / конфигурация для платформ 8.3.6+, для ЛЮБЫХ баз)

Роли и права Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Данная система разработана как альтернатива стандартной системе напоминаний. Но имеет ряд существенных преимуществ: отображение в базе или с отправкой по почте, свое расписание, возможность фильтрации по ролям и пользователям, формирование своих запросов и макетов, шаблоны писем, работа в фоне. А также может блокировать работу пользователей при заданных условиях. Может работать в составе любой конфигурации. Имеется справка с описанием возможностей. (Обновление от 20.02.2024, версия 2.2, расширение)

18000 руб.

29.11.2019    24658    13    8    

33
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kng67 11.11.16 09:21 Сейчас в теме
У нас стоит Комплексная автоматизация. Так вот периодически возникающая идея фикс у руководства: "как бы закрыть 70 счет для всех кроме расчетчика и главбуха".
Интересно, подойдет ли ваше решение для нашей конфигурации?
2. vadim1011985 99 11.11.16 09:57 Сейчас в теме
КА не смотрел , но думаю что немного видоизменив код , решение может подойти и для КА. + немного зависит от версии конфигурации 1.1 или 2.0 (2.2). Если будет время я посмотрю как КА устроена и смогу сказать подойдет ли данное решение.
3. v_id 106 13.12.16 15:45 Сейчас в теме
Спасибо за подробную статью!
Выгрузку конфы с новым справочником можно попросить добавить в поставку?

ЗЫ. И поправьте, пожалуйста, характеристику статьи Конфигурация на инфостарте как 1С:Бухгалтерия 3.0, а то параметрическим поиском ее не найти.
4. vadim1011985 99 13.12.16 16:54 Сейчас в теме
(3) К сожалению, выгрузку со справочником добавить нельзя, так как это целая рабочая конфигурация и модераторы Инфостарта скорее всего не пропустят ее , так как это будет нарушением авторский прав 1с.

Я думаю что добавление справочника в конфу не составит труда. Один реквизит , 2 табличные части - Там нет никакого сверх сложного кода- заполнение таб.частей по плану счетов , и добавление всех пользователей с установкой ограничения на 70 счет. Если нужно код могу выложить

5. корум 287 13.12.16 17:00 Сейчас в теме
(4)
(4)
выгрузку со справочником добавить нельзя

Можно.
Удали лишние объекты конфигурации - общие модули, перечисления, документы, вот это всё.
6. vadim1011985 99 13.12.16 17:07 Сейчас в теме
(5) т..е. практически всю конфигурацию ?

подскажи сколько времени на это уйдет ? Как вариант создать конфу для разработки и туда добавить этот справочник. Но по моему быстрее самому добавить справочник.
7. корум 287 13.12.16 17:10 Сейчас в теме
(6) можно наоборот, в пустую конфигурацию перетащить нужные объекты :)

покажи товарищу (3) хотя бы скриншоты, а код можно текстовым файлом прикрепить...
22. AnryMc 849 20.12.16 11:26 Сейчас в теме
(6)
чески всю конфигурацию ?

подскажи сколько времени на это уйдет ?


Зачем? Скопируйте в "пустую" нужное...
8. vadim1011985 99 13.12.16 20:12 Сейчас в теме
(3) (7) по просьбам трудящихся добавил пустую конфу со справочником
9. v_id 106 14.12.16 14:28 Сейчас в теме
10. v_id 106 14.12.16 15:05 Сейчас в теме
Тестирую. Конфу со справочником не качал.

1. Здесь в описании "Справочник "ОграничениеПравПользователей" с реквизитом "Пользователи", а в расширении у Справочника реквизит ""Пользователь"
2. Расширение1: Критичная: Значение контролируемого свойства ДлинаНаименования у объекта Справочник.ОграничениеПравПользователей не совпадает со значением в расширяемой конфигурации. Это при запуске, у вас в расширении длина 50, по-умолчанию у меня длинна 25
11. v_id 106 14.12.16 15:10 Сейчас в теме
3. Описано как "СписокЗапрещенныхСубконто" - Колонки "ЗапрещенноеСубконто" - Тип ПланВидовХарактеристик.ВидыСубконтоХозрасчетный", а в расширении ТЧ называется ЗапрещенныеСубконто
17. vadim1011985 99 14.12.16 16:28 Сейчас в теме
(11) В принципе не кретично но посмотрел у себя вроде все правильно на всякий случай выкладываю сюда расширение из рабочей базы
Прикрепленные файлы:
Расширение1.cfe
12. v_id 106 14.12.16 15:17 Сейчас в теме
4. Не, так не пойдет, описание чего-то совсем не совпало. Еще и СписокРазрещенныхСчетов в расширении.

По-этому я просил справочник, и лучше в один архив
13. v_id 106 14.12.16 15:39 Сейчас в теме
Чего-то у меня вообще не получается. Идея закрыть доступ к развороту по сотрудникам на 70 счете.
Включил в список запрещенных субконто "Работники организаций", список счетов не заполнял. Зашел под пользователем в ОСВ по счету и все формируется. Хотя, по-идее, вообще ничего не должно, я же никакой счет не разрешил и в добавок и субконто запретил.
20. vadim1011985 99 14.12.16 16:40 Сейчас в теме
(13) не работает , так как не погрузилось расширение. необходимо исправить ошибки - должно работать
14. v_id 106 14.12.16 15:42 Сейчас в теме
Забыл описать себя
1С:Предприятие 8.3 (8.3.9.1850)
Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.44.204)

Общий модуль ОграничениеПравПользователей в расширении
15. v_id 106 14.12.16 16:02 Сейчас в теме
Я так понял, что ограничение по субконто реализовано только для отчета по субконто. Но и там у меня ошибка:
{Расширение1 ОбщийМодуль.ОграничениеПравПользователей.Модуль(346)}: Метод объекта не обнаружен (найти)
ИндексЭлемента = МассивУстановленныхСубконто.найти (Субконто) ;
16. vadim1011985 99 14.12.16 16:16 Сейчас в теме
Так давайте по порядку

1) "Пользователи", а в расширении у Справочника реквизит ""Пользователь" - в описании ошибка Правильно "Пользователь " - описание поправлю
2) Если справочники добавляли сами то нужно у справочника длину наименования указать 50 - тоже укажу в описании
18. vadim1011985 99 14.12.16 16:35 Сейчас в теме
Закомментируйте укакзанные строки

Процедура АнализСубконто_КарточкаСубконто(НастройкаКомпоновкиДанных,МассивЗапрещенныхСубконто,СписокЗапрещенныхСчетов)
	
	Если СписокЗапрещенныхСчетов.Количество()> 0 Тогда 
		
		СчетНайден = Ложь;
		
		СчетНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
		
		Если Не СчетНайден Тогда 	
			ДобавитьОтбор(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов,Истина);
		КонецЕсли;	
		
	КонецЕсли;
	
	//Если МассивЗапрещенныхСубконто.Количество() > 0 Тогда 
		
	//	ПараметрыКомпоновки = НастройкаКомпоновкиДанных.ПараметрыДанных;	
		
	//	ПараметрСписокСубконто = //ПараметрыКомпоновки.Элементы.Найти("СписокВидовСубконто");
		
		//Если  ПараметрСписокСубконто<> неопределено Тогда 
			
		//	МассивУстановленныхСубконто = //ПараметрыКомпоновки.Элементы.Найти("СписокВидовСубконто").Значение;
			
			//Для каждого Субконто из МассивЗапрещенныхСубконто Цикл 
				
			//	ИндексЭлемента = МассивУстановленныхСубконто.найти (Субконто) ;	
				
			//	Если  ИндексЭлемента<> Неопределено Тогда 			
			//		МассивУстановленныхСубконто.удалить(ИндексЭлемента) ;
			//	КонецЕсли;	
				
			//КонецЦикла;
			
			//Если МассивУстановленныхСубконто.Количество() = 0 Тогда 
				//МассивУстановленныхСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка());
			КонецЕсли;	
			
			//БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(ПараметрыКомпоновки.Элементы,"Список//ВидовСубконто",МассивУстановленныхСубконто,Истина);
			
//		КонецЕсли;		
		
//	КонецЕСли;
		
	КонецПроцедуры
Показать
19. vadim1011985 99 14.12.16 16:36 Сейчас в теме
Закомментируйте укакзанные строки

Процедура АнализСубконто_КарточкаСубконто(НастройкаКомпоновкиДанных,МассивЗапрещенныхСубконто,СписокЗапрещенныхСчетов)
	
	Если СписокЗапрещенныхСчетов.Количество()> 0 Тогда 
		
		СчетНайден = Ложь;
		
		СчетНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
		
		Если Не СчетНайден Тогда 	
			ДобавитьОтбор(НастройкаКомпоновкиДанных,"Счет",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов,Истина);
		КонецЕсли;	
		
	КонецЕсли;
	
	//Если МассивЗапрещенныхСубконто.Количество() > 0 Тогда 
		
	//	ПараметрыКомпоновки = НастройкаКомпоновкиДанных.ПараметрыДанных;	
		
	//	ПараметрСписокСубконто = //ПараметрыКомпоновки.Элементы.Найти("СписокВидовСубконто");
		
		//Если  ПараметрСписокСубконто<> неопределено Тогда 
			
		//	МассивУстановленныхСубконто = //ПараметрыКомпоновки.Элементы.Найти("СписокВидовСубконто").Значение;
			
			//Для каждого Субконто из МассивЗапрещенныхСубконто Цикл 
				
			//	ИндексЭлемента = МассивУстановленныхСубконто.найти (Субконто) ;	
				
			//	Если  ИндексЭлемента<> Неопределено Тогда 			
			//		МассивУстановленныхСубконто.удалить(ИндексЭлемента) ;
			//	КонецЕсли;	
				
			//КонецЦикла;
			
			//Если МассивУстановленныхСубконто.Количество() = 0 Тогда 
				//МассивУстановленныхСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка());
	//		КонецЕсли;	
			
			//БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(ПараметрыКомпоновки.Элементы,"Список//ВидовСубконто",МассивУстановленныхСубконто,Истина);
			
//		КонецЕсли;		
		
//	КонецЕСли;
		
	КонецПроцедуры 
Показать
21. webresurs 204 20.12.16 11:19 Сейчас в теме
явно у кого-то слямзил...
maksa2005; +1 Ответить
23. vadim1011985 99 20.12.16 11:59 Сейчас в теме
(21)
явно у кого-то слямзил...
Обоснуйте с какого решения это было "слямзино"

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




24. webresurs 204 20.12.16 13:28 Сейчас в теме
(23)
Обоснуйте с какого решения это было "слямзино"


- описание по установке одно, в скрипте совсем другое...
- не полное описание установки...

все сделал по описанию, исправил "опечатки", добавил, но не понятно, где искать настройки пользователя для ограничения?
-все функции - в справочниках....


Блокирует всех пользователей да же не добавленных за чем это и как отключить?
25. Airlord 20.12.16 13:40 Сейчас в теме
Добрый день! работал в прошлом году в КА 1.1 - проблем с разделением доступа к отчетам не возникало. Большинство отчетов построено на универсалке и достаточно указать в настройках - каким пользователям доступен набор параметров и структура отчета. Другой вопрос - если найдется умник - сам "наберет" себе отчет из универсалки.
26. vadim1011985 99 20.12.16 15:56 Сейчас в теме
Не должно блокировать всех пользователей , так как за это отвечает этот код в общем модуле:

Запрос = Новый Запрос;
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВЫБОР
	|		КОГДА ОграничениеПравПользователейСписокРазрещенныхСчетов.Использование = ЛОЖЬ
	|			ТОГДА ОграничениеПравПользователейСписокРазрещенныхСчетов.Счет
	|	КОНЕЦ КАК ЗапрещенныеСчета
	|ИЗ
	|	Справочник.ОграничениеПравПользователей.СписокРазрещенныхСчетов КАК ОграничениеПравПользователейСписокРазрещенныхСчетов
	|ГДЕ
	|	ОграничениеПравПользователейСписокРазрещенныхСчетов.Ссылка.Пользователь = &Пользователь
	| И ОграничениеПравПользователейСписокРазрещенныхСчетов.Использование = ЛОЖЬ";
	
		
	Запрос.УстановитьПараметр("Пользователь",ПараметрыСеанса.ТекущийПользователь);
	
	Результат = Запрос.Выполнить();
	                
	ТаблицаСчетов = Результат.Выгрузить(); // результат выгружаем в таблиц  
		
	ЗапрещенныеСчета = ТаблицаСчетов.ВыгрузитьКолонку("ЗапрещенныеСчета"); // Получаем массив запрещенных счетов
	
    //Получим список запррещенных к просмотру субконто
    Запрос.Текст ="ВЫБРАТЬ
	|	ОграничениеПравПользователейЗапрещенныеСубконто.ЗапрещенноеСубконто
	|ИЗ
	|	Справочник.ОграничениеПравПользователей.ЗапрещенныеСубконто КАК ОграничениеПравПользователейЗапрещенныеСубконто
	|ГДЕ
	|	ОграничениеПравПользователейЗапрещенныеСубконто.Ссылка.Пользователь = &Пользователь";
	
	Запрос.УстановитьПараметр("Пользователь",ПараметрыСеанса.ТекущийПользователь);
	
	ТаблицаЗапрещенныхСубконто = Запрос.Выполнить().Выгрузить();
	
	Если ЗапрещенныеСчета.Количество()= 0 И ТаблицаЗапрещенныхСубконто.Количество() = 0 тогда  // Если нет ограничений , то выходим 
		Возврат;
	КонецЕсли;
Показать


Я согласен , что в моем описании есть косяк. За что сейчас справедливо, получаю от вас по голове, Подскажите, что Вы правили что бы я мог исправить неточности в публикации ?
Istur; maxli28; +2 Ответить
27. user627879_am002 14.11.17 07:59 Сейчас в теме
При подключении расширения, ошибка:
Расширение1: Критичная:
Не найден объект ФункциональнаяОпция.Новости_РазрешенаРаботаСНовостями

А в управлении расширениями:
(Критичная) Расширение1: Не найден объект ФункциональнаяОпция.Новости_РазрешенаРаботаСНовостями
(Критичная) Расширение1: Не найден объект Справочник.ОграничениеПравПользователей

Бухгалтерия 3.0.53.38
28. vadim1011985 99 14.11.17 10:12 Сейчас в теме
(27)

1. Необходимо в расширение добавить указанный объект. Для этого в дереве объектов основной конфигурации надо найти указанный объект (ФункциональнаяОпция.Новости_РазрешенаРаботаСНовостями) и в контекстном меню (щелчок второй кнопкой мыши по указанному объекту) .

2. Указанный справочник добавляется в основную конфигурацию (см. описание )

Для хранения данных о пользователях, у которых ограничены права на просмотр счетов, и самих счетов, доступ к которым ограничен, я добавил Справочник "ОграничениеПравПользователей" с реквизитом "Пользователь" - СправочникСсылка.Пользователи и две табличные части:. Длину наименования у спрвочника указываем 50 символов.

"СписокЗапрещенныхСчетов" - Колонки "Счет" - ПланыСчетов.Хозрасчетный, "Использование" - Тип Булево.

"СписокЗапрещенныхСубконто" - Колонки "ЗапрещенноеСубконто" - Тип ПланВидовХарактеристик.ВидыСубконтоХозрасчетный

Тут важное уточнение - полные права доступа на этот справочник должны быть только у администратора (или пользователя с полными правами), у других должен быть доступ только на чтение.
29. user627879_am002 14.11.17 17:27 Сейчас в теме
вот такая картинка при попытке сохранить
Прикрепленные файлы:
30. dsavinov2 1 02.03.18 13:05 Сейчас в теме
При переходе из ОСВ в карточку например, ошибка недостачно прав доступа.
31. dsavinov2 1 02.03.18 15:14 Сейчас в теме
Нашел, нужно права у роли ограничение прав пользователей дать на параметры сеанса
32. user1076285 28.11.18 17:31 Сейчас в теме
Подскажите пожалуйста подробнее:

Тут важное уточнение - полные права доступа на этот справочник должны быть только у администратора (или пользователя с полными правами), у других должен быть доступ только на чтение.


Придется стандартные роли редактировать?
33. vadim1011985 99 28.11.18 17:37 Сейчас в теме
(32) По большому счету конечно желательно это сделать , но если пользователи не сильно шарят в 1с то можно обойтись и без этого
34. user1076285 28.11.18 18:01 Сейчас в теме
(33) Я просто столкнулась с проблемой, при попытке сформировать отчет под пользователем с базовыми правами (на котором стоит ограничение по счетам) выпадает ошибка:
Недостаточно прав для работы с таблицей "Справочник.ОграничениеПравПользователей".

Может быть какой-то нюанс упустила?
35. vadim1011985 99 28.11.18 18:39 Сейчас в теме
(34) возможно стоит проверить право на чтение для базовой роли , в случае чего можно в расширении заимствовать нужную роль и указать для нее необходимые права
36. user1076285 29.11.18 11:45 Сейчас в теме
(35) На базовую роль по умолчанию на все справочники доступно чтение. Но действительно, начало работать только после прямого добавления в эту роль прав на просмотр и чтение данного справочника. Спасибо
37. istrahlebit 15.02.19 08:17 Сейчас в теме
на 3.0.67.67 и новее работает?
38. user663628_bugarom 05.08.19 17:21 Сейчас в теме
Спасибо способ ограничения очень пригодился.

К сожалению на релизе 3.0.69 отборы не работают в Карточке счета.

Судя по отладке в карточке счета в коллекции доступных полей компоновки данных(Отчет.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы) просто отсутствует отбор по счетам(

Может у кого есть идеи как обойти?
39. vadim1011985 99 05.08.19 17:35 Сейчас в теме
(38) Сейчас проверю , вообще по идее Карточка Счета стандартный отчет - его редко когда меняют
40. vadim1011985 99 05.08.19 17:45 Сейчас в теме
(38) Было в публикации

ОтборДтНайден = Ложь; // Флаги для поиска ранее установленных отборов
ОтборКтНайден = Ложь;

//Для стандартного отчета Карточка счета нет возможности установить отбор по счетам. Для возможности добавления отбора необходимо
//поменять текст запроса для СКД (только в части настроек для СКД , т.е. основной текст запроса не меняется )


Запрос = СКД.НаборыДанных.Проводки.Запрос; // получим текст запроса
Запрос = СтрЗаменить(Запрос,"Проводки.ПериодГруппировки}", "Проводки.ПериодГруппировки,"+Символы.ПС
+ "Проводки.СчетДт.*,"+Символы.ПС+ "Проводки.СчетКт.*}"+Символы.ПС); // Изменяем текст для компоновщика добавляя поля СчетДт И СчетКТ

СКД.НаборыДанных.Проводки.Запрос = Запрос;

Показать


Возможно не отрабатывает замена текста запроса
41. user663628_bugarom 05.08.19 18:39 Сейчас в теме
(40) Большое спасибо.

Пропустил комментарии(
Действительно запрос поменялся и замена не отработала.

Изменил на такой текст:

Запрос = СтрЗаменить(Запрос,"ПериодГруппировки}", "ПериодГруппировки,"+Символы.ПС
+ "СчетДт.* КАК СчетДт,"+Символы.ПС+ "СчетКт.* КАК СчетКт}"+Символы.ПС); // Изменяем текст для компоновщика добавляя поля СчетДт И СчетКТ
42. platon_ 10 21.08.19 17:00 Сейчас в теме
Добрый день. Не увидел в описании и скриншотах фильтра в обработке "КорректировкаДвижений", которая открывается при просмотре движений непосредственно документа. Или я не все увидел и данный функционал есть?
43. vadim1011985 99 21.08.19 17:47 Сейчас в теме
(42) Здравствуйте такой возможности нет поэтому я указал это в недостатках

Стоит сказать пару слов о недостатках данного подхода

В заголовках отчета пользователь будет видеть установленный отбор (но в настройках его не будет, и снять отбор пользователь не сможет).
Некорректные данные. Ну тут все стандартно. В принципе, как вариант, можно оставлять не закрывать ОСВ так как пользователь будет видеть общую сумму и полную картину, а вот расшифровки через другие отчеты придется закрывать.
Требуется настройка прав на документы. В отчете суммы он может не увидеть, а вот если сможет открыть документ ...
В данном решении не все отчеты прописаны, через которые можно получить данные (например отсутствует Шахматка) - пока не дошли руки . Думаю, реализовать в ближайшее время.
Более сложная настройка по сравнению с RLS - Кода хоть и немного, но все же больше чем настройка через RLS
44. KirinaAS 100 07.10.19 11:37 Сейчас в теме
Так в итоге ограничения по субконто нет в ОСВ...грустно, без него доработка неуникальна и лично для меня бесполезна(
45. vadim1011985 99 07.10.19 11:43 Сейчас в теме
(44) Ограничение по субконто в ОСВ это как ? типа счет доступен, но часть субконто нет ?

Ограничение по субконто есть в отчетах Анализ субконто и карточка Субконто

Опять же никто не мешает Вам добавить свой произвольный отбор в СКД

Просто я передал суть идеи - Изменить настройки СКД перед формированием отчета
46. KirinaAS 100 07.10.19 11:44 Сейчас в теме
(45) Ну типа да, счет доступен, а часть субконто нет.
Спасибо за идею...
47. mrAxe 16.10.20 17:35 Сейчас в теме
Выдает ошибку: Вызов метода разрешен только в обработчике расширяющей формы
На строке: УстановитьВыполнениеОбработчиковСобытия(Ложь);
48. dsavinov2 1 26.01.21 13:01 Сейчас в теме
увы, не релизе 3.0.88.28 расширение уже не работает. куча ошибок.
49. dsavinov2 1 26.01.21 13:13 Сейчас в теме
нашел, исправил. нужно в модель каждой формы добавить
ПараметрыОтчета.Вставить("ПоказательСверкаНУ" , Отчет.ПоказательСверкаНУ);
50. Hikari123 19.04.21 09:49 Сейчас в теме
В версиях (3.0.90.45) может и чуть ранее, формирование очтета перенеслось в общий модуль "Бухгалтерские отчеты", процедура "ЗаполнитьПараметрыИзФормы"
Теперь можно просто отредактировать процедуру общего модуля и все.

	
	// ПараметрыОтчета.НастройкиКомпоновкиДанных = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
	НастройкиКомпоновкиДанных = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
	ОграничениеПравПользователей.УстановитьОграничениеНаПросмотрСчетов(Отчет, НастройкиКомпоновкиДанных, Форма, ПараметрыОтчета.СхемаКомпоновкиДанных);
	
	ПараметрыОтчета.НастройкиКомпоновкиДанных = НастройкиКомпоновкиДанных;
Dmi|MiX; dikd; vadim1011985; +3 Ответить
51. simgo83 69 05.11.21 21:41 Сейчас в теме
В процедуре ОСВПоСчету_АнализСчета_КарточкаСчета(ОтчетОбъект,ИдентификаторОбъекта,НастройкаКомпоновкиДанных,СписокЗапрещенныхСчетов,СКД)
не верно определена переменная ОтборДтНайден, вернее два раза одно и тоже, во втором случае нужно ОтборКтНайден
//Теперь в СКД нам доступны поля отбора СчетДт и СчетКт и по ним возможно устанавливать отбор. Попробуем найти ранее установленные отборы
			ОтборДтНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"СчетДт",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
			
			ОтборДтНайден = ПоискиУстановкаОтбора(НастройкаКомпоновкиДанных,"СчетКт",ВидСравненияКомпоновкиДанных.НеВСписке,СписокЗапрещенныхСчетов);
52. simgo83 69 05.11.21 22:40 Сейчас в теме
В процедуре ПроверитьУстановленныйОтбор(Отбор,ВидСравнения,Значение)
Необходимо перенести вид сравнения ВидСравненияКомпоновкиДанных.ВИерархии выше, добавить в условие
"Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно ИЛИ Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии" так как если отбор передается с ВидСравненияКомпоновкиДанных.ВИерархии, то перебирать его нельзя, выходит исключение.
53. Raideres 8 28.06.22 11:40 Сейчас в теме
Ошибки:
--------------------------------------------------------------------------------
28.06.2022 11:36:35
Нарушение прав доступа!
{Отчет.КарточкаСчета.МодульМенеджера(15)}:ОтчетОбъект = Отчеты.ОборотыСчета.Создать();
{Отчет.КарточкаСчета.Форма.ФормаОтчета.Форма(918)}:ПараметрыОтчета = Отчеты.КарточкаСчета.ПустыеПараметрыКомпоновкиОтчета();
{ОбщийМодуль.БухгалтерскиеОтчетыВызовСервера.Модуль(3467)}:Форма.СформироватьОтчетНаСервере();
{ОбщийМодуль.БухгалтерскиеОтчетыВызовСервера.Модуль(869)}:ИнициализацияРасшифровкиПоНастройкам(Отчет, Параметры, РеквизитыФормы, Форма);
{Отчет.КарточкаСчета.Форма.ФормаОтчета.Форма(19)}:БухгалтерскиеОтчетыВызовСервера.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
{ОбщийМодуль.БухгалтерскиеОтчетыКлиент.Модуль(2213)}:ОткрытьФорму("Отчет." + ЗначениеРасшифровки.ИмяОтчета + ".Форма", ПараметрыФормы, , Истина);
{ОбщийМодуль.БухгалтерскиеОтчетыКлиент.Модуль(1464)}:ОткрытьРасшифровку(ВыбранныйЭлемент.Значение,

по причине:
Нарушение прав доступа!
Показать



каких прав нехватает как узнать?
54. vadim1011985 99 28.06.22 17:59 Сейчас в теме
(53) Что бы не мучится с правами , попробуй в расширении для процедуре СформироватьОтчетНаСервере установить вызов привилегированного режима

УстановитьПривилигированныйРежим(Истина) 
55. user875277 10.03.23 10:02 Сейчас в теме
Если вопрос на текущих релизах (3.0.129.13 проверено) будет актуален, то из этой обработки берем только справочник и общий модуль.
Убрать нужно параметр Отчетобъект из процедур общего модуля расширения и передавать явно идентификатор объекта
Процедура УстановитьОграничениеНаПросмотрСчетов(НастройкаКомпоновкиДанных, ИдентификаторОбъекта, СКД = неопределено) Экспорт;
//.....
    //Определим какой отчет запустил пользователь  
    //ИдентификаторОбъекта = БухгалтерскиеОтчетыКлиентСервер.ПолучитьИдентификаторОбъекта(Форма); // получаем идентификатор отчета 
//....

Далее общий модуль БухгалтерскиеОтчетыВызовСервера, добавить в расширение вызов "Вместо" процедуры СформироватьОтчет
&Вместо("СформироватьОтчет")
Процедура Расш1_СформироватьОтчет(ПараметрыОтчета, АдресХранилища)
	
    НастройкиКомпоновкиДанных = ПараметрыОтчета.НастройкиКомпоновкиДанных;
    ОграничениеПравПользователей.УстановитьОграничениеНаПросмотрСчетов(НастройкиКомпоновкиДанных, ПараметрыОтчета.ИдентификаторОтчета, ПараметрыОтчета.СхемаКомпоновкиДанных);
	
    РезультатФормированияОтчета = ПодготовитьОтчет(ПараметрыОтчета);
    ПоместитьВоВременноеХранилище(РезультатФормированияОтчета, АдресХранилища);

КонецПроцедуры
Показать
56. user1402638 10.03.23 19:47 Сейчас в теме
Все отчеты работают, кроме Карточки счета. Никак не реагирует на ограничение счета.
maksa2005; +1 Ответить
60. maksa2005 528 10.11.23 09:44 Сейчас в теме
61. maksa2005 528 10.11.23 09:46 Сейчас в теме
(56)Так же :
СводныеПроводки, ОборотыСчета,ОтчетПоПроводкам
63. maksa2005 528 10.11.23 12:44 Сейчас в теме
(61)снимаю вопрос. заработало
62. maksa2005 528 10.11.23 12:42 Сейчас в теме
(56)Чтобы заработало в карточке нужно перед процедурой поставить отбор и будет работать)
Прикрепленные файлы:
65. Salvator 26.01.24 13:04 Сейчас в теме
(62) Какой отбор нужно поставить? Пробовал вставить код из расширения, выложенного Вами, - карточка счета не хочет делать отбор по счетам Дт и Кт.
66. maksa2005 528 26.01.24 13:13 Сейчас в теме
(65)
Прошу прощения, расширение ставил на прошлой работе. По памяти не вспомню.
67. Salvator 26.01.24 13:18 Сейчас в теме
(66) В текущей версии конфигурации в тексте запроса СКД для карточки счета уже есть поля СчетДт и СчетКт, которые в расширении добавляются через изменение текста запроса. И все равно не устанавливается отбор. Ошибок нет, в шапке отчета отбор прописан текстом, но данные все равно выводятся без отбора. Непонятно, почему.
68. maksa2005 528 26.01.24 13:19 Сейчас в теме
(67) Честно уже не помню как это делал.
57. maksa2005 528 09.11.23 14:33 Сейчас в теме
Модуль "ОграничениеПравПользователей" я бы посоветовал сразу добавить в расширение.
58. maksa2005 528 10.11.23 08:06 Сейчас в теме
(5)не работает
ошибки:
{АСУ_ОграничениеНаПросмотрСчетов Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма.ФормаОтчета.Форма(113,3)}: Процедура или функция с указанным именем не определена (ЗагрузитьПодготовленныеДанные)
<<?>>ЗагрузитьПодготовленныеДанные(); (Проверка: Сервер)
{АСУ_ОграничениеНаПросмотрСчетов Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма.ФормаОтчета.Форма(138,73)}: Переменная не определена (ПараметрыОбработчикаОжидания)
ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(<<?>>ПараметрыОбработчикаОжидания); (Проверка: Тонкий клиент)

бонусом:
в самом расширении объект ОграничениеПравПользователей стоит как расширение, но его не может быть в составе твоей конфигурации
59. maksa2005 528 10.11.23 09:28 Сейчас в теме
Надо лишь добавить расширение на каждый отчет как:
&Вместо("СформироватьОтчетНаСервере")

и будет работать.
Прикрепленные файлы:
64. maksa2005 528 10.11.23 12:52 Сейчас в теме
Может кому-то пригодиться. все отчеты работаю. ставиться как расширение.
Прикрепленные файлы:
АСУ_ОграничениеНаПросмотрСчетов.cfe
freeek; kabantus; user1823204; user1460728; user1994844; rarmi; +6 Ответить
69. kabantus 29.02.24 15:41 Сейчас в теме
(64) Круто. Спасибо. Всё работает. В коде есть одна ошибка.
Процедура ОСВПоСчету_АнализСчета_КарточкаСчета

ОтборПоСчету =
ПоискиУстановкаОтбора
(НастройкаКомпоновкиДанных,
"Счет",
ВидСравненияКомпоновкиДанных.НеВСписке, // Было и выдавало ошибку: ВидСравнения.НеВСписке
СписокЗапрещенныхСчетов);
Оставьте свое сообщение