3_0_1_311

This commit is contained in:
Компания 1С committed 2018-11-09 00:52:00 +03:00
1 parent 9672edb6d0
commit ee99d385fe
63 files changed
+7935 -4145

No files matched your search

@@ -1293,6 +1293,9 @@
Если ЭтоГлобальнаяОбработка Тогда
Для Каждого СтрокаРаздел Из Объект.Разделы Цикл
ПредставлениеРаздела = ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(СтрокаРаздел.Раздел);
Если ПредставлениеРаздела = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ПредставлениеНазначения = "" Тогда
ПредставлениеНазначения = ПредставлениеРаздела;
Иначе
@@ -33,9 +33,11 @@
ТолькоПросмотр = Истина;
КонецЕсли;
Если Объект.Ссылка <> Пользователи.АвторизованныйПользователь() Тогда
Элементы.Отступ.Видимость = Ложь;
Элементы.НадписьНаличиеПароля.Видимость = Ложь;
Элементы.СменитьПароль.Видимость = Ложь;
КонецЕсли;
Элементы.ПользовательИБАутентификацияOpenID.Видимость = Ложь;
Элементы.ПользовательИБАутентификацияСтандартная.Видимость = Ложь;
Элементы.ПотребоватьСменуПароляПриВходе.Видимость = Ложь;
@@ -744,7 +744,7 @@
МодульСервисКриптографииКлиент.ПроверитьПодпись(Новый ОписаниеОповещения(
"ПроверитьНаСторонеКлиентаПослеПроверкиПодписиВМоделиСервиса", ЭтотОбъект, Контекст,
"ПроверитьНаСторонеКлиентаПослеОшибкиПроверкиПодписи", ЭтотОбъект),
Контекст.ДанныеСертификата, ДанныеПодписи);
ДанныеПодписи, Контекст.ДанныеСертификата);
Иначе
ПроверитьНаСторонеКлиентаПослеПроверкиПодписиВМоделиСервиса(Null, Контекст);
КонецЕсли;
@@ -159,7 +159,7 @@
Или ПараметрыЗаписи.Свойство("КогдаИмяУжеИспользуется") Тогда
ТекущийОбъект.Имя = "";
ЗаголовокОбъекта = ТекущийОбъект.Заголовок;
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ЗаголовокОбъекта, "");
УправлениеСвойствамиСлужебный.УдалитьНедопустимыеСимволы(ЗаголовокОбъекта);
ЗаголовокОбъектаЧастями = СтрРазделить(ЗаголовокОбъекта, " ", Ложь);
Для Каждого ЧастьЗаголовка Из ЗаголовокОбъектаЧастями Цикл
ТекущийОбъект.Имя = ТекущийОбъект.Имя + ВРег(Лев(ЧастьЗаголовка, 1)) + Сред(ЧастьЗаголовка, 2);
@@ -544,7 +544,7 @@
Объект = Выборка.Ссылка.ПолучитьОбъект();
ЗаголовокОбъекта = Объект.Заголовок;
УдалитьНедопустимыеСимволы(ЗаголовокОбъекта);
УправлениеСвойствамиСлужебный.УдалитьНедопустимыеСимволы(ЗаголовокОбъекта);
ЗаголовокОбъектаЧастями = СтрРазделить(ЗаголовокОбъекта, " ", Ложь);
Для Каждого ЧастьЗаголовка Из ЗаголовокОбъектаЧастями Цикл
Объект.Имя = Объект.Имя + ВРег(Лев(ЧастьЗаголовка, 1)) + Сред(ЧастьЗаголовка, 2);
@@ -609,11 +609,6 @@
КонецФункции
Процедура УдалитьНедопустимыеСимволы(Строка)
НедопустимыеСимволы = """/\[]:;|=?*<>,.()+№@!%^&~";
Строка = СтрСоединить(СтрРазделить(Строка, НедопустимыеСимволы, Истина));
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -235,8 +235,11 @@
И ТипЗнч(ЗагруженныеАдресныеСведения.Получить(КодРегиона)) = Тип("Структура")
И ЗагруженныеАдресныеСведения.Получить(КодРегиона).ИспользоватьЗагруженные Тогда
Адрес = РаспознатьАдресЗагруженныеДанные(ЧастиАдреса);
Иначе
ИначеЕсли ЗагруженныеАдресныеСведения.Получить("КлассификаторДоступен") = Истина Тогда
Адрес = РаспознатьАдресВебСервис(ЧастиАдреса, Представление);
Возврат Адрес;
Иначе
Возврат Неопределено;
КонецЕсли;
Если СтрСравнить(Адрес.addressType, АдресВСвободнойФорме()) = 0 Тогда
@@ -314,10 +317,18 @@
КонецЕсли;
ИмяПоля = ?(ЭтоМуниципальныйАдрес(ТипАдреса), "munName", "name");
ИмяИдентификатора = ?(ЭтоМуниципальныйАдрес(ТипАдреса), "munId", "id");
Для каждого СтрокаРезультатаВебСервис Из РезультатВебСервис.Данные Цикл
НоваяСтрока = Результат.Данные.Добавить();
НоваяСтрока.Идентификатор = СтрокаРезультатаВебСервис.id;
Если ЗначениеЗаполнено(СтрокаРезультатаВебСервис[ИмяПоля]) Тогда
НоваяСтрока.Идентификатор = СтрокаРезультатаВебСервис[ИмяИдентификатора];
НоваяСтрока.Представление = СтрокаРезультатаВебСервис[ИмяПоля];
Иначе
ИмяПоляПодбора = ?(ИмяПоля = "munName", "name", "munName");
ИмяИдентификатораПодбора = ?(ИмяПоля = "munName", "id", "munId");
НоваяСтрока.Идентификатор = СтрокаРезультатаВебСервис[ИмяИдентификатораПодбора];
НоваяСтрока.Представление = СтрокаРезультатаВебСервис[ИмяПоляПодбора];
КонецЕсли;
НоваяСтрока.РегионЗагружен = Ложь;
НоваяСтрока.Неактуален = Ложь;
КонецЦикла;
@@ -443,7 +454,15 @@
ИмяПоля = ?(ЭтоМуниципальныйАдрес(ТипАдреса), "munName", "name");
ИмяПоляИдентификатор = ?(ЭтоМуниципальныйАдрес(ТипАдреса), "munId", "id");
Для каждого СтрокаДанных Из РезультатВебСервис.Данные Цикл
Если ЗначениеЗаполнено(СтрокаДанных[ИмяПоляИдентификатор]) Тогда
ДанныеВыбора.Данные.Добавить(СтрокаДанных[ИмяПоляИдентификатор], СтрокаДанных[ИмяПоля]);
Иначе
ИмяПоляПодбора = ?(ИмяПоля = "munName", "name", "munName");
ИмяПоляИдентификаторПодбора = ?(ИмяПоля = "munName", "id", "munId");
Если ЗначениеЗаполнено(СтрокаДанных[ИмяПоляИдентификаторПодбора]) Тогда
ДанныеВыбора.Данные.Добавить(СтрокаДанных[ИмяПоляИдентификаторПодбора], СтрокаДанных[ИмяПоляПодбора]);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если РезультатВебСервис.Отказ Тогда
@@ -571,7 +590,6 @@
НаименованиеЗданийИСтроений = НаименованиеВладенийИСтроений();
Для каждого СведенияОДоме Из РезультатВебСервис.Данные Цикл
ДомЧислом = Формат(НомерДомаЧислом(СведенияОДоме.number), "ЧЦ=4; ЧН=; ЧВН=; ЧГ=0; ЧФ=1Ч");
ОписаниеДома = ОписаниеДома();
Если СведенияОДоме.buildings.Количество() > 0 Тогда
@@ -1598,7 +1616,7 @@
Текст = СтрСоединить(АдресДляПроверки, ", ");
ТекстGETЗапроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("autocomplete?text=%1&limit=20",
ТекстGETЗапроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("recognize?text=%1&limit=20",
КодироватьСтроку(Текст, СпособКодированияСтроки.КодировкаURL));
РезультатВебСервис = ВыполнитьЗапросЧерезВебСервис(ТекстGETЗапроса);
@@ -1606,40 +1624,28 @@
Возврат Адрес;
КонецЕсли;
Для каждого Данные Из РезультатВебСервис.Данные Цикл
НайденныйАдрес = ОпределитьСоответствиеАдреса(Данные, Текст, Истина);
Если НайденныйАдрес = Неопределено Тогда
НайденныйАдрес = ОпределитьСоответствиеАдреса(Данные, Текст, Ложь);
Если РезультатВебСервис.Данные.status = "PARTIALLY_RECOGNIZED" Тогда
Адрес = АдресДляСохраненияВБазе(РезультатВебСервис.Данные.value, Ложь);
Адрес.comment = РезультатВебСервис.Данные.unrecognizedPart;
ИначеЕсли РезультатВебСервис.Данные.status = "COMPLETELY_RECOGNIZED" Тогда
Адрес = АдресДляСохраненияВБазе(РезультатВебСервис.Данные.value, Ложь);
Иначе
Адрес = ОписаниеНовойКонтактнойИнформации();
Адрес.value = РезультатВебСервис.Данные.unrecognizedPart;
Адрес.country = ОсновнаяСтрана();
Возврат Адрес;
КонецЕсли;
Если НайденныйАдрес <> Неопределено Тогда
НайденныйАдрес.apartments = Помещения;
Возврат НайденныйАдрес;
Если СтрСравнить(РезультатВебСервис.Данные.addressType, "MUNICIPAL") = 0 Тогда
Адрес.addressType = МуниципальныйАдрес();
Иначе
Адрес.addressType = АдминистративноТерриториальныйАдрес();
КонецЕсли;
КонецЦикла;
Возврат Адрес;
КонецФункции
Функция ОпределитьСоответствиеАдреса(Знач Данные, Знач Текст, Муниципальный)
ПредставлениеАдреса = ?(Муниципальный, Данные.munValue, Данные.value);
ПозицияИндекса = СтрНайти(ПредставлениеАдреса, "(");
Если ПозицияИндекса > 0 Тогда
Представление = СокрЛП(Лев(ПредставлениеАдреса, ПозицияИндекса - 1));
Если СтрСравнить(Текст, Представление) = 0 Тогда
Возврат АдресДляСохраненияВБазе(Данные, Муниципальный);
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция СписокТиповЗданий()
ТипыЗданий = Новый Соответствие();
@@ -3599,12 +3605,14 @@
ПредставлениеТерриториальное = СтрокаДанных.valueReversed;
ПредставлениеМуниципальное = СтрокаДанных.munValueReversed;
Если ЗначениеЗаполнено(ПредставлениеМуниципальное) Тогда
НоваяСтрока = Результат.Данные.Добавить();
НоваяСтрока.Представление = ПредставлениеМуниципальное;
НоваяСтрока.Муниципальный = Истина;
НоваяСтрока.Идентификатор = СтрокаДанных.id;
КонецЕсли;
Если ПредставлениеТерриториальное <> ПредставлениеМуниципальное Тогда
Если ПредставлениеТерриториальное <> ПредставлениеМуниципальное И ЗначениеЗаполнено(ПредставлениеТерриториальное) Тогда
НоваяСтрока = Результат.Данные.Добавить();
НоваяСтрока.Представление = ПредставлениеТерриториальное;
НоваяСтрока.Муниципальный = Ложь;
@@ -4094,6 +4102,8 @@
Возврат Результат;
КонецЕсли;
Результат.Ошибки.Очистить(); // Найден корректный адрес. Ошибок нет.
// Проверяем дома
НомерДомаАдрес = Адрес.HouseNumber;
ТипДомаАдрес = ?(ЗначениеЗаполнено(НомерДомаАдрес), Адрес.HouseType, "");
@@ -7062,6 +7072,10 @@
КонецФункции
Функция ОсновнаяСтрана()
Возврат "Россия";
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -2180,7 +2180,10 @@
// Возвращает имя рабочего места команды.
Функция ПредставлениеОбъектаМетаданных(Объект) Экспорт
Если ТипЗнч(Объект) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Объект);
ОбъектМетаданных = Справочники.ИдентификаторыОбъектовМетаданных.ОбъектМетаданныхПоИдентификатору(Объект, Истина);
Если ТипЗнч(ОбъектМетаданных) <> Тип("ОбъектМетаданных") Тогда
Возврат Неопределено;
КонецЕсли;
ИначеЕсли ТипЗнч(Объект) = Тип("ОбъектМетаданных") Тогда
ОбъектМетаданных = Объект;
Иначе
@@ -476,6 +476,8 @@
КонецПопытки;
ВалютыОбластейСтрокой = ОбщегоНазначения.ЗначениеВСтрокуXML(ВалютыОбластей);
НачатьТранзакцию();
Попытка
@@ -489,11 +491,16 @@
Исключение
ОтменитьТранзакцию();
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ВалютыОбластей = ОбщегоНазначения.ЗначениеИзСтрокиXML(ВалютыОбластейСтрокой);
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось обновить курсы валют в области %1 по причине:
|%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
Формат(ОбластьДанных, "ЧН=0; ЧГ=0"),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Распространение курсов валют по областям данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ТекстОшибки);
КонецПопытки;
@@ -2719,6 +2719,10 @@
Иначе
Если Не ОбменДаннымиСервер.НастройкаСинхронизацииЗавершена(УзелОбмена) Тогда
Возврат ТаблицаОбъекты;
КонецЕсли;
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелОбмена);
ТаблицаОбъектыБазы = ПоддерживаемыеОбъектыФормата(ИмяПланаОбмена,
@@ -673,20 +673,6 @@
КонецФункции
// Получает предопределенный узел плана обмена по ссылке на узел плана обмена.
//
// Параметры:
// УзелПланаОбмена - ПланОбменаСсылка - любой узел плана обмена.
//
// Возвращаемое значение:
// ЭтотУзел - ПланОбменаСсылка - предопределенный узел плана обмена.
//
Функция ПолучитьЭтотУзелПланаОбменаПоСсылке(УзелПланаОбмена) Экспорт
Возврат ПолучитьЭтотУзелПланаОбмена(ПолучитьИмяПланаОбмена(УзелПланаОбмена));
КонецФункции
// Возвращает признак принадлежности узла к плану обмена РИБ.
//
// Параметры:
@@ -11467,10 +11467,10 @@
WSПрокси = Неопределено;
Если ВерсияКорреспондента_2_1_1_7 Тогда
WSПрокси = ПолучитьWSПрокси_2_1_1_7(СтруктураНастроек, , СообщениеПользователю, 5);
ИначеЕсли ВерсияКорреспондента_3_0_1_1 Тогда
Если ВерсияКорреспондента_3_0_1_1 Тогда
WSПрокси = ПолучитьWSПрокси_3_0_1_1(СтруктураНастроек, , СообщениеПользователю, 5);
ИначеЕсли ВерсияКорреспондента_2_1_1_7 Тогда
WSПрокси = ПолучитьWSПрокси_2_1_1_7(СтруктураНастроек, , СообщениеПользователю, 5);
КонецЕсли;
Если WSПрокси = Неопределено Тогда
@@ -11480,8 +11480,7 @@
Попытка
КодКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбменаПоСсылке(Корреспондент), "Код");
КодКорреспондента = ИдентификаторЭтогоУзлаДляОбмена(Корреспондент);
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Корреспондент);
ЕстьПодключение = WSПрокси.TestConnection(
@@ -11489,6 +11488,21 @@
КодКорреспондента,
СообщениеПользователю);
Если Не ЕстьПодключение
И ЭтоПланОбменаXDTO(Корреспондент) Тогда
Псевдоним = ПсевдонимПредопределенногоУзла(Корреспондент);
Если ЗначениеЗаполнено(Псевдоним) Тогда
КодКорреспондента = Псевдоним;
ЕстьПодключение = WSПрокси.TestConnection(
ИмяПланаОбмена,
КодКорреспондента,
СообщениеПользователю);
КонецЕсли;
КонецЕсли;
Если Не ЕстьПодключение
И ЭтоПланОбменаXDTO(Корреспондент) Тогда
@@ -11497,6 +11511,7 @@
ВариантНастройки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Корреспондент, "ВариантНастройки");
КонецЕсли;
Если ЗначениеЗаполнено(ВариантНастройки) Тогда
Для Каждого ИмяСтарогоПланаОбмена Из ОбменДаннымиПовтИсп.ПланыОбменаБСП() Цикл
Если ИмяСтарогоПланаОбмена = ИмяПланаОбмена Тогда
Продолжить;
@@ -11505,20 +11520,30 @@
Продолжить;
КонецЕсли;
ИмяНовогоПланаОбмена = ЗначениеНастройкиПланаОбмена(ИмяСтарогоПланаОбмена,
"ИмяПланаОбменаДляПереходаНаНовыйОбмен", ВариантНастройки);
НастройкиСтарогоПланаОбмена = ЗначениеНастройкиПланаОбмена(ИмяСтарогоПланаОбмена,
"ИмяПланаОбменаДляПереходаНаНовыйОбмен,ВариантыНастроекОбмена");
Если ИмяНовогоПланаОбмена = ИмяПланаОбмена Тогда
ЕстьПодключение = WSПрокси.TestConnection(
Если НастройкиСтарогоПланаОбмена.ИмяПланаОбменаДляПереходаНаНовыйОбмен = ИмяПланаОбмена Тогда
ВариантНастроек = НастройкиСтарогоПланаОбмена.ВариантыНастроекОбмена.Найти(ВариантНастройки, "ИдентификаторНастройки");
Если Не ВариантНастроек = Неопределено Тогда
ПараметрыКорреспондентаXDTO = WSПрокси.GetIBParameters(
ИмяСтарогоПланаОбмена,
КодКорреспондента,
СообщениеПользователю);
КонецЕсли;
ПараметрыКорреспондента = СериализаторXDTO.ПрочитатьXDTO(ПараметрыКорреспондентаXDTO);
ЕстьПодключение = ПараметрыКорреспондента.ПланОбменаСуществует И ПараметрыКорреспондента.УзелСуществует;
Если ЕстьПодключение Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
@@ -32,7 +32,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.0.1.298";
Описание.Версия = "3.0.1.311";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -556,10 +556,6 @@
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураЗначенийПолей(
ПредыдущийФорматКонтактнойИнформацииXML(Данные));
ИначеЕсли ПустаяСтрока(Данные) И ВидКонтактнойИнформации <> Неопределено Тогда
// Генерируем по виду
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураКонтактнойИнформацииПоТипу(
ВидКонтактнойИнформации.Тип);
КонецЕсли;
Если ВидКонтактнойИнформации <> Неопределено
@@ -570,6 +566,12 @@
ТипКонтактнойИнформации = Неопределено;
КонецЕсли;
Если ПустаяСтрока(Данные) Тогда
// Генерируем по типу
Возврат РаботаСАдресамиКлиентСервер.СтруктураКонтактнойИнформацииПоТипу(ТипКонтактнойИнформации);
КонецЕсли;
// Возвращаем полную структуру для данного вида с заполненными полями.
Результат = РаботаСАдресамиКлиентСервер.СтруктураКонтактнойИнформацииПоТипу(ТипКонтактнойИнформации);
СтруктураЗначенийПолей = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураЗначенийПолей(Данные, ВидКонтактнойИнформации);
@@ -619,7 +619,8 @@
Возврат;
КонецЕсли;
ПараметрыВыполнения.ДанныеФайла =
РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляПечати(ПараметрыВыполнения.ДанныеФайлов[ПараметрыВыполнения.НомерФайла]);
РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляПечати(ПараметрыВыполнения.ДанныеФайлов[ПараметрыВыполнения.НомерФайла],
ПараметрыВыполнения.УникальныйИдентификатор);
#Если ВебКлиент Тогда
Если ПараметрыВыполнения.ДанныеФайла.Расширение <> "mxl" Тогда
@@ -606,9 +606,9 @@
ДляРедактирования);
КонецФункции
Функция ДанныеФайлаДляПечати(Знач ПрисоединенныйФайл) Экспорт
Функция ДанныеФайлаДляПечати(Знач ПрисоединенныйФайл, Знач ИдентификаторФормы = Неопределено) Экспорт
ДанныеФайла = ПолучитьДанныеФайла(ПрисоединенныйФайл);
ДанныеФайла = ПолучитьДанныеФайла(ПрисоединенныйФайл, ИдентификаторФормы);
Расширение = НРег(ДанныеФайла.Расширение);
Если Расширение = "mxl" Тогда
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(ДанныеФайла.СсылкаНаДвоичныеДанныеФайла);
@@ -743,6 +743,8 @@
ИдентификаторыРазрешенных = Новый Массив;
Если Списки = Неопределено Тогда
ОчиститьКэшЗначенийГруппДоступаДляРасчетаПрав();
Если ПараметрыПланирования.ВерсииОграниченийСписков = Неопределено Тогда
ДействующиеПараметры = ДействующиеПараметрыОграниченияДоступа(Неопределено, Неопределено);
ВерсииОграниченийСписков = Новый Соответствие(ДействующиеПараметры.ВерсииОграниченийСписков);
@@ -1021,13 +1023,13 @@
Обработчики.Вставить("РазрешенныйПользователь",
"УправлениеДоступомСлужебный.УстановкаПараметровСеанса");
Обработчики.Вставить("СпискиСОграничениемПоПолям",
"УправлениеДоступомСлужебный.УстановкаПараметровСеанса");
Обработчики.Вставить("СпискиСОграничениемЧерезКлючиДоступа*",
"УправлениеДоступомСлужебный.УстановкаПараметровСеанса");
Обработчики.Вставить("СпискиСОтключеннымОграничением*",
"УправлениеДоступомСлужебный.УстановкаПараметровСеанса");
Обработчики.Вставить("СпискиССокращеннымНаборомПолейВРегистрахКлючей",
Обработчики.Вставить("СпискиСОтключеннымОграничениемЧтения",
"УправлениеДоступомСлужебный.УстановкаПараметровСеанса");
Обработчики.Вставить("ПараметрыОграниченияДоступа",
@@ -1280,8 +1282,22 @@
Обработчик.Комментарий = НСтр("ru = 'Планирование частичного обновления доступа по изменениям программы.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("2721d667-858d-48ed-8736-f7ece8218697");
Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.ПараметрыОграниченияДоступа.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию1";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ЧитаемыеОбъекты = "РегистрСведений.ПараметрыОграниченияДоступа";
Обработчик.ИзменяемыеОбъекты = "РегистрСведений.ПараметрыОграниченияДоступа";
КонецЕсли;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.1.304";
Обработчик.Процедура = "РегистрыСведений.ГруппыЗначенийДоступа.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Комментарий = НСтр("ru = 'Обновление данных по изменениям программы.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("b3cb643e-d5cf-40b7-9db3-6315a88c063d");
Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.ГруппыЗначенийДоступа.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ЧитаемыеОбъекты = "РегистрСведений.ГруппыЗначенийДоступа";
Обработчик.ИзменяемыеОбъекты = "РегистрСведений.ГруппыЗначенийДоступа";
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыБСП.ПослеОбновленияИнформационнойБазы.
@@ -1976,8 +1992,7 @@
ПараметрыСеанса.СпискиСОграничениемЧерезКлючиДоступаГруппДоступа = "";
ПараметрыСеанса.СпискиСОграничениемЧерезКлючиДоступаПользователей = "";
ПараметрыСеанса.СпискиСОграничениемЧерезКлючиДоступаПользователейИГруппДоступа = "";
ПараметрыСеанса.СпискиСОтключеннымОграничениемПоПолям = "";
ПараметрыСеанса.СпискиССокращеннымНаборомПолейВРегистрахКлючей = "";
ПараметрыСеанса.СпискиСОграничениемПоПолям = "";
УстановленныеПараметры.Добавить("СпискиСОтключеннымОграничениемЧтения");
УстановленныеПараметры.Добавить("ВерсииШаблоновОграниченияДоступа");
@@ -1988,8 +2003,7 @@
УстановленныеПараметры.Добавить("СпискиСОграничениемЧерезКлючиДоступаГруппДоступа");
УстановленныеПараметры.Добавить("СпискиСОграничениемЧерезКлючиДоступаПользователей");
УстановленныеПараметры.Добавить("СпискиСОграничениемЧерезКлючиДоступаПользователейИГруппДоступа");
УстановленныеПараметры.Добавить("СпискиСОтключеннымОграничениемПоПолям");
УстановленныеПараметры.Добавить("СпискиССокращеннымНаборомПолейВРегистрахКлючей");
УстановленныеПараметры.Добавить("СпискиСОграничениемПоПолям");
КонецЕсли;
#КонецОбласти
@@ -2544,7 +2558,7 @@
СвойстваВидовДоступа = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа();
ЗначенияДоступаСГруппами = СвойстваВидовДоступа.ЗначенияДоступаСГруппами;
Если ЗначенияДоступаСГруппами.ПоТипам.Получить(ТипЗнч(Объект)) <> Неопределено Тогда
Если ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Получить(ТипЗнч(Объект)) <> Неопределено Тогда
РегистрыСведений.ГруппыЗначенийДоступа.ОбновитьГруппыЗначенийДоступа(Объект);
КонецЕсли;
@@ -2667,7 +2681,7 @@
Если УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей() И НЕ ТолькоКэшРеквизиты Тогда
// Заполнение групп значений доступа в регистре сведений ГруппыЗначенийДоступа.
Для каждого ИмяТаблицы Из ЗначенияДоступаСГруппами.ИменаТаблиц Цикл
Для Каждого ИмяТаблицы Из ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления Цикл
Если КоличествоДанных < 10000 Тогда
@@ -6505,25 +6519,22 @@
ЗначенияДоступаСГруппами = Новый Структура;
ЗначенияДоступаСГруппами.Вставить("ПоТипам", Новый Соответствие);
ЗначенияДоступаСГруппами.Вставить("ПоТипамСсылок", Новый Соответствие);
ЗначенияДоступаСГруппами.Вставить("ИменаТаблиц", Новый Массив);
ЗначенияДоступаСГруппами.Вставить("ТипыГруппЗначений", Новый Соответствие);
ЗначенияДоступаСГруппами.Вставить("ИменаТаблицДляОбновления", Новый Массив);
ЗначенияДоступаСГруппами.Вставить("ТипыГруппЗначенийДляОбновления", Новый Соответствие);
ЗначенияДоступаСГруппами.Вставить("ПоТипамДляОбновления", Новый Соответствие);
ЗначенияДоступаСГруппами.Вставить("ПоТипамСсылокДляОбновления", Новый Соответствие);
Параметры = Новый Структура;
Параметры.Вставить("ОпределяемыеТипыЗначенийДоступа",
УправлениеДоступомСлужебныйПовтИсп.ТипыПоляТаблицы("ОпределяемыйТип.ЗначениеДоступа"));
ЗаголовокОшибки =
НСтр("ru = 'Ошибка в процедуре ЗаполнитьСвойстваВидаДоступа
|общего модуля УправлениеДоступомПереопределяемый.'")
НСтр("ru = 'Ошибка в процедуре ПриЗаполненииВидовДоступа общего модуля УправлениеДоступомПереопределяемый.'")
+ Символы.ПС
+ Символы.ПС;
Параметры.Вставить("ЗаголовокОшибки", ЗаголовокОшибки);
Параметры.Вставить("ТипыПодпискиОбновитьГруппыЗначенийДоступа",
УправлениеДоступомСлужебныйПовтИсп.ТипыПоляТаблицы(
"ОпределяемыйТип.ЗначениеДоступаСГруппамиЗначенийДоступаОбъект"));
ВсеИменаВидовДоступа = Новый Соответствие;
ВсеИменаВидовДоступа.Вставить(ВРег("Объект"), Истина);
ВсеИменаВидовДоступа.Вставить(ВРег("Условие"), Истина);
@@ -6651,6 +6662,8 @@
СвойстваВидовДоступа.Вставить("БезГруппДляЗначенияДоступа", БезГруппДляЗначенияДоступа);
СвойстваВидовДоступа.Вставить("СОднойГруппойДляЗначенияДоступа", СОднойГруппойДляЗначенияДоступа);
СвойстваВидовДоступа.Вставить("ТипыЗначенийДоступаСГруппами", ТипыЗначенийДоступаСГруппами);
СвойстваВидовДоступа.Вставить("ВладелецНаборовЗначенийДоступа",
СтрокаДанныхДляХеширования(Метаданные.ОпределяемыеТипы.ВладелецНаборовЗначенийДоступаОбъект.Тип));
// Проверка совместимости перехода на новые версии программы.
Если Параметры.ОпределяемыеТипыЗначенийДоступа.Получить(
@@ -6665,6 +6678,8 @@
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ПроверитьТипыПодпискиОбновитьГруппыЗначенийДоступа(ЗначенияДоступаСГруппами);
Возврат ОбщегоНазначения.ФиксированныеДанные(СвойстваВидовДоступа);
КонецФункции
@@ -6684,11 +6699,6 @@
Возврат;
КонецЕсли;
Если Строка.ТипГруппЗначений = Тип("Неопределено") Тогда
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Строка.ТипЗначений);
Возврат;
КонецЕсли;
ТипСсылки = Строка.ТипЗначений;
МетаданныеТипаЗначений = Метаданные.НайтиПоТипу(Строка.ТипЗначений);
@@ -6699,6 +6709,13 @@
МетаданныеТипаЗначений);
КонецЕсли;
Если Строка.ТипГруппЗначений = Тип("Неопределено") Тогда
ДобавитьТипыПодпискиОбновитьГруппыЗначенийДоступа(ТипСсылки,
ТипОбъекта, МетаданныеТипаЗначений, ЗначенияДоступаСГруппами, Свойства, Неопределено);
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Строка.ТипЗначений);
Возврат;
КонецЕсли;
Если Строка.ТипГруппЗначений <> Тип("Неопределено") Тогда
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Строка.ТипГруппЗначений);
КонецЕсли;
@@ -6706,26 +6723,76 @@
ЗначенияДоступаСГруппами.ПоТипам.Вставить(ТипСсылки, Свойства);
ЗначенияДоступаСГруппами.ПоТипам.Вставить(ТипОбъекта, Свойства);
ЗначенияДоступаСГруппами.ПоТипамСсылок.Вставить(ТипСсылки, Свойства);
ЗначенияДоступаСГруппами.ИменаТаблиц.Добавить(МетаданныеТипаЗначений.ПолноеИмя());
МетаданныеТипаГруппЗначений = Метаданные.НайтиПоТипу(Строка.ТипГруппЗначений);
ДобавитьТипыПодпискиОбновитьГруппыЗначенийДоступа(ТипСсылки,
ТипОбъекта, МетаданныеТипаЗначений, ЗначенияДоступаСГруппами, Свойства, МетаданныеТипаГруппЗначений);
КонецПроцедуры
// Для функции СвойстваВидовДоступа и процедуры ЗаполнитьЗначенияДоступаСГруппами.
Процедура ДобавитьТипыПодпискиОбновитьГруппыЗначенийДоступа(ТипСсылки, ТипОбъекта,
МетаданныеТипаЗначений, ЗначенияДоступаСГруппами, Свойства, МетаданныеТипаГруппЗначений)
ПустаяСсылкаТипаЗначений = ПредопределенноеЗначение(МетаданныеТипаЗначений.ПолноеИмя() + ".ПустаяСсылка");
Если МетаданныеТипаГруппЗначений = Неопределено Тогда
ПустаяСсылкаТипаГруппЗначений = ПустаяСсылкаТипаЗначений;
Иначе
ПустаяСсылкаТипаГруппЗначений = ПустаяСсылкаОбъектаМетаданных(МетаданныеТипаГруппЗначений);
ЗначенияДоступаСГруппами.ТипыГруппЗначений.Вставить(ТипСсылки, ПустаяСсылкаТипаГруппЗначений);
ЗначенияДоступаСГруппами.ТипыГруппЗначений.Вставить(
ПустаяСсылкаОбъектаМетаданных(МетаданныеТипаЗначений), ПустаяСсылкаТипаГруппЗначений);
// Проверка наличия типа ссылки в соответствующих объектах метаданных.
Если Параметры.ТипыПодпискиОбновитьГруппыЗначенийДоступа.Получить(ТипОбъекта) = Неопределено
И НЕ ОбщегоНазначения.ЭтоПеречисление(МетаданныеТипаЗначений) Тогда
ТекстОшибки = Параметры.ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Тип значения доступа ""%1"", использующий группы значений, не указан
|в определяемом типе ""Значение доступа с группами значений доступа объект"".'"),
Строка(ТипОбъекта));
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления.Добавить(МетаданныеТипаЗначений.ПолноеИмя());
ЗначенияДоступаСГруппами.ТипыГруппЗначенийДляОбновления.Вставить(ТипСсылки,
ПустаяСсылкаТипаГруппЗначений);
ЗначенияДоступаСГруппами.ТипыГруппЗначенийДляОбновления.Вставить(ПустаяСсылкаТипаЗначений,
ПустаяСсылкаТипаГруппЗначений);
ЗначенияДоступаСГруппами.ПоТипамСсылокДляОбновления.Вставить(ТипСсылки, Свойства);
ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Вставить(ТипСсылки, Свойства);
ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Вставить(ТипОбъекта, Свойства);
КонецПроцедуры
// Для функции СвойстваВидовДоступа.
Процедура ПроверитьТипыПодпискиОбновитьГруппыЗначенийДоступа(ЗначенияДоступаСГруппами)
ТекущиеТипыПодписки = УправлениеДоступомСлужебныйПовтИсп.ТипыПоляТаблицы(
"ОпределяемыйТип.ЗначениеДоступаСГруппамиЗначенийДоступаОбъект");
ТребуемыеТипыПодписки = Новый Соответствие;
Для Каждого КлючИЗначение Из ЗначенияДоступаСГруппами.ПоТипамДляОбновления Цикл
Если ЗначенияДоступаСГруппами.ПоТипамСсылокДляОбновления.Получить(КлючИЗначение.Ключ) <> Неопределено
Или ЗначенияДоступаСГруппами.ПоТипам.Получить(КлючИЗначение.Ключ) = Неопределено Тогда
Продолжить;
КонецЕсли;
ТребуемыеТипыПодписки.Вставить(КлючИЗначение.Ключ, Истина);
КонецЦикла;
НедостающиеТипы = Новый Массив;
Для Каждого КлючИЗначение Из ТребуемыеТипыПодписки Цикл
Если ТекущиеТипыПодписки.Получить(КлючИЗначение.Ключ) = Неопределено Тогда
НедостающиеТипы.Добавить(КлючИЗначение.Ключ);
КонецЕсли;
КонецЦикла;
Если НедостающиеТипы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'По данным, полученным из процедуры ПриЗаполненииВидовДоступа
|общего модуля УправлениеДоступомПереопределяемый, в определяемом типе
|""Значение доступа с группами значений доступа объект"" не указаны требуемые типы:
|- %1'"),
СтрСоединить(НедостающиеТипы, "," + Символы.ПС + "- "));
ВызватьИсключение ТекстОшибки;
КонецПроцедуры
// Для функции СвойстваВидовДоступа.
@@ -6830,12 +6897,24 @@
Если НЕ ТипЗнч(Сохраненные) = Тип("ФиксированнаяСтруктура")
ИЛИ НЕ Сохраненные.Свойство("ПоТипамЗначений")
ИЛИ НЕ Сохраненные.Свойство("ТипыЗначенийДоступаСГруппами")
ИЛИ НЕ Сохраненные.Свойство("ЗначенияДоступаСГруппами")
ИЛИ НЕ Сохраненные.Свойство("ВладелецНаборовЗначенийДоступа")
ИЛИ НЕ ТипЗнч(Сохраненные.ПоТипамЗначений) = Тип("ФиксированноеСоответствие")
ИЛИ НЕ ТипЗнч(Сохраненные.ТипыЗначенийДоступаСГруппами) = Тип("ФиксированноеСоответствие")
ИЛИ НЕ ТипЗнч(Сохраненные.ЗначенияДоступаСГруппами) = Тип("ФиксированнаяСтруктура")
ИЛИ НЕ ТипЗнч(Сохраненные.ВладелецНаборовЗначенийДоступа) = Тип("Строка")
ИЛИ НЕ Сохраненные.ЗначенияДоступаСГруппами.Свойство("ИменаТаблицДляОбновления")
ИЛИ НЕ ТипЗнч(Сохраненные.ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления) = Тип("ФиксированныйМассив")
ИЛИ НЕ СвойстваВидовДоступа.Свойство("ПоТипамЗначений")
ИЛИ НЕ СвойстваВидовДоступа.Свойство("ТипыЗначенийДоступаСГруппами")
ИЛИ НЕ СвойстваВидовДоступа.Свойство("ЗначенияДоступаСГруппами")
ИЛИ НЕ СвойстваВидовДоступа.Свойство("ВладелецНаборовЗначенийДоступа")
ИЛИ НЕ ТипЗнч(СвойстваВидовДоступа.ПоТипамЗначений) = Тип("ФиксированноеСоответствие")
ИЛИ НЕ ТипЗнч(СвойстваВидовДоступа.ТипыЗначенийДоступаСГруппами) = Тип("ФиксированноеСоответствие") Тогда
ИЛИ НЕ ТипЗнч(СвойстваВидовДоступа.ТипыЗначенийДоступаСГруппами) = Тип("ФиксированноеСоответствие")
ИЛИ НЕ ТипЗнч(СвойстваВидовДоступа.ЗначенияДоступаСГруппами) = Тип("ФиксированнаяСтруктура")
ИЛИ НЕ ТипЗнч(СвойстваВидовДоступа.ВладелецНаборовЗначенийДоступа) = Тип("Строка")
ИЛИ НЕ СвойстваВидовДоступа.ЗначенияДоступаСГруппами.Свойство("ИменаТаблицДляОбновления")
ИЛИ НЕ ТипЗнч(СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления) = Тип("ФиксированныйМассив") Тогда
Возврат Истина;
КонецЕсли;
@@ -6849,6 +6928,16 @@
Возврат Истина;
КонецЕсли;
Если Не ОбщегоНазначения.ДанныеСовпадают(СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления,
Сохраненные.ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления) Тогда
Возврат Истина;
КонецЕсли;
Если СвойстваВидовДоступа.ВладелецНаборовЗначенийДоступа
<> Сохраненные.ВладелецНаборовЗначенийДоступа Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
@@ -8299,11 +8388,7 @@
// Для вызова из модуля менеджера регистра ЗначенияГруппДоступа.
Процедура ЗапланироватьОбновлениеДоступаПриИзмененииРазрешенныхЗначений(ГруппыДоступаИТипыЗначений) Экспорт
ИмяПараметраВерсии = "СтандартныеПодсистемы.УправлениеДоступом.ЗначенияГруппДоступаВерсия";
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметраВерсии, Новый УникальныйИдентификатор, Истина);
ИмяПараметра = "СтандартныеПодсистемы.УправлениеДоступом.ЗначенияГруппДоступа";
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, Неопределено, Истина);
ОчиститьКэшЗначенийГруппДоступаДляРасчетаПрав();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ГруппыДоступаИТипыЗначений", ГруппыДоступаИТипыЗначений);
@@ -8333,6 +8418,25 @@
КонецПроцедуры
// Для процедур ЗапланироватьОбновлениеДоступаПриИзмененииРазрешенныхЗначений,
// ЗапланироватьОбновлениеДоступа и вызова из модуля формы ОбновлениеДоступаРучноеУправление.
//
Процедура ОчиститьКэшЗначенийГруппДоступаДляРасчетаПрав() Экспорт
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
ИмяПараметраВерсии = "СтандартныеПодсистемы.УправлениеДоступом.ЗначенияГруппДоступаВерсия";
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметраВерсии, Новый УникальныйИдентификатор, Истина);
ИмяПараметра = "СтандартныеПодсистемы.УправлениеДоступом.ЗначенияГруппДоступа";
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, Неопределено, Истина);
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецПроцедуры
// Для процедур ЗапланироватьОбновлениеДоступаПриИзмененииУчастниковГруппыДоступа,
// ЗапланироватьОбновлениеДоступаПослеОбновленияСоставовГруппПользователей,
// ЗапланироватьОбновлениеДоступаПриИзмененииТаблицГруппДоступа,
@@ -16277,8 +16381,8 @@
Функция ВерсияСтруктурыКэша()
// Число нужно увеличивать при внесении изменений в состав параметров кэша
// (в том числе изменение версии шаблонов).
Возврат "6";
// (в том числе при изменении версии шаблонов).
Возврат "7";
КонецФункции
@@ -16286,7 +16390,7 @@
// для функции СтруктураХранимыхПараметровШаблонов.
Функция ВерсииШаблоновОграниченияДоступа()
Возврат ",ДляОбъекта2,ДляРегистра2,";
Возврат ",ДляОбъекта3,ДляРегистра3,";
КонецФункции
@@ -17251,23 +17355,25 @@
СвойстваСписка.ПолноеИмя);
КонецЕсли;
Поля = ":[" + Поля + "]";
Номер = 1;
НомерИспользуемого = 1;
Для Каждого ИмяПоля Из ОпорныеПоля.Все Цикл
Поля = Поля + ":" + ИмяПоля;
Если ОпорныеПоля.Используемые.Найти(ИмяПоля) = Неопределено Тогда
ПараметрыШаблонов.СпискиСОтключеннымОграничениемПоПолям =
ПараметрыШаблонов.СпискиСОтключеннымОграничениемПоПолям
+ СвойстваСписка.ПолноеИмя + ":" + ИмяПоля + ";" + Символы.ПС;
Если ОпорныеПоля.Используемые.Найти(ИмяПоля) <> Неопределено Тогда
ПараметрыШаблонов.СпискиСОграничениемПоПолям = ПараметрыШаблонов.СпискиСОграничениемПоПолям
+ СвойстваСписка.ПолноеИмя + ":Поле" + НомерИспользуемого + "=Поле" + Номер + ";" + Символы.ПС;
НомерИспользуемого = НомерИспользуемого + 1;
КонецЕсли;
Номер = Номер + 1;
КонецЦикла;
Для Номер = НомерИспользуемого По ОпорныеПоля.МаксимальноеКоличество Цикл
ПараметрыШаблонов.СпискиСОграничениемПоПолям = ПараметрыШаблонов.СпискиСОграничениемПоПолям
+ СвойстваСписка.ПолноеИмя + ":Поле" + Номер + "=Null;" + Символы.ПС;
КонецЦикла;
НомерПустогоПоля = ОпорныеПоля.Все.Количество() + 1;
Для Номер = НомерПустогоПоля По ОпорныеПоля.МаксимальноДопустимоеКоличество Цикл
Поля = Поля + ":";
КонецЦикла;
Для Номер = ОпорныеПоля.МаксимальноеКоличество + 1 По ОпорныеПоля.МаксимальноДопустимоеКоличество Цикл
ПараметрыШаблонов.СпискиССокращеннымНаборомПолейВРегистрахКлючей =
ПараметрыШаблонов.СпискиССокращеннымНаборомПолейВРегистрахКлючей
+ СвойстваСписка.ПолноеИмя + ":Поле" + Номер + ";" + Символы.ПС;
КонецЦикла;
КонецЕсли;
Если СвойстваСписка.КлючиДоступаПользователейИГруппДоступа Тогда
@@ -17312,9 +17418,8 @@
ПараметрыШаблонов.Вставить("СпискиСОграничениемЧерезКлючиДоступаГруппДоступа", "");
ПараметрыШаблонов.Вставить("СпискиСОграничениемЧерезКлючиДоступаПользователей", "");
ПараметрыШаблонов.Вставить("СпискиСОграничениемЧерезКлючиДоступаПользователейИГруппДоступа", "");
ПараметрыШаблонов.Вставить("СпискиСОтключеннымОграничениемПоПолям", "");
ПараметрыШаблонов.Вставить("СпискиСОграничениемПоПолям", "");
ПараметрыШаблонов.Вставить("СпискиСОтключеннымОграничениемЧтения", "");
ПараметрыШаблонов.Вставить("СпискиССокращеннымНаборомПолейВРегистрахКлючей", "");
Если ТипЗнч(Значения) <> Тип("ФиксированнаяСтруктура")
Или Значения.Количество() <> ПараметрыШаблонов.Количество() Тогда
@@ -2391,8 +2391,8 @@
// Собирает список команд печати из нескольких объектов.
Процедура ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати)
Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
ИсточникиКомандПечати = ИсточникиКомандПечати();
Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
Если ИсточникиКомандПечати.Найти(ОбъектМетаданных) = Неопределено Тогда
Продолжить;
КонецЕсли;
@@ -1155,6 +1155,11 @@
КонецФункции
Процедура УдалитьНедопустимыеСимволы(Строка) Экспорт
НедопустимыеСимволы = """'`/\[]{}:;|=?*<>,.()+#№@!%^&~";
Строка = СтрСоединить(СтрРазделить(Строка, НедопустимыеСимволы, Истина));
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры и функции.
+10 -11
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="8c9b684c-3d4e-4f43-b95d-c7c4add4b47e">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9fca02dd-4c3c-4c9a-875c-4f956b2428d0">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.0</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="2a2f7260-d3df-4624-8804-50d6c6021a4c"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="6329d81b-04d4-496b-9554-4f3a33e97abc"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="040daacc-d091-4aab-a236-3d7c92b756ae"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="929d8405-df3e-49f5-b1d2-6a207a80c1d5"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="308c06e9-28d3-4319-952c-91b16b0777e1"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="88dcf112-03ef-45b4-bd8b-d3d8e1662abf"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="52f9cf44-2860-4aa7-9854-24c78e7a0925"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="c2f6e085-89d5-4081-a83d-e578734b5fed"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="35de9de6-9e96-44f8-8f39-4f7c0a8f801d"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="e4208372-65ea-448a-a0f9-e44b1a518439"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="5e128d5e-b139-43a7-a276-18b39431e7ff"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="230094b0-46c7-4577-9ea2-e89653a03a21"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="13316658-41a0-430b-af4e-62f50729bfba"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="451d4bb4-0242-45ce-9b5a-18096dd0bda9"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.0.1.298</version>
<version>3.0.1.311</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -444,12 +444,11 @@
<sessionParameters>SessionParameter.РазрешенныйПользователь</sessionParameters>
<sessionParameters>SessionParameter.РазрешенныйПустойНаборГруппДоступа</sessionParameters>
<sessionParameters>SessionParameter.РежимЗагрузкиСообщенияОбменаДаннымиПередЗапуском</sessionParameters>
<sessionParameters>SessionParameter.СпискиСОграничениемПоПолям</sessionParameters>
<sessionParameters>SessionParameter.СпискиСОграничениемЧерезКлючиДоступаГруппДоступа</sessionParameters>
<sessionParameters>SessionParameter.СпискиСОграничениемЧерезКлючиДоступаПользователей</sessionParameters>
<sessionParameters>SessionParameter.СпискиСОграничениемЧерезКлючиДоступаПользователейИГруппДоступа</sessionParameters>
<sessionParameters>SessionParameter.СпискиСОтключеннымОграничениемПоПолям</sessionParameters>
<sessionParameters>SessionParameter.СпискиСОтключеннымОграничениемЧтения</sessionParameters>
<sessionParameters>SessionParameter.СпискиССокращеннымНаборомПолейВРегистрахКлючей</sessionParameters>
<sessionParameters>SessionParameter.ТаблицыСОтдельнымиНастройкамиПрав</sessionParameters>
<sessionParameters>SessionParameter.ТекущийВнешнийПользователь</sessionParameters>
<sessionParameters>SessionParameter.ТекущийПользователь</sessionParameters>
@@ -1 +1 @@
{6,1,1,9f2aa679-0be8-4706-8801-f822aded5374,1,4d649df2-7a6d-4bb2-9d8c-09efc8da7773,"3.0.1.298","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5876,1,0,8c9b684c-3d4e-4f43-b95d-c7c4add4b47e,8c9b684c-3d4e-4f43-b95d-c7c4add4b47e,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8Line truncated
{6,1,1,752a2b16-0e30-4e5e-862f-69886236eacc,1,910b2002-0269-4a57-84f0-51543aadc280,"3.0.1.311","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5875,1,0,9fca02dd-4c3c-4c9a-875c-4f956b2428d0,9fca02dd-4c3c-4c9a-875c-4f956b2428d0,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8Line truncated
@@ -8,7 +8,7 @@
<name>ОграничиватьДоступНаУровнеЗаписейУниверсально</name>
<synonym>
<key>ru</key>
<value>Ограничивать доступ на уровне записей универсально</value>
<value>Ограничивать доступ на уровне записей универсально (ознакомительная версия)</value>
</synonym>
<type>
<types>Boolean</types>
@@ -1404,7 +1404,7 @@
ПараметрыЗадания.Вставить("ТипОперации", ОбработкаОбъект.ТипОперации);
ПараметрыЗадания.Вставить("КодАлгоритма", КодАлгоритма);
ПараметрыЗадания.Вставить("РежимВыполнения", ОбработкаОбъект.РежимВыполнения);
ПараметрыЗадания.Вставить("ВариантЗаписиОбъекта", ОбработкаОбъект.ВариантЗаписиОбъекта);
ПараметрыЗадания.Вставить("ВариантЗаписиОбъекта", ?(ОбработкаОбъект.ВариантЗаписиОбъекта = 1, "НеЗаписывать", "Записывать"));
ПараметрыЗадания.Вставить("ИспользуютсяДопРеквизиты", ОбработкаОбъект.ИспользуютсяДопРеквизиты);
ПараметрыЗадания.Вставить("ИспользуютсяДопСведения", ОбработкаОбъект.ИспользуютсяДопСведения);
ПараметрыЗадания.Вставить("ИзменяемыеРеквизиты", ИзменяемыеРеквизиты());
@@ -293,12 +293,16 @@
КонецЦикла;
КонецЕсли;
ЗаписыватьОбъект = (Параметры.ВариантЗаписиОбъекта <> "НеЗаписывать");
// Запись объекта.
Если ЗаписыватьОбъект Тогда
Если РежимЗаписи <> Неопределено Тогда
ИзменяемыйОбъект.Записать(РежимЗаписи);
Иначе
ИзменяемыйОбъект.Записать();
КонецЕсли;
КонецЕсли;
ЗаполнитьРезультатИзмененияДополнительныхСвойств(РезультатИзменения, Ссылка, ИзменяемыйОбъект, Изменения);
@@ -8782,8 +8782,7 @@
<parameters>
<name>Организация</name>
<valueType>
<types>String</types>
<stringQualifiers/>
<types>AnyRef</types>
</valueType>
</parameters>
<commandInterface>
@@ -1999,6 +1999,10 @@
ЗаполнитьЗначенияСвойств(ПараметрыПодключения, СохраненныеПараметры);
Если Не ПропускатьСтраницуТранспорта Тогда
ПараметрыПодключения.WSПароль = WSПароль;
КонецЕсли;
СообщениеПользователю = "";
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси(ПараметрыПодключения, , СообщениеПользователю);
@@ -2007,7 +2011,8 @@
Возврат;
КонецЕсли;
Если WSЗапомнитьПароль Тогда
Если Не ПропускатьСтраницуТранспорта
И WSЗапомнитьПароль Тогда
Попытка
@@ -2065,7 +2070,7 @@
ПараметрыМетода.Вставить("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы);
ПараметрыМетода.Вставить("ИмяВременногоКаталогаСообщенийОбмена", Объект.ИмяВременногоКаталогаСообщенийОбмена);
ПараметрыМетода.Вставить("ВидТранспортаСообщенийОбмена", Объект.ВидТранспортаСообщенийОбмена);
ПараметрыМетода.Вставить("WSПароль", WSПароль);
ПараметрыМетода.Вставить("WSПароль", Неопределено);
ПараметрыМетода.Вставить("ПолученоСообщениеДляСопоставленияДанных", ПолученоСообщениеДляСопоставленияДанных);
@@ -2128,7 +2133,7 @@
ПараметрыМетода.Вставить("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы);
ПараметрыМетода.Вставить("ИмяФайлаСообщенияОбмена", Объект.ИмяФайлаСообщенияОбмена);
ПараметрыМетода.Вставить("ИмяВременногоКаталогаСообщенийОбмена", Объект.ИмяВременногоКаталогаСообщенийОбмена);
ПараметрыМетода.Вставить("WSПароль", WSПароль);
ПараметрыМетода.Вставить("WSПароль", Неопределено);
ПараметрыЗадания = ПараметрыФоновогоЗадания();
ПараметрыЗадания.ВыполняемыйМетод = "Обработки.ПомощникИнтерактивногоОбменаДанными.ПолучитьСообщениеОбменаОтКорреспондентаВоВременныйКаталог";
@@ -2691,7 +2696,7 @@
ПараметрыМетода.Вставить("ДлительнаяОперация", ДлительнаяОперация);
ПараметрыМетода.Вставить("ИдентификаторОперации", ИдентификаторОперации);
ПараметрыМетода.Вставить("ИдентификаторФайла", ИдентификаторФайла);
ПараметрыМетода.Вставить("WSПароль", WSПароль);
ПараметрыМетода.Вставить("WSПароль", Неопределено);
ПараметрыМетода.Вставить("Отказ", Ложь);
ПараметрыЗадания = ПараметрыФоновогоЗадания();
@@ -2845,7 +2850,7 @@
РезультатВыполненияМетода = Новый Структура("Отказ", Истина);
Иначе
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РезультатВыполненияМетода,
"ДлительнаяОперация, ИдентификаторОперации, ИдентификаторФайла, WSПароль");
"ДлительнаяОперация, ИдентификаторОперации, ИдентификаторФайла");
КонецЕсли;
Если РезультатВыполненияМетода.Отказ
@@ -641,8 +641,21 @@
ПараметрыИнформационнойБазы = ВнешнееСоединение.ОбменДаннымиВнешнееСоединение.ПолучитьПараметрыИнформационнойБазы_2_0_1_6(
НастройкиПодключения.ИмяПланаОбмена, "", СообщениеОбОшибке);
ПараметрыКорреспондента = ОбщегоНазначения.ЗначениеИзСтрокиXML(ПараметрыИнформационнойБазы);
Если Не ПараметрыКорреспондента.ПланОбменаСуществует Тогда
РезультатПроверки.СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В корреспонденте не найден план обмена ""%1"".
|Убедитесь, что
| - выбран правильный вид приложения для настройки обмена;
| - корректно указано расположение программы, к которой выполняется подключение.'"),
НастройкиПодключения.ИмяПланаОбмена);
ПоместитьВоВременноеХранилище(РезультатПроверки, АдресРезультата);
Возврат;
КонецЕсли;
РезультатПроверки.ПараметрыКорреспондентаПолучены = Истина;
РезультатПроверки.ПараметрыКорреспондента = ОбщегоНазначения.ЗначениеИзСтрокиXML(ПараметрыИнформационнойБазы);
РезультатПроверки.ПараметрыКорреспондента = ПараметрыКорреспондента;
Иначе
@@ -724,8 +737,21 @@
СообщениеОбОшибке = "";
ПараметрыИнформационнойБазы = WSПрокси.GetIBParameters(НастройкиПодключения.ИмяПланаОбмена, "", СообщениеОбОшибке);
ПараметрыКорреспондента = СериализаторXDTO.ПрочитатьXDTO(ПараметрыИнформационнойБазы);
Если Не ПараметрыКорреспондента.ПланОбменаСуществует Тогда
РезультатПроверки.СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В корреспонденте не найден план обмена ""%1"".
|Убедитесь, что
| - выбран правильный вид приложения для настройки обмена;
| - указан правильный адрес приложения в Интернете.'"),
НастройкиПодключения.ИмяПланаОбмена);
ПоместитьВоВременноеХранилище(РезультатПроверки, АдресРезультата);
Возврат;
КонецЕсли;
РезультатПроверки.ПараметрыКорреспондентаПолучены = Истина;
РезультатПроверки.ПараметрыКорреспондента = СериализаторXDTO.ПрочитатьXDTO(ПараметрыИнформационнойБазы);
РезультатПроверки.ПараметрыКорреспондента = ПараметрыКорреспондента;
Иначе
@@ -1532,7 +1558,7 @@
// Общие данные узлов.
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ОбновитьПрефиксы(
НастройкиПодключения.УзелИнформационнойБазы,
НастройкиПодключения.ПрефиксИнформационнойБазыИсточника,
?(НастройкиПодключения.ИспользоватьПрефиксыДляНастройкиОбмена, НастройкиПодключения.ПрефиксИнформационнойБазыИсточника, ""),
НастройкиПодключения.ПрефиксИнформационнойБазыПриемника);
Если СоздаватьНовыйУзел
@@ -533,7 +533,7 @@
// Общие данные узлов.
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ОбновитьПрефиксы(
НовыйУзел.Ссылка,
ПрефиксИнформационнойБазыИсточника,
?(ИспользоватьПрефиксыДляНастройкиОбмена, ПрефиксИнформационнойБазыИсточника, ""),
ПрефиксИнформационнойБазыПриемника);
Если Не ОбменДаннымиСервер.НастройкаСинхронизацииЗавершена(НовыйУзел.Ссылка) Тогда
@@ -753,7 +753,7 @@
ДанныеВыбора = Новый СписокЗначений;
ИдентификаторНаселенногоПункта = РаботаСАдресамиКлиентСервер.ИдентификаторАдреса(НаселенныйПунктДетально, Ложь);
АдаптацияИдентификатораНаселенногоПункта(ИдентификаторНаселенногоПункта);
Если СтрДлина(Текст) < 2 Или Не ЗначениеЗаполнено(ИдентификаторНаселенногоПункта)Тогда
// Нет вариантов, список пуст, стандартную обработку не надо трогать.
Возврат;
@@ -35,7 +35,7 @@
Параметры.Свойство("СкрыватьНеактуальные", СкрыватьНеактуальные);
ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("КоличествоЗаписей", 3000);
ПараметрыПоиска.Вставить("КоличествоЗаписей", 7000);
Если НЕ ЗначениеЗаполнено(Родитель) И Уровень > 1 Тогда
// поиск адреса без родителя
@@ -419,7 +419,6 @@
&НаКлиенте
Процедура ОбработкаВыбора(Элемент, Знач ВыбранноеЗначение, СтандартнаяОбработка)
Если ПустаяСтрока(ВыбранноеЗначение) Тогда
ТекстПредупреждения = НСтр("ru = 'Выбор из списка недоступен, т.к в адресном классификаторе отсутствует информация о адресных сведениях.'");
ПоказатьПредупреждение(, ТекстПредупреждения );
@@ -438,7 +437,17 @@
СведенияОбАдресе = Новый Структура();
СведенияОбАдресе.Вставить("Муниципальный", РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса));
СведенияОбАдресе.Вставить("Идентификатор", ВыбранноеЗначение.Идентификатор);
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Если ВыбранноеЗначение.Отказ Или ПустаяСтрока(ВыбранноеЗначение.Идентификатор) Тогда
Возврат;
КонецЕсли;
Идентификатор = ВыбранноеЗначение.Идентификатор;
Иначе
Идентификатор = ВыбранноеЗначение;
КонецЕсли;
СведенияОбАдресе.Вставить("Идентификатор", Идентификатор);
СтандартнаяОбработка = Ложь;
НаселенныйПунктДетально = НаселенныйПунктДетальноПоИдентификатору(СведенияОбАдресе);
@@ -260,6 +260,35 @@
КонецЕсли;
ТекПараметры.Вставить("ПланОбмена", ПланОбмена);
// Для планов обмена РИБ из доступных к регистрации должны быть исключены
// объекты метаданных, не входящие в соответствующие подписки МРО
// (т.е. объекты, которые выгружаются только в составе начального образа).
Если ПланОбмена <> Неопределено
И ПланОбмена.РаспределеннаяИнформационнаяБаза
И КонфигурацияПоддерживаетБСП Тогда
СоставПодписокМРО = Новый Массив;
ПрефиксИмениПодписки = ПланОбмена.Имя + "Регистрация";
Для Каждого Подписка Из Метаданные.ПодпискиНаСобытия Цикл
Если Не СтрНачинаетсяС(Подписка.Имя, ПрефиксИмениПодписки) Тогда
Продолжить;
КонецЕсли;
Для Каждого ТипИсточника Из Подписка.Источник.Типы() Цикл
МетаданныеИсточника = Метаданные.НайтиПоТипу(ТипИсточника);
Если СоставПодписокМРО.Найти(МетаданныеИсточника) = Неопределено Тогда
СоставПодписокМРО.Добавить(МетаданныеИсточника);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТекПараметры.Вставить("СоставПодписокМРО", СоставПодписокМРО);
КонецЕсли;
Результат = Новый Структура();
Результат.Вставить("Дерево", Дерево);
Результат.Вставить("СтруктураИмен", ТекПараметры.СтруктураИмен);
@@ -1538,6 +1567,9 @@
ВсеСтроки = Параметры.Строки;
МетаПлан = Параметры.ПланОбмена;
СоставПодписокМРО = Неопределено;
ПроверятьСоставПодписокМРО = Параметры.Свойство("СоставПодписокМРО", СоставПодписокМРО);
СтрокаГруппа = ВсеСтроки.Добавить();
СтрокаГруппа.ИдентификаторСтроки = ТекущийНомерСтроки;
@@ -1582,6 +1614,12 @@
Если Элемент <> Неопределено И ПравоДоступа("Чтение", Мета) Тогда
Если КонфигурацияПоддерживаетБСП
И ПроверятьСоставПодписокМРО
И СоставПодписокМРО.Найти(Мета) = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Не ОбъектМетаданныхДоступенПоФункциональнымОпциям(Мета) Тогда
Продолжить;
КонецЕсли;
@@ -9,6 +9,9 @@
<value>Значение доступа с группами значений доступа объект</value>
</synonym>
<type>
<types>CatalogObject.УчетныеЗаписиЭлектроннойПочты</types>
<types>ChartOfCharacteristicTypesObject.ДополнительныеРеквизитыИСведения</types>
<types>CatalogObject.ДополнительныеОтчетыИОбработки</types>
<types>CatalogObject.ИдентификаторыОбъектовМетаданных</types>
</type>
</mdclass:DefinedType>
@@ -171,6 +171,44 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ТипЗначенияДоступа</name>
<id>56</id>
<title>
<key>ru</key>
<value>Тип значения доступа</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.ТипЗначенияДоступа</segments>
</dataPath>
<extendedTooltip>
<name>ТипЗначенияДоступаРасширеннаяПодсказка</name>
<id>58</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ТипЗначенияДоступаКонтекстноеМеню</name>
<id>57</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СписокГруппаЗначениеДоступаСКартинкой</name>
<id>22</id>
@@ -596,6 +634,7 @@
КОНЕЦ
ИНАЧЕ -1
КОНЕЦ КАК НомерКартинкиЗначенияДоступа,
ТипЗначения(ГруппыЗначенийДоступа.ЗначениеДоступа) КАК ТипЗначенияДоступа,
ГруппыЗначенийДоступа.ЗначениеДоступа,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(ГруппыЗначенийДоступа.ГруппаЗначенийДоступа) = ТИП(Справочник.Пользователи)
@@ -197,7 +197,7 @@
|ИЗ
| &ТекущаяТаблица КАК ТекущаяТаблица";
Для каждого ИмяТаблицы Из ЗначенияДоступаСГруппами.ИменаТаблиц Цикл
Для Каждого ИмяТаблицы Из ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления Цикл
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ТекущаяТаблица", ИмяТаблицы);
Выборка = Запрос.Выполнить().Выбрать();
@@ -232,9 +232,9 @@
ТипыЗначенийСИзменениями = Новый Соответствие;
Для каждого ИмяТаблицы Из ЗначенияДоступаСГруппами.ИменаТаблиц Цикл
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяТаблицы);
ОбновитьГруппыЗначенияДоступа(МенеджерОбъекта.ПустаяСсылка(), Неопределено, ТипыЗначенийСИзменениями);
Для Каждого ИмяТаблицы Из ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления Цикл
ПустаяСсылка = ПредопределенноеЗначение(ИмяТаблицы + ".ПустаяСсылка");
ОбновитьГруппыЗначенияДоступа(ПустаяСсылка, Неопределено, ТипыЗначенийСИзменениями);
КонецЦикла;
УправлениеДоступомСлужебный.ЗапланироватьОбновлениеЗависимыхСписковПоЗначениямСГруппами(
@@ -242,20 +242,37 @@
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы.
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
// Регистрация данных не требуется.
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ОбновитьДанныеРегистра();
Параметры.ОбработкаЗавершена = Истина;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры и функции.
// Удаляет строки, которых не должно быть, если они добавлены каким-либо способом.
Функция УдалитьЛишниеЗаписи(ЕстьИзменения = Неопределено)
Процедура УдалитьЛишниеЗаписи(ЕстьИзменения = Неопределено)
СвойстваВидовДоступа = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа();
ТипыГруппИЗначенийДоступа = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ТипыГруппЗначений;
ТипыГруппЗначений = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ТипыГруппЗначенийДляОбновления;
ТаблицаТиповГруппИЗначений = Новый ТаблицаЗначений;
ТаблицаТиповГруппИЗначений.Колонки.Добавить("ТипЗначений", Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип);
ТаблицаТиповГруппИЗначений.Колонки.Добавить("ТипГруппЗначений", Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип);
Для каждого КлючИЗначение Из ТипыГруппИЗначенийДоступа Цикл
Для каждого КлючИЗначение Из ТипыГруппЗначений Цикл
Если ТипЗнч(КлючИЗначение.Ключ) = Тип("Тип") Тогда
Продолжить;
КонецЕсли;
@@ -487,7 +504,7 @@
КонецЦикла;
КонецЕсли;
КонецФункции
КонецПроцедуры
// Обновляет группы значения доступа в РегистрСведений.ГруппыЗначенийДоступа.
//
@@ -508,7 +525,7 @@
СвойстваВидовДоступа = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа();
ЗначенияДоступаСГруппами = СвойстваВидовДоступа.ЗначенияДоступаСГруппами;
СвойстваВидаДоступа = ЗначенияДоступаСГруппами.ПоТипам.Получить(ТипЗначенияДоступа);
СвойстваВидаДоступа = ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Получить(ТипЗначенияДоступа);
ЗаголовокОшибки =
НСтр("ru = 'Ошибка при обновлении групп значений доступа.'")
@@ -522,7 +539,7 @@
Строка(ТипЗначенияДоступа));
КонецЕсли;
Если ЗначенияДоступаСГруппами.ПоТипамСсылок.Получить(ТипЗначенияДоступа) = Неопределено Тогда
Если ЗначенияДоступаСГруппами.ПоТипамСсылокДляОбновления.Получить(ТипЗначенияДоступа) = Неопределено Тогда
Ссылка = ПользователиСлужебный.СсылкаОбъекта(ЗначениеДоступа);
Объект = ЗначениеДоступа;
Иначе
@@ -533,7 +550,10 @@
// Подготовка старых значений полей.
ИмяРеквизита = "ГруппаДоступа";
ИмяТабличнойЧасти = "ГруппыДоступа";
Если СвойстваВидаДоступа.НесколькоГруппЗначений Тогда
Если СвойстваВидаДоступа.ТипГруппЗначений = Тип("Неопределено") Тогда
ПолеДляЗапроса = "Ссылка";
ИначеЕсли СвойстваВидаДоступа.НесколькоГруппЗначений Тогда
ПолеДляЗапроса = ИмяТабличнойЧасти;
Иначе
ПолеДляЗапроса = ИмяРеквизита;
@@ -545,7 +565,17 @@
Ошибка = ИнформацияОбОшибке();
МетаданныеТипа = Метаданные.НайтиПоТипу(ТипЗначенияДоступа);
Если СвойстваВидаДоступа.НесколькоГруппЗначений Тогда
Если СвойстваВидаДоступа.ТипГруппЗначений = Тип("Неопределено") Тогда
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'У значения доступа ""%1""
|типа ""%2""
|не удалось прочитать реквизит Ссылка по причине:
|%3'"),
Строка(ЗначениеДоступа),
Строка(ТипЗначенияДоступа),
КраткоеПредставлениеОшибки(Ошибка));
ИначеЕсли СвойстваВидаДоступа.НесколькоГруппЗначений Тогда
ТабличнаяЧастьМетаданные = МетаданныеТипа.ТабличныеЧасти.Найти("ГруппыДоступа");
Если ТабличнаяЧастьМетаданные = Неопределено
@@ -561,7 +591,7 @@
НСтр("ru = 'У значения доступа ""%1""
|типа ""%2""
|не удалось прочитать табличную часть ГруппаДоступа
|с реквизитом ГруппаДоступа по ошибке:
|с реквизитом ГруппаДоступа по причине:
|%3'"),
Строка(ЗначениеДоступа),
Строка(ТипЗначенияДоступа),
@@ -577,7 +607,7 @@
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'У значения доступа ""%1""
|типа ""%2""
|не удалось прочитать реквизит ГруппаДоступа по ошибке:
|не удалось прочитать реквизит ГруппаДоступа по причине:
|%3'"),
Строка(ЗначениеДоступа),
Строка(ТипЗначенияДоступа),
@@ -589,9 +619,12 @@
// Проверка изменения объекта.
ТребуетсяОбновление = Ложь;
Если Объект <> Неопределено Тогда
Если Объект.ЭтоНовый() Тогда
ТребуетсяОбновление = Истина;
Иначе
ИначеЕсли СвойстваВидаДоступа.ТипГруппЗначений <> Тип("Неопределено") Тогда
Если СвойстваВидаДоступа.НесколькоГруппЗначений Тогда
Значение = Объект[ИмяТабличнойЧасти].Выгрузить();
Значение.Сортировать(ИмяРеквизита);
@@ -617,7 +650,9 @@
Возврат;
КонецЕсли;
Если Объект = Неопределено Или Не Объект.ЭтоНовый() Тогда
Если СвойстваВидаДоступа.ТипГруппЗначений <> Тип("Неопределено")
И (Объект = Неопределено Или Не Объект.ЭтоНовый()) Тогда
ТипыЗначенийСИзменениями.Вставить(ТипЗначенияДоступа, Истина);
КонецЕсли;
@@ -626,12 +661,17 @@
Если УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей() Тогда
// Добавление групп значений.
Если СвойстваВидаДоступа.ТипГруппЗначений = Тип("Неопределено") Тогда
Запись = НовыеЗаписи.Добавить();
Запись.ЗначениеДоступа = Ссылка;
Запись.ГруппаЗначенийДоступа = Ссылка;
Иначе
СвойстваВидовДоступа = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа();
ТипыГруппЗначений = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ТипыГруппЗначений;
ТипыГруппЗначений = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ТипыГруппЗначенийДляОбновления;
ПустаяСсылкаГруппыЗначенийДоступа = ТипыГруппЗначений.Получить(ТипЗнч(Ссылка));
// Добавление групп значений.
Если СвойстваВидаДоступа.НесколькоГруппЗначений Тогда
Если НовыеЗначения[ИмяТабличнойЧасти] = Неопределено Тогда
ГруппыЗначенийДоступа = Новый ТаблицаЗначений;
@@ -660,6 +700,7 @@
Запись.ГруппаЗначенийДоступа = ПустаяСсылкаГруппыЗначенийДоступа;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -267,10 +267,6 @@
Если ЕстьТекущиеИзменения
И УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда
// Сброс кэша.
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(
"УправлениеДоступом.ЗначенияГруппДоступаВерсия", Неопределено, Истина);
// Планирование обновления доступа.
ПустыеСсылкиТиповГруппИЗначений = УправлениеДоступомСлужебныйПовтИсп.ПустыеСсылкиТиповГруппИЗначений();
СоставИзменений = Новый ТаблицаЗначений;
@@ -535,10 +531,6 @@
Если ЕстьТекущиеИзменения
И УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда
// Сброс кэша.
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(
"УправлениеДоступом.ЗначенияГруппДоступаВерсия", Неопределено, Истина);
// Планирование обновления доступа.
СоставИзменений = Данные.ИзмененияСоставаСтрок.Скопировать(, "ГруппаДоступа, ТипЗначенийДоступа");
СоставИзменений.Свернуть("ГруппаДоступа, ТипЗначенийДоступа");
@@ -355,8 +355,11 @@
НоваяСтрока.ВладелецФайла = ТипВладельца;
НоваяСтрока.ТипВладельцаФайла = Справочник;
МетаданныеВладельца = Метаданные.НайтиПоТипу(ТипВладельца);
Если МетаданныеСправочники.Найти(МетаданныеВладельца.Имя) <> Неопределено И МетаданныеВладельца.Иерархический Тогда
Если Метаданные.Справочники.Содержит(МетаданныеВладельца)
И МетаданныеВладельца.Иерархический Тогда
НоваяСтрока.ВозможностьДетализации = Истина;
КонецЕсли;
Если Не СтрЗаканчиваетсяНа(Справочник.Имя, "ПрисоединенныеФайлы") Тогда
НоваяСтрока.ЭтоФайл = Истина;
@@ -35,8 +35,8 @@
Элементы.ЗабылиПароль.Видимость = Не ПустаяСтрока(АдресДляВосстановленияПароляУчетнойЗаписи);
Если ЗначениеЗаполнено(Запись.Узел) Тогда
Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Запись.Узел, "WSПароль", Истина);
Если ЗначениеЗаполнено(Запись.Корреспондент) Тогда
Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Запись.Корреспондент, "WSПароль", Истина);
WSПароль = ?(ЗначениеЗаполнено(Пароль), ЭтотОбъект.УникальныйИдентификатор, "");
КонецЕсли;
@@ -116,16 +116,16 @@
Если WSПарольИзменен Тогда
ПараметрыПодключения.WSПароль = WSПароль;
Иначе
ПараметрыПодключения.WSПароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Запись.Узел, "WSПароль", Истина);
ПараметрыПодключения.WSПароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Запись.Корреспондент, "WSПароль", Истина);
КонецЕсли;
СообщениеПользователю = "";
Если Не ОбменДаннымиСервер.ЕстьПодключениеККорреспонденту(Запись.Узел, ПараметрыПодключения, СообщениеПользователю) Тогда
Если Не ОбменДаннымиСервер.ЕстьПодключениеККорреспонденту(Запись.Корреспондент, ПараметрыПодключения, СообщениеПользователю) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю,, "WSПароль",, Отказ);
Иначе
// Проверка подключения прошла успешно, записываем пароль, если он был изменен
Если WSПарольИзменен Тогда
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Запись.Узел, WSПароль, "WSПароль");
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Запись.Корреспондент, WSПароль, "WSПароль");
КонецЕсли;
КонецЕсли;
@@ -104,6 +104,8 @@
Возврат НСтр("ru = 'Выберите объект.'");
КонецЕсли;
УправлениеДоступомСлужебный.ОчиститьКэшЗначенийГруппДоступаДляРасчетаПрав();
ПолноеИмя = ОбъектОбновленияДоступа.Метаданные().ПолноеИмя();
ИдентификаторТранзакции = Новый УникальныйИдентификатор;
@@ -235,6 +237,7 @@
Списки = Неопределено;
КонецЕсли;
УправлениеДоступомСлужебный.ОчиститьКэшЗначенийГруппДоступаДляРасчетаПрав();
УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступа(Списки);
УправлениеДоступомСлужебный.УстановитьОбновлениеДоступа(Ложь);
@@ -1,3 +1,10 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2018, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
@@ -22,7 +29,7 @@
Настройки.РазрешеноВыбиратьИНастраиватьВариантыБезСохранения = Истина;
Настройки.СкрытьКомандыРассылки = Истина;
Настройки.ПараметрыРасположенияЭлементовУправления = ОпределитьРасположениеЭлементовУправления();
Настройки.ПараметрыРасположенияЭлементовУправления = ПараметрыРасположенияЭлементовУправления();
Настройки.События.ПриСозданииНаСервере = Истина;
Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
@@ -148,7 +155,7 @@
СвойстваНастройки.ЗначенияДляВыбора.Очистить();
СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями = Истина;
ГлобальныеНастройки = ПерехватитьГлобальныеНастройки();
ГлобальныеНастройки = ГлобальныеНастройки();
Для Каждого ГлобальнаяНастройка Из ГлобальныеНастройки Цикл
ЗначениеДляВыбора = "Регистр" + ГлобальнаяНастройка.ВидРегистра + "_" + ГлобальнаяНастройка.ИмяРегистра;
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Регистр %1 %2'"),
@@ -225,10 +232,8 @@
НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки();
СкрытьНеактуальныеГруппировки(НастройкиКД, ДокументОтбор);
ВосстановитьОтборПоГруппировкамРегистров(НастройкиКД);
ПользовательскоеОформление(СхемаКомпоновкиДанных, НастройкиКД);
НастроитьУсловноеОформление(СхемаКомпоновкиДанных, НастройкиКД);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКД, ДанныеРасшифровки);
@@ -567,7 +572,7 @@
#КонецОбласти
#Область ФормированиеНаборовДанных_Горизонталь
#Область ГоризонтальныйВариант
Функция ПодготовитьГоризонтальныйВариант(ДокументОтбор, НастройкиКД)
@@ -586,7 +591,7 @@
НаборыДанных = НаборыДанныхДляОтчета(ДокументОтбор, ДвиженияДокумента, ТаблицаРегистров);
НаборыДанныхСКД = СхемаКомпоновкиДанных.НаборыДанных["Main"].Элементы;
ГлобальныеНастройки = ПерехватитьГлобальныеНастройки();
ГлобальныеНастройки = ГлобальныеНастройки();
ИндексНабора = 0;
Для Каждого НаборДанных Из НаборыДанных Цикл
@@ -608,29 +613,28 @@
КонецЕсли;
НастроитьСтруктурыНабора_Горизонталь(НастройкиКД, НаборДанных, НаборДанныхСКД);
ПодготовитьГоризонтальныйВариантНабораДанных(НастройкиКД, НаборДанных, НаборДанныхСКД);
КонецЦикла;
СкрытьПараметрыИОтборы(НастройкиКД);
Возврат СхемаКомпоновкиДанных;
КонецФункции
Процедура НастроитьСтруктурыНабора_Горизонталь(НастройкиКД, ЭлементДанных, НаборДанныхКД)
Процедура ПодготовитьГоризонтальныйВариантНабораДанных(НастройкиКД, ЭлементДанных, НаборДанныхКД)
Если ЭлементДанных.ВидРегистра = "Накопления" Или ЭлементДанных.ВидРегистра = "Сведений" Тогда
НастроитьСтруктурыРегистровНакопленияИСведений_Горизонталь(НастройкиКД, НаборДанныхКД, ЭлементДанных);
ПодготовитьГоризонтальныйВариантРегистровНакопленияИСведений_Горизонталь(НастройкиКД, НаборДанныхКД, ЭлементДанных);
ИначеЕсли ЭлементДанных.ВидРегистра = "Бухгалтерии" Тогда
НастроитьСтруктурыРегистровБухгалтерии(НастройкиКД, НаборДанныхКД, ЭлементДанных);
ПодготовитьГоризонтальныйВариантРегистровБухгалтерии(НастройкиКД, НаборДанныхКД, ЭлементДанных);
ИначеЕсли ЭлементДанных.ВидРегистра = "Расчета" Тогда
НастроитьСтруктурыРегистровРасчета_Горизонталь(НастройкиКД, НаборДанныхКД, ЭлементДанных);
ПодготовитьГоризонтальныйВариантРегистровРасчета(НастройкиКД, НаборДанныхКД, ЭлементДанных);
КонецЕсли;
ОформитьОтчет(НастройкиКД);
КонецПроцедуры
Процедура НастроитьСтруктурыРегистровНакопленияИСведений_Горизонталь(НастройкиКД, НаборДанныхКД, ЭлементДанных)
Процедура ПодготовитьГоризонтальныйВариантРегистровНакопленияИСведений_Горизонталь(НастройкиКД, НаборДанныхКД, ЭлементДанных)
ВидРегистра = ЭлементДанных.ВидРегистра;
ПредставлениеВидаРегистра = ЭлементДанных.ПредставлениеВидаРегистра;
@@ -698,7 +702,7 @@
КонецПроцедуры
Процедура НастроитьСтруктурыРегистровРасчета_Горизонталь(НастройкиКД, НаборДанныхКД, ЭлементДанных)
Процедура ПодготовитьГоризонтальныйВариантРегистровРасчета(НастройкиКД, НаборДанныхКД, ЭлементДанных)
ВидРегистра = "Расчета";
ПредставлениеВидаРегистра = НСтр("ru = 'Расчета'");
@@ -768,7 +772,7 @@
#КонецОбласти
#Область ФормированиеНаборовДанных_Вертикаль
#Область ВертикальныйВариант
Функция ПодготовитьВертикальныйВариант(ДокументОтбор, НастройкиКД, ДополнительнаяНумерация = Ложь)
@@ -787,7 +791,7 @@
НаборыДанныхСКД = СхемаКомпоновкиДанных.НаборыДанных["Main"].Элементы;
ГлобальныеНастройки = ПерехватитьГлобальныеНастройки();
ГлобальныеНастройки = ГлобальныеНастройки();
ИндексНабора = 0;
Для Каждого НаборДанных Из НаборыДанных Цикл
@@ -809,35 +813,34 @@
КонецЕсли;
НастройкаСтруктурыНабора_Вертикаль(НастройкиКД, НаборДанных, НаборДанныхСКД);
ПодготовитьВертикальныйВариантНабораДанных(НастройкиКД, НаборДанных, НаборДанныхСКД);
КонецЦикла;
СкрытьПараметрыИОтборы(НастройкиКД);
Возврат СхемаКомпоновкиДанных;
КонецФункции
Процедура НастройкаСтруктурыНабора_Вертикаль(НастройкиКД, НаборДанных, НаборДанныхКД)
Процедура ПодготовитьВертикальныйВариантНабораДанных(НастройкиКД, НаборДанных, НаборДанныхКД)
Если НаборДанных.ВидРегистра = "Накопления" Или НаборДанных.ВидРегистра = "Сведений" Тогда
НастройкаСтруктурыРегистровНакопленияИСведений_Вертикаль(НастройкиКД, НаборДанныхКД, НаборДанных);
ПодготовитьВертикальныйВариантРегистровНакопленияИСведений(НастройкиКД, НаборДанныхКД, НаборДанных);
ИначеЕсли НаборДанных.ВидРегистра = "Бухгалтерии" Тогда
НастроитьСтруктурыРегистровБухгалтерии(НастройкиКД, НаборДанныхКД, НаборДанных);
ПодготовитьГоризонтальныйВариантРегистровБухгалтерии(НастройкиКД, НаборДанныхКД, НаборДанных);
ИначеЕсли НаборДанных.ВидРегистра = "Расчета" Тогда
НастройкаСтруктурыРегистровРасчета_Вертикаль(НастройкиКД, НаборДанныхКД, НаборДанных);
ПодготовитьВертикальныйВариантРегистровРасчета(НастройкиКД, НаборДанныхКД, НаборДанных);
КонецЕсли;
ОформитьОтчет(НастройкиКД);
КонецПроцедуры
Процедура НастройкаСтруктурыРегистровНакопленияИСведений_Вертикаль(НастройкиКД, НаборДанныхКД, ЭлементДанных)
Процедура ПодготовитьВертикальныйВариантРегистровНакопленияИСведений(НастройкиКД, НаборДанныхКД, ЭлементДанных)
ВидРегистра = ЭлементДанных.ВидРегистра;
ПредставлениеВидаРегистра = ЭлементДанных.ПредставлениеВидаРегистра;
@@ -916,7 +919,7 @@
КонецПроцедуры
Процедура НастройкаСтруктурыРегистровРасчета_Вертикаль(НастройкиКД, НаборДанныхКД, ЭлементДанных)
Процедура ПодготовитьВертикальныйВариантРегистровРасчета(НастройкиКД, НаборДанныхКД, ЭлементДанных)
ВидРегистра = "Расчета";
ПредставлениеВидаРегистра = НСтр("ru = 'Расчета'");
@@ -1001,7 +1004,7 @@
#Область ФормированиеСтруктурыОтчета
Процедура НастроитьСтруктурыРегистровБухгалтерии(НастройкиКД, НаборДанныхКД, ЭлементДанных)
Процедура ПодготовитьГоризонтальныйВариантРегистровБухгалтерии(НастройкиКД, НаборДанныхКД, ЭлементДанных)
ВидРегистра = "Бухгалтерии";
ПредставлениеВидаРегистра = НСтр("ru = 'Бухгалтерии'");
@@ -1248,9 +1251,9 @@
#Область Прочее
Процедура ДополнительнаяОбщаяНастройкаГруппировки(Группировка, СтруктураНастроек)
Процедура УстановитьНастройки(Группировка, Настройки)
Для Каждого ЭлементНастройки Из СтруктураНастроек Цикл
Для Каждого ЭлементНастройки Из Настройки Цикл
Настройка = Группировка.ПараметрыВывода.Элементы.Найти(ЭлементНастройки.Ключ);
Если Настройка <> Неопределено Тогда
@@ -1272,7 +1275,7 @@
ГруппировкаПоРегистру.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ГруппировкаПоРегистру.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
ОформитьГруппировкуПоРегистру(ГруппировкаПоРегистру);
СкрытьОтборВТаблицеДвижений(ГруппировкаПоРегистру);
ПолеГруппировкиРегистр = ГруппировкаПоРегистру.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
@@ -1396,51 +1399,43 @@
Процедура ОформитьРезультат(ДокументРезультат, ДокументРегистратор)
ТаблицаГлобальныхНастроек = ПерехватитьГлобальныеНастройки();
ТаблицаГлобальныхНастроек.Колонки.Добавить("ТаблицаПримечаний", Новый ОписаниеТипов("ТаблицаЗначений"));
ГлобальныеНастройки = ГлобальныеНастройки();
ГлобальныеНастройки.Колонки.Добавить("ТаблицаПримечаний", Новый ОписаниеТипов("ТаблицаЗначений"));
НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки();
Для Каждого Строка Из ТаблицаГлобальныхНастроек Цикл
Строка.ТаблицаПримечаний = ФормированиеСтрокиПримечания("Регистр" + Строка.ВидРегистра + "_" + Строка.ИмяРегистра, НастройкиКД);
Для Каждого Строка Из ГлобальныеНастройки Цикл
Строка.ТаблицаПримечаний = ТаблицаПримечаний("Регистр" + Строка.ВидРегистра + "_" + Строка.ИмяРегистра, НастройкиКД);
КонецЦикла;
ШиринаТаблицы = ДокументРезультат.ШиринаТаблицы;
ВысотаТаблицы = ДокументРезультат.ВысотаТаблицы;
ТаблицаПримечаний = Новый ТаблицаЗначений;
Для НомерСтроки = 1 По ДокументРезультат.ВысотаТаблицы Цикл
Для ИндексСтрок = 1 По ВысотаТаблицы Цикл
Для НомерКолонки = 1 По 2 Цикл // поиск заголовка таблицы в первых двух колонках
Для ИндексКолонок = 1 По ШиринаТаблицы Цикл
ИмяОбласти = "R" + Формат(ИндексСтрок, "ЧГ=0") + "C" + Формат(ИндексКолонок, "ЧГ=0");
ИмяОбласти = "R" + Формат(НомерСтроки, "ЧГ=0") + "C" + Формат(НомерКолонки, "ЧГ=0");
Область = ДокументРезультат.Область(ИмяОбласти);
СтрокаГлобальныхНастроек = НайтиНадписьРегистраНаДокументе(ТаблицаГлобальныхНастроек, Область.Текст);
Если СтрокаГлобальныхНастроек <> Неопределено Тогда
НастройкаРегистра = НайтиЗаголовокТаблицы(ГлобальныеНастройки, Область.Текст);
Если НастройкаРегистра <> Неопределено Тогда
СтруктураРасшифровки = Новый Структура;
СтруктураРасшифровки.Вставить("ВидРегистра", СтрокаГлобальныхНастроек.ПредставлениеВидаРегистра);
СтруктураРасшифровки.Вставить("ИмяРегистра", СтрокаГлобальныхНастроек.ИмяРегистра);
СтруктураРасшифровки.Вставить("Регистратор", ДокументРегистратор);
СтруктураРасшифровки.Вставить("ИмяПоляРегистратора", СтрокаГлобальныхНастроек.ИмяПоляРегистратора);
Область.Расшифровка = СтруктураРасшифровки;
ОтчетыСервер.ВывестиГиперссылку(Область, СтруктураРасшифровки, Область.Текст);
ТаблицаПримечаний = СтрокаГлобальныхНастроек.ТаблицаПримечаний;
РасшифровкаЗаголовка = Новый Структура;
РасшифровкаЗаголовка.Вставить("ВидРегистра", НастройкаРегистра.ПредставлениеВидаРегистра);
РасшифровкаЗаголовка.Вставить("ИмяРегистра", НастройкаРегистра.ИмяРегистра);
РасшифровкаЗаголовка.Вставить("Регистратор", ДокументРегистратор);
РасшифровкаЗаголовка.Вставить("ИмяПоляРегистратора", НастройкаРегистра.ИмяПоляРегистратора);
Область.Расшифровка = РасшифровкаЗаголовка;
ОтчетыСервер.ВывестиГиперссылку(Область, РасшифровкаЗаголовка, Область.Текст);
ТаблицаПримечаний = НастройкаРегистра.ТаблицаПримечаний;
ГраницаПримечаний = 1;
Прервать;
КонецЕсли;
КонецЦикла;
ИмяОбластиНумератора = "R" + Формат(ИндексСтрок, "ЧГ=0") + "C1";
ИмяОбластиНумератора = "R" + Формат(НомерСтроки, "ЧГ=0") + "C1";
ОбластьНумератора = ДокументРезультат.Область(ИмяОбластиНумератора);
Если Не ЭтоЧисло(ОбластьНумератора.Текст) Тогда
@@ -1449,8 +1444,9 @@
ОбластьНумератора.Текст = "№";
ОбластьНумератора.ШиринаКолонки = 5;
КонецЕсли;
Продолжить;
Иначе
КонецЕсли;
ОбластьНумератора.Отступ = 0;
ОбластьНумератора.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
@@ -1472,8 +1468,6 @@
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -1482,24 +1476,24 @@
#Область РазделОформления
Процедура ОформитьОтчет(НастройкиКД)
Процедура СкрытьПараметрыИОтборы(НастройкиКД)
СтруктураНастроек = Новый Структура;
СтруктураНастроек.Вставить("ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
СтруктураНастроек.Вставить("ВыводитьПараметрыДанных", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
ДополнительнаяОбщаяНастройкаГруппировки(НастройкиКД, СтруктураНастроек);
Настройки = Новый Структура;
Настройки.Вставить("ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
Настройки.Вставить("ВыводитьПараметрыДанных", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
УстановитьНастройки(НастройкиКД, Настройки);
КонецПроцедуры
Процедура ОформитьГруппировкуПоРегистру(ГруппировкаПоРегистру)
Процедура СкрытьОтборВТаблицеДвижений(ГруппировкаПоРегистру)
СтруктураНастроек = Новый Структура;
СтруктураНастроек.Вставить("ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
ДополнительнаяОбщаяНастройкаГруппировки(ГруппировкаПоРегистру, СтруктураНастроек);
Настройки = Новый Структура;
Настройки.Вставить("ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
УстановитьНастройки(ГруппировкаПоРегистру, Настройки);
КонецПроцедуры
Процедура ПользовательскоеОформление(СхемаКД, НастройкиКД)
Процедура НастроитьУсловноеОформление(СхемаКД, НастройкиКД)
УсловноеОформление = НастройкиКД.УсловноеОформление.Элементы;
ОформитьОтрицательныеЧисла(УсловноеОформление);
@@ -1518,55 +1512,46 @@
Процедура ОформитьОтрицательныеЧисла(УсловноеОформление)
ЕдиницаУсловногоОформления = УсловноеОформление.Добавить();
ОтборУсловногоОформления = ЕдиницаУсловногоОформления.Отбор;
ЭлементОтбора = ОтборУсловногоОформления.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элемент = УсловноеОформление.Добавить();
ЭлементОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ОтрицательноеКрасным");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементОтбора.Использование = Истина;
ЕдиницаУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ВыделятьОтрицательные", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ВыделятьОтрицательные", Истина);
ЕдиницаУсловногоОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЕдиницаУсловногоОформления.Использование = Истина;
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
Элемент.Использование = Ложь;
КонецПроцедуры
Процедура ОформитьВидДвижения(УсловноеОформление, ВидДвижения)
ЦелевоеПоле = Новый ПолеКомпоновкиДанных("ВидДвижения");
ПолеВидДвижения = Новый ПолеКомпоновкиДанных("ВидДвижения");
ЕдиницаУсловногоОформления = УсловноеОформление.Добавить();
ОтборУсловногоОформления = ЕдиницаУсловногоОформления.Отбор;
ЭлементОтбора = ОтборУсловногоОформления.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элемент = УсловноеОформление.Добавить();
ЭлементОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ВыделятьВидДвиженияНакопления");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора = ОтборУсловногоОформления.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = ЦелевоеПоле;
ЭлементОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = ПолеВидДвижения;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ВидДвижения;
ЭлементОтбора.Использование = Истина;
ОформляемыеПоля = ЕдиницаУсловногоОформления.Поля.Элементы;
ОформляемыеПоля = Элемент.Поля.Элементы;
ОформляемоеПоле = ОформляемыеПоля.Добавить();
ОформляемоеПоле.Поле = ЦелевоеПоле;
ОформляемоеПоле.Использование = Истина;
ОформляемоеПоле.Поле = ПолеВидДвижения;
ЕдиницаУсловногоОформления.ИспользоватьВЗаголовке = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
ЕдиницаУсловногоОформления.ИспользоватьВЗаголовкеПолей = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
Элемент.ИспользоватьВЗаголовке = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
Элемент.ИспользоватьВЗаголовкеПолей = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
ЕдиницаУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста",
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста",
?(ВидДвижения = ВидДвиженияНакопления.Приход, ЦветаСтиля.РезультатУспехЦвет, ЦветаСтиля.ЦветОтрицательногоЧисла));
ЕдиницаУсловногоОформления.Использование = Истина;
Элемент.Использование = Ложь;
КонецПроцедуры
@@ -1593,13 +1578,12 @@
#Область ФормированиеПримечаний
Функция ФормированиеСтрокиПримечания(ИмяРегистра, НастройкиКД)
Функция ТаблицаПримечаний(ИмяРегистра, НастройкиКД)
ЭтажиСтроки = Новый ТаблицаЗначений;
КолонкиЭтажей = ЭтажиСтроки.Колонки;
КолонкиЭтажей.Добавить("Этаж", Новый ОписаниеТипов("Строка"));
КолонкиЭтажей.Добавить("Примечание", Новый ОписаниеТипов("Строка"));
КолонкиЭтажей.Добавить("Этажность", Новый ОписаниеТипов("Число"));
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Этаж", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Примечание", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Этажность", Новый ОписаниеТипов("Число"));
МассивВыбранныхПолей = Новый Массив;
СтруктураГруппировок = НастройкиКД.Структура;
@@ -1641,16 +1625,14 @@
КонецЕсли;
КонецЦикла;
СтруктураЭтажа = Новый Структура;
СтруктураЭтажа.Вставить("Этаж", Формат(Индекс + 1, "ЧГ=0"));
СтруктураЭтажа.Вставить("Примечание", СтрокаПримечания);
СтруктураЭтажа.Вставить("Этажность", ЭтажностьСтроки);
ЗаполнитьЗначенияСвойств(ЭтажиСтроки.Добавить(), СтруктураЭтажа);
Примечание = Результат.Добавить();
Примечание.Этаж = Формат(Индекс + 1, "ЧГ=0");
Примечание.Примечание = СтрокаПримечания;
Примечание.Этажность = ЭтажностьСтроки;
КонецЦикла;
Возврат ЭтажиСтроки;
Возврат Результат;
КонецФункции
@@ -1727,21 +1709,33 @@
Результат = Новый Соответствие;
Для Каждого ОбъектМетаданныхРегистр Из Движения Цикл
Если Не ПравоДоступа("Просмотр", ОбъектМетаданныхРегистр) Тогда
Продолжить;
КонецЕсли;
Результат.Вставить(ОбъектМетаданныхРегистр, "Регистратор");
КонецЦикла;
ОтчетОДвиженияхДокументаПереопределяемый.ПриОпределенииРегистровСДвижениями(Регистратор, Результат);
ДополнительныеРегистры = Новый Соответствие;
ОтчетОДвиженияхДокументаПереопределяемый.ПриОпределенииРегистровСДвижениями(Регистратор, ДополнительныеРегистры);
Для Каждого ДополнительныйРегистр Из ДополнительныеРегистры Цикл
Если Не ПравоДоступа("Просмотр", ДополнительныйРегистр.Ключ) Тогда
Продолжить;
КонецЕсли;
Результат.Вставить(ДополнительныйРегистр.Ключ, ДополнительныйРегистр.Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура УстановитьГлобальныеНастройки(Регистратор, МассивИспользуемыхРегистров)
Процедура УстановитьГлобальныеНастройки(Регистратор, ДвиженияДокумента)
ГлобальныеНастройки = Новый Массив;
КоличествоЗаписей = КоличествоЗаписейПоРегистратору(Регистратор, МассивИспользуемыхРегистров);
КоличествоЗаписей = КоличествоЗаписейПоРегистратору(Регистратор, ДвиженияДокумента);
Для Каждого ИспользуемыйРегистр Из МассивИспользуемыхРегистров Цикл
Для Каждого ИспользуемыйРегистр Из ДвиженияДокумента Цикл
ИспользуемыйРегистр = ИспользуемыйРегистр.Ключ;
ИмяРегистра = ИспользуемыйРегистр.Имя;
@@ -1776,9 +1770,46 @@
КонецПроцедуры
Функция ГлобальныеНастройки()
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("ИмяРегистра",
Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(128)));
Результат.Колонки.Добавить("ИмяПоляРегистратора",
Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(128)));
Результат.Колонки.Добавить("ПредставлениеРегистра",
Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(128)));
Результат.Колонки.Добавить("ВидРегистра",
Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(32)));
Результат.Колонки.Добавить("ПредставлениеВидаРегистра",
Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(32)));
Результат.Колонки.Добавить("КоличествоЗаписей", Новый ОписаниеТипов("Число"));
Результат.Колонки.Добавить("ЗаголовокТаблицы",
Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(256)));
ГлобальныеНастройки = КомпоновщикНастроек.Настройки.ДополнительныеСвойства.ГлобальныеНастройки;
Для Каждого Настройка Из ГлобальныеНастройки Цикл
НоваяСтрока = Результат.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Настройка);
ЗаголовокТаблицы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Регистр %1 ""%2""'"),
СокрЛП(НРег(Настройка.ПредставлениеВидаРегистра)), Настройка.ПредставлениеРегистра);
НоваяСтрока.ЗаголовокТаблицы = ВРег(ЗаголовокТаблицы);
КонецЦикла;
Результат.Индексы.Добавить("ИмяРегистра, ВидРегистра");
Возврат Результат;
КонецФункции
Функция КоличествоЗаписейПоРегистратору(Регистратор, ДвиженияДокумента)
РассчитанноеКоличество = Новый Соответствие;
Если ДвиженияДокумента.Количество() = 0 Тогда
Возврат РассчитанноеКоличество;
КонецЕсли;
ТекстЗапроса = "";
Для Каждого ИспользуемыйРегистр Из ДвиженияДокумента Цикл
@@ -1787,7 +1818,7 @@
ПолноеИмя = ИспользуемыйРегистрМетаданные.ПолноеИмя();
ТекстЗапросаШаблон =
"ВЫБРАТЬ
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ""&ПолноеИмяРегистра"" КАК ПолноеИмяРегистра,
| КОЛИЧЕСТВО(*) КАК Количество
|ИЗ
@@ -1800,7 +1831,11 @@
ТекстЗапросаШаблон = СтрЗаменить(ТекстЗапросаШаблон, "&Условие", ТекстУсловия);
ТекстЗапросаШаблон = СтрЗаменить(ТекстЗапросаШаблон, "&ТекущаяТаблица", ПолноеИмя);
ТекстЗапроса = ТекстЗапроса + ?(ЗначениеЗаполнено(ТекстЗапроса), " ОБЪЕДИНИТЬ ВСЕ ", "") + ТекстЗапросаШаблон;
Если Не ЗначениеЗаполнено(ТекстЗапроса) Тогда
ТекстЗапроса = ТекстЗапросаШаблон;
Иначе
ТекстЗапроса = ТекстЗапроса + " ОБЪЕДИНИТЬ ВСЕ " + СтрЗаменить(ТекстЗапросаШаблон, "ВЫБРАТЬ РАЗРЕШЕННЫЕ", "ВЫБРАТЬ");
КонецЕсли;
КонецЦикла;
@@ -1891,14 +1926,14 @@
ГлобальныеНастройки)
СтруктураПоиска = Новый Структура("ВидРегистра, ИмяРегистра", ВидРегистра, ИмяРегистра);
СтрокиГлобальныхНастроек = ГлобальныеНастройки.НайтиСтроки(СтруктураПоиска);
Если СтрокиГлобальныхНастроек.Количество() > 0 Тогда
СтрокаГлобальныхНастроек = СтрокиГлобальныхНастроек.Получить(0);
НастройкиРегистра = ГлобальныеНастройки.НайтиСтроки(СтруктураПоиска);
Если НастройкиРегистра.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПредставлениеРегистра = НастройкиРегистра[0].ПредставлениеРегистра;
ЗаголовокГруппировки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Регистр %1 ""%2""'"),
НРег(ПредставлениеВидаРегистра), СтрокаГлобальныхНастроек.ПредставлениеРегистра);
НРег(ПредставлениеВидаРегистра),ПредставлениеРегистра);
Макет = СхемаКД.Макеты.Добавить();
Макет.Имя = "Макет" + Формат(ИндексНабора + 1, "ЧГ=0");
@@ -1942,8 +1977,6 @@
ОбластьКД = Ячейка.Элементы.Добавить(Тип("ПолеОбластиКомпоновкиДанных"));
ОбластьКД.Значение = ")";
КонецЕсли;
КонецПроцедуры
Функция СформироватьСписокРегистров(ТаблицаРегистров)
@@ -1996,66 +2029,28 @@
Если ПроверяемоеЗначение = "0" Тогда
Возврат Истина;
Иначе
КонецЕсли;
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
Возврат ОписаниеТипаЧисло.ПривестиЗначение(ПроверяемоеЗначение) <> 0;
КонецЕсли;
КонецФункции
Функция ОпределитьРасположениеЭлементовУправления()
Функция ПараметрыРасположенияЭлементовУправления()
МассивНастроек = Новый Массив;
НастройкиЭлементаУправления = Новый Структура;
Настройки = Новый Массив;
ЭлементУправления = Новый Структура;
НастройкиЭлементаУправления.Вставить("Поле", "СписокРегистров");
НастройкиЭлементаУправления.Вставить("РастягиватьПоГоризонтали", Ложь);
НастройкиЭлементаУправления.Вставить("АвтоМаксимальнаяШирина", Истина);
НастройкиЭлементаУправления.Вставить("Ширина", 40);
ЭлементУправления.Вставить("Поле", "СписокРегистров");
ЭлементУправления.Вставить("РастягиватьПоГоризонтали", Ложь);
ЭлементУправления.Вставить("АвтоМаксимальнаяШирина", Истина);
ЭлементУправления.Вставить("Ширина", 40);
МассивНастроек.Добавить(НастройкиЭлементаУправления);
Настройки.Добавить(ЭлементУправления);
НастройкиЭлементовУправления = Новый Структура();
НастройкиЭлементовУправления.Вставить("ПараметрыДанных", МассивНастроек);
Результат = Новый Структура();
Результат.Вставить("ПараметрыДанных", Настройки);
Возврат НастройкиЭлементовУправления;
КонецФункции
Функция ПерехватитьГлобальныеНастройки()
ГлобальныеНастройки = КомпоновщикНастроек.Настройки.ДополнительныеСвойства.ГлобальныеНастройки;
ТаблицаГлобальныхНастроек = Новый ТаблицаЗначений;
КолонкиГлобальныхНастроек = ТаблицаГлобальныхНастроек.Колонки;
КолонкиГлобальныхНастроек.Добавить("ИмяРегистра",
Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(128)));
КолонкиГлобальныхНастроек.Добавить("ИмяПоляРегистратора",
Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(128)));
КолонкиГлобальныхНастроек.Добавить("ПредставлениеРегистра",
Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(128)));
КолонкиГлобальныхНастроек.Добавить("ВидРегистра",
Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(32)));
КолонкиГлобальныхНастроек.Добавить("ПредставлениеВидаРегистра",
Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(32)));
КолонкиГлобальныхНастроек.Добавить("КоличествоЗаписей" , Новый ОписаниеТипов("Число"));
КолонкиГлобальныхНастроек.Добавить("НадписьРезультат" ,
Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(256)));
Для Каждого ЭлементГлобальныхНастроек Из ГлобальныеНастройки Цикл
НоваяСтрока = ТаблицаГлобальныхНастроек.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЭлементГлобальныхНастроек);
НадписьРезультат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Регистр %1 ""%2""'"),
СокрЛП(НРег(ЭлементГлобальныхНастроек.ПредставлениеВидаРегистра)),
ЭлементГлобальныхНастроек.ПредставлениеРегистра);
НоваяСтрока.НадписьРезультат = НадписьРезультат;
КонецЦикла;
Возврат ТаблицаГлобальныхНастроек;
Возврат Результат;
КонецФункции
@@ -2347,17 +2342,16 @@
КонецПроцедуры
Функция НайтиНадписьРегистраНаДокументе(ТаблицаГлобальныхНастроек, Знач ТекстОбласти)
Функция НайтиЗаголовокТаблицы(ГлобальныеНастройки, Знач ТекстОбласти)
ТекстОбласти = ВРег(СокрЛП(ТекстОбласти));
Если Не ЗначениеЗаполнено(ТекстОбласти) Тогда
Возврат Неопределено;
КонецЕсли;
Для Каждого ГлобальнаяНастройка Из ТаблицаГлобальныхНастроек Цикл
ЗначениеВТаблице = ВРег(СокрЛП(ГлобальнаяНастройка.НадписьРезультат));
Если СтрНачинаетсяС(ТекстОбласти, ЗначениеВТаблице) Тогда
Возврат ГлобальнаяНастройка;
Для Каждого Настройка Из ГлобальныеНастройки Цикл
Если СтрНачинаетсяС(ТекстОбласти, Настройка.ЗаголовокТаблицы) Тогда
Возврат Настройка;
КонецЕсли;
КонецЦикла;
@@ -2402,11 +2396,10 @@
Процедура СкрытьНеактуальныеГруппировки(НастройкиКД, ДокументОтбор)
ДополнительныеСвойства = НастройкиКД.ДополнительныеСвойства;
Если Не ДополнительныеСвойства.Свойство("ГлобальныеНастройки") Тогда
ГлобальныеНастройки = Неопределено;
Если Не НастройкиКД.ДополнительныеСвойства.Свойство("ГлобальныеНастройки", ГлобальныеНастройки) Тогда
Возврат;
КонецЕсли;
ГлобальныеНастройки = ДополнительныеСвойства.ГлобальныеНастройки;
СписокРегистровПараметрСКД = НастройкиКД.ПараметрыДанных.Элементы.Найти("СписокРегистров");
Если СписокРегистровПараметрСКД = Неопределено Тогда
@@ -2416,16 +2409,15 @@
ПерерасчетКоличестваДвижений(СписокРегистров, ДокументОтбор, ГлобальныеНастройки);
СтруктураКД = НастройкиКД.Структура;
Для Каждого Элемент Из СтруктураКД Цикл
Для Каждого Элемент Из НастройкиКД.Структура Цикл
Для Каждого ГлобальнаяНастройка Из ГлобальныеНастройки Цикл
Для Каждого НастройкаРегистра Из ГлобальныеНастройки Цикл
Если ВРег(СокрЛП("Регистр" + ГлобальнаяНастройка.ВидРегистра + "_" + ГлобальнаяНастройка.ИмяРегистра)) <> ВРег(СокрЛП(Элемент.Имя)) Тогда
Если ВРег(СокрЛП("Регистр" + НастройкаРегистра.ВидРегистра + "_" + НастройкаРегистра.ИмяРегистра)) <> ВРег(СокрЛП(Элемент.Имя)) Тогда
Продолжить;
КонецЕсли;
Если ГлобальнаяНастройка.КоличествоЗаписей = 0 Или (СписокРегистровПараметрСКД.Использование И Не ГлобальнаяНастройка.Использование) Тогда
Если НастройкаРегистра.КоличествоЗаписей = 0 Или (СписокРегистровПараметрСКД.Использование И Не НастройкаРегистра.Использование) Тогда
Элемент.Состояние = СостояниеЭлементаНастройкиКомпоновкиДанных.Отключен;
Элемент.Структура.Получить(0).Состояние = СостояниеЭлементаНастройкиКомпоновкиДанных.Отключен;
КонецЕсли;
@@ -2440,4 +2432,6 @@
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
@@ -3353,93 +3353,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.УдалитьЗамерыВремени3</name>
<right>
@@ -3818,6 +3731,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
<right>
@@ -2345,18 +2345,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -2507,18 +2509,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -2560,149 +2564,53 @@
И КлючиДоступаКРегистрам.ДляВнешнихПользователей = ИСТИНА
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
#КонецЕсли
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
#КонецЕсли
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
#КонецЕсли
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Иначе
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#Иначе
И КлючиДоступаКРегистрам.Поле1 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
И РазрешенныеКлючиДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
@@ -2093,18 +2093,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -2255,18 +2257,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -2308,149 +2312,53 @@
И КлючиДоступаКРегистрам.ДляВнешнихПользователей = ИСТИНА
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
#КонецЕсли
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
#КонецЕсли
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
#КонецЕсли
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Иначе
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#Иначе
И КлючиДоступаКРегистрам.Поле1 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
И РазрешенныеКлючиДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
File diff suppressed because it is too large. Load diff
@@ -100,18 +100,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -162,18 +162,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -210,18 +210,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -75,18 +75,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -128,149 +130,53 @@
И КлючиДоступаКРегистрам.ДляВнешнихПользователей = ИСТИНА
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
#КонецЕсли
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
#КонецЕсли
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
#КонецЕсли
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Иначе
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#Иначе
И КлючиДоступаКРегистрам.Поле1 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
И РазрешенныеКлючиДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
@@ -28,37 +28,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.РассылкиОтчетов</name>
<right>
@@ -107,6 +76,37 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -123,18 +123,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -107,18 +107,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
File diff suppressed because it is too large. Load diff
@@ -75,18 +75,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -128,149 +130,53 @@
И КлючиДоступаКРегистрам.ДляВнешнихПользователей = ИСТИНА
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
#КонецЕсли
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
#КонецЕсли
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
#КонецЕсли
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Иначе
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#Иначе
И КлючиДоступаКРегистрам.Поле1 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
И РазрешенныеКлючиДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
@@ -4480,45 +4480,6 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Catalog.РассылкиОтчетов</name>
<right>
@@ -5054,6 +5015,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
<right>
@@ -85,18 +85,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3,")
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -58,18 +58,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -111,149 +113,53 @@
И КлючиДоступаКРегистрам.ДляВнешнихПользователей = ИСТИНА
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
#КонецЕсли
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
#КонецЕсли
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
#КонецЕсли
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Иначе
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#Иначе
И КлючиДоступаКРегистрам.Поле1 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
И РазрешенныеКлючиДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -94,18 +94,20 @@
// Информационная база заблокирована для обновления.
ГДЕ ЛОЖЬ
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3,") #Тогда
И Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 1 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
// У пользователя отключены все виды доступа или
// ограничение на уровне записей не используется.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы) #Тогда
// У пользователя отключено ограничение для текущей таблицы.
ГДЕ ИСТИНА
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра2ТребуетсяПерезапуститьСеанс,") #Тогда
#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра3ТребуетсяПерезапуститьСеанс,") #Тогда
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
@@ -147,149 +149,53 @@
И КлючиДоступаКРегистрам.ДляВнешнихПользователей = ИСТИНА
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
#КонецЕсли
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
#КонецЕсли
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
#КонецЕсли
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#Иначе
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле1=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле4;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле3;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;")
И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле2;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#ИначеЕсли Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле1;") #Тогда
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
#ИначеЕсли "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле2=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле3=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле4=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
#Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Поле5=Null;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Иначе
#Если "#Поле5" &lt;&gt; "" И Не СтрСодержит(&amp;СпискиСОтключеннымОграничениемПоПолям, #ИмяТекущейТаблицы + ":#Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
#Иначе
И КлючиДоступаКРегистрам.Поле1 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле2" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле2;") #Тогда
И КлючиДоступаКРегистрам.Поле2 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле3" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле3;") #Тогда
И КлючиДоступаКРегистрам.Поле3 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле4" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле4;") #Тогда
И КлючиДоступаКРегистрам.Поле4 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#Если "#Поле5" &lt;&gt; "" Или Не СтрСодержит(&amp;СпискиССокращеннымНаборомПолейВРегистрахКлючей, #ИмяТекущейТаблицы + ":Поле5;") #Тогда
И КлючиДоступаКРегистрам.Поле5 = Значение(Перечисление.ДополнительныеЗначенияДоступа.Null)
#КонецЕсли
#КонецЕсли
#Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
И РазрешенныеКлючиДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:SessionParameter xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="64837ad8-3055-4da3-a39c-0e7db38b6084">
<name>СпискиСОтключеннымОграничениемПоПолям</name>
<name>СпискиСОграничениемПоПолям</name>
<synonym>
<key>ru</key>
<value>Списки с отключенным ограничением по полям</value>
<value>Списки с ограничением по полям</value>
</synonym>
<type>
<types>String</types>
@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:SessionParameter xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="10620b9b-283c-4252-b839-5b71ce6e804b">
<name>СпискиССокращеннымНаборомПолейВРегистрахКлючей</name>
<synonym>
<key>ru</key>
<value>Списки с сокращенным набором полей в регистрах ключей</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
</mdclass:SessionParameter>
@@ -72,9 +72,8 @@
<content>SessionParameter.СпискиСОграничениемЧерезКлючиДоступаГруппДоступа</content>
<content>SessionParameter.СпискиСОграничениемЧерезКлючиДоступаПользователей</content>
<content>SessionParameter.СпискиСОграничениемЧерезКлючиДоступаПользователейИГруппДоступа</content>
<content>SessionParameter.СпискиСОтключеннымОграничениемПоПолям</content>
<content>SessionParameter.СпискиСОграничениемПоПолям</content>
<content>SessionParameter.СпискиСОтключеннымОграничениемЧтения</content>
<content>SessionParameter.СпискиССокращеннымНаборомПолейВРегистрахКлючей</content>
<content>EventSubscription.ПроверитьДоступПередЗаписью</content>
<content>EventSubscription.ПроверитьДоступПередЗаписьюДокумента</content>
<content>EventSubscription.ПроверитьДоступПередЗаписьюНабораЗаписей</content>