3_1_10_174

This commit is contained in:
Компания 1С committed 2024-05-21 14:30:00 +03:00
1 parent 7fa6f0ae7f
commit 44a10b9181
256 files changed
+12153 -5954

No files matched your search

@@ -239,22 +239,23 @@
//
Процедура ИзменитьРеквизитыНевыполненныхЗадач() Экспорт
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Задача.ЗадачаИсполнителя");
ЭлементБлокировки.УстановитьЗначение("БизнесПроцесс", Ссылка);
Блокировка.Заблокировать();
Запрос = Новый Запрос("ВЫБРАТЬ
| Задачи.Ссылка КАК Ссылка
| ЗадачиИсполнителя.Ссылка КАК Ссылка
|ИЗ
| Задача.ЗадачаИсполнителя КАК Задачи
| Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителя
|ГДЕ
| Задачи.БизнесПроцесс = &БизнесПроцесс
| И Задачи.ПометкаУдаления = ЛОЖЬ
| И Задачи.Выполнена = ЛОЖЬ");
| ЗадачиИсполнителя.БизнесПроцесс = &БизнесПроцесс
| И ЗадачиИсполнителя.ПометкаУдаления = ЛОЖЬ
| И ЗадачиИсполнителя.Выполнена = ЛОЖЬ");
Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
@@ -280,22 +281,23 @@
Процедура ИзменитьПредметЗадач()
УстановитьПривилегированныйРежим(Истина);
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Задача.ЗадачаИсполнителя");
ЭлементБлокировки.УстановитьЗначение("БизнесПроцесс", Ссылка);
Блокировка.Заблокировать();
Запрос = Новый Запрос("ВЫБРАТЬ
| Задачи.Ссылка КАК Ссылка
| ЗадачиИсполнителя.Ссылка КАК Ссылка
|ИЗ
| Задача.ЗадачаИсполнителя КАК Задачи
| Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителя
|ГДЕ
| Задачи.БизнесПроцесс = &БизнесПроцесс");
| ЗадачиИсполнителя.БизнесПроцесс = &БизнесПроцесс");
Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка);
УстановитьПривилегированныйРежим(Истина);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
@@ -44,18 +44,18 @@
СформироватьПоляВводаНаРазныхЯзыках(Ложь, Параметры.ТолькоПросмотр);
ОписаниеЯзыка = ОписаниеЯзыка(ТекущийЯзык().КодЯзыка);
ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка();
ОписаниеЯзыка = ОписаниеЯзыка(ОсновнойЯзык);
Если ОписаниеЯзыка <> Неопределено Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущееЗначение;
КонецЕсли;
ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка();
Для Каждого Представление Из Параметры.Представления Цикл
ОписаниеЯзыка = ОписаниеЯзыка(Представление.КодЯзыка);
Если ОписаниеЯзыка <> Неопределено Тогда
Если СтрСравнить(ОписаниеЯзыка.КодЯзыка, ТекущийЯзык().КодЯзыка) = 0 Тогда
Если СтрСравнить(ОписаниеЯзыка.КодЯзыка, ОсновнойЯзык) = 0 Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = ?(ЗначениеЗаполнено(Параметры.ТекущееЗначение),
Параметры.ТекущееЗначение, Представление[Параметры.ИмяРеквизита]);
Иначе
@@ -7,7 +7,7 @@
<div><strong>Наименование валюты</strong> - полное наименование валюты.</div>
</li>
<li>
<div><strong>Цифровой код</strong> - уникальный числовой код, служит для идентификации валюты при загрузке курсов из сети Интернет (с портала 1С:ИТС).</div>
<div><strong>Цифровой код</strong> - числовой код, служит для идентификации валюты при загрузке курсов из сети Интернет (с портала 1С:ИТС).</div>
</li>
<li>
<div><strong>Символьный код</strong> - используется как краткое наименование и основное представление валюты.</div>
+1 -1
View File
@@ -8,7 +8,7 @@
</li>
<li>
<div>
<div><strong>Цифр. код</strong> - уникальный цифровой код, служит для идентификации валюты при загрузке курсов из сети Интернет. Например, 840 для доллара США.</div></div>
<div><strong>Цифр. код</strong> - цифровой код, служит для идентификации валюты при загрузке курсов из сети Интернет. Например, 840 для доллара США.</div></div>
</li>
<li>
<div><strong>Симв. код</strong> - символьный код валюты, используется в качестве представления в полях ввода. Например, EUR (Евро).</div>
@@ -179,7 +179,8 @@
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта() Или ИмяСобытия = "Запись_НаборКонстант" Тогда
Если ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта() Или ИмяСобытия = "Запись_НаборКонстант"
Или ИмяСобытия = "Запись_ВариантыОтчетов" Тогда
ДеревоПодсистемТекущаяСтрока = -1;
ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина);
@@ -315,7 +315,6 @@
Процедура ЗаполнитьРазмещениеПоРодителю()
Если Размещение.Количество() > 0 Или Не ЗначениеЗаполнено(Родитель) Тогда
Возврат;
КонецЕсли;
@@ -323,9 +322,7 @@
Родитель, "ПредопределенныйВариант, Размещение");
Размещение.Загрузить(СвойстваРодителя.Размещение.Выгрузить());
Если Размещение.Количество() > 0 Или Не ЗначениеЗаполнено(СвойстваРодителя.ПредопределенныйВариант) Тогда
Возврат;
КонецЕсли;
@@ -333,9 +330,8 @@
СвойстваРодителя.ПредопределенныйВариант, "Размещение");
Размещение.Загрузить(РазмещениеПредопределенногоВарианта.Выгрузить());
Для Каждого Строка Из Размещение Цикл
Строка.Использование = Истина;
Для Каждого СтрокаТаблицы Из Размещение Цикл
СтрокаТаблицы.Использование = Истина;
КонецЦикла;
КонецПроцедуры
@@ -560,25 +560,25 @@
Если Не Элементы.Роли.ТолькоПросмотр Тогда
Ошибки = Неопределено;
ЭлементыДерева = Роли.ПолучитьЭлементы();
Для Каждого Строка Из ЭлементыДерева Цикл
Если Не Строка.Пометка Тогда
Для Каждого Элемент Из ЭлементыДерева Цикл
Если Не Элемент.Пометка Тогда
Продолжить;
КонецЕсли;
Если Строка.ЭтоНесуществующаяРоль Тогда
Если Элемент.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Элемент.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1"));
ЭлементыДерева.Индекс(Элемент),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Элемент.Синоним, "%1"));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
Если Элемент.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"), Элемент.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для внешних пользователей.'"), Строка.Синоним, "%1"));
ЭлементыДерева.Индекс(Элемент),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для внешних пользователей.'"), Элемент.Синоним, "%1"));
КонецЕсли;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
@@ -132,9 +132,9 @@
// Заполнение ролей объекта из коллекции.
ТекущийОбъект.Роли.Очистить();
Для каждого Строка Из КоллекцияРолей Цикл
Для каждого Роль Из КоллекцияРолей Цикл
ТекущийОбъект.Роли.Добавить().Роль = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(
"Роль." + Строка.Роль);
"Роль." + Роль.Роль);
КонецЦикла;
КонецПроцедуры
@@ -169,25 +169,33 @@
ПроверенныеРеквизитыОбъекта.Добавить("Роли.Роль");
Если Не Элементы.Роли.ТолькоПросмотр Тогда
ЭлементыДерева = Роли.ПолучитьЭлементы();
Для Каждого Строка Из ЭлементыДерева Цикл
Если Не Строка.Пометка Тогда
Для Каждого Элемент Из ЭлементыДерева Цикл
Если Не Элемент.Пометка Тогда
Продолжить;
КонецЕсли;
Если Строка.ЭтоНесуществующаяРоль Тогда
Если Элемент.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Несуществующая роль ""%1"".'"),
Элемент.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1"));
ЭлементыДерева.Индекс(Элемент),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"),
Элемент.Синоним, "%1"));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
Если Элемент.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"),
Элемент.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для внешних пользователей.'"), Строка.Синоним, "%1"));
ЭлементыДерева.Индекс(Элемент),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для внешних пользователей.'"),
Элемент.Синоним, "%1"));
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -193,11 +193,11 @@
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого Строка Из Строки Цикл
Если ТипЗнч(Строка.Ключ) <> Тип("СправочникСсылка.ГруппыДоступа") Тогда
Для Каждого СтрокаСписка Из Строки Цикл
Если ТипЗнч(СтрокаСписка.Ключ) <> Тип("СправочникСсылка.ГруппыДоступа") Тогда
Продолжить;
КонецЕсли;
Данные = Строка.Значение.Данные;
Данные = СтрокаСписка.Значение.Данные;
Если Данные.ЭтоГруппа
Или Не ЗначениеЗаполнено(Данные.Пользователь) Тогда
@@ -1432,9 +1432,9 @@
МодульРаботаВБезопасномРежимеСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежимеСлужебный");
Для Каждого Строка Из ТаблицаРазрешений Цикл
Разрешение = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(МодульРаботаВБезопасномРежимеСлужебный.Пакет(), Строка.ВидРазрешения));
ЗаполнитьЗначенияСвойств(Разрешение, Строка.Параметры.Получить());
Для Каждого СтрокаТаблицы Из ТаблицаРазрешений Цикл
Разрешение = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(МодульРаботаВБезопасномРежимеСлужебный.Пакет(), СтрокаТаблицы.ВидРазрешения));
ЗаполнитьЗначенияСвойств(Разрешение, СтрокаТаблицы.Параметры.Получить());
Разрешения.Добавить(Разрешение);
КонецЦикла;
@@ -25,7 +25,7 @@
Возврат;
КонецЕсли;
ДанныеОтмены = ПолучитьФайлОтменыДоверенности(Доверенность, ПричинаОтмены);
ДанныеОтмены = ФайлОтменыДоверенности(Доверенность, ПричинаОтмены);
ОписаниеДанных = Новый Структура;
ОписаниеДанных.Вставить("Операция", НСтр("ru='Отмена доверенности'"));
ОписаниеДанных.Вставить("ЗаголовокДанных", НСтр("ru='Доверенность'"));
@@ -39,8 +39,8 @@
#Область СлужебныеПроцедурыИФункции
&НаСервереБезКонтекста
Функция ПолучитьФайлОтменыДоверенности(Доверенность, ПричинаОтмены)
Возврат МашиночитаемыеДоверенностиФНССлужебный.ПолучитьФайлОтменыДоверенности(Доверенность, ПричинаОтмены);
Функция ФайлОтменыДоверенности(Доверенность, ПричинаОтмены)
Возврат МашиночитаемыеДоверенностиФНССлужебный.ФайлОтменыДоверенности(Доверенность, ПричинаОтмены);
КонецФункции
&НаКлиенте
@@ -1479,6 +1479,10 @@
<event>BeforeAddRow</event>
<name>ВыбранныеПолномочияТаблицаПередНачаломДобавления</name>
</handlers>
<handlers>
<event>BeforeDeleteRow</event>
<name>ВыбранныеПолномочияТаблицаПередУдалением</name>
</handlers>
<handlers>
<event>OnActivateRow</event>
<name>ВыбранныеПолномочияТаблицаПриАктивизацииСтроки</name>
@@ -1578,7 +1582,6 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
@@ -1586,7 +1589,6 @@
<verticalScrollBar>AutoUse</verticalScrollBar>
<horizontalLines>true</horizontalLines>
<verticalLines>true</verticalLines>
<useAlternationRowColorBWA>false</useAlternationRowColorBWA>
<autoInsertNewRow>true</autoInsertNewRow>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
@@ -1957,6 +1959,10 @@
<event>BeforeAddRow</event>
<name>ОграниченияПолномочийПередНачаломДобавления</name>
</handlers>
<handlers>
<event>BeforeDeleteRow</event>
<name>ОграниченияПолномочийПередУдалением</name>
</handlers>
<handlers>
<event>AfterDeleteRow</event>
<name>ОграниченияПолномочийПослеУдаления</name>
@@ -3025,6 +3031,161 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ОграниченияПолномочийРодительскойДоверенности</name>
<id>7</id>
<valueType>
<types>ValueTable</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
<columns>
<name>ИдентификаторПолномочия</name>
<id>1</id>
<valueType>
<types>UUID</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Код</name>
<id>2</id>
<valueType>
<types>String</types>
<stringQualifiers>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Наименование</name>
<id>3</id>
<valueType>
<types>String</types>
<stringQualifiers>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>НаименованиеЗначения</name>
<id>4</id>
<valueType>
<types>String</types>
<stringQualifiers>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>КодЗначения</name>
<id>5</id>
<valueType>
<types>String</types>
<stringQualifiers>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ЭтоТекстовоеЗначение</name>
<id>7</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ОписаниеТипа</name>
<id>8</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Описание</name>
<id>6</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>НетВКлассификаторе</name>
<id>9</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>НетВКлассификатореКодаЗначения</name>
<id>10</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<formCommands>
<name>УстановитьФлажки</name>
<title>
@@ -3299,6 +3460,14 @@
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>ПолномочияРодительскойДоверенности</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -5,7 +5,6 @@
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -13,11 +12,10 @@
УстановитьУсловноеОформление();
ЭтоПередоверие = ЗначениеЗаполнено(Параметры.ПолномочияРодительскойДоверенности);
ЭтоВыборИзКлассификатора = Параметры.РежимКлассификатора;
Элементы.ГруппаВидПолномочий.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.ВыбратьИзКлассификатора.Видимость = Не Параметры.ТолькоПросмотр;
Элементы.ОбновитьКлассификаторыПолномочий.Видимость = Не ОбщегоНазначения.РазделениеВключено();
РежимКлассификатора = Параметры.РежимКлассификатора;
Если Параметры.ВыбранныеПолномочия = Неопределено Тогда
ВидПолномочий = "0";
@@ -36,14 +34,24 @@
КонецЕсли;
СформироватьДеревоПолномочий(Параметры.ВыбранныеПолномочия.Полномочия);
Элементы.ПоказатьВыбранные.Пометка = Элементы.ПоказатьВыбранные.Пометка
И Не РежимКлассификатора;
Элементы.ПоказатьВыбранные.Видимость = Не Параметры.РежимКлассификатора;
Элементы.ГруппаКнопокВидПолномочий.Видимость = Не Параметры.РежимКлассификатора;
Элементы.ГруппаСохранение.Видимость = Не Параметры.РежимКлассификатора;
Элементы.ГруппаОграниченияПолномочий.Видимость = Не Параметры.РежимКлассификатора;
ЭтоВыборИзКлассификатора = Параметры.РежимКлассификатора;
Элементы.ПоказатьВыбранные.Пометка = Не ЭтоВыборИзКлассификатора И Не ЭтоПередоверие И ВыбранныеПолномочияТаблица.Количество() > 0;
Элементы.ПоказатьВыбранные.Видимость = Не ЭтоВыборИзКлассификатора И Не ЭтоПередоверие;
Элементы.ГруппаСохранение.Видимость = Не ЭтоВыборИзКлассификатора;
Элементы.ГруппаОграниченияПолномочий.Видимость = Не ЭтоВыборИзКлассификатора;
Элементы.ВыбранныеПолномочияТаблицаЗагрузитьНастройкуПолномочий.Видимость = Не ЭтоПередоверие;
Элементы.ЗагрузитьНастройкуПолномочий.Видимость = Не ЭтоПередоверие;
КонецЕсли;
Элементы.ТекстПолномочий.ТолькоПросмотр = Параметры.ТолькоПросмотр Или ЭтоПередоверие;
Элементы.ГруппаКнопокВидПолномочий.Видимость = Не ЭтоВыборИзКлассификатора И Не Параметры.ТолькоПросмотр И Не ЭтоПередоверие;
Элементы.ГруппаКнопокВидПолномочий1.Видимость = Элементы.ГруппаКнопокВидПолномочий.Видимость;
Элементы.ГруппаКнопокВидПолномочий2.Видимость = Элементы.ГруппаКнопокВидПолномочий.Видимость;
Элементы.ОбновитьКлассификаторыПолномочий.Видимость = Не ОбщегоНазначения.РазделениеВключено() И Не ЭтоПередоверие;
УправлениеФормой(ЭтотОбъект);
КонецПроцедуры
@@ -156,6 +164,13 @@
&НаКлиенте
Процедура ВыбранныеПолномочияТаблицаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если ЗначениеЗаполнено(Параметры.ПолномочияРодительскойДоверенности) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Нельзя добавлять полномочия у передоверия вручную.'"), , , , Отказ);
Возврат;
КонецЕсли;
Отказ = Истина;
НоваяСтрока = ВыбранныеПолномочияТаблица.Добавить();
@@ -196,6 +211,25 @@
КонецПроцедуры
&НаКлиенте
Процедура ОграниченияПолномочийПередУдалением(Элемент, Отказ)
Если ЗначениеЗаполнено(Параметры.ПолномочияРодительскойДоверенности) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Нельзя удалять ограничения у передоверия.'"), , , , Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбранныеПолномочияТаблицаПередУдалением(Элемент, Отказ)
СнятьОтметкуСтроки(Элементы.ВыбранныеПолномочияТаблица.ТекущиеДанные.ИдентификаторПолномочия);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -349,6 +383,9 @@
ВидимостьПоказатьВыбранные(Форма);
КонецЕсли;
Форма.КлючСохраненияПоложенияОкна = Форма.ВидПолномочий;
Форма.КлючНазначенияИспользования = Форма.ВидПолномочий;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
@@ -458,15 +495,37 @@
&НаСервере
Процедура СформироватьДеревоПолномочий(АдресПолномочий)
Если Не ЗначениеЗаполнено(Параметры.ПолномочияРодительскойДоверенности) Тогда
КлассификаторПолномочий = МашиночитаемыеДоверенностиФНСПовтИсп.КлассификаторПолномочий();
ДеревоЗначений = ОбщегоНазначения.СкопироватьРекурсивно(КлассификаторПолномочий);
Иначе
ДеревоЗначений = Новый ДеревоЗначений;
ДеревоЗначений.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
ДеревоЗначений.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
КонецЕсли;
ДеревоЗначений.Колонки.Добавить("Мнемокод", ОбщегоНазначения.ОписаниеТипаСтрока(255));
ДеревоЗначений.Колонки.Добавить("НетВКлассификаторе", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("Пометка", ОбщегоНазначения.ОписаниеТипаЧисло(1));
ДеревоЗначений.Колонки.Добавить("Флажок", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("ИдентификаторПолномочия", Новый ОписаниеТипов("УникальныйИдентификатор"));
Если ЗначениеЗаполнено(Параметры.ПолномочияРодительскойДоверенности) Тогда
ПолномочияРодительскойДоверенности = ПолучитьИзВременногоХранилища(Параметры.ПолномочияРодительскойДоверенности);
Для Каждого Полномочие Из ПолномочияРодительскойДоверенности.Полномочия Цикл
НоваяСтрока = ДеревоЗначений.Строки.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Полномочие);
КонецЦикла;
Для Каждого Ограничение Из ПолномочияРодительскойДоверенности.Ограничения Цикл
НоваяСтрока = ОграниченияПолномочийРодительскойДоверенности.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Ограничение);
Если Не ЗначениеЗаполнено(НоваяСтрока.КодЗначения) Тогда
НоваяСтрока.ЭтоТекстовоеЗначение = Истина;
НоваяСтрока.НаименованиеЗначения = Ограничение.ТекстовоеЗначение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если АдресПолномочий <> Неопределено Тогда
ВыбранныеПолномочия = ПолучитьИзВременногоХранилища(АдресПолномочий);
@@ -478,7 +537,6 @@
КонецЕсли;
Элементы.ПоказатьВыбранные.Пометка = ВыбранныеПолномочияТаблица.Количество() > 0;
ЗначениеВРеквизитФормы(ДеревоЗначений, "Полномочия");
КонецПроцедуры
@@ -511,6 +569,53 @@
КонецПроцедуры
&НаСервере
Процедура СнятьОтметкуСтроки(Знач ИдентификаторПолномочия)
ДеревоЗначений = РеквизитФормыВЗначение("Полномочия");
Найдено = ДеревоЗначений.Строки.Найти(ИдентификаторПолномочия, "ИдентификаторПолномочия", Истина);
Если Найдено <> Неопределено Тогда
Найдено.Пометка = Ложь;
Если ЗначениеЗаполнено(Найдено.Родитель) Тогда
СтрокиСПометками = Новый Соответствие;
СтрокиСПометками.Вставить(Найдено.Родитель, Истина);
ОбновитьФлажки(СтрокиСПометками);
КонецЕсли;
КонецЕсли;
ЗначениеВРеквизитФормы(ДеревоЗначений, "Полномочия");
КонецПроцедуры
&НаСервере
Процедура ОбновитьФлажки(СтрокиСПометками)
Для Каждого КлючИЗначение Из СтрокиСПометками Цикл
Родитель = КлючИЗначение.Ключ;
РазныеСтроки = Ложь;
Флажок = Неопределено;
Для Каждого Строка Из Родитель.Строки Цикл
Если Флажок = Неопределено Тогда
Флажок = Строка.Пометка;
Продолжить;
КонецЕсли;
Если Флажок <> Строка.Пометка Тогда
РазныеСтроки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если РазныеСтроки Тогда
Родитель.Пометка = 2;
Иначе
Родитель.Пометка = Флажок;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьВыбранныеПолномочия(ВыбранныеПолномочия, ДеревоЗначений)
@@ -540,26 +645,7 @@
КонецЦикла;
Для Каждого КлючИЗначение Из СтрокиСПометками Цикл
Родитель = КлючИЗначение.Ключ;
РазныеСтроки = Ложь;
Флажок = Неопределено;
Для Каждого Строка Из Родитель.Строки Цикл
Если Флажок = Неопределено Тогда
Флажок = Строка.Пометка;
Продолжить;
КонецЕсли;
Если Флажок <> Строка.Пометка Тогда
РазныеСтроки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если РазныеСтроки Тогда
Родитель.Пометка = 2;
Иначе
Родитель.Пометка = Флажок;
КонецЕсли;
КонецЦикла;
ОбновитьФлажки(СтрокиСПометками);
ИдентификаторыПолномочийСОграничениями = Новый Соответствие;
@@ -678,12 +764,35 @@
Если Флажок = 1 Тогда
Если Найдено.Количество() = 0 Тогда
НоваяСтрока = ВыбранныеПолномочияТаблица.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Если ЗначениеЗаполнено(Параметры.ПолномочияРодительскойДоверенности) Тогда
НайденыОграничения = ОграниченияПолномочийРодительскойДоверенности.НайтиСтроки(
Новый Структура("ИдентификаторПолномочия", НоваяСтрока.ИдентификаторПолномочия));
НоваяСтрока.ЕстьОграничения = НайденыОграничения.Количество() > 0;
Для Каждого НайденнаяСтрока Из НайденыОграничения Цикл
НоваяСтрокаОграничений = ОграниченияПолномочий.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаОграничений, НайденнаяСтрока);
КонецЦикла;
КонецЕсли;
КонецЕсли;
ИначеЕсли Найдено.Количество() > 0 Тогда
Для Каждого НайденнаяСтрока Из Найдено Цикл
Если ЗначениеЗаполнено(Параметры.ПолномочияРодительскойДоверенности) Тогда
НайденыОграничения = ОграниченияПолномочий.НайтиСтроки(
Новый Структура("ИдентификаторПолномочия", НайденнаяСтрока.ИдентификаторПолномочия));
Для Каждого Ограничение Из НайденыОграничения Цикл
ОграниченияПолномочий.Удалить(ОграниченияПолномочий.Индекс(Ограничение));
КонецЦикла;
КонецЕсли;
ВыбранныеПолномочияТаблица.Удалить(ВыбранныеПолномочияТаблица.Индекс(НайденнаяСтрока));
КонецЦикла;
КонецЕсли;
@@ -1062,6 +1062,125 @@
<showInCard>true</showInCard>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаПередоверие</name>
<id>239</id>
<items xsi:type="form:FormField">
<name>ВозможностьПередоверия</name>
<id>236</id>
<title>
<key>ru</key>
<value>Возможность передоверия</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ВозможностьПередоверия</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Возможность передоверия</value>
</toolTip>
<extendedTooltip>
<name>ВозможностьПередоверияРасширеннаяПодсказка</name>
<id>238</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВозможностьПередоверияКонтекстноеМеню</name>
<id>237</id>
<autoFill>true</autoFill>
</contextMenu>
<type>PictureField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:ImageFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<border xsi:type="core:BorderDef">
<style>Single</style>
<width>1</width>
</border>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Передоверие</name>
<id>241</id>
<title>
<key>ru</key>
<value>Это передоверие</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Передоверие</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Это передоверие</value>
</toolTip>
<extendedTooltip>
<name>ПередовериеРасширеннаяПодсказка</name>
<id>243</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПередовериеКонтекстноеМеню</name>
<id>242</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Передоверие</value>
</title>
<extendedTooltip>
<name>ГруппаПередовериеРасширеннаяПодсказка</name>
<id>240</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>ColumnGroup</type>
<extInfo xsi:type="form:ColumnGroupExtInfo">
<showInCard>true</showInCard>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Код</name>
<id>128</id>
@@ -1343,6 +1462,37 @@
<importance>Normal</importance>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ПодменюСоздатьНаОсновании</name>
<id>234</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Создать на основании</value>
</title>
<extendedTooltip>
<name>ПодменюСоздатьНаОснованииРасширеннаяПодсказка</name>
<id>235</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Popup</type>
<extInfo xsi:type="form:PopupGroupExtInfo">
<picture xsi:type="core:PictureRef">
<picture>StdPicture.InputOnBasis</picture>
</picture>
<representation>Picture</representation>
<importance>Normal</importance>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>СписокЗагрузитьИзРеестраФНС</name>
<id>98</id>
@@ -2206,9 +2356,15 @@
<edit>
<common>true</common>
</edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ВозможностьПередоверия</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ФайлДоверенности</segments>
</notDefaultUseAlwaysAttributes>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
@@ -2217,18 +2373,23 @@
СправочникМашиночитаемыеДоверенности.Код КАК Код,
СправочникМашиночитаемыеДоверенности.Наименование КАК Наименование,
СправочникМашиночитаемыеДоверенности.ДатаВыдачи КАК ДатаВыдачи,
СправочникМашиночитаемыеДоверенности.ФайлДоверенности КАК ФайлДоверенности,
КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ) КАК ДатаОкончания,
СправочникМашиночитаемыеДоверенности.ДляНалоговыхОрганов КАК ДляНалоговыхОрганов,
СправочникМашиночитаемыеДоверенности.РегистрироватьВРеестре КАК РегистрироватьВРеестре,
ВЫБОР
КОГДА СправочникМашиночитаемыеДоверенности.РодительскаяДоверенностьНомер = &quot;&quot;
ТОГДА Ложь
ИНАЧЕ Истина
КОНЕЦ КАК Передоверие,
СправочникМашиночитаемыеДоверенности.ВозможностьПередоверия КАК ВозможностьПередоверия,
СправочникМашиночитаемыеДоверенности.Статус КАК Статус,
&amp;СтатусВДругомРеестре КАК СтатусВДругомРеестре,
99 КАК ИндексСтатусаВДругомРеестре,
МашиночитаемыеДоверенностиСтатусы.ТехническийСтатус КАК ТехническийСтатус,
СправочникМашиночитаемыеДоверенности.Верна КАК Верна,
ВЫБОР
КОГДА &amp;ТекущаяДата
МЕЖДУ СправочникМашиночитаемыеДоверенности.ДатаВыдачи И КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания,
ДЕНЬ)
КОГДА &amp;ТекущаяДата МЕЖДУ СправочникМашиночитаемыеДоверенности.ДатаВыдачи И КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
И СправочникМашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
@@ -2236,8 +2397,7 @@
ВЫБОР
КОГДА СправочникМашиночитаемыеДоверенности.ПометкаУдаления
ТОГДА 1
КОГДА КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
МЕЖДУ &amp;ТекущаяДата И &amp;СрокИстекающихДоверенностей
КОГДА КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ) МЕЖДУ &amp;ТекущаяДата И &amp;СрокИстекающихДоверенностей
И СправочникМашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
ТОГДА 3
КОГДА &amp;ТекущаяДата > КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
@@ -2245,9 +2405,7 @@
ТОГДА 4
КОГДА СправочникМашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Черновик)
ТОГДА 5
КОГДА &amp;ТекущаяДата
МЕЖДУ СправочникМашиночитаемыеДоверенности.ДатаВыдачи И КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания,
ДЕНЬ)
КОГДА &amp;ТекущаяДата МЕЖДУ СправочникМашиночитаемыеДоверенности.ДатаВыдачи И КОНЕЦПЕРИОДА(СправочникМашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
И СправочникМашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
ТОГДА 2
КОГДА СправочникМашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.НеДействует)
@@ -2256,36 +2414,28 @@
КОНЕЦ КАК ИндексСтатуса,
СправочникМашиночитаемыеДоверенности.НомерДоверенности КАК НомерДоверенности,
СправочникМашиночитаемыеДоверенности.КодНалоговогоОрганаПредставления КАК КодНалоговогоОрганаПредставления,
МашиночитаемыеДоверенностиСтатусы.Подписана
МашиночитаемыеДоверенностиСтатусы.Подписана КАК Подписана
ИЗ
Справочник.МашиночитаемыеДоверенности КАК СправочникМашиночитаемыеДоверенности
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МашиночитаемыеДоверенностиСтатусы КАК МашиночитаемыеДоверенностиСтатусы
ПО СправочникМашиночитаемыеДоверенности.Ссылка = МашиночитаемыеДоверенностиСтатусы.МашиночитаемаяДоверенность
{ГДЕ
(СправочникМашиночитаемыеДоверенности.Ссылка В
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.ФИО + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.НаименованиеОрганизации
ПОДОБНО &amp;ДоверительСтрокаПоиска СПЕЦСИМВОЛ &quot;~&quot;)),
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.ФИО + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.НаименованиеОрганизации ПОДОБНО &amp;ДоверительСтрокаПоиска СПЕЦСИМВОЛ &quot;~&quot;)),
(СправочникМашиночитаемыеДоверенности.Ссылка В
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Представитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.ФИО + &quot;|&quot; +
МашиночитаемыеДоверенностиПредставителиИДоверители.НаименованиеОрганизации
ПОДОБНО &amp;ПредставительСтрокаПоиска СПЕЦСИМВОЛ &quot;~&quot;)),
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.ФИО + &quot;|&quot; + МашиночитаемыеДоверенностиПредставителиИДоверители.НаименованиеОрганизации ПОДОБНО &amp;ПредставительСтрокаПоиска СПЕЦСИМВОЛ &quot;~&quot;)),
(СправочникМашиночитаемыеДоверенности.Ссылка В
(ВЫБРАТЬ
МашиночитаемыеДоверенностиДоверители.Ссылка КАК Ссылка
@@ -2306,7 +2456,8 @@
ИЗ
Справочник.МашиночитаемыеДоверенности.Доверители КАК МашиночитаемыеДоверенностиДоверители
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
ПО МашиночитаемыеДоверенностиДоверители.Доверитель = Пользователи.ФизическоеЛицо
ПО
МашиночитаемыеДоверенностиДоверители.Доверитель = Пользователи.ФизическоеЛицо
ГДЕ
Пользователи.Ссылка = &amp;ДоверительПользователь)),
(СправочникМашиночитаемыеДоверенности.Ссылка В
@@ -2315,7 +2466,8 @@
ИЗ
Справочник.МашиночитаемыеДоверенности.Представители КАК МашиночитаемыеДоверенностиПредставители
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
ПО МашиночитаемыеДоверенностиПредставители.Представитель = Пользователи.ФизическоеЛицо
ПО
МашиночитаемыеДоверенностиПредставители.Представитель = Пользователи.ФизическоеЛицо
ГДЕ
Пользователи.Ссылка = &amp;ПредставительПользователь)),
(СправочникМашиночитаемыеДоверенности.Ссылка В
@@ -2324,8 +2476,7 @@
ИЗ
Справочник.МашиночитаемыеДоверенности.Полномочия КАК МашиночитаемыеДоверенностиПолномочия
ГДЕ
МашиночитаемыеДоверенностиПолномочия.Код + &quot;|&quot; + МашиночитаемыеДоверенностиПолномочия.Мнемокод + &quot;|&quot; +
МашиночитаемыеДоверенностиПолномочия.Наименование ПОДОБНО &amp;ПолномочияСтрокаПоиска)),
МашиночитаемыеДоверенностиПолномочия.Код + &quot;|&quot; + МашиночитаемыеДоверенностиПолномочия.Мнемокод + &quot;|&quot; + МашиночитаемыеДоверенностиПолномочия.Наименование ПОДОБНО &amp;ПолномочияСтрокаПоиска)),
(СправочникМашиночитаемыеДоверенности.Ссылка В
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПолномочия.Ссылка КАК Ссылка
@@ -2337,8 +2488,7 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН = &amp;ДоверительИНН)),
@@ -2346,8 +2496,7 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ОГРН = &amp;ДоверительОГРН)),
@@ -2355,8 +2504,7 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ = &amp;ДоверительИННФЛ)),
@@ -2364,8 +2512,7 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС = &amp;ДоверительСНИЛС)),
@@ -2373,8 +2520,7 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Представитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН = &amp;ПредставительИНН)),
@@ -2382,8 +2528,7 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Представитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ОГРН = &amp;ПредставительОГРН)),
@@ -2391,8 +2536,7 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Представитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ = &amp;ПредставительИННФЛ)),
@@ -2400,15 +2544,10 @@
(ВЫБРАТЬ
МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность
ИЗ
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
МашиночитаемыеДоверенностиПредставителиИДоверители
РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
ГДЕ
МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Представитель)
И МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС = &amp;ПредставительСНИЛС))}
ИЗ
Справочник.МашиночитаемыеДоверенности КАК СправочникМашиночитаемыеДоверенности
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МашиночитаемыеДоверенностиСтатусы КАК МашиночитаемыеДоверенностиСтатусы
ПО СправочникМашиночитаемыеДоверенности.Ссылка = МашиночитаемыеДоверенностиСтатусы.МашиночитаемаяДоверенность</queryText>
И МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС = &amp;ПредставительСНИЛС))}</queryText>
<mainTable>Catalog.МашиночитаемыеДоверенности</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -2500,13 +2639,41 @@
<field>Подписана</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>ФайлДоверенности</dataPath>
<field>ФайлДоверенности</field>
<dataPath>СтатусВДругомРеестре</dataPath>
<field>СтатусВДругомРеестре</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>ИндексСтатусаВДругомРеестре</dataPath>
<field>ИндексСтатусаВДругомРеестре</field>
<title>
<localValue>
<content>
<key>ru</key>
<value>Индекс статуса в другом реестре</value>
</content>
</localValue>
</title>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>ТехническийСтатус</dataPath>
<field>ТехническийСтатус</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>ВозможностьПередоверия</dataPath>
<field>ВозможностьПередоверия</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>Передоверие</dataPath>
<field>Передоверие</field>
<title>
<localValue>
<content>
<key>ru</key>
<value>Передоверие</value>
</content>
</localValue>
</title>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>РодительскаяДоверенность</dataPath>
<field>РодительскаяДоверенность</field>
@@ -2563,6 +2730,18 @@
<dataPath>ФайлЗаявленияНаОтмену</dataPath>
<field>ФайлЗаявленияНаОтмену</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>Нотариальная</dataPath>
<field>Нотариальная</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>РеквизитыНотариальнойДоверенности</dataPath>
<field>РеквизитыНотариальнойДоверенности</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>НомерВРеестреНотариальныхДействий</dataPath>
<field>НомерВРеестреНотариальныхДействий</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>Доверители</dataPath>
<field>Доверители</field>
@@ -2592,24 +2771,8 @@
<field>ИмяПредопределенныхДанных</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>СтатусВДругомРеестре</dataPath>
<field>СтатусВДругомРеестре</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>ИндексСтатусаВДругомРеестре</dataPath>
<field>ИндексСтатусаВДругомРеестре</field>
<title>
<localValue>
<content>
<key>ru</key>
<value>Индекс статуса в другом реестре</value>
</content>
</localValue>
</title>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>ТехническийСтатус</dataPath>
<field>ТехническийСтатус</field>
<dataPath>ФайлДоверенности</dataPath>
<field>ФайлДоверенности</field>
</fields>
<parameters>
<name>Доверитель</name>
@@ -3163,6 +3326,17 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПараметрыПодключаемыхКоманд</name>
<id>17</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ЗагрузитьИзФайла</name>
<title>
@@ -196,6 +196,19 @@
Возврат;
КонецЕсли;
ЕстьКолонкаСтатус = Ложь;
ЕстьКолонкаИндекс = Ложь;
Для Каждого Строка Из Строки Цикл
ЕстьКолонкаСтатус = Строка.Значение.Данные.Свойство("СтатусВДругомРеестре");
ЕстьКолонкаИндекс = Строка.Значение.Данные.Свойство("ИндексСтатусаВДругомРеестре");
Прервать;
КонецЦикла;
Если Не ЕстьКолонкаСтатус И Не ЕстьКолонкаИндекс Тогда
Возврат;
КонецЕсли;
Доверенности = Новый Соответствие;
МассивДоверенностей = Строки.ПолучитьКлючи();
@@ -211,9 +224,12 @@
Если Статус = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ЕстьКолонкаСтатус Тогда
Строка.Значение.Данные.СтатусВДругомРеестре = Статус.Статус;
КонецЕсли;
Если ЕстьКолонкаИндекс Тогда
Строка.Значение.Данные.ИндексСтатусаВДругомРеестре = Статус.ИндексКартинки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -11,6 +11,8 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.НомерВРеестреНотариальныхДействий.Видимость = Объект.Нотариальная;
Просрочена = ЗначениеЗаполнено(Объект.ДатаОкончания) И КонецДня(Объект.ДатаОкончания) < ТекущаяДатаСеанса();
ПериодОпросаСтатусов = 300;
@@ -23,6 +25,8 @@
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
ПрочитатьРеквизиты(Параметры.ЗначениеКопирования.ПолучитьОбъект());
ИначеЕсли ЗначениеЗаполнено(Параметры.Основание) Тогда
ПрочитатьРеквизитыОснования(Параметры.Основание);
ИначеЕсли ЗначениеЗаполнено(Параметры.Доверитель) Или ЗначениеЗаполнено(Параметры.Представитель) Тогда
Если ЗначениеЗаполнено(Параметры.Доверитель) Тогда
ДобавитьУчастника(Параметры.Доверитель, "Доверитель");
@@ -40,6 +44,8 @@
ЗаполнитьПолномочияПоКодам(Параметры.Полномочия);
КонецЕсли;
ЗаголовокФормы();
Иначе
ДанныеСостояния = МашиночитаемыеДоверенностиФНССлужебный.ПрочитатьСостояниеМЧД(Объект.Ссылка);
ТехническийСтатус = ДанныеСостояния.ТехническийСтатус;
@@ -51,10 +57,12 @@
ПоказыватьПерсональныеДанные = ПоказыватьПерсональныеДанные();
ЗагрузитьЗначенияВФорму();
МашиночитаемыеДоверенностиФНССлужебный.УстановитьУсловноеОформление(ЭтотОбъект);
ПрочитатьСостояние(ЭтотОбъект);
ПостроитьЦепочкуПередоверия();
ОтобразитьДанныеПервоначальнойДоверенности();
ЗагрузитьЗначенияВФорму();
УстановитьУсловноеОформление();
ПрочитатьСостояние(ЭтотОбъект);
ПрочитатьСостояниеВДругомРеестре();
// СтандартныеПодсистемы.ПодключаемыеКоманды
@@ -81,7 +89,7 @@
Если Модифицированность Или Параметры.Ключ.Пустая() Тогда
ОбновитьОбъект(ТекущийОбъект);
Если Не ПроверитьДублированиеСтрок() Тогда
Если Не РеквизитыНедоступныДляРедактирования И Не ПроверитьДублированиеСтрокИДанныеПервоначальнойДоверенности() Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
@@ -98,6 +106,14 @@
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Модифицированность И Не РеквизитыНедоступныДляРедактирования И ЗначениеЗаполнено(Объект.ФайлДоверенности) Тогда
Если Не ОбновитьСформироватьФайлДоверенности() Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если ИспользуетсяАвтоНаименование Тогда
Объект.Наименование = "";
КонецЕсли;
@@ -107,10 +123,6 @@
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
ПрочитатьСостояниеВДругомРеестре();
ПрочитатьРеквизиты(ТекущийОбъект);
@@ -120,6 +132,11 @@
РазрешитьПередоверие = ТекущийОбъект.ВозможностьПередоверия = ПредопределенноеЗначение("Перечисление.ВозможностьПередоверияМЧД.ОднократноеПередоверие")
Или ТекущийОбъект.ВозможностьПередоверия = ПредопределенноеЗначение("Перечисление.ВозможностьПередоверияМЧД.МногократноеПередоверие");
ЗаголовокФормы();
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
&НаСервере
@@ -397,32 +414,30 @@
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияПолномочияПредставителяНажатие(Элемент)
Процедура ПервоначальныйДоверительОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВводаПолномочий", ЭтотОбъект);
СтандартнаяОбработка = Ложь;
Назначение = МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.НазначениеДоверенностиДляПроверкиРеквизитов();
Назначение.ТипУчастника = ПредопределенноеЗначение("Перечисление.ТипыУчастниковМЧД.Доверитель");
ПараметрыФормы = МашиночитаемыеДоверенностиФНССлужебныйКлиент.ПараметрыФормыВводаРеквизитов(ДоверительПервоначальнойДоверенности,
ДоверительПервоначальнойДоверенностиРеквизиты, Истина, Назначение);
МашиночитаемыеДоверенностиФНСКлиентПереопределяемый.ПриНачалеВыбораПолномочий(
ОписаниеОповещения, СтандартнаяОбработка);
ПараметрыФормы.ПоказыватьПерсональныеДанные = ПоказыватьПерсональныеДанные Или Не ТолькоПросмотр;
Если СтандартнаяОбработка = Истина Тогда
МашиночитаемыеДоверенностиФНССлужебныйКлиент.ОткрытьФормуВводаРеквизитов(ЭтотОбъект, ПараметрыФормы);
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("ТекстПолномочий", Объект.ТекстПолномочий);
СтруктураДанных.Вставить("ПолномочияВТекстовомВиде", Объект.ПолномочияВТекстовомВиде);
СтруктураДанных.Вставить("Полномочия");
Если Объект.Полномочия.Количество() > 0 Тогда
СтруктураДанных.Полномочия = АдресПолномочий();
КонецЕсли;
КонецПроцедуры
ОткрытьФорму(
"Справочник.МашиночитаемыеДоверенности.Форма.ФормаВводаПолномочий",
Новый Структура("ТолькоПросмотр, ВыбранныеПолномочия", РеквизитыНедоступныДляРедактирования, СтруктураДанных),
ЭтотОбъект,,,,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
&НаКлиенте
Процедура ТекстПолномочийОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытиеФормыВводаПолномочий();
КонецПроцедуры
&НаКлиенте
Процедура ТекстПолномочийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытиеФормыВводаПолномочий();
КонецПроцедуры
&НаКлиенте
@@ -544,6 +559,15 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПередоверие
&НаКлиенте
Процедура ПередовериеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПоказатьЗначение(, Элементы.ЦепочкаПередоверия.ТекущиеДанные.Ссылка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
@@ -772,6 +796,11 @@
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПолномочия(Команда)
ОткрытиеФормыВводаПолномочий();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -855,7 +884,7 @@
РезультатПроверкиПодписиВФорме = ЭлектроннаяПодписьКлиентСервер.РезультатПроверкиПодписиВФорме();
ЗаполнитьЗначенияСвойств(РезультатПроверкиПодписиВФорме, РезультатПроверкиПодписи,,"РезультатПроверки");
ЗаполнитьЗначенияСвойств(РезультатПроверкиПодписиВФорме.РезультатПроверки, РезультатПроверкиПодписи);
ЗаполнитьЗначенияСвойств(РезультатПроверкиПодписиВФорме.РезультатПроверки, РезультатПроверкиПодписи.РезультатПроверки);
РезультатПроверкиПодписиВФорме.РезультатПроверки.ДополнительныеАтрибутыПровереныВручную = Ложь;
РезультатПроверкиПодписиВФорме.РезультатПроверки.АвторРучнойПроверкиДополнительныхАтрибутов = Неопределено;
РезультатПроверкиПодписиВФорме.РезультатПроверки.ОбоснованиеРучнойПроверкиДополнительныхАтрибутов = "";
@@ -999,6 +1028,7 @@
Объект.Полномочия.Очистить();
Объект.Ограничения.Очистить();
КонецЕсли;
ЕстьПолномочияДляНалоговыхОрганов = Ложь;
Если Не Объект.ПолномочияВТекстовомВиде Тогда
@@ -1057,8 +1087,15 @@
КонецЕсли;
КонецЕсли;
КоличествоПолномочий = Объект.Полномочия.Количество();
Если КоличествоПолномочий > 500 Тогда
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Количество машиночитаемых полномочий не должно превышать 500 (выбрано %1). Рекомендуется создать вторую доверенность.'"), КоличествоПолномочий),,,"ТекстПолномочий", Отказ);
КонецЕсли;
Если Объект.ПолномочияВТекстовомВиде И ПустаяСтрока(Объект.ТекстПолномочий)
Или Не Объект.ПолномочияВТекстовомВиде И Объект.Полномочия.Количество() = 0 Тогда
Или Не Объект.ПолномочияВТекстовомВиде И КоличествоПолномочий = 0 Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не заполнены полномочия.'"),,,,Отказ);
КонецЕсли;
@@ -1132,7 +1169,7 @@
КонецЦикла;
Если Не ПроверитьДублированиеСтрок() Тогда
Если Не ПроверитьДублированиеСтрокИДанныеПервоначальнойДоверенности() Тогда
Отказ = Истина;
КонецЕсли;
@@ -1141,7 +1178,7 @@
КонецФункции
&НаСервере
Функция ПроверитьДублированиеСтрок()
Функция ПроверитьДублированиеСтрокИДанныеПервоначальнойДоверенности()
Отказ = Ложь;
@@ -1150,6 +1187,60 @@
ТаблицаДляПроверкиДублей.Колонки.Добавить("КПП");
ТаблицаДляПроверкиДублей.Колонки.Добавить("ТабличнаяЧасть");
ТаблицаДляПроверкиПервоначальнойДоверенности = Новый ТаблицаЗначений;
ТаблицаДляПроверкиПервоначальнойДоверенности.Колонки.Добавить("Ссылка");
ТаблицаДляПроверкиПервоначальнойДоверенности.Колонки.Добавить("ИНН");
ТаблицаДляПроверкиПервоначальнойДоверенности.Колонки.Добавить("КПП");
Если ЗначениеЗаполнено(Объект.РодительскаяДоверенность) Тогда
РеквизитыРодительскойДоверенности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.РодительскаяДоверенность, "Представители, ДатаОкончания");
ПредставителиРодительскойДоверенности = РеквизитыРодительскойДоверенности.Представители.Выгрузить();
Если Объект.ДатаОкончания > РеквизитыРодительскойДоверенности.ДатаОкончания Тогда
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Дата окончания действия не должна быть больше, чем у родительской доверенности (%1)'"),
Формат(РеквизитыРодительскойДоверенности.ДатаОкончания, "ДЛФ=D")),, "ДатаОкончания",, Отказ);
КонецЕсли;
Для Каждого Строка Из ПредставителиРодительскойДоверенности Цикл
РеквизитыОрганизации = Строка.ПредставительРеквизиты.Получить();
ИНН = "";
КПП = "";
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
ШаблонОшибки = НСтр("ru = 'Организация %1 - %2'");
ИНН = РеквизитыОрганизации.ИНН;
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
КПП = РеквизитыОрганизации.КПП;
КонецЕсли;
Иначе
ШаблонОшибки = НСтр("ru = 'Физическое лицо %1 - %2'");
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
ИНН = РеквизитыОрганизации.ИННФЛ;
КонецЕсли;
КонецЕсли;
НоваяСтрока = ТаблицаДляПроверкиПервоначальнойДоверенности.Добавить();
НоваяСтрока.Ссылка = Строка.Представитель;
НоваяСтрока.ИНН = ИНН;
НоваяСтрока.КПП = КПП;
КонецЦикла;
ИначеЕсли ЗначениеЗаполнено(Объект.РодительскаяДоверенностьНомер) Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не указана ссылка на первоначальную доверенность'"),, "РодительскаяДоверенностьНомер",, Отказ);
КонецЕсли;
Для Каждого Строка Из Объект.Доверители Цикл
РеквизитыОрганизации = ПолучитьИзВременногоХранилища(Строка.АдресРеквизитов);
@@ -1173,8 +1264,23 @@
КонецЕсли;
КонецЕсли;
ПредставлениеДоверителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Доверитель, ИНН, КПП);
Если Не ЗначениеЗаполнено(Строка.ИдентификаторРодителя) Тогда
Поле = "Доверитель";
Если ЗначениеЗаполнено(ИНН) И ТаблицаДляПроверкиПервоначальнойДоверенности.Количество() > 0 Тогда
Если ТаблицаДляПроверкиПервоначальнойДоверенности.НайтиСтроки(
Новый Структура("ИНН, КПП", ИНН, КПП)).Количество() = 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПредставлениеДоверителя, НСтр(
"ru = 'отсутствует в представителях первоначальной доверенности.'"));
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
КонецЕсли;
КонецЕсли;
Иначе
Поле = "ЛицоДоверителя";
КонецЕсли;
@@ -1187,8 +1293,7 @@
СтруктураОтбора.Вставить("ТабличнаяЧасть", "Доверители");
Если ТаблицаДляПроверкиДублей.НайтиСтроки(СтруктураОтбора).Количество() > 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, Строка.Доверитель, НСтр(
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПредставлениеДоверителя, НСтр(
"ru = 'указано несколько доверителей с одним ИНН.'"));
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
Иначе
@@ -1230,6 +1335,8 @@
Поле = "ЛицоПредставителя";
КонецЕсли;
ПредставлениеПредставителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Представитель, ИНН, КПП);
Если ЗначениеЗаполнено(ИНН) Тогда
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ИНН", ИНН);
@@ -1239,7 +1346,7 @@
Если ТаблицаДляПроверкиДублей.НайтиСтроки(СтруктураОтбора).Количество() > 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки,
Строка.Представитель, НСтр(
ПредставлениеПредставителя, НСтр(
"ru = 'указано несколько представителей с одним ИНН.'"));
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
Иначе
@@ -1253,7 +1360,7 @@
Если ТаблицаДляПроверкиДублей.НайтиСтроки(СтруктураОтбора).Количество() > 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки,
Строка.Представитель, НСтр(
ПредставлениеПредставителя, НСтр(
"ru = 'указан представитель и доверитель с одним и тем же ИНН.'"));
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
@@ -1265,6 +1372,29 @@
КонецФункции
&НаСервере
Функция ПредставлениеДоверителяПредставителяДляОшибки(Ссылка, ИНН, КПП)
Если ЗначениеЗаполнено(Ссылка) Тогда
Если ЗначениеЗаполнено(КПП) Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (ИНН: %2, КПП %3)'"), Ссылка, ИНН, КПП);
Иначе
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (ИНН: %2)'"), Ссылка, ИНН);
КонецЕсли;
Иначе
Если ЗначениеЗаполнено(КПП) Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'с ИНН: %1, КПП %2'"), ИНН, КПП);
Иначе
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'с ИНН: %1'"), ИНН);
КонецЕсли;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ДекорацияНалоговыеОрганыДействияНажатиеПослеВвода(
СтруктураДанных,
@@ -1628,6 +1758,11 @@
ВидимостьДляНалоговыхОрганов(Форма);
КонецЕсли;
Если Условие = Неопределено Тогда
Форма.Элементы.ВыбратьПолномочия.Видимость = Не Форма.РеквизитыНедоступныДляРедактирования;
Форма.Элементы.ТекстПолномочий.КнопкаОткрытия = Форма.РеквизитыНедоступныДляРедактирования;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
@@ -1652,7 +1787,9 @@
Форма.Элементы.ГруппаЭлектронныеПодписи.Видимость = Форма.ЭлектронныеПодписи.Количество() > 0;
Если Форма.ЭлектронныеПодписи.Количество() = 1 Тогда
Если Форма.Объект.Нотариальная Тогда
Форма.Элементы.ГруппаЭлектронныеПодписи.Заголовок = НСтр("ru = 'Подпись нотариуса'");
ИначеЕсли Форма.ЭлектронныеПодписи.Количество() = 1 Тогда
Форма.Элементы.ГруппаЭлектронныеПодписи.Заголовок = НСтр("ru = 'Подпись доверителя'");
Иначе
Форма.Элементы.ГруппаЭлектронныеПодписи.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -2309,9 +2446,10 @@
Назначение.ТипУчастника = МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.ТипУчастникаМЧД(ИмяЭлементаОрганизация);
Назначение.ДляНалоговыхОрганов = Объект.ДляНалоговыхОрганов;
ТолькоОсновные = Подписана Или ВнешнийСтатус(ЭтотОбъект);
Возврат МашиночитаемыеДоверенностиФНССлужебный.ЗаголовокДекорации(Назначение, Реквизиты, ИмяЭлементаОрганизация,
Подписана Или ВнешнийСтатус(ЭтотОбъект), ТолькоОбязательные,
ПоказыватьПерсональныеДанные Или Не ТолькоПросмотр);
ТолькоОсновные, ТолькоОбязательные, ПоказыватьПерсональныеДанные Или Не ТолькоПросмотр);
КонецФункции
@@ -2332,58 +2470,50 @@
Процедура СформироватьЗаголовокПолномочий(Форма)
Если Не Форма.Объект.ПолномочияВТекстовомВиде И Форма.Объект.Полномочия.Количество() = 0 Тогда
Форма.Элементы.ДекорацияПолномочияПредставителя.Заголовок = НСтр("ru = '<Не выбраны>'");
ИначеЕсли Форма.Объект.ПолномочияВТекстовомВиде
И Форма.Объект.ТекстПолномочий = МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.ПредставлениеНеограниченныхПолномочий() Тогда
Форма.Элементы.ДекорацияПолномочияПредставителя.Заголовок = Форма.Объект.ТекстПолномочий;
Форма.ТекстПолномочий = НСтр("ru = '<Не выбраны>'");
ИначеЕсли Форма.Объект.ПолномочияВТекстовомВиде Тогда
Если СтрДлина(Форма.Объект.ТекстПолномочий) > 255 Тогда
Форма.Элементы.ДекорацияПолномочияПредставителя.Заголовок = Лев(Форма.Объект.ТекстПолномочий, 255) + " ...";
Иначе
Форма.Элементы.ДекорацияПолномочияПредставителя.Заголовок = Форма.Объект.ТекстПолномочий;
КонецЕсли;
Форма.ТекстПолномочий = Форма.Объект.ТекстПолномочий;
Иначе
ПредставлениеПолномочий = Новый Массив;
Для Каждого СтрокаПолномочия Из Форма.Объект.Полномочия Цикл
ПредставлениеПолномочия = ?(ЗначениеЗаполнено(СтрокаПолномочия.Наименование),
СтрокаПолномочия.Наименование, СтрокаПолномочия.Код);
ЕстьОграничения = "";
Если Форма.Объект.Ограничения.НайтиСтроки(
Новый Структура("ИдентификаторПолномочия", СтрокаПолномочия.ИдентификаторПолномочия)).Количество() > 0 Тогда
ЕстьОграничения = " " + НСтр("ru = '(с ограничениями)'");
КонецЕсли;
МассивОграничений = Новый Массив;
Найдено = Форма.Объект.Ограничения.НайтиСтроки(
Новый Структура("ИдентификаторПолномочия", СтрокаПолномочия.ИдентификаторПолномочия));
Если ПустаяСтрока(ПредставлениеПолномочия) Тогда
ПредставлениеПолномочия = НСтр("ru = '<Не заполнено>'") + ЕстьОграничения;
ИначеЕсли СтрДлина(ПредставлениеПолномочия) > 255 Тогда
ПредставлениеПолномочия = Лев(ПредставлениеПолномочия, 255) + ЕстьОграничения + " ...";
Иначе
ПредставлениеПолномочия = ПредставлениеПолномочия + ЕстьОграничения;
Для Каждого СтрокаОграничение Из Найдено Цикл
Массив = Новый Массив;
Если ЗначениеЗаполнено(СтрокаОграничение.Наименование) Тогда
Массив.Добавить(СтрокаОграничение.Наименование + ":");
ИначеЕсли ЗначениеЗаполнено(СтрокаОграничение.Код) Тогда
Массив.Добавить(СтрокаОграничение.Код + ":");
КонецЕсли;
ПредставлениеПолномочий.Добавить(ПредставлениеПолномочия);
Если ПредставлениеПолномочий.Количество() > 5 Тогда
Прервать;
Если ЗначениеЗаполнено(СтрокаОграничение.НаименованиеЗначения) Тогда
Массив.Добавить(СтрокаОграничение.НаименованиеЗначения);
ИначеЕсли ЗначениеЗаполнено(СтрокаОграничение.КодЗначения) Тогда
Массив.Добавить(СтрокаОграничение.КодЗначения);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаОграничение.ТекстовоеЗначение) Тогда
Массив.Добавить(СтрокаОграничение.ТекстовоеЗначение);
КонецЕсли;
МассивОграничений.Добавить(СтрСоединить(Массив, " "));
КонецЦикла;
КоличествоПолномочийВЗаголовке = ПредставлениеПолномочий.Количество();
Если ПустаяСтрока(ПредставлениеПолномочия) Тогда
ПредставлениеПолномочия = НСтр("ru = '<Не заполнено>'");
КонецЕсли;
Если КоличествоПолномочийВЗаголовке = 0 Тогда
Форма.Элементы.ДекорацияПолномочияПредставителя.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Машиночитаемые полномочия (%1)...'"), Форма.Объект.Полномочия.Количество());
Иначе
КоличествоПолномочийВЗаголовке = Форма.Объект.Полномочия.Количество() - КоличествоПолномочийВЗаголовке;
Если КоличествоПолномочийВЗаголовке > 0 Тогда
Форма.Элементы.ДекорацияПолномочияПредставителя.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 и еще %2...'"),
СтрСоединить(ПредставлениеПолномочий, ";" + Символы.ПС), КоличествоПолномочийВЗаголовке);
Иначе
Форма.Элементы.ДекорацияПолномочияПредставителя.Заголовок = СтрСоединить(ПредставлениеПолномочий, ";" + Символы.ПС);
КонецЕсли;
КонецЕсли;
ПредставлениеПолномочия = ПредставлениеПолномочия + ?(МассивОграничений.Количество()>0,
Символы.ПС + Символы.Таб + СтрСоединить(МассивОграничений, Символы.ПС + Символы.Таб), "");
ПредставлениеПолномочий.Добавить(ПредставлениеПолномочия);
КонецЦикла;
Форма.ТекстПолномочий = СтрСоединить(ПредставлениеПолномочий, ";" + Символы.ПС);
КонецЕсли;
КонецПроцедуры
@@ -2505,16 +2635,14 @@
Возврат;
КонецЕсли;
Если Форма.ДоверительРеквизиты <> Неопределено И
(Форма.ДоверительРеквизиты.ЭтоФизическоеЛицо Или
Форма.ДоверительРеквизиты.ЭтоИндивидуальныйПредприниматель
Или Форма.ДоверительРеквизиты.ЭтоИностраннаяОрганизация
Если Форма.ДоверительРеквизиты <> Неопределено И (Форма.ДоверительРеквизиты.ЭтоФизическоеЛицо
Или Форма.ДоверительРеквизиты.ЭтоИндивидуальныйПредприниматель Или Форма.ДоверительРеквизиты.ЭтоИностраннаяОрганизация
Или Форма.ДоверительРеквизиты.ЭтоФилиал) Тогда
Форма.Элементы.ДекорацияЛицоДоверителяЗаголовок.Видимость = Ложь;
Форма.Элементы.ЛицоДоверителяВыборТипа.Видимость = Ложь;
Форма.Элементы.ЛицоДоверителяТипДекорация.Видимость = Истина;
Иначе
Форма.Элементы.ДекорацияЛицоДоверителяЗаголовок.Видимость = Истина;
Форма.Элементы.ДекорацияЛицоДоверителяЗаголовок.Видимость = Не ЗначениеЗаполнено(Форма.Объект.РодительскаяДоверенностьНомер);
Форма.Элементы.ЛицоДоверителяВыборТипа.Видимость = Не Форма.РеквизитыНедоступныДляРедактирования;
Форма.Элементы.ЛицоДоверителяТипДекорация.Видимость = Форма.РеквизитыНедоступныДляРедактирования;
КонецЕсли;
@@ -3051,6 +3179,14 @@
КонецПроцедуры
&НаСервере
Процедура ПрочитатьРеквизитыОснования(Основание)
Представители = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Основание, "Представители").Выгрузить();
ПрочитатьРеквизитыТабличнойЧасти(Представители, Объект.Доверители, "ПредставительРеквизиты");
КонецПроцедуры
&НаСервере
Процедура ПрочитатьРеквизитыТабличнойЧасти(ТабличнаяЧастьОбъекта, ТабличнаяЧастьФормы, ИмяРеквизита)
@@ -3126,6 +3262,16 @@
КонецФункции
&НаСервере
Функция АдресПолномочийРодительскойДоверенности()
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.РодительскаяДоверенность,"Полномочия, Ограничения");
Структура = Новый Структура("Полномочия, Ограничения", Реквизиты.Полномочия.Выгрузить(), Реквизиты.Ограничения.Выгрузить());
Возврат ПоместитьВоВременноеХранилище(Структура, УникальныйИдентификатор);
КонецФункции
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
@@ -3496,4 +3642,350 @@
КонецПроцедуры
&НаСервере
Процедура ЗаголовокФормы()
Если ЗначениеЗаполнено(Объект.РодительскаяДоверенностьНомер) Тогда
Автозаголовок = Ложь;
Если Параметры.Ключ.Пустая() Тогда
Заголовок = НСтр("ru = 'Передоверие (создание)'");
Иначе
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (Передоверие)'"), Объект.Наименование);
КонецЕсли;
Иначе
Автозаголовок = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОтобразитьДанныеПервоначальнойДоверенности()
Если Не ЗначениеЗаполнено(Объект.РодительскаяДоверенностьНомер) Тогда
Элементы.ГруппаДоверительПервоначальнойДоверенности.Видимость = Ложь;
Возврат;
КонецЕсли;
Элементы.ГруппаДоверительПервоначальнойДоверенности.Видимость = Истина;
Если ЗначениеЗаполнено(Объект.ФайлДоверенности) Тогда
Доверители = Справочники.МашиночитаемыеДоверенности.ДоверителиПервоначальнойДоверенностиПоФайлу(Объект.ФайлДоверенности);
РеквизитыДоверителя = Доверители[0];
Если Не РеквизитыДоверителя.ЭтоФизическоеЛицо Тогда
Элементы.ДоверительПервоначальнойДоверенностиТипДекорация.Заголовок = НСтр("ru = 'Организация'");
ДоверительПервоначальнойДоверенностиНаименование = РеквизитыДоверителя.НаименованиеПолное;
Иначе
Элементы.ДоверительПервоначальнойДоверенностиТипДекорация.Заголовок = НСтр("ru = 'Физическое лицо'");
Массив = Новый Массив;
Массив.Добавить(РеквизитыДоверителя.Фамилия);
Массив.Добавить(РеквизитыДоверителя.Имя);
Если ЗначениеЗаполнено(РеквизитыДоверителя.Отчество) Тогда
Массив.Добавить(РеквизитыДоверителя.Отчество);
КонецЕсли;
ДоверительПервоначальнойДоверенностиНаименование = СтрСоединить(Массив, " ");
КонецЕсли;
ДоверительПервоначальнойДоверенностиРеквизиты = РеквизитыДоверителя;
ИначеЕсли ЗначениеЗаполнено(Объект.РодительскаяДоверенность) Тогда
Доверители = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.РодительскаяДоверенность,
"Доверители").Выгрузить();
Найдено = Доверители.НайтиСтроки(Новый Структура("ИдентификаторРодителя",
Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")));
Доверители = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Объект.РодительскаяДоверенность, "Доверители").Выгрузить();
Если Доверители.Количество() > 0 Тогда
РеквизитыДоверителя = Доверители[0].ДоверительРеквизиты.Получить();
Если Не РеквизитыДоверителя.ЭтоФизическоеЛицо Тогда
ДоверительПервоначальнойДоверенностиНаименование = ?(ЗначениеЗаполнено(РеквизитыДоверителя.НаименованиеСокращенное),
РеквизитыДоверителя.НаименованиеСокращенное, РеквизитыДоверителя.НаименованиеПолное);
Иначе
ДоверительПервоначальнойДоверенностиНаименование = СтрШаблон("%1 %2 %3", РеквизитыДоверителя.Фамилия,
РеквизитыДоверителя.Имя, РеквизитыДоверителя.Отчество);
КонецЕсли;
ДоверительПервоначальнойДоверенностиРеквизиты = РеквизитыДоверителя;
ДоверительПервоначальнойДоверенности = Доверители[0].Доверитель;
КонецЕсли;
Иначе
Элементы.ДоверительПервоначальнойДоверенностиНаименование.Заголовок =
НСтр("ru = 'Отсутствует файл доверенности, нет данных о первоначальном доверителе'");
Элементы.ДоверительПервоначальнойДоверенностиНаименование.КнопкаОткрытия = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПостроитьЦепочкуПередоверия()
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Ссылка");
ТаблицаЗначений.Колонки.Добавить("Наименование");
ТаблицаЗначений.Колонки.Добавить("Уровень");
ТаблицаЗначений.Колонки.Добавить("ИндексСтатуса");
ТаблицаЗначений.Колонки.Добавить("ФайлДоверенности");
ТаблицаЗначений.Колонки.Добавить("НомерДоверенности");
Если ЗначениеЗаполнено(Объект.НомерДоверенности) Тогда
Уровень = 0 ;
ДочерняяДоверенность = ДочерняяДоверенность(Объект.НомерДоверенности);
Пока ДочерняяДоверенность <> Неопределено Цикл
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Наименование = ДочерняяДоверенность.Наименование;
НоваяСтрока.Ссылка = ДочерняяДоверенность.Ссылка;
НоваяСтрока.ИндексСтатуса = ДочерняяДоверенность.ИндексСтатуса;
НоваяСтрока.ФайлДоверенности = ДочерняяДоверенность.ФайлДоверенности;
НоваяСтрока.НомерДоверенности = ДочерняяДоверенность.НомерДоверенности;
Уровень = Уровень - 1;
НоваяСтрока.Уровень = Уровень;
// @skip-check query-in-loop - обычно не более 2 запросов, проектное решение.
ДочерняяДоверенность = ДочерняяДоверенность(ДочерняяДоверенность.НомерДоверенности);
КонецЦикла;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.РодительскаяДоверенностьНомер) Тогда
Уровень = 0 ;
РодительскаяДоверенность = РодительскаяДоверенность(Объект.РодительскаяДоверенностьНомер);
Если Не ЗначениеЗаполнено(Объект.РодительскаяДоверенность) И ЗначениеЗаполнено(РодительскаяДоверенность) Тогда
Объект.РодительскаяДоверенность = РодительскаяДоверенность.Ссылка;
Модифицированность = Ложь;
КонецЕсли;
Пока РодительскаяДоверенность <> Неопределено Цикл
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Наименование = РодительскаяДоверенность.Наименование;
НоваяСтрока.Ссылка = РодительскаяДоверенность.Ссылка;
НоваяСтрока.ИндексСтатуса = РодительскаяДоверенность.ИндексСтатуса;
НоваяСтрока.ФайлДоверенности = РодительскаяДоверенность.ФайлДоверенности;
НоваяСтрока.НомерДоверенности = РодительскаяДоверенность.НомерДоверенности;
Уровень = Уровень + 1;
НоваяСтрока.Уровень = Уровень;
// @skip-check query-in-loop - обычно не более 2 запросов, проектное решение.
РодительскаяДоверенность = РодительскаяДоверенность(РодительскаяДоверенность.РодительскаяДоверенностьНомер);
КонецЦикла;
КонецЕсли;
Если ТаблицаЗначений.Количество() > 0 Тогда
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Уровень = 0;
НоваяСтрока.НомерДоверенности = Объект.НомерДоверенности;
НоваяСтрока.Ссылка = Объект.Ссылка;
Если Объект.Статус = Перечисления.СтатусыМЧД.Действует Тогда
Если КонецДня(Объект.ДатаОкончания) >= ТекущаяДатаСеанса()
И КонецДня(Объект.ДатаОкончания) <= ТекущаяДатаСеанса() + 3*24*60*60 Тогда
НоваяСтрока.ИндексСтатуса = 3;
ИначеЕсли Объект.ДатаВыдачи > ТекущаяДатаСеанса() Тогда
НоваяСтрока.ИндексСтатуса = 5;
ИначеЕсли КонецДня(Объект.ДатаОкончания) >= ТекущаяДатаСеанса() Тогда
НоваяСтрока.ИндексСтатуса = 2;
Иначе
НоваяСтрока.ИндексСтатуса = 4;
КонецЕсли;
ИначеЕсли Объект.Статус = Перечисления.СтатусыМЧД.Черновик Тогда
НоваяСтрока.ИндексСтатуса = 5;
ИначеЕсли Объект.Статус = Перечисления.СтатусыМЧД.НеДействует Тогда
НоваяСтрока.ИндексСтатуса = 4;
Иначе
НоваяСтрока.ИндексСтатуса = 5;
КонецЕсли;
НоваяСтрока.Наименование =?(ЗначениеЗаполнено(Объект.Наименование), Объект.Наименование, НСтр("ru = 'Текущая доверенность'"));
ТаблицаЗначений.Сортировать("Уровень Убыв");
Родитель = ЦепочкаПередоверия.ПолучитьЭлементы();
Для Каждого Строка Из ТаблицаЗначений Цикл
НоваяСтрока = Родитель.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Родитель = НоваяСтрока.ПолучитьЭлементы();
КонецЦикла;
Элементы.ГруппаПередоверие.Видимость = Истина;
Иначе
Элементы.ГруппаПередоверие.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДочерняяДоверенность(НомерДоверенности)
Если Не ЗначениеЗаполнено(НомерДоверенности) Тогда
Возврат Неопределено;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МашиночитаемыеДоверенности.Ссылка КАК Ссылка,
| МашиночитаемыеДоверенности.НомерДоверенности КАК НомерДоверенности,
| МашиночитаемыеДоверенности.ФайлДоверенности КАК ФайлДоверенности,
| ВЫБОР
| КОГДА КОНЕЦПЕРИОДА(МашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ) МЕЖДУ &ТекущаяДата И &СрокИстекающихДоверенностей
| И МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
| ТОГДА 3
| КОГДА &ТекущаяДата > КОНЕЦПЕРИОДА(МашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
| И МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
| ТОГДА 4
| КОГДА МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Черновик)
| ТОГДА 5
| КОГДА &ТекущаяДата
| МЕЖДУ МашиночитаемыеДоверенности.ДатаВыдачи И КОНЕЦПЕРИОДА(МашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
| И МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
| ТОГДА 2
| КОГДА МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.НеДействует)
| ТОГДА 4
| ИНАЧЕ 5
| КОНЕЦ КАК ИндексСтатуса,
| МашиночитаемыеДоверенности.Наименование КАК Наименование
|ИЗ
| Справочник.МашиночитаемыеДоверенности КАК МашиночитаемыеДоверенности
|ГДЕ
| МашиночитаемыеДоверенности.РодительскаяДоверенностьНомер = &НомерДоверенности
| И НЕ МашиночитаемыеДоверенности.ПометкаУдаления";
Запрос.УстановитьПараметр("НомерДоверенности", НомерДоверенности);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("СрокИстекающихДоверенностей", ТекущаяДатаСеанса() + 3*24*60*60);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка;
КонецФункции
&НаСервере
Функция РодительскаяДоверенность(РодительскаяДоверенностьНомер)
Если Не ЗначениеЗаполнено(РодительскаяДоверенностьНомер) Тогда
Возврат Неопределено;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МашиночитаемыеДоверенности.Ссылка КАК Ссылка,
| МашиночитаемыеДоверенности.НомерДоверенности КАК НомерДоверенности,
| МашиночитаемыеДоверенности.РодительскаяДоверенностьНомер КАК РодительскаяДоверенностьНомер,
| МашиночитаемыеДоверенности.ФайлДоверенности КАК ФайлДоверенности,
| ВЫБОР
| КОГДА КОНЕЦПЕРИОДА(МашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ) МЕЖДУ &ТекущаяДата И &СрокИстекающихДоверенностей
| И МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
| ТОГДА 3
| КОГДА &ТекущаяДата > КОНЕЦПЕРИОДА(МашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
| И МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
| ТОГДА 4
| КОГДА МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Черновик)
| ТОГДА 5
| КОГДА &ТекущаяДата МЕЖДУ МашиночитаемыеДоверенности.ДатаВыдачи И КОНЕЦПЕРИОДА(МашиночитаемыеДоверенности.ДатаОкончания, ДЕНЬ)
| И МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.Действует)
| ТОГДА 2
| КОГДА МашиночитаемыеДоверенности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыМЧД.НеДействует)
| ТОГДА 4
| ИНАЧЕ 5
| КОНЕЦ КАК ИндексСтатуса,
| МашиночитаемыеДоверенности.Наименование КАК Наименование
|ИЗ
| Справочник.МашиночитаемыеДоверенности КАК МашиночитаемыеДоверенности
|ГДЕ
| МашиночитаемыеДоверенности.НомерДоверенности = &РодительскаяДоверенностьНомер
| И НЕ МашиночитаемыеДоверенности.ПометкаУдаления";
Запрос.УстановитьПараметр("РодительскаяДоверенностьНомер", РодительскаяДоверенностьНомер);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("СрокИстекающихДоверенностей", ТекущаяДатаСеанса() + 3*24*60*60);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка;
КонецФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
МашиночитаемыеДоверенностиФНССлужебный.УстановитьУсловноеОформление(ЭтотОбъект);
Если Элементы.ГруппаПередоверие.Видимость Тогда
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(
Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЦепочкаПередоверия.НомерДоверенности");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Объект.НомерДоверенности;
ЭлементОтбора.Использование = Истина;
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ЦепочкаПередоверия");
ЭлементШрифтаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Шрифт");
Шрифт = Новый Шрифт(Элементы.ЦепочкаПередоверия.Шрифт,,,Истина);
ЭлементШрифтаОформления.Значение = Шрифт;
ЭлементШрифтаОформления.Использование = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытиеФормыВводаПолномочий()
СтандартнаяОбработкаВыбора = Истина;
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВводаПолномочий", ЭтотОбъект);
МашиночитаемыеДоверенностиФНСКлиентПереопределяемый.ПриНачалеВыбораПолномочий(
ОписаниеОповещения, СтандартнаяОбработкаВыбора);
Если СтандартнаяОбработкаВыбора = Истина Тогда
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("ТекстПолномочий", Объект.ТекстПолномочий);
СтруктураДанных.Вставить("ПолномочияВТекстовомВиде", Объект.ПолномочияВТекстовомВиде);
СтруктураДанных.Вставить("Полномочия");
Если Объект.Полномочия.Количество() > 0 Тогда
СтруктураДанных.Полномочия = АдресПолномочий();
КонецЕсли;
ПараметрыФормы = Новый Структура;
Если Не РеквизитыНедоступныДляРедактирования И ЗначениеЗаполнено(Объект.РодительскаяДоверенность) Тогда
ПараметрыФормы.Вставить("ПолномочияРодительскойДоверенности", АдресПолномочийРодительскойДоверенности());
КонецЕсли;
ПараметрыФормы.Вставить("ТолькоПросмотр", РеквизитыНедоступныДляРедактирования);
ПараметрыФормы.Вставить("ВыбранныеПолномочия", СтруктураДанных);
ОткрытьФорму(
"Справочник.МашиночитаемыеДоверенности.Форма.ФормаВводаПолномочий",
ПараметрыФормы,
ЭтотОбъект,,,,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры;
#КонецОбласти
File diff suppressed because it is too large. Load diff
@@ -17,12 +17,20 @@
СтатусУстановленВручную = Ложь;
НомерДоверенности = Неопределено;
ФайлДоверенности = Неопределено;
ФайлЗаявленияНаОтмену = Неопределено;
ДатаОтмены = Неопределено;
Ответственный = Неопределено;
Верна = Ложь;
СтатусВернаУстановленВручную = Ложь;
УстановившийСтатусВерна = Неопределено;
Подписана = Ложь;
Наименование = Неопределено;
ДатаПроверки = Неопределено;
РодительскаяДоверенностьНомер = Неопределено;
РодительскаяДоверенность = Неопределено;
РеквизитыНотариальнойДоверенности = Неопределено;
НомерВРеестреНотариальныхДействий = Неопределено;
Нотариальная = Неопределено;
КонецПроцедуры
@@ -32,6 +40,10 @@
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ВозможностьПередоверия) Тогда
ВозможностьПередоверия = ПредопределенноеЗначение("Перечисление.ВозможностьПередоверияМЧД.БезПередоверия");
КонецЕсли;
Если Не ЗначениеЗаполнено(Наименование) Тогда
Наименование = Справочники.МашиночитаемыеДоверенности.АвтоНаименование(ЭтотОбъект);
КонецЕсли;
@@ -118,6 +130,21 @@
КонецЕсли;
КонецЦикла;
Если Нотариальная Тогда
РеквизитыНотариуса = РеквизитыНотариальнойДоверенности.Получить();
НоваяЗапись = НаборЗаписей.Добавить();
Если ЗначениеЗаполнено(РеквизитыНотариуса.ИсполняющийОбязанностиНотариуса) Тогда
НоваяЗапись.ФИО = ФИО(РеквизитыНотариуса.ИсполняющийОбязанностиНотариуса);
Иначе
НоваяЗапись.ФИО = ФИО(РеквизитыНотариуса.Нотариус);
КонецЕсли;
НоваяЗапись.МашиночитаемаяДоверенность = Ссылка;
НоваяЗапись.ТипУчастника = Перечисления.ТипыУчастниковМЧД.Нотариус;
НоваяЗапись.ЭтоФизическоеЛицо = Истина;
КонецЕсли;
НаборЗаписей.Записать();
Если ДополнительныеСвойства.Свойство("ОбновитьСтатус") Тогда
@@ -126,6 +153,94 @@
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) <> Тип("СправочникСсылка.МашиночитаемыеДоверенности") Тогда
Возврат;
КонецЕсли;
РодительскаяДоверенность = ДанныеЗаполнения;
РеквизитыРодительскойДоверенности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(РодительскаяДоверенность,
"Представители, Полномочия, Ограничения, НомерДоверенности, РегистрироватьВРеестре, ВозможностьПередоверия, ФайлДоверенности, ТекстПолномочий, ПолномочияВТекстовомВиде");
Если Не ЗначениеЗаполнено(РеквизитыРодительскойДоверенности.ВозможностьПередоверия)
Или РеквизитыРодительскойДоверенности.ВозможностьПередоверия = Перечисления.ВозможностьПередоверияМЧД.БезПередоверия Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Доверенность %1 не поддерживает возможность передоверия.'"), РодительскаяДоверенность);
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыРодительскойДоверенности.НомерДоверенности) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не заполнен единый регистрационный номер доверенности %1.'"), РодительскаяДоверенность);
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыРодительскойДоверенности.ФайлДоверенности) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найден файл доверенности %1.'"), РодительскаяДоверенность);
КонецЕсли;
РодительскаяДоверенностьНомер = РеквизитыРодительскойДоверенности.НомерДоверенности;
РегистрироватьВРеестре = РеквизитыРодительскойДоверенности.РегистрироватьВРеестре;
ТЧПредставители = РеквизитыРодительскойДоверенности.Представители.Выгрузить();
Найдено = ТЧПредставители.НайтиСтроки(Новый Структура("ИдентификаторРодителя",
Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")));
ТолькоФизлица = Неопределено; ТолькоИП = Неопределено;
Для каждого СтрокаОрганизация Из Найдено Цикл
РеквизитыОрганизации = СтрокаОрганизация.ПредставительРеквизиты.Получить();
Если РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
ТолькоФизлица = Истина;
Продолжить;
ИначеЕсли РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
ТолькоИП = Истина;
Продолжить;
Иначе
ТолькоФизлица = Ложь; ТолькоИП = Ложь;
НоваяСтрока = Доверители.Добавить();
НоваяСтрока.Доверитель = СтрокаОрганизация.Представитель;
НоваяСтрока.ДоверительРеквизиты = Новый ХранилищеЗначения(РеквизитыОрганизации);
НоваяСтрока.ЭтоФизЛицо = РеквизитыОрганизации.ЭтоФизическоеЛицо;
НоваяСтрока.Идентификатор = СтрокаОрганизация.Идентификатор;
НайденоФизическиеЛица = ТЧПредставители.НайтиСтроки(Новый Структура("ИдентификаторРодителя",
СтрокаОрганизация.Идентификатор));
Если НайденоФизическиеЛица.Количество() > 0 Тогда
СтрокаФизическоеЛицо = НайденоФизическиеЛица[0];
НоваяСтрокаФизЛицо = Доверители.Добавить();
НоваяСтрокаФизЛицо.Доверитель = СтрокаФизическоеЛицо.Представитель;
ДоверительРеквизиты = СтрокаФизическоеЛицо.ПредставительРеквизиты.Получить();
НоваяСтрокаФизЛицо.Идентификатор = СтрокаФизическоеЛицо.Идентификатор;
НоваяСтрокаФизЛицо.ДоверительРеквизиты = Новый ХранилищеЗначения(ДоверительРеквизиты);
НоваяСтрокаФизЛицо.ЭтоФизЛицо = ДоверительРеквизиты.ЭтоФизическоеЛицо;
НоваяСтрокаФизЛицо.ИдентификаторРодителя = НоваяСтрока.Идентификатор;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
Если ТолькоФизлица = Истина Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Передоверие полномочий доверенности %1 от физического лица может быть создано только нотариусом.'"), РодительскаяДоверенность);
КонецЕсли;
Если ТолькоИП = Истина Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Передоверие полномочий доверенности %1 от индивидуального предпринимателя может быть создано только нотариусом.'"), РодительскаяДоверенность);
КонецЕсли;
ПолномочияВТекстовомВиде = РеквизитыРодительскойДоверенности.ПолномочияВТекстовомВиде;
ТекстПолномочий = РеквизитыРодительскойДоверенности.ТекстПолномочий;
Полномочия.Загрузить(РеквизитыРодительскойДоверенности.Полномочия.Выгрузить());
Ограничения.Загрузить(РеквизитыРодительскойДоверенности.Ограничения.Выгрузить());
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -516,6 +516,54 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="93873fe8-10c0-4f7b-ad20-278e887f69e9">
<name>Нотариальная</name>
<synonym>
<key>ru</key>
<value>Нотариальная</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="13b4aa30-d586-4b26-af0e-32f0d691fec9">
<name>РеквизитыНотариальнойДоверенности</name>
<synonym>
<key>ru</key>
<value>Реквизиты нотариальной доверенности</value>
</synonym>
<type>
<types>ValueStorage</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="d6d67cc5-e003-4aaa-88ae-d084dae2dc26">
<name>НомерВРеестреНотариальныхДействий</name>
<synonym>
<key>ru</key>
<value>Номер в реестре нотариальных действий</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>28</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="60f2c9f3-3090-442c-8991-0396b8f8b195">
<producedTypes>
<objectType typeId="f194327c-51ff-4fff-9c2c-df35946c1fa2" valueTypeId="8b5cd3d9-5cac-488d-89dd-ab98b9656a3e"/>
@@ -322,9 +322,9 @@
ПараметрыФормы = Новый Структура;
ВыбранныеЗначения = Новый Массив;
НайденныеСтроки = Свойства.НайтиСтроки(Новый Структура("Общее", Истина));
Для каждого Строка Из НайденныеСтроки Цикл
ВыбранныеЗначения.Добавить(Строка.Свойство);
ОбщиеСвойства = Свойства.НайтиСтроки(Новый Структура("Общее", Истина));
Для каждого Свойство Из ОбщиеСвойства Цикл
ВыбранныеЗначения.Добавить(Свойство.Свойство);
КонецЦикла;
Если Не ЗначениеЗаполнено(ВидСвойств) Тогда
@@ -741,20 +741,20 @@
СвойстваНабора.Вставить("ИмяПредопределенныхДанных");
СвойстваНабора.Вставить("ИмяПредопределенногоНабора");
Для Каждого Строка Из Наборы Цикл
Если СтрНачинаетсяС(Строка.ИмяПредопределенныхДанных, "Удалить") Тогда
Для Каждого СтрокаТаблицы Из Наборы Цикл
Если СтрНачинаетсяС(СтрокаТаблицы.ИмяПредопределенныхДанных, "Удалить") Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СвойстваНабора, Строка);
ЗаполнитьЗначенияСвойств(СвойстваНабора, СтрокаТаблицы);
ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(СвойстваНабора, Ложь);
Если ВидСвойств = Перечисления.ВидыСвойств.ДополнительныеСведения И ВидыСвойствНабора.ДополнительныеСведения
ИЛИ ВидСвойств = Перечисления.ВидыСвойств.ДополнительныеРеквизиты И ВидыСвойствНабора.ДополнительныеРеквизиты
ИЛИ ВидСвойств = Перечисления.ВидыСвойств.Метки И ВидыСвойствНабора.Метки Тогда
ДоступныеНаборы.Добавить(Строка.Ссылка);
ДоступныеНаборыСписок.Добавить(Строка.Ссылка);
ДоступныеНаборы.Добавить(СтрокаТаблицы.Ссылка);
ДоступныеНаборыСписок.Добавить(СтрокаТаблицы.Ссылка);
КонецЕсли;
КонецЦикла;
@@ -1160,8 +1160,8 @@
Если НайденнаяСтрока <> Неопределено Тогда
НовыйВладелецЗначений = НайденнаяСтрока.Ссылка;
СвойствоОбъект.ВладелецДополнительныхЗначений = НовыйВладелецЗначений;
Для каждого Строка Из Выгрузка Цикл
ТекущийОбъект = Строка.Ссылка.ПолучитьОбъект();
Для каждого СтрокаТаблицы Из Выгрузка Цикл
ТекущийОбъект = СтрокаТаблицы.Ссылка.ПолучитьОбъект();
Если ТекущийОбъект.Ссылка = НовыйВладелецЗначений Тогда
ТекущийОбъект.ВладелецДополнительныхЗначений = Неопределено;
Иначе
@@ -1219,8 +1219,7 @@
КонецЕсли;
КонецЕсли;
Если НоваяПометкаЗначений = Неопределено
И НовыйВладелецЗначений = Неопределено Тогда
Если НоваяПометкаЗначений = Неопределено И НовыйВладелецЗначений = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -1247,34 +1246,22 @@
Выгрузка = Запрос.Выполнить().Выгрузить();
Если НовыйВладелецЗначений <> Неопределено Тогда
Для каждого Строка Из Выгрузка Цикл
ТекущийОбъект = Строка.Ссылка.ПолучитьОбъект();
Для каждого СтрокаТаблицы Из Выгрузка Цикл
ТекущийОбъект = СтрокаТаблицы.Ссылка.ПолучитьОбъект();
Если ТекущийОбъект.Владелец <> НовыйВладелецЗначений Тогда
Если НовыйВладелецЗначений <> Неопределено И ТекущийОбъект.Владелец <> НовыйВладелецЗначений Тогда
ТекущийОбъект.Владелец = НовыйВладелецЗначений;
КонецЕсли;
Если НоваяПометкаЗначений <> Неопределено И ТекущийОбъект.ПометкаУдаления <> НоваяПометкаЗначений Тогда
ТекущийОбъект.ПометкаУдаления = НоваяПометкаЗначений;
КонецЕсли;
Если ТекущийОбъект.Модифицированность() Тогда
ТекущийОбъект.ОбменДанными.Загрузка = Истина;
ТекущийОбъект.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если НоваяПометкаЗначений <> Неопределено Тогда
Для каждого Строка Из Выгрузка Цикл
ТекущийОбъект = Строка.Ссылка.ПолучитьОбъект();
Если ТекущийОбъект.ПометкаУдаления <> НоваяПометкаЗначений Тогда
ТекущийОбъект.ПометкаУдаления = НоваяПометкаЗначений;
КонецЕсли;
Если ТекущийОбъект.Модифицированность() Тогда
ТекущийОбъект.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
@@ -373,44 +373,44 @@
Продолжить;
КонецЕсли;
НоваяСтрока = ПользователиИБ.Добавить();
НоваяСтрока.ПолноеИмя = СвойстваПользовательИБ.ПолноеИмя;
НоваяСтрока.Имя = СвойстваПользовательИБ.Имя;
НоваяСтрока.ИдентификаторПользователяИБ = СвойстваПользовательИБ.УникальныйИдентификатор;
НоваяСтрока.АутентификацияСтандартная = СвойстваПользовательИБ.АутентификацияСтандартная;
НоваяСтрока.АутентификацияOpenID = СвойстваПользовательИБ.АутентификацияOpenID;
НоваяСтрока.АутентификацияOpenIDConnect = СвойстваПользовательИБ.АутентификацияOpenIDConnect;
НоваяСтрока.АутентификацияТокеномДоступа = СвойстваПользовательИБ.АутентификацияТокеномДоступа;
НоваяСтрока.АутентификацияОС = СвойстваПользовательИБ.АутентификацияОС;
НоваяСтрока.ПользовательОС = СвойстваПользовательИБ.ПользовательОС;
ПользовательИБ = ПользователиИБ.Добавить();
ПользовательИБ.ПолноеИмя = СвойстваПользовательИБ.ПолноеИмя;
ПользовательИБ.Имя = СвойстваПользовательИБ.Имя;
ПользовательИБ.ИдентификаторПользователяИБ = СвойстваПользовательИБ.УникальныйИдентификатор;
ПользовательИБ.АутентификацияСтандартная = СвойстваПользовательИБ.АутентификацияСтандартная;
ПользовательИБ.АутентификацияOpenID = СвойстваПользовательИБ.АутентификацияOpenID;
ПользовательИБ.АутентификацияOpenIDConnect = СвойстваПользовательИБ.АутентификацияOpenIDConnect;
ПользовательИБ.АутентификацияТокеномДоступа = СвойстваПользовательИБ.АутентификацияТокеномДоступа;
ПользовательИБ.АутентификацияОС = СвойстваПользовательИБ.АутентификацияОС;
ПользовательИБ.ПользовательОС = СвойстваПользовательИБ.ПользовательОС;
Если Строка = Неопределено Тогда
// Пользователя ИБ нет в справочнике.
НоваяСтрока.ДобавленВКонфигураторе = Истина;
ПользовательИБ.ДобавленВКонфигураторе = Истина;
Иначе
НоваяСтрока.Ссылка = Строка.Ссылка;
НоваяСтрока.СопоставленСВнешнимПользователем = Строка.ЭтоВнешнийПользователь;
ПользовательИБ.Ссылка = Строка.Ссылка;
ПользовательИБ.СопоставленСВнешнимПользователем = Строка.ЭтоВнешнийПользователь;
НоваяСтрока.ИзмененВКонфигураторе = ИзмененВКонфигураторе;
ПользовательИБ.ИзмененВКонфигураторе = ИзмененВКонфигураторе;
КонецЕсли;
КонецЦикла;
Отбор = Новый Структура("Сопоставлен", Ложь);
Строки = Выгрузка.НайтиСтроки(Отбор);
Для каждого Строка Из Строки Цикл
НоваяСтрока = ПользователиИБ.Добавить();
НоваяСтрока.ПолноеИмя = Строка.ПолноеИмя;
НоваяСтрока.Ссылка = Строка.Ссылка;
НоваяСтрока.СопоставленСВнешнимПользователем = Строка.ЭтоВнешнийПользователь;
НоваяСтрока.УдаленВКонфигураторе = Истина;
ИдентификаторыНесуществующихПользователейИБ.Добавить(Строка.ИдентификаторПользователяИБ);
НесопоставленныеПользователи = Выгрузка.НайтиСтроки(Отбор);
Для каждого СтрокаТаблицы Из НесопоставленныеПользователи Цикл
ПользовательИБ = ПользователиИБ.Добавить();
ПользовательИБ.ПолноеИмя = СтрокаТаблицы.ПолноеИмя;
ПользовательИБ.Ссылка = СтрокаТаблицы.Ссылка;
ПользовательИБ.СопоставленСВнешнимПользователем = СтрокаТаблицы.ЭтоВнешнийПользователь;
ПользовательИБ.УдаленВКонфигураторе = Истина;
ИдентификаторыНесуществующихПользователейИБ.Добавить(СтрокаТаблицы.ИдентификаторПользователяИБ);
КонецЦикла;
Отбор = Новый Структура("ИдентификаторПользователяИБ", ТекущийИдентификаторПользователяИБ);
Строки = ПользователиИБ.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
Элементы.ПользователиИБ.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор();
ТекущийПользователь = ПользователиИБ.НайтиСтроки(Отбор);
Если ТекущийПользователь.Количество() > 0 Тогда
Элементы.ПользователиИБ.ТекущаяСтрока = ТекущийПользователь[0].ПолучитьИдентификатор();
КонецЕсли;
КонецПроцедуры
@@ -637,25 +637,25 @@
Если Не Элементы.Роли.ТолькоПросмотр Тогда
Ошибки = Неопределено;
ЭлементыДерева = Роли.ПолучитьЭлементы();
Для Каждого Строка Из ЭлементыДерева Цикл
Если Не Строка.Пометка Тогда
Для Каждого Элемент Из ЭлементыДерева Цикл
Если Не Элемент.Пометка Тогда
Продолжить;
КонецЕсли;
Если Строка.ЭтоНесуществующаяРоль Тогда
Если Элемент.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Элемент.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1"));
ЭлементыДерева.Индекс(Элемент),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Элемент.Синоним, "%1"));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
Если Элемент.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для пользователей.'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для пользователей.'"), Элемент.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для пользователей.'"), Строка.Синоним, "%1"));
ЭлементыДерева.Индекс(Элемент),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 недоступна для пользователей.'"), Элемент.Синоним, "%1"));
КонецЕсли;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
@@ -114,8 +114,8 @@
&НаКлиенте
Процедура ПрименитьВсеПравила(Команда)
Для каждого Строка Из ПрименяемыеПравила Цикл
Строка.Применять = Истина;
Для каждого ПравилоОбработки Из ПрименяемыеПравила Цикл
ПравилоОбработки.Применять = Истина;
КонецЦикла;
КонецПроцедуры
@@ -123,8 +123,8 @@
&НаКлиенте
Процедура НеПрименятьВсеПравила(Команда)
Для каждого Строка Из ПрименяемыеПравила Цикл
Строка.Применять = Ложь;
Для каждого ПравилоОбработки Из ПрименяемыеПравила Цикл
ПравилоОбработки.Применять = Ложь;
КонецЦикла;
КонецПроцедуры
@@ -42,7 +42,7 @@
КонецЦикла;
СоздатьРеквизитЭлементСертификатДляШифрования();
ВидимостьДоступностьПаролейСертификатов(ЭтотОбъект);
УстановитьВидимостьДоступностьПаролейСертификатов(ЭтотОбъект);
Если ПолучитьФункциональнуюОпцию("ХранитьИсториюРассылкиОтчетов") И НЕ Объект.Личная И Объект.ИспользоватьЭлектроннуюПочту Тогда
СостояниеРассылки = РассылкаОтчетов.ПолучитьСостояниеРассылкиОтчетов(Объект.Ссылка);
@@ -295,7 +295,7 @@
КонецЕсли;
КонецЕсли;
ВидимостьДоступностьКорректность(ЭтотОбъект);
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект);
ДобавитьКомандыДобавленияДополнительныхПараметровТекста();
ЗафиксироватьЗначенияРеквизитовДоИзменения();
@@ -711,7 +711,7 @@
&НаКлиенте
Процедура ПодготовленаПриИзменении(Элемент)
ВидимостьДоступностьКорректность(ЭтотОбъект, "Подготовлена");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Подготовлена");
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -719,7 +719,7 @@
&НаКлиенте
Процедура ВыполнятьПоРасписаниюПриИзменении(Элемент)
ВидимостьДоступностьКорректность(ЭтотОбъект, "ВыполнятьПоРасписанию");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ВыполнятьПоРасписанию");
КонецПроцедуры
&НаКлиенте
@@ -727,7 +727,7 @@
Если Элемент <> Неопределено Тогда
Расписание.Месяцы = ИзменитьСоставМассива(ЭтотОбъект[Элемент.Имя], Кэш.Соответствия.Месяцы[Элемент.Имя], Расписание.Месяцы);
КонецЕсли;
ВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы");
КонецПроцедуры
&НаКлиенте
@@ -735,7 +735,7 @@
Если Элемент <> Неопределено Тогда
Расписание.ДниНедели = ИзменитьСоставМассива(ЭтотОбъект[Элемент.Имя], Кэш.Соответствия.ДниНедели[Элемент.Имя], Расписание.ДниНедели);
КонецЕсли;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ДниНедели");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ДниНедели");
КонецПроцедуры
&НаКлиенте
@@ -753,7 +753,7 @@
&НаКлиенте
Процедура ПериодичностьРасписанияПриИзменении(Элемент)
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодичностьРасписания");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодичностьРасписания");
Если Объект.ПериодичностьРасписания = ПредопределенноеЗначение("Перечисление.ПериодичностиРасписанийРассылокОтчетов.Произвольное")
И НЕ ОбщегоНазначенияКлиент.РазделениеВключено() Тогда
ИзменитьРасписаниеВДиалоге();
@@ -769,13 +769,13 @@
Расписание.ДеньВМесяце = -Расписание.ДеньВМесяце;
КонецЕсли;
Модифицированность = Истина;
ВидимостьДоступностьКорректность(ЭтотОбъект, "НачалоКонецМесяца");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "НачалоКонецМесяца");
КонецПроцедуры
&НаКлиенте
Процедура ВремяНачалаПриИзменении(Элемент)
Расписание.ВремяНачала = ВремяНачала;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ВремяНачала");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ВремяНачала");
КонецПроцедуры
&НаКлиенте
@@ -784,31 +784,31 @@
ВремяОкончания = ?(ИспользоватьПериодПовтораВТечениеДня, ВремяНачала + ЧасыВСекунды(4), '00010101');
Расписание.ВремяКонца = ВремяОкончания;
Расписание.ПериодПовтораВТечениеДня = ЧасыВСекунды(ПериодПовтораВТечениеДня);
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораВТечениеДня");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораВТечениеДня");
КонецПроцедуры
&НаКлиенте
Процедура ПериодПовтораВТечениеДняПриИзменении(Элемент)
Расписание.ПериодПовтораВТечениеДня = ЧасыВСекунды(ПериодПовтораВТечениеДня);
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораВТечениеДня");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораВТечениеДня");
КонецПроцедуры
&НаКлиенте
Процедура ВремяОкончанияПриИзменении(Элемент)
Расписание.ВремяКонца = ВремяОкончания;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ВремяОкончания");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ВремяОкончания");
КонецПроцедуры
&НаКлиенте
Процедура ПериодПовтораДнейПриИзменении(Элемент)
Расписание.ПериодПовтораДней = ПериодПовтораДней;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораДней");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораДней");
КонецПроцедуры
&НаКлиенте
Процедура ДеньМесяцаПриИзменении(Элемент)
Расписание.ДеньВМесяце = ?(Расписание.ДеньВМесяце >= 0, ДеньВМесяце, -ДеньВМесяце);
ВидимостьДоступностьКорректность(ЭтотОбъект, "ДеньВМесяце");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ДеньВМесяце");
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -843,6 +843,9 @@
ПоказатьВопрос(Обработчик, СтрокаВопроса, Кнопки, 60, КодВозвратаДиалога.Да);
КонецЕсли;
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПолучателиРассылки");
КонецПроцедуры
&НаКлиенте
@@ -902,7 +905,7 @@
КонецЕсли;
КонецЦикла;
ВидимостьДоступностьКорректность(ЭтотОбъект, "FTPСерверИКаталог");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "FTPСерверИКаталог");
Модифицированность = Истина;
КонецПроцедуры
@@ -930,19 +933,28 @@
Объект.ПрикреплятьОтчетыВоВложения = Истина;
КонецЕсли;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ВидРассылки");
Если Объект.Личная Тогда
Объект.Получатели.Очистить();
ИначеЕсли Не ЗначениеЗаполнено(ТипПолучателейРассылки) Тогда
Если Элементы.ТипПолучателейРассылки.СписокВыбора.Количество() > 0 Тогда
ТипПолучателейРассылки = Элементы.ТипПолучателейРассылки.СписокВыбора[0].Значение;
ТипПолучателейРассылкиПриИзменении(Элементы.ТипПолучателейРассылки);
КонецЕсли;
КонецЕсли;
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ВидРассылки");
ДобавитьКомандыДобавленияДополнительныхПараметровТекста();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьЭлектроннуюПочтуПриИзменении(Элемент)
ВидимостьДоступностьКорректность(ЭтотОбъект, "ИспользоватьЭлектроннуюПочту");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ИспользоватьЭлектроннуюПочту");
Если Не Публиковать И Не Объект.ИспользоватьЭлектроннуюПочту Тогда
Публиковать = Истина;
ВычислитьФлажкиДополнительныхСпособовДоставки();
ВидимостьДоступностьКорректность(ЭтотОбъект, "Публиковать");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Публиковать");
ИначеЕсли Объект.ИспользоватьЭлектроннуюПочту И НЕ Объект.ВставлятьОтчетыВТекстПисьма И НЕ Объект.ТолькоУведомить Тогда
Объект.ПрикреплятьОтчетыВоВложения = Истина;
КонецЕсли;
@@ -959,13 +971,13 @@
Объект.ПрикреплятьОтчетыВоВложения = Истина;
КонецЕсли;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ТолькоУведомить");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ТолькоУведомить");
КонецПроцедуры
&НаКлиенте
Процедура ДругойСпособДоставкиПриИзменении(Элемент)
ВычислитьФлажкиДополнительныхСпособовДоставки();
ВидимостьДоступностьКорректность(ЭтотОбъект, "ДругойСпособДоставки");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ДругойСпособДоставки");
КонецПроцедуры
&НаКлиенте
@@ -978,12 +990,12 @@
&НаКлиенте
Процедура ПубликоватьПриИзменении(Элемент)
ВычислитьФлажкиДополнительныхСпособовДоставки();
ВидимостьДоступностьКорректность(ЭтотОбъект, "Публиковать");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Публиковать");
Если Не Публиковать И Не Объект.ИспользоватьЭлектроннуюПочту Тогда
Объект.ИспользоватьЭлектроннуюПочту = Истина;
Объект.ПрикреплятьОтчетыВоВложения = Истина;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ИспользоватьЭлектроннуюПочту");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ИспользоватьЭлектроннуюПочту");
ИначеЕсли Объект.ИспользоватьЭлектроннуюПочту И НЕ Объект.ВставлятьОтчетыВТекстПисьма И НЕ Объект.ТолькоУведомить Тогда
Объект.ПрикреплятьОтчетыВоВложения = Истина;
КонецЕсли;
@@ -1036,7 +1048,7 @@
&НаКлиенте
Процедура АрхивироватьПриИзменении(Элемент)
ВидимостьДоступностьКорректность(ЭтотОбъект, "Архивировать");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Архивировать");
ПроверкаПриУстановкеПароляАрхиваВставлятьОтчетыВТекстПисьма();
КонецПроцедуры
@@ -1124,7 +1136,7 @@
&НаКлиенте
Процедура УстановитьПаролиЗашифроватьПриИзменении(Элемент)
ВидимостьДоступностьПаролейСертификатов(ЭтотОбъект);
УстановитьВидимостьДоступностьПаролейСертификатов(ЭтотОбъект);
Если НЕ Объект.ВставлятьОтчетыВТекстПисьма И Объект.УстановитьПаролиЗашифровать Тогда
ОткрытьФормуПаролиШифрование();
@@ -1238,7 +1250,7 @@
КонецЕсли;
ПроверитьНаличиеПериодовВОтчетах(СтруктураВыбора.Успешно.МассивСтрок);
ВидимостьДоступностьКорректность(ЭтотОбъект, "Отчеты");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Отчеты");
КонецПроцедуры
&НаКлиенте
@@ -1279,7 +1291,7 @@
&НаКлиенте
Процедура ОтчетыПослеУдаления(Элемент)
ВидимостьДоступностьКорректность(ЭтотОбъект, "Отчеты");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Отчеты");
КонецПроцедуры
#КонецОбласти
@@ -1879,7 +1891,7 @@
ВсеМесяцы.Добавить(КлючИЗначение.Значение);
КонецЦикла;
Расписание.Месяцы = ВсеМесяцы;
ВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы");
КонецПроцедуры
&НаКлиенте
@@ -1889,7 +1901,7 @@
ЭтотОбъект[КлючИЗначение.Ключ] = Ложь;
КонецЦикла;
Расписание.Месяцы = ВсеМесяцы;
ВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Месяцы");
КонецПроцедуры
&НаКлиенте
@@ -2063,7 +2075,7 @@
ТекстПисьмаФорматированныйДокумент.Добавить(Объект.ТекстПисьма, ТипЭлементаФорматированногоДокумента.Текст);
КонецЕсли;
ТекущийЭлемент = Элементы.ТекстПисьмаФорматированныйДокумент;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПисьмоВФорматеHTML");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПисьмоВФорматеHTML");
КонецПроцедуры
&НаКлиенте
@@ -2075,7 +2087,7 @@
Объект.ТекстПисьма = ТекстПисьмаИзHTML;
КонецЕсли;
ТекущийЭлемент = Элементы.ТекстПисьма;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПисьмоВФорматеHTML");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПисьмоВФорматеHTML");
КонецПроцедуры
&НаКлиенте
@@ -2128,7 +2140,7 @@
КонецЕсли;
Иначе
Объект.ПрикреплятьОтчетыВоВложения = Истина;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПрикреплятьОтчетыВоВложения");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПрикреплятьОтчетыВоВложения");
КонецЕсли;
КонецПроцедуры
@@ -2145,7 +2157,7 @@
Объект.ВставлятьОтчетыВТекстПисьма = Истина;
КонецЕсли;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПрикреплятьОтчетыВоВложения");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПрикреплятьОтчетыВоВложения");
КонецПроцедуры
@@ -2157,7 +2169,7 @@
Процедура СброситьФорматПоУмолчанию(Команда)
ОчиститьФормат(Кэш.ПустоеЗначениеОтчета);
ФорматыПоУмолчанию = СписокФорматовПоУмолчаниюПредставление;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ФорматыПоУмолчанию");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ФорматыПоУмолчанию");
КонецПроцедуры
&НаКлиенте
@@ -2316,7 +2328,7 @@
НоваяСтрока.Исключен = Элемент.Исключен;
КонецЦикла;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПолучателиРассылки");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПолучателиРассылки");
Модифицированность = Истина;
КонецПроцедуры
@@ -2327,7 +2339,7 @@
ТипПолучателейРассылки = ДополнительныеПараметры.ВыбранноеЗначение;
Модифицированность = Истина;
ТипПолучателейРассылкиПриИзменении(Неопределено);
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПолучателиРассылки");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ПолучателиРассылки");
КонецЕсли;
КонецПроцедуры
@@ -2556,7 +2568,7 @@
Если ПредставлениеФормата <> Неопределено Тогда
ФорматыПоУмолчанию = ПредставлениеФормата;
КонецЕсли;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ФорматыПоУмолчанию");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "ФорматыПоУмолчанию");
КонецПроцедуры
&НаКлиенте
@@ -2564,7 +2576,7 @@
Если РасписаниеРезультат <> Неопределено Тогда
Модифицированность = Истина;
Расписание = РасписаниеРезультат;
ВидимостьДоступностьКорректность(ЭтотОбъект, "Расписание");
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект, "Расписание");
КонецЕсли;
КонецПроцедуры
@@ -3119,7 +3131,7 @@
// Изменения - Строка
//
&НаКлиентеНаСервереБезКонтекста
Процедура ВидимостьДоступностьКорректность(Форма, Изменения = "")
Процедура УстановитьВидимостьДоступностьКорректность(Форма, Изменения = "")
Объект = Форма.Объект;
Элементы = Форма.Элементы;
@@ -3198,7 +3210,7 @@
Если Объект.Личная Тогда
Элементы.ПолучателиРассылки.Видимость = Ложь;
Иначе
Элементы.ПолучателиРассылки.Видимость = Истина;
Элементы.ПолучателиРассылки.Видимость = ЗначениеЗаполнено(Форма.ТипПолучателейРассылки);
Если Не РассылкаОбщая Тогда
Элементы.ПолучателиРассылки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
Иначе
@@ -3226,7 +3238,7 @@
Элементы.ИспользоватьПолучателяРассылкиВНастройкеОтчета3.Видимость = Объект.Персонализирована;
Элементы.ИспользоватьПолучателяРассылкиВНастройкеОтчета4.Видимость = Объект.Персонализирована;
ВидимостьДоступностьПаролейСертификатов(Форма);
УстановитьВидимостьДоступностьПаролейСертификатов(Форма);
КонецЕсли;
Если Изменения = "" Или Изменения = "Отчеты" Тогда
@@ -3264,8 +3276,9 @@
Элементы.НастройкиФайловОтчетов.Доступность = Объект.ПрикреплятьОтчетыВоВложения Или Форма.Публиковать;
КонецЕсли;
Если Изменения = "" Или Изменения = "ПолучателиРассылки" Тогда
Если Изменения = "" Или Изменения = "ПолучателиРассылки" Или Изменения = "ВидРассылки" Тогда
Если Форма.ВидРассылки <> "Личная" Тогда
Элементы.ПолучателиРассылки.Видимость = Истина;
ПредставлениеПолучателей = ПредставлениеПолучателей(Форма);
Форма.ПолучателиРассылки = ПредставлениеПолучателей.Краткое;
КонецЕсли;
@@ -3311,7 +3324,7 @@
Элементы.ИмяАрхива.Доступность = Объект.Архивировать;
Элементы.ПарольАрхива.Доступность = Объект.Архивировать;
Элементы.СоздатьПарольАрхива.Доступность = Объект.Архивировать;
ВидимостьДоступностьПаролейСертификатов(Форма);
УстановитьВидимостьДоступностьПаролейСертификатов(Форма);
КонецЕсли;
Если Изменения = "" Или Изменения = "ВыполнятьПоРасписанию" Тогда
@@ -3444,7 +3457,7 @@
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ВидимостьДоступностьПаролейСертификатов(Форма)
Процедура УстановитьВидимостьДоступностьПаролейСертификатов(Форма)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
@@ -3934,7 +3947,7 @@
Расписание.ДниНедели = ВыбранныеДниНедели;
Если ОбновитьВидимость Тогда
ВидимостьДоступностьКорректность(ЭтотОбъект);
УстановитьВидимостьДоступностьКорректность(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
@@ -5154,6 +5154,20 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПроверитьСертификатВЛокальномХранилищеКлиента</name>
<id>33</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>Проверить</name>
<title>
@@ -60,21 +60,25 @@
ЭлектроннаяПодписьПереопределяемый.ПриСозданииФормыПроверкаСертификата(
Параметры.Сертификат, Проверки, Параметры.ПараметрыДополнительныхПроверок,
СтандартныеПроверки, ВводитьПароль);
Если Не СтандартныеПроверки И ДополнительныеПроверки.Количество() = 0 Тогда
ВызватьИсключение(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для проверки сертификата отключены стандартные проверки,
|при этом дополнительных проверок не указано в %1.'"),
"ЭлектроннаяПодписьПереопределяемый.ПриСозданииФормыПроверкаСертификата"),
КатегорияОшибки.ОшибкаКонфигурации);
КонецЕсли;
Для каждого Проверка Из Проверки Цикл
Группа = ГруппаФормыБезОтображения(
"Группа" + Проверка.Имя, Элементы.ГруппаДополнительныеПроверки);
Группа = ГруппаФормыБезОтображения("Группа" + Проверка.Имя, Элементы.ГруппаДополнительныеПроверки);
ДобавитьКартинку(Проверка.Имя + "НаКлиентеКартинка", Группа);
ДобавитьКартинку(Проверка.Имя + "НаСервереКартинка", Группа);
ГруппаРезультатИРешение = ГруппаФормыБезОтображения(
Проверка.Имя + "РезультатИРешение", Группа,
ГруппаРезультатИРешение = ГруппаФормыБезОтображения(Проверка.Имя + "РезультатИРешение", Группа,
ГруппировкаПодчиненныхЭлементовФормы.Вертикальная);
Надпись = Элементы.Добавить(Проверка.Имя + "Надпись",
Тип("ДекорацияФормы"), ГруппаРезультатИРешение);
Надпись = Элементы.Добавить(Проверка.Имя + "Надпись", Тип("ДекорацияФормы"), ГруппаРезультатИРешение);
Надпись.Заголовок = Проверка.Представление;
Надпись.РасширеннаяПодсказка.Заголовок = Проверка.Подсказка;
Надпись.УстановитьДействие("Нажатие", "Подключаемый_НадписьНажатие");
@@ -96,12 +100,6 @@
Если Не СтандартныеПроверки Тогда
Если ДополнительныеПроверки.Количество() = 0 Тогда
ВызватьИсключение
НСтр("ru = 'Для проверки сертификата отключены стандартные проверки,
|при этом дополнительных проверок не указано.'");
КонецЕсли;
Элементы.ГруппаОбщиеПроверки.Видимость = Ложь;
Элементы.ГруппаПроверкиОпераций.Видимость = Ложь;
СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "НестандартныеПроверки");
@@ -113,8 +111,7 @@
Элементы[Проверка + "РешениеКлиентНадпись"].Видимость = Ложь;
Элементы[Проверка + "ОшибкаСервер"].Видимость = Ложь;
Элементы[Проверка + "РешениеСерверНадпись"].Видимость = Ложь;
Элементы[Проверка + "Надпись"].Заголовок =
СтандартныйЗаголовокЭлемента(Проверка + "Надпись");
Элементы[Проверка + "Надпись"].Заголовок = СтандартныйЗаголовокЭлемента(Проверка + "Надпись");
Если ПроверкиНаКлиенте <> Неопределено Тогда
ВывестиРезультатПроверки(Проверка);
@@ -159,10 +156,8 @@
МодульСервисКриптографииDSSПодтверждениеСервер.ПодготовитьГруппуПодтверждения(ЭтотОбъект, "Проверка", "", "");
МодульСервисКриптографииDSSПодтверждениеСервер.ПодтверждениеПриИзмененииСертификата(ЭтотОбъект, Сертификат);
ИначеЕсли ЭтоВстроенныйКриптопровайдер
Или (Не СтандартныеПроверки И Не ВводитьПароль) Тогда
ИначеЕсли ЭтоВстроенныйКриптопровайдер Или (Не СтандартныеПроверки И Не ВводитьПароль) Тогда
Элементы.ГруппаВводаПароля.Видимость = Ложь;
КонецЕсли;
ОбновитьВидимостьНаСервере();
@@ -239,18 +234,14 @@
ИмяОшибки = ИмяЭлемента + "Ошибка";
ПараметрыПредупреждения = Новый Структура;
ПараметрыПредупреждения.Вставить("ЗаголовокПредупреждения",
СтандартныйЗаголовокЭлемента(Элемент.Имя));
ПараметрыПредупреждения.Вставить("ТекстОшибкиКлиент",
ПроверкиНаКлиенте[ИмяОшибки]);
ПараметрыПредупреждения.Вставить("ЗаголовокПредупреждения", СтандартныйЗаголовокЭлемента(Элемент.Имя));
ПараметрыПредупреждения.Вставить("ТекстОшибкиКлиент", ПроверкиНаКлиенте[ИмяОшибки]);
ПараметрыПредупреждения.Вставить("ТекстОшибкиСервер",
?(ОперацииНаСервере Или ЕстьВстроенныйКриптопровайдер Или ЕстьУчетнаяЗаписьСервиса,
ПроверкиНаСервере[ИмяОшибки], ""));
ПараметрыПредупреждения.Вставить("ДополнительныеДанные", ДополнительныеДанные(ИмяЭлемента));
ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки",
ПараметрыПредупреждения, ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыПредупреждения, ЭтотОбъект);
КонецПроцедуры
@@ -507,6 +498,50 @@
&НаКлиенте
Процедура ПроверитьСертификатПослеПроверкиНаКлиенте(Результат, Контекст) Экспорт
Если ЗначениеЗаполнено(ПроверитьСертификатВЛокальномХранилищеКлиента) Тогда
ОшибкаПоКлассификатору = Новый Структура;
ОшибкаПоКлассификатору.Вставить("ТекстОшибки", Элементы[ПроверитьСертификатВЛокальномХранилищеКлиента + "ОшибкаКлиентНадпись"].Заголовок);
ОшибкаПоКлассификатору.Вставить("Причина", "");
ОшибкаПоКлассификатору.Вставить("Решение", Элементы[ПроверитьСертификатВЛокальномХранилищеКлиента + "РешениеКлиентНадпись"].Заголовок);
ДанныеДляДополнения = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДанныеДляДополненияОшибкиИзКлассификатора(Неопределено);
ДанныеДляДополнения.ДанныеСертификата = ПолучитьИзВременногоХранилища(АдресСертификата);
ПараметрыДополнения = Новый Структура("Результат, Контекст, Элемент",
Результат, Контекст, ПроверитьСертификатВЛокальномХранилищеКлиента);
ПараметрыДополненияТекстаРешения = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыДополненияТекстаРешенияОшибкиКлассификатора();
ПараметрыДополненияТекстаРешения.ПроверитьСертификатВЛокальномХранилищеКлиента = Истина;
ЭлектроннаяПодписьСлужебныйКлиент.ДополнитьРешениеКлассификатораОшибокПодробностями(
Новый ОписаниеОповещения("ПослеДополненияРешенияКлассификатораОшибок", ЭтотОбъект, ПараметрыДополнения),
ОшибкаПоКлассификатору, ПараметрыДополненияТекстаРешения, ДанныеДляДополнения);
ПроверитьСертификатВЛокальномХранилищеКлиента = "";
Возврат;
КонецЕсли;
ПроверитьСертификатПослеПроверкиНаКлиентеИДополнений(Результат, Контекст);
КонецПроцедуры
// Продолжение процедуры ПроверитьСертификат.
&НаКлиенте
Процедура ПослеДополненияРешенияКлассификатораОшибок(ОшибкаПоКлассификатору, ПараметрыДополнения) Экспорт
Если Элементы[ПараметрыДополнения.Элемент + "РешениеКлиентНадпись"].Заголовок <> ОшибкаПоКлассификатору.Решение Тогда
Элементы[ПараметрыДополнения.Элемент + "РешениеКлиентНадпись"].Заголовок = ОшибкаПоКлассификатору.Решение;
КонецЕсли;
ПроверитьСертификатПослеПроверкиНаКлиентеИДополнений(ПараметрыДополнения.Результат, ПараметрыДополнения.Контекст);
КонецПроцедуры
// Продолжение процедуры ПроверитьСертификат.
&НаКлиенте
Процедура ПроверитьСертификатПослеПроверкиНаКлиентеИДополнений(Результат, Контекст)
Если ЭтоВстроенныйКриптопровайдер Или ЭтоУчетнаяЗаписьСервиса Тогда
Если ОперацииНаСервере Тогда
@@ -1930,12 +1965,15 @@
РезультатыПроверок = ЭтотОбъект[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")];
ДополнительныеДанныеПроверок = ЭтотОбъект[?(НаСервере, "ДополнительныеДанныеПроверокНаСервере", "ДополнительныеДанныеПроверокНаКлиенте")];
Если РезультатыПроверок <> Неопределено Тогда
Если РезультатыПроверок = Неопределено Тогда
Возврат;
КонецЕсли;
РезультатПроверки = РезультатыПроверок[Проверка];
Если РезультатПроверки = Неопределено Тогда
УстановитьЭлемент(ЭтотОбъект, Проверка, НаСервере, , , ОбъединятьРезультаты);
Иначе
Возврат;
КонецЕсли;
ОшибкиПриПроверке = ?(РезультатыПроверок.Свойство(Проверка + "Ошибка"),
РезультатыПроверок[Проверка + "Ошибка"], "");
@@ -1950,60 +1988,76 @@
ОшибкиПриПроверке, Не РезультатПроверки, ОбъединятьРезультаты);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЭлемент(Форма, НачалоЭлемента, НаСервере,
Процедура УстановитьЭлемент(Форма, Действие, НаСервере,
ОписаниеОшибки = Неопределено, ЭтоОшибка = Ложь, ОбъединятьРезультаты = "НеОбъединять")
ЭлементНадпись = Форма.Элементы[НачалоЭлемента + "Надпись"]; // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи
Если ОбъединятьРезультаты = "ОбъединятьПоИ"
Или ОбъединятьРезультаты = "ОбъединятьПоИли" Тогда
ЭлементКартинка = Форма.Элементы[НачалоЭлемента + "НаКлиентеКартинка"]; // ДекорацияФормы
ИмяЭлементаНадпись = Действие + "Надпись";
ИмяЭлементаНаКлиентеКартинка = Действие + "НаКлиентеКартинка";
ИмяЭлементаНаСервереКартинка = Действие + "НаСервереКартинка";
ИмяСвойстваОшибка = Действие + "Ошибка";
ЭлементНадпись = Форма.Элементы[ИмяЭлементаНадпись]; // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи
ТребуетсяОбъединятьРезультаты = (ОбъединятьРезультаты = "ОбъединятьПоИ" Или ОбъединятьРезультаты = "ОбъединятьПоИли");
Если ТребуетсяОбъединятьРезультаты Тогда
ЭлементКартинка = Форма.Элементы[ИмяЭлементаНаКлиентеКартинка]; // ДекорацияФормы
Иначе
ЭлементКартинка = Форма.Элементы[НачалоЭлемента
+ ?(НаСервере, "НаСервереКартинка", "НаКлиентеКартинка")]; // ДекорацияФормы
ЭлементКартинка = Форма.Элементы[?(НаСервере, ИмяЭлементаНаСервереКартинка, ИмяЭлементаНаКлиентеКартинка)]; // ДекорацияФормы
КонецЕсли;
Проверки = Форма[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")];
ПроверкиВторогоКонтекста = Форма[?(НаСервере, "ПроверкиНаКлиенте", "ПроверкиНаСервере")];
ЗначениеПроверкиВторогоКонтекста = Неопределено;
Если ТипЗнч(ПроверкиВторогоКонтекста) = Тип("Структура")
И ПроверкиВторогоКонтекста.Свойство(НачалоЭлемента) Тогда
ЗначениеПроверкиВторогоКонтекста = ПроверкиВторогоКонтекста[НачалоЭлемента];
Если ТипЗнч(ПроверкиВторогоКонтекста) = Тип("Структура") И ПроверкиВторогоКонтекста.Свойство(Действие) Тогда
ЗначениеПроверкиВторогоКонтекста = ПроверкиВторогоКонтекста[Действие];
КонецЕсли;
ПредупреждениеПослеПроверкиУЦ = Неопределено;
Если ТипЗнч(ОписаниеОшибки) = Тип("Структура") Тогда
ПредупреждениеПослеПроверкиУЦ = ОписаниеОшибки;
ОписаниеОшибки = ПредупреждениеПослеПроверкиУЦ.ТекстОшибки;
ДополнительныеДанныеПроверок = Форма[?(НаСервере, "ДополнительныеДанныеПроверокНаСервере", "ДополнительныеДанныеПроверокНаКлиенте")];
ДополнительныеДанныеПроверок.Вставить(НачалоЭлемента,
ИмяРеквизитаФормы = ?(НаСервере, "ДополнительныеДанныеПроверокНаСервере", "ДополнительныеДанныеПроверокНаКлиенте");
ДополнительныеДанныеПроверок = Форма[ИмяРеквизитаФормы];
ДополнительныеДанныеПроверок.Вставить(Действие,
Новый Структура("Причина, Решение", ПредупреждениеПослеПроверкиУЦ.Причина, ПредупреждениеПослеПроверкиУЦ.Решение));
Форма[?(НаСервере, "ДополнительныеДанныеПроверокНаСервере", "ДополнительныеДанныеПроверокНаКлиенте")] = ДополнительныеДанныеПроверок;
Форма[ИмяРеквизитаФормы] = ДополнительныеДанныеПроверок;
КонецЕсли;
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
ЗначениеПроверки = Ложь;
РезультатПроверки = ЗначениеПроверки;
Если ОбъединятьРезультаты = "ОбъединятьПоИли"
И ЗначениеПроверкиВторогоКонтекста <> Неопределено Тогда
Если ОбъединятьРезультаты = "ОбъединятьПоИли" И ЗначениеПроверкиВторогоКонтекста <> Неопределено Тогда
РезультатПроверки = Ложь Или ЗначениеПроверкиВторогоКонтекста;
КонецЕсли;
Иначе
ЗначениеПроверки = ?(ОписаниеОшибки = Неопределено, Неопределено, Истина);
Если ЗначениеПроверки <> Неопределено И ЗначениеПроверкиВторогоКонтекста <> Неопределено
И ТребуетсяОбъединятьРезультаты Тогда
РезультатПроверки = ?(ОбъединятьРезультаты = "ОбъединятьПоИ",
ЗначениеПроверки И ЗначениеПроверкиВторогоКонтекста,
ЗначениеПроверки Или ЗначениеПроверкиВторогоКонтекста);
КонецЕсли;
КонецЕсли;
Проверки.Вставить(Действие, ЗначениеПроверки);
Проверки.Вставить(ИмяСвойстваОшибка, ?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки));
Если Не РезультатПроверки Тогда
ГруппаОшибка = Форма.Элементы[НачалоЭлемента + ?(НаСервере, "ОшибкаСервер", "ОшибкаКлиент")];
ИмяГруппыОшибкаСервер = Действие + "ОшибкаСервер";
ИмяГруппыОшибкаКлиент = Действие + "ОшибкаКлиент";
ИмяЭлементаНадписьОшибкаСервер = Действие + "ОшибкаСерверНадпись";
ИмяЭлементаНадписьОшибкаКлиент = Действие + "ОшибкаКлиентНадпись";
ИмяЭлементаНадписьРешениеСервер = Действие + "РешениеСерверНадпись";
ИмяЭлементаНадписьРешениеКлиент = Действие + "РешениеКлиентНадпись";
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
Если РезультатПроверки Тогда
Возврат;
КонецЕсли;
ГруппаОшибка = Форма.Элементы[?(НаСервере, ИмяГруппыОшибкаСервер, ИмяГруппыОшибкаКлиент)];
ГруппаОшибка.Видимость = Истина;
ЭлементКартинка.Картинка = ?(ЭтоОшибка,
БиблиотекаКартинок.ПроверкаСертификатаОшибка,
@@ -2012,80 +2066,84 @@
ЭлементКартинка.Подсказка = ОписаниеОшибки;
ЭлементНадпись.Гиперссылка = Истина;
ЭлементНадписьОшибка = Форма.Элементы[НачалоЭлемента + ?(НаСервере, "ОшибкаСервер", "ОшибкаКлиент") + "Надпись"]; // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи
ЭлементНадписьОшибка = Форма.Элементы[?(НаСервере, ИмяЭлементаНадписьОшибкаСервер, ИмяЭлементаНадписьОшибкаКлиент)]; // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи
ЭлементНадписьОшибка.Заголовок = ОписаниеОшибки;
Если ПредупреждениеПослеПроверкиУЦ = Неопределено Тогда
ИмяНадписиРешение = ?(НаСервере, ИмяЭлементаНадписьРешениеСервер, ИмяЭлементаНадписьРешениеКлиент);
ЭлементФормыНадписьРешение = Форма.Элементы[ИмяНадписиРешение];
Если ПредупреждениеПослеПроверкиУЦ <> Неопределено Тогда
ЭлементФормыНадписьРешение.Видимость = Истина;
ЭлементФормыНадписьРешение.Заголовок = ПредупреждениеПослеПроверкиУЦ.Решение;
КонецЕсли;
ИмяЭлементаНадписьРешениеПодписание = "Подписание" + ?(НаСервере, "ОшибкаСерверНадпись", "ОшибкаКлиентНадпись");
ЭлементФормыНадписьРешениеПодписание = Форма.Элементы[ИмяЭлементаНадписьРешениеПодписание];
Если Действие = "Расшифровка" И ЭлементНадписьОшибка.Заголовок = ЭлементФормыНадписьРешениеПодписание.Заголовок Тогда
ЭлементФормыНадписьРешение.Видимость = ЭлементФормыНадписьРешениеПодписание.Видимость;
ЭлементФормыНадписьРешение.Заголовок = НСтр("ru = 'См. пункт Подписание данных.'");
Возврат;
КонецЕсли;
ОписаниеИзвестнойОшибки = ОшибкаПоКлассификатору(ОписаниеОшибки, НаСервере);
ЭтоИзвестнаяОшибка = ОписаниеИзвестнойОшибки <> Неопределено;
ИмяНадписиРешение = НачалоЭлемента + ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись");
Форма.Элементы[ИмяНадписиРешение].Видимость = ЭтоИзвестнаяОшибка;
Если ЭтоИзвестнаяОшибка Тогда
Если Не ЭтоИзвестнаяОшибка Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ОписаниеИзвестнойОшибки.ДействияДляУстранения) Тогда
ДанныеДляДополнения = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДанныеДляДополненияОшибкиИзКлассификатора(Неопределено);
ДанныеДляДополнения.ДанныеСертификата = ПолучитьИзВременногоХранилища(Форма.АдресСертификата);
ПараметрыДополненияТекстаРешенияОшибкиКлассификатора = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыДополненияТекстаРешенияОшибкиКлассификатора();
Дополнение = ЭлектроннаяПодписьСлужебныйВызовСервера.ДополнитьРешениеКлассификатораОшибокПодробностями(
ОписаниеИзвестнойОшибки, ДанныеДляДополнения,
ПараметрыДополненияТекстаРешенияОшибкиКлассификатора, ?(НаСервере, "Сервер", "Клиент"));
ОписаниеИзвестнойОшибки = Дополнение.ОшибкаПоКлассификатору;
ПараметрыДополненияТекстаРешенияОшибкиКлассификатора = Дополнение.ПараметрыДополненияТекстаРешенияОшибкиКлассификатораНаКлиенте;
Если ПараметрыДополненияТекстаРешенияОшибкиКлассификатора.ПроверитьСертификатВЛокальномХранилищеКлиента Тогда
Форма.ПроверитьСертификатВЛокальномХранилищеКлиента = Действие;
КонецЕсли;
КонецЕсли;
Форма.Элементы[ИмяНадписиРешение].Заголовок = ОписаниеИзвестнойОшибки.Решение;
КонецЕсли;
Иначе
ИмяНадписиРешение = НачалоЭлемента + ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись");
Форма.Элементы[ИмяНадписиРешение].Видимость = Истина;
Форма.Элементы[ИмяНадписиРешение].Заголовок = ПредупреждениеПослеПроверкиУЦ.Решение;
КонецЕсли;
Возврат;
КонецЕсли;
Иначе
ГруппаОшибка = Форма.Элементы[?(НаСервере, ИмяГруппыОшибкаСервер, ИмяГруппыОшибкаКлиент)];
ЭлементРешение = Форма.Элементы[?(НаСервере, ИмяЭлементаНадписьРешениеСервер, ИмяЭлементаНадписьРешениеКлиент)];
ГруппаОшибка = Форма.Элементы[НачалоЭлемента + ?(НаСервере, "ОшибкаСервер", "ОшибкаКлиент")];
ЭлементРешение = Форма.Элементы[НачалоЭлемента
+ ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись")];
ЗначениеПроверки = ?(ОписаниеОшибки = Неопределено, Неопределено, Истина);
Если (ОбъединятьРезультаты = "ОбъединятьПоИ"
Или ОбъединятьРезультаты = "ОбъединятьПоИли") Тогда
Если ЗначениеПроверки = Неопределено
И ЗначениеПроверкиВторогоКонтекста = Неопределено Тогда
Если ТребуетсяОбъединятьРезультаты Тогда
Если ЗначениеПроверки = Неопределено И ЗначениеПроверкиВторогоКонтекста = Неопределено Тогда
ГруппаОшибка.Видимость = Ложь;
ЭлементРешение.Видимость = Ложь;
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаНеВыполнялась;
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка не выполнялась.'");
ЭлементНадпись.Гиперссылка = Ложь;
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(
Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
ИначеЕсли ЗначениеПроверки <> Неопределено И ЗначениеПроверкиВторогоКонтекста = Неопределено Тогда
ГруппаОшибка.Видимость = Ложь;
ЭлементРешение.Видимость = Ложь;
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех;
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'");
ЭлементНадпись.Гиперссылка = Ложь;
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
ИначеЕсли ЗначениеПроверки <> Неопределено И РезультатПроверки Тогда
ГруппаОшибка.Видимость = Ложь;
ЭлементРешение.Видимость = Ложь;
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех;
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'");
ЭлементНадпись.Гиперссылка = Ложь;
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
КонецЕсли;
ИначеЕсли ЗначениеПроверки = Неопределено
И ЗначениеПроверкиВторогоКонтекста <> Неопределено Тогда
Проверки.Вставить(НачалоЭлемента, ЗначениеПроверки);
Проверки.Вставить(НачалоЭлемента + "Ошибка",
?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки));
Возврат;
ИначеЕсли ЗначениеПроверки <> Неопределено
И ЗначениеПроверкиВторогоКонтекста = Неопределено Тогда
ГруппаОшибка.Видимость = Ложь;
ЭлементРешение.Видимость = Ложь;
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех;
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'");
ЭлементНадпись.Гиперссылка = Ложь;
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(
Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
Иначе
РезультатПроверки = ?(ОбъединятьРезультаты = "ОбъединятьПоИ",
ЗначениеПроверки И ЗначениеПроверкиВторогоКонтекста,
ЗначениеПроверки Или ЗначениеПроверкиВторогоКонтекста);
Если РезультатПроверки Тогда
ГруппаОшибка.Видимость = Ложь;
ЭлементРешение.Видимость = Ложь;
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех;
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'");
ЭлементНадпись.Гиперссылка = Ложь;
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(
Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
КонецЕсли;
КонецЕсли;
Иначе
ЭлементКартинка.Картинка = ?(ОписаниеОшибки = Неопределено,
БиблиотекаКартинок.ПроверкаСертификатаНеВыполнялась,
БиблиотекаКартинок.ПроверкаСертификатаУспех);
@@ -2094,21 +2152,14 @@
НСтр("ru = 'Проверка выполнена успешно.'"));
Если ПроверкиВторогоКонтекста = Неопределено
Или Не ПроверкиВторогоКонтекста.Свойство(НачалоЭлемента + "Ошибка")
Или ПустаяСтрока(ПроверкиВторогоКонтекста[НачалоЭлемента + "Ошибка"]) Тогда
Или Не ПроверкиВторогоКонтекста.Свойство(Действие + "Ошибка")
Или ПустаяСтрока(ПроверкиВторогоКонтекста[Действие + "Ошибка"]) Тогда
ГруппаОшибка.Видимость = Ложь;
ЭлементРешение.Видимость = Ложь;
ЭлементНадпись.Гиперссылка = Ложь;
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(
Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Проверки.Вставить(НачалоЭлемента, ЗначениеПроверки);
Проверки.Вставить(НачалоЭлемента + "Ошибка",
?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки));
КонецПроцедуры
@@ -2121,13 +2172,10 @@
КонецЕсли;
Для Каждого Проверка Из ДополнительныеПроверки Цикл
Если Проверка.Имя + "Надпись" = ИмяЭлемента Тогда
Возврат Проверка.Представление;
КонецЕсли;
КонецЦикла;
Возврат "";
КонецФункции
@@ -727,8 +727,7 @@
КонецЦикла;
КонецЕсли;
Ошибка = Новый Структура;
ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, ИдентификаторФормы, Ошибка);
Ошибка = ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, ИдентификаторФормы, Ошибка);
Возврат Не ЗначениеЗаполнено(Ошибка);
@@ -767,7 +766,7 @@
// ОписаниеОбъектов - Массив из см. ОписаниеОбъекта
//
&НаСервереБезКонтекста
Процедура ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, ИдентификаторФормы, Ошибка)
Функция ЗаписатьСертификатыШифрованияНаСервере(Знач ОписаниеОбъектов, Знач ИдентификаторФормы, Знач Ошибка)
СертификатыШифрования = Новый Массив;
@@ -781,11 +780,13 @@
Исключение
ОтменитьТранзакцию();
ИнформацияОбОшибке = ИнформацияОбОшибке();
Ошибка.Вставить("ОписаниеОшибки", НСтр("ru = 'При очистке сертификатов шифрования возникла ошибка:'")
Ошибка.Вставить("ОписаниеОшибки", НСтр("ru = 'Не удалось очистить сертификаты шифрования по причине:'")
+ Символы.ПС + ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПопытки;
КонецПроцедуры
Возврат Ошибка;
КонецФункции
&НаКлиенте
Процедура ОбработатьОшибку(Оповещение, ОшибкаНаКлиенте, ОшибкаНаСервере)
@@ -234,19 +234,21 @@
//
&НаСервере
Процедура СформироватьОтчетОбОшибках(ОтчетОбОшибках)
МассивФайловСОшибками = РеквизитФормыВЗначение("ФайлыСОшибками");
ТабМакет = Справочники.ТомаХраненияФайлов.ПолучитьМакет("МакетОтчета");
ОбластьЗаголовок = ТабМакет.ПолучитьОбласть("Заголовок");
ТабличныйМакет = Справочники.ТомаХраненияФайлов.ПолучитьМакет("МакетОтчета");
ОбластьЗаголовок = ТабличныйМакет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.Описание = НСтр("ru = 'Проблемные файлы:'");
ОтчетОбОшибках.Вывести(ОбластьЗаголовок);
ОбластьСтрока = ТабМакет.ПолучитьОбласть("Строка");
ОбластьСтрока = ТабличныйМакет.ПолучитьОбласть("Строка");
Для Каждого ФайлСОшибкой Из МассивФайловСОшибками Цикл
Для Каждого ФайлСОшибкой Из РеквизитФормыВЗначение("ФайлыСОшибками") Цикл
ОбластьСтрока.Параметры.Название = ФайлСОшибкой.Имя;
ОбластьСтрока.Параметры.Ошибка = ФайлСОшибкой.Ошибка;
ОтчетОбОшибках.Вывести(ОбластьСтрока);
Область = ОтчетОбОшибках.Вывести(ОбластьСтрока);
Область.ВысотаСтроки = 0;
Область.АвтоВысотаСтроки = Истина;
КонецЦикла;
КонецПроцедуры
@@ -393,16 +395,14 @@
НСтр("ru = 'Удалено файлов: %1'"),
ЧислоУдаленныхФайлов);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Завершено удаление лишних файлов.'"),
,
ТекстОповещения,
БиблиотекаКартинок.ДиалогИнформация);
НСтр("ru = 'Завершено удаление лишних файлов.'"),,
ТекстОповещения, БиблиотекаКартинок.ДиалогИнформация);
КонецЕсли;
Если ФайлыСОшибками.Количество() > 0 Тогда
ОтчетОбОшибках = Новый ТабличныйДокумент;
СформироватьОтчетОбОшибках(ОтчетОбОшибках);
ОтчетОбОшибках.Показать();
ОтчетОбОшибках.Показать(НСтр("ru = 'Удаление лишних файлов из тома'"));
КонецЕсли;
Закрыть();
@@ -66,7 +66,7 @@
<id>28</id>
<title>
<key>ru</key>
<value>Установка пометки удаления</value>
<value>Установить/снять пометку удаления</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -804,12 +804,12 @@
<name>УстановкаПометкиУдаления</name>
<title>
<key>ru</key>
<value>Установка пометки удаления</value>
<value>Установить/снять пометку удаления</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Установка пометки удаления</value>
<value>Установить/снять пометку удаления</value>
</toolTip>
<use>
<common>true</common>
@@ -71,14 +71,8 @@
ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'");
КонецЕсли;
СодержимоеВопроса = Новый Массив;
СодержимоеВопроса.Добавить(БиблиотекаКартинок.Вопрос32);
СодержимоеВопроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстВопроса, ТекущиеДанные.Наименование));
ПоказатьВопрос(
Новый ОписаниеОповещения("ПродолжитьИзменениеПометкиУдаления", ЭтотОбъект, ТекущиеДанные),
Новый ФорматированнаяСтрока(СодержимоеВопроса),
ПоказатьВопрос(Новый ОписаниеОповещения("ПродолжитьИзменениеПометкиУдаления", ЭтотОбъект, ТекущиеДанные),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ТекущиеДанные.Наименование),
РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
@@ -65,14 +65,14 @@
</c>
<c>
<c>
<f>7</f>
<f>6</f>
<parameter>Ошибка</parameter>
</c>
</c>
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>8</defaultFormatIndex>
<defaultFormatIndex>7</defaultFormatIndex>
<height>3</height>
<vgRows>3</vgRows>
<namedItem xsi:type="NamedItemCells">
@@ -114,9 +114,7 @@
<height>177</height>
</format>
<format>
<fillType>Parameter</fillType>
</format>
<format>
<verticalAlignment>Top</verticalAlignment>
<textPlacement>Wrap</textPlacement>
<fillType>Parameter</fillType>
</format>
@@ -1223,7 +1223,20 @@
Функция РеквизитыТребующиеВводаПароляДляИзменения() Экспорт
Возврат "ИспользоватьДляОтправки,ИспользоватьДляПолучения,СерверВходящейПочты,СерверИсходящейПочты,ВладелецУчетнойЗаписи,ИспользоватьЗащищенноеСоединениеДляВходящейПочты,ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,Пользователь,ПользовательSMTP";
Реквизиты = Новый Массив;
Реквизиты.Добавить("ИспользоватьДляОтправки");
Реквизиты.Добавить("ИспользоватьДляПолучения");
Реквизиты.Добавить("СерверВходящейПочты");
Реквизиты.Добавить("СерверИсходящейПочты");
Реквизиты.Добавить("ВладелецУчетнойЗаписи");
Реквизиты.Добавить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты");
Реквизиты.Добавить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты");
Реквизиты.Добавить("Пользователь");
Реквизиты.Добавить("ПользовательSMTP");
Реквизиты.Добавить("ПриОтправкеПисемТребуетсяАвторизация");
Реквизиты.Добавить("ИмяПользователя");
Возврат СтрСоединить(Реквизиты, ",");
КонецФункции
@@ -1249,7 +1249,7 @@
КонецПроцедуры
&НаСервереБезКонтекста
Функция СведенияОСинхронизации(ВладелецФайлов)
Функция СведенияОСинхронизации(Знач ВладелецФайлов)
Возврат РаботаСФайламиСлужебный.СведенияОСинхронизации(ВладелецФайлов);
@@ -1537,7 +1537,7 @@
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор)
Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, Знач ВладелецФайлов, Знач УникальныйИдентификатор)
ИнтеграцияПодсистемБСП.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
РаботаСФайламиПереопределяемый.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
КонецПроцедуры
@@ -1664,9 +1664,9 @@
МодульЭлектроннаяПодписьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиентСервер");
Для Каждого Строка Из Элементы.ЭлектронныеПодписи.ВыделенныеСтроки Цикл
Для Каждого СтрокаСписка Из Элементы.ЭлектронныеПодписи.ВыделенныеСтроки Цикл
ТекущаяСтрока = ЭлектронныеПодписи.НайтиПоИдентификатору(Строка);
ТекущаяСтрока = ЭлектронныеПодписи.НайтиПоИдентификатору(СтрокаСписка);
Если ТекущаяСтрока.ПодписьВерна И ТекущаяСтрока.РезультатПроверки.ДополнительныеАтрибутыПровереныВручную <> Истина
Или ЗначениеЗаполнено(ТекущаяСтрока.РезультатПроверки.ОшибкаМатематическойПроверкиПодписи) Тогда
Продолжить;
@@ -64,8 +64,8 @@
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого Строка Из Строки Цикл
Строка.Значение.Данные["Наименование"] = МультиязычностьСервер.ПредставлениеЯзыка(Строка.Значение.Данные["Код"]);
Для Каждого СтрокаСписка Из Строки Цикл
СтрокаСписка.Значение.Данные["Наименование"] = МультиязычностьСервер.ПредставлениеЯзыка(СтрокаСписка.Значение.Данные["Код"]);
КонецЦикла;
КонецПроцедуры
@@ -259,14 +259,13 @@
&НаСервере
Процедура ПреобразоватьЗависимостиВСписке(Таблица, Отбор)
НайденныеСтроки = Таблица.НайтиСтроки(Отбор);
Для Каждого Строка Из НайденныеСтроки Цикл
Для Каждого Элемент Из Строка.Значение Цикл
Для Каждого СтрокаТаблицы Из Таблица.НайтиСтроки(Отбор) Цикл
Для Каждого Элемент Из СтрокаТаблицы.Значение Цикл
НоваяСтрока = Таблица.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
НоваяСтрока.Значение = Элемент.Значение;
КонецЦикла;
Таблица.Удалить(Строка);
Таблица.Удалить(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
@@ -1373,9 +1373,7 @@
</parameters>
<parameters>
<name>ВыборГруппИЭлементов</name>
<valueType>
<types>Boolean</types>
</valueType>
<valueType/>
</parameters>
<parameters>
<name>ПараметрыВыбора</name>
@@ -77,6 +77,7 @@
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<height>6</height>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
</extInfo>
@@ -150,6 +151,7 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>60</width>
<maxWidth>60</maxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
@@ -860,7 +862,7 @@
<id>1</id>
<toolTip>
<key>ru</key>
<value>Открыть копию файла на компьютере.</value>
<value>Открыть копию файла на компьютере</value>
</toolTip>
<use>
<common>true</common>
@@ -882,7 +884,7 @@
<id>2</id>
<toolTip>
<key>ru</key>
<value>Заменить копию файла на компьютере копией файла из приложения и открыть.</value>
<value>Заменить копию файла на компьютере копией файла из приложения и открыть</value>
</toolTip>
<use>
<common>true</common>
@@ -904,7 +906,7 @@
<id>3</id>
<toolTip>
<key>ru</key>
<value>Открыть рабочий каталог.</value>
<value>Открыть рабочий каталог</value>
</toolTip>
<use>
<common>true</common>
@@ -974,7 +976,7 @@
<id>6</id>
<toolTip>
<key>ru</key>
<value>Отмена действие с файлом.</value>
<value>Отмена действие с файлом</value>
</toolTip>
<use>
<common>true</common>
@@ -373,12 +373,11 @@
ПараметрыЭлемента.Родитель = ЭлементКонфигурация;
ЭлементОбщие = НоваяСтрокаДерева(ПараметрыЭлемента);
// Заполнение дерева объектов метаданных.
Для Каждого Строка Из ОбъектыМетаданных Цикл
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
Если КоллекцииВыбираемыхОбъектовМетаданных.Количество() = 0
Или КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(Строка.Имя) <> Неопределено Тогда
Строка.Родитель = ?(Строка.ЭтоКоллекцияОбщие, ЭлементОбщие, ЭлементКонфигурация);
ДобавитьЭлементДереваОбъектовМетаданных(Строка, ?(Строка.Имя = "Подсистемы", Метаданные.Подсистемы, Неопределено));
Или КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(ОбъектМетаданных.Имя) <> Неопределено Тогда
ОбъектМетаданных.Родитель = ?(ОбъектМетаданных.ЭтоКоллекцияОбщие, ЭлементОбщие, ЭлементКонфигурация);
ДобавитьЭлементДереваОбъектовМетаданных(ОбъектМетаданных, ?(ОбъектМетаданных.Имя = "Подсистемы", Метаданные.Подсистемы, Неопределено));
КонецЕсли;
КонецЦикла;
@@ -610,9 +610,8 @@
&НаКлиенте
Процедура РазвернутьДеревоЗначений()
Строки = ДеревоГрупп.ПолучитьЭлементы();
Для Каждого Строка Из Строки Цикл
Элементы.ДеревоГрупп.Развернуть(Строка.ПолучитьИдентификатор(), Истина);
Для Каждого Элемент Из ДеревоГрупп.ПолучитьЭлементы() Цикл
Элементы.ДеревоГрупп.Развернуть(Элемент.ПолучитьИдентификатор(), Истина);
КонецЦикла;
КонецПроцедуры
@@ -121,7 +121,7 @@
КонецЕсли;
Если Не ОписаниеДанных.Свойство("Объект") Тогда
ОписаниеДанных.Вставить("Подписи", МассивПодписей());
ОписаниеДанных.Вставить("Подписи", ДобавляемыеПодписи());
Закрыть(Истина);
Возврат;
КонецЕсли;
@@ -129,9 +129,8 @@
Если ТипЗнч(ОписаниеДанных.Объект) <> Тип("ОписаниеОповещения") Тогда
ВерсияОбъекта = Неопределено;
ОписаниеДанных.Свойство("ВерсияОбъекта", ВерсияОбъекта);
МассивПодписей = Неопределено;
Попытка
ДобавитьПодпись(ОписаниеДанных.Объект, ВерсияОбъекта, МассивПодписей);
МассивПодписей = ДобавитьПодпись(ОписаниеДанных.Объект, ВерсияОбъекта);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ОКЗавершение(Новый Структура("ОписаниеОшибки", ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке)));
@@ -140,7 +139,7 @@
ОписаниеДанных.Вставить("Подписи", МассивПодписей);
ОповеститьОбИзменении(ОписаниеДанных.Объект);
Иначе
ОписаниеДанных.Вставить("Подписи", МассивПодписей());
ОписаниеДанных.Вставить("Подписи", ДобавляемыеПодписи());
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных);
@@ -438,7 +437,7 @@
СвойстваСертификата.Вставить("ДвоичныеДанные", ДанныеСертификата);
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(Контекст.ДанныеПодписи,
СвойстваСертификата, "", ПользователиКлиент.АвторизованныйПользователь(), Контекст.ИмяФайла, Контекст.ПараметрыПодписи);
СвойстваСертификата, "", ПользователиКлиент.АвторизованныйПользователь(), Контекст.ИмяФайла, Контекст.ПараметрыПодписи, Истина);
ДобавитьСтроку(ЭтотОбъект, Контекст.ДобавитьНовуюСтроку, СвойстваПодписи,
Контекст.ИмяФайла, Контекст.АдресСвойствПодписи);
@@ -469,47 +468,40 @@
Возврат; // Не удалось получить данные, подпись проверить невозможно.
КонецЕсли;
ПараметрыДляПроверки = ЭлектроннаяПодписьКлиент.ПараметрыПроверкиПодписи();
ПараметрыДляПроверки.ПоказатьОшибкуСозданияМенеджераКриптографии = Ложь;
ПараметрыДляПроверки.РезультатВВидеСтруктуры = Истина;
ЭлектроннаяПодписьСлужебныйКлиент.ПроверитьПодпись(Новый ОписаниеОповещения(
"ВыбратьФайлПослеПроверкиПодписи", ЭтотОбъект, Контекст),
Результат, Контекст.ДанныеПодписи, , Контекст.ДатаПодписи, Ложь);
Результат, Контекст.ДанныеПодписи, , Контекст.ДатаПодписи, ПараметрыДляПроверки);
КонецПроцедуры
// Продолжение процедуры ВыбратьФайл.
&НаКлиенте
Процедура ВыбратьФайлПослеПроверкиПодписи(Результат, Контекст) Экспорт
Процедура ВыбратьФайлПослеПроверкиПодписи(РезультатПроверки, Контекст) Экспорт
Если Результат = Неопределено Тогда
Если РезультатПроверки.Результат = Неопределено Тогда
Возврат; // Не удалось проверить подпись.
КонецЕсли;
ОбновитьРезультатПроверкиПодписи(Контекст.АдресСвойствПодписи, Результат = Истина);
ОбновитьРезультатПроверкиПодписи(Контекст.АдресСвойствПодписи, РезультатПроверки);
КонецПроцедуры
&НаСервере
Процедура ОбновитьРезультатПроверкиПодписи(АдресСвойствПодписи, ПодписьВерна)
Процедура ОбновитьРезультатПроверкиПодписи(АдресСвойствПодписи, РезультатПроверки)
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
СвойстваПодписи = ПолучитьИзВременногоХранилища(АдресСвойствПодписи);
Если ЗначениеЗаполнено(ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
СвойстваПодписи, "НеподтвержденнаяДатаПодписи", Неопределено)) Тогда
ДатаПодписи = СвойстваПодписи.НеподтвержденнаяДатаПодписи;
КонецЕсли;
НовыеСвойстваПодписи = ЭлектроннаяПодписьКлиентСервер.НовыеСвойстваПодписи();
ЗаполнитьЗначенияСвойств(НовыеСвойстваПодписи, СвойстваПодписи);
ЗаполнитьЗначенияСвойств(НовыеСвойстваПодписи, РезультатПроверки);
НовыеСвойстваПодписи.ДатаПроверкиПодписи = ТекущаяДатаСеанса;
Если Не ЗначениеЗаполнено(ДатаПодписи) Тогда
Если Не ЗначениеЗаполнено(СвойстваПодписи.ДатаПодписи) Тогда
СвойстваПодписи.ДатаПодписи = ТекущаяДатаСеанса;
КонецЕсли;
Иначе
СвойстваПодписи.ДатаПодписи = ДатаПодписи;
КонецЕсли;
СвойстваПодписи.ДатаПроверкиПодписи = ТекущаяДатаСеанса;
СвойстваПодписи.ПодписьВерна = ПодписьВерна;
ПоместитьВоВременноеХранилище(СвойстваПодписи, АдресСвойствПодписи);
ПоместитьВоВременноеХранилище(НовыеСвойстваПодписи, АдресСвойствПодписи);
КонецПроцедуры
@@ -598,7 +590,7 @@
СвойстваСертификата.Вставить("ДвоичныеДанные", Сертификат.Выгрузить());
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(ДанныеПодписи,
СвойстваСертификата, "", Пользователи.АвторизованныйПользователь(), ИмяФайла, ПараметрыПодписи);
СвойстваСертификата, "", Пользователи.АвторизованныйПользователь(), ИмяФайла, ПараметрыПодписи, Истина);
ДобавитьСтроку(ЭтотОбъект, ДобавитьНовуюСтроку, СвойстваПодписи, ИмяФайла, АдресСвойствПодписи);
@@ -623,31 +615,27 @@
КонецПроцедуры
&НаСервере
Функция МассивПодписей()
Функция ДобавляемыеПодписи()
МассивПодписей = Новый Массив;
Для каждого Строка Из Подписи Цикл
СвойстваПодписи = ПолучитьИзВременногоХранилища(Строка.АдресСвойствПодписи);
СвойстваПодписи.Вставить("Комментарий", Строка.Комментарий);
МассивПодписей.Добавить(ПоместитьВоВременноеХранилище(СвойстваПодписи, УникальныйИдентификатор));
Результат = Новый Массив;
Для каждого Подпись Из Подписи Цикл
СвойстваПодписи = ПолучитьИзВременногоХранилища(Подпись.АдресСвойствПодписи);
СвойстваПодписи.Вставить("Комментарий", Подпись.Комментарий);
Результат.Добавить(ПоместитьВоВременноеХранилище(СвойстваПодписи, УникальныйИдентификатор));
КонецЦикла;
Возврат МассивПодписей;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ДобавитьПодпись(СсылкаНаОбъект, ВерсияОбъекта, МассивПодписей)
Функция ДобавитьПодпись(СсылкаНаОбъект, ВерсияОбъекта)
МассивПодписей = МассивПодписей();
Результат = ДобавляемыеПодписи();
ЭлектроннаяПодпись.ДобавитьПодпись(СсылкаНаОбъект, Результат, УникальныйИдентификатор, ВерсияОбъекта);
Возврат Результат;
ЭлектроннаяПодпись.ДобавитьПодпись(СсылкаНаОбъект,
МассивПодписей, УникальныйИдентификатор, ВерсияОбъекта);
КонецПроцедуры
КонецФункции
&НаКлиенте
Процедура ПоказатьОшибку(ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры = Неопределено)
@@ -150,8 +150,7 @@
Элементы.ГруппаПрограммыLinuxПутьКПрограмме.Видимость = Ложь;
КонецЕсли;
Элементы.ГруппаПодсказкаКриптопровайдеры.Видимость = ОбщегоНазначения.ЭтоВебКлиент()
И Параметры.Свойство("РасширениеНеПодключено");
Элементы.ГруппаПодсказкаКриптопровайдеры.Видимость = ОбщегоНазначения.ЭтоВебКлиент();
Элементы.ФормаУстановитьРасширение.Видимость = ОбщегоНазначения.ЭтоВебКлиент();
ЗаполнитьПрограммыИНастройки();
@@ -397,16 +396,16 @@
&НаСервереБезКонтекста
Процедура СертификатыПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого Строка Из Строки Цикл
Если НЕ Строка.Значение.Данные.Свойство("Пользователь") Тогда
Для Каждого СтрокаСписка Из Строки Цикл
Если НЕ СтрокаСписка.Значение.Данные.Свойство("Пользователь") Тогда
Возврат;
КонецЕсли;
Прервать;
КонецЦикла;
Запрос = Неопределено;
Для Каждого Строка Из Строки Цикл
Если ЗначениеЗаполнено(Строка.Значение.Данные.Пользователь) Тогда
Для Каждого СтрокаСписка Из Строки Цикл
Если ЗначениеЗаполнено(СтрокаСписка.Значение.Данные.Пользователь) Тогда
Продолжить;
КонецЕсли;
Если Запрос = Неопределено Тогда
@@ -432,18 +431,18 @@
КонецЕсли;
ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
КонецЕсли;
Если ВыборкаСсылка.НайтиСледующий(Строка.Значение.Данные["Ссылка"], "Ссылка") Тогда
Если ВыборкаСсылка.НайтиСледующий(СтрокаСписка.Значение.Данные["Ссылка"], "Ссылка") Тогда
КоличествоПользователей = ВыборкаСсылка.Пользователь;
ВыборкаПользователь = ВыборкаСсылка.Выбрать();
ВыборкаПользователь.Следующий();
Если КоличествоПользователей = 1 Тогда
Строка.Значение.Данные.Пользователь = ВыборкаПользователь.ПользовательПредставление;
СтрокаСписка.Значение.Данные.Пользователь = ВыборкаПользователь.ПользовательПредставление;
Продолжить;
КонецЕсли;
Пользователь1 = ВыборкаПользователь.ПользовательПредставление;
ВыборкаПользователь.Следующий();
Пользователь2 = ВыборкаПользователь.ПользовательПредставление;
Строка.Значение.Данные.Пользователь = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПользователиСертификатаСтрокой(
СтрокаСписка.Значение.Данные.Пользователь = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПользователиСертификатаСтрокой(
Пользователь1, Пользователь2, КоличествоПользователей);
КонецЕсли;
КонецЦикла;
@@ -142,7 +142,7 @@
ПараметрыКлиента.Вставить("Обновлять", Ложь)
КонецЕсли;
Если ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта()
Или ИмяСобытия = "Запись_НаборКонстант" Тогда
Или ИмяСобытия = "Запись_НаборКонстант" Или ИмяСобытия = "Запись_ВариантыОтчетов" Тогда
ПараметрыКлиента.Обновлять = Истина;
ИначеЕсли ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеОбщихНастроек() Тогда
Если Изменения.ПоказыватьПодсказки <> ПоказыватьПодсказки
@@ -637,12 +637,12 @@
Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)));
ГруппаДоступаВСтроке = Неопределено;
Для Каждого Строка Из ТаблицаЗначений Цикл
Если ГруппаДоступаВСтроке <> Строка.ГруппаДоступа Тогда
ГруппаДоступаВСтроке = Строка.ГруппаДоступа;
Для Каждого СтрокаТаблицы Из ТаблицаЗначений Цикл
Если ГруппаДоступаВСтроке <> СтрокаТаблицы.ГруппаДоступа Тогда
ГруппаДоступаВСтроке = СтрокаТаблицы.ГруппаДоступа;
ТекущийНомерСтроки = 1;
КонецЕсли;
Строка.НомерСтроки = ТекущийНомерСтроки;
СтрокаТаблицы.НомерСтроки = ТекущийНомерСтроки;
ТекущийНомерСтроки = ТекущийНомерСтроки + 1;
КонецЦикла;
Запрос.УстановитьПараметр("ЗначенияДоступа", ТаблицаЗначений);
@@ -1382,6 +1382,10 @@
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@@ -1548,6 +1552,17 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПараметрыДополненияТекстаРешенияОшибкиКлассификатора</name>
<id>11</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ПерейтиКНастройкеПрограмм</name>
<title>
@@ -69,6 +69,17 @@
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
#Если Не МобильноеПриложениеКлиент И Не МобильныйКлиент Тогда
Если ПараметрыДополненияТекстаРешенияОшибкиКлассификатора <> Неопределено Тогда
ПодключитьОбработчикОжидания("ДополнитьРешениеКлассификатораОшибокПодробностями", 0.1, Истина);
КонецЕсли;
#КонецЕсли
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
@@ -100,21 +111,67 @@
ЭлектроннаяПодписьКлиент.ОткрытьИнструкциюПоТипичнымПроблемамПриРаботеСПрограммами();
Иначе
ТекстОшибок = "";
ОписаниеФайлов = Новый Массив;
ТекстОшибок = "";
Если ЗначениеЗаполнено(ДополнительныеДанные) Тогда
ЭлектроннаяПодписьСлужебныйВызовСервера.ДобавитьОписаниеДополнительныхДанных(
ДополнительныеДанные, ОписаниеФайлов, ТекстОшибок);
КонецЕсли;
ТекстОшибок = ТекстОшибок + ОписаниеОшибки;
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
ТемаСообщения = ТемаСообщения(ОписаниеОшибки);
ИначеЕсли ЗначениеЗаполнено(ТекстОшибки) Тогда
ТемаСообщения = ТемаСообщения(ТекстОшибки);
ИначеЕсли ЗначениеЗаполнено(ТекстОшибкиКлиент) Тогда
ТемаСообщения = ТемаСообщения(ТекстОшибкиКлиент);
ИначеЕсли ЗначениеЗаполнено(ТекстОшибкиСервер) Тогда
ТемаСообщения = ТемаСообщения(ТекстОшибкиСервер);
Иначе
ТемаСообщения = НСтр("ru = 'Техническая информация о возникшей проблеме'");
КонецЕсли;
Массив = Новый Массив;
Если ЗначениеЗаполнено(ТекстОшибок) Тогда
Массив.Добавить(ТекстОшибок);
КонецЕсли;
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
Массив.Добавить(ОписаниеОшибки);
КонецЕсли;
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
Массив.Добавить(ТекстОшибки);
КонецЕсли;
Если ЗначениеЗаполнено(ТекстОшибкиКлиент) Тогда
Массив.Добавить(НСтр("ru = 'На клиенте:'"));
Массив.Добавить(ТекстОшибкиКлиент);
КонецЕсли;
Если ЗначениеЗаполнено(ТекстОшибкиСервер) Тогда
Массив.Добавить(НСтр("ru = 'На сервере:'"));
Массив.Добавить(ТекстОшибкиСервер);
КонецЕсли;
ТекстОшибок = СтрСоединить(Массив, Символы.ПС);
ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(
ТекстОшибок, Новый Структура("Тема, Сообщение", Элементы.ИнформацияДляПоддержки.Заголовок), , ОписаниеФайлов);
ТекстОшибок, Новый Структура("Тема, Сообщение", ТемаСообщения), , ОписаниеФайлов);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ТемаСообщения(Знач Ошибка)
ПереносСтроки = СтрНайти(Ошибка, Символы.ПС);
Если ПереносСтроки = 0 Тогда
ТемаСообщения = Лев(Ошибка, 100);
Иначе
ТемаСообщения = Лев(Ошибка, ПереносСтроки - 1);
КонецЕсли;
Возврат ТемаСообщения;
КонецФункции
&НаКлиенте
Процедура ПричиныКлиентТекстОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьНавигационнуюСсылкуКлассификатора(
@@ -163,6 +220,33 @@
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ДополнитьРешениеКлассификатораОшибокПодробностями()
ОшибкаПоКлассификатору = Новый Структура;
ОшибкаПоКлассификатору.Вставить("ТекстОшибки", Элементы.ТекстОшибкиКлиент.Заголовок);
ОшибкаПоКлассификатору.Вставить("Причина", Элементы.ПричиныКлиентТекст.Заголовок);
ОшибкаПоКлассификатору.Вставить("Решение", Элементы.РешенияКлиентТекст.Заголовок);
ДанныеДляДополнения = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДанныеДляДополненияОшибкиИзКлассификатора(ДополнительныеДанные);
ЭлектроннаяПодписьСлужебныйКлиент.ДополнитьРешениеКлассификатораОшибокПодробностями(
Новый ОписаниеОповещения("ПослеДополненияРешенияКлассификатораОшибок", ЭтотОбъект),
ОшибкаПоКлассификатору, ПараметрыДополненияТекстаРешенияОшибкиКлассификатора, ДанныеДляДополнения);
КонецПроцедуры
&НаКлиенте
Процедура ПослеДополненияРешенияКлассификатораОшибок(ОшибкаПоКлассификатору, Контекст) Экспорт
Если Элементы.РешенияКлиентТекст.Заголовок <> ОшибкаПоКлассификатору.Решение Тогда
Элементы.РешенияКлиентТекст.Заголовок = ОшибкаПоКлассификатору.Решение;
КонецЕсли;
Если Элементы.ПричиныКлиентТекст.Заголовок <> ОшибкаПоКлассификатору.Причина Тогда
Элементы.ПричиныКлиентТекст.Заголовок = ОшибкаПоКлассификатору.Причина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьЭлементы(ТекстОшибки, ДвеОшибки, МестоОшибки)
@@ -221,18 +305,15 @@
Если ЭтоИзвестнаяОшибка Тогда
Если ЗначениеЗаполнено(ОшибкаПоКлассификатору.ДействияДляУстранения) Тогда
Если ОшибкаПоКлассификатору.ДействияДляУстранения.Найти(
"УказатьВРешенииСсылкуНаУдостоверяющийЦентр") <> Неопределено Тогда
ИздательСертификата = ИздательСертификата();
Если ЗначениеЗаполнено(ИздательСертификата) Тогда
Решение = Новый Массив;
Решение.Добавить(ОшибкаПоКлассификатору.Решение);
Решение.Добавить(Символы.ПС);
Решение.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Удостоверяющий центр, выдавший сертификат: %1.'"), ИздательСертификата));
ОшибкаПоКлассификатору.Решение = Новый ФорматированнаяСтрока(Решение);
КонецЕсли;
Если ПараметрыДополненияТекстаРешенияОшибкиКлассификатора = Неопределено Тогда
ПараметрыДополненияТекстаРешенияОшибкиКлассификатора = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыДополненияТекстаРешенияОшибкиКлассификатора();
КонецЕсли;
ДанныеДляДополнения = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДанныеДляДополненияОшибкиИзКлассификатора(ДополнительныеДанные);
Дополнение = ЭлектроннаяПодписьСлужебный.ДополнитьРешениеКлассификатораОшибокПодробностями(
ОшибкаПоКлассификатору, ДанныеДляДополнения,
ПараметрыДополненияТекстаРешенияОшибкиКлассификатора, МестоОшибки);
ОшибкаПоКлассификатору = Дополнение.ОшибкаПоКлассификатору;
ПараметрыДополненияТекстаРешенияОшибкиКлассификатора = Дополнение.ПараметрыДополненияТекстаРешенияОшибкиКлассификатораНаКлиенте;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
@@ -288,47 +369,6 @@
КонецПроцедуры
&НаСервере
Функция ИздательСертификата()
Если Не ЗначениеЗаполнено(ДополнительныеДанные) Тогда
Возврат Неопределено;
КонецЕсли;
ДанныеСертификата = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеДанные, "ДанныеСертификата", Неопределено);
Если ЗначениеЗаполнено(ДанныеСертификата) Тогда
Если ТипЗнч(ДанныеСертификата) = Тип("Строка") Тогда
ДанныеСертификата = ПолучитьИзВременногоХранилища(ДанныеСертификата);
КонецЕсли;
Иначе
Сертификат = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеДанные, "Сертификат", Неопределено);
Если ЗначениеЗаполнено(Сертификат) Тогда
Если ТипЗнч(Сертификат) = Тип("Массив") Тогда
Если Сертификат.Количество() > 0 Тогда
Если ТипЗнч(Сертификат[0]) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
ДанныеСертификата = ДанныеСертификата(Сертификат[0], Неопределено);
Иначе
ДанныеСертификата = ПолучитьИзВременногоХранилища(Сертификат[0]);
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗнч(Сертификат) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
ДанныеСертификата = ДанныеСертификата(Сертификат, Неопределено);
ИначеЕсли ТипЗнч(Сертификат) = Тип("ДвоичныеДанные") Тогда
ДанныеСертификата = Сертификат;
Иначе
ДанныеСертификата = ПолучитьИзВременногоХранилища(Сертификат);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеСертификата) Тогда
СвойстваИздателя = ЭлектроннаяПодпись.СвойстваИздателяСертификата(Новый СертификатКриптографии(ДанныеСертификата));
Возврат СвойстваИздателя.ОбщееИмя;
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Функция ДополнительныеДанные()
@@ -24,13 +24,11 @@
СсылкаНаОбъект = Параметры.Ссылка;
// Получение списка доступных наборов свойств.
НаборыСвойств = УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта(Параметры.Ссылка);
Для каждого Строка Из НаборыСвойств Цикл
ДоступныеНаборыСвойств.Добавить(Строка.Набор);
Для каждого СтрокаТаблицы Из НаборыСвойств Цикл
ДоступныеНаборыСвойств.Добавить(СтрокаТаблицы.Набор);
КонецЦикла;
// Заполнение таблицы значений свойств.
ЗаполнитьТаблицуЗначенийСвойств(Истина);
КонецПроцедуры
@@ -206,11 +204,10 @@
&НаСервере
Процедура ЗаполнитьТаблицуЗначенийСвойств(ИзОбработчикаПриСоздании)
// Заполнение дерева значениями свойств.
Если ИзОбработчикаПриСоздании Тогда
ЗначенияСвойств = ПрочитатьЗначенияСвойствИзРегистраСведений(Параметры.Ссылка);
Иначе
ЗначенияСвойств = ПолучитьТекущиеЗначенияСвойств();
ЗначенияСвойств = ТекущиеЗначенияСвойств();
ТаблицаЗначенийСвойств.Очистить();
КонецЕсли;
@@ -229,85 +226,90 @@
Если Не УниверсальноеОграничение Тогда
ПроверяемыеСвойства = Таблица.ВыгрузитьКолонку("Свойство");
РазрешенныеСвойства = МодульУправлениеДоступомСлужебный.РазрешенныеЗначенияДляДинамическогоСписка(
ПроверяемаяТаблица,
ЗначениеДоступа,
ПроверяемыеСвойства, , Истина);
ПроверяемаяТаблица, ЗначениеДоступа, ПроверяемыеСвойства, , Истина);
КонецЕсли;
КонецЕсли;
Для Каждого Строка Из Таблица Цикл
Если Не ПроверятьПрава Тогда
ДоступноДляИзменения = Истина;
Иначе
Если УниверсальноеОграничение Тогда
Набор = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
Набор.Отбор.Объект.Установить(Параметры.Ссылка);
Набор.Отбор.Свойство.Установить(Строка.Свойство);
Запись = Набор.Добавить();
Запись.Свойство = Строка.Свойство;
Запись.Объект = Параметры.Ссылка;
ДоступноДляИзменения = МодульУправлениеДоступом.ИзменениеРазрешено(Набор);
Если Не ДоступноДляИзменения
И Не МодульУправлениеДоступом.ЧтениеРазрешено(Набор) Тогда
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если ПроверятьПрава Тогда
ПраваДоступаСвойства = ПраваДоступаСвойства(СтрокаТаблицы.Свойство, УниверсальноеОграничение,
РазрешенныеСвойства, МодульУправлениеДоступом);
Если Не ПраваДоступаСвойства.ДоступноДляЧтения Тогда
Продолжить;
КонецЕсли;
Иначе
ДоступноДляИзменения = Ложь;
// Проверка на чтение свойства.
Если РазрешенныеСвойства <> Неопределено И РазрешенныеСвойства.Найти(Строка.Свойство) = Неопределено Тогда
Продолжить;
КонецЕсли;
// Проверка на запись свойства.
НачатьТранзакцию();
Попытка
Набор = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
Набор.Отбор.Объект.Установить(Параметры.Ссылка);
Набор.Отбор.Свойство.Установить(Строка.Свойство);
Запись = Набор.Добавить();
Запись.Свойство = Строка.Свойство;
Запись.Объект = Параметры.Ссылка;
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать(Истина);
ДоступноДляИзменения = Истина;
ОтменитьТранзакцию();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
ОтменитьТранзакцию();
КонецПопытки;
КонецЕсли;
КонецЕсли;
НоваяСтрока = ТаблицаЗначенийСвойств.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
Если ЗначениеЗаполнено(НоваяСтрока.Подсказка) Тогда
НоваяСтрока.КолонкаВопрос = "?";
КонецЕсли;
НоваяСтрока.НомерКартинки = ?(Строка.Удалено, 0, -1);
НоваяСтрока.ДоступноДляИзменения = ДоступноДляИзменения;
НоваяСтрока.НомерКартинки = ?(СтрокаТаблицы.Удалено, 0, -1);
НоваяСтрока.ДоступноДляИзменения = ?(ПроверятьПрава, ПраваДоступаСвойства.ДоступноДляИзменения, Истина);
Если Строка.Значение = Неопределено
И ОбщегоНазначения.ОписаниеТипаСостоитИзТипа(Строка.ТипЗначения, Тип("Булево")) Тогда
Если СтрокаТаблицы.Значение = Неопределено
И ОбщегоНазначения.ОписаниеТипаСостоитИзТипа(СтрокаТаблицы.ТипЗначения, Тип("Булево")) Тогда
НоваяСтрока.Значение = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПраваДоступаСвойства(Свойство, УниверсальноеОграничение, РазрешенныеСвойства, МодульУправлениеДоступом)
Результат = Новый Структура("ДоступноДляЧтения,ДоступноДляИзменения", Ложь, Ложь);
Если УниверсальноеОграничение Тогда
НаборЗаписей = ТестовыйНаборЗаписей(Свойство);
Результат.ДоступноДляЧтения = МодульУправлениеДоступом.ЧтениеРазрешено(НаборЗаписей);
Результат.ДоступноДляИзменения = МодульУправлениеДоступом.ИзменениеРазрешено(НаборЗаписей);
Возврат Результат;
КонецЕсли;
Если РазрешенныеСвойства <> Неопределено И РазрешенныеСвойства.Найти(Свойство) = Неопределено Тогда
Возврат Результат;
КонецЕсли;
Результат.ДоступноДляЧтения = Истина;
НачатьТранзакцию(); // АПК:326 Фиксация транзакции не требуется, т.к. это проверка прав на запись.
Попытка
НаборЗаписей = ТестовыйНаборЗаписей(Свойство);
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать(Истина);
Результат.ДоступноДляИзменения = Истина;
ОтменитьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
Возврат Результат;
КонецФункции
&НаСервере
Функция ТестовыйНаборЗаписей(Свойство)
НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Объект.Установить(Параметры.Ссылка);
НаборЗаписей.Отбор.Свойство.Установить(Свойство);
Запись = НаборЗаписей.Добавить();
Запись.Свойство = Свойство;
Запись.Объект = Параметры.Ссылка;
Возврат НаборЗаписей;
КонецФункции
&НаКлиенте
Процедура ЗаписатьЗначенияСвойств()
// Запись значений свойств в регистр сведений.
ЗначенияСвойств = Новый Массив;
Для Каждого Строка Из ТаблицаЗначенийСвойств Цикл
Значение = Новый Структура("Свойство, Значение", Строка.Свойство, Строка.Значение);
Для Каждого СтрокаТаблицы Из ТаблицаЗначенийСвойств Цикл
Значение = Новый Структура("Свойство, Значение", СтрокаТаблицы.Свойство, СтрокаТаблицы.Значение);
ЗначенияСвойств.Добавить(Значение);
КонецЦикла;
@@ -335,15 +337,15 @@
Набор.Отбор.Объект.Установить(Ссылка);
Набор.Прочитать();
ТекущиеЗначения = Набор.Выгрузить();
Для Каждого Строка Из ЗначенияСвойств Цикл
Запись = ТекущиеЗначения.Найти(Строка.Свойство, "Свойство");
Для Каждого СтрокаТаблицы Из ЗначенияСвойств Цикл
Запись = ТекущиеЗначения.Найти(СтрокаТаблицы.Свойство, "Свойство");
Если Запись = Неопределено Тогда
Запись = ТекущиеЗначения.Добавить();
Запись.Свойство = Строка.Свойство;
Запись.Значение = Строка.Значение;
Запись.Свойство = СтрокаТаблицы.Свойство;
Запись.Значение = СтрокаТаблицы.Значение;
Запись.Объект = Ссылка;
КонецЕсли;
Запись.Значение = Строка.Значение;
Запись.Значение = СтрокаТаблицы.Значение;
Если Не ЗначениеЗаполнено(Запись.Значение)
Или Запись.Значение = Ложь Тогда
@@ -379,18 +381,18 @@
КонецФункции
&НаСервере
Функция ПолучитьТекущиеЗначенияСвойств()
Функция ТекущиеЗначенияСвойств()
ЗначенияСвойств = Новый ТаблицаЗначений;
ЗначенияСвойств.Колонки.Добавить("Свойство");
ЗначенияСвойств.Колонки.Добавить("Значение");
Для каждого Строка Из ТаблицаЗначенийСвойств Цикл
Для каждого СтрокаТаблицы Из ТаблицаЗначенийСвойств Цикл
Если ЗначениеЗаполнено(Строка.Значение) И (Строка.Значение <> Ложь) Тогда
Если ЗначениеЗаполнено(СтрокаТаблицы.Значение) И (СтрокаТаблицы.Значение <> Ложь) Тогда
НоваяСтрока = ЗначенияСвойств.Добавить();
НоваяСтрока.Свойство = Строка.Свойство;
НоваяСтрока.Значение = Строка.Значение;
НоваяСтрока.Свойство = СтрокаТаблицы.Свойство;
НоваяСтрока.Значение = СтрокаТаблицы.Значение;
КонецЕсли;
КонецЦикла;
@@ -33,8 +33,8 @@
// Получение списка доступных наборов свойств.
НаборыСвойств = УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта(СсылкаНаОбъект);
Для каждого Строка Из НаборыСвойств Цикл
ДоступныеНаборыСвойств.Добавить(Строка.Набор);
Для каждого СтрокаТаблицы Из НаборыСвойств Цикл
ДоступныеНаборыСвойств.Добавить(СтрокаТаблицы.Набор);
КонецЦикла;
МеткиОбъекта.ЗагрузитьЗначения(УправлениеСвойствами.СвойстваПоВидуДополнительныхРеквизитов(
@@ -960,24 +960,19 @@
Если ЭтоСтрока И ТекущийОбъект = Родитель.Ссылка Тогда
Выводился = Истина;
Иначе
Строки = Родитель.ПолучитьЭлементы();
Для Каждого Строка Из Строки Цикл
Если ТекущийОбъект = Строка.Ссылка Тогда
Выводился = Истина;
Прервать;
Возврат Выводился;
КонецЕсли;
Для Каждого Элемент Из Родитель.ПолучитьЭлементы() Цикл
Если ТекущийОбъект = Элемент.Ссылка Тогда
Выводился = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЭтоСтрока И Не Выводился Тогда
ТекущийОбъектВыводилсяВВетке(Родитель.ПолучитьРодителя(), ТекущийОбъект, Выводился);
КонецЕсли;
КонецЕсли;
Возврат Выводился;
@@ -203,22 +203,22 @@
СвойстваИсправления = ОбновлениеКонфигурации.СвойстваИсправления(Расширение.Имя);
НоваяСтрока = УстановленныеИсправления.Добавить();
НоваяСтрока.Имя = Расширение.Имя;
НоваяСтрока.КонтрольнаяСумма = Base64Строка(Расширение.ХешСумма);
НоваяСтрока.ИдентификаторРасширения = Расширение.УникальныйИдентификатор;
НоваяСтрока.Подключать = Расширение.Активно;
НоваяСтрока.Версия = Расширение.Версия;
Исправление = УстановленныеИсправления.Добавить();
Исправление.Имя = Расширение.Имя;
Исправление.КонтрольнаяСумма = Base64Строка(Расширение.ХешСумма);
Исправление.ИдентификаторРасширения = Расширение.УникальныйИдентификатор;
Исправление.Подключать = Расширение.Активно;
Исправление.Версия = Расширение.Версия;
Если СвойстваИсправления = "ОшибкаЧтения" Тогда
НоваяСтрока.Статус = 0;
Исправление.Статус = 0;
ИначеЕсли СвойстваИсправления <> Неопределено Тогда
НоваяСтрока.Статус = 0;
НоваяСтрока.Описание = СвойстваИсправления.Description;
НоваяСтрока.ПрименимоДля = ИсправлениеПрименимоДля(СвойстваИсправления);
Исправление.Статус = 0;
Исправление.Описание = СвойстваИсправления.Description;
Исправление.ПрименимоДля = ПрименимостьДляКонфигураций(СвойстваИсправления);
Иначе
Описание = ОписаниеИсправлений[Расширение.Имя];
НоваяСтрока.Статус = 1;
НоваяСтрока.Описание = Описание;
Исправление.Статус = 1;
Исправление.Описание = Описание;
КонецЕсли;
КонецЦикла;
@@ -251,14 +251,14 @@
КонецФункции
&НаСервере
Функция ИсправлениеПрименимоДля(СвойстваИсправления)
Функция ПрименимостьДляКонфигураций(СвойстваИсправления)
ПрименимоДля = Новый Массив;
Для Каждого Строка Из СвойстваИсправления.AppliedFor Цикл
ПрименимоДля.Добавить(Строка.ConfigurationName);
ИменаКонфигураций = Новый Массив;
Для Каждого ИмяКонфигурации Из СвойстваИсправления.AppliedFor Цикл
ИменаКонфигураций.Добавить(ИмяКонфигурации.ConfigurationName);
КонецЦикла;
Возврат СтрСоединить(ПрименимоДля, Символы.ПС);
Возврат СтрСоединить(ИменаКонфигураций, Символы.ПС);
КонецФункции
@@ -415,12 +415,12 @@
Функция ИдентификаторыПодключенныхИсправлений()
Подключенные = Новый Массив;
Для Каждого Строка Из УстановленныеИсправления Цикл
Если Не Строка.Подключать Тогда
Для Каждого Исправление Из УстановленныеИсправления Цикл
Если Не Исправление.Подключать Тогда
Продолжить;
КонецЕсли;
Подключенные.Добавить(Строка.ПолучитьИдентификатор());
Подключенные.Добавить(Исправление.ПолучитьИдентификатор());
КонецЦикла;
Возврат Подключенные;
@@ -383,8 +383,8 @@
Возврат;
КонецЕсли;
Для каждого Строка Из НайденныеКонтакты.Строки Цикл
Строка.Представление = ВРег(Строка.Представление);
Для каждого СтрокаТаблицы Из НайденныеКонтакты.Строки Цикл
СтрокаТаблицы.Представление = ВРег(СтрокаТаблицы.Представление);
КонецЦикла;
// Для каждой строки проставим список найденных контактов.
@@ -2095,7 +2095,7 @@
&НаКлиенте
Процедура Подключаемый_Список_ВставитьИзБуфера(Команда)
ПутьКСписку = СтрЗаменить(Команда.Имя, "ВставитьИзБуфера", "");
ПутьКСписку = СтрЗаменить(Команда.Имя, ОтчетыКлиентСервер.ИмяКомандыВставитьИзБуфера(), "");
Список = ЭтотОбъект[ПутьКСписку];
ПолеСписка = Элементы[ПутьКСписку]; // ТаблицаФормы
@@ -2957,8 +2957,8 @@
СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(
Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек);
Для Каждого Строка Из ПараметрыСдвига.Строки Цикл
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
Для Каждого СтрокаСписка Из ПараметрыСдвига.Строки Цикл
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, СтрокаСписка);
ЭлементыНастроек = СвойствоЭлементаСтруктуры.Элементы;
Если ЭлементНастройки.Родитель <> Неопределено Тогда
@@ -3535,8 +3535,8 @@
СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(
Отчет.КомпоновщикНастроек, "Выбор", ИдентификаторЭлементаСтруктурыНастроек, РасширенныйРежим);
Для Каждого Строка Из ПараметрыСдвига.Строки Цикл
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
Для Каждого СтрокаСписка Из ПараметрыСдвига.Строки Цикл
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, СтрокаСписка);
ЭлементыНастроек = СвойствоЭлементаСтруктуры.Элементы;
Если ЭлементНастройки.Родитель <> Неопределено Тогда
@@ -3955,18 +3955,18 @@
&НаКлиенте
Процедура ИзменитьТипУпорядочиванияСтрок(ТипУпорядочивания)
Строки = Сортировка.ПолучитьЭлементы()[0].ПолучитьЭлементы();
Если Строки.Количество() = 0 Тогда
Элементы = Сортировка.ПолучитьЭлементы()[0].ПолучитьЭлементы();
Если Элементы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(
Отчет.КомпоновщикНастроек, "Порядок", ИдентификаторЭлементаСтруктурыНастроек, РасширенныйРежим);
Для Каждого Строка Из Строки Цикл
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
Для Каждого Элемент Из Элементы Цикл
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Элемент);
ЭлементНастройки.ТипУпорядочивания = ТипУпорядочивания;
Строка.ТипУпорядочивания = ЭлементНастройки.ТипУпорядочивания;
Элемент.ТипУпорядочивания = ЭлементНастройки.ТипУпорядочивания;
КонецЦикла;
УстановитьМодифицированность();
@@ -4032,16 +4032,16 @@
Продолжить;
КонецЕсли;
ЭлементНастройкиПриемник = СортировкаЭлементаСтруктуры.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(ЭлементНастройкиПриемник, ЭлементНастройкиИсточник);
ЭлементНастройкиПриемник.Использование = Истина;
ОписаниеНастройки = СортировкаЭлементаСтруктуры.ДоступныеПоляПорядка.НайтиПоле(ЭлементНастройкиИсточник.Поле);
Если ОписаниеНастройки = Неопределено Тогда
Продолжить;
КонецЕсли;
ЭлементНастройкиПриемник = СортировкаЭлементаСтруктуры.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(ЭлементНастройкиПриемник, ЭлементНастройкиИсточник);
ЭлементНастройкиПриемник.Использование = Истина;
СтрокаПриемник = Раздел.ПолучитьЭлементы().Добавить();
ЗаполнитьЗначенияСвойств(СтрокаПриемник, ЭлементНастройкиПриемник);
ЗаполнитьЗначенияСвойств(СтрокаПриемник, ОписаниеНастройки);
@@ -4494,16 +4494,16 @@
Возврат;
КонецЕсли;
Строки = Оформление.ПолучитьЭлементы();
Элементы = Оформление.ПолучитьЭлементы();
СвойствоЭлементаСтруктуры = Отчет.КомпоновщикНастроек.Настройки.ПараметрыВывода;
Для Каждого Строка Из Строки Цикл
Если ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда
Для Каждого Элемент Из Элементы Цикл
Если ТипЗнч(Элемент.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
Строка.Использование = Использование;
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
Элемент.Использование = Использование;
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Элемент);
ЭлементНастройки.Использование = Использование;
КонецЦикла;
КонецПроцедуры
@@ -5678,31 +5678,31 @@
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьИспользование(ИмяКоллекции, Использование = Истина, Строки = Неопределено)
Если Строки = Неопределено Тогда
Процедура ИзменитьИспользование(ИмяКоллекции, Использование = Истина, Элементы = Неопределено)
Если Элементы = Неопределено Тогда
КорневаяСтрока = КорневаяСтрокаПоУмолчанию(ИмяКоллекции);
Если КорневаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Строки = КорневаяСтрока.ПолучитьЭлементы();
Элементы = КорневаяСтрока.ПолучитьЭлементы();
КонецЕсли;
Для Каждого Строка Из Строки Цикл
Строка.Использование = Использование;
Для Каждого Элемент Из Элементы Цикл
Элемент.Использование = Использование;
КлючСвойства = КлючСвойстваЭлементаСтруктурыНастроек(ИмяКоллекции, Строка);
КлючСвойства = КлючСвойстваЭлементаСтруктурыНастроек(ИмяКоллекции, Элемент);
СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(
Отчет.КомпоновщикНастроек, КлючСвойства, ИдентификаторЭлементаСтруктурыНастроек, РасширенныйРежим);
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Элемент);
Если ТипЗнч(ЭлементНастройки) <> Тип("НастройкиКомпоновкиДанных")
И ТипЗнч(ЭлементНастройки) <> Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
И ТипЗнч(ЭлементНастройки) <> Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
ЭлементНастройки.Использование = Использование;
КонецЕсли;
ИзменитьИспользование(ИмяКоллекции, Использование, Строка.ПолучитьЭлементы());
ИзменитьИспользование(ИмяКоллекции, Использование, Элемент.ПолучитьЭлементы());
КонецЦикла;
УстановитьМодифицированность();
@@ -5777,23 +5777,23 @@
Возврат;
КонецЕсли;
Условие = Новый Структура("Поле", Поле);
Найденные = ОтчетыКлиентСервер.НайтиСтрокиТаблицы(ЭтотОбъект[ИмяКоллекции], Условие);
СтрокиТаблицы = ОтчетыКлиентСервер.НайтиСтрокиТаблицы(ЭтотОбъект[ИмяКоллекции], Условие);
СвойствоЭлементаСтруктуры = Неопределено;
Для Каждого Строка Из Найденные Цикл
Если Строка.Использование = Использование Тогда
Для Каждого СтрокаТаблицы Из СтрокиТаблицы Цикл
Если СтрокаТаблицы.Использование = Использование Тогда
Продолжить;
КонецЕсли;
Если СвойствоЭлементаСтруктуры = Неопределено Тогда
КлючСвойства = КлючСвойстваЭлементаСтруктурыНастроек(ИмяКоллекции, Строка);
КлючСвойства = КлючСвойстваЭлементаСтруктурыНастроек(ИмяКоллекции, СтрокаТаблицы);
СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(
Отчет.КомпоновщикНастроек, КлючСвойства, ИдентификаторЭлементаСтруктурыНастроек, РасширенныйРежим);
КонецЕсли;
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, СтрокаТаблицы);
Если ЭлементНастройки <> Неопределено Тогда
Строка.Использование = Использование;
СтрокаТаблицы.Использование = Использование;
ЭлементНастройки.Использование = Использование;
КонецЕсли;
КонецЦикла;
@@ -6348,7 +6348,7 @@
// - ВыбранныеПоляКомпоновкиДанных
// - ТаблицаКомпоновкиДанных
// - Неопределено
// Строка - см. ЭлементКоллекцииФормыНастроек
// ЭлементНастройки - см. ЭлементКоллекцииФормыНастроек
//
// Возвращаемое значение:
// - НастройкиКомпоновкиДанных
@@ -6375,20 +6375,20 @@
// - Неопределено
//
&НаКлиентеНаСервереБезКонтекста
Функция ЭлементНастройки(Знач УзелНастроек, Знач Строка)
ЭлементНастройки = Неопределено;
Функция ЭлементНастройки(Знач УзелНастроек, Знач ЭлементНастройки)
Результат = Неопределено;
Если Строка <> Неопределено
И ТипЗнч(Строка.Идентификатор) = Тип("ИдентификаторКомпоновкиДанных") Тогда
Если ЭлементНастройки <> Неопределено
И ТипЗнч(ЭлементНастройки.Идентификатор) = Тип("ИдентификаторКомпоновкиДанных") Тогда
ЭлементНастройки = УзелНастроек.ПолучитьОбъектПоИдентификатору(Строка.Идентификатор);
Результат = УзелНастроек.ПолучитьОбъектПоИдентификатору(ЭлементНастройки.Идентификатор);
КонецЕсли;
Если ТипЗнч(ЭлементНастройки) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
ЭлементНастройки = ЭлементНастройки.Настройки;
Если ТипЗнч(Результат) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
Результат = ЭлементНастройки.Настройки;
КонецЕсли;
Возврат ЭлементНастройки;
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
@@ -863,8 +863,8 @@
ОписаниеНастроекОтчета = ОписаниеНастроекОтчета(НастройкиОтчета);
ВидимыеВарианты = Новый Массив;
Для Каждого Строка Из ДобавленныеВарианты Цикл
ВидимыеВарианты.Добавить(Строка.Ссылка);
Для Каждого ВариантОтчета Из ДобавленныеВарианты Цикл
ВидимыеВарианты.Добавить(ВариантОтчета.Ссылка);
КонецЦикла;
ПараметрыФормы = Новый Структура;
@@ -2569,7 +2569,6 @@
КонецЦикла;
ПоляПоиска = ПоляПоискаПоТипам[Тип("Строка")];
Если ПоляПоиска = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -2584,8 +2583,8 @@
ПредставлениеРезультата = ПредставлениеРезультатПоискаКлиент(
ПолеПоиска.Значение, СвойстваПоиска.ВидСравнения, СвойстваПоиска.ПравоеЗначение);
СуществуетЗначение = Ложь;
Для Каждого Строка Из ПодходящиеЗначения Цикл
Если СтрСравнить(Строка.Представление, ПредставлениеРезультата) = 0 Тогда
Для Каждого ПодходящееЗначение Из ПодходящиеЗначения Цикл
Если СтрСравнить(ПодходящееЗначение.Представление, ПредставлениеРезультата) = 0 Тогда
СуществуетЗначение = Истина;
Прервать;
КонецЕсли;
@@ -349,17 +349,17 @@
Если Количество > 1 Тогда
СписокЗначений = Новый СписокЗначений();
Для Каждого Строка Из СертификатыДляПроверкиПодписи Цикл
Для Каждого Сертификат Из СертификатыДляПроверкиПодписи Цикл
Если Строка.ЭтоСертификатПодписи Тогда
Если Сертификат.ЭтоСертификатПодписи Тогда
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Сертификат подписанта: %1'"), Строка.КомуВыдан);
НСтр("ru='Сертификат подписанта: %1'"), Сертификат.КомуВыдан);
Иначе
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Сертификат для проверки подписи: %1'"), Строка.КомуВыдан);
НСтр("ru='Сертификат для проверки подписи: %1'"), Сертификат.КомуВыдан);
КонецЕсли;
СписокЗначений.Добавить(Строка.ДанныеСертификата, Представление);
СписокЗначений.Добавить(Сертификат.ДанныеСертификата, Представление);
КонецЦикла;
@@ -1052,14 +1052,14 @@
ТаблицаДляСортировки.Сортировать("ПорядковыйНомер");
Для Каждого Строка Из ТаблицаДляСортировки Цикл
Для Каждого СтрокаТаблицы Из ТаблицаДляСортировки Цикл
РезультатПроверки = РезультатЗагруженныеДанные[Строка.ПорядковыйНомер];
РезультатПроверки = РезультатЗагруженныеДанные[СтрокаТаблицы.ПорядковыйНомер];
Если РезультатПроверки = Неопределено Тогда
РезультатПроверки = РезультатВебСервис[Строка.ПорядковыйНомер];
РезультатПроверки = РезультатВебСервис[СтрокаТаблицы.ПорядковыйНомер];
Если РезультатПроверки = Неопределено Тогда
РезультатПроверки = Новый Структура;
РезультатПроверки.Вставить("id", Строка.ПорядковыйНомер);
РезультатПроверки.Вставить("id", СтрокаТаблицы.ПорядковыйНомер);
РезультатПроверки.Вставить("АдресПроверен", Ложь);
РезультатПроверки.Вставить("Варианты", Новый Массив);
РезультатПроверки.Вставить("Ошибки", Новый Массив);
@@ -4507,14 +4507,14 @@
КонецЕсли;
Данные = Результат.Данные;
Для Каждого Строка Из РезультатЗапроса.Выгрузить() Цикл
Для Каждого СтрокаТаблицы Из РезультатЗапроса.Выгрузить() Цикл
Если Не ЭтоУровеньРегиона(Уровень) И ЗначениеЗаполнено(Строка.ПочтовыйИндекс) Тогда
Строка.Представление = Строка.Представление + " (" + Формат(Строка.ПочтовыйИндекс, "ЧГ=0") + ")";
Если Не ЭтоУровеньРегиона(Уровень) И ЗначениеЗаполнено(СтрокаТаблицы.ПочтовыйИндекс) Тогда
СтрокаТаблицы.Представление = СтрокаТаблицы.Представление + " (" + Формат(СтрокаТаблицы.ПочтовыйИндекс, "ЧГ=0") + ")";
КонецЕсли;
СтрокаДанных = Данные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДанных, Строка);
ЗаполнитьЗначенияСвойств(СтрокаДанных, СтрокаТаблицы);
КонецЦикла;
@@ -6723,8 +6723,8 @@
Если ВариантыАдреса.Количество() >= 20 Тогда
Возврат;
КонецЕсли;
ПредставлениеТерриториальное = Данные.valueReversed;
ПредставлениеМуниципальное = Данные.munValueReversed;
ПредставлениеТерриториальное = ?(ДополнительныеПараметры.ПрямойПорядок, Данные.value, Данные.valueReversed);
ПредставлениеМуниципальное = ?(ДополнительныеПараметры.ПрямойПорядок, Данные.munValue, Данные.munValueReversed);
Если ДобавлятьМуниципальныеАдреса И ЗначениеЗаполнено(Данные.munId) И ЗначениеЗаполнено(
ПредставлениеМуниципальное) Тогда
@@ -8821,13 +8821,13 @@
Если НовоеЗначение <> Неопределено Тогда
// Запись
Если НовоеЗначение.Свойство("Здания") Тогда
Для Каждого Строка Из НовоеЗначение.Здания Цикл
ВставитьЗданиеПомещение(XDTOАдрес, Строка.Тип, Строка.Значение);
Для Каждого СтрокаТаблицы Из НовоеЗначение.Здания Цикл
ВставитьЗданиеПомещение(XDTOАдрес, СтрокаТаблицы.Тип, СтрокаТаблицы.Значение);
КонецЦикла;
КонецЕсли;
Если НовоеЗначение.Свойство("Помещения") Тогда
Для Каждого Строка Из НовоеЗначение.Помещения Цикл
ВставитьЗданиеПомещение(XDTOАдрес, Строка.Тип, Строка.Значение);
Для Каждого СтрокаТаблицы Из НовоеЗначение.Помещения Цикл
ВставитьЗданиеПомещение(XDTOАдрес, СтрокаТаблицы.Тип, СтрокаТаблицы.Значение);
КонецЦикла;
КонецЕсли;
Возврат НовоеЗначение
@@ -577,10 +577,8 @@
//
Процедура СформироватьДобавляемыеРеквизитыДляРаздела(ДобавляемыеРеквизиты, Форма)
Для Каждого Строка Из Форма.ТаблицаВопросовРаздела Цикл
ДобавитьРеквизитыДляВопроса(Строка, ДобавляемыеРеквизиты, Форма);
Для Каждого СтрокаТаблицы Из Форма.ТаблицаВопросовРаздела Цикл
ДобавитьРеквизитыДляВопроса(СтрокаТаблицы, ДобавляемыеРеквизиты, Форма);
КонецЦикла;
КонецПроцедуры
@@ -509,10 +509,10 @@
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК Количество
|ИЗ
| Задача.ЗадачаИсполнителя КАК Задачи
| Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителя
|ГДЕ
| Задачи.БизнесПроцесс В (&БизнесПроцессы)
| И Задачи.Выполнена = ЛОЖЬ");
| ЗадачиИсполнителя.БизнесПроцесс В (&БизнесПроцессы)
| И ЗадачиИсполнителя.Выполнена = ЛОЖЬ");
Запрос.УстановитьПараметр("БизнесПроцессы", МассивБизнесПроцессов);
Возврат Запрос.Выполнить().Выгрузить()[0].Количество;
@@ -311,11 +311,11 @@
Блокировка.Заблокировать();
Запрос = Новый Запрос("ВЫБРАТЬ
| Задачи.Ссылка КАК Ссылка
| ЗадачиИсполнителя.Ссылка КАК Ссылка
|ИЗ
| Задача.ЗадачаИсполнителя КАК Задачи
| Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителя
|ГДЕ
| Задачи.БизнесПроцесс = &БизнесПроцесс");
| ЗадачиИсполнителя.БизнесПроцесс = &БизнесПроцесс");
Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцессСсылка);
Выборка = Запрос.Выполнить().Выбрать();
@@ -296,17 +296,14 @@
Возврат ПараметрыКлиента;
КонецФункции
// Имя события оповещения для изменения варианта отчета.
Функция ИмяСобытияИзменениеВарианта() Экспорт
Возврат "Запись_ВариантыОтчетов";
Возврат "Изменение_ВариантыОтчетов";
КонецФункции
// Имя события оповещения для изменения общих настроек.
Функция ИмяСобытияИзменениеОбщихНастроек() Экспорт
Возврат ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы() + ".ИзменениеОбщихНастроек";
КонецФункции
// Возвращает тип ссылки дополнительного отчета.
Функция ТипСсылкиДополнительногоОтчета()
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
Возврат Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки");
@@ -602,15 +599,15 @@
КонецЕсли;
КоличествоПомеченных = 0;
Для Каждого Строка Из Форма.ПользователиВарианта Цикл
Если Строка.Значение = ВариантАвтор Тогда
Для Каждого СтрокаТаблицы Из Форма.ПользователиВарианта Цикл
Если СтрокаТаблицы.Значение = ВариантАвтор Тогда
ПризнакАвтора = "[ЭтоАвторВариантаОтчета]";
Иначе
ПризнакАвтора = "";
КоличествоПомеченных = КоличествоПомеченных + Булево(Строка.Пометка);
КоличествоПомеченных = КоличествоПомеченных + Булево(СтрокаТаблицы.Пометка);
КонецЕсли;
Если Строка.Представление <> ПризнакАвтора Тогда
Строка.Представление = ПризнакАвтора;
Если СтрокаТаблицы.Представление <> ПризнакАвтора Тогда
СтрокаТаблицы.Представление = ПризнакАвтора;
КонецЕсли;
КонецЦикла;
@@ -1373,7 +1373,6 @@
Для Каждого Макет Из МакетыПоТипу Цикл
ИндексГруппировки = ИндексСтруктурыОтчета.Найти(Макет.ИмяГруппировки, "ИмяГруппировки");
Если ИндексГруппировки = Неопределено Тогда
Продолжить;
КонецЕсли;
@@ -1384,16 +1383,12 @@
Продолжить;
КонецЕсли;
Для Каждого Строка Из ОписаниеМакета.Макет Цикл
Для Каждого Ячейка Из Строка.Ячейки Цикл
Для Каждого СтрокаТаблицы Из ОписаниеМакета.Макет Цикл
Для Каждого Ячейка Из СтрокаТаблицы.Ячейки Цикл
Если Ячейка.Элементы.Количество() > 0 Тогда
ИндексГруппировки.Текст = Ячейка.Элементы[0].Значение;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
@@ -3275,6 +3275,7 @@
| Файлы.Наименование КАК ПолноеНаименование,
| Файлы.Расширение КАК Расширение,
| Файлы.Ссылка КАК Ссылка,
| &Зашифрован,
| Файлы.ИДФайлаЭлектронногоПисьма КАК ИДФайлаЭлектронногоПисьма
|ИЗ
| &ИмяТаблицыСправочника КАК Файлы
@@ -3295,6 +3296,12 @@
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяТаблицыСправочника", "Справочник." + ИмяОбъектаМетаданных);
Если Метаданные.Справочники[ИмяОбъектаМетаданных].Реквизиты.Найти("Зашифрован") <> Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Зашифрован", "Файлы.Зашифрован КАК Зашифрован");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Зашифрован", "ЛОЖЬ КАК Зашифрован");
КонецЕсли;
Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайлов);
РезультатЗапроса = Запрос.ВыполнитьПакет();
@@ -3307,7 +3314,8 @@
Пока ВыборкаВложения.Следующий() Цикл
ДобавитьВложениеПисьмоЕслиНеобходимо(ТаблицаПисьмаВложения, МассивВложений, НомерОтображаемогоВложения);
ИмяФайла = ВыборкаВложения.ПолноеНаименование + ?(ВыборкаВложения.Расширение = "", "", "." + ВыборкаВложения.Расширение);
ИмяФайла = ВыборкаВложения.ПолноеНаименование + ?(ВыборкаВложения.Расширение = "", "", "." + ВыборкаВложения.Расширение)
+ ?(ВыборкаВложения.Зашифрован, "." + РасширениеДляЗашифрованныхФайлов(), "");
Если ПустаяСтрока(ВыборкаВложения.ИДФайлаЭлектронногоПисьма) Тогда
ДобавитьВложение(МассивВложений, ИмяФайла, РаботаСФайлами.ДвоичныеДанныеФайла(ВыборкаВложения.Ссылка));
@@ -8046,6 +8054,17 @@
КонецФункции
Функция РасширениеДляЗашифрованныхФайлов()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись");
Возврат МодульЭлектроннаяПодпись.ПерсональныеНастройки().РасширениеДляЗашифрованныхФайлов;
Иначе
Возврат "p7m";
КонецЕсли;
КонецФункции
Процедура ЗаменитьОтветственногоВДокументе(Взаимодействие, Ответственный) Экспорт
НачатьТранзакцию();
@@ -89,21 +89,7 @@
Результат.Вставить("Версия", Информация.Реквизиты.Версия);
БудетПодключенаКомпонентаИзМакета = Ложь;
Если ИскатьКомпонентуПоследнейВерсии Тогда
ЧастиВерсии = СтрРазделить(Результат.Версия, ".");
Если ЧастиВерсии.Количество() = 4 Тогда
// Версия внешней компоненты больше, чем версия макета.
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Результат.Версия,
Результат.КомпонентаПоследнейВерсии.Версия) > 0 Тогда
Результат.КомпонентаПоследнейВерсии = Новый Структура("Идентификатор, Версия, Местоположение",
Контекст.Идентификатор, Результат.Версия, Информация.Местоположение);
Иначе
БудетПодключенаКомпонентаИзМакета = Истина;
КонецЕсли;
Иначе
// Если номер версии компоненты не соответствует шаблону, используется компонента из справочника.
Результат.КомпонентаПоследнейВерсии = Новый Структура("Идентификатор, Версия, Местоположение",
Контекст.Идентификатор, Результат.Версия, Информация.Местоположение);
КонецЕсли;
ЗаменитьНаАктуальнуюКомпонентуИзСправочника(Результат, Контекст.Идентификатор, Информация.Местоположение, БудетПодключенаКомпонентаИзМакета);
КонецЕсли;
Если БудетПодключенаКомпонентаИзМакета
@@ -183,23 +169,14 @@
Результат.Вставить("Версия", Информация.Реквизиты.Версия);
БудетПодключенаКомпонентаИзМакета = Ложь;
Если ИскатьКомпонентуПоследнейВерсии Тогда
ЧастиВерсии = СтрРазделить(Результат.Версия, ".");
Если ЧастиВерсии.Количество() = 4 Тогда
// Версия внешней компоненты больше, чем версия макета.
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Результат.Версия,
Результат.КомпонентаПоследнейВерсии.Версия) > 0 Тогда
Результат.КомпонентаПоследнейВерсии = Новый Структура("Идентификатор, Версия, Местоположение",
Контекст.Идентификатор, Результат.Версия, Информация.Местоположение);
КонецЕсли;
Иначе
// Если номер версии компоненты не соответствует шаблону, используется компонента из справочника.
Результат.КомпонентаПоследнейВерсии = Новый Структура("Идентификатор, Версия, Местоположение",
Контекст.Идентификатор, Результат.Версия, Информация.Местоположение);
КонецЕсли;
ЗаменитьНаАктуальнуюКомпонентуИзСправочника(Результат, Контекст.Идентификатор, Информация.Местоположение, БудетПодключенаКомпонентаИзМакета);
КонецЕсли;
Если Не Информация.ЗаполненыЦелевыеПлатформы Или ТекущийКлиентПоддерживаетсяКомпонентой(Информация.Реквизиты.ЦелевыеПлатформы) Тогда
Если БудетПодключенаКомпонентаИзМакета
Или Не Информация.ЗаполненыЦелевыеПлатформы
Или ТекущийКлиентПоддерживаетсяКомпонентой(Информация.Реквизиты.ЦелевыеПлатформы) Тогда
Результат.Доступна = Истина;
Возврат Результат;
@@ -377,6 +354,23 @@
КонецФункции
Процедура ЗаменитьНаАктуальнуюКомпонентуИзСправочника(Результат, Идентификатор, Местоположение, БудетПодключенаКомпонентаИзМакета)
Если СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрЗаменить(Результат.Версия, ".", "")) Тогда
ЧастиВерсии = СтрРазделить(Результат.Версия, ".");
Если ЧастиВерсии.Количество() = 4 И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Результат.Версия,
Результат.КомпонентаПоследнейВерсии.Версия) <= 0 Тогда
БудетПодключенаКомпонентаИзМакета = Истина;
Возврат;
КонецЕсли;
КонецЕсли;
// Используется компонента из справочника, если ее версия больше, чем версия макета, или не соответствует шаблону.
Результат.КомпонентаПоследнейВерсии = Новый Структура("Идентификатор, Версия, Местоположение", Идентификатор,
Результат.Версия, Местоположение);
КонецПроцедуры
// Текущий клиент поддерживается компонентой.
//
// Параметры:
@@ -607,35 +607,35 @@
+ Символы.ПС;
// Приведение данных в соответствие варианту встраивания.
Для Каждого Строка Из ДанныеДляПроверки Цикл
Для Каждого СтрокаТаблицы Из ДанныеДляПроверки Цикл
Если Строка.Раздел = Неопределено Тогда
Строка.Раздел = ПустойРаздел;
Если СтрокаТаблицы.Раздел = Неопределено Тогда
СтрокаТаблицы.Раздел = ПустойРаздел;
КонецЕсли;
СвойстваРаздела = СвойстваРазделов.Разделы.Получить(Строка.Раздел); // см. ПланыВидовХарактеристик.РазделыДатЗапретаИзменения.СвойстваРаздела
СвойстваРаздела = СвойстваРазделов.Разделы.Получить(СтрокаТаблицы.Раздел); // см. ПланыВидовХарактеристик.РазделыДатЗапретаИзменения.СвойстваРаздела
Если СвойстваРаздела = Неопределено Тогда
ТекстОшибки = ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В параметре %1 указан несуществующий раздел ""%2"".'"),
"ДанныеДляПроверки",
Строка.Раздел);
СтрокаТаблицы.Раздел);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Если СвойстваРазделов.БезРазделовИОбъектов Тогда
Строка.Раздел = ПустойРаздел;
Строка.Объект = ПустойРаздел;
СтрокаТаблицы.Раздел = ПустойРаздел;
СтрокаТаблицы.Объект = ПустойРаздел;
Иначе
Если ЗначениеЗаполнено(СвойстваРазделов.ЕдинственныйРаздел) Тогда
Строка.Раздел = СвойстваРазделов.ЕдинственныйРаздел;
СтрокаТаблицы.Раздел = СвойстваРазделов.ЕдинственныйРаздел;
Иначе
Строка.Раздел = СвойстваРаздела.Ссылка;
СтрокаТаблицы.Раздел = СвойстваРаздела.Ссылка;
КонецЕсли;
Если СвойстваРазделов.ВсеРазделыБезОбъектов
Или Не ЗначениеЗаполнено(Строка.Объект) Тогда
Или Не ЗначениеЗаполнено(СтрокаТаблицы.Объект) Тогда
Строка.Объект = Строка.Раздел;
СтрокаТаблицы.Объект = СтрокаТаблицы.Раздел;
КонецЕсли;
КонецЕсли;
@@ -650,10 +650,9 @@
Для Каждого РазделИОбъект Из РазделыИОбъекты Цикл
ЗаполнитьЗначенияСвойств(Отбор, РазделИОбъект);
Строки = ДанныеДляПроверки.НайтиСтроки(Отбор);
МинимальнаяДата = Неопределено;
Для Каждого Строка Из Строки Цикл
ТекущаяДата = НачалоДня(Строка.Дата);
Для Каждого СтрокаТаблицы Из ДанныеДляПроверки.НайтиСтроки(Отбор) Цикл
ТекущаяДата = НачалоДня(СтрокаТаблицы.Дата);
Если МинимальнаяДата = Неопределено Тогда
МинимальнаяДата = ТекущаяДата;
КонецЕсли;
@@ -850,9 +849,9 @@
Таблица = Запрос.Выполнить().Выгрузить();
НачалоДня = НачалоДня(ТекущаяДатаСеанса());
Для Каждого Строка Из Таблица Цикл
Строка.ДатаЗапрета = ДатаЗапретаПоОписанию(Строка.ОписаниеДатыЗапрета,
Строка.ДатаЗапрета , НачалоДня);
Для Каждого СтрокаТаблицы Из Таблица Цикл
СтрокаТаблицы.ДатаЗапрета = ДатаЗапретаПоОписанию(СтрокаТаблицы.ОписаниеДатыЗапрета,
СтрокаТаблицы.ДатаЗапрета , НачалоДня);
КонецЦикла;
Возврат Таблица;
@@ -1330,10 +1329,10 @@
И ОбщегоНазначения.ЭтоРегистрСведений(ОбъектМетаданных) Тогда
ЗначенияПолей.ЗаполнитьЗначения(Данные.Отбор.Регистратор.Значение, "Регистратор");
КонецЕсли;
Для Каждого Строка Из ЗначенияПолей Цикл
Для Каждого СтрокаТаблицы Из ЗначенияПолей Цикл
Для Каждого ИсточникДанных Из ИсточникиДанных.Состав Цикл
// @skip-check query-in-loop - Цикл для исключения разыменования составного типа (стандарт 654)
ДобавитьСтрокуДанных(Строка, Строка, ИсточникДанных, ДанныеДляПроверки, БезОбъекта);
ДобавитьСтрокуДанных(СтрокаТаблицы, СтрокаТаблицы, ИсточникДанных, ДанныеДляПроверки, БезОбъекта);
КонецЦикла;
КонецЦикла;
Иначе
@@ -1384,9 +1383,9 @@
КонецЕсли;
Значения = Данные[ИсточникДанных.ПолеДаты.ТабличнаяЧасть].Выгрузить(, Поля); // ТаблицаЗначений
Значения.Свернуть(Поля);
Для Каждого Строка Из Значения Цикл
Для Каждого СтрокаТаблицы Из Значения Цикл
// @skip-check query-in-loop - Цикл для исключения разыменования составного типа (стандарт 654)
ДобавитьСтрокуДанных(Строка, Строка, ИсточникДанных, ДанныеДляПроверки, БезОбъекта);
ДобавитьСтрокуДанных(СтрокаТаблицы, СтрокаТаблицы, ИсточникДанных, ДанныеДляПроверки, БезОбъекта);
КонецЦикла;
Иначе
Поле = ИсточникДанных.ПолеДаты.Имя;
@@ -1582,9 +1581,9 @@
Выгрузка = РезультатыЗапроса[1].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
ГруппыПользователей = Новый Соответствие;
Для Каждого Строка Из Выгрузка.Строки Цикл
ГруппыПользователей.Вставить(Строка.Пользователь,
Новый ФиксированныйМассив(Строка.Строки.ВыгрузитьКолонку("ГруппаПользователей")));
Для Каждого СтрокаТаблицы Из Выгрузка.Строки Цикл
ГруппыПользователей.Вставить(СтрокаТаблицы.Пользователь,
Новый ФиксированныйМассив(СтрокаТаблицы.Строки.ВыгрузитьКолонку("ГруппаПользователей")));
КонецЦикла;
ДействующиеДаты.Вставить("ГруппыПользователей", Новый ФиксированноеСоответствие(ГруппыПользователей));
@@ -2283,43 +2282,43 @@
+ Символы.ПС
+ Символы.ПС;
Для Каждого Строка Из Таблицы Цикл
Для Каждого СтрокаТаблицы Из Таблицы Цикл
ИсточникиТаблицы = Новый Структура;
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(Строка.Таблица);
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(СтрокаТаблицы.Таблица);
Если ОбъектМетаданных = Неопределено Тогда
ТекстОшибки = ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для проверки запрета изменения в источнике данных неверно указана таблица
|""%1"".'"),
Строка.Таблица);
СтрокаТаблицы.Таблица);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ЭтоРегистр = СтандартныеПодсистемыСервер.ЭтоТаблицаРегистра(Строка.Таблица);
ЭтоРегистр = СтандартныеПодсистемыСервер.ЭтоТаблицаРегистра(СтрокаТаблицы.Таблица);
ИсточникиТаблицы.Вставить("ЭтоРегистр", ЭтоРегистр);
ИсточникиДанныхТаблицы = ИсточникиДанных.НайтиСтроки(Новый Структура("Таблица", Строка.Таблица));
ИсточникиДанныхТаблицы = ИсточникиДанных.НайтиСтроки(Новый Структура("Таблица", СтрокаТаблицы.Таблица));
СоставИсточников = Новый Массив;
ПоляРегистра = Новый Соответствие;
ТекстЗапроса = "";
ТекстЗапросаТолькоДаты = "";
Таблица = ОбъектМетаданных.ПолноеИмя();
Для Каждого Строка Из ИсточникиДанныхТаблицы Цикл
СвойстваРаздела = СвойстваРазделов.Разделы.Получить(Строка.Раздел);
Для Каждого ИсточникДанныхТаблицы Из ИсточникиДанныхТаблицы Цикл
СвойстваРаздела = СвойстваРазделов.Разделы.Получить(ИсточникДанныхТаблицы.Раздел);
Если СвойстваРаздела = Неопределено Тогда
ТекстОшибки = ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для проверки запрета изменения в источнике данных указан несуществующий
|раздел ""%1"" для таблицы ""%2""
|(см. %3).'"),
Строка.Раздел,
Строка.Таблица,
ИсточникДанныхТаблицы.Раздел,
ИсточникДанныхТаблицы.Таблица,
"ДатыЗапретаИзмененияПереопределяемый.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Источник = ОписаниеИсточникаДанных();
Источник.Раздел = Строка.Раздел;
Источник.ПолеДаты = ПолеТаблицы(Строка, "ПолеДаты", ОбъектМетаданных, ЭтоРегистр);
Источник.ПолеОбъекта = ПолеТаблицы(Строка, "ПолеОбъекта", ОбъектМетаданных, ЭтоРегистр);
Источник.Раздел = ИсточникДанныхТаблицы.Раздел;
Источник.ПолеДаты = ПолеТаблицы(ИсточникДанныхТаблицы, "ПолеДаты", ОбъектМетаданных, ЭтоРегистр);
Источник.ПолеОбъекта = ПолеТаблицы(ИсточникДанныхТаблицы, "ПолеОбъекта", ОбъектМетаданных, ЭтоРегистр);
Если ЭтоРегистр Тогда
ПоляРегистра.Вставить(Источник.ПолеДаты.Имя, Истина);
@@ -2702,10 +2701,9 @@
ДополнительныеНастройки = Настройки.НайтиСтроки(Отбор);
Иначе
Отбор = Новый Структура("Пользователь", Адресат);
Строки = ГруппыПользователей.НайтиСтроки(Отбор);
ДополнительныеНастройки = Настройки.Скопировать(Новый Массив);
Для Каждого Строка Из Строки Цикл
Отбор = Новый Структура("Пользователь", Строка.ГруппаПользователей);
Для Каждого СтрокаТаблицы Из ГруппыПользователей.НайтиСтроки(Отбор) Цикл
Отбор = Новый Структура("Пользователь", СтрокаТаблицы.ГруппаПользователей);
НастройкиГруппы = Настройки.НайтиСтроки(Отбор);
Для Каждого НастройкаГруппы Из НастройкиГруппы Цикл
Отбор = Новый Структура("Раздел, Объект", НастройкаГруппы.Раздел, НастройкаГруппы.Объект);
@@ -2723,14 +2721,14 @@
КонецЦикла;
КонецЕсли;
Для Каждого Строка Из ДополнительныеНастройки Цикл
Для Каждого ДополнительнаяНастройка Из ДополнительныеНастройки Цикл
Отбор = Новый Структура("Пользователь, Раздел, Объект",
АдресатНастроек.Пользователь, Строка.Раздел, Строка.Объект);
АдресатНастроек.Пользователь, ДополнительнаяНастройка.Раздел, ДополнительнаяНастройка.Объект);
Если Настройки.НайтиСтроки(Отбор).Количество() > 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДополнительнаяНастройка);
ЗаполнитьЗначенияСвойств(НоваяСтрока, АдресатНастроек);
ЗаполнитьЗначенияСвойств(Настройки.Добавить(), НоваяСтрока);
КонецЦикла;
@@ -402,7 +402,8 @@
// Если задано 0, то ждать завершения задания не требуется.
// По умолчанию - 0.8 секунды, а для низкой скорости соединения - 4.
// * НаименованиеФоновогоЗадания - Строка - описание фонового задания. По умолчанию - имя процедуры.
// * КлючФоновогоЗадания - Строка - уникальный ключ для активных фоновых заданий, имеющих такое же имя процедуры.
// * КлючФоновогоЗадания - Строка - уникальный ключ активных фоновых заданий с одинаковым именем процедуры,
// чтобы в приложении нельзя было запустить более одного задания одновременно.
// По умолчанию не задан.
// * АдресРезультата - Строка - адрес временного хранилища, в которое должен быть помещен результат
// работы процедуры. Если не задан, адрес формируется автоматически.
@@ -426,7 +427,7 @@
// внешнего отчета или обработки соответственно.
// Внешний отчет или обработка подключаются с защитой от опасных действий.
// * ПрерватьВыполнениеЕслиОшибка - Булево - если Истина, то при возникновении ошибки в одном из дочерних фоновых
// заданий, выполнение многопоточного фонового задания будет перервано.
// заданий, выполнение многопоточного фонового задания будет прервано.
// Выполнение уже запущенных дочерних фоновых задания будет отменно.
// Параметр только для функции ВыполнитьФункциюВНесколькоПотоков.
// * УточнениеОшибки - Строка - если не пустая строка, тогда для пользователя текст ошибки
@@ -480,7 +481,7 @@
// внешнего отчета или обработки соответственно.
// Внешний отчет или обработка подключаются с защитой от опасных действий.
// * ПрерватьВыполнениеЕслиОшибка - Булево - если Истина, то при возникновении ошибки в одном из дочерних фоновых
// заданий, выполнение многопоточного фонового задания будет перервано.
// заданий, выполнение многопоточного фонового задания будет прервано.
// Выполнение уже запущенных дочерних фоновых задания будет отменно.
// Параметр только для функции ВыполнитьПроцедуруВНесколькоПотоков.
// * УточнениеОшибки - Строка - если не пустая строка, тогда для пользователя текст ошибки
@@ -598,8 +598,8 @@
НоваяКолонка.Заголовок = НоваяКолонка.Имя;
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из Данные Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Строка);
Для Каждого СтрокаТаблицы Из Данные Цикл
ЗаполнитьЗначенияСвойств(Таблица.Добавить(), СтрокаТаблицы);
КонецЦикла;
Копия = Таблица.Скопировать();
@@ -619,10 +619,10 @@
КонецЦикла;
Строки.Добавить("| " + СтрСоединить(ЧастиСтроки, " | ") + " |");
Для Каждого Строка Из Таблица Цикл
Для Каждого СтрокаТаблицы Из Таблица Цикл
ЧастиСтроки = Новый Массив;
Для Каждого Колонка Из Таблица.Колонки Цикл
ЧастиСтроки.Добавить(Сред(Строка[Колонка.Имя] + СимволыОтступа, 1, Колонка.Ширина));
ЧастиСтроки.Добавить(Сред(СтрокаТаблицы[Колонка.Имя] + СимволыОтступа, 1, Колонка.Ширина));
КонецЦикла;
Строки.Добавить("| " + СтрСоединить(ЧастиСтроки, " | ") + " |");
КонецЦикла;
@@ -12,6 +12,7 @@
//
// Параметры:
// Таблица - ТаблицаЗначений - ОписаниеТабличнойЧасти с колонками.
// - ДанныеФормыКоллекция - таблица размещенная на форме
// - Строка - для получения списка колонок табличной части
// необходимо указать его полное имя строкой, как в метаданных, например "Документы.СчетНаОплату.ТабличныеЧасти.Товары".
// Колонки - Строка - список извлекаемых колонок, разделенный запятыми. Например: "Номер, Товар, Количество".
@@ -63,10 +64,11 @@
КонецЦикла;
НоваяКолонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета(Колонка.Имя, Колонка.ТипЗначения, Колонка.Заголовок, Колонка.Ширина, Подсказка);
НоваяКолонка.Позиция = Позиция;
СписокКолонок.Добавить(НоваяКолонка);
Позиция = Позиция + 1;
КонецЦикла;
ИначеЕсли ТипЗнч(ВнутренняяТаблица) = Тип("Строка") Тогда
Объект = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(ВнутренняяТаблица); // ОбъектМетаданныхСправочник, ОбъектМетаданныхДокумент
@@ -74,14 +76,17 @@
Если ИзвлекатьНеВсеКолонки И СписокКолонокДляИзвлечения.Найти(Колонка.Имя) = Неопределено Тогда
Продолжить;
КонецЕсли;
НоваяКолонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета(Колонка.Имя, Колонка.Тип, Колонка.Представление());
НоваяКолонка.Подсказка = Колонка.Подсказка;
НоваяКолонка.Ширина = 30;
НоваяКолонка.Позиция = Позиция;
СписокКолонок.Добавить(НоваяКолонка);
Позиция = Позиция + 1;
КонецЦикла;
КонецЕсли;
Возврат СписокКолонок;
КонецФункции
@@ -16,19 +16,22 @@
// в виде "ИмяДокумента.ИмяТабличнойЧасти".
// * Заголовок - Строка - заголовок формы загрузки данных из файла.
// * ИмяМакетаСШаблоном - Строка - имя макета с шаблоном для ввода данных.
// * Представление - Строка - заголовок окна в форме загрузке данных.
// * ДополнительныеПараметры - Произвольный - любые дополнительные сведения, которые будут переданы
// * ДополнительныеПараметры - Структура - любые дополнительные сведения, которые будут переданы
// в процедуру сопоставления данных.
// * КолонкиМакета - Массив из см. ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета
// - Неопределено - если описание колонок для макета загрузки данных из файла отсутствует.
//
Функция ПараметрыЗагрузкиДанных() Экспорт
ПараметрыЗагрузки = Новый Структура();
ПараметрыЗагрузки.Вставить("ПолноеИмяТабличнойЧасти");
ПараметрыЗагрузки.Вставить("Заголовок");
ПараметрыЗагрузки.Вставить("ИмяМакетаСШаблоном");
ПараметрыЗагрузки.Вставить("ДополнительныеПараметры");
ПараметрыЗагрузки.Вставить("КолонкиМакета");
ПараметрыЗагрузки = Новый Структура;
ПараметрыЗагрузки.Вставить("ПолноеИмяТабличнойЧасти", "");
ПараметрыЗагрузки.Вставить("Заголовок", "");
ПараметрыЗагрузки.Вставить("ИмяМакетаСШаблоном", "");
ПараметрыЗагрузки.Вставить("ДополнительныеПараметры", Новый Структура);
ПараметрыЗагрузки.Вставить("КолонкиМакета", Неопределено);
Возврат ПараметрыЗагрузки;
КонецФункции
// Открывает форму загрузки данных для заполнения табличной части.
@@ -23,20 +23,25 @@
// * Заголовок - Строка - заголовок колонки выводимый в бланке для загрузки.
// * Тип - ОписаниеТипов - тип колонки.
// * Ширина - Число - ширина колонки.
// * Позиция - Число - позиция колонки в таблице
// * Подсказка - Строка - подсказка выводимая в заголовке колонки.
// * ОбязательнаяДляЗаполнения - Булево - истина, если колонка обязательно должна содержать значения.
// * ОбязательнаДляЗаполнения - Булево - истина, если колонка обязательно должна содержать значения.
// * Группа - Строка - имя группы колонок.
// * Родитель - Строка - используется для связи динамической колонки с реквизитом табличной части объекта.
//
Функция ОписаниеКолонкиМакета(Имя, Тип, Заголовок = Неопределено, Ширина = 0, Подсказка = "") Экспорт
КолонкаМакета = Новый Структура("Имя, Тип, Заголовок, Ширина, Позиция, Подсказка, ОбязательнаДляЗаполнения, Группа, Родитель");
КолонкаМакета.Имя = Имя;
КолонкаМакета.Тип = Тип;
КолонкаМакета.Заголовок = ?(ЗначениеЗаполнено(Заголовок), Заголовок, Имя);
КолонкаМакета.Ширина = ?(Ширина = 0, 30, Ширина);
КолонкаМакета.Подсказка = Подсказка;
КолонкаМакета.Родитель = Имя;
КолонкаМакета = Новый Структура;
КолонкаМакета.Вставить("Имя", Имя);
КолонкаМакета.Вставить("Заголовок", ?(ЗначениеЗаполнено(Заголовок), Строка(Заголовок), Имя));
КолонкаМакета.Вставить("Тип", Тип);
КолонкаМакета.Вставить("Позиция", 0);
КолонкаМакета.Вставить("Ширина", ?(Ширина = 0, 30, Ширина));
КолонкаМакета.Вставить("Подсказка", Подсказка);
КолонкаМакета.Вставить("ОбязательнаДляЗаполнения", Ложь);
КолонкаМакета.Вставить("Группа", "");
КолонкаМакета.Вставить("Родитель", Имя);
Возврат КолонкаМакета;
@@ -49,7 +54,7 @@
// СписокКолонок - Массив из см. ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета
//
// Возвращаемое значение:
// см. ОписаниеКолонкиМакета
// - см. ОписаниеКолонкиМакета
// - Неопределено - если колонка не существует.
//
Функция КолонкаМакета(Имя, СписокКолонок) Экспорт
@@ -1233,6 +1233,16 @@
КонецПроцедуры
Процедура УстановитьПрефиксИнформационнойБазыИОрганизации(Источник, СтандартнаяОбработка, Префикс) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрефиксацияОбъектов") Тогда
МодульПрефиксацияОбъектовСобытия = ОбщегоНазначения.ОбщийМодуль("ПрефиксацияОбъектовСобытия");
МодульПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации(Источник, СтандартнаяОбработка,
Префикс);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СрокиХранения
@@ -824,6 +824,11 @@
МодульЭлектроннаяПодписьСлужебный.ПриОпределенииОбработчиковПоставляемыхДанных(Обработчики);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодписьСервисаDSS") Тогда
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
МодульСервисКриптографииDSSСлужебный.ПриОпределенииОбработчиковПоставляемыхДанных(Обработчики);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -3891,6 +3896,11 @@
МодульЗащитаПерсональныхДанных.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
МодульМашиночитаемыеДоверенностиФНССлужебный = ОбщегоНазначения.ОбщийМодуль("МашиночитаемыеДоверенностиФНССлужебный");
МодульМашиночитаемыеДоверенностиФНССлужебный.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный");
МодульРаботаСФайламиСлужебный.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты);
@@ -1483,7 +1483,7 @@
КонецФункции
// Определяет для переданной даты ближайший к ней рабочий день по данным основного производственного календаря РФ,
// заполненного по умолчанию.
// заполненного по умолчанию. Если НачальнаяДата является рабочей датой, то она же и возвращается.
// Используется в случаях, когда производственный календарь еще не заполнен.
//
// Параметры:
@@ -1507,13 +1507,18 @@
Если ДанныеКалендаряПоУмолчанию.Найти(Год, "Год") = Неопределено Тогда
ДополнитьДанныеКалендаряПоУмолчанию(ДанныеКалендаряПоУмолчанию, Год, ПолучатьПредшествующую);
КонецЕсли;
СтрокаТаблицы = ДанныеКалендаряПоУмолчанию.Найти(НачальнаяДата, "Дата");
Если СтрокаТаблицы = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если СтрокаТаблицы.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий
Или СтрокаТаблицы.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда
Возврат СтрокаТаблицы.Дата;
КонецЕсли;
Индекс = ДанныеКалендаряПоУмолчанию.Индекс(СтрокаТаблицы);
ДобавляемоеЗначение = ?(ПолучатьПредшествующую, -1, 1);
Пока Истина Цикл
Индекс = Индекс + 1;
Если Индекс >= ДанныеКалендаряПоУмолчанию.Количество() Тогда
@@ -192,9 +192,9 @@
Функция СтрокаРезультатовПоиска(ДеревоПолей, СоздаватьСтроку = Истина) Экспорт
СтрокаРезультатовПоиска = Неопределено;
ЭлементыДереваПолей = ДеревоПолей.ПолучитьЭлементы();
Для Каждого Строка Из ЭлементыДереваПолей Цикл
Если Строка.ПутьКДанным = "<СтрокаРезультатовПоиска>" Тогда
СтрокаРезультатовПоиска = Строка;
Для Каждого СтрокаТаблицы Из ЭлементыДереваПолей Цикл
Если СтрокаТаблицы.ПутьКДанным = "<СтрокаРезультатовПоиска>" Тогда
СтрокаРезультатовПоиска = СтрокаТаблицы;
Прервать;
КонецЕсли;
КонецЦикла;
@@ -384,11 +384,11 @@
#Область СлужебныеПроцедурыИФункции
Процедура УстановитьИдентификаторыСтрокДерева(Коллекция)
Для Каждого Строка Из Коллекция.Строки Цикл
Если Не ЗначениеЗаполнено(Строка.Идентификатор) Тогда
Строка.Идентификатор = Новый УникальныйИдентификатор();
Для Каждого СтрокаТаблицы Из Коллекция.Строки Цикл
Если Не ЗначениеЗаполнено(СтрокаТаблицы.Идентификатор) Тогда
СтрокаТаблицы.Идентификатор = Новый УникальныйИдентификатор();
КонецЕсли;
УстановитьИдентификаторыСтрокДерева(Строка);
УстановитьИдентификаторыСтрокДерева(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
@@ -4427,13 +4427,13 @@
Процедура УдалитьРезультатыПредыдущейПроверки(РезультатПоследнейПроверки)
Для Каждого Строка Из РезультатПоследнейПроверки Цикл
Для Каждого СтрокаТаблицы Из РезультатПоследнейПроверки Цикл
Набор = РегистрыСведений.РезультатыПроверкиУчета.СоздатьНаборЗаписей();
Набор.Отбор.ПроблемныйОбъект.Установить(Строка.ПроблемныйОбъект);
Набор.Отбор.ПравилоПроверки.Установить(Строка.ПравилоПроверки);
Набор.Отбор.ВидПроверки.Установить(Строка.ВидПроверки);
Набор.Отбор.КлючУникальности.Установить(Строка.КлючУникальности);
Набор.Отбор.ИгнорироватьПроблему.Установить(Строка.ИгнорироватьПроблему);
Набор.Отбор.ПроблемныйОбъект.Установить(СтрокаТаблицы.ПроблемныйОбъект);
Набор.Отбор.ПравилоПроверки.Установить(СтрокаТаблицы.ПравилоПроверки);
Набор.Отбор.ВидПроверки.Установить(СтрокаТаблицы.ВидПроверки);
Набор.Отбор.КлючУникальности.Установить(СтрокаТаблицы.КлючУникальности);
Набор.Отбор.ИгнорироватьПроблему.Установить(СтрокаТаблицы.ИгнорироватьПроблему);
УстановитьПривилегированныйРежим(Истина);
Набор.Записать();
@@ -74,6 +74,7 @@
КонецЕсли;
СвойстваСубъекта = ЭлектроннаяПодпись.СвойстваСубъектаСертификата(Сертификат);
Отбор = Новый Структура;
Если ЗначениеЗаполнено(СвойстваСубъекта.ОГРНИП) Тогда
@@ -84,14 +85,20 @@
Отбор.Вставить(Префикс + "ИННФЛ", СвойстваСубъекта.ИНН);
Отбор.Вставить(Префикс + "ИНН", СвойстваСубъекта.ИННЮЛ);
Отбор.Вставить(Префикс + "СНИЛС", СвойстваСубъекта.СНИЛС);
ИначеЕсли ЗначениеЗаполнено(СвойстваСубъекта.Организация) Тогда
ИначеЕсли ЗначениеЗаполнено(СвойстваСубъекта.Организация) Тогда // Казначейство
Отбор.Вставить(Префикс + "НаименованиеОрганизации", СвойстваСубъекта.Организация);
Отбор.Вставить(Префикс + "ИННФЛ", СвойстваСубъекта.ИНН);
Отбор.Вставить(Префикс + "СНИЛС", СвойстваСубъекта.СНИЛС);
Иначе
СвойстваИздателя = ЭлектроннаяПодпись.СвойстваИздателяСертификата(Сертификат);
Если МашиночитаемыеДоверенностиФНССлужебный.СертификатНотариуса(СвойстваИздателя, СвойстваСубъекта) Тогда
Отбор.Вставить(Префикс + "ФИО", СвойстваСубъекта.Фамилия + " " + СвойстваСубъекта.Имя + ?(ЗначениеЗаполнено(
СвойстваСубъекта.Отчество), " " + СвойстваСубъекта.Отчество, ""));
Иначе
Отбор.Вставить(Префикс + "ИННФЛ", СвойстваСубъекта.ИНН);
Отбор.Вставить(Префикс + "СНИЛС", СвойстваСубъекта.СНИЛС);
КонецЕсли;
КонецЕсли;
Возврат Отбор;
@@ -228,9 +228,11 @@
Если Проверка.Верна <> Истина И ЗначениеЗаполнено(Проверка.ТекстПроверки) И Не Результат.СтатусВернаУстановленВручную Тогда
Элемент.УстановитьДействие("ОбработкаНавигационнойСсылки", "Подключаемый_ОбработкаНавигационнойСсылки");
Элемент.Заголовок = СтроковыеФункции.ФорматированнаяСтрока("<a href = ""%1"">%2</a>", Проверка.ТекстПроверки, Проверка.ЗаголовокПроверки);
Элемент = Форма.Элементы.Добавить("ТекстПроверки" + ПолеВывода + Индекс, Тип("ДекорацияФормы"), ГруппаПроверка);
ИмяЭлементаНадписи = "ТекстПроверки" + ПолеВывода + Индекс;
Элемент.Заголовок = СтроковыеФункции.ФорматированнаяСтрока("<a href = ""%1"">%2</a>", ИмяЭлементаНадписи, Проверка.ЗаголовокПроверки);
Элемент = Форма.Элементы.Добавить(ИмяЭлементаНадписи, Тип("ДекорацияФормы"), ГруппаПроверка);
Элемент.Вид = ВидДекорацииФормы.Надпись;
Элемент.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(Проверка.ТекстПроверки);
Элемент.АвтоМаксимальнаяШирина = Ложь;
@@ -699,10 +701,27 @@
КонецПроцедуры
// См. СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании.
Процедура ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты) Экспорт
Объекты.Добавить(Метаданные.Справочники.МашиночитаемыеДоверенности);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция СертификатВыданФНС(СвойстваИздателя)
Возврат СвойстваИздателя.ОГРН = "1047707030513";
КонецФункции
Функция СертификатНотариуса(СвойстваИздателя, СвойстваСубъекта) Экспорт
Возврат СертификатВыданФНС(СвойстваИздателя) И ЗначениеЗаполнено(СвойстваСубъекта.Должность)
И Не ЗначениеЗаполнено(СвойстваСубъекта.ОГРНИП)
И Не ЗначениеЗаполнено(СвойстваСубъекта.ИННЮЛ);
КонецФункции
Процедура ОчиститьНеобязательныеРеквизиты(Реквизиты, Список)
Для Каждого Элемент Из Список Цикл
@@ -952,6 +971,30 @@
ОтборПоСертификату = МашиночитаемыеДоверенностиФНС.ОтборДляДоверенностейПоСертификату(Сертификат, "");
Нотариус = ДанныеДоверенности.Найти(Перечисления.ТипыУчастниковМЧД.Нотариус, "ТипУчастника");
Если Нотариус <> Неопределено Тогда
Если ПроверятьНаличиеИДублиПодписи И Нотариус.Подписана Тогда
Возврат НСтр("ru='Доверенность уже подписана, удалите подпись, чтобы добавить снова.'");
КонецЕсли;
Для Каждого КлючИЗначение Из ОтборПоСертификату Цикл
Ключ = КлючИЗначение.Ключ;
Если Нотариус[Ключ] <> КлючИЗначение.Значение Тогда
Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 %2 <> %3'"), Ключ, Нотариус[Ключ], КлючИЗначение.Значение));
КонецЕсли;
КонецЦикла;
Если Ошибки.Количество() > 0 Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Не совпадают данные нотариуса и сертификата:
|%1'"), СтрСоединить(Ошибки, ", "));
КонецЕсли;
Возврат Истина;
Иначе
Совпадает = Истина;
Для Каждого Строка Из ДанныеДоверенности Цикл
@@ -1030,19 +1073,22 @@
Возврат КоличествоДоверителей = ДанныеДоверенности.СертификатПодписиПодходит + 1;
КонецЕсли;
КонецФункции
Функция ДанныеДоверителей(Доверенность)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
"ВЫБРАТЬ
| МашиночитаемыеДоверенностиПредставителиИДоверители.НаименованиеОрганизации КАК НаименованиеОрганизации,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ФИО КАК ФИО,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН КАК ИНН,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ КАК ИННФЛ,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ОГРН КАК ОГРН,
| МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС КАК СНИЛС,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника,
| МашиночитаемыеДоверенностиСтатусы.Подписана КАК Подписана
|ИЗ
| РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
@@ -1050,7 +1096,27 @@
| ПО МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность = МашиночитаемыеДоверенностиСтатусы.МашиночитаемаяДоверенность
|ГДЕ
| МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность = &МашиночитаемаяДоверенность
| И МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель)";
| И МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| МашиночитаемыеДоверенностиПредставителиИДоверители.НаименованиеОрганизации КАК НаименованиеОрганизации,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ФИО КАК ФИО,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ИНН КАК ИНН,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ИННФЛ КАК ИННФЛ,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ОГРН КАК ОГРН,
| МашиночитаемыеДоверенностиПредставителиИДоверители.СНИЛС КАК СНИЛС,
| МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника,
| МашиночитаемыеДоверенностиСтатусы.Подписана КАК Подписана
|ИЗ
| РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставителиИДоверители
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МашиночитаемыеДоверенностиСтатусы КАК МашиночитаемыеДоверенностиСтатусы
| ПО МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность = МашиночитаемыеДоверенностиСтатусы.МашиночитаемаяДоверенность
|ГДЕ
| МашиночитаемыеДоверенностиПредставителиИДоверители.МашиночитаемаяДоверенность = &МашиночитаемаяДоверенность
| И МашиночитаемыеДоверенностиПредставителиИДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Нотариус)";
Запрос.УстановитьПараметр("МашиночитаемаяДоверенность", Доверенность);
Возврат Запрос.Выполнить().Выгрузить();
@@ -1102,6 +1168,8 @@
ДанныеДоверенности.Колонки.Добавить("СертификатПодходит", Новый ОписаниеТипов("Булево"));
УстановленныеПодписи = ЭлектроннаяПодпись.УстановленныеПодписи(ФайлДоверенности);
Нотариус = ДанныеДоверенности.Найти(Перечисления.ТипыУчастниковМЧД.Нотариус, "ТипУчастника");
ДвоичныеДанные = Неопределено;
АдресДанныхДоверенности = Неопределено;
@@ -1174,6 +1242,28 @@
ОтборПоСертификату = МашиночитаемыеДоверенностиФНС.ОтборДляДоверенностейПоСертификату(Сертификат, "");
Ошибки = Новый Массив;
Если Нотариус <> Неопределено Тогда
ОшибкиПоСтроке = Новый Массив;
Для Каждого КлючИЗначение Из ОтборПоСертификату Цикл
Ключ = КлючИЗначение.Ключ;
Если Нотариус[Ключ] <> КлючИЗначение.Значение Тогда
ОшибкиПоСтроке.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 %2 <> %3'"), Ключ, Нотариус[Ключ], КлючИЗначение.Значение));
КонецЕсли;
КонецЦикла;
Если ОшибкиПоСтроке.Количество() > 0 Тогда
Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Не совпадают данные нотариуса и сертификата:
|%1'"), СтрСоединить(ОшибкиПоСтроке, ", ")));
Соответствует = Ложь;
Иначе
Нотариус.СертификатПодходит = Истина;
Соответствует = Истина;
КонецЕсли;
Иначе
Соответствует = Ложь;
Для Каждого Строка Из ДанныеДоверенности Цикл
@@ -1206,26 +1296,39 @@
КонецЕсли;
КонецЦикла;
КонецЕсли;
РезультатПроверкиПодписиДоверенности.Соответствует = Соответствует;
Если Не Соответствует Тогда
РезультатПроверкиПодписиДоверенности.ТекстОшибкиСоответствия = СтрСоединить(Ошибки, ",");
КонецЕсли;
РезультатПроверкиПодписей.Добавить(РезультатПроверкиПодписиДоверенности);
КонецЦикла;
РезультатПроверкиПодписейДоверенности.ЕстьВсеПодписи = УстановленныеПодписи.Количество() > 0 И Ошибки.Количество() = 0;
Если Не РезультатПроверкиПодписейДоверенности.ЕстьВсеПодписи Тогда
Если Нотариус <> Неопределено Тогда
РезультатПроверкиПодписейДоверенности.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Нет подписи нотариуса %1'"), Нотариус.ФИО);
Иначе
Ошибки = Новый Массив;
Для Каждого Строка Из ДанныеДоверенности Цикл
Если Не Строка.СертификатПодходит Тогда
Ошибки.Добавить(Строка.ФИО);
КонецЕсли;
КонецЦикла;
РезультатПроверкиПодписейДоверенности.ЕстьВсеПодписи = Ошибки.Количество() = 0;
Если Не РезультатПроверкиПодписейДоверенности.ЕстьВсеПодписи Тогда
РезультатПроверкиПодписейДоверенности.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Нет подписей доверителей: %1'"), СтрСоединить(Ошибки, ","));
КонецЕсли;
КонецЕсли;
РезультатПроверкиПодписейДоверенности.РезультатыПроверкиПодписей = РезультатПроверкиПодписей;
Возврат РезультатПроверкиПодписейДоверенности;
@@ -2226,8 +2329,6 @@
Процедура УстановитьУсловноеОформление(Форма) Экспорт
Форма.УсловноеОформление.Элементы.Очистить();
ЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
@@ -2379,6 +2480,30 @@
КонецФункции
Функция РеквизитыНотариальнойДоверенности() Экспорт
Структура = Новый Структура;
Структура.Вставить("Нотариус");
Структура.Вставить("ИсполняющийОбязанностиНотариуса");
Структура.Вставить("МестоСовершения");
Возврат Структура;
КонецФункции
Функция РеквизитыНотариуса() Экспорт
Структура = Новый Структура;
Структура.Вставить("Должность");
Структура.Вставить("РегистрационныйНомер");
Структура.Вставить("Фамилия");
Структура.Вставить("Имя");
Структура.Вставить("Отчество");
Возврат Структура;
КонецФункции
#Область РаботаСРаспределеннымРеестром
Функция СвойстваСервераМЧДРР()
@@ -2772,7 +2897,7 @@
УбратьИнформациюОДоступе(АдресРесурса, Заголовки);
RestЗапрос = RestПредставлениеЗапроса(Запрос, СоединениеHTTP);
ДанныеФайла = ПолучитьДвоичныеДанныеИзСтроки(RestЗапрос);
ДобавитьФайлДляРасследования(ДополнительныеФайлы, ДанныеФайла, НСтр("ru='Запрос http'"), "rest");
ДобавитьФайлДляРасследования(ДополнительныеФайлы, ДанныеФайла, НСтр("ru='Запрос http'"), "txt");
КонецЕсли;
Если Ответ <> Неопределено Тогда
@@ -2783,7 +2908,7 @@
СтруктураЗначения.Вставить("Заголовки", Заголовки);
СтруктураЗначения.Вставить("Тело", Ответ.ПолучитьТелоКакСтроку());
ДанныеФайла = ПолучитьДвоичныеДанныеИзСтроки(ОбщегоНазначения.ЗначениеВJSON(СтруктураЗначения));
ДобавитьФайлДляРасследования(ДополнительныеФайлы, ДанныеФайла, НСтр("ru='Ответ http'"), "json");
ДобавитьФайлДляРасследования(ДополнительныеФайлы, ДанныеФайла, НСтр("ru='Ответ http'"), "txt");
КонецЕсли;
Возврат ДополнительныеФайлы;
@@ -3894,16 +4019,20 @@
Функция ЗагрузитьДоверенностьИзРеестра(НомерДоверенности, ИННДоверителя, ТокенДоступа = "") Экспорт
ЗаголовокОшибки = НСтр("ru='Не удалось загрузить доверенность'");
РезультатЗагрузкиИзРеестра = Новый Структура;
РезультатЗагрузкиИзРеестра.Вставить("Ошибка");
РезультатЗагрузкиИзРеестра.Вставить("Доверенность");
РезультатЗагрузкиИзРеестра.Вставить("ЦепочкаДоверенностей", Новый Массив);
РезультатПолучения = ПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа, ЗаголовокОшибки);
ПолныеДанныеДоверенности = Новый Структура;
ПолныеДанныеДоверенности.Вставить("Ошибка", РезультатПолучения.Ошибка);
Если ЗначениеЗаполнено(РезультатПолучения.Ошибка) Тогда
Возврат ПолныеДанныеДоверенности;
ЗаголовокОшибки = НСтр("ru='Не удалось загрузить доверенность'");
ПолныеДанныеДоверенностиМЧДРР = ПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа, ЗаголовокОшибки);
РезультатЗагрузкиИзРеестра.Ошибка = ПолныеДанныеДоверенностиМЧДРР.Ошибка;
Если ЗначениеЗаполнено(ПолныеДанныеДоверенностиМЧДРР.Ошибка) Тогда
Возврат РезультатЗагрузкиИзРеестра;
КонецЕсли;
Поток = РезультатПолучения.ДанныеАрхива.ОткрытьПотокДляЧтения();
Поток = ПолныеДанныеДоверенностиМЧДРР.ДанныеАрхива.ОткрытьПотокДляЧтения();
Архив = Новый ЧтениеZipФайла(Поток);
ПутьВосстановления = ФайловаяСистема.СоздатьВременныйКаталог();
@@ -3920,19 +4049,54 @@
ФайлыДляЗагрузки.Добавить(ОписаниеФайла);
КонецЦикла;
РезультатЗагрузки = Справочники.МашиночитаемыеДоверенности.ЗагрузитьДоверенностиВИнформационнуюБазу(ФайлыДляЗагрузки);
РезультатЗагрузкиВИнформационнуюБазу =
Справочники.МашиночитаемыеДоверенности.ЗагрузитьДоверенностиВИнформационнуюБазу(ФайлыДляЗагрузки);
Если ЗначениеЗаполнено(РезультатЗагрузки.ТекстОшибки) Тогда
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, РезультатЗагрузки.ТекстОшибки);
ПолныеДанныеДоверенности.Вставить("Ошибка", ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР));
Возврат ПолныеДанныеДоверенности;
Если ЗначениеЗаполнено(РезультатЗагрузкиВИнформационнуюБазу.ТекстОшибки) Тогда
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, РезультатЗагрузкиВИнформационнуюБазу.ТекстОшибки);
РезультатЗагрузкиИзРеестра.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат РезультатЗагрузкиИзРеестра;
КонецЕсли;
ФайловаяСистема.УдалитьВременныйКаталог(ПутьВосстановления);
РегистрыСведений.МашиночитаемыеДоверенностиСтатусы.ОбновлениеСтатусовМЧД(РезультатЗагрузки.Доверенности);
РегистрыСведений.МашиночитаемыеДоверенностиСтатусы.ОбновлениеСтатусовМЧД(РезультатЗагрузкиВИнформационнуюБазу.Доверенности);
РезультатЗагрузкиИзРеестра.Доверенность = РезультатЗагрузкиВИнформационнуюБазу.Доверенности[0];
РезультатЗагрузкиИзРеестра.ЦепочкаДоверенностей.Добавить(РезультатЗагрузкиИзРеестра.Доверенность);
ПолныеДанныеДоверенности.Вставить("Доверенность", РезультатЗагрузки.Доверенности[0]);
ПредыдущаяДоверенность = РезультатЗагрузкиВИнформационнуюБазу.ПредыдущиеДоверенности[РезультатЗагрузкиИзРеестра.Доверенность];
Если ПредыдущаяДоверенность <> Неопределено Тогда
НомерДоверенностиОснования = ПредыдущаяДоверенность.НомерДоверенности;
ИННДоверителяДоверенностиОснования = ПредыдущаяДоверенность.ИННДоверителя;
РезультатЗагрузкиОснования = ЗагрузитьДоверенностьИзРеестра(НомерДоверенностиОснования, ИННДоверителяДоверенностиОснования);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(РезультатЗагрузкиИзРеестра.ЦепочкаДоверенностей, РезультатЗагрузкиОснования.ЦепочкаДоверенностей);
Доверенность = Справочники.МашиночитаемыеДоверенности.НайтиДоверенность(НомерДоверенностиОснования);
Если Доверенность <> Неопределено Тогда
ДоверенностьОбъект = РезультатЗагрузкиИзРеестра.Доверенность.ПолучитьОбъект(); // СправочникОбъект.МашиночитаемыеДоверенности
ДоверенностьОбъект.РодительскаяДоверенность = Доверенность;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.МашиночитаемыеДоверенности");
ЭлементБлокировки.УстановитьЗначение("Ссылка", РезультатЗагрузкиИзРеестра.Доверенность);
Блокировка.Заблокировать();
ДоверенностьОбъект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЕсли;
КонецЕсли;
Возврат РезультатЗагрузкиИзРеестра;
Возврат ПолныеДанныеДоверенности;
КонецФункции
Функция ОтменитьМЧДРР(ИмяФайлаВыгрузки, ДанныеИлиАдресВыгрузки, ДанныеИлиАдресПодписи, Доверенность, ТокенДоступа = "") Экспорт
@@ -3955,7 +4119,15 @@
Результат.Вставить("Ошибка", "");
Если НЕ ЗначениеЗаполнено(ТокенДоступа) Тогда
РезультатАвторизации = АвторизоватьсяНаСервереМЧДРР();
РезультатАвторизации = АвторизоватьсяНаСервереМЧДРР(ЗаголовокОшибки);
Если РезультатАвторизации.Ошибка <> Неопределено Тогда
Результат.Ошибка = РезультатАвторизации.Ошибка;
КонецЕсли;
Если Результат.Ошибка <> Неопределено Тогда
Возврат Результат;
КонецЕсли;
ТокенДоступа = РезультатАвторизации.ТокенДоступа;
КонецЕсли;
@@ -4081,7 +4253,7 @@
КонецФункции
Функция ПолучитьФайлОтменыДоверенности(Доверенность, ПричинаОтмены) Экспорт
Функция ФайлОтменыДоверенности(Доверенность, ПричинаОтмены) Экспорт
ФайлДоверенности = Доверенность.ФайлДоверенности;
НомерДоверенности = Доверенность.НомерДоверенности;
@@ -4111,7 +4283,7 @@
ЗаписьXML.ЗаписатьНачалоЭлемента("СвЗаявит");
ЗаписьXML.ЗаписатьНачалоЭлемента("СвДоверит");
Если Не ТипЗнч(ДанныеДоверенности) = Тип("Структура") Тогда
Если ДанныеДоверенности.Документ.Довер <> Неопределено Тогда
Если ДанныеДоверенности.Документ.Довер.СвДоверит[0].ТипДоверит = "1" Тогда
СведенияОДоверителе =
@@ -4130,42 +4302,38 @@
ДанныеДоверенности.Документ.Довер.СвДоверит[0].Доверит.ИПДовер;
ЗаписьXML.ЗаписатьНачалоЭлемента("ИПДовер");
Если ЗначениеЗаполнено(СведенияОДоверителе.НаимИП) Тогда
ЗаписьXML.ЗаписатьАтрибут("НаимИП", СведенияОДоверителе.НаимИП);
КонецЕсли;
ЗаписьXML.ЗаписатьАтрибут("ИННФЛ", СведенияОДоверителе.ИННФЛ);
ЗаписьXML.ЗаписатьАтрибут("ОГРНИП", СведенияОДоверителе.ОГРНИП);
ЗаписьXML.ЗаписатьКонецЭлемента();
Иначе
ТекстОшибки = НСтр("ru = 'Не поддерживается отзыв с типом доверителя:'") + ДанныеДоверенности.ТипОрганизации;
Если ДанныеДоверенности.Документ.Довер.СвДоверит[0].ТипДоверит = "4" Тогда
ТекстОшибки = НСтр("ru = 'Невозможно отозвать доверенность физического лица.'");
Иначе
ТекстОшибки = НСтр("ru = 'Невозможно отозвать доверенность иностранной организации.'");
КонецЕсли;
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Иначе
Если ДанныеДоверенности.ТипОрганизации = "ЮЛ" Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("РосОргДовер");
ЗаписьXML.ЗаписатьАтрибут("НаимОрг", ДанныеДоверенности.ДоверительЮЛ_НаимОрг);
ЗаписьXML.ЗаписатьАтрибут("ИННЮЛ", ДанныеДоверенности.ДоверительЮЛ_ИНН);
ЗаписьXML.ЗаписатьАтрибут("КПП", ДанныеДоверенности.ДоверительЮЛ_КПП);
ЗаписьXML.ЗаписатьАтрибут("ОГРН", ДанныеДоверенности.ДоверительЮЛ_ОГРН);
ЗаписьXML.ЗаписатьКонецЭлемента();
ИначеЕсли ДанныеДоверенности.Документ.Передов <> Неопределено Тогда
ИначеЕсли ДанныеДоверенности.ТипОрганизации = "ИП" Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("ИПДовер");
ЗаписьXML.ЗаписатьАтрибут("НаимИП", ДанныеДоверенности.ДоверительЮЛ_НаимОрг);
ЗаписьXML.ЗаписатьАтрибут("ИННФЛ", ДанныеДоверенности.ДоверительФЛ_ИНН);
ЗаписьXML.ЗаписатьАтрибут("ОГРНИП", ДанныеДоверенности.ДоверительФЛ_ОГРН);
ЗаписьXML.ЗаписатьКонецЭлемента();
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Отзыв передоверия не реализован в данной версии приложения. Отзовите передоверие на сайте Распределенного реестра ФНС %1.'"),
"https://m4d.nalog.gov.ru/emchd");
Иначе
ТекстОшибки = НСтр("ru = 'Не поддерживается отзыв с типом доверителя:'") + ДанныеДоверенности.ТипОрганизации;
ВызватьИсключение ТекстОшибки;
ВызватьИсключение НСтр("ru = 'Не удалось определить доверителя по файлу доверенности.'");
КонецЕсли;
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
@@ -4243,6 +4411,8 @@
ФорматированныйДокумент.УстановитьHTML(ТелоОтвета, Новый Структура);
ФорматированнаяСтрока = ФорматированныйДокумент.ПолучитьФорматированнуюСтроку();
СтруктураОтвета = Новый Структура("title", ФорматированнаяСтрока);
ИначеЕсли ОтветHTTP.Заголовки["Content-Type"] = "application/xml;charset=UTF-8" Тогда
СтруктураОтвета = Новый Структура("title", ОтветHTTP.ПолучитьТелоКакСтроку());
Иначе
СтруктураОтвета = ОбщегоНазначения.JSONВЗначение(ОтветHTTP.ПолучитьТелоКакСтроку(),,Ложь)
КонецЕсли;
@@ -83,14 +83,14 @@
КонецПроцедуры
Процедура ПриОбработкеНавигационнойСсылкиОшибкиПроверкиПодписи(Форма, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) Экспорт
Процедура ПриОбработкеНавигационнойСсылкиОшибкиПроверкиПодписи(Форма, ИмяЭлементаНадписьОшибка, СтандартнаяОбработка) Экспорт
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(НавигационнаяСсылкаФорматированнойСтроки) Тогда
Если ЗначениеЗаполнено(ИмяЭлементаНадписьОшибка) Тогда
Ошибка = Новый Структура;
Ошибка.Вставить("ОписаниеОшибки", НавигационнаяСсылкаФорматированнойСтроки);
Ошибка.Вставить("ОписаниеОшибки", Строка(Форма.Элементы[ИмяЭлементаНадписьОшибка].Заголовок));
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
НСтр("ru='Проверка доверенности подписи'"), "", Ошибка, Новый Структура);
@@ -278,7 +278,7 @@
ПараметрыФормы = ПараметрыРасширенногоПредставленияОшибки();
ПараметрыФормы.ЗаголовокПредупреждения = Контекст.ЗаголовокПредупреждения;
ПараметрыФормы.ТекстОшибки = Ошибка.ТекстОшибки;
ПараметрыФормы.ОписаниеОшибки = Ошибка.Решение;
ПараметрыФормы.ОписаниеОшибки = СтрШаблон("%1: %2", Контекст.ЗаголовокПредупреждения, Ошибка.ТекстОшибки);
ПараметрыФормы.ПоказатьТребуетсяПомощь = Истина;
ПараметрыФормы.ПоказатьИнструкцию = Истина;
ПараметрыФормы.ИнформацияДляПоддержки = СтроковыеФункцииКлиент.ФорматированнаяСтрока(
@@ -286,7 +286,6 @@
"ТехническаяИнформация");
ПараметрыФормы.ДополнительныеДанные.Вставить("ДополнительныеДанныеПроверок", Ошибка);
ПараметрыФормы.ДополнительныеДанные.Вставить("ДоверенностьМЧД", Ошибка.ДополнительныеФайлы);
ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки",
ПараметрыФормы, Контекст.Форма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
@@ -342,9 +341,6 @@
Процедура ПолучитьДоверенностьИзРеестра(ОповещениеОПолучении, НомерДоверенности, ИННДоверителя) Экспорт
Результат = Новый Структура;
Результат.Вставить("Ошибка");
РезультатПолучения = МашиночитаемыеДоверенностиФНССлужебныйВызовСервера.ЗагрузитьДоверенностьИзРеестра(НомерДоверенности, ИННДоверителя);
Если ЗначениеЗаполнено(РезультатПолучения.Ошибка) Тогда
КонтекстОшибки = КонтекстДляОбработкиОшибкиРР();
@@ -354,6 +350,7 @@
КонецЕсли;
ВыполнитьОбработкуОповещения(ОповещениеОПолучении, РезультатПолучения);
КонецПроцедуры
Процедура ВыгрузитьДоверенностьВФайл(Знач Доверенность) Экспорт
@@ -190,9 +190,7 @@
КонецЕсли;
Если ТекущийЯзык().КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Возврат;
КонецЕсли;
Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Для Каждого Реквизит Из ИменаМультиязычныхРеквизитовВШапке Цикл
@@ -204,6 +202,8 @@
КонецЕсли;
КонецЕсли;
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
Если Не ОбъектСодержитТЧПредставления(ПолноеИмя) Тогда
@@ -243,6 +243,8 @@
КонецЦикла;
ЗаполнитьМультиязычныеРеквизитыТабличнойЧастиПредставления(ТекущийОбъект, Реквизиты);
Отбор.КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
@@ -1864,6 +1866,51 @@
КонецПроцедуры
Процедура ЗаполнитьМультиязычныеРеквизитыТабличнойЧастиПредставления(ТекущийОбъект, Знач Реквизиты)
Представления = ТекущийОбъект.Представления; // ТабличнаяЧасть
СуффиксТекущегоЯзыка = СуффиксТекущегоЯзыка();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда
МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность");
ДоступныеЯзыки = МодульУправлениеПечатьюМультиязычность.ДоступныеЯзыки();
Иначе
ДоступныеЯзыки = Новый Массив;
Для Каждого Язык Из Метаданные.Языки Цикл
ДоступныеЯзыки.Добавить(Язык.КодЯзыка);
КонецЦикла;
КонецЕсли;
Для Каждого ЯзыкПечатнойФормы Из ДоступныеЯзыки Цикл
Если ТекущийЯзык().КодЯзыка = ЯзыкПечатнойФормы Тогда
Продолжить;
КонецЕсли;
Отбор = Новый Структура();
Отбор.Вставить("КодЯзыка", ЯзыкПечатнойФормы);
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Представление = НайденныеСтроки[0];
Иначе
Представление = Представления.Добавить();
Представление.КодЯзыка = ЯзыкПечатнойФормы;
КонецЕсли;
Для каждого ИмяРеквизита Из Реквизиты Цикл
Если ПустаяСтрока(Представление[ИмяРеквизита]) Тогда
ЗначениеНаТекущемЯзыке = ТекущийОбъект[ИмяРеквизита + СуффиксТекущегоЯзыка];
Представление[ИмяРеквизита] = ЗначениеНаТекущемЯзыке;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
// Параметры:
// Реквизит - ОбъектМетаданныхРеквизит
// - ОписаниеСтандартногоРеквизита
@@ -36,6 +36,10 @@
Процедура ДобавитьКомандыОбсуждения(ПараметрыКоманд, Команды, КомандаПоУмолчанию) Экспорт
Если ТипЗнч(ПараметрыКоманд.Сообщение) <> Тип("СообщениеСистемыВзаимодействия") Тогда
Возврат;
КонецЕсли;
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента();
Если Не ПараметрыРаботыКлиента.ИспользуютсяНапоминанияПользователя Тогда
Возврат;
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.10.141";
Описание.Версия = "3.1.10.174";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -2282,7 +2282,7 @@
КонецПроцедуры
Процедура НачальноеЗаполнениеТЧПредставления(ЗаполняемыйЭлемент, СтрокаТаблицы, ПараметрыЗаполнения) Экспорт
Процедура НачальноеЗаполнениеТЧПредставления(ЗаполняемыйЭлемент, ДанныеЗаполнения, ПараметрыЗаполнения) Экспорт
Языки = СтандартныеПодсистемыСервер.ЯзыкиКонфигурации();
ЛокализуемыеРеквизитыОбъекта = ПараметрыЗаполнения.ЛокализуемыеРеквизитыОбъекта;
@@ -2291,13 +2291,19 @@
Если СтрСравнить(КодЯзыка, ОбщегоНазначения.КодОсновногоЯзыка()) = 0 Тогда
Продолжить;
КонецЕсли;
ПредставленияОбъекта = ЗаполняемыйЭлемент.Представления; // ТаблицаЗначений
НовоеПредставление = ПредставленияОбъекта.Добавить();
НовоеПредставление.КодЯзыка = КодЯзыка;
ПредставленияОбъекта = ЗаполняемыйЭлемент.Представления; // ТабличнаяЧасть
СтрокаТаблицы = ПредставленияОбъекта.Найти(КодЯзыка, "КодЯзыка");
Если СтрокаТаблицы = Неопределено Тогда
СтрокаТаблицы = ПредставленияОбъекта.Добавить();
СтрокаТаблицы.КодЯзыка = КодЯзыка;
КонецЕсли;
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
Значение = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
НовоеПредставление[ИмяЛокализуемогоРеквизита.Ключ] = ?(ЗначениеЗаполнено(Значение), Значение, СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ]);
Значение = ДанныеЗаполнения[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ] = ?(ЗначениеЗаполнено(Значение), Значение, ДанныеЗаполнения[ИмяЛокализуемогоРеквизита.Ключ]);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
@@ -3467,9 +3473,9 @@
| ОбработчикиОбновления.ИмяБиблиотеки = &ИмяБиблиотеки
| И ОбработчикиОбновления.Статус <> &Статус";
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
Для Каждого СтрокаТаблицы Из Результат Цикл
НаборЗаписей = РегистрыСведений.ОбработчикиОбновления.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ИмяОбработчика.Установить(Строка.ИмяОбработчика);
НаборЗаписей.Отбор.ИмяОбработчика.Установить(СтрокаТаблицы.ИмяОбработчика);
НаборЗаписей.Прочитать();
НаборЗаписей[0].ИмяБиблиотеки = Метаданные.Имя;
@@ -3995,11 +4001,11 @@
| ПрогрессОбновления.ИнтервалЧас < &ИнтервалЧас";
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
Для Каждого СтрокаТаблицы Из Результат Цикл
МенеджерЗаписи = РегистрыСведений.ПрогрессОбновления.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ИмяОбработчика = Строка.ИмяОбработчика;
МенеджерЗаписи.ИнтервалЧас = Строка.ИнтервалЧас;
МенеджерЗаписи.КлючЗаписи = Строка.КлючЗаписи;
МенеджерЗаписи.ИмяОбработчика = СтрокаТаблицы.ИмяОбработчика;
МенеджерЗаписи.ИнтервалЧас = СтрокаТаблицы.ИнтервалЧас;
МенеджерЗаписи.КлючЗаписи = СтрокаТаблицы.КлючЗаписи;
МенеджерЗаписи.Удалить();
КонецЦикла;
@@ -4263,7 +4269,7 @@
ЗаписатьСведенияОБлокируемыхОбъектах(НовыеСведенияОБлокируемыхОбъектах());
КонецПроцедуры
Процедура ПроверитьСвойстваОтложенногоОбработчика(Знач Обработчик, Знач РежимВыполненияОтложенныхОбработчиков, ТекстОшибок)
Процедура ПроверитьСвойстваОтложенногоОбработчика(Знач Обработчик, Знач РежимВыполненияОтложенныхОбработчиков, Знач ИмяБиблиотеки, ТекстОшибок)
Если РежимВыполненияОтложенныхОбработчиков = "Параллельно"
И Не ЗначениеЗаполнено(Обработчик.ПроцедураЗаполненияДанныхОбновления) Тогда
@@ -4302,6 +4308,17 @@
ТекстОшибок = ТекстОшибок + ТекстОшибки + Символы.ПС;
КонецЕсли;
Если РежимВыполненияОтложенныхОбработчиков = "Последовательно"
И Обработчик.Многопоточный Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'У отложенного обработчика ""%1"" включено недопустимое свойство ""Многопоточный"",
|т.к. он относится к подсистеме ""%2"" c последовательным режимом выполнения отложенных обработчиков.'"),
Обработчик.ИмяОбработчика,
ИмяБиблиотеки);
ЗаписатьОшибку(ТекстОшибки);
ТекстОшибок = ТекстОшибок + ТекстОшибки + Символы.ПС;
КонецЕсли;
Если Обработчик.ОбщиеДанные = Истина Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'У отложенного обработчика ""%1""
|указано недопустимое значение свойства ""%2"".
@@ -4431,7 +4448,7 @@
КонецЕсли;
Для Каждого Обработчик Из СтрокаВерсия.Строки Цикл
ПроверитьСвойстваОтложенногоОбработчика(Обработчик, ТекущийРежимВыполнения, ТекстОшибок);
ПроверитьСвойстваОтложенногоОбработчика(Обработчик, ТекущийРежимВыполнения, ИмяБиблиотеки, ТекстОшибок);
Если ТекущийРежимВыполнения = "Параллельно" Тогда
ЗаполнитьЧитаемыеИИзменяемыеДанные(Обработчик, ЧитаемыеИИзменяемыеТаблицы);
КонецЕсли;
@@ -12290,32 +12307,32 @@
НачалоТекущегоИнтервала = Неопределено;
КонецТекущегоИнтервала = Неопределено;
Для Каждого Строка Из ТаблицаДлительностей Цикл
Если Не ЗначениеЗаполнено(Строка.Начало)
Или Не ЗначениеЗаполнено(Строка.Конец) Тогда
Для Каждого СтрокаТаблицы Из ТаблицаДлительностей Цикл
Если Не ЗначениеЗаполнено(СтрокаТаблицы.Начало)
Или Не ЗначениеЗаполнено(СтрокаТаблицы.Конец) Тогда
Продолжить;
КонецЕсли;
Если НачалоТекущегоИнтервала = Неопределено Тогда
НачалоТекущегоИнтервала = Строка.Начало;
КонецТекущегоИнтервала = Строка.Конец;
НачалоТекущегоИнтервала = СтрокаТаблицы.Начало;
КонецТекущегоИнтервала = СтрокаТаблицы.Конец;
Продолжить;
КонецЕсли;
Если Строка.Конец < КонецТекущегоИнтервала Тогда
Если СтрокаТаблицы.Конец < КонецТекущегоИнтервала Тогда
Продолжить;
КонецЕсли;
Если Строка.Начало < КонецТекущегоИнтервала Тогда
Если Строка.Конец > КонецТекущегоИнтервала Тогда
КонецТекущегоИнтервала = Строка.Конец;
Если СтрокаТаблицы.Начало < КонецТекущегоИнтервала Тогда
Если СтрокаТаблицы.Конец > КонецТекущегоИнтервала Тогда
КонецТекущегоИнтервала = СтрокаТаблицы.Конец;
КонецЕсли;
Продолжить;
КонецЕсли;
Если Строка.Начало > КонецТекущегоИнтервала Тогда
Если СтрокаТаблицы.Начало > КонецТекущегоИнтервала Тогда
ЧистаяДлительность = ЧистаяДлительность + (КонецТекущегоИнтервала - НачалоТекущегоИнтервала);
НачалоТекущегоИнтервала = Строка.Начало;
КонецТекущегоИнтервала = Строка.Конец;
НачалоТекущегоИнтервала = СтрокаТаблицы.Начало;
КонецТекущегоИнтервала = СтрокаТаблицы.Конец;
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -678,8 +678,8 @@
|ИЗ
| РегистрСведений.ВерсииПодсистемОбластейДанных КАК ВерсииПодсистемОбластейДанных";
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
ВерсииПодсистем.Вставить(Строка.ИмяПодсистемы, Строка.Версия);
Для Каждого СтрокаТаблицы Из Результат Цикл
ВерсииПодсистем.Вставить(СтрокаТаблицы.ИмяПодсистемы, СтрокаТаблицы.Версия);
КонецЦикла;
Для Каждого СтрокаНабора Из ЭлементДанных Цикл
@@ -961,8 +961,8 @@
Запрос.УстановитьПараметр("ОбластьДанных", ОбластиДанных);
ВерсииОбластей = Новый Соответствие;
ВерсииКонфигурацииВОбластях = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из ВерсииКонфигурацииВОбластях Цикл
ВерсииОбластей.Вставить(Строка.ОбластьДанных, Строка.Версия);
Для Каждого СтрокаТаблицы Из ВерсииКонфигурацииВОбластях Цикл
ВерсииОбластей.Вставить(СтрокаТаблицы.ОбластьДанных, СтрокаТаблицы.Версия);
КонецЦикла;
ТребуетсяУстановитьЗапланированныйМоментЗапуска = Ложь;
@@ -300,17 +300,16 @@
Версии = Новый Массив;
Таблица.Сортировать("ВесВерсии Возр");
ПоследняяСтрока = Таблица[Таблица.Количество() - 1];
Для Каждого Строка Из Таблица Цикл
Если Не Строка.Обязательная Тогда
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если Не СтрокаТаблицы.Обязательная Тогда
Продолжить;
КонецЕсли;
Если Строка = ПоследняяСтрока Тогда
// Последнюю версию не учитываем.
Продолжить;
Если СтрокаТаблицы = ПоследняяСтрока Тогда
Продолжить; // Последнюю версию не учитываем
КонецЕсли;
Версии.Добавить(Строка.Версия);
Версии.Добавить(СтрокаТаблицы.Версия);
КонецЦикла;
Возврат Версии;
@@ -881,6 +881,11 @@
КаталогРезервнойКопии = "";
КонецЕсли;
ИнтервалУведомленияПользователей = 0;
Если Параметры.Свойство("ИнтервалУведомленияПользователей") Тогда
ИнтервалУведомленияПользователей = Параметры.ИнтервалУведомленияПользователей;
КонецЕсли;
СоздаватьРезервнуюКопию = ЭтоФайловаяБаза И (Параметры.СоздаватьРезервнуюКопию = 1 Или Параметры.СоздаватьРезервнуюКопию = 2);
ВыполнитьОтложенныеОбработчики = Ложь;
@@ -923,6 +928,7 @@
ВставитьПараметрСкрипта("ИмяЗадачиПланировщикаЗадач" , ИмяЗадачи , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("ПараметрыЗапускаПредприятия" , ПараметрыЗапускаПредприятия , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("КодРазблокировки" , "ПакетноеОбновлениеКонфигурацииИБ" , Ложь, ОбластьПараметров);
ВставитьПараметрСкрипта("ИнтервалУведомленияПользователей" , ИнтервалУведомленияПользователей , Ложь, ОбластьПараметров);
ВставитьПараметрСкрипта("ВыполнитьОбновлениеКонфигурации" , ВыполнитьОбновлениеКонфигурации , Ложь, ОбластьПараметров);
ВставитьПараметрСкрипта("ВыполнитьЗагрузкуРасширений" , ВыполнитьЗагрузкуРасширений , Ложь, ОбластьПараметров);
@@ -2150,8 +2150,28 @@
Функция АдресПубликацииИнформационнойБазыВИнтернете() Экспорт
УстановитьПривилегированныйРежим(Истина);
Результат = Константы.АдресПубликацииИнформационнойБазыВИнтернете.Получить();
Если РазделениеВключено() И ДоступноИспользованиеРазделенныхДанных() Тогда
Если ПустаяСтрока(Результат)
И ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность")
И ПодсистемаСуществует("ТехнологияСервиса.ВнешнийПрограммныйИнтерфейс") Тогда
Возврат Константы.АдресПубликацииИнформационнойБазыВИнтернете.Получить();
МодульРаботаВМоделиСервиса = ОбщийМодуль("РаботаВМоделиСервиса");
МодульПрограммныйИнтерфейсСервиса = ОбщийМодуль("ПрограммныйИнтерфейсСервиса");
РазделительСеанса = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса();
Попытка
Результат = МодульПрограммныйИнтерфейсСервиса.СвойстваПриложения(РазделительСеанса).АдресПриложения;
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Адрес публикации приложения'", КодОсновногоЯзыка()), // АПК:154 Не считаем ошибкой проблемы недоступности Менеджера сервиса.
УровеньЖурналаРегистрации.Предупреждение,,,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат "";
КонецПопытки;
Константы.АдресПубликацииИнформационнойБазыВИнтернете.Установить(Результат);
КонецЕсли;
Возврат Результат;
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -2160,6 +2180,8 @@
// Например, если такой адрес включить в электронное письмо, то из письма за одно нажатие
// можно перейти к форме объекта в самой программе.
//
// При работе в приложении в Интернете возвращает значение функции АдресПубликацииИнформационнойБазыВИнтернете.
//
// Возвращаемое значение:
// Строка - адрес информационной базы, как он задан в настройке "Локальный адрес" в панели администрирования
// (хранится в константе АдресПубликацииИнформационнойБазыВЛокальнойСети).
@@ -2171,8 +2193,11 @@
//
Функция АдресПубликацииИнформационнойБазыВЛокальнойСети() Экспорт
УстановитьПривилегированныйРежим(Истина);
Если РазделениеВключено() И ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат АдресПубликацииИнформационнойБазыВИнтернете();
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Возврат Константы.АдресПубликацииИнформационнойБазыВЛокальнойСети.Получить();
КонецФункции
@@ -2579,9 +2604,9 @@
СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;
НужнаЗапятая = Истина;
КонецЦикла;
Для Каждого Строка Из ТаблицаЗначений Цикл
Для Каждого СтрокаТаблицы Из ТаблицаЗначений Цикл
НоваяСтрока = Новый Структура(СтруктураСтрокой);
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
Массив.Добавить(НоваяСтрока);
КонецЦикла;
Возврат Массив;
@@ -6277,26 +6302,6 @@
ВызватьИсключение Текст;
КонецЕсли;
Если ИнформационнаяБазаФайловая()
И ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными")
И Не РазделениеВключено()
И ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда
МодульОбменДаннымиСервер = ОбщийМодуль("ОбменДаннымиСервер");
ВыполняетсяЗагрузкаДанныхРИБ = МодульОбменДаннымиСервер.ВыполняетсяЗагрузкаДанныхРИБ();
Если ВыполняетсяЗагрузкаДанныхРИБ Тогда
Текст = НСтр("ru = 'Регламентное задание недоступно до окончания загрузки данных из главного узла.
|Выполнение прервано.'");
РегламентныеЗаданияСервер.ОтменитьВыполнениеЗадания(РегламентноеЗадание, Текст);
ВызватьИсключение Текст;
КонецЕсли;
КонецЕсли;
Справочники.ВерсииРасширений.ЗарегистрироватьИспользованиеВерсииРасширений();
РегистрыСведений.ПараметрыРаботыВерсийРасширений.ПриУспешномНачалеВыполненияРегламентногоЗадания();
@@ -6446,12 +6451,12 @@
//
Процедура ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(КоллекцияЭлементовДерева, ДеревоЗначений) Экспорт
Для Каждого Строка Из ДеревоЗначений.Строки Цикл
Для Каждого СтрокаТаблицы Из ДеревоЗначений.Строки Цикл
ЭлементДерева = КоллекцияЭлементовДерева.Добавить();
ЗаполнитьЗначенияСвойств(ЭлементДерева, Строка);
Если Строка.Строки.Количество() > 0 Тогда
ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(ЭлементДерева.ПолучитьЭлементы(), Строка);
ЗаполнитьЗначенияСвойств(ЭлементДерева, СтрокаТаблицы);
Если СтрокаТаблицы.Строки.Количество() > 0 Тогда
ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(ЭлементДерева.ПолучитьЭлементы(), СтрокаТаблицы);
КонецЕсли;
КонецЦикла;
@@ -6886,45 +6891,49 @@
// ИмяФайла - Строка - имя файла с расширением
//
Процедура СократитьИмяФайла(ИмяФайла) Экспорт
ОграничениеВБайтах = 255;
Если РазмерСтрокиВБайтах(ИмяФайла) <= ОграничениеВБайтах Тогда
ОграничениеВБайтах = 127;
Файл = Новый Файл(ИмяФайла);
Если РазмерСтрокиВБайтах(Файл.Имя) <= ОграничениеВБайтах Тогда
Возврат;
КонецЕсли;
Файл = Новый Файл(ИмяФайла);
ИмяБезРасширения = Файл.ИмяБезРасширения;
Строка = "";
ОстатокСтроки = "";
РазмерСтроки = 0;
МаксимальныйРазмерСтроки = ОграничениеВБайтах - 32;
ОграничениеВБайтах = ОграничениеВБайтах - РазмерСтрокиВБайтах(Файл.Расширение);
РазмерРасширения = РазмерСтрокиВБайтах(Файл.Расширение);
СокращатьВместеСРасширением = РазмерРасширения > 32;
ДлинаСтроки = СтрДлина(ИмяБезРасширения);
ИспользуемоеКоличествоСимволов = ОграничениеВБайтах - 32;
БольшееКоличествоСимволов = Мин(ДлинаСтроки, ОграничениеВБайтах);
МеньшееКоличествоСимволов = Цел((ОграничениеВБайтах - 32)/4);
Уменьшить = Истина;
Пока Истина Цикл
Если Уменьшить Тогда
ИспользуемоеКоличествоСимволов = МеньшееКоличествоСимволов + Цел((ИспользуемоеКоличествоСимволов - МеньшееКоличествоСимволов)/2);
Если СокращатьВместеСРасширением Тогда
СокращаемоеИмя = Файл.Имя;
Иначе
ИспользуемоеКоличествоСимволов = ИспользуемоеКоличествоСимволов + Цел((БольшееКоличествоСимволов - ИспользуемоеКоличествоСимволов)/2);
СокращаемоеИмя = Файл.ИмяБезРасширения;
РазмерСтроки = РазмерРасширения;
КонецЕсли;
РазмерСтрокиВБайтах = РазмерСтрокиВБайтах(ИмяБезРасширения) + 32;
Для НомерСимвола = 1 По СтрДлина(СокращаемоеИмя) Цикл
Символ = Сред(СокращаемоеИмя, НомерСимвола, 1);
РазмерСимвола = РазмерСтрокиВБайтах(Символ);
Если РазмерСтрокиВБайтах = ОграничениеВБайтах Или БольшееКоличествоСимволов - МеньшееКоличествоСимволов = 1 Тогда
Если РазмерСтроки + РазмерСимвола > МаксимальныйРазмерСтроки Тогда
ОстатокСтроки = Сред(СокращаемоеИмя, НомерСимвола);
Прервать;
КонецЕсли;
Уменьшить = (РазмерСтрокиВБайтах > ОграничениеВБайтах);
Если Уменьшить Тогда
БольшееКоличествоСимволов = ИспользуемоеКоличествоСимволов;
Иначе
МеньшееКоличествоСимволов = ИспользуемоеКоличествоСимволов;
КонецЕсли;
Строка = Строка + Символ;
РазмерСтроки = РазмерСтроки + РазмерСимвола;
КонецЦикла;
СокращеннаяСтрока = СократитьСтрокуКонтрольнойСуммой(ИмяБезРасширения, ИспользуемоеКоличествоСимволов + 32);
ИмяФайла = СокращеннаяСтрока + Файл.Расширение;
ИмяФайла = Строка;
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
ХешированиеДанных.Добавить(ОстатокСтроки);
ХешСумма = СтрЗаменить(ХешированиеДанных.ХешСумма, " ", "");
ИмяФайла = Файл.Путь + ИмяФайла + ХешСумма + ?(СокращатьВместеСРасширением, "", Файл.Расширение);
КонецПроцедуры
@@ -7213,12 +7222,10 @@
МетаданныеКонстанты = МестоИспользования.Метаданные;
ПредставлениеДанных = Строка(Данные);
// Будем производить сразу все замены для этих данных.
Фильтр = Новый Структура("Данные, КлючЗамены", Данные, "Константа");
ОбрабатываемыеСтроки = МестоИспользования.Владелец().НайтиСтроки(Фильтр); // см. МестаИспользования
// Помечаем как обработанные
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
Строка.КлючЗамены = "";
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
СтрокаТаблицы.КлючЗамены = "";
КонецЦикла;
СостояниеОперации = "";
@@ -7244,9 +7251,9 @@
МенеджерКонстанты.Прочитать();
ЗаменаПроизведена = Ложь;
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
Если МенеджерКонстанты.Значение = Строка.Ссылка Тогда
МенеджерКонстанты.Значение = Строка.ЦелеваяСсылка;
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
Если МенеджерКонстанты.Значение = СтрокаТаблицы.Ссылка Тогда
МенеджерКонстанты.Значение = СтрокаТаблицы.ЦелеваяСсылка;
ЗаменаПроизведена = Истина;
КонецЕсли;
КонецЦикла;
@@ -7281,12 +7288,12 @@
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЗаменыСсылок(), УровеньЖурналаРегистрации.Ошибка,
МетаданныеКонстанты,, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Если СостояниеОперации = "ОшибкаЗаписи" Тогда
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
ЗарегистрироватьОшибкуЗамены(Результат, Строка.Ссылка,
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
ЗарегистрироватьОшибкуЗамены(Результат, СтрокаТаблицы.Ссылка,
ОписаниеОшибкиЗамены("ОшибкаЗаписи", Данные, ПредставлениеДанных, ИнформацияОбОшибке()));
КонецЦикла;
Иначе
ЗарегистрироватьОшибкуЗамены(Результат, Строка.Ссылка,
ЗарегистрироватьОшибкуЗамены(Результат, СтрокаТаблицы.Ссылка,
ОписаниеОшибкиЗамены(СостояниеОперации, Данные, ПредставлениеДанных, ИнформацияОбОшибке()));
КонецЕсли;
КонецПопытки;
@@ -7367,8 +7374,8 @@
МестоИспользования.Метаданные,, ОбработкаОшибок.ПодробноеПредставлениеОшибки(Информация));
Ошибка = ОписаниеОшибкиЗамены(СостояниеОперации, Данные, ПредставлениеДанных, ИнформацияОбОшибке());
Если СостояниеОперации = "ОшибкаЗаписи" Тогда
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
ЗарегистрироватьОшибкуЗамены(Результат, Строка.Ссылка, Ошибка);
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
ЗарегистрироватьОшибкуЗамены(Результат, СтрокаТаблицы.Ссылка, Ошибка);
КонецЦикла;
Иначе
ЗарегистрироватьОшибкуЗамены(Результат, МестоИспользования.Ссылка, Ошибка);
@@ -7376,8 +7383,8 @@
КонецПопытки;
// Помечаем как обработанные
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
Строка.КлючЗамены = "";
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
СтрокаТаблицы.КлючЗамены = "";
КонецЦикла;
КонецПроцедуры
@@ -7398,13 +7405,13 @@
НаборЗаписей = ОписаниеНабора.НаборЗаписей; // РегистрСведенийНаборЗаписей
ПарыЗамен = Новый Соответствие;
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
ПарыЗамен.Вставить(Строка.Ссылка, Строка.ЦелеваяСсылка);
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
ПарыЗамен.Вставить(СтрокаТаблицы.Ссылка, СтрокаТаблицы.ЦелеваяСсылка);
КонецЦикла;
// Помечаем как обработанные
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
Строка.КлючЗамены = "";
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
СтрокаТаблицы.КлючЗамены = "";
КонецЦикла;
СостояниеОперации = "";
@@ -7419,8 +7426,8 @@
Имя = КлючЗначение.Ключ;
Значение = Данные[Имя];
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
ТекущаяСсылка = Строка.Ссылка;
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
ТекущаяСсылка = СтрокаТаблицы.Ссылка;
Если ТипИзмерения.СодержитТип(ТипЗнч(ТекущаяСсылка)) Тогда
Блокировка.Добавить(ОписаниеНабора.ПространствоБлокировки).УстановитьЗначение(Имя, ТекущаяСсылка);
КонецЕсли;
@@ -7477,8 +7484,8 @@
МетаданныеРегистра,, ОбработкаОшибок.ПодробноеПредставлениеОшибки(Информация));
Ошибка = ОписаниеОшибкиЗамены(СостояниеОперации, Данные, ПредставлениеДанных, ИнформацияОбОшибке());
Если СостояниеОперации = "ОшибкаЗаписи" Тогда
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
ЗарегистрироватьОшибкуЗамены(Результат, Строка.Ссылка, Ошибка);
Для Каждого СтрокаТаблицы Из ОбрабатываемыеСтроки Цикл
ЗарегистрироватьОшибкуЗамены(Результат, СтрокаТаблицы.Ссылка, Ошибка);
КонецЦикла;
Иначе
ЗарегистрироватьОшибкуЗамены(Результат, МестоИспользования.Ссылка, Ошибка);
@@ -7941,21 +7948,21 @@
Процедура ДобавитьРезультатыЗаменыИзмененныхОбъектов(Результат, ТаблицаПовторногоПоиска)
Фильтр = Новый Структура("Ссылка, ОбъектОшибки");
Для Каждого Строка Из ТаблицаПовторногоПоиска Цикл
Для Каждого СтрокаТаблицы Из ТаблицаПовторногоПоиска Цикл
Тест = Новый Структура("ВспомогательныеДанные", Ложь);
ЗаполнитьЗначенияСвойств(Тест, Строка);
ЗаполнитьЗначенияСвойств(Тест, СтрокаТаблицы);
Если Тест.ВспомогательныеДанные Тогда
Продолжить;
КонецЕсли;
Фильтр.ОбъектОшибки = Строка.Данные;
Фильтр.Ссылка = Строка.Ссылка;
Фильтр.ОбъектОшибки = СтрокаТаблицы.Данные;
Фильтр.Ссылка = СтрокаТаблицы.Ссылка;
Если Результат.Ошибки.НайтиСтроки(Фильтр).Количество() > 0 Тогда
Продолжить; // По данной проблеме уже записана ошибка.
КонецЕсли;
ЗарегистрироватьОшибкуЗамены(Результат, Строка.Ссылка,
ОписаниеОшибкиЗамены("ДанныеИзменены", Строка.Данные, ПредметСтрокой(Строка.Данные),
ЗарегистрироватьОшибкуЗамены(Результат, СтрокаТаблицы.Ссылка,
ОписаниеОшибкиЗамены("ДанныеИзменены", СтрокаТаблицы.Данные, ПредметСтрокой(СтрокаТаблицы.Данные),
НСтр("ru = 'Заменены не все места использования. Возможно места использования были добавлены или изменены другим пользователем.'")));
КонецЦикла;
@@ -8342,15 +8349,15 @@
Модифицировано = Ложь;
ИменаИзмененныхРеквизитов = Новый Массив;
Для Каждого Строка Из ИзмененнаяКоллекция Цикл
Для Каждого СтрокаТаблицы Из ИзмененнаяКоллекция Цикл
Для Каждого КлючЗначение Из СписокПолей Цикл
ИмяРеквизита = КлючЗначение.Ключ;
ЦелеваяСсылка = ПарыЗамен[ Строка[ИмяРеквизита] ];
ЦелеваяСсылка = ПарыЗамен[ СтрокаТаблицы[ИмяРеквизита] ];
Если ЦелеваяСсылка <> Неопределено Тогда
ЗарегистрироватьФактЗамены(Объект, Строка[ИмяРеквизита], ЦелеваяСсылка, ВидКоллекции, ИмяКоллекции,
ИзмененнаяКоллекция.Индекс(Строка), ИмяРеквизита);
Строка[ИмяРеквизита] = ЦелеваяСсылка;
ЗарегистрироватьФактЗамены(Объект, СтрокаТаблицы[ИмяРеквизита], ЦелеваяСсылка, ВидКоллекции, ИмяКоллекции,
ИзмененнаяКоллекция.Индекс(СтрокаТаблицы), ИмяРеквизита);
СтрокаТаблицы[ИмяРеквизита] = ЦелеваяСсылка;
Модифицировано = Истина;
ИменаИзмененныхРеквизитов.Добавить(ИмяРеквизита);
КонецЕсли;
@@ -1796,9 +1796,9 @@
СписокАдресов = СтрСоединить(СтрРазделить(СписокАдресов, СимволыСкобок + " ", Ложь), " ");
СписокАдресов = СтрЗаменить(СписокАдресов, ">", ">;");
Для Каждого Строка Из СтрРазделить(СписокАдресов, ";", Ложь) Цикл
Для Каждого АдресЭлектроннойПочты Из СтрРазделить(СписокАдресов, ";", Ложь) Цикл
ЧастиПредставления = Новый Массив;
Для Каждого АдресСПредставлением Из СтрРазделить(СокрЛП(Строка), ",", Ложь) Цикл
Для Каждого АдресСПредставлением Из СтрРазделить(СокрЛП(АдресЭлектроннойПочты), ",", Ложь) Цикл
Если Не ЗначениеЗаполнено(АдресСПредставлением) Тогда
ЧастиПредставления.Добавить(АдресСПредставлением);
Продолжить;
@@ -581,46 +581,45 @@
//
Процедура СократитьИмяФайла(ИмяФайла) Экспорт
ОграничениеВБайтах = 255;
Если РазмерСтрокиВБайтах(ИмяФайла) <= ОграничениеВБайтах Тогда
ОграничениеВБайтах = 127;
Файл = Новый Файл(ИмяФайла);
Если РазмерСтрокиВБайтах(Файл.Имя) <= ОграничениеВБайтах Тогда
Возврат;
КонецЕсли;
Файл = Новый Файл(ИмяФайла);
ИмяБезРасширения = Файл.ИмяБезРасширения;
Строка = "";
ОстатокСтроки = "";
РазмерСтроки = 0;
МаксимальныйРазмерСтроки = ОграничениеВБайтах - 32;
ОграничениеВБайтах = ОграничениеВБайтах - РазмерСтрокиВБайтах(Файл.Расширение);
РазмерРасширения = РазмерСтрокиВБайтах(Файл.Расширение);
СокращатьВместеСРасширением = РазмерРасширения > 32;
ДлинаСтроки = СтрДлина(ИмяБезРасширения);
ИспользуемоеКоличествоСимволов = ОграничениеВБайтах - 32;
БольшееКоличествоСимволов = Мин(ДлинаСтроки, ОграничениеВБайтах);
МеньшееКоличествоСимволов = Цел((ОграничениеВБайтах - 32)/4);
Уменьшить = Истина;
Пока Истина Цикл
Если Уменьшить Тогда
ИспользуемоеКоличествоСимволов = МеньшееКоличествоСимволов + Цел((ИспользуемоеКоличествоСимволов-МеньшееКоличествоСимволов)/2);
Если СокращатьВместеСРасширением Тогда
СокращаемоеИмя = Файл.Имя;
Иначе
ИспользуемоеКоличествоСимволов = ИспользуемоеКоличествоСимволов + Цел((БольшееКоличествоСимволов - ИспользуемоеКоличествоСимволов)/2);
СокращаемоеИмя = Файл.ИмяБезРасширения;
РазмерСтроки = РазмерРасширения;
КонецЕсли;
РазмерСтрокиВБайтах = РазмерСтрокиВБайтах(ИмяБезРасширения)+32;
Для НомерСимвола = 1 По СтрДлина(СокращаемоеИмя) Цикл
Символ = Сред(СокращаемоеИмя, НомерСимвола, 1);
РазмерСимвола = РазмерСтрокиВБайтах(Символ);
Если РазмерСтрокиВБайтах = ОграничениеВБайтах Или БольшееКоличествоСимволов - МеньшееКоличествоСимволов = 1 Тогда
Если РазмерСтроки + РазмерСимвола > МаксимальныйРазмерСтроки Тогда
ОстатокСтроки = Сред(СокращаемоеИмя, НомерСимвола);
Прервать;
КонецЕсли;
Если РазмерСтрокиВБайтах > ОграничениеВБайтах Тогда
Уменьшить = Истина;
БольшееКоличествоСимволов = ИспользуемоеКоличествоСимволов;
Иначе
Уменьшить = Ложь;
МеньшееКоличествоСимволов = ИспользуемоеКоличествоСимволов;
КонецЕсли;
Строка = Строка + Символ;
РазмерСтроки = РазмерСтроки + РазмерСимвола;
КонецЦикла;
СокращеннаяСтрока = СократитьСтроку(ИмяБезРасширения, ИспользуемоеКоличествоСимволов);
ИмяФайла = СокращеннаяСтрока + Файл.Расширение;
ИмяФайла = Строка;
ХешСумма = ВычислитьХешСтрокиПоАлгоритмуMD5(ОстатокСтроки);
ИмяФайла = Файл.Путь + ИмяФайла + ХешСумма + ?(СокращатьВместеСРасширением, "", Файл.Расширение);
КонецПроцедуры
@@ -1767,12 +1766,6 @@
КонецФункции
Функция СократитьСтроку(Строка, ИспользуемоеКоличествоСимволов)
Результат = Лев(Строка, ИспользуемоеКоличествоСимволов);
Результат = Результат + ВычислитьХешСтрокиПоАлгоритмуMD5(Сред(Строка, ИспользуемоеКоличествоСимволов+1));
Возврат Результат;
КонецФункции
Функция РазмерСтрокиВБайтах(Знач Строка)
Возврат ПолучитьДвоичныеДанныеИзСтроки(Строка, "UTF-8").Размер();
@@ -252,7 +252,7 @@
Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.АдресОписанияУслугиВИнтернете = "http://sms4b.ru";
Настройки.АдресОписанияУслугиВИнтернете = "https://sms4b.ru";
КонецПроцедуры
@@ -261,7 +261,7 @@
Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.АдресОписанияУслугиВИнтернете = "http://sms.ru";
Настройки.АдресОписанияУслугиВИнтернете = "https://sms.ru";
КонецПроцедуры
@@ -180,18 +180,18 @@
НастройкиОтправкиSMS = ОтправкаSMS.НастройкиОтправкиSMS();
УстановитьПривилегированныйРежим(Истина);
Протокол = "http";
Протокол = "https";
Сервер = "beeline.amega-inform.ru";
АдресРесурса = "/sendsms/";
ЗащищенноеСоединение = Неопределено;
Если НастройкиОтправкиSMS.Свойство("СпособАвторизации") И НастройкиОтправкиSMS.СпособАвторизации = "ПоЛогинуИПаролюA2P" Тогда
Протокол = "https";
Сервер = "a2p-sms-https.beeline.ru";
АдресРесурса = "/public/http/";
ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
КонецЕсли;
ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
HTTPЗапрос = ОтправкаSMS.ПодготовитьHTTPЗапрос(АдресРесурса, ПараметрыЗапроса);
HTTPОтвет = Неопределено;
@@ -278,7 +278,7 @@
Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.АдресОписанияУслугиВИнтернете = "http://sms-uslugi.ru";
Настройки.АдресОписанияУслугиВИнтернете = "https://sms-uslugi.ru";
КонецПроцедуры
@@ -592,6 +592,81 @@
Возврат ОписаниеИндекса.ПривестиЗначение(ИндексЭлемента);
КонецФункции
Функция ТипНастройкиСтрокой(Тип) Экспорт
Если Тип = Тип("НастройкиКомпоновкиДанных") Тогда
Возврат "Настройки";
ИначеЕсли Тип = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
Возврат "НастройкиВложенногоОбъекта";
ИначеЕсли Тип = Тип("ОтборКомпоновкиДанных") Тогда
Возврат "Отбор";
ИначеЕсли Тип = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат "ЭлементОтбора";
ИначеЕсли Тип = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
Возврат "ГруппаЭлементовОтбора";
ИначеЕсли Тип = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
Возврат "ЗначениеПараметраНастроек";
ИначеЕсли Тип = Тип("ГруппировкаКомпоновкиДанных") Тогда
Возврат "Группировка";
ИначеЕсли Тип = Тип("ПоляГруппировкиКомпоновкиДанных") Тогда
Возврат "ПоляГруппировки";
ИначеЕсли Тип = Тип("КоллекцияПолейГруппировкиКомпоновкиДанных") Тогда
Возврат "КоллекцияПолейГруппировки";
ИначеЕсли Тип = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
Возврат "ПолеГруппировки";
ИначеЕсли Тип = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Возврат "АвтоПолеГруппировки";
ИначеЕсли Тип = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
Возврат "ВыбранныеПоля";
ИначеЕсли Тип = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
Возврат "ВыбранноеПоле";
ИначеЕсли Тип = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
Возврат "ГруппаВыбранныхПолей";
ИначеЕсли Тип = Тип("АвтоВыбранноеПолеКомпоновкиДанных") Тогда
Возврат "АвтоВыбранноеПоле";
ИначеЕсли Тип = Тип("ПорядокКомпоновкиДанных") Тогда
Возврат "Порядок";
ИначеЕсли Тип = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
Возврат "ЭлементПорядка";
ИначеЕсли Тип = Тип("АвтоЭлементПорядкаКомпоновкиДанных") Тогда
Возврат "АвтоЭлементПорядка";
ИначеЕсли Тип = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
Возврат "УсловноеОформление";
ИначеЕсли Тип = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
Возврат "ЭлементУсловногоОформления";
ИначеЕсли Тип = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
Возврат "СтруктураНастроек";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыНастроек";
ИначеЕсли Тип = Тип("ТаблицаКомпоновкиДанных") Тогда
Возврат "Таблица";
ИначеЕсли Тип = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
Возврат "ГруппировкаТаблицы";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыТаблицы";
ИначеЕсли Тип = Тип("ДиаграммаКомпоновкиДанных") Тогда
Возврат "Диаграмма";
ИначеЕсли Тип = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
Возврат "ГруппировкаДиаграммы";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыДиаграммы";
ИначеЕсли Тип = Тип("ЗначенияПараметровДанныхКомпоновкиДанных") Тогда
Возврат "ЗначенияПараметровДанных";
Иначе
Возврат "";
КонецЕсли;
КонецФункции
#Область УстаревшиеПроцедурыИФункции
// Устарела. Следует использовать ОбщегоНазначенияКлиентСервер.ДополнитьСписок.
@@ -1293,81 +1368,6 @@
////////////////////////////////////////////////////////////////////////////////
// Прочее
Функция ТипНастройкиСтрокой(Тип) Экспорт
Если Тип = Тип("НастройкиКомпоновкиДанных") Тогда
Возврат "Настройки";
ИначеЕсли Тип = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
Возврат "НастройкиВложенногоОбъекта";
ИначеЕсли Тип = Тип("ОтборКомпоновкиДанных") Тогда
Возврат "Отбор";
ИначеЕсли Тип = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат "ЭлементОтбора";
ИначеЕсли Тип = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
Возврат "ГруппаЭлементовОтбора";
ИначеЕсли Тип = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
Возврат "ЗначениеПараметраНастроек";
ИначеЕсли Тип = Тип("ГруппировкаКомпоновкиДанных") Тогда
Возврат "Группировка";
ИначеЕсли Тип = Тип("ПоляГруппировкиКомпоновкиДанных") Тогда
Возврат "ПоляГруппировки";
ИначеЕсли Тип = Тип("КоллекцияПолейГруппировкиКомпоновкиДанных") Тогда
Возврат "КоллекцияПолейГруппировки";
ИначеЕсли Тип = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
Возврат "ПолеГруппировки";
ИначеЕсли Тип = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Возврат "АвтоПолеГруппировки";
ИначеЕсли Тип = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
Возврат "ВыбранныеПоля";
ИначеЕсли Тип = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
Возврат "ВыбранноеПоле";
ИначеЕсли Тип = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
Возврат "ГруппаВыбранныхПолей";
ИначеЕсли Тип = Тип("АвтоВыбранноеПолеКомпоновкиДанных") Тогда
Возврат "АвтоВыбранноеПоле";
ИначеЕсли Тип = Тип("ПорядокКомпоновкиДанных") Тогда
Возврат "Порядок";
ИначеЕсли Тип = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
Возврат "ЭлементПорядка";
ИначеЕсли Тип = Тип("АвтоЭлементПорядкаКомпоновкиДанных") Тогда
Возврат "АвтоЭлементПорядка";
ИначеЕсли Тип = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
Возврат "УсловноеОформление";
ИначеЕсли Тип = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
Возврат "ЭлементУсловногоОформления";
ИначеЕсли Тип = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
Возврат "СтруктураНастроек";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыНастроек";
ИначеЕсли Тип = Тип("ТаблицаКомпоновкиДанных") Тогда
Возврат "Таблица";
ИначеЕсли Тип = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
Возврат "ГруппировкаТаблицы";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыТаблицы";
ИначеЕсли Тип = Тип("ДиаграммаКомпоновкиДанных") Тогда
Возврат "Диаграмма";
ИначеЕсли Тип = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
Возврат "ГруппировкаДиаграммы";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыДиаграммы";
ИначеЕсли Тип = Тип("ЗначенияПараметровДанныхКомпоновкиДанных") Тогда
Возврат "ЗначенияПараметровДанных";
Иначе
Возврат "";
КонецЕсли;
КонецФункции
Функция СкопироватьРекурсивно(Знач Узел, Знач ЧтоКопировать, Знач КудаВставить, Знач Индекс, Соответствие = Неопределено, БезСтруктуры = Ложь) Экспорт
Если Соответствие = Неопределено Тогда
Соответствие = Новый Соответствие;
@@ -2010,6 +2010,11 @@
КонецФункции
Функция ИмяКомандыВставитьИзБуфера() Экспорт
Возврат "ВставитьИзБуфераОбмена";
КонецФункции
Функция ПараметрыОбновленияФормыОтчета(Знач ИмяСобытия = "") Экспорт
@@ -1124,7 +1124,7 @@
Свойства.Значение = ЭлементНастройки.ПравоеЗначение;
КонецЕсли;
Свойства.Тип = ТипНастройкиСтрокой(ТипЭлементаНастройки);
Свойства.Тип = ОтчетыКлиентСервер.ТипНастройкиСтрокой(ТипЭлементаНастройки);
Если ОписаниеНастройки = Неопределено Тогда
Возврат Свойства;
@@ -3140,7 +3140,8 @@
ЗаголовокКоманды = НСтр("ru = 'Подбор'");
ДобавитьКомандуСписка(Форма, ГруппаЗаголовка, ИмяКоманды, ЗаголовокКоманды, "Подключаемый_Список_Подбор");
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла") Тогда
Если ТипЗнч(ЭлементНастройки.ТипЗначения) <> Тип("ОписаниеТипов")
Или Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла") Тогда
Возврат;
КонецЕсли;
@@ -3154,7 +3155,7 @@
Если ЕстьСсылочныйТип Тогда
ИмяКоманды = ИмяСписка + "ВставитьИзБуфера";
ИмяКоманды = ИмяСписка + ОтчетыКлиентСервер.ИмяКомандыВставитьИзБуфера();
ЗаголовокКоманды = НСтр("ru = 'Вставить из буфера обмена...'");
ДобавитьКомандуСписка(Форма, ГруппаЗаголовка, ИмяКоманды, ЗаголовокКоманды,
"Подключаемый_Список_ВставитьИзБуфера", БиблиотекаКартинок.ВставитьИзБуфераОбмена);
@@ -3684,81 +3685,6 @@
Возврат Результат;
КонецФункции
Функция ТипНастройкиСтрокой(Тип)
Если Тип = Тип("НастройкиКомпоновкиДанных") Тогда
Возврат "Настройки";
ИначеЕсли Тип = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
Возврат "НастройкиВложенногоОбъекта";
ИначеЕсли Тип = Тип("ОтборКомпоновкиДанных") Тогда
Возврат "Отбор";
ИначеЕсли Тип = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат "ЭлементОтбора";
ИначеЕсли Тип = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
Возврат "ГруппаЭлементовОтбора";
ИначеЕсли Тип = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
Возврат "ЗначениеПараметраНастроек";
ИначеЕсли Тип = Тип("ГруппировкаКомпоновкиДанных") Тогда
Возврат "Группировка";
ИначеЕсли Тип = Тип("ПоляГруппировкиКомпоновкиДанных") Тогда
Возврат "ПоляГруппировки";
ИначеЕсли Тип = Тип("КоллекцияПолейГруппировкиКомпоновкиДанных") Тогда
Возврат "КоллекцияПолейГруппировки";
ИначеЕсли Тип = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
Возврат "ПолеГруппировки";
ИначеЕсли Тип = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Возврат "АвтоПолеГруппировки";
ИначеЕсли Тип = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
Возврат "ВыбранныеПоля";
ИначеЕсли Тип = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
Возврат "ВыбранноеПоле";
ИначеЕсли Тип = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
Возврат "ГруппаВыбранныхПолей";
ИначеЕсли Тип = Тип("АвтоВыбранноеПолеКомпоновкиДанных") Тогда
Возврат "АвтоВыбранноеПоле";
ИначеЕсли Тип = Тип("ПорядокКомпоновкиДанных") Тогда
Возврат "Порядок";
ИначеЕсли Тип = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
Возврат "ЭлементПорядка";
ИначеЕсли Тип = Тип("АвтоЭлементПорядкаКомпоновкиДанных") Тогда
Возврат "АвтоЭлементПорядка";
ИначеЕсли Тип = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
Возврат "УсловноеОформление";
ИначеЕсли Тип = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
Возврат "ЭлементУсловногоОформления";
ИначеЕсли Тип = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
Возврат "СтруктураНастроек";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыНастроек";
ИначеЕсли Тип = Тип("ТаблицаКомпоновкиДанных") Тогда
Возврат "Таблица";
ИначеЕсли Тип = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
Возврат "ГруппировкаТаблицы";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыТаблицы";
ИначеЕсли Тип = Тип("ДиаграммаКомпоновкиДанных") Тогда
Возврат "Диаграмма";
ИначеЕсли Тип = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
Возврат "ГруппировкаДиаграммы";
ИначеЕсли Тип = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
Возврат "КоллекцияЭлементовСтруктурыДиаграммы";
ИначеЕсли Тип = Тип("ЗначенияПараметровДанныхКомпоновкиДанных") Тогда
Возврат "ЗначенияПараметровДанных";
Иначе
Возврат "";
КонецЕсли;
КонецФункции
Функция ЗначениеВМассив(Значение) Экспорт
Если ТипЗнч(Значение) = Тип("Массив") Тогда
Возврат Значение;
@@ -60,7 +60,6 @@
ПараметрыПоискаДублей.КомпоновщикПредварительногоОтбора.Инициализировать(
Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновки));
// Вызов прикладного кода
ОбработкаПоиска = Обработки.ПоискИУдалениеДублей.Создать();
ИспользоватьПрикладныеПравила = ОбработкаПоиска.ЕстьПрикладныеПравилаОбластиПоискаДублей(ОбластьПоиска);
@@ -75,13 +74,12 @@
ГруппыДублей = ОбработкаПоиска.ГруппыДублей(ПараметрыПоискаДублей, ЭталонныйОбъект);
Результат = ГруппыДублей.ТаблицаДублей;
// Там ровно одна группа, возвращаем нужные элементы.
Для Каждого Строка Из Результат.НайтиСтроки(Новый Структура("Родитель", Неопределено)) Цикл
Результат.Удалить(Строка);
Для Каждого Элемент Из Результат.НайтиСтроки(Новый Структура("Родитель", Неопределено)) Цикл
Результат.Удалить(Элемент);
КонецЦикла;
ПустаяСсылка = МенеджерОбластиПоиска.ПустаяСсылка();
Для Каждого Строка Из Результат.НайтиСтроки(Новый Структура("Ссылка", ПустаяСсылка)) Цикл
Результат.Удалить(Строка);
Для Каждого Элемент Из Результат.НайтиСтроки(Новый Структура("Ссылка", ПустаяСсылка)) Цикл
Результат.Удалить(Элемент);
КонецЦикла;
Возврат Результат;
@@ -243,8 +243,7 @@
#КонецОбласти
// Устанавливает значение константы ИспользоватьПолнотекстовыйПоиск.
// Используется для синхронизации значения
// функциональной опции "ИспользоватьПолнотекстовыйПоиск"
// Используется для синхронизации значения функциональной опции "ИспользоватьПолнотекстовыйПоиск"
// с "ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска()".
//
Процедура ИнициализироватьФункциональнуюОпциюПолнотекстовыйПоиск() Экспорт
@@ -589,8 +588,6 @@
КонецПроцедуры
// Создает запись в журнале регистрации и сообщениях пользователю;
//
// Параметры:
// УровеньЖурнала - УровеньЖурналаРегистрации - важность сообщения для администратора.
// КомментарийСПараметрами - Строка - комментарий, который может содержать параметры %1.
@@ -598,13 +595,9 @@
// - Строка - информация об ошибке, которая будет размещена после комментария.
// Параметр - Строка - для подстановки в КомментарийСПараметрами вместо %1.
//
Процедура ЗаписьЖурнала(
УровеньЖурнала,
КомментарийСПараметрами,
ИнформацияОбОшибке = Неопределено,
Параметр = Неопределено)
Процедура ЗаписьЖурнала(УровеньЖурнала, КомментарийСПараметрами, ИнформацияОбОшибке = Неопределено,
Параметр = Неопределено) Экспорт
// Определение уровня журнала регистрации на основе типа переданного сообщения об ошибке.
Если ТипЗнч(УровеньЖурнала) <> Тип("УровеньЖурналаРегистрации") Тогда
Если ТипЗнч(ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда
УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка;
@@ -615,7 +608,6 @@
КонецЕсли;
КонецЕсли;
// Комментарий для журнала регистрации.
ТекстДляЖурнала = КомментарийСПараметрами;
Если Параметр <> Неопределено Тогда
ТекстДляЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстДляЖурнала, Параметр);
@@ -627,11 +619,8 @@
КонецЕсли;
ТекстДляЖурнала = СокрЛП(ТекстДляЖурнала);
// Запись в журнал регистрации.
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Полнотекстовое индексирование'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурнала, , ,
ТекстДляЖурнала);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Полнотекстовое индексирование'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурнала, , , ТекстДляЖурнала);
КонецПроцедуры
@@ -538,29 +538,29 @@
УстановитьПривилегированныйРежим(Истина);
Если ИдентификаторСтроки = Неопределено Тогда
МассивСтрок = Неопределено;
СтрокиТаблицы = Неопределено;
ИначеЕсли ТипЗнч(ИдентификаторСтроки) = Тип("Массив") Тогда
МассивСтрок = Новый Массив;
СтрокиТаблицы = Новый Массив;
Для каждого Идентификатор Из ИдентификаторСтроки Цикл
МассивСтрок.Добавить(ТаблицаИлиДерево.НайтиПоИдентификатору(Идентификатор));
СтрокиТаблицы.Добавить(ТаблицаИлиДерево.НайтиПоИдентификатору(Идентификатор));
КонецЦикла;
Иначе
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(ТаблицаИлиДерево.НайтиПоИдентификатору(ИдентификаторСтроки));
СтрокиТаблицы = Новый Массив;
СтрокиТаблицы.Добавить(ТаблицаИлиДерево.НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЕсли;
Если ТипЗнч(ТаблицаИлиДерево) = Тип("ДанныеФормыДерево") Тогда
Если МассивСтрок = Неопределено Тогда
МассивСтрок = ТаблицаИлиДерево.ПолучитьЭлементы();
Если СтрокиТаблицы = Неопределено Тогда
СтрокиТаблицы = ТаблицаИлиДерево.ПолучитьЭлементы();
КонецЕсли;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить(ИмяПоляПользователь,
Метаданные.РегистрыСведений.СоставыГруппПользователей.Измерения.ГруппаПользователей.Тип);
Для Каждого Строка Из МассивСтрок Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = Строка[ИмяПоляПользователь];
Для Каждого СтрокаТаблицы Из СтрокиТаблицы Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = СтрокаТаблицы[ИмяПоляПользователь];
Если ОбработатьИерархиюВторогоИТретьегоУровней Тогда
Для каждого Строка2 Из Строка.ПолучитьЭлементы() Цикл
Для каждого Строка2 Из СтрокаТаблицы.ПолучитьЭлементы() Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = Строка2[ИмяПоляПользователь];
Для каждого Строка3 Из Строка2.ПолучитьЭлементы() Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = Строка3[ИмяПоляПользователь];
@@ -569,28 +569,28 @@
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипЗнч(ТаблицаИлиДерево) = Тип("ДанныеФормыКоллекция") Тогда
Если МассивСтрок = Неопределено Тогда
МассивСтрок = ТаблицаИлиДерево;
Если СтрокиТаблицы = Неопределено Тогда
СтрокиТаблицы = ТаблицаИлиДерево;
КонецЕсли;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить(ИмяПоляПользователь,
Метаданные.РегистрыСведений.СоставыГруппПользователей.Измерения.ГруппаПользователей.Тип);
Для Каждого Строка Из МассивСтрок Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = Строка[ИмяПоляПользователь];
Для Каждого СтрокаТаблицы Из СтрокиТаблицы Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = СтрокаТаблицы[ИмяПоляПользователь];
КонецЦикла;
ИначеЕсли ТипЗнч(ТаблицаИлиДерево) = Тип("Массив") Тогда
МассивСтрок = ТаблицаИлиДерево;
СтрокиТаблицы = ТаблицаИлиДерево;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить(ИмяПоляПользователь,
Метаданные.РегистрыСведений.СоставыГруппПользователей.Измерения.ГруппаПользователей.Тип);
Для Каждого Строка Из ТаблицаИлиДерево Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = Строка[ИмяПоляПользователь];
Для Каждого СтрокаТаблицы Из ТаблицаИлиДерево Цикл
ТаблицаПользователей.Добавить()[ИмяПоляПользователь] = СтрокаТаблицы[ИмяПоляПользователь];
КонецЦикла;
Иначе
Если МассивСтрок = Неопределено Тогда
МассивСтрок = ТаблицаИлиДерево;
Если СтрокиТаблицы = Неопределено Тогда
СтрокиТаблицы = ТаблицаИлиДерево;
КонецЕсли;
ТаблицаПользователей = ТаблицаИлиДерево.Выгрузить(МассивСтрок, ИмяПоляПользователь);
ТаблицаПользователей = ТаблицаИлиДерево.Выгрузить(СтрокиТаблицы, ИмяПоляПользователь);
КонецЕсли;
Запрос = Новый Запрос;
@@ -635,11 +635,11 @@
Запрос.УстановитьПараметр("Пользователи", ТаблицаПользователей);
НомераКартинок = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из МассивСтрок Цикл
НайденнаяСтрока = НомераКартинок.Найти(Строка[ИмяПоляПользователь], "Пользователь");
Строка[ИмяПоляНомераКартинки] = ?(НайденнаяСтрока = Неопределено, -2, НайденнаяСтрока.НомерКартинки);
Для Каждого СтрокаТаблицы Из СтрокиТаблицы Цикл
НайденнаяСтрока = НомераКартинок.Найти(СтрокаТаблицы[ИмяПоляПользователь], "Пользователь");
СтрокаТаблицы[ИмяПоляНомераКартинки] = ?(НайденнаяСтрока = Неопределено, -2, НайденнаяСтрока.НомерКартинки);
Если ОбработатьИерархиюВторогоИТретьегоУровней Тогда
Для каждого Строка2 Из Строка.ПолучитьЭлементы() Цикл
Для каждого Строка2 Из СтрокаТаблицы.ПолучитьЭлементы() Цикл
НайденнаяСтрока = НомераКартинок.Найти(Строка2[ИмяПоляПользователь], "Пользователь");
Строка2[ИмяПоляНомераКартинки] = ?(НайденнаяСтрока = Неопределено, -2, НайденнаяСтрока.НомерКартинки);
Для каждого Строка3 Из Строка2.ПолучитьЭлементы() Цикл
@@ -1798,14 +1798,14 @@
| НеоднозначныеИдентификаторы.НеоднозначныйИдентификатор,
| НеоднозначныеИдентификаторы.Пользователь";
Выгрузка = Запрос.Выполнить().Выгрузить();
Результат = Запрос.Выполнить().Выгрузить();
ОписаниеОшибки = "";
ТекущийНеоднозначныйИдентификатор = Неопределено;
Для Каждого Строка Из Выгрузка Цикл
Если Строка.НеоднозначныйИдентификатор <> ТекущийНеоднозначныйИдентификатор Тогда
ТекущийНеоднозначныйИдентификатор = Строка.НеоднозначныйИдентификатор;
Для Каждого СтрокаТаблицы Из Результат Цикл
Если СтрокаТаблицы.НеоднозначныйИдентификатор <> ТекущийНеоднозначныйИдентификатор Тогда
ТекущийНеоднозначныйИдентификатор = СтрокаТаблицы.НеоднозначныйИдентификатор;
Если ТипЗнч(НайденныеИдентификаторы) = Тип("Соответствие") Тогда
ТекущиеПользователи = Новый Массив;
НайденныеИдентификаторы.Вставить(ТекущийНеоднозначныйИдентификатор, ТекущиеПользователи);
@@ -1841,13 +1841,13 @@
КонецЕсли;
Если ТипЗнч(НайденныеИдентификаторы) = Тип("Соответствие") Тогда
ТекущиеПользователи.Добавить(Строка.Пользователь);
ТекущиеПользователи.Добавить(СтрокаТаблицы.Пользователь);
Иначе
ОписаниеОшибки = ОписаниеОшибки + "- "
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '""%1"" %2'"),
Строка.Пользователь,
ПолучитьНавигационнуюСсылку(Строка.Пользователь)) + Символы.ПС;
СтрокаТаблицы.Пользователь,
ПолучитьНавигационнуюСсылку(СтрокаТаблицы.Пользователь)) + Символы.ПС;
КонецЕсли;
КонецЦикла;
@@ -2342,6 +2342,7 @@
Процедура ОбновитьНастройкиРегистрацииСобытийДоступаКДанным() Экспорт
Настройки = НастройкиРегистрацииСобытийДоступаКДанным();
ПользователиСлужебный.СвернутьНастройкиДляОдинаковыхТаблиц(Настройки);
НовоеИспользование = Новый ИспользованиеСобытияЖурналаРегистрации;
НовоеИспользование.Использование = ЗначениеЗаполнено(Настройки);
@@ -1163,6 +1163,56 @@
КонецПроцедуры
// Параметры:
// Настройки - Массив из ОписаниеИспользованияСобытияДоступЖурналаРегистрации
//
Процедура СвернутьНастройкиДляОдинаковыхТаблиц(Настройки) Экспорт
ДобавленныеНастройки = Новый Соответствие;
Результат = Новый Массив;
Для Каждого Настройка Из Настройки Цикл
Описание = ДобавленныеНастройки.Получить(ВРег(Настройка.Объект));
Если Описание = Неопределено Тогда
Описание = Новый Структура("Настройка, ДляПоиска", Настройка);
ДобавленныеНастройки.Вставить(ВРег(Настройка.Объект), Описание);
Результат.Добавить(Настройка);
Продолжить;
КонецЕсли;
Если Описание.ДляПоиска = Неопределено Тогда
ОписаниеДляПоиска = Новый Структура;
ОписаниеДляПоиска.Вставить("ПоляДоступа", Новый Соответствие);
ОписаниеДляПоиска.Вставить("ПоляРегистрации", Новый Соответствие);
Для Каждого ПолеДоступа Из Описание.Настройка.ПоляДоступа Цикл
ОписаниеДляПоиска.ПоляДоступа.Вставить(ВРег(ПолеДоступа), Истина);
КонецЦикла;
Для Каждого ПолеРегистрации Из Описание.Настройка.ПоляРегистрации Цикл
ОписаниеДляПоиска.ПоляРегистрации.Вставить(ВРег(ПолеРегистрации), Истина);
КонецЦикла;
Описание.ДляПоиска = ОписаниеДляПоиска;
Иначе
ОписаниеДляПоиска = Описание.ДляПоиска;
КонецЕсли;
Для Каждого ПолеДоступа Из Настройка.ПоляДоступа Цикл
Если ОписаниеДляПоиска.ПоляДоступа.Получить(ВРег(ПолеДоступа)) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеДляПоиска.ПоляДоступа.Вставить(ВРег(ПолеДоступа), Истина);
Описание.Настройка.ПоляДоступа.Добавить(ПолеДоступа);
КонецЦикла;
Для Каждого ПолеРегистрации Из Настройка.ПоляРегистрации Цикл
Если ОписаниеДляПоиска.ПоляРегистрации.Получить(ВРег(ПолеРегистрации)) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеДляПоиска.ПоляРегистрации.Вставить(ВРег(ПолеРегистрации), Истина);
Описание.Настройка.ПоляРегистрации.Добавить(ПолеРегистрации);
КонецЦикла;
КонецЦикла;
Настройки = Результат;
КонецПроцедуры
// Параметры:
// Настройки - Массив из ОписаниеИспользованияСобытияДоступЖурналаРегистрации
// НенайденныеПоля - Массив - возвращаемое значение, содержащее ненайденные поля.
@@ -5021,6 +5071,41 @@
ОбновитьИерархиюГрупп(ПустаяГруппа, ИзмененияСоставов);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИерархияГруппПользователей.ГруппаПользователей КАК ГруппаПользователей
|ИЗ
| РегистрСведений.ИерархияГруппПользователей КАК ИерархияГруппПользователей
|ГДЕ
| ИерархияГруппПользователей.ГруппаПользователей = НЕОПРЕДЕЛЕНО
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИерархияГруппПользователей.ГруппаПользователей
|ИЗ
| РегистрСведений.ИерархияГруппПользователей КАК ИерархияГруппПользователей
|ГДЕ
| ИерархияГруппПользователей.ГруппаПользователей = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИерархияГруппПользователей.ГруппаПользователей
|ИЗ
| РегистрСведений.ИерархияГруппПользователей КАК ИерархияГруппПользователей
|ГДЕ
| ИерархияГруппПользователей.ГруппаПользователей = ЗНАЧЕНИЕ(Справочник.ГруппыВнешнихПользователей.ПустаяСсылка)";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НаборЗаписей = РегистрыСведений.ИерархияГруппПользователей.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ГруппаПользователей.Установить(Выборка.ГруппаПользователей);
НаборЗаписей.Записать(); // Удаление мусорных записей.
ИзмененияСоставов.ИзмененныеГруппы.Вставить(Выборка.ГруппаПользователей);
КонецЦикла;
КонецПроцедуры
// Обновляет состав пользователей группы ВсеПользователи или ВсеВнешниеПользователи
@@ -5077,18 +5162,67 @@
| &ОтборПользователя
| И (СоставыГруппПользователей.Пользователь ЕСТЬ NULL
| ИЛИ ЕСТЬNULL(СоставыГруппПользователей.Используется, ЛОЖЬ) <> (НЕ Пользователи.ПометкаУдаления
| И НЕ Пользователи.Недействителен))";
| И НЕ Пользователи.Недействителен))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СоставыГруппПользователей.ГруппаПользователей,
| СоставыГруппПользователей.Пользователь,
| NULL,
| СоставыГруппПользователей.Используется
|ИЗ
| РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|ГДЕ
| СоставыГруппПользователей.ГруппаПользователей = НЕОПРЕДЕЛЕНО
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СоставыГруппПользователей.ГруппаПользователей,
| СоставыГруппПользователей.Пользователь,
| NULL,
| СоставыГруппПользователей.Используется
|ИЗ
| РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|ГДЕ
| СоставыГруппПользователей.Пользователь = НЕОПРЕДЕЛЕНО
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СоставыГруппПользователей.ГруппаПользователей,
| СоставыГруппПользователей.Пользователь,
| NULL,
| СоставыГруппПользователей.Используется
|ИЗ
| РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|ГДЕ
| СоставыГруппПользователей.ГруппаПользователей = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СоставыГруппПользователей.ГруппаПользователей,
| СоставыГруппПользователей.Пользователь,
| NULL,
| СоставыГруппПользователей.Используется
|ИЗ
| РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|ГДЕ
| СоставыГруппПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
ДляВнешнихПользователей = Тип("СправочникСсылка.ВнешниеПользователи")
= ТипЗнч(?(ТипЗнч(Пользователь) = Тип("Массив"), Пользователь[0], Пользователь));
Если ДляВнешнихПользователей Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.Пользователи", "Справочник.ВнешниеПользователи");
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"Справочник.Пользователи", "Справочник.ВнешниеПользователи");
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"Справочник.ГруппыПользователей", "Справочник.ГруппыВнешнихПользователей");
ГруппаВсеПользователи = ВнешниеПользователи.ГруппаВсеВнешниеПользователи();
ПолноеИмяСправочника = "Справочник.ВнешниеПользователи";
Иначе
ГруппаВсеПользователи = Пользователи.ГруппаВсеПользователи();
ПолноеИмяСправочника = "Справочник.Пользователи";
КонецЕсли;
Запрос.УстановитьПараметр("ГруппаВсеПользователи", ГруппаВсеПользователи);
@@ -5129,18 +5263,24 @@
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Используется = Null Тогда
ПустойНаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
ПустойНаборЗаписей.Отбор.ГруппаПользователей.Установить(Выборка.ГруппаПользователей);
ПустойНаборЗаписей.Отбор.Пользователь.Установить(Выборка.Пользователь);
ПустойНаборЗаписей.Записать(); // Удаление мусорных записей.
Иначе
НаборЗаписей.Отбор.ГруппаПользователей.Установить(Выборка.ГруппаПользователей);
НаборЗаписей.Отбор.Пользователь.Установить(Выборка.Пользователь);
ЗаполнитьЗначенияСвойств(Запись, Выборка);
НаборЗаписей.Записать(); // Добавление или обновление записей о связях.
КонецЕсли;
ИзмененныеГруппы.Вставить(Выборка.ГруппаПользователей);
УчастникиИзменений.Вставить(Выборка.Пользователь);
Если ДляРегистрации <> Неопределено Тогда
ДобавитьИзменениеСостава(ДляРегистрации, Выборка);
КонецЕсли;
КонецЦикла;
ИзмененныеГруппы.Вставить(ГруппаВсеПользователи);
КонецЕсли;
ЗафиксироватьТранзакцию();
@@ -5191,6 +5331,7 @@
| И (ГруппыДляОбновления2.ГруппаПользователей = &ГруппаПользователей)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав
| ПО (ГруппыПользователейСостав.Ссылка = НижестоящиеГруппы.ГруппаПользователей)
| И (ГруппыПользователейСостав.Пользователь <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
| И (НЕ ГруппыПользователейСостав.Ссылка В
| (ВЫБРАТЬ
| ВЫРАЗИТЬ(НижестоящиеГруппы.ГруппаПользователей КАК Справочник.ГруппыПользователей) КАК ГруппаПользователей
@@ -5228,6 +5369,7 @@
| И (ГруппыДляОбновления2.ГруппаПользователей В (&ГруппаПользователей))
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав
| ПО (ГруппыПользователейСостав.Ссылка = НижестоящиеГруппы.ГруппаПользователей)
| И (ГруппыПользователейСостав.Пользователь <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
| ПО (ГруппыДляОбновления2.Родитель = СоставыГруппПользователей.ГруппаПользователей)
| И (ГруппыПользователейСостав.Пользователь = СоставыГруппПользователей.Пользователь)
|ГДЕ
@@ -5249,6 +5391,7 @@
| И (ГруппыДляОбновления.ГруппаПользователей В (&ГруппаПользователей))
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав
| ПО (ГруппыПользователейСостав.Ссылка = НижестоящиеГруппы.ГруппаПользователей)
| И (ГруппыПользователейСостав.Пользователь <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
| ПО (СоставыГруппПользователей.ГруппаПользователей = ГруппыДляОбновления.Родитель)
| И (СоставыГруппПользователей.Пользователь = ГруппыПользователейСостав.Пользователь)
@@ -5275,6 +5418,7 @@
| И (&ОтборДляГруппВнешнихПользователей2)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав
| ПО (ГруппыПользователейСостав.Ссылка = НижестоящиеГруппы.ГруппаПользователей)
| И (ГруппыПользователейСостав.Пользователь <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
| ПО (ГруппыДляОбновления2.Ссылка = СоставыГруппПользователей.ГруппаПользователей)
| И (ГруппыПользователейСостав.Пользователь = СоставыГруппПользователей.Пользователь)
|ГДЕ
@@ -5297,6 +5441,7 @@
| И (&ОтборДляГруппВнешнихПользователей0)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав
| ПО (ГруппыПользователейСостав.Ссылка = НижестоящиеГруппы.ГруппаПользователей)
| И (ГруппыПользователейСостав.Пользователь <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
| ПО (СоставыГруппПользователей.ГруппаПользователей = ГруппыДляОбновления.Ссылка)
| И (СоставыГруппПользователей.Пользователь = ГруппыПользователейСостав.Пользователь)
@@ -5318,6 +5463,8 @@
Запрос.УстановитьПараметр("ГруппаВсеПользователи", ВнешниеПользователи.ГруппаВсеВнешниеПользователи());
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.ГруппыПользователей",
"Справочник.ГруппыВнешнихПользователей");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.Пользователи",
"Справочник.ВнешниеПользователи");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГруппыПользователейСостав.Пользователь",
"ГруппыПользователейСостав.ВнешнийПользователь");
КонецЕсли;
@@ -5516,6 +5663,10 @@
Блокировка.Заблокировать();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ЗначениеЗаполнено(Выборка.ГруппаПользователей)
Или Не ЗначениеЗаполнено(Выборка.Пользователь) Тогда
Продолжить;
КонецЕсли;
НаборИзОднойЗаписи.Отбор.ГруппаПользователей.Установить(Выборка.ГруппаПользователей);
НаборИзОднойЗаписи.Отбор.Пользователь.Установить(Выборка.Пользователь);
@@ -5643,13 +5794,13 @@
Процедура ЗарегистрироватьИзмененияСоставовГрупп(ИзмененияСоставов)
ДляРегистрации = ИзмененияСоставов.ДляРегистрации;
Если Не ЗначениеЗаполнено(ДляРегистрации) Тогда
ДанныеДляРегистрации = ИзмененияСоставов.ДляРегистрации;
Если Не ЗначениеЗаполнено(ДанныеДляРегистрации) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИзмененияСоставов", ДляРегистрации);
Запрос.УстановитьПараметр("ИзмененияСоставов", ДанныеДляРегистрации);
Запрос.Текст =
"ВЫБРАТЬ
| ИзмененияСоставов.ГруппаПользователей КАК ГруппаПользователей,
@@ -5710,17 +5861,17 @@
ПользователиВГруппах.Индексы.Добавить("Пользователь, ГруппаПользователей");
Отбор = Новый Структура("Пользователь, ГруппаПользователей");
Для Каждого Строка Из ДляРегистрации Цикл
ЗаполнитьЗначенияСвойств(Отбор, Строка);
Для Каждого Элемент Из ДанныеДляРегистрации Цикл
ЗаполнитьЗначенияСвойств(Отбор, Элемент);
ПользовательВГруппе = ЗначениеЗаполнено(ПользователиВГруппах.НайтиСтроки(Отбор));
Свойства = Новый Структура;
Свойства.Вставить("ИдентификаторГруппы",
НРег(Строка.ГруппаПользователей.УникальныйИдентификатор()));
НРег(Элемент.ГруппаПользователей.УникальныйИдентификатор()));
Свойства.Вставить("ИдентификаторПользователя",
НРег(Строка.Пользователь.УникальныйИдентификатор()));
НРег(Элемент.Пользователь.УникальныйИдентификатор()));
Свойства.Вставить("ИзНижестоящейГруппы", Не ПользовательВГруппе);
Свойства.Вставить("Используется", Строка.Используется);
Свойства.Вставить("ВидИзменения", Строка.ВидИзменения);
Свойства.Вставить("Используется", Элемент.Используется);
Свойства.Вставить("ВидИзменения", Элемент.ВидИзменения);
Данные.ИзмененияСоставов.Добавить(Свойства);
КонецЦикла;
@@ -5746,7 +5897,7 @@
Данные.ПредставлениеПользователей.Добавить(Свойства);
КонецЦикла;
Если ТипЗнч(ДляРегистрации[0].Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда
Если ТипЗнч(ДанныеДляРегистрации[0].Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда
ИмяСобытия = ИмяСобытияИзменениеИзменениеУчастниковГруппВнешнихПользователейДляЖурналаРегистрации();
Иначе
ИмяСобытия = ИмяСобытияИзменениеИзменениеУчастниковГруппПользователейДляЖурналаРегистрации();
@@ -7398,9 +7549,9 @@
Таблица22 = Таблица2.Скопировать(, ИмяКолонки);
Таблица22.Свернуть(ИмяКолонки);
Для Каждого Строка Из Таблица22 Цикл
Для Каждого СтрокаТаблицы Из Таблица22 Цикл
НоваяСтрока = Таблица11.Добавить();
НоваяСтрока[ИмяКолонки] = Строка[ИмяКолонки];
НоваяСтрока[ИмяКолонки] = СтрокаТаблицы[ИмяКолонки];
КонецЦикла;
Таблица11.Колонки.Добавить("Признак");
@@ -10759,10 +10910,10 @@
КонецЦикла;
Иначе
ИдентификаторыРолей = Новый Массив;
Для Каждого Строка Из ПрочитанныеРоли Цикл
Если ТипЗнч(Строка.Роль) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных")
Или ТипЗнч(Строка.Роль) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") Тогда
ИдентификаторыРолей.Добавить(Строка.Роль);
Для Каждого ОписаниеРоли Из ПрочитанныеРоли Цикл
Если ТипЗнч(ОписаниеРоли.Роль) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных")
Или ТипЗнч(ОписаниеРоли.Роль) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") Тогда
ИдентификаторыРолей.Добавить(ОписаниеРоли.Роль);
КонецЕсли;
КонецЦикла;
ПрочитанныеРоли = ОбщегоНазначения.ОбъектыМетаданныхПоИдентификаторам(ИдентификаторыРолей, Ложь);
@@ -11053,17 +11204,17 @@
НесуществующиеРоли = Новый СписокЗначений;
// Добавление несуществующих ролей.
Для каждого Строка Из КоллекцияРолей Цикл
Отбор = Новый Структура("ЭтоРоль, Имя", Истина, Строка.Роль);
Для каждого ОписаниеРоли Из КоллекцияРолей Цикл
Отбор = Новый Структура("ЭтоРоль, Имя", Истина, ОписаниеРоли.Роль);
Если ДеревоРолей.Строки.НайтиСтроки(Отбор, Истина).Количество() > 0 Тогда
Продолжить;
КонецЕсли;
Синоним = ВсеРоли.Получить(Строка.Роль);
Синоним = ВсеРоли.Получить(ОписаниеРоли.Роль);
Если Синоним = Неопределено Тогда
НесуществующиеРоли.Добавить(Строка.Роль,
?(Лев(Строка.Роль, 1) = "?", Строка.Роль, "? " + Строка.Роль));
НесуществующиеРоли.Добавить(ОписаниеРоли.Роль,
?(Лев(ОписаниеРоли.Роль, 1) = "?", ОписаниеРоли.Роль, "? " + ОписаниеРоли.Роль));
Иначе
НедоступныеРоли.Добавить(Строка.Роль, Синоним);
НедоступныеРоли.Добавить(ОписаниеРоли.Роль, Синоним);
КонецЕсли;
КонецЦикла;
@@ -11288,11 +11439,11 @@
//
Процедура ДобавитьУдалитьРолиПодсистемы(Параметры, Знач Коллекция, Знач Добавить)
Для каждого Строка Из Коллекция Цикл
Если Строка.ЭтоРоль Тогда
ДобавитьУдалитьРоль(Параметры, Строка.Имя, Добавить);
Для каждого ОписаниеРоли Из Коллекция Цикл
Если ОписаниеРоли.ЭтоРоль Тогда
ДобавитьУдалитьРоль(Параметры, ОписаниеРоли.Имя, Добавить);
Иначе
ДобавитьУдалитьРолиПодсистемы(Параметры, Строка.ПолучитьЭлементы(), Добавить);
ДобавитьУдалитьРолиПодсистемы(Параметры, ОписаниеРоли.ПолучитьЭлементы(), Добавить);
КонецЕсли;
КонецЦикла;
@@ -66,8 +66,8 @@
КонецЕсли;
// Развернуть все.
Для каждого Строка Из Форма.Роли.ПолучитьЭлементы() Цикл
Элементы.Роли.Развернуть(Строка.ПолучитьИдентификатор(), Истина);
Для каждого СтрокаТаблицы Из Форма.Роли.ПолучитьЭлементы() Цикл
Элементы.Роли.Развернуть(СтрокаТаблицы.ПолучитьИдентификатор(), Истина);
КонецЦикла;
КонецПроцедуры
Loaded 100 of 256 files, more files were not shown because too many files have changed in this diff. Show more