Внедрение БСП

1. yea_1899596 25.01.23 03:21 Сейчас в теме
Здравствуйте. Внедрял подсистемы из БСП в свою конфигурацию. Создал справочник. При удалении элемента справочника в пользовательском режиме ошибка
Ошибка при выполнении обработчика - 'ПередУдалением'
по причине:
Синтаксическая ошибка "Параметр ОграничениеДоступаНаУровнеЗаписейУниверсально не существует"
{ОбщийМодуль.УправлениеСвойствамиСлужебный.Модуль(1335)}: Результат = Запрос.Выполнить().Выгрузить();

по причине:
Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.
объект: 'ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения', табличная часть: 'ЗависимостиДополнительныхРеквизитов', поле: 'Значение'; право: 'Чтение'
Синтаксическая ошибка "Параметр ОграничениеДоступаНаУровнеЗаписейУниверсально не существует"
по причине:
Синтаксическая ошибка "Параметр ОграничениеДоступаНаУровнеЗаписейУниверсально не существует"
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. chg 25.01.23 04:33 Сейчас в теме
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса.
Процедура УстановкаПараметровСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт
	
	#Область УниверсальноеОграничение
	Если ИмяПараметра = "ПараметрыОграниченияДоступа" Тогда
		ПараметрыСеанса.ПараметрыОграниченияДоступа = Новый ФиксированнаяСтруктура(Новый Структура);
		УстановленныеПараметры.Добавить("ПараметрыОграниченияДоступа");
		Возврат;
	КонецЕсли;
	
	Если ИмяПараметра = "ОтключениеОбновленияКлючейДоступа" Тогда
		Свойства = Новый Структура;
		Свойства.Вставить("Стандартное",      Ложь);
		Свойства.Вставить("Полное",           Ложь);
		Свойства.Вставить("ИзмененныеСписки", Новый ХранилищеЗначения(Новый Соответствие));
		ПараметрыСеанса.ОтключениеОбновленияКлючейДоступа = Новый ФиксированнаяСтруктура(Свойства);
		УстановленныеПараметры.Добавить("ОтключениеОбновленияКлючейДоступа");
		Возврат;
	КонецЕсли;
	
	ОграничиватьДоступНаУровнеЗаписей = Константы.ОграничиватьДоступНаУровнеЗаписей.Получить();
	УниверсальноеОграничение = Константы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Получить();
	
	ПараметрыСеанса.ОграничениеДоступаНаУровнеЗаписейУниверсально = УниверсальноеОграничение;
	
	УстановленныеПараметры.Добавить("ОграничениеДоступаНаУровнеЗаписейУниверсально");
	Если ИмяПараметра = "ОграничениеДоступаНаУровнеЗаписейУниверсально" Тогда
		Возврат;
	КонецЕсли;
	#КонецОбласти
	
	// Для корректной работы препроцессора в ограничениях доступа, требуется инициализации всех
	// параметров сеанса, которые могут быть востребованы в работе препроцессора.
	ИнформационнаяБазаЗаблокированаДляОбновления = ЗначениеЗаполнено(
		ОбновлениеИнформационнойБазыСлужебный.ИнформационнаяБазаЗаблокированаДляОбновления(Ложь));
	
	#Область УниверсальноеОграничение
	Если Не ОграничиватьДоступНаУровнеЗаписей
	 Или Не УниверсальноеОграничение
	 Или ИнформационнаяБазаЗаблокированаДляОбновления Тогда
		
		ПараметрыСеанса.СпискиСОтключеннымОграничениемЧтения =
			?(ИнформационнаяБазаЗаблокированаДляОбновления
				Или Не УниверсальноеОграничение, "Неопределено", "Все");
		
		ПустойНаборГруппДоступа = Справочники.НаборыГруппДоступа.ПустаяСсылка();
		
		ПараметрыСеанса.ВерсииШаблоновОграниченияДоступа   = ВерсииШаблоновОграниченияДоступа();
		ПараметрыСеанса.РазрешенныйНаборГруппДоступа       = ПустойНаборГруппДоступа;
		ПараметрыСеанса.РазрешенныйПустойНаборГруппДоступа = ПустойНаборГруппДоступа;
		ПараметрыСеанса.РазрешенныйНаборГруппПользователей = ПустойНаборГруппДоступа;
		ПараметрыСеанса.РазрешенныйПользователь            = ПустойНаборГруппДоступа;
		ПараметрыСеанса.ОбщиеПараметрыШаблоновОграниченияДоступа = "";
		ПараметрыСеанса.СпискиСОграничениемЧерезКлючиДоступаГруппДоступа  = "";
		ПараметрыСеанса.СпискиСОграничениемЧерезКлючиДоступаПользователей = "";
		ПараметрыСеанса.СпискиСОграничениемПоПолям = "";
		
		УстановленныеПараметры.Добавить("СпискиСОтключеннымОграничениемЧтения");
		УстановленныеПараметры.Добавить("ВерсииШаблоновОграниченияДоступа");
		УстановленныеПараметры.Добавить("РазрешенныйНаборГруппДоступа");
		УстановленныеПараметры.Добавить("РазрешенныйПустойНаборГруппДоступа");
		УстановленныеПараметры.Добавить("РазрешенныйНаборГруппПользователей");
		УстановленныеПараметры.Добавить("РазрешенныйПользователь");
		УстановленныеПараметры.Добавить("ОбщиеПараметрыШаблоновОграниченияДоступа");
		УстановленныеПараметры.Добавить("СпискиСОграничениемЧерезКлючиДоступаГруппДоступа");
		УстановленныеПараметры.Добавить("СпискиСОграничениемЧерезКлючиДоступаПользователей");
		УстановленныеПараметры.Добавить("СпискиСОграничениемПоПолям");
	КонецЕсли;
	#КонецОбласти
	
	Если Не ОграничиватьДоступНаУровнеЗаписей
	 Или УниверсальноеОграничение
	 Или ИнформационнаяБазаЗаблокированаДляОбновления Тогда
		
		ПараметрыСеанса.ОграничениеДоступаНаУровнеЗаписейИспользуется =
			?(ИнформационнаяБазаЗаблокированаДляОбновления
				Или УниверсальноеОграничение, "", Ложь);
		
		ПараметрыСеанса.ВсеВидыДоступаКромеСпециальных             = "";
		ПараметрыСеанса.ВидыДоступаСОтключеннымИспользованием      = "";
		ПараметрыСеанса.ВидыДоступаБезГруппДляЗначенияДоступа      = "";
		ПараметрыСеанса.ВидыДоступаСОднойГруппойДляЗначенияДоступа = "";
		
		ПараметрыСеанса.ТипыЗначенийДоступаСГруппами
			= Новый ФиксированныйМассив(Новый Массив);
		
		ПараметрыСеанса.ТаблицыСОтдельнымиНастройкамиПрав = "";
		
		ПараметрыСеанса.ИдентификаторыТаблицСОтдельнымиНастройкамиПрав
			= Новый ФиксированныйМассив(Новый Массив);
		
		ПараметрыСеанса.ТипыВладельцевНастроекПрав
			= Новый ФиксированныйМассив(Новый Массив);
		
		ПараметрыСеанса.ТаблицыРасширенийСОграничениемДоступа = "";
		
		УстановленныеПараметры.Добавить("ОграничениеДоступаНаУровнеЗаписейИспользуется");
		УстановленныеПараметры.Добавить("ВсеВидыДоступаКромеСпециальных");
		УстановленныеПараметры.Добавить("ВидыДоступаСОтключеннымИспользованием");
		УстановленныеПараметры.Добавить("ВидыДоступаБезГруппДляЗначенияДоступа");
		УстановленныеПараметры.Добавить("ВидыДоступаСОднойГруппойДляЗначенияДоступа");
		УстановленныеПараметры.Добавить("ТипыЗначенийДоступаСГруппами");
		УстановленныеПараметры.Добавить("ТаблицыСОтдельнымиНастройкамиПрав");
		УстановленныеПараметры.Добавить("ИдентификаторыТаблицСОтдельнымиНастройкамиПрав");
		УстановленныеПараметры.Добавить("ТипыВладельцевНастроекПрав");
		УстановленныеПараметры.Добавить("ТаблицыРасширенийСОграничениемДоступа");
	КонецЕсли;
	
	Если Не ОграничиватьДоступНаУровнеЗаписей
	 Или ИнформационнаяБазаЗаблокированаДляОбновления Тогда
		Возврат;
	КонецЕсли;
	
	#Область УниверсальноеОграничение
	Если УниверсальноеОграничение Тогда
		ДействующиеПараметрыОграниченияДоступа(Неопределено, Неопределено, Ложь, Истина);
		Возврат;
	КонецЕсли;
	#КонецОбласти
	
	ПараметрыСеанса.ОграничениеДоступаНаУровнеЗаписейИспользуется = Истина;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
	Запрос.Текст =
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ЗначенияПоУмолчанию.ТипЗначенийДоступа КАК ТипЗначений,
	|	ЗначенияПоУмолчанию.ВсеРазрешеныБезИсключений КАК ВсеРазрешеныБезИсключений
	|ПОМЕСТИТЬ ЗначенияПоУмолчаниюДляПользователя
	|ИЗ
	|	РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
	|ГДЕ
	|	ИСТИНА В
	|			(ВЫБРАТЬ ПЕРВЫЕ 1
	|				ИСТИНА
	|			ИЗ
	|				Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
	|					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
	|					ПО
	|						ГруппыДоступаПользователи.Ссылка = ЗначенияПоУмолчанию.ГруппаДоступа
	|							И ГруппыДоступаПользователи.Пользователь = СоставыГруппПользователей.ГруппаПользователей
	|							И СоставыГруппПользователей.Пользователь = &ТекущийПользователь)
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ЗначенияПоУмолчанию.ТипЗначений
	|ИЗ
	|	ЗначенияПоУмолчаниюДляПользователя КАК ЗначенияПоУмолчанию
	|
	|СГРУППИРОВАТЬ ПО
	|	ЗначенияПоУмолчанию.ТипЗначений
	|
	|ИМЕЮЩИЕ
	|	МИНИМУМ(ЗначенияПоУмолчанию.ВсеРазрешеныБезИсключений) = ИСТИНА";
	
	ТипыЗначенийВсеРазрешеныБезИсключений = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТипЗначений");
	
	// Установка параметров ВсеВидыДоступаКромеСпециальных, ВидыДоступаСОтключеннымИспользованием.
	ВсеВидыДоступаКромеСпециальных        = Новый Массив;
	ВидыДоступаСОтключеннымИспользованием = Новый Массив;
	
	СвойстваВидовДоступа = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа();
	
	Для каждого СвойстваВидаДоступа Из СвойстваВидовДоступа.Массив Цикл
		ВсеВидыДоступаКромеСпециальных.Добавить(СвойстваВидаДоступа.Имя);
		
		Если НЕ ВидДоступаИспользуется(СвойстваВидаДоступа.Ссылка)
		 ИЛИ ТипыЗначенийВсеРазрешеныБезИсключений.Найти(СвойстваВидаДоступа.Ссылка) <> Неопределено Тогда
			
			ВидыДоступаСОтключеннымИспользованием.Добавить(СвойстваВидаДоступа.Имя);
		КонецЕсли;
	КонецЦикла;
	
	ПараметрыСеанса.ВсеВидыДоступаКромеСпециальных = ВсеКомбинацииВидовДоступа(ВсеВидыДоступаКромеСпециальных);
	
	УстановленныеПараметры.Добавить("ВсеВидыДоступаКромеСпециальных");
	
	ВсеВидыДоступаКромеСпециальныхОтключены = (ВсеВидыДоступаКромеСпециальных.Количество()
		= ВидыДоступаСОтключеннымИспользованием.Количество());
	
	Если ВсеВидыДоступаКромеСпециальныхОтключены Тогда
		ПараметрыСеанса.ВидыДоступаСОтключеннымИспользованием = "Все";
	Иначе
		ПараметрыСеанса.ВидыДоступаСОтключеннымИспользованием
			= ВсеКомбинацииВидовДоступа(ВидыДоступаСОтключеннымИспользованием);
	КонецЕсли;
	
	УстановленныеПараметры.Добавить("ВидыДоступаСОтключеннымИспользованием");
	
	// Установка параметров ВидыДоступаБезГруппДляЗначенияДоступа,
	// ВидыДоступаСОднойГруппойДляЗначенияДоступа, ТипыЗначенийДоступаСГруппами.
	ПараметрыСеанса.ВидыДоступаБезГруппДляЗначенияДоступа =
		ВсеКомбинацииВидовДоступа(СвойстваВидовДоступа.БезГруппДляЗначенияДоступа);
	ПараметрыСеанса.ВидыДоступаСОднойГруппойДляЗначенияДоступа =
		ВсеКомбинацииВидовДоступа(СвойстваВидовДоступа.СОднойГруппойДляЗначенияДоступа);
	
	ТипыЗначенийДоступаСГруппами = Новый Массив;
	Для каждого КлючИЗначение Из СвойстваВидовДоступа.ТипыЗначенийДоступаСГруппами Цикл
		ТипыЗначенийДоступаСГруппами.Добавить(КлючИЗначение.Значение);
	КонецЦикла;
	ПараметрыСеанса.ТипыЗначенийДоступаСГруппами = Новый ФиксированныйМассив(ТипыЗначенийДоступаСГруппами);
	
	УстановленныеПараметры.Добавить("ВидыДоступаБезГруппДляЗначенияДоступа");
	УстановленныеПараметры.Добавить("ВидыДоступаСОднойГруппойДляЗначенияДоступа");
	УстановленныеПараметры.Добавить("ТипыЗначенийДоступаСГруппами");
	
	// Установка параметров ТаблицыСОтдельнымиНастройкамиПрав,
	// ИдентификаторыТаблицСОтдельнымиНастройкамиПрав, ТипыВладельцевНастроекПрав.
	ВозможныеПрава = УправлениеДоступомСлужебныйПовтИсп.ВозможныеПраваДляНастройкиПравОбъектов();
	ОтдельныеТаблицы = ВозможныеПрава.ОтдельныеТаблицы;
	ТаблицыСОтдельнымиНастройкамиПрав = "";
	ИдентификаторыТаблицСОтдельнымиНастройкамиПрав = Новый Массив;
	Для каждого КлючИЗначение Из ОтдельныеТаблицы Цикл
		ТаблицыСОтдельнымиНастройкамиПрав = ТаблицыСОтдельнымиНастройкамиПрав
			+ "|" + КлючИЗначение.Значение + ";" + Символы.ПС;
		ИдентификаторыТаблицСОтдельнымиНастройкамиПрав.Добавить(КлючИЗначение.Ключ);
	КонецЦикла;
	
	ПараметрыСеанса.ТаблицыСОтдельнымиНастройкамиПрав = ТаблицыСОтдельнымиНастройкамиПрав;
	
	ПараметрыСеанса.ИдентификаторыТаблицСОтдельнымиНастройкамиПрав =
		Новый ФиксированныйМассив(ИдентификаторыТаблицСОтдельнымиНастройкамиПрав);
	
	ПараметрыСеанса.ТипыВладельцевНастроекПрав = ВозможныеПрава.ТипыВладельцев;
	
	ПолныеИмена = Справочники.ИдентификаторыОбъектовРасширений.ПолныеИменаТаблицСДанными();
	ТаблицыРасширений = СтрСоединить(ПолныеИмена, ";" + Символы.ПС + "|");
	ТаблицыРасширений = ?(ТаблицыРасширений = "", "", "|" + ТаблицыРасширений + ";" + Символы.ПС);
	
	ПараметрыСеанса.ТаблицыРасширенийСОграничениемДоступа = ТаблицыРасширений;
	
	УстановленныеПараметры.Добавить("ТаблицыСОтдельнымиНастройкамиПрав");
	УстановленныеПараметры.Добавить("ИдентификаторыТаблицСОтдельнымиНастройкамиПрав");
	УстановленныеПараметры.Добавить("ТипыВладельцевНастроекПрав");
	УстановленныеПараметры.Добавить("ТаблицыРасширенийСОграничениемДоступа");
	
КонецПроцедуры

////////////////////////////////////////////////////////////­///////////////////////////////////////////
// Copyright © 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
////////////////////////////////////////////////////////////­///////////////////////////////////////////
Показать
3. laperuz 45 25.01.23 05:38 Сейчас в теме
Параметр сеанса ОграничениеДоступаНаУровнеЗаписейУниверсально в конфигурацию добавлен?
Оставьте свое сообщение
Вакансии
Архитектор 1С
Новосибирск
зарплата от 300 000 руб. до 300 000 руб.
Полный день

Ведущий программист 1С/удаленно
Красноярск
зарплата от 160 000 руб. до 180 000 руб.
Полный день

Программист 1С
Иркутск
зарплата от 120 000 руб. до 160 000 руб.
Полный день

Аналитик 1С
Москва
зарплата от 110 000 руб. до 130 000 руб.
Полный день

1С разработчик
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день