3_1_5_163

This commit is contained in:
Компания 1С committed 2021-08-19 15:52:00 +03:00
1 parent 0f840632ce
commit b10548f0af
111 files changed
+2776 -1540

No files matched your search

@@ -1,10 +1,14 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<h3>Параметры прописи валюты</h3>
<p>Для того чтобы в печатных формах правильно указывалось наименование валюты прописью, необходимо задать параметры прописи целой и дробной части валюты. </p>
<p><span style="font-size: 11.199999809265137px;">Для того чтобы в печатных формах правильно указывалось наименование валюты прописью, необходимо задать параметры прописи целой и дробной части валюты.</span></p>
<p><span style="font-size: 11.199999809265137px;">Открывается по ссылке из окна валюты.</span></p>
<ul><li><strong>Целая часть</strong> - укажите параметры склонения целой части валюты: <strong>Род</strong> и соответствующие шаблоны склонения в единственном и множественном числе.
</li><li><strong>Дробная часть</strong> - укажите параметры склонения дробной части валюты: <strong>Род</strong> и соответствующие шаблоны склонения в единственном и множественном числе.
</li><li><strong>Число разрядов дробной части</strong> - в случае если дробная часть в печатных формах отображается числом, то можно установить нужное количество разрядов при выводе печатных форм документов. Например, если установлено количество разрядов 1 знак, то сумма по документу будет отображена, как 150,2 евро, а если 2 знака, то – 150,20 евро.
</li><li><strong>Пример прописи суммы</strong> - число, введенное в поле <strong>Сумма</strong>, будет написано по указанным параметрам прописи валюты. Используйте эту возможность для проверки параметров прописи валюты.</li></ul><p>Параметры прописи валюты заполнены по умолчанию для основных валют: <strong>рубль</strong>, <strong>Евро</strong>, <strong>доллар</strong>. Для остальных валют их необходимо заполнить самостоятельно.</p>
</li>
<li><strong>Дробная часть</strong> - укажите параметры склонения дробной части валюты: <strong>Род</strong> и соответствующие шаблоны склонения в единственном и множественном числе.
</li>
<li><strong>Число разрядов дробной части</strong> - в случае если дробная часть в печатных формах отображается числом, то можно установить нужное количество разрядов при выводе печатных форм документов. Например, если установлено количество разрядов 1 знак, то сумма по документу будет отображена, как 150,2 евро, а если 2 знака, то – 150,20 евро.
</li>
<li><strong>Пример прописи суммы</strong> - число, введенное в поле <strong>Сумма</strong>, будет написано по указанным параметрам прописи валюты. Используйте эту возможность для проверки параметров прописи валюты.</li></ul><p>Параметры прописи валюты заполнены по умолчанию для основных валют: <strong>рубль</strong>, <strong>Евро</strong>, <strong>доллар</strong>. Для остальных валют их необходимо заполнить самостоятельно.</p>
<h3>См. также: </h3>
<ul><li><a href="Catalog.Валюты/Help">Валюты</a>
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
</li>
<li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -45,7 +45,11 @@
<li><strong>EUR*1,025</strong></li></ul></li>
<li>Но если возникает необходимость использовать функции с двумя и более параметрами, то параметры следует разделять запятыми, а дробные части чисел - точками, например:
<ul><li><strong>Окр(EUR*1.025,2)</strong></li></ul></li>
<li>Подробнее о правилах построения подобных выражений см. раздел справки <a href="v8help://dcsui/SKD_Lang">Язык выражений системы компоновки данных</a>.</li></ul><h3>Просмотр курса валюты</h3>
<li>Подробнее о правилах построения подобных выражений см. раздел справки <a href="v8help://dcsui/SKD_Lang">Язык выражений системы компоновки данных</a>.</li></ul><h3 style="font-size: 13.4399995803833px;">Параметры прописи валюты</h3>
<div>
<ul><li>Перейдите по <a href="Catalog.Валюты.Form.ПараметрыПрописиВалюты_en/Help">ссылке</a> и заполните <b>Параметры прописи валюты</b>.</li>
<li>Это необходимо для того, чтобы в печатных документах правильно формировалось наименование валюты прописью.</li></ul></div>
<h3>Просмотр курса валюты</h3>
<ul><li>Для перевода валютных сумм в рубли используется <a href="InformationRegister.КурсыВалют/Help">курс валюты</a>.
</li>
<li>Нажмите <strong>Курсы валют</strong> на панели навигации валюты. Можно установить интервал дат для удобства просмотра курсов.</li></ul><h3>Ввод курса валюты вручную</h3>
+3 -2
View File
@@ -29,9 +29,10 @@
<ul><li>
<div>Нажмите <strong>Создать - Новую</strong>. Также можно нажать клавишу <strong>Ins</strong>.</div>
</li>
<li>Заполните <a href="Catalog.Валюты.Form.ФормаЭлемента/Help">сведения о валюте</a>.</li></ul><h3>Загрузка курсов валют</h3>
<li>Заполните <a href="Catalog.Валюты.Form.ФормаЭлемента/Help">сведения о валюте</a>.</li></ul><div>
<h3>Загрузка курсов валют</h3>
<ul><li>Нажмите <strong>Загрузить курсы валют</strong> для перехода к <a href="DataProcessor.ЗагрузкаКурсовВалют/Help">загрузке курсов валют</a> с портала 1С:ИТС. </li>
<li>Также в программе предусмотрено <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентное задание</a> <strong>Загрузка курсов валют</strong> для автоматической загрузки курсов валют с портала 1С:ИТС.</li>
<li>В приложении в Интернете курсы валют загружаются автоматически.</li></ul><h3>См. также:</h3>
<ul><li>
<div><a href="v8help://frame/form_common">Работа с формами</a></div></li></ul></body></html>
<div><a href="v8help://frame/form_common">Работа с формами</a></div></li></ul></div></body></html>
@@ -597,6 +597,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>58</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>60</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>59</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>61</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>63</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>62</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
@@ -563,6 +563,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>55</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>57</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>56</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>58</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>60</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>59</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
@@ -3483,12 +3483,13 @@
Возврат СвойстваКоллекции.Синоним;
КонецЕсли;
Если ОбъектыРасширений Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Если ОбъектыРасширений Тогда
Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений);
Запрос.Текст =
"ВЫБРАТЬ
"ВЫБРАТЬ ПЕРВЫЕ 1
| ЕСТЬNULL(ИдентификаторыОбъектовВерсийРасширений.ПолноеИмяОбъекта, ИдентификаторыОбъектовРасширений.ПолноеИмя) КАК ПолноеИмя
|ИЗ
| Справочник.ИдентификаторыОбъектовРасширений КАК ИдентификаторыОбъектовРасширений
@@ -3497,27 +3498,29 @@
| И (ИдентификаторыОбъектовВерсийРасширений.ВерсияРасширений = &ВерсияРасширений)
|ГДЕ
| ИдентификаторыОбъектовРасширений.Ссылка = &Ссылка";
Иначе
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИдентификаторыОбъектовМетаданных.ПолноеИмя КАК ПолноеИмя
|ИЗ
| Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных
|ГДЕ
| ИдентификаторыОбъектовМетаданных.Ссылка = &Ссылка";
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ПолноеИмя = Выборка.ПолноеИмя;
Иначе
ПолноеИмя = Неопределено;
КонецЕсли;
Иначе
ПолноеИмя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ПолноеИмя");
КонецЕсли;
Если ПолноеИмя = Неопределено Тогда
Возврат НСтр("ru = 'Объект не существует.'")
Возврат НСтр("ru = 'Объект не существует.'");
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
Если ОбъектМетаданных = Неопределено Тогда
Если СтрНачинаетсяС(ПолноеИмя, "?") Тогда
Возврат "? " + СтрРазделить(ПолноеИмя, " ")[1];
Иначе
Возврат ПолноеИмя;
КонецЕсли;
КонецЕсли;
ПозицияТочки = СтрНайти(ПолноеИмя, ".");
@@ -3530,6 +3533,14 @@
Возврат ПолноеИмя;
КонецЕсли;
ИмяКоллекции = Строки[0].Имя;
ИмяОбъекта = Сред(ПолноеИмя, ПозицияТочки + 1);
ОбъектМетаданных = Метаданные[ИмяКоллекции].Найти(ИмяОбъекта);
Если ОбъектМетаданных = Неопределено Тогда
Возврат ПолноеИмя;
КонецЕсли;
Возврат ПредставлениеОбъектаМетаданных(ОбъектМетаданных, Строки[0]);
КонецФункции
@@ -4,4 +4,5 @@
<p>Включает в себя списки дополнительных реквизитов и сведений, входящих в набор. Списки предназначены только для просмотра, изменить в них ничего невозможно. Для изменения воспользуйтесь командами <strong>Дополнительные реквизиты</strong> или <strong>Дополнительные сведения</strong> в разделах <strong>Администрирование - Общие настройки</strong>.</p>
<h3>См. также:</h3>
<ul><li><a href="Catalog.НаборыДополнительныхРеквизитовИСведений/Help">Наборы дополнительных реквизитов и сведений</a>;
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
</li>
<li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -199,7 +199,12 @@
ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Свойство);
Блокировка.Заблокировать();
СвойствоОбъект = Свойство.ПолучитьОбъект();
Если СвойствоОбъект.НаборСвойств = ОбновляемыйНабор.Ссылка Тогда
СвойствоОбъект.НаборСвойств = НовыйНабор;
КонецЕсли;
Для Каждого Зависимость Из СвойствоОбъект.ЗависимостиДополнительныхРеквизитов Цикл
Если Зависимость.НаборСвойств = ОбновляемыйНабор.Ссылка Тогда
Зависимость.НаборСвойств = НовыйНабор;
@@ -44,7 +44,8 @@
ТолькоПросмотр = Истина;
КонецЕсли;
Если Объект.Ссылка <> Пользователи.АвторизованныйПользователь() Тогда
Если ЗначениеЗаполнено(Объект.Ссылка)
И Объект.Ссылка <> Пользователи.АвторизованныйПользователь() Тогда
Элементы.Отступ.Видимость = Ложь;
Элементы.НадписьНаличиеПароля.Видимость = Ложь;
Элементы.СменитьПароль.Видимость = Ложь;
@@ -389,6 +390,23 @@
Возврат;
КонецЕсли;
Если Не ПараметрыЗаписи.Свойство("СПустымEmail")
И Не ЗначениеЗаполнено(Объект.Ссылка)
И ТребуетсяСинхронизацияССервисом
И СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().РазделениеВключено
И Не ЗаполненEmail() Тогда
Отказ = Истина;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеОтветаНаВопросОПустомEmail", ЭтотОбъект, ПараметрыЗаписи),
НСтр("ru = 'Не заполнен адрес электронной почты. Продолжить?'"),
РежимДиалогаВопрос.ДаНет,
,
,
НСтр("ru = 'Запись нового пользователя сервиса'"));
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -642,9 +660,6 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией");
МодульУправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ);
Если ОбщегоНазначения.РазделениеВключено() Тогда
ПроверитьЗаполнениеEmail(Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -1857,6 +1872,16 @@
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопросОПустомEmail(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ПараметрыЗаписи.Вставить("СПустымEmail");
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиЗавершение(Результат, ПараметрыЗаписи) Экспорт
@@ -1935,24 +1960,17 @@
КонецФункции
&НаСервере
Процедура ПроверитьЗаполнениеEmail(Отказ)
&НаКлиенте
Функция ЗаполненEmail()
ТаблицаКИ = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов;
СтрокаEMail = ТаблицаКИ.НайтиСтроки(Новый Структура("Вид",
ВидКонтактнойИнформацииEmailПользователя()))[0];
Если ЗначениеЗаполнено(ЭтотОбъект[СтрокаEMail.ИмяРеквизита]) Тогда
Возврат;
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Не заполнен адрес электронной почты'"),,
СтрокаEMail.ИмяРеквизита,, Отказ);
КонецПроцедуры
Возврат ЗначениеЗаполнено(ЭтотОбъект[СтрокаEMail.ИмяРеквизита]);
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Поддержка дополнительных реквизитов.
@@ -323,9 +323,13 @@
ОтпечатокСертификата = Новый Структура();
ОтпечатокСертификата.Вставить("Отпечаток", МодульСервисКриптографииDSSКлиентСервер.ТрансформироватьОтпечаток(ТекущиеДанные.Отпечаток));
ПараметрыОперации = Новый Структура("ЭтоЗаявление", ТекущиеДанные.ЭтоЗаявление);
ОповещениеСледующее = Новый ОписаниеОповещения("ОткрытьСертификатОблачнойПодписи", ЭтотОбъект, ПараметрыОперации);
МодульСервисКриптографииDSSКлиент.НайтиСертификат(ОповещениеСледующее, ОтпечатокСертификата);
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ПолучитьДвоичныеДанные", Истина);
ПараметрыЦикла = Новый Структура("ЭтоЗаявление", ТекущиеДанные.ЭтоЗаявление);
ОповещениеСледующее = Новый ОписаниеОповещения("ОткрытьСертификатОблачнойПодписи", ЭтотОбъект, ПараметрыЦикла);
МодульСервисКриптографииDSSКлиент.НайтиСертификат(ОповещениеСледующее, ОтпечатокСертификата, ПараметрыОперации);
Иначе
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.Отпечаток, Не ТекущиеДанные.ЭтоЗаявление);
КонецЕсли;
@@ -762,10 +766,14 @@
МодульСервисКриптографииDSSКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиент");
МодульСервисКриптографииDSSКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиентСервер");
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ПолучитьДвоичныеДанные", Истина);
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Отпечаток", МодульСервисКриптографииDSSКлиентСервер.ТрансформироватьОтпечаток(ТекущиеДанные.Отпечаток));
МодульСервисКриптографииDSSКлиент.НайтиСертификат(Новый ОписаниеОповещения(
"ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачнойПодписи", ЭтотОбъект, Контекст), СтруктураПоиска);
"ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачнойПодписи", ЭтотОбъект, Контекст), СтруктураПоиска, ПараметрыОперации);
ИначеЕсли ТекущиеДанные.ВОблачномСервисе Тогда
СтруктураПоиска = Новый Структура;
@@ -240,11 +240,14 @@
НастройкиПользователя = МодульСервисКриптографииDSSСлужебныйВызовСервера.ПолучитьНастройкиПользователяПоСертификату(ОтпечатокСертификата);
УчетнаяЗапись = НастройкиПользователя.Ссылка;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ПолучитьДвоичныеДанные", Истина);
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Отпечаток", ОтпечатокСертификата);
МодульСервисКриптографииDSSКлиент.НайтиСертификат(Новый ОписаниеОповещения(
"ДалееПослеПоискаСертификатаОблачнаяПодпись", ЭтотОбъект, УчетнаяЗапись), СтруктураПоиска);
"ДалееПослеПоискаСертификатаОблачнаяПодпись", ЭтотОбъект, УчетнаяЗапись), СтруктураПоиска, ПараметрыОперации);
ИначеЕсли ЭлектроннаяПодписьСлужебныйКлиент.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() И ТекущиеДанные.ВОблачномСервисе Тогда
СтруктураПоиска = Новый Структура;
@@ -329,7 +329,7 @@
Иначе
// Обычный пользователь не может изменить права доступа.
Элементы.Добавил.ТолькоПросмотр = Истина;
Если НЕ СертификатДоступен Тогда
Если НЕ ЭтоАвтор Тогда
// Обычный пользователь не может изменять реквизит Пользователь,
// если не он добавил сертификат.
Элементы.Пользователи.ТолькоПросмотр = Истина;
@@ -178,5 +178,8 @@
<li>После выбора типа данных и заполнения поля <strong>Наименование</strong> нажмите кнопку <strong>Записать</strong>. После этого становится доступным для работы список значений. Для ввода значений нажмите <strong>Создать</strong>. Введите необходимые поля.
</li>
<li>Если данные не были записаны перед выполнением команды <strong>Создать</strong>, то программа выдает предупреждение. Для перехода к вводу значений нажмите кнопку <strong>Записать</strong>.</li></ul><h3>Изменение формата дополнительных реквизитов и сведений</h3>
<ul><li>Любые изменения типов значений и формата дополнительных реквизитов и сведений после сохранения невозможны. Для этого придется сначала удалить созданные дополнительные реквизиты и сведения, затем уже заново создать дополнительные реквизиты и сведения с новыми типами значений.</li></ul><h3>См. также:</h3>
<ul><li>Любые изменения типов значений и формата дополнительных реквизитов и сведений после сохранения невозможны. Для этого придется сначала удалить созданные дополнительные реквизиты и сведения, затем уже заново создать дополнительные реквизиты и сведения с новыми типами значений.</li></ul><h3 style="font-size: 13.4399995803833px;">Программная работа со свойствами</h3>
<p></p>
<ul><li>У каждого свойства есть реквизит <b>Имя</b>, которое необходимо для обращения к нему из кода программы с помощью функций <b>ЗначенияСвойств</b>, <b>ЗначениеСвойства</b>, <b>ПредставлениеЗначенияСвойства</b> и <b>ПредставленияЗначенийСвойств</b> общего модуля <b>УправлениеСвойствами</b>. Его значение уникально, задается автоматически и при необходимости может быть изменено разработчиком в карточке свойства.</li></ul><p></p>
<h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -121,12 +121,11 @@
ЗаполнитьПрограммыИНастройки();
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи()
ИЛИ ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS");
Элементы.Программы.КартинкаСтрок = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ТипыСертификатов");
Элементы.Программы.ПутьКДаннымКартинкиСтроки = "Программы.ТипРазмещения";
Элементы.Сертификаты.КартинкаСтрок = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ТипыСертификатов");;
Элементы.Сертификаты.КартинкаСтрок = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ТипыСертификатов");
Элементы.Сертификаты.ПутьКДаннымКартинкиСтроки = "Сертификаты.ТипРазмещения";
КонецЕсли;
@@ -53,4 +53,4 @@
<div>Для того чтобы открыть <a href="Catalog.ВариантыОтчетов.Form.ФормаЭлемента/Help">вариант отчета</a> для изменения наименования, описания или настроек размещения, щелкните на вариант отчета правой кнопкой мыши, выберите команду <img src="StdPicture.Change"></img> <strong>Изменить</strong>.</div></li></ul></li>
<li>
<div>Нажмите <strong>Настройки </strong>(клавишу <strong>F2</strong>), для того чтобы сохранить изменения и перевести панель отчетов в режим просмотра.</div></li></ul><h3>См. также:</h3>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Форма отчета</a>.</li></ul></body></html>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></body></html>
@@ -31,8 +31,7 @@
Фильтр = Параметры.Исправления;
Если ОбщегоНазначения.ЭтоВебКлиент()
Или ОбщегоНазначения.РазделениеВключено()
Если ОбщегоНазначения.РазделениеВключено()
Или ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ()
Или Не ОбщегоНазначения.ЭтоWindowsКлиент() Тогда
Элементы.ФормаУстановитьИсправление.Видимость = Ложь;
@@ -11,7 +11,7 @@
</li>
<li><a href="#4">Оформление</a> - управление оформлением отчета;
</li>
<li><a href="#5">Структура</a> - управление структурой отчета.</li></ul><h3><a name="#1">Отборы</a></h3>
<li><a href="#5">Структура</a> - управление структурой отчета.</li></ul><h3><a name="1">Отборы</a></h3>
<ul><li>При формировании отчетов могут использоваться различные параметры и отборы.
</li>
<li>На вкладке можно менять параметры отборов. С помощью флажка отбор по параметру (например, <strong>Период</strong>) можно сделать активным или отключить.
@@ -54,7 +54,7 @@
<li><strong>Заголовок</strong> - можно ввести свой заголовок для отбора.</li></ul></li>
<li>Отборы можно группировать. Для этого выделите несколько условий для отбора, выполните команду <strong>Сгруппировать отборы</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>. Объединить отборы можно в группы <strong>И</strong>, <strong>Или</strong>, <strong>Не</strong>. Для отмены группировки выполните команду <strong>Разгруппировать</strong>.
</li>
<li>Подробнее об отчетах и операциях отборов см. книгу 1С:Предприятие 8.3 Руководство пользователя.</li></ul><h3><a name="#2">Поля</a> и сортировки</h3>
<li>Подробнее об отчетах и операциях отборов см. книгу 1С:Предприятие 8.3 Руководство пользователя.</li></ul><h3><a name="2">Поля</a> и сортировки</h3>
<ul><li>Вкладка <strong>Поля и сортировки</strong> состоит из двух частей:
<ul><li>В правой части можно с помощью флажков удалить или добавить поля в отчет. Данная настройка меняет вид всего отчета;
</li>
@@ -69,12 +69,12 @@
<li>В расширенном режиме можно:
<ul><li>в правой части с помощью кнопки <strong>Добавить</strong> вывести в отчет другие поля документов и списков программы;
</li>
<li>в левой части с помощью соответствующей кнопки <strong>Добавить</strong> сортировку по полю. Выберите поле для сортировки из предлагаемого программой списка.</li></ul></li></ul><h3><a name="#4">Оформление</a></h3>
<li>в левой части с помощью соответствующей кнопки <strong>Добавить</strong> сортировку по полю. Выберите поле для сортировки из предлагаемого программой списка.</li></ul></li></ul><h3><a name="4">Оформление</a></h3>
<ul><li>На вкладке в простом режиме можно поменять некоторые параметры оформления отчета, например, с помощью флажка включить или выключить <strong>Цвет фона</strong>, в который можно окрасить все поля.
</li>
<li>В расширенном режиме:
</li>
<li>С помощью кнопки <strong>Добавить</strong> можно ввести новый <a href="SettingsStorage.ХранилищеВариантовОтчетов.Form.ЭлементУсловногоОформленияОтчета/Help">Элемент условного оформления отчета</a>. </li></ul><h3><a name="#5">Структура</a></h3>
<li>С помощью кнопки <strong>Добавить</strong> можно ввести новый <a href="SettingsStorage.ХранилищеВариантовОтчетов.Form.ЭлементУсловногоОформленияОтчета/Help">Элемент условного оформления отчета</a>. </li></ul><h3><a name="5">Структура</a></h3>
<ul><li>Изменить параметры на вкладке можно только в <strong>Расширенном</strong> режиме.
</li>
<li>На вкладке можно добавить группируемые поля в отчет. С помощью кнопок панели навигации можно добавить, изменить поля, поменять их местами.
@@ -88,9 +88,15 @@
</li>
<li><strong>Отборы</strong>;
</li>
<li><strong>Оформление</strong>.</li></ul></li></ul><h3>Изменение условий отборов</h3>
<li><strong>Оформление</strong>.</li></ul></li></ul><h3>Добавление формул в окне Выбор поля отчета</h3>
<div>
<ul><li>В настройках в окне <b>Выбор поля отчета</b> (из всех вкладок открывается по кнопке <b>Добавить</b>) имеется возможность работать с формулами. </li>
<li>Нажмите кнопку <b>Добавить формулу</b> для перехода к построению <a href="DataProcessor.КонструкторФормул.Form.РедактированиеФормулы/Help">формулы</a>.</li>
<li>После добавления формулы ее можно редактировать с помощью кнопки <img src="StdPicture.Change"></img>.</li></ul></div>
<div>
<h3>Изменение условий отборов</h3>
<ul><li>
<div>С помощью кнопки <img src="CommonPicture.Отборы"></img> можно <a href="SettingsStorage.ХранилищеВариантовОтчетов.Form.УсловияОтборовОтчета/Help">просмотреть</a> и при необходимости <strong>Изменить условия отборов</strong> по каждому полю. </div></li></ul><h3>Получение данных отчета</h3>
<ul><li>Укажите нужные параметры, нажмите кнопку <strong>Закрыть и сформировать</strong>. Последние настройки будут сохранены автоматически. Если были применены ошибочные настройки, их можно не только изменить, но и сбросить с помощью команд формы отчета. </li></ul><h3 style="font-size: 13.4399995803833px;">Изменение варианта отчета</h3>
<ul><li>Нажмите <strong>Еще - Настройки для технического специалиста</strong>. Можно добавить поля, изменить параметры и настройки отчета. </li>
<li>Внесенные изменения можно сохранить в другой вариант отчета.</li></ul></body></html>
<li>Внесенные изменения можно сохранить в другой вариант отчета.</li></ul></div></body></html>
@@ -23,7 +23,7 @@
<li>Для перехода к другому варианту отчета нажмите на заголовок левой кнопкой мыши.</li>
<li>С помощью соответствующего флажка можно <strong>Закрывать окно после перехода к отчету</strong>.</li></ul></ul></ul><h3>Сохранение варианта отчета</h3>
<ul><li>Нажмите <strong><img src="CommonPicture.ВыбратьВариантОтчета" style="font-weight: normal;"></img> Варианты отчета - Сохранить как</strong>, укажите <strong>Наименование</strong> и другие <a href="SettingsStorage.ХранилищеВариантовОтчетов.Form.СохранениеВариантаОтчета/Help">параметры</a>.</li>
<li>Также можно воспользоваться командой <strong>Сохранить вариант отчета</strong> меню <strong>Еще - Варианты отчета</strong>.</li>
<li>Также можно воспользоваться командой <strong>Сохранить как</strong> меню <strong>Еще - Варианты отчета</strong>.</li>
<li>Для сохранения пользовательских отчетов предусмотрен быстрый вариант - <b>Сохранить</b>.</li></ul><h3>Сохранение варианта отчета в файл</h3>
<div>
<ul><li>Нажмите <b>Еще - Варианты отчета - Сохранить в файл</b> для сохранения варианта отчета вместе с пользовательскими настройками в архивный файл на компьютере. Укажите путь к архивному файлу на компьютере. Вместе с вариантом отчета по умолчанию сохраняются и пользовательские настройки. Можно отменить сохранение всех или некоторых настроек с помощью флажков.</li>
@@ -50,8 +50,7 @@
</li>
<li>Нажмите <strong>Еще - Стандартные настройки</strong>, для того чтобы вернуться к настройкам по умолчанию.
</li>
<li>Нажмите <strong>Еще - Персональные настройки - Сохранить настройки</strong>, для того чтобы записать текущие настройки отчета.
</li>
<li>Нажмите <strong>Еще - Персональные настройки - Сохранить настройки</strong>, для того чтобы записать текущие настройки отчета. Напишите имя настроек для сохранения.</li>
<li>Нажмите <strong>Еще - Персональные настройки - Выбрать настройки</strong>, для того чтобы воспользоваться ранее сохраненными настройками отчета. В списке можно посмотреть также настройки отчета, переданные другими пользователями.</li>
<li>Нажмите <b>Еще - Персональные настройки - Поделиться настройками</b>, для того чтобы передать текущие настройки отчета другим пользователям. Настройки передаются и без предварительного сохранения. В открывшемся списке выберите пользователей или группы пользователей, нажмите <b>Поделиться</b>. Если все в порядке, через некоторое время программа выводит сообщение об успешной передаче настроек.</li></ul><p></p>
<h3 dir="ltr">Печать отчета </h3>
@@ -78,7 +77,7 @@
</li>
<li>
<div><strong>Включить в существующую рассылку отчетов</strong>. Для этого из <a href="Catalog.РассылкиОтчетов/Help">списка рассылок</a> выберите нужную.</div></li></ul><h3>Выбор варианта отчета</h3>
<ul><li>Для загрузки ранее сохраненного варианта отчета воспользуйтесь командой <strong>Еще - Варианты отчета - Выбрать вариант отчета</strong>.
<ul><li>Для загрузки ранее сохраненного варианта отчета воспользуйтесь командой <strong>Еще - Варианты отчета - Выбрать</strong>.
<ul><li>в <a href="SettingsStorage.ХранилищеВариантовОтчетов.Form.ВыборВариантаОтчета/Help">списке вариантов отчета</a> нажмите кнопку <strong>Выбрать</strong> для перехода к нужному варианту отчета.</li></ul></li></ul><h3>Сброс настроек</h3>
<ul><li>Нажмите <strong>Еще - Стандартные настройки</strong>, для того чтобы сбросить пользовательские настройки.</li></ul><h3>Другие доступные действия</h3>
<ul><li>Для <a href="v8help://moxelui/form_finddialog">поиска в отчете</a> воспользуйтесь командой <strong>Найти</strong>.
@@ -1891,6 +1891,7 @@
ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("СтрокаПоиска", Запрос);
ПараметрыПоиска.Вставить("ЧислоПоиска", 0);
ПараметрыПоиска.Вставить("УправляющиеСимволы", "");
ПервыйСимвол = Лев(Запрос, 1);
@@ -1908,6 +1909,13 @@
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоЧисло(ПараметрыПоиска.СтрокаПоиска) Тогда
ОписаниеЧисла = Новый ОписаниеТипов("Число");
ПараметрыПоиска.ЧислоПоиска = ОписаниеЧисла.ПривестиЗначение(ПараметрыПоиска.СтрокаПоиска);
КонецЕсли;
Возврат ПараметрыПоиска;
КонецФункции
@@ -1967,14 +1975,11 @@
ПодходящиеЗначенияДляЧисла = Новый СписокЗначений;
ОписаниеЧисла = Новый ОписаниеТипов("Число");
ЗначениеПоиска = ОписаниеЧисла.ПривестиЗначение(ПараметрыПоиска.СтрокаПоиска);
ДоступныеПоляПоиска = ДоступныеПоляПоискаЧисла(ПоляПоиска, ЗначениеПоиска, ПараметрыПоиска.УправляющиеСимволы);
ДоступныеПоляПоиска = ДоступныеПоляПоискаЧисла(ПоляПоиска, ПараметрыПоиска.ЧислоПоиска, ПараметрыПоиска.УправляющиеСимволы);
Для Каждого ПолеПоиска Из ДоступныеПоляПоиска Цикл
СвойстваПоиска = СвойстваУниверсальногоПоиска(ПолеПоиска.Ключ, ЗначениеПоиска, ПараметрыПоиска.УправляющиеСимволы);
СвойстваПоиска = СвойстваУниверсальногоПоиска(ПолеПоиска.Ключ, ПараметрыПоиска.ЧислоПоиска, ПараметрыПоиска.УправляющиеСимволы);
ПредставлениеПоиска = ПредставлениеЗначенияУниверсальногоПоискаСтроки(
ПолеПоиска.Значение, СвойстваПоиска.ВидСравнения, СвойстваПоиска.ПравоеЗначение);
@@ -2041,7 +2046,7 @@
Продолжить;
КонецЕсли;
ТекстЗапроса = ТекстЗапросаПоОбъектуПоиска(ОбъектМетаданных, ПараметрыПоиска.СтрокаПоиска);
ТекстЗапроса = ТекстЗапросаПоОбъектуПоиска(ОбъектМетаданных, ПараметрыПоиска);
ТекстыЗапросов.Добавить(ТекстЗапроса);
КонецЦикла;
@@ -2136,7 +2141,7 @@
КонецПроцедуры
&НаСервереБезКонтекста
Функция ТекстЗапросаПоОбъектуПоиска(Объект, СтрокаПоиска)
Функция ТекстЗапросаПоОбъектуПоиска(Объект, ПараметрыПоиска)
ШаблонТекстаЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 5
@@ -2152,8 +2157,8 @@
|";
ТекстЗапроса = СтрЗаменить(ШаблонТекстаЗапроса, "&ПолноеИмяОбъекта", Объект.ПолноеИмя());
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолеПоУсловию", ПолеТекстаЗапросаПоОбъектуПоиска(Объект, СтрокаПоиска));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Условие", УсловиеТекстаЗапросаПоОбъектуПоиска(Объект, СтрокаПоиска));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолеПоУсловию", ПолеТекстаЗапросаПоОбъектуПоиска(Объект, ПараметрыПоиска));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Условие", УсловиеТекстаЗапросаПоОбъектуПоиска(Объект, ПараметрыПоиска));
Возврат СтрЗаменить(ТекстЗапроса, "&ДополнительныеДанные", ДополнительныеДанныеТекстаЗапросаПоОбъектуПоиска(Объект));
@@ -2167,17 +2172,23 @@
// Строка
//
&НаСервереБезКонтекста
Функция ПолеТекстаЗапросаПоОбъектуПоиска(Объект, СтрокаПоиска)
Функция ПолеТекстаЗапросаПоОбъектуПоиска(Объект, ПараметрыПоиска)
ОписаниеПоляПоУсловию = Новый Массив;
Поля = Объект.ВводПоСтроке; // СписокПолей
Для Каждого Поле Из Поля Цикл
ТипРеквизита = ТипРеквизитаПоиска(Объект, Поле);
Если Не ТипРеквизита.СодержитТип(Тип("Строка")) Тогда
Продолжить;
КонецЕсли;
ПолеПоУсловию = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'КОГДА %1 ПОДОБНО %2 ТОГДА ""%3""'"),
НСтр("ru = 'КОГДА ВЫРАЗИТЬ(%1 КАК СТРОКА(150)) ПОДОБНО %2 ТОГДА ""%3""'"),
Поле.Имя,
"""%" + СтрокаПоиска + "%""",
"""%" + ПараметрыПоиска.СтрокаПоиска + "%""",
Поле.Имя);
ОписаниеПоляПоУсловию.Добавить(ПолеПоУсловию);
@@ -2204,17 +2215,32 @@
// Строка
//
&НаСервереБезКонтекста
Функция УсловиеТекстаЗапросаПоОбъектуПоиска(Объект, СтрокаПоиска)
Функция УсловиеТекстаЗапросаПоОбъектуПоиска(Объект, ПараметрыПоиска)
Условия = Новый Массив;
Поля = Объект.ВводПоСтроке; // СписокПолей
Для Каждого Поле Из Поля Цикл
ТипРеквизита = ТипРеквизитаПоиска(Объект, Поле);
Если ТипРеквизита.СодержитТип(Тип("Строка")) Тогда
Условие = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 ПОДОБНО %2'"),
НСтр("ru = 'ВЫРАЗИТЬ(%1 КАК СТРОКА(150)) ПОДОБНО %2'"),
Поле.Имя,
"""%" + СтрокаПоиска + "%""");
"""%" + ПараметрыПоиска.СтрокаПоиска + "%""");
ИначеЕсли ТипРеквизита.СодержитТип(Тип("Число")) Тогда
Условие = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'ВЫРАЗИТЬ(%1 КАК ЧИСЛО) = %2'"),
Поле.Имя,
ПараметрыПоиска.ЧислоПоиска);
Иначе
Продолжить;
КонецЕсли;
Условия.Добавить(Условие);
@@ -2251,6 +2277,12 @@
Продолжить;
КонецЕсли;
ТипРеквизита = ТипРеквизитаПоиска(Объект, Поле);
Если Не ТипРеквизита.СодержитТип(Тип("Строка")) Тогда
Продолжить;
КонецЕсли;
Данные = """" + Поле.Имя + ": "" + " + Поле.Имя;
ДополнительныеДанные.Добавить(Данные);
@@ -2264,6 +2296,34 @@
КонецФункции
// Параметры:
// Объект - ОбъектМетаданных
// Поле - Поле
//
// Возвращаемое значение:
// - ОписаниеТипов
//
&НаСервереБезКонтекста
Функция ТипРеквизитаПоиска(Объект, Поле)
Для Каждого ОписаниеРеквизита Из Объект.СтандартныеРеквизиты Цикл
Если ОписаниеРеквизита.Имя = Поле.Имя Тогда
Возврат ОписаниеРеквизита.Тип;
КонецЕсли;
КонецЦикла;
ОписаниеРеквизита = Объект.Реквизиты.Найти(Поле.Имя);
Если ОписаниеРеквизита <> Неопределено Тогда
Возврат ОписаниеРеквизита.Тип;
КонецЕсли;
Возврат Новый ОписаниеТипов();
КонецФункции
&НаСервереБезКонтекста
Процедура УточнитьТекстПервогоЗапросаУниверсальногоПоиска(ТекстыЗапросов)
@@ -3085,7 +3145,7 @@
Процедура ПоказатьВыбранныйУровеньГруппировок(УровеньГруппировки = Неопределено)
Если УровеньГруппировки = Неопределено Тогда
УровеньГруппировки = ВыбранныйУровеньГруппировок;
УровеньГруппировки = ?(РежимРасшифровки, НеопределенныйУровеньГруппировок(), ВыбранныйУровеньГруппировок);
КонецЕсли;
Индекс = УровеньГруппировки - 1;
@@ -3154,8 +3214,7 @@
Если ЗначениеЗаполнено(СохраненноеЗначение) Тогда
ВыбранныйУровеньГруппировок = СохраненноеЗначение;
Иначе
НеопределенныйУровеньГруппировок = 999;
ВыбранныйУровеньГруппировок = НеопределенныйУровеньГруппировок;
ВыбранныйУровеньГруппировок = НеопределенныйУровеньГруппировок();
КонецЕсли;
КонецПроцедуры
@@ -3712,6 +3771,7 @@
"ФормироватьСразу",
НастройкиОтчета.ФормироватьСразу);
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -4085,4 +4145,9 @@
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция НеопределенныйУровеньГруппировок()
Возврат 999;
КонецФункции
#КонецОбласти
@@ -2468,29 +2468,38 @@
Результат = Новый Массив;
ОткрытыеКавычки = Ложь;
КавычкиОткрыты = Ложь;
ДлинаСтроки = СтрДлина(КоманднаяСтрока);
ПредыдущийСимвол = "";
НовыйЭлемент = "";
Для Индекс = 1 По ДлинаСтроки Цикл
Символ = Сред(КоманднаяСтрока, Индекс, 1);
Если Символ = """" Тогда
КавычкиОткрыты = Не КавычкиОткрыты;
КонецЕсли;
Если Не Символ = """" Тогда
НовыйЭлемент = НовыйЭлемент + Символ;
КонецЕсли;
Если (Символ = " " И Не ОткрытыеКавычки) Или Индекс = ДлинаСтроки Тогда
Если ПредыдущийСимвол = """" И Символ = """"
И КавычкиОткрыты Тогда
НовыйЭлемент = НовыйЭлемент + ПредыдущийСимвол;
КонецЕсли;
Если (Символ = " " И Не КавычкиОткрыты) Или Индекс = ДлинаСтроки Тогда
Если Не ПустаяСтрока(НовыйЭлемент) Тогда
НовыйЭлемент = СокрЛП(СтрЗаменить(НовыйЭлемент, """", ""));
Результат.Добавить(НовыйЭлемент);
Результат.Добавить(СокрЛП(НовыйЭлемент));
КонецЕсли;
НовыйЭлемент = "";
Продолжить;
ИначеЕсли Символ = """" Тогда
ОткрытыеКавычки = Не ОткрытыеКавычки;
КонецЕсли;
ПредыдущийСимвол = Символ;
КонецЦикла;
Возврат Результат;
@@ -2099,8 +2099,8 @@
ВариантыНастроек = СхемаКД.ВариантыНастроек;
Исключение
Если ОбщегоНазначения.РазделениеВключено() Тогда
ШаблонТекстаОшибки = НСтр("ru = 'Не удалось прочитать список вариантов отчета %1.
|Возможно настройки содержат ссылки на разделенные предопределенные объекты.
ШаблонТекстаОшибки = НСтр("ru = 'Не удалось прочитать список вариантов отчета %1 в неразделенном сеансе,
|так как его настройки содержат ссылки на разделенные предопределенные значения.
|См. подробнее на ИТС: https://its.1c.ru/bmk/bsp_reports_service_model
|%2'");
@@ -3015,32 +3015,37 @@
// Проверяет свободно ли наименование варианта отчета.
Функция НаименованиеЗанято(Отчет, Ссылка, Наименование) Экспорт
Если Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Наименование") Тогда
Если Наименование = Строка(Ссылка) Тогда
Возврат Ложь; // Проверка отключается т.к. наименование не изменилось.
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1 КАК НаименованиеЗанято
"ВЫБРАТЬ
| ВариантыОтчетов.Представление КАК Наименование
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
| ВариантыОтчетов.Отчет = &Отчет
| И ВариантыОтчетов.Ссылка <> &Ссылка
| И ВариантыОтчетов.Наименование = &Наименование
| И ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ
| И НЕ ВариантыОтчетов.ПометкаУдаления
| И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)";
Запрос.УстановитьПараметр("Отчет", Отчет);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Наименование", Наименование);
Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
УстановитьПривилегированныйРежим(Истина);
Результат = Не Запрос.Выполнить().Пустой();
Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
Возврат Результат;
Пока Выборка.Следующий() Цикл
Если Выборка.Наименование = Наименование Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
// Проверяет свободен ли ключ варианта отчета.
@@ -1033,22 +1033,6 @@
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "Взаимодействия.ОтключитьПодсистемуВМоделиСервиса";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.3.6.76";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("35e85660-7125-4079-b5df-5a71dbb43a48");
Обработчик.Процедура = "Документы.ЭлектронноеПисьмоИсходящее.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Комментарий =
НСтр("ru = 'Технологический перенос данных идентификаторов сообщения IMAP (реквизит ИдентификаторСообщенияОтправкаIMAP) для предотвращения потери данных
|при переходе на последующие релизы программы.
|Выполняет дозаполнение реквизита ВзаимодействиеОснование для исходящих писем, у которых письмо основание в ИБ есть, но оно не указано'");
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ОчередьОтложеннойОбработки = 3;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.ЭлектронноеПисьмоИсходящее.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.ЧитаемыеОбъекты = "Документ.ЭлектронноеПисьмоИсходящее";
Обработчик.ИзменяемыеОбъекты = "Документ.ЭлектронноеПисьмоИсходящее";
Обработчик.БлокируемыеОбъекты = "Документ.ЭлектронноеПисьмоИсходящее";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.5.108";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("35e85460-7125-4079-b5df-5a71dbb43a49");
@@ -1063,6 +1047,20 @@
Обработчик.ИзменяемыеОбъекты = "Справочник.ПапкиЭлектронныхПисем";
Обработчик.БлокируемыеОбъекты = "Справочник.ПапкиЭлектронныхПисем";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.5.147";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("35e85660-7125-4079-b5df-5a71dbb43a48");
Обработчик.Процедура = "Документы.ЭлектронноеПисьмоИсходящее.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Комментарий =
НСтр("ru = 'Заполнение реквизита ""Текст"" документа ""Электронное письмо исходящее"" для писем в формате HTML у которых он ранее не был ошибочно заполнен'");
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ОчередьОтложеннойОбработки = 3;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.ЭлектронноеПисьмоИсходящее.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.ЧитаемыеОбъекты = "Документ.ЭлектронноеПисьмоИсходящее";
Обработчик.ИзменяемыеОбъекты = "Документ.ЭлектронноеПисьмоИсходящее";
Обработчик.БлокируемыеОбъекты = "Документ.ЭлектронноеПисьмоИсходящее";
КонецПроцедуры
// Параметры:
@@ -1644,6 +1644,9 @@
Если Не ЭтоПоставляемаяОбработка(Команда.Ссылка) Тогда
Продолжить;
КонецЕсли;
Если Команда.ВариантЗапуска <> Перечисления.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода Тогда
Продолжить;
КонецЕсли;
Если СтрНайти(Команда.Идентификатор, ",") = 0 Тогда // кроме "комплектов"
ВнешниеПечатныеФормы.Добавить(Команда.Идентификатор, Команда.Представление);
КонецЕсли;
@@ -4113,6 +4113,11 @@
МодульРаботаСКурсамиВалют.ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам(ЗапросыРазрешений);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда
МодульПолучениеФайловИзИнтернетаСлужебный = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернетаСлужебный");
МодульПолучениеФайловИзИнтернетаСлужебный.ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам(ЗапросыРазрешений);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль(
"РаботаСПочтовымиСообщениямиСлужебный");
@@ -4725,8 +4725,21 @@
КонецЕсли;
ИмяСвойства = ?(ИмяДляСвойстваСоставногоТипа = "", Свойство.Имя, ИмяДляСвойстваСоставногоТипа);
ЗначениеXDTO = Источник.ПолучитьXDTO(Свойство);
ТипЗначенияXDTO = ?(ТипСвойства = Неопределено, ТипЗначенияСвойстваXDTO(КомпонентыОбмена, Свойство, ЗначениеXDTO), ТипСвойства);
Если ТипСвойства <> Неопределено Тогда
ТипЗначенияXDTO = ТипСвойства;
ИначеЕсли ЗначениеXDTO <> Неопределено Тогда
ТипЗначенияXDTO = ТипЗначенияСвойстваXDTO(КомпонентыОбмена, Свойство, ЗначениеXDTO);
Иначе
Возврат;
КонецЕсли;
Попытка
Если ТипЗнч(ЗначениеXDTO) = Тип("ЗначениеXDTO") Тогда
@@ -2976,6 +2976,15 @@
//
Функция ВерсииПодсистем() Экспорт
СтандартнаяОбработка = Истина;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда
МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса");
ВерсииПодсистемОбластей = МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ВерсииПодсистем(СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат ВерсииПодсистемОбластей;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
@@ -2998,6 +3007,16 @@
//
Процедура УстановитьВерсииПодсистем(ВерсииПодсистем) Экспорт
СтандартнаяОбработка = Истина;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда
МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса");
МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ПриУстановкеВерсийПодсистем(ВерсииПодсистем, СтандартнаяОбработка);
КонецЕсли;
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей();
Для Каждого Версия Из ВерсииПодсистем Цикл
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.5.146";
Описание.Версия = "3.1.5.163";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -174,8 +174,9 @@
//
//
// Параметры:
// РазрабатываемыеПодсистемы - Массив из Строка - имена разрабатываемых подсистемы в текущей конфигурации
// имя подсистемы в том виде, в котором оно задано в общем модуле ОбновлениеИнформационнойБазыХХХ
// РазрабатываемыеПодсистемы - Массив из Строка - имена разрабатываемых подсистемы в текущей конфигурации,
// Имя подсистемы в том виде, в котором оно задано в общем модуле
// ОбновлениеИнформационнойБазыХХХ.
//
Процедура ПриФормированииСпискаРазрабатываемыхПодсистем(РазрабатываемыеПодсистемы) Экспорт
@@ -343,6 +343,39 @@
КонецПроцедуры
// Возвращает таблицу с версиями подсистем конфигурации.
// Для пакетной выгрузки/загрузки сведений о версиях подсистем.
//
// Возвращаемое значение:
// ТаблицаЗначений:
// * ИмяПодсистемы - Строка - имя подсистемы.
// * Версия - Строка - версия подсистемы.
//
Функция ВерсииПодсистем(СтандартнаяОбработка) Экспорт
Если Не ОбщегоНазначения.РазделениеВключено()
Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат Неопределено;
КонецЕсли;
СтандартнаяОбработка = Ложь;
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ОбластьДанныхВспомогательныеДанные", МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса());
Запрос.Текст =
"ВЫБРАТЬ
| ВерсииПодсистем.ИмяПодсистемы КАК ИмяПодсистемы,
| ВерсииПодсистем.Версия КАК Версия
|ИЗ
| РегистрСведений.ВерсииПодсистемОбластейДанных КАК ВерсииПодсистем
|ГДЕ
| ВерсииПодсистем.ОбластьДанныхВспомогательныеДанные = &ОбластьДанныхВспомогательныеДанные";
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#Область ОбработчикиСобытийПодсистемКонфигурации
// См. ОбновлениеИнформационнойБазыБСП.ПередОбновлениемИнформационнойБазы.
@@ -438,6 +471,32 @@
КонецПроцедуры
// Только для внутреннего использования.
Процедура ПриУстановкеВерсийПодсистем(ВерсииПодсистем, СтандартнаяОбработка) Экспорт
Если Не ОбщегоНазначения.РазделениеВключено()
Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ОбластьДанных = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса();
НаборЗаписей = РегистрыСведений.ВерсииПодсистемОбластейДанных.СоздатьНаборЗаписей();
Для Каждого Версия Из ВерсииПодсистем Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.ОбластьДанныхВспомогательныеДанные = ОбластьДанных;
НоваяЗапись.ИмяПодсистемы = Версия.ИмяПодсистемы;
НоваяЗапись.Версия = Версия.Версия;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
// Только для внутреннего использования.
Процедура ПриПроверкеРегистрацииОтложенныхОбработчиковОбновления(РегистрацияВыполнена, СтандартнаяОбработка) Экспорт
@@ -70,6 +70,9 @@
ОбластьПараметров = ШаблонСкрипта.ПолучитьОбласть("ОбластьПараметров");
ОбластьПараметров.УдалитьСтроку(1);
ОбластьПараметров.УдалитьСтроку(ОбластьПараметров.КоличествоСтрок());
Если СтрНачинаетсяС(ОбластьПараметров.ПолучитьСтроку(ОбластьПараметров.КоличествоСтрок()), "#") Тогда
ОбластьПараметров.УдалитьСтроку(ОбластьПараметров.КоличествоСтрок());
КонецЕсли;
ТекстыМакетов.Вставить("ОбластьПараметров", ОбластьПараметров.ПолучитьТекст());
ОбластьОбновленияКонфигурации = ШаблонСкрипта.ПолучитьОбласть("ОбластьОбновленияКонфигурации");
@@ -26,6 +26,7 @@
Результат = Новый Структура;
Результат.Вставить("Поддерживается", Ложь);
Результат.Вставить("ПоддерживаетсяУстановкаИсправлений", Ложь);
Результат.Вставить("ОписаниеОшибки", "");
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента();
@@ -41,9 +42,12 @@
КонецЕсли;
#Если ВебКлиент Тогда
Результат.ПоддерживаетсяУстановкаИсправлений = Истина;
Результат.ОписаниеОшибки =
НСтр("ru = 'Установка обновления не доступна в веб-клиенте.
|Необходимо установить полный дистрибутив технологической платформы 1С:Предприятие для Windows.'");
НСтр("ru = 'В веб-клиенте доступна только установка исправлений.
|Для установки обновления, необходимо установить
|полный дистрибутив технологической платформы 1С:Предприятие для Windows.'");
#ИначеЕсли МобильныйКлиент Тогда
Результат.ОписаниеОшибки = НСтр("ru = 'Установка обновления доступна только в ОС Windows.'");
@@ -57,15 +61,19 @@
Если Не ПустаяСтрока(Результат.ОписаниеОшибки) Тогда
Результат.ОписаниеОшибки = Результат.ОписаниеОшибки + Символы.ПС + Символы.ПС;
КонецЕсли;
Результат.ПоддерживаетсяУстановкаИсправлений = Истина;
Результат.ОписаниеОшибки = Результат.ОписаниеОшибки
+ НСтр("ru = 'Установка обновления не доступна при подключении через веб-сервер.
|Необходимо настроить прямое подключение к информационной базе.'");
+ НСтр("ru = 'При подключении через веб-сервер доступна только установка исправлений.
|Для установки обновления, необходимо установить
|полный дистрибутив технологической платформы 1С:Предприятие для Windows.'");
КонецЕсли;
Если Не ПоддерживаетсяПакетныйРежимКонфигуратора() Тогда
Если Не ПустаяСтрока(Результат.ОписаниеОшибки) Тогда
Результат.ОписаниеОшибки = Результат.ОписаниеОшибки + Символы.ПС + Символы.ПС;
КонецЕсли;
Результат.ОписаниеОшибки = Результат.ОписаниеОшибки
+ НСтр("ru = 'Для установки обновления требуется конфигуратор.
|Необходимо установить полный дистрибутив технологической платформы 1С:Предприятие для Windows.'");
@@ -74,6 +82,11 @@
#КонецЕсли
Результат.Поддерживается = ПустаяСтрока(Результат.ОписаниеОшибки);
Если Результат.Поддерживается Тогда
Результат.ПоддерживаетсяУстановкаИсправлений = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -460,6 +473,45 @@
Возврат "'" + Текст + "'";
КонецФункции
Функция КодировкаЛогФайла(Знач КаталогПрограммы)
КодировкаЛогФайла = "UTF-8";
ЧастиКаталогаПрограммы = СтрРазделить(КаталогПрограммы, ПолучитьРазделительПути(), Ложь);
Для каждого НомерВерсииПрограммы Из ЧастиКаталогаПрограммы Цикл
ЧастиНомераВерсииПрограммы = СтрРазделить(НомерВерсииПрограммы, ".", Ложь);
Если ЧастиНомераВерсииПрограммы.Количество() <> 4 Тогда
Продолжить;
КонецЕсли;
ЭтоНомерВерсии = Истина;
Для каждого ЧастьНомераВерсииПрограммы Из ЧастиНомераВерсииПрограммы Цикл
Если Не ЭтоЧисло(ЧастьНомераВерсииПрограммы) Тогда
ЭтоНомерВерсии = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ЭтоНомерВерсии Тогда
Продолжить;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(НомерВерсииПрограммы, "8.3.18.0") < 0 Тогда
КодировкаЛогФайла = "ASCII";
Продолжить;
КонецЕсли;
КонецЦикла;
Возврат КодировкаЛогФайла;
КонецФункции
Функция ЭтоЧисло(Знач ПроверяемоеЗначение)
Если ПроверяемоеЗначение = "0" Тогда
Возврат Истина;
КонецЕсли;
ОписаниеЧисла = Новый ОписаниеТипов("Число");
Возврат ОписаниеЧисла.ПривестиЗначение(ПроверяемоеЗначение) <> 0;
КонецФункции
Функция ПолучитьПараметрыАутентификацииАдминистратораОбновления(ПараметрыАдминистрирования)
Результат = Новый Структура("СтрокаПодключения, СтрокаСоединенияИнформационнойБазы");
@@ -738,7 +790,7 @@
ИмяИсполняемогоФайлаКонфигуратора = КаталогПрограммы + СтандартныеПодсистемыКлиент.ИмяИсполняемогоФайлаПриложения(Истина);
ИмяИсполняемогоФайлаКлиента = КаталогПрограммы + СтандартныеПодсистемыКлиент.ИмяИсполняемогоФайлаПриложения();
ПутьКCOMСоединителю = КаталогПрограммы() + "comcntr.dll";
КодировкаЛогФайла = КодировкаЛогФайла(КаталогПрограммы);
ИспользоватьCOMСоединитель = Не (ПараметрыРаботыКлиента.ЭтоБазоваяВерсияКонфигурации Или ПараметрыРаботыКлиента.ЭтоУчебнаяПлатформа);
ПараметрыСкрипта = ПолучитьПараметрыАутентификацииАдминистратораОбновления(ПараметрыАдминистрирования);
@@ -791,6 +843,7 @@
ВставитьПараметрСкрипта("ИмяИсполняемогоФайлаКонфигуратора" , ИмяИсполняемогоФайлаКонфигуратора , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("ИмяИсполняемогоФайлаКлиента" , ИмяИсполняемогоФайлаКлиента , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("ПутьКCOMСоединителю" , ПутьКCOMСоединителю , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("КодировкаЛогФайла" , КодировкаЛогФайла , Ложь, ОбластьПараметров);
ВставитьПараметрСкрипта("ПараметрПутиКИнформационнойБазе" , ПараметрПутиКИнформационнойБазе , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("СтрокаПутиКФайлуИнформационнойБазы", СтрокаПутиКИнформационнойБазе , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("СтрокаСоединенияИнформационнойБазы", СтрокаСоединенияИнформационнойБазы , Истина, ОбластьПараметров);
@@ -117,7 +117,6 @@
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Структура - содержит имена (ключи) и значения затребованных реквизитов.
@@ -383,7 +382,6 @@
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Произвольный - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено.
@@ -425,7 +423,6 @@
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Соответствие из КлючИЗначение - список объектов и значений их реквизитов:
@@ -474,7 +471,7 @@
ИмяРеквизита = СокрЛП(НаборРеквизитов[Позиция]);
Если МультиязычныеРеквизиты[ИмяРеквизита] <> Неопределено Тогда
ИмяССуффиксом = ИмяРеквизита + СуффиксЯзыка;
НаборРеквизитов[Позиция] = СтрШаблон("ВЫБОР КОГДА %1 = """" ТОГДА %2 ИНАЧЕ %1 КОНЕЦ КАК %2", ИмяССуффиксом, ИмяРеквизита);
НаборРеквизитов[Позиция] = ИмяССуффиксом + " КАК " + ИмяРеквизита;
КонецЕсли;
КонецЦикла;
РеквизитыТекстЗапроса = СтрСоединить(НаборРеквизитов, ",");
@@ -536,7 +533,7 @@
ПоляТаблиц.Добавить("ПсевдонимЗаданнойТаблицы.Ссылка");
Для Каждого Реквизит Из СтрРазделить(Реквизиты, ",") Цикл
Если МультиязычныеРеквизиты[Реквизит] = Истина Тогда
ПоляТаблиц.Добавить("ЕСТЬNULL(ТаблицаПредставления." + Реквизит + ", ПсевдонимЗаданнойТаблицы." + Реквизит + ") КАК " + Реквизит);
ПоляТаблиц.Добавить("ЕСТЬNULL(ТаблицаПредставления." + Реквизит + ", """") КАК " + Реквизит);
Иначе
ПоляТаблиц.Добавить(Реквизит);
КонецЕсли;
@@ -630,7 +627,6 @@
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Соответствие из КлючИЗначение:
@@ -1923,7 +1919,7 @@
ОбщиеПараметры.Вставить("ИмяФормыПерсональныхНастроек", "");
ОбщиеПараметры.Вставить("ЗапрашиватьПодтверждениеПриЗавершенииПрограммы", Истина);
ОбщиеПараметры.Вставить("ОтключитьИдентификаторыОбъектовМетаданных", Ложь);
ОбщиеПараметры.Вставить("РекомендуемыйОбъемОперативнойПамяти", 2);
ОбщиеПараметры.Вставить("РекомендуемыйОбъемОперативнойПамяти", 4);
ОбщиеПараметры.Вставить("МинимальнаяВерсияПлатформы", МинимальнаяВерсияПлатформы());
ОбщиеПараметры.Вставить("РекомендуемаяВерсияПлатформы", ОбщиеПараметры.МинимальнаяВерсияПлатформы);
// Устарело, следует использовать свойства МинимальнаяВерсияПлатформы и РекомендуемаяВерсияПлатформы:
@@ -38,7 +38,7 @@
// и ИдентификаторыОбъектовРасширений, процедуру выгрузки и загрузки в узлах РИБ.
// Для частичного встраивания отдельных функций библиотеки в конфигурации без постановки на поддержку.
// * РекомендуемыйОбъемОперативнойПамяти - Число - объем памяти в гигабайтах, рекомендуемый для комфортной работы в
// программе.
// программе. По умолчанию 4 Гб.
//
// Устарели, следует использовать свойства МинимальнаяВерсияПлатформы и РекомендуемаяВерсияПлатформы:
// * МинимальноНеобходимаяВерсияПлатформы - Строка - полный номер версии платформы для запуска программы.
@@ -371,4 +371,14 @@
КонецПроцедуры
// Позволяет изменить признак того, что версия программы является, либо не является базовой.
//
// Параметры:
// ЭтоБазовая - Булево - признак того, что версия программы является базовой. По умолчанию Истина, если в имени
// программы есть слово "Базовая".
//
Процедура ПриОпределенииПризнакаЭтоБазоваяВерсияКонфигурации(ЭтоБазовая) Экспорт
КонецПроцедуры
#КонецОбласти
@@ -1,31 +0,0 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2021, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
#Область ЗапускВнешнихПриложений
Функция БезопаснаяСтрокаКоманды(КомандаЗапуска) Экспорт
СредаИсполнения = "";
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
СредаИсполнения = "Windows";
ИначеЕсли ОбщегоНазначения.ЭтоLinuxСервер() Тогда
СредаИсполнения = "Linux";
КонецЕсли;
Результат = ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска, СредаИсполнения);
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="8eddf64b-2250-48cc-9b6e-cea6dd942f41">
<name>ОбщегоНазначенияСлужебный</name>
<synonym>
<key>ru</key>
<value>Общего назначения служебный</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
@@ -1082,28 +1082,6 @@
#КонецОбласти
#Область ЗапускВнешнихПриложений
Функция БезопаснаяСтрокаКоманды(КомандаЗапуска) Экспорт
СредаИсполнения = "";
Если ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда
СредаИсполнения = "Windows";
ИначеЕсли ОбщегоНазначенияКлиент.ЭтоLinuxКлиент() Тогда
СредаИсполнения = "Linux";
ИначеЕсли ОбщегоНазначенияКлиент.ЭтоMacOSКлиент() Тогда
СредаИсполнения = "MacOS";
КонецЕсли;
Результат = ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска, СредаИсполнения);
Возврат Результат;
КонецФункции
#КонецОбласти
#Область УстаревшиеПроцедурыИФункции
// Устарела. Используется в ОбщегоНазначенияКлиент.ПроверитьРасширениеРаботыСФайламиПодключено.
@@ -10,52 +10,26 @@
#Область ЗапускВнешнихПриложений
// Для вызова с клиента следует использовать ОбщегоНазначенияСлужебныйКлиент.БезопаснаяСтрокаКоманды,
// для вызова с сервера - ОбщегоНазначенияСлужебный.БезопаснаяСтрокаКоманды.
//
// Параметры:
// КомандаЗапуска - Строка
// СредаИсполнения - Строка
//
// Возвращаемое значение:
// Строка
//
Функция БезопаснаяСтрокаКоманды(КомандаЗапуска, СредаИсполнения = "Windows") Экспорт
Функция БезопаснаяСтрокаКоманды(КомандаЗапуска) Экспорт
Результат = "";
Если ТипЗнч(КомандаЗапуска) = Тип("Строка") Тогда
Если СредаИсполнения = "Windows" И СодержитНебезопасныеДействия(КомандаЗапуска) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось запустить программу
|по причине:
|Недопустимая строка команды
|%1
|по причине:
|Строка команды не должна содержать символы: ""$"", ""`"", ""|"", "";"", ""&"".'"),
КомандаЗапуска);
КонецЕсли;
ПроверитьСодержитНебезопасныеДействия(КомандаЗапуска);
Результат = КомандаЗапуска;
ИначеЕсли ТипЗнч(КомандаЗапуска) = Тип("Массив") Тогда
Если КомандаЗапуска.Количество() > 0 Тогда
Если СредаИсполнения = "Windows" И СодержитНебезопасныеДействия(КомандаЗапуска[0]) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось запустить программу
|по причине:
|Недопустимая команда или путь к исполняемому файлу
|%1
|по причине:
|Команда не должна содержать символы: ""$"", ""`"", ""|"", "";"", ""&"".'"),
КомандаЗапуска[0]);
КонецЕсли;
ПроверитьСодержитНебезопасныеДействия(КомандаЗапуска[0]);
Результат = МассивВСтрокуКоманды(КомандаЗапуска);
Иначе
ВызватьИсключение
НСтр("ru = 'Ожидалось, что первый элемент массива КомандаЗапуска будет командой или путем к исполняемому файлу.'");
@@ -494,7 +468,8 @@
Функция СодержитНебезопасныеДействия(Знач СтрокаКоманды)
Возврат СтрНайти(СтрокаКоманды, "$") <> 0
Возврат СтрНайти(СтрокаКоманды, "${") <> 0
Или СтрНайти(СтрокаКоманды, "$(") <> 0
Или СтрНайти(СтрокаКоманды, "`") <> 0
Или СтрНайти(СтрокаКоманды, "|") <> 0
Или СтрНайти(СтрокаКоманды, ";") <> 0
@@ -502,6 +477,18 @@
КонецФункции
Процедура ПроверитьСодержитНебезопасныеДействия(Знач КомандаЗапуска)
Если СодержитНебезопасныеДействия(КомандаЗапуска) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось запустить программу.
|Недопустимая строка команды
|%1
|
|Строка команды не должна содержать символы: ""${"", ""$("", ""`"", ""|"", "";"", ""&"".'"),
КомандаЗапуска);
КонецЕсли;
КонецПроцедуры
Функция МассивВСтрокуКоманды(КомандаЗапуска)
Результат = Новый Массив;
@@ -555,6 +542,32 @@
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
Функция СтрокаЗапускаКомандыWindows(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения) Экспорт
НаборКоманд = "";
Если ЗначениеЗаполнено(КодировкаИсполнения) Тогда
Если КодировкаИсполнения = "OEM" Тогда
КодировкаИсполнения = 437;
ИначеЕсли КодировкаИсполнения = "CP866" Тогда
КодировкаИсполнения = 866;
ИначеЕсли КодировкаИсполнения = "UTF8" Тогда
КодировкаИсполнения = 65001;
КонецЕсли;
НаборКоманд = "(chcp " + Формат(КодировкаИсполнения, "ЧГ=") + ")";
КонецЕсли;
Если Не ПустаяСтрока(ТекущийКаталог) Тогда
НаборКоманд = НаборКоманд + ?(ЗначениеЗаполнено(НаборКоманд), "&&", "") + "(cd /D """ + ТекущийКаталог + """)";
КонецЕсли;
НаборКоманд = НаборКоманд + ?(ЗначениеЗаполнено(НаборКоманд), "&&", "") + "(" + СокрЛП(СтрокаКоманды) + ")";
Возврат "cmd /S /C """ + НаборКоманд + """";
КонецФункции
Функция НовыйФайлЗапускаКомандыWindows(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения) Экспорт
ТекстовыйДокумент = Новый ТекстовыйДокумент;
@@ -1514,15 +1514,23 @@
КонецЦикла;
ВывестиСтилизованныеЭлементыФормыНастроек(Форма, ЭлементыНастроек, ОписаниеНастроек, ИменаРеквизитов, ВидыСтилизованныхЭлементов);
ДобавитьОтступКолонок(Элементы, ЭлементыНастроек, УзелИерархииЭлементов, ЭтоОсновнаяФорма);
ДобавитьОтступКолонок(Форма, ЭлементыНастроек, УзелИерархииЭлементов, ЭтоОсновнаяФорма);
КонецПроцедуры
Процедура ДобавитьОтступКолонок(Элементы, ЭлементыНастроек, УзелИерархииЭлементов, ЭтоОсновнаяФорма)
Процедура ДобавитьОтступКолонок(Форма, ЭлементыНастроек, УзелИерархииЭлементов, ЭтоОсновнаяФорма)
Если Не ЭтоОсновнаяФорма Тогда
Возврат;
КонецЕсли;
НастройкиОтчета = Форма.НастройкиОтчета;
Если НастройкиОтчета.События.ПриОпределенииСвойствЭлементовФормыНастроек Тогда
Возврат;
КонецЕсли;
Элементы = Форма.Элементы;
Статистика = ЭлементыНастроек.Скопировать();
Статистика.Свернуть("ИндексНастройки");
@@ -1689,7 +1697,9 @@
Запись.ЭтоСписок = ОписаниеНастройки <> Неопределено И ОписаниеНастройки.ДоступенСписокЗначений;
ИначеЕсли ТипЗнч(ЭлементНастройки) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Запись.ЭтоПериод = ТипЗнч(ЭлементНастройки.ПравоеЗначение) = Тип("СтандартныйПериод");
Запись.ЭтоФлажок = ЗначениеЗаполнено(ЭлементНастройки.Представление);
Запись.ЭтоФлажок = ЗначениеЗаполнено(ЭлементНастройки.Представление)
Или ЭлементНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено
Или ЭлементНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементПользовательскойНастройки = ПользовательскиеНастройки.Найти(
ОписаниеНастройкиЭлемента.ИдентификаторНастройки);
@@ -1853,16 +1863,7 @@
СвязанноеПоле.Заголовок = Лев(СвязанноеПоле.Заголовок, СтрДлина(СвязанноеПоле.Заголовок) - 1);
КонецЕсли;
Если ЭтоОсновнаяФорма Тогда
Поле.Заголовок = СвязанноеПоле.Заголовок;
СвязанноеПоле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
КонецЕсли;
Если Не ЭтоОсновнаяФорма
Или Элемент.ЭтоЗначениеКакФлажок Тогда
Поле.Заголовок = " ";
КонецЕсли;
Иначе // Поле ввода.
СвойстваПоля = СвойстваЭлементов.Поля.Найти(Элемент.ИндексНастройки, "ИндексНастройки");
ЗаполнитьЗначенияСвойств(Поле, СвойстваПоля,, "ПоложениеЗаголовка");
@@ -2322,8 +2323,8 @@
// Изменение реквизитов.
ПутьКДаннымЭлементов = Новый Структура("ПоИмени, ПоИндексу", Новый Соответствие, Новый Соответствие);
РеквизитыДобавляемые = РеквизитыДобавляемыеЭлементовНастроек(ЭлементыНастроек, ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов);
РеквизитыУдаляемые = РеквизитыУдаляемыеЭлементовНастроек(ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов);
РеквизитыДобавляемые = РеквизитыЭлементовНастроекДобавляемые(ЭлементыНастроек, ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов);
РеквизитыУдаляемые = РеквизитыЭлементовНастроекУдаляемые(ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов);
Форма.ИзменитьРеквизиты(РеквизитыДобавляемые, РеквизитыУдаляемые);
УдалитьКомандыЭлементовНастроек(Форма, РеквизитыУдаляемые);
@@ -2336,7 +2337,7 @@
ВывестиЗначенияКакПоляФлажков(Форма, ЭлементыНастроек, ИменаРеквизитов);
КонецПроцедуры
Функция РеквизитыДобавляемыеЭлементовНастроек(ЭлементыНастроек, ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов)
Функция РеквизитыЭлементовНастроекДобавляемые(ЭлементыНастроек, ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов)
РеквизитыДобавляемые = Новый Массив;
ТипыЭлементов = Новый Структура;
@@ -2389,7 +2390,7 @@
Возврат РеквизитыДобавляемые;
КонецФункции
Функция РеквизитыУдаляемыеЭлементовНастроек(ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов)
Функция РеквизитыЭлементовНастроекУдаляемые(ВидыЭлементов, ИменаРеквизитов, ПутьКДаннымЭлементов)
РеквизитыУдаляемые = Новый Массив;
Для Каждого ВидЭлемента Из ВидыЭлементов Цикл
@@ -2944,7 +2945,7 @@
КонецЕсли;
ПолеФлажка.Заголовок = Поле.Заголовок;
ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элемент.Поле = ПолеФлажка;
ИнициализироватьФлажок(Форма, Элемент.ИндексНастройки);
@@ -30,6 +30,33 @@
КонецПроцедуры
// См. РаботаВБезопасномРежимеПереопределяемый.ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам.
Процедура ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам(ЗапросыРазрешений) Экспорт
МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме");
Разрешения = Новый Массив();
// Разрешения для выполнения процедур ПолучениеФайловИзИнтернетаСлужебный.ПроверитьДоступностьСервера,
// ПолучениеФайловИзИнтернетаСлужебный.ЖурналТрассировкиМаршрутаСервера
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеПриложенияОперационнойСистемы("cmd /S /C ""%(ping %)%""",
НСтр("ru = 'Разрешение для ping'", ОбщегоНазначения.КодОсновногоЯзыка())));
Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеПриложенияОперационнойСистемы("cmd /S /C ""%(tracert %)%""",
НСтр("ru = 'Разрешение для tracert.'", ОбщегоНазначения.КодОсновногоЯзыка())));
ИначеЕсли ОбщегоНазначения.ЭтоLinuxСервер() Тогда
Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеПриложенияОперационнойСистемы("ping % % % % %",
НСтр("ru = 'Разрешение для ping'", ОбщегоНазначения.КодОсновногоЯзыка())));
Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеПриложенияОперационнойСистемы("traceroute % % % % %",
НСтр("ru = 'Разрешение для traceroute.'", ОбщегоНазначения.КодОсновногоЯзыка())));
КонецЕсли;
ЗапросыРазрешений.Добавить(
МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(Разрешения));
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -945,9 +945,9 @@
ИначеЕсли ОбщегоНазначенияКлиент.ЭтоLinuxКлиент() Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяОткрываемогоФайла", ИмяОткрываемогоФайла);
НачалоПечатиLinux = Новый ОписаниеОповещения("НапечататьИзПриложенияПоИмениФайлаНачалоПечатиLinux",
ОписаниеОповещения = Новый ОписаниеОповещения("НапечататьИзПриложенияПоИмениФайлаLinux",
ЭтотОбъект, ДополнительныеПараметры);
ПроверитьПрограммаLinuxУстановлена("Unoconv", НачалоПечатиLinux);
ПроверитьПрограммаLinuxУстановлена("Unoconv", ОписаниеОповещения);
Иначе
ПоказатьПредупреждение(, НСтр("ru = 'Печать файлов данного типа возможна только из приложения для Windows или Linux.'"));
Возврат;
@@ -969,7 +969,8 @@
ПараметрыЗапускаПрограммы.Вставить("ПолучитьПотокОшибок", Истина);
ПараметрыЗапускаПрограммы.Вставить("Оповещение", ПрограммаLinuxУстановленаЗавершение);
ФайловаяСистемаКлиент.ЗапуститьПрограмму("dpkg -s '" + Строка(ИмяПрограммы) + "'", ПараметрыЗапускаПрограммы);
ФайловаяСистемаКлиент.ЗапуститьПрограмму(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"dpkg -s '%1'", Строка(ИмяПрограммы)), ПараметрыЗапускаПрограммы);
КонецПроцедуры
@@ -984,7 +985,7 @@
КонецПроцедуры
Процедура НапечататьИзПриложенияПоИмениФайлаНачалоПечатиLinux(Результат, Параметры) Экспорт
Процедура НапечататьИзПриложенияПоИмениФайлаLinux(Результат, Параметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
@@ -995,18 +996,32 @@
Возврат;
КонецЕсли;
ЗавершениеПечатиLinux = Новый ОписаниеОповещения("НапечататьИзПриложенияПоИмениФайлаЗавершениеПечатиLinux", ЭтотОбъект);
ОписаниеОповещения = Новый ОписаниеОповещения("НапечататьИзПриложенияПоИмениФайлаLinuxЗапускUnoconv",
ЭтотОбъект, Параметры);
ПолучитьПолноеИмяВременногоФайла(ОписаниеОповещения);
КонецПроцедуры
Процедура НапечататьИзПриложенияПоИмениФайлаLinuxЗапускUnoconv(ИмяВременногоФайла, Параметры) Экспорт
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ФайлКонвертируемыхДанных", ИмяВременногоФайла);
ОписаниеОповещения = Новый ОписаниеОповещения("НапечататьИзПриложенияПоИмениФайлаLinuxЗапускLpr",
ЭтотОбъект, ДополнительныеПараметры);
ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.Вставить("ДождатьсяЗавершения", Истина);
ПараметрыЗапускаПрограммы.Вставить("ПолучитьПотокОшибок", Истина);
ПараметрыЗапускаПрограммы.Вставить("Оповещение", ЗавершениеПечатиLinux);
ПараметрыЗапускаПрограммы.Вставить("Оповещение", ОписаниеОповещения);
ФайловаяСистемаКлиент.ЗапуститьПрограмму("unoconv --stdout '" + Параметры.ИмяОткрываемогоФайла + "' |lpr", ПараметрыЗапускаПрограммы);
СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("unoconv --stdout '%1' >""%2""",
Параметры.ИмяОткрываемогоФайла, ИмяВременногоФайла);
ФайловаяСистемаКлиент.ЗапуститьПрограмму(СтрокаКоманды, ПараметрыЗапускаПрограммы);
КонецПроцедуры
Процедура НапечататьИзПриложенияПоИмениФайлаЗавершениеПечатиLinux(Результат, Параметры) Экспорт
Процедура НапечататьИзПриложенияПоИмениФайлаLinuxЗапускLpr(Результат, Параметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
@@ -1014,14 +1029,136 @@
Если Не Результат.ПриложениеЗапущено Тогда
ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
КонецЕсли;
Иначе
Параметры.Вставить("ОписаниеОшибки", Результат.ОписаниеОшибки);
ОписаниеОповещения = Новый ОписаниеОповещения("НапечататьИзПриложенияПоИмениФайлаLinuxЗавершение", ЭтотОбъект, Параметры);
ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.Вставить("ДождатьсяЗавершения", Истина);
ПараметрыЗапускаПрограммы.Вставить("ПолучитьПотокОшибок", Истина);
ПараметрыЗапускаПрограммы.Вставить("Оповещение", ОписаниеОповещения);
ФайловаяСистемаКлиент.ЗапуститьПрограмму(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("lpr %1", Параметры.ФайлКонвертируемыхДанных),
ПараметрыЗапускаПрограммы);
Если Результат.КодВозврата <> 0 Тогда
ПоказатьПредупреждение(, Результат.ПотокОшибок);
КонецЕсли;
КонецПроцедуры
Процедура НапечататьИзПриложенияПоИмениФайлаLinuxЗавершение(Результат, Параметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Файл = Новый Файл(Параметры.ФайлКонвертируемыхДанных);
Если Файл.Существует() Тогда
УдалитьФайлы(Параметры.ФайлКонвертируемыхДанных);
КонецЕсли;
Если Не Результат.ПриложениеЗапущено Или ЗначениеЗаполнено(Результат.ОписаниеОшибки) Или ЗначениеЗаполнено(Результат.ПотокОшибок) Тогда
ПоказатьПредупреждение(, ?(ЗначениеЗаполнено(Результат.ОписаниеОшибки),Результат.ОписаниеОшибки + Символы.ПС, "") + Результат.ПотокОшибок);
КонецЕсли;
КонецПроцедуры
#Область ПолучитьПолноеИмяВременногоФайла
// Получение имени временного файла.
//
// Параметры:
// Оповещение - ОписаниеОповещения - оповещение о результате получения со следующими параметрами.
// -- ИмяВременногоФайла - Строка - путь к временному файлу.
// -- ДополнительныеПараметры - Структура - значение, которое было указано при создании объекта ОписаниеОповещения.
// Расширение - Строка - расширение временного файла.
//
Процедура ПолучитьПолноеИмяВременногоФайла(Знач Оповещение, Расширение = "")
Контекст = Новый Структура;
Контекст.Вставить("Оповещение", Оповещение);
Контекст.Вставить("Расширение", Расширение);
Оповещение = Новый ОписаниеОповещения("ПолучитьИмяВременногоФайлаПослеПроверкиРасширенияРаботыСФайлами",
ЭтотОбъект, Контекст);
ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Оповещение,
НСтр("ru = 'Для получения имени временного файла необходимо установить расширение для работы с 1С:Предприятием.'"), Ложь);
КонецПроцедуры
// Продолжение процедуры ПолучитьПолноеИмяВременногоФайла.
//
// Параметры:
// РасширениеПодключено - Булево
// Контекст - Структура:
// * Оповещение - ОписаниеОповещения
// * Расширение - Строка
//
Процедура ПолучитьИмяВременногоФайлаПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
Если РасширениеПодключено Тогда
#Если ВебКлиент Тогда
Оповещение = Новый ОписаниеОповещения(
"ПолучитьИмяВременногоФайлаПослеПолученияВременногоКаталога", ЭтотОбъект, Контекст,
"ПолучитьИмяВременногоФайлаПриОбработкеОшибки", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
#Иначе
ПолучитьИмяВременногоФайлаПослеПолученияВременногоКаталога("", Контекст);
#КонецЕсли
Иначе
ПолучитьИмяВременногоФайлаОповеститьОбОшибке(НСтр("ru = 'Не удалось установить расширение для работы с 1С:Предприятием.'"), Контекст);
КонецЕсли;
КонецПроцедуры
// Продолжение процедуры ПолучитьПолноеИмяВременногоФайла.
//
// Параметры:
// ИмяКаталогаВременныхФайлов - Строка
// Контекст - Структура:
// * Оповещение - ОписаниеОповещения
// * Расширение - Строка
//
Процедура ПолучитьИмяВременногоФайлаПослеПолученияВременногоКаталога(ИмяКаталогаВременныхФайлов, Контекст) Экспорт
Оповещение = Контекст.Оповещение;
Расширение = Контекст.Расширение;
#Если ВебКлиент Тогда
ИмяВременногоФайла = ИмяКаталогаВременныхФайлов + Строка(Новый УникальныйИдентификатор);
#Иначе
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение); // АПК:441 Функция для получения имени временного файла.
#КонецЕсли
Если Не ПустаяСтрока(Расширение) Тогда
ИмяВременногоФайла = ИмяВременногоФайла + "." + Расширение;
КонецЕсли;
ВыполнитьОбработкуОповещения(Оповещение, ИмяВременногоФайла);
КонецПроцедуры
// Продолжение процедуры ПолучитьПолноеИмяВременногоФайла.
Процедура ПолучитьИмяВременногоФайлаПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
ПолучитьИмяВременногоФайлаОповеститьОбОшибке(ОписаниеОшибки, Контекст);
КонецПроцедуры
// Продолжение процедуры ПолучитьПолноеИмяВременногоФайла.
Процедура ПолучитьИмяВременногоФайлаОповеститьОбОшибке(ОписаниеОшибки, Контекст)
ПоказатьПредупреждение(, ОписаниеОшибки);
ИмяВременногоФайла = "";
ВыполнитьОбработкуОповещения(Контекст.Оповещение, ИмяВременногоФайла);
КонецПроцедуры
#КонецОбласти
Процедура ПоказатьВопросУстановкиКомпонентыСканирования(Результат, КомпонентаУстановлена) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
@@ -2748,11 +2748,12 @@
КонецФункции
// Возвращает найденный сертификат по отбору
// Возвращает найденный сертификат по отбору.
//
// Параметры:
// ОписаниеСертификата - Структура - с полем "Отпечаток", "СерийныйНомер" или "ИдентификаторСертификата"
// ПараметрыОперации - Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции.
// ПараметрыОперации - Структура, ФиксированнаяСтруктура - позволяет указать дополнительные параметры операции, ожидаемые поля:
// * ПолучитьДвоичныеДанные - Булево - преобразовывать двоичные данные
//
// Возвращаемое значение:
// см. СервисКриптографииDSSКлиентСервер.ОтветСервисаПоУмолчанию.
@@ -2761,6 +2762,7 @@
Результат = СервисКриптографииDSSКлиентСервер.ОтветСервисаПоУмолчанию(Истина);
НашлиСертификат = Неопределено;
ПолучитьДвоичныеДанные = СвойствоСтруктуры(ПараметрыОперации, "ПолучитьДвоичныеДанные", Ложь);
Если ОписаниеСертификата.Свойство("Отпечаток") Тогда
НашлиСертификат = СервисКриптографииDSSСлужебный.ПолучитьДанныеСертификатаПоОтпечатку(ОписаниеСертификата, Истина);
@@ -2777,7 +2779,7 @@
"ОшибкаВыполнения",
НСтр("ru = 'Сертификат не обнаружен в сервисе облачной подписи'", СервисКриптографииDSSСлужебный.КодЯзыка()));
Иначе
Результат.Вставить("ДанныеСертификата", ПолучитьОбъектСертификата(НашлиСертификат.ДанныеСертификата, Истина));
Результат.Вставить("ДанныеСертификата", ПолучитьОбъектСертификата(НашлиСертификат.ДанныеСертификата, Истина, НЕ ПолучитьДвоичныеДанные));
Результат.Вставить("УчетнаяЗапись", НашлиСертификат.УчетнаяЗапись);
Результат.Вставить("Идентификатор", НашлиСертификат.Идентификатор);
Результат.Вставить("ДатаНачала", НашлиСертификат.ДатаНачала);
@@ -2009,6 +2009,8 @@
Результат = ОписаниеОшибки_ЗавершениеРаботы();
ИначеЕсли ИдентификаторОшибки = НРег("ОбработкаНастроекЗаявления") Тогда
Результат = ОписаниеОшибки_ОбработкаНастроекЗаявления();
ИначеЕсли ИдентификаторОшибки = НРег("ОтсутствиеНастроек") Тогда
Результат = ОписаниеОшибки_ОбработкаОтсутствиеНастроек();
КонецЕсли;
Возврат Результат;
@@ -2249,6 +2251,22 @@
КонецФункции
// Формирует описание ошибки
//
// Возвращаемое значение:
// см. ОбщееОписаниеОшибки
//
Функция ОписаниеОшибки_ОбработкаОтсутствиеНастроек()
Результат = ОбщееОписаниеОшибки("300073",
НСтр("ru = 'Для операций проверки подписи или сертификата не найдены настройки подключения.'"));
Возврат Результат;
КонецФункции
#КонецОбласти
#Область ВспомогательныеПроцедурыИФункции
@@ -2826,7 +2826,8 @@
СинхронныйРежим = ПолучитьПолеСтруктуры(ПараметрыПроцедуры, "ПараметрыОперации.СинхронныйРежим");
Если СинхронныйРежим = Неопределено Тогда
СинхронныйРежим = НЕ ОбщегоНазначения.ЭтоВебКлиент();
СинхронныйРежим = Ложь;
// Для тонкого клиента можно включить режим синхронного выполнения для ускорения получения результатов операции.
СервисКриптографииDSSПереопределяемый.ИспользоватьСинхронныйРежим(СинхронныйРежим);
КонецЕсли;
@@ -1245,6 +1245,10 @@
Для каждого СтрокаТаблицы Из ТаблицаАккаунтов Цикл
СтрокаНастройки = ОбщиеНастройки.Пользователи[СтрокаТаблицы.Ссылка];
Если СтрокаНастройки = Неопределено Тогда
СтрокаНастройки = ПолучитьНастройкиПользователя(СтрокаТаблицы.Ссылка, ПараметрыОперации);
КонецЕсли;
Авторизован = СервисКриптографииDSSКлиентСервер.ПолучитьПолеСтруктуры(СтрокаНастройки, "Политика.Заполнено", Ложь);
Если Авторизован Тогда
@@ -2383,6 +2383,10 @@
// Продолжение процедуры ПодтвердитьОперацию.
Процедура ПодтвердитьОперациюОтветПользователя(РезультатВызова, ВходящийКонтекст) Экспорт
Если РезультатВызова = Неопределено Тогда
РезультатВызова = ОтветСервисаПоУмолчанию(Ложь, "ОтказПользователя");
КонецЕсли;
Если РезультатВызова.Выполнено Тогда
ДанныеПодтверждения = РезультатВызова.ДанныеПодтверждения;
@@ -3924,8 +3928,8 @@
//
// Шаги цикла:
// 1. подготовка параметров цикла
// 2. проверка аутентификации пользователя
// 3. запуск фонового задания для проверки сертификата
// 2. проверка настроек пользователей
// 3. запуск фонового задания для проверки сертификата в цикле
// 4. проверка результата выполнения
// 5. возврат результат успеха.
//
@@ -3937,20 +3941,48 @@
ПараметрыЦикла.Вставить("НастройкиПользователя", НастройкиПользователя);
ПараметрыЦикла.Вставить("ДанныеСертификата", ДанныеСертификата);
ПараметрыЦикла.Вставить("ПараметрыОперации", ПроверитьПараметрыОперации(ПараметрыОперации));
СервисКриптографииDSSКлиентСервер.ПолучитьОписаниеОшибки(ПараметрыЦикла, "ОтсутствиеНастроек");
ОбъектОповещения = Новый ОписаниеОповещения("ПроверитьСертификатФоновымЗаданием", ЭтотОбъект);
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ПараметрыЦикла);
НашлиНастройки = Новый Массив;
Если НастройкиПользователя = Неопределено Тогда
Отбор = Новый Соответствие;
Отбор.Вставить("Методы.ПроверкаСертификата", "Заполнено");
ПроверкаАутентификацииПользователяСОтбором(ОповещениеСледующее, ПараметрыЦикла, Отбор);
НашлиНастройки = СервисКриптографииDSSСлужебныйВызовСервера.ПодобратьНастройкиПользователя(Отбор, ПараметрыЦикла.ПараметрыОперации);
Иначе
НашлиНастройки.Добавить(НастройкиПользователя);
КонецЕсли;
ПараметрыЦикла.Вставить("НастройкиПодключения", НашлиНастройки);
ПараметрыЦикла.Вставить("Индекс", 0);
// сервис проверки не требует аутентификации
ПроверитьСертификатПоОчереди(ПараметрыЦикла);
КонецПроцедуры
// Продолжение процедуры ПроверитьПодпись.
Процедура ПроверитьСертификатПоОчереди(ВходящийКонтекст)
ТекущийИндекс = ВходящийКонтекст.Индекс;
НастройкиПодключения = ВходящийКонтекст.НастройкиПодключения;
ПараметрыОперации = ВходящийКонтекст.ПараметрыОперации;
Если ВходящийКонтекст.НастройкиПодключения.Количество() > ТекущийИндекс Тогда
ВходящийКонтекст.Индекс = ВходящийКонтекст.Индекс + 1;
ВходящийКонтекст.НастройкиПользователя = СервисКриптографииDSSКлиент.ПолучитьНастройкиПользователя(НастройкиПодключения[ТекущийИндекс], ПараметрыОперации);
ПроверитьСертификатФоновымЗаданием(ВходящийКонтекст);
Иначе
РезультатВыполнения = ОтветСервисаПоУмолчанию(Ложь);
РезультатВыполнения.КодОшибки = ВходящийКонтекст.КодОшибки;
РезультатВыполнения.Ошибка = ВходящийКонтекст.Ошибка;
ПроверитьСертификатРезультат(РезультатВыполнения, ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
// Продолжение процедуры ПроверитьСертификат.
Процедура ПроверитьСертификатФоновымЗаданием(РезультатВыполнения, ВходящийКонтекст) Экспорт
Процедура ПроверитьСертификатФоновымЗаданием(ВходящийКонтекст)
Если РезультатВыполнения.Выполнено Тогда
ОбъектОповещения = Новый ОписаниеОповещения("ПроверитьСертификатПослеВыполнения", ЭтотОбъект);
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
НачатьЗамерВремени(ВходящийКонтекст);
@@ -3962,9 +3994,6 @@
ВходящийКонтекст.ДанныеСертификата,
ВходящийКонтекст.ПараметрыОперации),
ВходящийКонтекст.ПараметрыОперации);
Иначе
ПроверитьСертификатРезультат(РезультатВыполнения, ВходящийКонтекст);
КонецЕсли
КонецПроцедуры
@@ -3975,14 +4004,10 @@
Если РезультатВыполнения.Выполнено Тогда
ПроверитьСертификатРезультат(РезультатВыполнения, ВходящийКонтекст);
ИначеЕсли НеОбрабатыватьОшибкиСервиса(ВходящийКонтекст) Тогда
ПроверитьСертификатРезультат(РезультатВыполнения, ВходящийКонтекст);
ИначеЕсли СервисКриптографииDSSКлиентСервер.ЭтоОшибкаАутентификации(РезультатВыполнения.Ошибка) Тогда
ОбъектОповещения = Новый ОписаниеОповещения("ПроверитьСертификатФоновымЗаданием", ЭтотОбъект);
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
ПроверкаАутентификацииПользователя(ОповещениеСледующее, ВходящийКонтекст, Истина);
Иначе
ПроверитьСертификатРезультат(РезультатВыполнения, ВходящийКонтекст);
ВходящийКонтекст.КодОшибки = РезультатВыполнения.КодОшибки;
ВходящийКонтекст.Ошибка = РезультатВыполнения.Ошибка;
ПроверитьСертификатПоОчереди(ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
@@ -4060,7 +4085,7 @@
ИначеЕсли НеОбрабатыватьОшибкиСервиса(ВходящийКонтекст) Тогда
ПолучитьСведенияОПодписантахРезультат(РезультатВыполнения, ВходящийКонтекст);
ИначеЕсли СервисКриптографииDSSКлиентСервер.ЭтоОшибкаАутентификации(РезультатВыполнения.Ошибка) Тогда
ОбъектОповещения = Новый ОписаниеОповещения("ПроверитьСертификатФоновымЗаданием", ЭтотОбъект);
ОбъектОповещения = Новый ОписаниеОповещения("ПолучитьСведенияОПодписантахФоновымЗаданием", ЭтотОбъект);
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
ПроверкаАутентификацииПользователя(ОповещениеСледующее, ВходящийКонтекст, Истина);
Иначе
@@ -4084,8 +4109,8 @@
//
// Шаги цикла:
// 1. подготовка параметров цикла
// 2. проверка аутентификации пользователя, вложенный процесс
// 3. запуск фонового задания для проверки подписи
// 2. проверка настроек подключения пользователей
// 3. запуск фонового задания для проверки подписи в цикле
// 4. проверка результата выполнения
// 5. возврат результат успеха.
//
@@ -4106,20 +4131,49 @@
ПараметрыЦикла.Вставить("СвойстваПроверки", СвойствоСтруктуры(ПараметрыОперации, "СвойстваПроверки"));
ПараметрыЦикла.Вставить("Сертификат", СвойствоСтруктуры(ПараметрыОперации, "Сертификат"));
ПараметрыЦикла.Вставить("ПараметрыОперации", ПроверитьПараметрыОперации(ПараметрыОперации));
ПараметрыЦикла.Вставить("Индекс", 0);
ОбъектОповещения = Новый ОписаниеОповещения("ПроверитьПодписьФоновымЗаданием", ЭтотОбъект);
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ПараметрыЦикла);
СервисКриптографииDSSКлиентСервер.ПолучитьОписаниеОшибки(ПараметрыЦикла, "ОтсутствиеНастроек");
НашлиНастройки = Новый Массив;
Если НастройкиПользователя = Неопределено Тогда
Отбор = Новый Соответствие;
Отбор.Вставить("Методы.ПроверкаСертификата", "Заполнено");
ПроверкаАутентификацииПользователяСОтбором(ОповещениеСледующее, ПараметрыЦикла, Отбор);
НашлиНастройки = СервисКриптографииDSSСлужебныйВызовСервера.ПодобратьНастройкиПользователя(Отбор, ПараметрыЦикла.ПараметрыОперации);
Иначе
НашлиНастройки.Добавить(НастройкиПользователя);
КонецЕсли;
ПараметрыЦикла.Вставить("НастройкиПодключения", НашлиНастройки);
// сервис проверки не требует аутентификации
ПроверитьПодписьПоОчереди(ПараметрыЦикла);
КонецПроцедуры
// Продолжение процедуры ПроверитьПодпись.
Процедура ПроверитьПодписьФоновымЗаданием(РезультатВыполнения, ВходящийКонтекст) Экспорт
Процедура ПроверитьПодписьПоОчереди(ВходящийКонтекст)
ТекущийИндекс = ВходящийКонтекст.Индекс;
НастройкиПодключения = ВходящийКонтекст.НастройкиПодключения;
ПараметрыОперации = ВходящийКонтекст.ПараметрыОперации;
Если ВходящийКонтекст.НастройкиПодключения.Количество() > ТекущийИндекс Тогда
ВходящийКонтекст.Индекс = ВходящийКонтекст.Индекс + 1;
ВходящийКонтекст.НастройкиПользователя = СервисКриптографииDSSКлиент.ПолучитьНастройкиПользователя(НастройкиПодключения[ТекущийИндекс], ПараметрыОперации);
ПроверитьПодписьФоновымЗаданием(ВходящийКонтекст);
Иначе
РезультатВыполнения = ОтветСервисаПоУмолчанию(Ложь);
РезультатВыполнения.КодОшибки = ВходящийКонтекст.КодОшибки;
РезультатВыполнения.Ошибка = ВходящийКонтекст.Ошибка;
ПроверитьПодписьРезультат(РезультатВыполнения, ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
// Продолжение процедуры ПроверитьПодпись.
Процедура ПроверитьПодписьФоновымЗаданием(ВходящийКонтекст)
Если РезультатВыполнения.Выполнено Тогда
ОбъектОповещения = Новый ОписаниеОповещения("ПроверитьПодписьПослеВыполнения", ЭтотОбъект);
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
НачатьЗамерВремени(ВходящийКонтекст);
@@ -4135,9 +4189,6 @@
ВходящийКонтекст.Сертификат,
ВходящийКонтекст.ПараметрыОперации),
ВходящийКонтекст.ПараметрыОперации);
Иначе
ПроверитьПодписьРезультат(РезультатВыполнения, ВходящийКонтекст);
КонецЕсли
КонецПроцедуры
@@ -4148,14 +4199,10 @@
Если РезультатВыполнения.Выполнено Тогда
ПроверитьПодписьРезультат(РезультатВыполнения, ВходящийКонтекст);
ИначеЕсли НеОбрабатыватьОшибкиСервиса(ВходящийКонтекст) Тогда
ПроверитьПодписьРезультат(РезультатВыполнения, ВходящийКонтекст);
ИначеЕсли СервисКриптографииDSSКлиентСервер.ЭтоОшибкаАутентификации(РезультатВыполнения.Ошибка) Тогда
ОбъектОповещения = Новый ОписаниеОповещения("ПроверитьПодписьФоновымЗаданием", ЭтотОбъект);
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
ПроверкаАутентификацииПользователя(ОповещениеСледующее, ВходящийКонтекст, Истина);
Иначе
ПроверитьПодписьРезультат(РезультатВыполнения, ВходящийКонтекст);
ВходящийКонтекст.КодОшибки = РезультатВыполнения.КодОшибки;
ВходящийКонтекст.Ошибка = РезультатВыполнения.Ошибка;
ПроверитьПодписьПоОчереди(ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
@@ -103,7 +103,10 @@
//
Функция ЭтоБазоваяВерсияКонфигурации() Экспорт
Возврат СтрНайти(ВРег(Метаданные.Имя), "БАЗОВАЯ") > 0;
ЭтоБазоваяВерсияКонфигурации = СтрНайти(ВРег(Метаданные.Имя), НСтр("ru = 'БАЗОВАЯ'")) > 0;
ОбщегоНазначенияПереопределяемый.ПриОпределенииПризнакаЭтоБазоваяВерсияКонфигурации(ЭтоБазоваяВерсияКонфигурации);
Возврат ЭтоБазоваяВерсияКонфигурации;
КонецФункции
@@ -1632,7 +1635,7 @@
Метаданные.Роли.ЗапускAutomation.Имя);
НазначениеРолей.ТолькоДляПользователейСистемы.Добавить(
Метаданные.Роли.РежимВсеФункции.Имя);
Метаданные.Роли.РежимТехническогоСпециалиста.Имя);
НазначениеРолей.ТолькоДляПользователейСистемы.Добавить(
Метаданные.Роли.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок.Имя);
@@ -1689,6 +1692,15 @@
КонецПроцедуры
// См. РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий
Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки) Экспорт
Зависимость = Настройки.Добавить();
Зависимость.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбработкаСервисовИнтеграции;
Зависимость.РаботаетСВнешнимиРесурсами = Истина;
КонецПроцедуры
// Формирует текст для вывода пользователю при необходимости динамического обновления.
//
Функция ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзмененияКонфигурации) Экспорт
@@ -2190,6 +2202,26 @@
КонецПроцедуры
// Обработчик одноименного регламентного задания.
//
Процедура ОбработкаСервисовИнтеграции() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОбработкаСервисовИнтеграции);
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
РежимСовместимости = ВерсияРежимаСовместимости();
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(РежимСовместимости, "8.3.17.0") < 0 Тогда
Возврат;
КонецЕсли;
// АПК:487-выкл - нет выполнения произвольного кода.
Выполнить("СервисыИнтеграции.ВыполнитьОбработку()");
// АПК:487-вкл
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы.
@@ -2273,6 +2305,10 @@
НовоеИмя = "Роль.БазовыеПраваВнешнихПользователейБСП";
ОбщегоНазначения.ДобавитьПереименование(Итог, "3.0.1.19", СтароеИмя, НовоеИмя, Библиотека);
СтароеИмя = "Роль.РежимВсеФункции";
НовоеИмя = "Роль.РежимТехническогоСпециалиста";
ОбщегоНазначения.ДобавитьПереименование(Итог, "3.1.5.153", СтароеИмя, НовоеИмя, Библиотека);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -2762,7 +2798,7 @@
ВерсияПлатформы = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(СистемнаяИнформация.ВерсияПриложения);
Если ТекущийРежим = Режимы.НеИспользовать Тогда
ПоддерживаемыеВерсииПлатформы = СтрРазделить("8.3.14, 8.3.15, 8.3.16", ", ", Ложь);
ПоддерживаемыеВерсииПлатформы = СтрРазделить("8.3.14, 8.3.15, 8.3.16, 8.3.17", ", ", Ложь);
Если ПоддерживаемыеВерсииПлатформы.Найти(ВерсияПлатформы) <> Неопределено Тогда
НеПоддерживаемаяВерсияПлатформы = "";
@@ -2806,7 +2842,8 @@
Если СтрЗаканчиваетсяНа(ТекущийРежимСтрокой, "8_3_14")
Или СтрЗаканчиваетсяНа(ТекущийРежимСтрокой, "8_3_15")
Или СтрЗаканчиваетсяНа(ТекущийРежимСтрокой, "8_3_16") Тогда
Или СтрЗаканчиваетсяНа(ТекущийРежимСтрокой, "8_3_16")
Или СтрЗаканчиваетсяНа(ТекущийРежимСтрокой, "8_3_17") Тогда
НеПоддерживаемаяВерсияПлатформы = "";
Иначе
@@ -470,13 +470,24 @@
КонецПроцедуры
// Для функций ОписаниеДопустимыхШаблонов, КлючевоеСловоСУчетомЯзыка.
//
// Возвращаемое значение:
// Булево
//
Функция ВариантВстроенногоЯзыкаРусский() Экспорт
Возврат Метаданные.ВариантВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский;
КонецФункции
#Область УниверсальноеОграничение
Функция ОграничиватьДоступНаУровнеЗаписейУниверсально(СУчетомКонстантыОграничениеДоступаНаУровнеЗаписей = Истина,
КогдаПервоеОбновлениеДоступаЗавершилось = Ложь, ОбновлятьПараметрыСеансаКогдаТребуется = Истина) Экспорт
Если СУчетомКонстантыОграничениеДоступаНаУровнеЗаписей Тогда
Значение = Константы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Получить();
Значение = КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально();
Если ОбновлятьПараметрыСеансаКогдаТребуется
И (Значение <> УправлениеДоступомСлужебныйПовтИсп.КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально()
@@ -502,7 +513,7 @@
Если Константы.ПервоеОбновлениеДоступаЗавершилось.Получить()
Или УправлениеДоступомСлужебныйПовтИсп.КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально()
<> Константы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Получить() Тогда
<> КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально()Тогда
ОбновитьПараметрыСеанса();
КонецЕсли;
@@ -517,6 +528,13 @@
КонецФункции
Функция КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально() Экспорт
Возврат Не ВариантВстроенногоЯзыкаРусский()
Или Константы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Получить();
КонецФункции
// Устанавливает использование регламентного задания ОбновлениеДоступа.
//
// Параметры:
@@ -39444,13 +39462,6 @@
КонецФункции
// Для функций ОписаниеДопустимыхШаблонов, КлючевоеСловоСУчетомЯзыка.
Функция ВариантВстроенногоЯзыкаРусский()
Возврат Метаданные.ВариантВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский;
КонецФункции
#КонецОбласти
#Область АнализИменТаблицИПолейТаблиц
@@ -449,21 +449,25 @@
КонецЕсли;
СтандартнаяОбработка = Ложь;
ПараметрыРасшифровки = УправлениеДоступомСлужебныйВызовСервера.ПараметрыРасшифровкиОтчетаАнализПравДоступа(ФормаОтчета.ОтчетДанныеРасшифровки, Расшифровка);
ПараметрыРасшифровки = УправлениеДоступомСлужебныйВызовСервера.ПараметрыРасшифровкиОтчетаАнализПравДоступа(
ФормаОтчета.ОтчетДанныеРасшифровки, Расшифровка);
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("Расшифровка", Расшифровка);
Отбор = Новый Структура;
Для Каждого Элемент Из ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Настройка = ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Элемент.ИдентификаторПользовательскойНастройки);
Для Каждого ЭлементОтбора Из ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Настройка = ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(
ЭлементОтбора.ИдентификаторПользовательскойНастройки);
Если Настройка = Неопределено Тогда
Настройка = Элемент;
Настройка = ЭлементОтбора;
КонецЕсли;
Если Настройка.Использование Тогда
Если Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Или Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда
Отбор.Вставить(Элемент.ЛевоеЗначение, Настройка.ПравоеЗначение);
Если ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно
Или ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда
Отбор.Вставить(ЭлементОтбора.ЛевоеЗначение, Настройка.ПравоеЗначение);
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -474,13 +478,17 @@
Отбор.Вставить(ИмяПараметра, ЗначениеПараметра);
КонецЕсли;
Если ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователейНаТаблицыОтчета" И ПараметрыРасшифровки.ИмяПоляРасшифровки <> "Пользователь"
Если ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователейНаТаблицыОтчета"
И ПараметрыРасшифровки.ИмяПоляРасшифровки <> "Пользователь"
Или ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователяНаТаблицыОтчета" Тогда
Отбор.Удалить("Отчет");
КонецЕсли;
Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "Право"
Или СтрНачинаетсяС(ПараметрыРасшифровки.ИмяПоляРасшифровки, "Картинка") Тогда
Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоПросмотр"
Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоРедактирование"
Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоИнтерактивноеДобавление" Тогда
КлючВарианта = "ПраваПользователяНаТаблицу";
@@ -499,6 +507,14 @@
Возврат;
КонецЕсли;
Если КлючВарианта <> "ПраваПользователяНаТаблицыОтчета" Тогда
ЗначениеПрава = ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки];
Если ТипЗнч(ЗначениеПрава) = Тип("Число") И ЗначениеПрава = 0
Или ТипЗнч(ЗначениеПрава) = Тип("Булево") И Не ЗначениеПрава Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "ОбъектМетаданных" Тогда
КлючВарианта = "ПраваПользователейНаТаблицу";
@@ -526,7 +542,9 @@
КлючВарианта = "ПраваПользователяНаТаблицыОтчета";
КонецЕсли;
Если ФормаОтчета.КлючТекущегоВарианта = "АнализПравДоступа" И ГруппировкаПоОтчетамВключена(ФормаОтчета.Отчет.КомпоновщикНастроек) Тогда
Если ФормаОтчета.КлючТекущегоВарианта = "АнализПравДоступа"
И ГруппировкаПоОтчетамВключена(ФормаОтчета.Отчет.КомпоновщикНастроек) Тогда
КлючВарианта = "ПраваПользователяНаТаблицыОтчетов";
КонецЕсли;
@@ -545,11 +563,17 @@
ЗначениеРасшифровки = ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки];
Если ЗначениеЗаполнено(ЗначениеРасшифровки) Тогда
Пользователь = ПараметрыРасшифровки.СписокПолей["Пользователь"];
Если Пользователь = Неопределено И Отбор.Свойство("Пользователь") И ТипЗнч(Отбор.Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда
Если Пользователь = Неопределено
И Отбор.Свойство("Пользователь")
И ТипЗнч(Отбор.Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда
Пользователь = Отбор.Пользователь;
КонецЕсли;
Если ЗначениеЗаполнено(Пользователь) И ТипЗнч(ЗначениеРасшифровки) = Тип("СправочникСсылка.ПрофилиГруппДоступа") Тогда
Если ЗначениеЗаполнено(Пользователь)
И ТипЗнч(ЗначениеРасшифровки) = Тип("СправочникСсылка.ПрофилиГруппДоступа") Тогда
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента();
Если ПараметрыРаботыКлиента.УпрощенныйИнтерфейсНастройкиПравДоступа Тогда
ИмяФормы = "ОбщаяФорма.ПраваДоступаУпрощенно";
@@ -560,7 +584,8 @@
Форма = ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта", Новый Структура("Ключ", Пользователь));
ОткрытьФорму(ИмяФормы, Новый Структура("Пользователь", Пользователь), Форма, , Форма.Окно);
Иначе
ПоказатьЗначение(Неопределено, ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]);
ПоказатьЗначение(Неопределено,
ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]);
КонецЕсли;
КонецЕсли;
@@ -568,6 +593,14 @@
КонецЕсли;
Если Отбор.Свойство("ОбъектМетаданных")
И Не ЗначениеЗаполнено(Отбор.ОбъектМетаданных)
И ( КлючВарианта = "ПраваПользователейНаТаблицу"
Или КлючВарианта = "ПраваПользователяНаТаблицу" ) Тогда
Возврат;
КонецЕсли;
ПараметрыОтчета.Вставить("Отбор", Отбор);
ПараметрыОтчета.Вставить("КлючВарианта", КлючВарианта);
ПараметрыОтчета.Вставить("КлючНазначенияИспользования", КлючВарианта);
@@ -361,7 +361,7 @@
//
Функция КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально() Экспорт
Возврат Константы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Получить();
Возврат УправлениеДоступомСлужебный.КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально();
КонецФункции
@@ -2066,6 +2066,10 @@
ВременнаяПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент;
КонецЕсли;
Если Не МакетСуществует(ВременнаяПечатнаяФорма.ПолныйПутьКМакету) Тогда
ВременнаяПечатнаяФорма.ПолныйПутьКМакету = "";
КонецЕсли;
Если ВременнаяПечатнаяФорма.ТабличныйДокумент <> Неопределено Тогда
ПечатнаяФорма = КоллекцияПечатныхФорм.Добавить();
ЗаполнитьЗначенияСвойств(ПечатнаяФорма, ВременнаяПечатнаяФорма);
@@ -2078,10 +2082,6 @@
Отказ = Истина;
КонецЕсли;
Если Не МакетСуществует(ПечатнаяФорма.ПолныйПутьКМакету) Тогда
ПечатнаяФорма.ПолныйПутьКМакету = "";
КонецЕсли;
КонецЦикла;
// Вызов исключения при возникновении ошибки.
@@ -669,8 +669,14 @@
Для Каждого ПрошлаяЗапись Из ПроверкаЗаписьСостоянияОригинала Цикл
Если СокрЛП(ПрошлаяЗапись.Состояние) <> ИмяСостояния Тогда
Изменено = Истина;
ТЧ = ТабличнаяЧастьМногосотрудниковаДокумента(Запись.Ссылка);
Если ТЧ <> "" Тогда
РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Запись.Ссылка,
ПрошлаяЗапись.ПервичныйДокумент,ПрошлаяЗапись.ПервичныйДокументПредставление,ИмяСостояния,ПрошлаяЗапись.ФормаИзвне,ПрошлаяЗапись.Сотрудник);
Иначе
РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Запись.Ссылка,
ПрошлаяЗапись.ПервичныйДокумент,ПрошлаяЗапись.ПервичныйДокументПредставление,ИмяСостояния,ПрошлаяЗапись.ФормаИзвне);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -116,7 +116,7 @@
// если не указан ДождатьсяЗавершения - игнорируется.
// * КодировкаПотоков - КодировкаТекста
// - Строка - кодировка, используемая для чтения stdout и stderr.
// По умолчанию используется для Windows OEM (cp437), остальные КодировкаТекста.Системная.
// По умолчанию используется для Windows "CP866", для остальных - "UTF-8".
// * КодировкаИсполнения - Строка
// - Число - кодировка, устанавливаемая в Windows с помощью команды chcp,
// возможные значения: "OEM", "CP866", "UTF8" или номер кодовой страницы.
@@ -195,7 +195,7 @@
// АПК:534-выкл методы безопасного запуска обеспечиваются этой функцией
СтрокаКоманды = ОбщегоНазначенияСлужебный.БезопаснаяСтрокаКоманды(КомандаЗапуска);
СтрокаКоманды = ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска);
Если ПараметрыЗапускаПрограммы = Неопределено Тогда
ПараметрыЗапускаПрограммы = ПараметрыЗапускаПрограммы();
@@ -226,32 +226,25 @@
КодировкаПотоков = КодировкаСтандартныхПотоков();
КонецЕсли;
Если КодировкаПотоков = "CP866" И Не ЗначениеЗаполнено(КодировкаИсполнения) Тогда
КодировкаИсполнения = КодировкаПотоков;
// Для cmd не всегда активна текущая кодовая страница, поэтому всегда задаем по-умолчанию.
Если КодировкаИсполнения = Неопределено И ОбщегоНазначения.ЭтоWindowsСервер() Тогда
КодировкаИсполнения = "CP866";
КонецЕсли;
КодВозврата = Неопределено;
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
ИмяФайлаКоманды = ПолучитьИмяВременногоФайла("run.bat");
ТекстовыйДокумент = ОбщегоНазначенияСлужебныйКлиентСервер.НовыйФайлЗапускаКомандыWindows(
СтрокаКоманды = ОбщегоНазначенияСлужебныйКлиентСервер.СтрокаЗапускаКомандыWindows(
СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения);
ТекстовыйДокумент.Записать(ИмяФайлаКоманды, КодировкаПотоков);
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
// В файловой информационной базе показывать окно консоли не следует и в серверном контексте.
Оболочка = Новый COMОбъект("Wscript.Shell");
КодВозврата = Оболочка.Run(ИмяФайлаКоманды, 0, ДождатьсяЗавершения);
КодВозврата = Оболочка.Run(СтрокаКоманды, 0, ДождатьсяЗавершения);
Оболочка = Неопределено;
Иначе
ЗапуститьПриложение(ИмяФайлаКоманды,, ДождатьсяЗавершения, КодВозврата);
КонецЕсли;
Если ДождатьсяЗавершения Тогда
// Автоматически удаление включено только в случае не ожидания завершения, т.к. код возврата там не интересен.
// В случае, когда нужен корректный код возврата автоматического удаления нет, потому следует удалить файл здесь.
УдалитьВременныйФайл(ИмяФайлаКоманды);
ЗапуститьПриложение(СтрокаКоманды,, ДождатьсяЗавершения, КодВозврата);
КонецЕсли;
Иначе
@@ -378,14 +371,14 @@
// Возвращает кодировку стандартных поток вывода и ошибок, используемую в текущей ОС.
//
// Возвращаемое значение:
// КодировкаТекста - кодировка стандартных потоков вывода и ошибок.
// КодировкаТекста
//
Функция КодировкаСтандартныхПотоков()
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
Кодировка = "CP866";
Иначе
Кодировка = КодировкаТекста.Системная;
Кодировка = "UTF-8";
КонецЕсли;
Возврат Кодировка;
@@ -528,6 +528,9 @@
// если не указан ДождатьсяЗавершения - игнорируется.
// * ПолучитьПотокОшибок - Булево - Ложь - ошибки, направленные в поток stderr,
// если не указан ДождатьсяЗавершения - игнорируется.
// * КодировкаПотоков - КодировкаТекста
// - Строка - кодировка, используемая для чтения stdout и stderr.
// По умолчанию для Windows "CP866", для остальных - "UTF-8".
// * КодировкаИсполнения - Строка
// - Число - кодировка, устанавливаемая в Windows с помощью команды chcp,
// возможные значения: "OEM", "CP866", "UTF8" или номер кодовой страницы.
@@ -550,6 +553,7 @@
Параметры.Вставить("ДождатьсяЗавершения", Истина);
Параметры.Вставить("ПолучитьПотокВывода", Ложь);
Параметры.Вставить("ПолучитьПотокОшибок", Ложь);
Параметры.Вставить("КодировкаПотоков", Неопределено);
Параметры.Вставить("КодировкаИсполнения", Неопределено);
Параметры.Вставить("ВыполнитьСНаивысшимиПравами", Ложь);
@@ -600,8 +604,7 @@
ПараметрыЗапускаПрограммы = ПараметрыЗапускаПрограммы();
КонецЕсли;
СредаИсполнения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыЗапускаПрограммы, "СредаИсполнения", "Windows");
СтрокаКоманды = ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска, СредаИсполнения);
СтрокаКоманды = ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска);
ИмяФайлаПотокаВывода = "";
ИмяФайлаПотокаОшибок = "";
@@ -631,6 +634,7 @@
Контекст.Вставить("ТекущийКаталог", ПараметрыЗапускаПрограммы.ТекущийКаталог);
Контекст.Вставить("Оповещение", ПараметрыЗапускаПрограммы.Оповещение);
Контекст.Вставить("ДождатьсяЗавершения", ПараметрыЗапускаПрограммы.ДождатьсяЗавершения);
Контекст.Вставить("КодировкаПотоков", ПараметрыЗапускаПрограммы.КодировкаПотоков);
Контекст.Вставить("КодировкаИсполнения", ПараметрыЗапускаПрограммы.КодировкаИсполнения);
Контекст.Вставить("ПолучитьПотокВывода", ПараметрыЗапускаПрограммы.ПолучитьПотокВывода);
Контекст.Вставить("ПолучитьПотокОшибок", ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок);
@@ -206,11 +206,7 @@
// * ПриложениеЗапущено - Булево - Истина, если внешнее приложение не вызвало ошибок при открытии.
// * ДополнительныеПараметры - Произвольный - значение, которое было указано при создании объекта ОписаниеОповещения.
// ДляРедактирования - Булево - Истина, если файл открывается для редактирования, иначе Ложь.
//
// Пример:
// ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра(КаталогДокументов() + "test.pdf");
// ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра(КаталогДокументов() + "test.xlsx");
//
Процедура ОткрытьФайлВПрограммеПросмотра(ПутьКФайлу, Знач Оповещение = Неопределено,
Знач ДляРедактирования = Ложь)
@@ -476,7 +472,7 @@
#Область ОткрытьПроводник
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьПроводник.
Процедура ОткрытьПроводникПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
ФайлИнфо = Контекст.ФайлИнфо;
@@ -493,7 +489,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьПроводник.
Процедура ОткрытьПроводникПослеПроверкиСуществования(Существует, Контекст) Экспорт
ФайлИнфо = Контекст.ФайлИнфо;
@@ -513,7 +509,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьПроводник.
Процедура ОткрытьПроводникПослеПроверкиЭтоФайл(ЭтоФайл, Контекст) Экспорт
// АПК:534-выкл методы безопасного запуска обеспечиваются этой функцией
@@ -535,7 +531,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьПроводник.
Процедура ОткрытьПроводникПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
@@ -543,7 +539,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьПроводник.
Процедура ОткрытьПроводникОповеститьОбОшибке(ОписаниеОшибки, Контекст)
Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
@@ -556,7 +552,7 @@
#Область ОткрытьНавигационнуюСсылку
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку.
Процедура ОткрытьНавигационнуюСсылкуПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
// АПК:534-выкл методы безопасного запуска обеспечиваются этой функцией
@@ -584,7 +580,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку.
Процедура ОткрытьНавигационнуюСсылкуПослеЗапускаПриложения(КодВозврата, Контекст) Экспорт
Оповещение = Контекст.Оповещение;
@@ -596,7 +592,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку.
Процедура ОткрытьНавигационнуюСсылкуПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
@@ -604,7 +600,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку.
Процедура ОткрытьНавигационнуюСсылкуОповеститьОбОшибке(ОписаниеОшибки, Контекст) Экспорт
Оповещение = Контекст.Оповещение;
@@ -677,7 +673,7 @@
#Область ЗапуститьПрограмму
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Процедура ЗапуститьПрограммуПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
Если РасширениеПодключено Тогда
@@ -701,7 +697,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Процедура ЗапуститьПрограммуПослеПроверкиСуществования(Существует, Контекст) Экспорт
ТекущийКаталог = Контекст.ТекущийКаталог;
@@ -726,7 +722,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра.
// Продолжение процедуры ФайловаяСистемаКлиент.ОткрытьФайлВПрограммеПросмотра.
Процедура ЗапуститьПрограммуПослеПроверкиЭтоКаталог(ЭтоКаталог, Контекст) Экспорт
Если ЭтоКаталог Тогда
@@ -746,14 +742,24 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Процедура ЗапуститьПрограммуНачатьЗапуск(Контекст)
// АПК:534-выкл методы безопасного запуска обеспечиваются этой функцией
Если Контекст.КодировкаПотоков = Неопределено Тогда
Контекст.КодировкаПотоков = КодировкаСтандартныхПотоков();
КонецЕсли;
// Для cmd не всегда активна текущая кодовая страница, поэтому всегда задаем по-умолчанию
Если Контекст.КодировкаИсполнения = Неопределено И ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда
Контекст.КодировкаИсполнения = "CP866";
КонецЕсли;
Если Контекст.ВыполнитьСНаивысшимиПравами Тогда
ЗапуститьПрограммуСНаивысшимиПравами(Контекст);
Иначе
Возврат;
КонецЕсли;
СтрокаКоманды = Контекст.СтрокаКоманды;
ТекущийКаталог = Контекст.ТекущийКаталог;
@@ -768,13 +774,27 @@
"ЗапуститьПрограммуПослеЗапускаПриложения", ЭтотОбъект, Контекст,
"ЗапуститьПрограммуПриОбработкеОшибки", ЭтотОбъект);
НачатьЗапускПриложения(Оповещение, СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения);
КонецЕсли;
// АПК:534-вкл
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Возвращает кодировку стандартных поток вывода и ошибок, используемую в текущей ОС.
//
// Возвращаемое значение:
// КодировкаТекста
//
Функция КодировкаСтандартныхПотоков()
Если ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда
Возврат "CP866";
Иначе
Возврат "UTF-8";
КонецЕсли;
КонецФункции
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Процедура ЗапуститьПрограммуПослеЗапускаПриложения(КодВозврата, Контекст) Экспорт
Оповещение = Контекст.Оповещение;
@@ -798,7 +818,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Процедура ЗапуститьПрограммуПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
@@ -807,7 +827,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Процедура ЗапуститьПрограммуОповеститьОбОшибке(ОписаниеОшибки, Контекст)
Оповещение = Контекст.Оповещение;
@@ -827,7 +847,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Функция РезультатЗапускаПрограммы()
Результат = Новый Структура;
@@ -841,7 +861,7 @@
КонецФункции
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
// Продолжение процедуры ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Процедура ЗапуститьПрограммуСНаивысшимиПравами(Контекст)
#Если ВебКлиент Тогда
@@ -887,12 +907,12 @@
Если Контекст.ПолучитьПотокВывода
И Не ПустаяСтрока(Контекст.ИмяФайлаПотокаВывода) Тогда
Результат.ПотокВывода = ПрочитатьФайлПотока(Контекст.ИмяФайлаПотокаВывода);
Результат.ПотокВывода = ПрочитатьФайлПотока(Контекст.ИмяФайлаПотокаВывода, Контекст.КодировкаПотоков);
КонецЕсли;
Если Контекст.ПолучитьПотокОшибок
И Не ПустаяСтрока(Контекст.ИмяФайлаПотокаОшибок) Тогда
Результат.ПотокОшибок = ПрочитатьФайлПотока(Контекст.ИмяФайлаПотокаОшибок);
Результат.ПотокОшибок = ПрочитатьФайлПотока(Контекст.ИмяФайлаПотокаОшибок, Контекст.КодировкаПотоков);
КонецЕсли;
#КонецЕсли
@@ -900,7 +920,7 @@
КонецПроцедуры
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
Функция ПрочитатьФайлПотока(ПутьКФайлу)
Функция ПрочитатьФайлПотока(ПутьКФайлу, КодировкаПотоков)
// АПК:566-выкл - синхронные вызовы вне тонкого клиента
@@ -912,7 +932,7 @@
Возврат "";
КонецЕсли;
ЧтениеФайлаПотока = Новый ЧтениеТекста(ПутьКФайлу);
ЧтениеФайлаПотока = Новый ЧтениеТекста(ПутьКФайлу, КодировкаПотоков);
Результат = ЧтениеФайлаПотока.Прочитать();
ЧтениеФайлаПотока.Закрыть();
@@ -945,7 +965,7 @@
Попытка
Оболочка = Новый COMОбъект("Shell.Application");
// Запуск с передачей глагола действия - повышения привилегий.
// Запуск с повышением привилегий.
КодВозврата = Оболочка.ShellExecute("cmd", "/c """ + ИмяФайлаКоманды + """",, "runas", 0);
Оболочка = Неопределено;
Исключение
@@ -1210,14 +1210,16 @@
// http://www.w3.org/2001/10/xml-exc-c14n#
// http://www.w3.org/2001/10/xml-exc-c14n#WithComments
// Canonical XML 1.0
// http://www.w3.org/TR/2001/REC-xml-c14n-20010315#
// http://www.w3.org/TR/2001/REC-xml-c14n-20010315
// http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
// Canonical XML 1.1
// http://www.w3.org/2006/12/xml-c14n11#
// http://www.w3.org/2006/12/xml-c14n11
// http://www.w3.org/2006/12/xml-c14n11#WithComments
// Enveloped signature (по факту игнорируется, так как
// не поддерживается пустой URI в элементе SignedInfo.Reference):
// http://www.w3.org/2000/09/xmldsig#enveloped-signature
// СМЭВ рекомендации 3.5.0.1, "АЛГОРИТМ трансформации XML":
// urn://smev-gov-ru/xmldsig/transform
//
// Сертификат может быть указан в KeyInfo, как base64 значение:
// - либо в виде элемента X509Data.X509Certificate
@@ -1265,7 +1267,7 @@
// Возвращаемое значение:
// Структура:
// * Вариант - Строка - вариант типового шаблона XML для обмена с сервисом:
// "furs.mark.crpt.ru_v1" (начальное значение).
// "furs.mark.crpt.ru_v1" (начальное значение) или "dmdk.goznak.ru_v1".
// Возможны другие форматы, если удовлетворяют требованиям,
// указанным в описании функции КонвертXML.
//
@@ -64,7 +64,8 @@
Если Субъект.Свойство("INN") Тогда
Свойства.ИНН = ПодготовитьСтроку(Субъект.INN);
ИначеЕсли Субъект.Свойство("OID1_2_643_100_4")Тогда
Свойства.ИНН = ПодготовитьСтроку(Субъект.OID1_2_643_100_4);
ИначеЕсли Субъект.Свойство("OID1_2_643_3_131_1_1") Тогда
Свойства.ИНН = ПодготовитьСтроку(Субъект.OID1_2_643_3_131_1_1);
КонецЕсли;
@@ -2114,19 +2114,35 @@
Функция КанонизированныйТекстXML(ОбъектКомпоненты, ОбластьXML, Алгоритмы)
Результат = Неопределено;
ВышестоящиеПространстваИменДобавлены = Ложь;
Для Каждого Алгоритм Из Алгоритмы Цикл
Если Алгоритм.Вид = "envsig" Тогда
Продолжить;
ИначеЕсли Алгоритм.Вид = "c14n" Тогда
ОписаниеНачалаОбласти = ЭлектроннаяПодписьСлужебныйКлиентСервер.НачалоОбластиXMLДляC14N(
ИначеЕсли Алгоритм.Вид = "c14n"
Или Алгоритм.Вид = "smev" Тогда
Если Не ВышестоящиеПространстваИменДобавлены Тогда
ОписаниеНачалаОбласти = ЭлектроннаяПодписьСлужебныйКлиентСервер.РасширенноеНачалоОбластиXML(
ОбластьXML, Алгоритм, Результат);
Если ЗначениеЗаполнено(ОписаниеНачалаОбласти.ТекстОшибки) Тогда
ВызватьИсключение ОписаниеНачалаОбласти.ТекстОшибки;
КонецЕсли;
ТекстXML = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОбластиXML(ОбластьXML,
ОписаниеНачалаОбласти.Начало);
ВышестоящиеПространстваИменДобавлены = Истина;
ИначеЕсли Результат = Неопределено Тогда
ТекстXML = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОбластиXML(ОбластьXML);
Иначе
ТекстXML = Результат;
КонецЕсли;
Если Алгоритм.Вид = "c14n" Тогда
Результат = C14N_body(ОбъектКомпоненты, ТекстXML, Алгоритм);
Иначе
Результат = TransformSMEV(ОбъектКомпоненты, ТекстXML);
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -2159,6 +2175,26 @@
КонецФункции
Функция TransformSMEV(ОбъектКомпоненты, ТекстXML)
Попытка
КанонизированныйТекстXML = ОбъектКомпоненты.TransformSMEV(ТекстXML);
Исключение
ТекстОшибки = НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты XMLDSig.'")
+ Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение ТекстОшибки;
КонецПопытки;
Если КанонизированныйТекстXML = Неопределено Тогда
ТекстОшибки = НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты XMLDSig.'")
+ Символы.ПС + ОбъектКомпоненты.GetLastError();
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Возврат КанонизированныйТекстXML;
КонецФункции
Функция РезультатHash(ОбъектКомпоненты, КанонизированныйТекстXMLBody, OIDАлгоритмаХеширования, ТипКриптопровайдера)
Попытка
@@ -3605,15 +3641,15 @@
Результат.Вставить("АлгоритмКанонизации", ДоступныеЗначения(""));
// Canonical XML 1.0.
Значения = Результат.АлгоритмКанонизации.Значения;
Значения.Вставить("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#", АлгоритмКанонизации("c14n", 0, 0));
Если ПроверкаПодписи Тогда
Значения.Вставить("http://www.w3.org/TR/2001/REC-xml-c14n-20010315", АлгоритмКанонизации("c14n", 0, 0));
Если ПроверкаПодписи Тогда
Значения.Вставить("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#", АлгоритмКанонизации("c14n", 0, 0));
КонецЕсли;
Значения.Вставить("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments", АлгоритмКанонизации("c14n", 0, 1));
// Canonical XML 1.1.
Значения.Вставить("http://www.w3.org/2006/12/xml-c14n11#", АлгоритмКанонизации("c14n", 2, 0));
Если ПроверкаПодписи Тогда
Значения.Вставить("http://www.w3.org/2006/12/xml-c14n11", АлгоритмКанонизации("c14n", 2, 0));
Если ПроверкаПодписи Тогда
Значения.Вставить("http://www.w3.org/2006/12/xml-c14n11#", АлгоритмКанонизации("c14n", 2, 0));
КонецЕсли;
Значения.Вставить("http://www.w3.org/2006/12/xml-c14n11#WithComments", АлгоритмКанонизации("c14n", 2, 1));
// Exclusive XML Canonicalization 1.0.
@@ -3629,6 +3665,7 @@
Результат.Вставить("АлгоритмыТрансформации", ДоступныеЗначения(""));
Значения = Новый Соответствие(Новый ФиксированноеСоответствие(Значения));
Результат.АлгоритмыТрансформации.Значения = Значения;
Значения.Вставить("urn://smev-gov-ru/xmldsig/transform", АлгоритмКанонизации("smev", 0, 0));
Значения.Вставить("http://www.w3.org/2000/09/xmldsig#enveloped-signature", АлгоритмКанонизации("envsig", 0, 0));
Если ПроверкаПодписи Тогда
ПривестиКлючиКНижнемуРегистру(Результат.АлгоритмыТрансформации.Значения);
@@ -527,7 +527,12 @@
Если Результат Тогда
ВсеУчетныеЗаписи = МодульСервисКриптографииDSS.ПолучитьВсеУчетныеЗаписи();
Результат = ВсеУчетныеЗаписи.Количество() > 0;
Если ВсеУчетныеЗаписи.Количество() > 0 Тогда
СтрокаПоиска = Новый Структура("ПометкаУдаления", Истина);
Результат = ВсеУчетныеЗаписи.НайтиСтроки(СтрокаПоиска).Количество() <> ВсеУчетныеЗаписи.Количество();
Иначе
Результат = Ложь;
КонецЕсли;
КонецЕсли;
Возврат Результат;
@@ -985,7 +985,8 @@
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.ПоказатьОшибку = ПоказатьОшибку
И Не Контекст.ПроверятьНаСервере
И Не ИспользоватьЭлектроннуюПодписьВМоделиСервиса();
И Не ИспользоватьЭлектроннуюПодписьВМоделиСервиса()
И Не ПроверятьСертификатыОблачнойПодписью();
ПараметрыСоздания.АлгоритмПодписи = Контекст.АлгоритмПодписи;
СоздатьМенеджерКриптографии(Новый ОписаниеОповещения(
@@ -1049,9 +1050,6 @@
Если ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
// Проверка подписи и сертификата в модели сервиса.
ПроверитьПодписьВМоделиСервиса(Контекст);
ИначеЕсли ЭлектроннаяПодписьСлужебныйВызовСервера.НастроенСервисОблачнойПодписи() Тогда
// Проверка подписи в сервисе облачной подписи.
ПроверитьПодписьОблачнаяПодпись(Контекст);
Иначе
// Проверка подписи и сертификата на сервере.
Если ТипЗнч(Контекст.ИсходныеДанные) = Тип("Строка")
@@ -5281,6 +5279,7 @@
Контекст = Новый Структура;
Контекст.Вставить("Оповещение", Оповещение);
Контекст.Вставить("Результат", Результат);
Контекст.Вставить("ВышестоящиеПространстваИменДобавлены", Ложь);
Контекст.Вставить("ОбъектКомпоненты", ОбъектКомпоненты);
Контекст.Вставить("ОповещенияПриЗавершении", Новый Структура("Ошибка",
Новый ОписаниеОповещения("КанонизироватьТекстXMLЗавершениеСОшибкой", ЭтотОбъект,
@@ -5309,23 +5308,30 @@
Если Алгоритм.Вид = "envsig" Тогда
КанонизироватьТекстXMLЦиклНачало(Контекст);
ИначеЕсли Алгоритм.Вид = "c14n" Тогда
ИначеЕсли Алгоритм.Вид = "c14n"
Или Алгоритм.Вид = "smev" Тогда
ОписаниеНачалаОбласти = ЭлектроннаяПодписьСлужебныйКлиентСервер.НачалоОбластиXMLДляC14N(
Если Не Контекст.ВышестоящиеПространстваИменДобавлены Тогда
ОписаниеНачалаОбласти = ЭлектроннаяПодписьСлужебныйКлиентСервер.РасширенноеНачалоОбластиXML(
Контекст.ОбластьXML, Алгоритм, Контекст.Результат.КанонизированныйТекстXML);
Если ЗначениеЗаполнено(ОписаниеНачалаОбласти.ТекстОшибки) Тогда
КанонизироватьТекстXMLЗавершениеСОшибкой(ОписаниеНачалаОбласти.ТекстОшибки, Контекст);
Возврат;
КонецЕсли;
ТекстXML = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОбластиXML(Контекст.ОбластьXML,
ОписаниеНачалаОбласти.Начало);
Контекст.ВышестоящиеПространстваИменДобавлены = Истина;
ИначеЕсли Контекст.Результат.КанонизированныйТекстXML = Неопределено Тогда
ТекстXML = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОбластиXML(Контекст.ОбластьXML);
Иначе
ТекстXML = Контекст.Результат.КанонизированныйТекстXML;
КонецЕсли;
Если Алгоритм.Вид = "c14n" Тогда
Оповещение = Новый ОписаниеОповещения(
"C14N_bodyПослеВызова", ЭтотОбъект, Контекст,
"C14N_bodyПослеОшибкиВызова", ЭтотОбъект);
Попытка
// АПК:216-выкл - №467.2.1 допустимо слово из кириллицы НачатьВызов и
// латиницы c14n_body, так как первое префикс, а второе имя метода.
@@ -5337,6 +5343,18 @@
НСтр("ru = 'Ошибка вызова метода C14N_body компоненты XMLDSig.'")
+ Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Иначе
Оповещение = Новый ОписаниеОповещения(
"TransformSMEVПослеВызова", ЭтотОбъект, Контекст,
"TransformSMEVПослеОшибкиВызова", ЭтотОбъект);
Попытка
Контекст.ОбъектКомпоненты.НачатьВызовTransformSMEV(Оповещение, ТекстXML);
Исключение
ЗавершитьОперациюСОшибкой(Контекст,
НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты XMLDSig.'")
+ Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
Иначе
КанонизироватьТекстXMLЦиклНачало(Контекст);
КонецЕсли;
@@ -5365,6 +5383,28 @@
КонецПроцедуры
Процедура TransformSMEVПослеВызова(КанонизированныйТекстXML, Параметры, Контекст) Экспорт
Если КанонизированныйТекстXML = Неопределено Тогда
НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода TransformSMEV произошла ошибка:'"), Контекст);
Возврат;
КонецЕсли;
Контекст.Результат.КанонизированныйТекстXML = КанонизированныйТекстXML;
КанонизироватьТекстXMLЦиклНачало(Контекст);
КонецПроцедуры
Процедура TransformSMEVПослеОшибкиВызова(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ЗавершитьОперациюСОшибкой(Контекст,
НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты XMLDSig.'")
+ Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПроцедуры
Процедура КанонизироватьТекстXMLЗавершениеСОшибкой(ТекстОшибки, Контекст) Экспорт
Контекст.Результат.ТекстОшибки = ТекстОшибки;
@@ -6384,7 +6424,6 @@
Результат = ИспользоватьСервисОблачнойПодписи()
И ЭлектроннаяПодписьСлужебныйВызовСервера.НастроенСервисОблачнойПодписи();
Результат = Ложь;
Возврат Результат;
@@ -6435,12 +6474,8 @@
Процедура ПроверитьСертификатПослеПроверкиОблачнаяПодпись(РезультатВызова, Контекст) Экспорт
Если Не РезультатВызова.Выполнено Тогда
Контекст.ОписаниеОшибкиНаСервере = КраткоеПредставлениеОшибки(РезультатВызова.Ошибка);
Если ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
ПроверитьСертификатВМоделиСервиса(Контекст);
Иначе
Контекст.ОписаниеОшибкиНаСервере = ТекстОшибкиОблачнаяПодписьНастройкиОперации(РезультатВызова.Ошибка);
ПроверитьСертификатПослеНеуспешнойПроверки(Контекст);
КонецЕсли;
Возврат;
КонецЕсли;
@@ -6457,17 +6492,15 @@
// Продолжение процедуры ПроверитьПодпись.
Процедура ПроверитьПодписьОблачнаяПодпись(Контекст)
Если Не ЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере() Тогда
Если ТипЗнч(Контекст.ИсходныеДанные) = Тип("Строка")
И ЭтоАдресВременногоХранилища(Контекст.ИсходныеДанные) Тогда
Контекст.ИсходныеДанные = ПолучитьИзВременногоХранилища(Контекст.ИсходныеДанные);
КонецЕсли;
Контекст.Вставить("МенеджерКриптографии", "ОблачнаяПодпись");
Контекст.Вставить("ПроверитьСертификатНаКлиенте");
ПроверитьПодписьНаКлиентеОблачнаяПодпись(Контекст);
КонецЕсли;
КонецПроцедуры
@@ -6506,17 +6539,14 @@
Процедура ПроверитьПодписьНаКлиентеПослеПроверкиПодписиОблачнаяПодпись(РезультатВызова, Контекст) Экспорт
Если Не РезультатВызова.Выполнено Тогда
Если ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
ПроверитьПодписьВМоделиСервиса(Контекст);
Иначе
ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи(РезультатВызова.Ошибка, Ложь, Контекст);
КонецЕсли;
ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи(
ТекстОшибкиОблачнаяПодписьНастройкиОперации(РезультатВызова.Ошибка), Ложь, Контекст);
Возврат;
КонецЕсли;
Если Не РезультатВызова.Результат Тогда
ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи(
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОшибкиСервисаПодписьНедействительна(),
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОшибкиСервисаПодписьНедействительна(РезультатВызова.Ошибка),
Ложь, Контекст);
Возврат;
КонецЕсли;
@@ -6625,6 +6655,15 @@
КонецФункции
Функция ТекстОшибкиОблачнаяПодписьНастройкиОперации(ТекстОшибки)
Результат = НСтр("ru = 'Не удалось выполнить операцию на сервисе облачной подписи.'");
Результат = Результат + Символы.ПС + Символы.ПС + ТекстОшибки;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область ДиагностикаЭлектроннойПодписи
@@ -752,9 +752,18 @@
КонецФункции
// Только для внутреннего использования.
Функция ТекстОшибкиСервисаПодписьНедействительна() Экспорт
//
// Возвращаемое значение:
// Строка
//
Функция ТекстОшибкиСервисаПодписьНедействительна(ТекстОшибки = "") Экспорт
Возврат НСтр("ru = 'Облачный сервис сообщил, что подпись недействительна.'");
Результат = НСтр("ru = 'Облачный сервис сообщил, что подпись недействительна.'");
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
Результат = Результат + Символы.ПС + Символы.ПС + ТекстОшибки;
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -1358,6 +1367,9 @@
Если Параметры.Вариант = "furs.mark.crpt.ru_v1" Тогда
КонвертXML = КонвертXML1();
ИначеЕсли Параметры.Вариант = "dmdk.goznak.ru_v1" Тогда
КонвертXML = КонвертXML2();
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Указано неизвестное значение ""%1"" параметра %2 в функции %3'"),
@@ -1934,6 +1946,49 @@
КонецФункции
// Вариант "dmdk.goznak.ru_v1".
Функция КонвертXML2()
Возврат
"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""
| xmlns:ns=""urn://xsd.dmdk.goznak.ru/exchange/1.0""
| xmlns:ns1=""urn://xsd.dmdk.goznak.ru/batch/1.0""
| xmlns:ns2=""urn://xsd.dmdk.goznak.ru/contractor/1.0""
| xmlns:ns3=""urn://xsd.dmdk.goznak.ru/types/1.0"">
| <soapenv:Header />
| <soapenv:Body>
| <ns:CheckBatchRequest>
| <ns:CallerSignature>
| <ds:Signature xmlns:ds=""http://www.w3.org/2000/09/xmldsig#"">
| <ds:SignedInfo>
| <ds:CanonicalizationMethod Algorithm=""http://www.w3.org/2001/10/xml-exc-c14n#"" />
| <ds:SignatureMethod Algorithm=""%SignatureMethod%"" />
| <ds:Reference URI=""#body"">
| <ds:Transforms>
| <ds:Transform Algorithm=""http://www.w3.org/2001/10/xml-exc-c14n#"" />
| <ds:Transform Algorithm=""urn://smev-gov-ru/xmldsig/transform"" />
| </ds:Transforms>
| <ds:DigestMethod Algorithm=""%DigestMethod%"" />
| <ds:DigestValue>%DigestValue%</ds:DigestValue>
| </ds:Reference>
| </ds:SignedInfo>
| <ds:SignatureValue>%SignatureValue%</ds:SignatureValue>
| <ds:KeyInfo>
| <ds:X509Data>
| <ds:X509Certificate>%BinarySecurityToken%</ds:X509Certificate>
| </ds:X509Data>
| </ds:KeyInfo>
| </ds:Signature>
| </ns:CallerSignature>
| <ns:RequestData Id=""body"">
| %MessageXML%
| </ns:RequestData>
| </ns:CheckBatchRequest>
| </soapenv:Body>
|</soapenv:Envelope>";
КонецФункции
#КонецОбласти
#Область ОбластьXML
@@ -2023,11 +2078,13 @@
// Возвращаемое значение:
// Строка
//
Функция НачалоОбластиXMLДляC14N(ОбластьXML, Алгоритм, ТекстXML) Экспорт
Функция РасширенноеНачалоОбластиXML(ОбластьXML, Алгоритм, ТекстXML) Экспорт
Результат = Новый Структура("Начало, ТекстОшибки", , "");
Если Алгоритм.Версия = 1 Тогда
Если Алгоритм.Вид = "c14n"
Или Алгоритм.Вид = "smev" Тогда
Если ТекстXML = Неопределено Тогда
ТекущаяОбластьXML = ОбластьXML;
Иначе
+11 -11
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5d0a309c-f68d-11eb-bd8d-0242ac110002">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a66517d6-00ea-11ec-7493-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="5d0a309d-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="5d0a30ce-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5d0a30d8-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="5d0a30d9-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="5d0a30e2-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5d0a30e3-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="50bdec87-1632-4f41-bb9c-4ee421ecf766"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="a66517e0-00ea-11ec-7493-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="a6651812-00ea-11ec-7493-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="a665181c-00ea-11ec-7493-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="a665181d-00ea-11ec-7493-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="a665181e-00ea-11ec-7493-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="a6651826-00ea-11ec-7493-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="15965e6a-dc0d-411b-8dcd-721cf5b7bbe8"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.5.146</version>
<version>3.1.5.163</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -656,7 +656,7 @@
<roles>Role.ПросмотрСвязанныеДокументы</roles>
<roles>Role.РедактированиеПечатныхФорм</roles>
<roles>Role.РедактированиеРеквизитовОбъектов</roles>
<roles>Role.РежимВсеФункции</roles>
<roles>Role.РежимТехническогоСпециалиста</roles>
<roles>Role.СохранениеДанныхПользователя</roles>
<roles>Role.УдаленныйДоступOData</roles>
<roles>Role.УдаленныйДоступБазоваяФункциональность</roles>
@@ -894,7 +894,6 @@
<commonModules>CommonModule.ОбщегоНазначенияКлиентПовтИсп</commonModules>
<commonModules>CommonModule.ОбщегоНазначенияКлиентСервер</commonModules>
<commonModules>CommonModule.ОбщегоНазначенияПереопределяемый</commonModules>
<commonModules>CommonModule.ОбщегоНазначенияСлужебный</commonModules>
<commonModules>CommonModule.ОбщегоНазначенияСлужебныйКлиент</commonModules>
<commonModules>CommonModule.ОбщегоНазначенияСлужебныйКлиентСервер</commonModules>
<commonModules>CommonModule.ОрганизацииПереопределяемый</commonModules>
@@ -1319,6 +1318,7 @@
<scheduledJobs>ScheduledJob.ОбновлениеИндексаППД</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбновлениеПредопределенныхВариантовОтчетов</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбновлениеСтатусовДоставкиSMS</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбработкаСервисовИнтеграции</scheduledJobs>
<scheduledJobs>ScheduledJob.ОтключениеПроверкиИспользованияУдаляемыхОбъектов</scheduledJobs>
<scheduledJobs>ScheduledJob.ОтложенноеОбновлениеИБ</scheduledJobs>
<scheduledJobs>ScheduledJob.ОтправкаSMS</scheduledJobs>
@@ -1 +1 @@
{6,1,1,ba8a7c22-f68d-11eb-c486-0242ac110002,1,a2dd95d2-f68d-11eb-1388-0242ac110002,"3.1.5.146","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6460,1,0,5d0a309c-f68d-11eb-bd8d-0242ac110002,5d0a309c-f68d-11eb-bd8d-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated
{6,1,1,05b8acd4-00eb-11ec-1d9e-0242ac110002,1,ed069584-00ea-11ec-9286-0242ac110002,"3.1.5.163","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6460,1,0,a66517d6-00ea-11ec-7493-0242ac110002,a66517d6-00ea-11ec-7493-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated
@@ -22,6 +22,10 @@
Возврат;
КонецЕсли;
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
ЗначениеИзменено = Значение <> Константы.ИспользоватьДополнительныеОтчетыИОбработки.Получить();
КонецПроцедуры
@@ -32,6 +36,10 @@
Возврат;
КонецЕсли;
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
Если ЗначениеИзменено Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
@@ -32,6 +32,10 @@
Возврат;
КонецЕсли;
Если Не УправлениеДоступомСлужебный.ВариантВстроенногоЯзыкаРусский() Тогда
Значение = Истина;
КонецЕсли;
Если Значение И Не СтароеЗначение Тогда // Включено.
УправлениеДоступомСлужебный.ОчиститьПоследнееОбновлениеДоступа();
РегистрыСведений.ПараметрыОграниченияДоступа.ОбновитьДанныеРегистра();
@@ -22,7 +22,7 @@
Возврат;
КонецЕсли;
СтароеЗначение = Константы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Получить();
СтароеЗначение = Константы.ПервоеОбновлениеДоступаЗавершилось.Получить();
КонецПроцедуры
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body class="">
<p>Для администратора в программе предусмотрена возможность завершать работу всех активных <a href="Catalog.Пользователи/Help">пользователей</a> (включая <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a>, инициировавшего блокировку) и блокировать вход в программу на определенный период времени. </p>
<p>Такая возможность востребована для проведения профилактических или срочных работ в программе. Обычно такие работы проводят в ночные часы, чтобы не затруднять работу в программе других пользователей. Однако бывают различные внеплановые ситуации. Например, необходимо провести обновление версии программы, восстановление программы после сбоя электроснабжения, резервное копирование информационной базы, или главному бухгалтеру необходимо срочно рассчитать сложный отчет. Большинство этих работ не могут быть проведены, если пользователи продолжают работать в программе.</p>
<p>При работе в клиент-серверном режиме имеется возможность блокировки работы <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентных заданий</a>.</p>
@@ -91,7 +91,17 @@
<div>"C:\Program Files\1cv8\bin\1cv8.exe" ENTERPRISE /F"C:\Documents and Settings\Админ\Мои документы\1C\DemoSSL" /C РазрешитьРаботуПользователей /UC &lt;код разрешения&gt;</div>
</li>
<li>
<div>Запуск клиентского приложения с параметром <strong>РазрешитьРаботуПользователей</strong> предназначен только для снятия блокировки и не предназначен для работы с программой, т.е. этот параметр предназначен для выполнения в пакетном режиме - работа клиентского приложения, запущенного с этим параметром, будет завершена сразу после запуска.</div></li></ul></li></ul><h3>Дополнительные возможности и ограничения</h3>
<div>Запуск клиентского приложения с параметром <strong>РазрешитьРаботуПользователей</strong> предназначен только для снятия блокировки и не предназначен для работы с программой, т.е. этот параметр предназначен для выполнения в пакетном режиме - работа клиентского приложения, запущенного с этим параметром, будет завершена сразу после запуска.</div></li></ul></li></ul><h3>Расширенные возможности командной строки ЗавершитьРаботуПользователей</h3>
<p>Установить блокировку работы с программой можно из командной строки с помощью параметра <b>ЗавершитьРаботуПользователей</b>, который расширен свойствами:</p>
<p></p>
<ul><li><b>Имя администратора</b> - имя администратора кластера серверов 1С;</li>
<li><b>Пароль администратора</b> - пароль администратора кластера серверов 1С;</li>
<li><b>Сообщение</b> - текст сообщения, выдаваемого пользователям в качестве предупреждения о планируемой блокировке соединений;</li>
<li><b>КодРазрешения</b> - произвольная строка для входа в программу. несмотря на установленную блокировку (для параметра запуска /UC);</li>
<li><b>ОжиданиеМин</b> - время отсрочки начала блокировки программы в минутах;</li>
<li><b>ДлительностьМин</b> - длительность блокировки в минутах.</li></ul><p></p>
<p>Например, команда может быть такой: </p>
<ul><li> /C ЗавершитьРаботуПользователей, ИмяАдминистратора=Администратор, ПарольАдминистратора=1, Сообщение=Необходимо завершить работу в программе для внепланового обновления, КодРазрешения=Обновление, ОжиданиеМин=5, ДлительностьМин=30</li></ul><h3>Дополнительные возможности и ограничения</h3>
<ul><li>
<div>В клиент-серверном варианте работы также есть возможность заблокировать выполнение регламентных и фоновых заданий. Для этого может потребоваться ввести дополнительные <a href="CommonForm.ПараметрыАдминистрированияПрограммы/Help">параметры</a> для подключения к кластеру серверов по команде <strong>Параметры администрирования программы</strong>. Кроме того, для выполнения действий установки и снятия блокировки работы пользователей также можно использовать утилиту администрирования кластера серверов 1С:Предприятия. </div>
</li>
@@ -88,7 +88,7 @@
Если Не ПустаяСтрока(СтрокаРеквизитов) Тогда
СтрокаРеквизитов = СтрокаРеквизитов + "," + Символы.ПС;
КонецЕсли;
СтрокаРеквизитов = СтрокаРеквизитов + ИмяРеквизита;
СтрокаРеквизитов = СтрокаРеквизитов + ИмяТабличнойЧасти + "." + ИмяРеквизита + " КАК " + ИмяРеквизита; //@query-part-2
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + СтрокаРеквизитов +"
|)";
@@ -2347,9 +2347,25 @@
Поля.Вставить("SNILS", СтраховойНомерПФР);
СписокПараметров.Добавить("1.2.643.100.3", Поля.SNILS);
СпособИдентификации = "";
Если ЗапросПосле_01_09_2021() Тогда
Если ЭтоФизическоеЛицо ИЛИ ЭтоИндивидуальныйПредприниматель Тогда
// Поле INN - ИНН индивидуального предпринимателя или физического лица.
Поля.Вставить("INN", ?(ЭтоФизическоеЛицо, ВладелецИНН, ИНН));
СписокПараметров.Добавить("1.2.643.3.131.1.1", Поля.INN);
Иначе
// Поле INNLE - ИНН организации.
Поля.Вставить("INNLE", Прав(ИНН, 10));
СписокПараметров.Добавить("1.2.643.100.4", Поля.INNLE);
КонецЕсли;
// Поле IdentificationKind - способ идентификации заявителя. 0 - при личном присутствии.
СпособИдентификации = СтрШаблон("
|IdentKind:{%1}", 0);
Иначе
// Поле INN - ИНН организации или индивидуального предпринимателя или физического лица.
Поля.Вставить("INN", Прав("00" + ?(ЭтоФизическоеЛицо, ВладелецИНН, ИНН), 12));
СписокПараметров.Добавить("1.2.643.3.131.1.1", Поля.INN);
КонецЕсли;
// Поле E - электронная почта должностного лица организации или индивидуального предпринимателя или физического лица.
Поля.Вставить("E", Лев(ЭлектроннаяПочта, 255));
@@ -2378,12 +2394,20 @@
|CertPolicies:{<1.2.643.100.113.1=>}
|dwKeyUsage:{240}
|SignTool:{%3}
|CertTemplate:{%4}
|CertTemplate:{%4}%5
|}",
Свойства,
ИспользованиеКлюча,
ПредставлениеПрограммы,
ШаблонСертификата);
ШаблонСертификата,
СпособИдентификации);
КонецФункции
&НаСервереБезКонтекста
Функция ЗапросПосле_01_09_2021()
Возврат МестноеВремя(ТекущаяУниверсальнаяДата(), "GMT+3") >= Дата(2021,9,1);
КонецФункции
@@ -2467,6 +2491,10 @@
ЗаполнитьЗначенияСвойств(Макет.Параметры, ЭтотОбъект);
ЗаполнитьЗначенияСвойств(Макет.Параметры, ДокументыПоляСертификата);
Если ДокументыПоляСертификата.Свойство("INNLE") Тогда
Макет.Параметры.INN = ДокументыПоляСертификата.INNLE;
КонецЕсли;
Макет.Параметры.Телефон = ?(ЭтоФизическоеЛицо, ВладелецТелефон, Телефон);
ДокументВидПредставление = ПредставлениеВидаДокумента(ДокументВид);
@@ -0,0 +1,19 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta></head><body>
<div>Предназначена для составления формулы из доступных полей и операторов.</div>
<div>
<div>Открывается из окна <b>Выбор поля отчета</b> (см. <a href="CommonForm.ФормаНастроекОтчета/Help">Настройки отчета</a>) -  с помощью кнопки <b>Добавить формулу</b>.</div>
<h3 style="font-size: 13.4399995803833px;">Построение формулы</h3>
<div>
<ul><li>
<div>Заполните поле <b>Наименование</b> для сохранения формулы.</div></li>
<li>Выберите поля и операторы для построения формулы, пользуясь списками в нижней части окна. </li>
<li>Можно найти нужные операторы или поля, написав их наименования или его часть в полях для поиска.</li>
<li>Для сохранения формулы нажмите кнопку <b>Завершить редактирование</b>.</li></ul></div>
<h3 style="font-size: 13.4399995803833px;">Проверка формулы</h3>
<div>
<ul><li>После составления формулы нажмите <b>Проверить формулу</b>.</li></ul><h3 style="font-size: 13.4399995803833px;">См. также:</h3></div>
<div>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li>
<li><a href="v8help://dcsui/SKD_Lang">Язык выражений системы компоновки данных</a>.</li></ul></div>
</div></body></html>
@@ -10,6 +10,11 @@
<value>Конструктор формул</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<forms uuid="6d40a555-9c20-4643-b689-2f61df772f78">
<name>РедактированиеФормулы</name>
<synonym>
@@ -527,12 +527,12 @@
Если Результат.Статус = "Выполнено" Тогда
ЗаполнитьНастройки();
РазвернутьДеревоЗначений();
Элементы.СтраницыДлительнаяОперация.ТекущаяСтраница = Элементы.СтраницаНастройки;
Элементы.БыстрыйПоиск.Доступность = Истина;
Элементы.КоманднаяПанель.Доступность = Истина;
ПодключитьОбработчикОжидания("Подключаемый_РазвернутьДеревоЗначений", 0.1, Истина);
ИначеЕсли Результат.Статус = "Ошибка" Тогда
Элементы.СтраницыДлительнаяОперация.ТекущаяСтраница = Элементы.СтраницаНастройки;
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
@@ -1160,7 +1160,7 @@
КонецПроцедуры
&НаКлиенте
Процедура РазвернутьДеревоЗначений()
Процедура Подключаемый_РазвернутьДеревоЗначений()
Строки = НастройкиОтчетов.ПолучитьЭлементы();
Для Каждого Строка Из Строки Цикл
@@ -1707,7 +1707,7 @@
Результат = Новый Массив;
ОбновлениеИнформационнойБазыПереопределяемый.ПриФормированииСпискаРазрабатываемыхПодсистем(Результат);
ОбновлениеИнформационнойБазыПереопределяемый.ПриФормированиеСпискаРазрабатываемыхПодсистем(Результат);
ОбновлениеИнформационнойБазыПереопределяемый.ПриФормированиеСпискаРазрабатываемыхПодсистем(Результат); // АПК:222 Для обратной совместимости.
Возврат Результат;
КонецФункции
@@ -45,13 +45,13 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
УпрощенныйИнтерфейс = МодульУправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа();
Элементы.ОткрытьГруппыДоступа.Видимость = НЕ УпрощенныйИнтерфейс;
Элементы.ИспользоватьГруппыПользователей.Видимость = НЕ УпрощенныйИнтерфейс;
Элементы.ОткрытьГруппыДоступа.Видимость = Не УпрощенныйИнтерфейс;
Элементы.ИспользоватьГруппыПользователей.Видимость = Не УпрощенныйИнтерфейс;
Элементы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Видимость
= Пользователи.ЭтоПолноправныйПользователь(, Истина);
= МодульУправлениеДоступомСлужебный.ВариантВстроенногоЯзыкаРусский()
И Пользователи.ЭтоПолноправныйПользователь(, Истина);
Элементы.ОбновлениеДоступаНаУровнеЗаписей.Видимость =
Элементы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Видимость
И МодульУправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина);
МодульУправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина);
Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда
Элементы.ОграничиватьДоступНаУровнеЗаписей.Доступность = Ложь;
@@ -333,8 +333,7 @@
Подключаемый_ПриИзмененииРеквизита(Элемент);
Элементы.ОбновлениеДоступаНаУровнеЗаписей.Видимость =
Элементы.ОграничиватьДоступНаУровнеЗаписейУниверсально.Видимость
И НаборКонстант.ОграничиватьДоступНаУровнеЗаписейУниверсально;
НаборКонстант.ОграничиватьДоступНаУровнеЗаписейУниверсально;
КонецПроцедуры
@@ -121,8 +121,14 @@
&НаКлиенте
Процедура ОчиститьИндекс(Команда)
ОчиститьИндексСервер();
ПоказатьОповещениеПользователя(НСтр("ru = 'Полнотекстовый поиск'"),, НСтр("ru = 'Индекс успешно очищен'"));
ТекстВопроса = НСтр("ru = 'Индекс поиска будет очищен, что приведет к невозможности
|полнотекстового поиска в программе.
|Для включения полнотекстового поиска потребуется выполнить обновление индекса.
|
|Продолжить?'");
Обработчик = Новый ОписаниеОповещения("ОчиститьИндексПослеОтветаНаВопрос", ЭтотОбъект);
ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
@@ -229,6 +235,16 @@
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьИндексПослеОтветаНаВопрос(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ОчиститьИндексСервер();
ПоказатьОповещениеПользователя(НСтр("ru = 'Полнотекстовый поиск'"),, НСтр("ru = 'Индекс успешно очищен'"));
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Вызов сервера
@@ -428,6 +428,7 @@
НаборЗаписей.Прочитать();
Запись = НаборЗаписей[0];
Запись.ЧислоПопыток = 0;
Запись.Статус = Перечисления.СтатусыОбработчиковОбновления.НеВыполнялся;
СтатистикаВыполнения = Запись.СтатистикаВыполнения.Получить();
СтатистикаВыполнения.Вставить("КоличествоЗапусков", 0);
@@ -252,6 +252,7 @@
<autoFill>true</autoFill>
</contextMenu>
<representation>HierarchicalList</representation>
<changeRowSet>true</changeRowSet>
<changeRowOrder>true</changeRowOrder>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -67,11 +67,13 @@
Если Изменен Тогда
Изменен = Ложь;
Если НЕ ОтказОтПроверки Тогда
Если НЕ ОтказОтПроверки И ПараметрыЗаписи.Количество() = 0 Тогда
ОповещениеСледующее = Новый ОписаниеОповещения("ПроверитьПодключениеКлиент", ЭтотОбъект);
ПоказатьВопрос(ОповещениеСледующее,
НСтр("ru = 'Данные учетной записи были изменены, проверить подключение к серверу?'", СервисКриптографииDSSСлужебныйКлиент.КодЯзыка()),
РежимДиалогаВопрос.ДаНет, 30);
Иначе
НастройкиПользователя = ОбновитьНастройкиПользователя(Объект.Ссылка);
КонецЕсли;
КонецЕсли;
@@ -152,7 +152,7 @@
&НаКлиенте
Процедура СервисПодписиАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка);
ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка, "SignServer");
КонецПроцедуры
@@ -166,7 +166,7 @@
&НаКлиенте
Процедура СервисПроверкиАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка);
ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка, "Verify");
КонецПроцедуры
@@ -180,7 +180,7 @@
&НаКлиенте
Процедура СервисИдентификацииАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка);
ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка, "STS");
КонецПроцедуры
@@ -339,6 +339,7 @@
СервисКриптографииDSSКлиент.ВыбратьНастройкиСервиса(ОписаниеСледующее, Объект.АдресСервера, ПараметрыОперации);
Иначе
ПараметрыОперации = СервисКриптографииDSSСлужебныйКлиент.ПодготовитьПараметрыОперации(Ложь);
ПараметрыОперации.Вставить("СинхронныйРежим", Ложь);
СервисКриптографииDSSКлиент.ПолучитьОписаниеСервиса(ОписаниеСледующее, Объект.АдресСервера, ПараметрыОперации);
КонецЕсли;
@@ -518,14 +519,19 @@
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьСписокСервером(Элемент, ТекстРедактирования, СтандартнаяОбработка = Истина)
Процедура ДополнитьСписокСервером(Элемент, ТекстРедактирования, СтандартнаяОбработка = Неопределено, ТекстПодсказки = "")
Если ПустаяСтрока(ТекстРедактирования) Тогда
Возврат;
КонецЕсли;
НачалоСтроки = 0;
КонецСтроки = 0;
НачалоПозиции = 0;
Элемент.ПолучитьГраницыВыделения(,НачалоПозиции,,);
КонецПозиции = 0;
Если СтандартнаяОбработка <> Неопределено Тогда
Элемент.ПолучитьГраницыВыделения(НачалоСтроки, НачалоПозиции, КонецСтроки, КонецПозиции);
КонецЕсли;
АдресСервера = Объект.АдресСервера;
Если ЗначениеЗаполнено(АдресСервера) Тогда
@@ -538,6 +544,8 @@
И СтрНайти(НРег(ТекстРедактирования), "http", , 1) = 0
И НачалоПозиции > ДлинаТекста Тогда
Элемент.СписокВыбора[0].Значение = АдресСервера + "/" + ТекстРедактирования;
ИначеЕсли ЗначениеЗаполнено(ТекстПодсказки) И СтрНайти(ТекстРедактирования, ТекстПодсказки, , 1) = 0 Тогда
Элемент.СписокВыбора[0].Значение = ТекстРедактирования + "/" + ТекстПодсказки;
Иначе
Элемент.СписокВыбора[0].Значение = ТекстРедактирования;
КонецЕсли;
@@ -347,7 +347,7 @@
<choiceList>
<presentation>
<key>ru</key>
<value>&amp;Файл обновления не требуется, так как он уже загружен в основную конфигурацию</value>
<value>Файл обновления не требуется, так как он уже загружен в основную конфигурацию</value>
</presentation>
<value xsi:type="core:NumberValue">
<value>0</value>
@@ -356,7 +356,7 @@
<choiceList>
<presentation>
<key>ru</key>
<value>&amp;Укажите файл обновления или исправлений:</value>
<value>Укажите файл обновления или исправлений:</value>
</presentation>
<value xsi:type="core:NumberValue">
<value>1</value>
@@ -9,7 +9,10 @@
#Область ОписаниеПеременных
&НаКлиенте
Перем ПараметрыАдминистрирования, ФайлыИсправлений;
Перем ПараметрыАдминистрирования;
&НаКлиенте
Перем ФайлыИсправлений; // Массив из ОписаниеПередаваемогоФайла
#КонецОбласти
@@ -50,7 +53,8 @@
// Проверяем каждый раз при открытии помощника.
КонфигурацияИзменена = КонфигурацияИзменена();
ЗагрузитьРасширения = ЗагрузитьРасширенияИзменяющиеСтруктуруДанных();
НуженФайлОбновления = ?(КонфигурацияИзменена ИЛИ ЗагрузитьРасширения, 0, 1);
ЭтоВебКлиент = ОбщегоНазначения.ЭтоВебКлиент() Или ОбщегоНазначения.КлиентПодключенЧерезВебСервер();
НуженФайлОбновления = ?((КонфигурацияИзменена ИЛИ ЗагрузитьРасширения) И Не ЭтоВебКлиент, 0, 1);
Если Параметры.ЗавершениеРаботыСистемы Тогда
Элементы.ПереключательОбновленияФайл.Видимость = Ложь;
@@ -85,6 +89,9 @@
Если ЭтоБазоваяВерсия И Не ДоступнаУстановкаПатчейВБазовойВерсии Тогда
ЗаголовокВариантаВыбора = НСтр("ru = 'Укажите файл обновления'");
Элементы.ПереключательНуженФайлОбновления.СписокВыбора[1].Представление = ЗаголовокВариантаВыбора;
ИначеЕсли ЭтоВебКлиент Тогда
ЗаголовокВариантаВыбора = НСтр("ru = 'Укажите файл исправлений:'");
Элементы.ПереключательНуженФайлОбновления.СписокВыбора[1].Представление = ЗаголовокВариантаВыбора;
КонецЕсли;
ЗаполнитьПанельИнформации();
@@ -116,19 +123,17 @@
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Инициализация переменных.
ФайлыИсправлений = Новый Массив;
Если Не ПустаяСтрока(ФайлыИсправленийСтрокой) Тогда
ФайлыИсправлений = СтрРазделить(ФайлыИсправленийСтрокой, ",");
КонецЕсли;
Результат = ОбновлениеКонфигурацииКлиент.ПоддерживаетсяУстановкаОбновлений();
Если Не Результат.Поддерживается Тогда
Если Не Результат.Поддерживается
И Не Результат.ПоддерживаетсяУстановкаИсправлений Тогда
ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
Отказ = Истина;
Возврат;
КонецЕсли;
ИнициализироватьФайлыИсправлений(ФайлыИсправленийСтрокой);
Если Параметры.ВыполнитьОбновление Тогда
ПерейтиКВыборуРежимаОбновления();
Возврат;
@@ -434,13 +439,16 @@
КонецЕсли;
ИначеЕсли НуженФайлОбновления = 1 Тогда
ТекущийЭлемент = Элементы.ПолеФайлОбновления;
Если ПустаяСтрока(ВыбранныеФайлы) Тогда
ЭтоТестКлиент = СтрНайти(ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта(), "TestClient") > 0;
Если ПустаяСтрока(ВыбранныеФайлы) И Не ЭтоТестКлиент Тогда
ПодключитьОбработчикОжидания("ВыбратьФайлОбновления", 0.1, Истина);
КонецЕсли;
КонецЕсли;
Элементы.ПанельОбновлениеИзОсновнойКонфигурации.Видимость = НуженФайлОбновления = 0;
Элементы.ПолеФайлОбновления.Доступность = НуженФайлОбновления = 1;
Элементы.ПолеФайлОбновления.АвтоОтметкаНезаполненного = НуженФайлОбновления = 1;
Элементы.ПереключательНуженФайлОбновления.Доступность = Не ЭтоВебКлиент();
Элементы.ГруппаПоискИУстановкаОбновлений.Видимость = Не ЭтоВебКлиент();
КонецЕсли;
@@ -469,23 +477,216 @@
&НаКлиенте
Процедура ВыбратьФайлОбновления()
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Каталог = ПолучитьКаталогФайла(Элементы.ПолеФайлОбновления.ТекстРедактирования);
Диалог.ПроверятьСуществованиеФайла = Истина;
СвойстваДиалога = СвойстваДиалогаВыбораФайлаОбновления();
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Диалог.Заголовок = СвойстваДиалога.Заголовок;
ПараметрыЗагрузки.Диалог.Фильтр = СвойстваДиалога.Фильтр;
ПараметрыЗагрузки.Диалог.Каталог = КаталогФайлаОбновления(Элементы.ПолеФайлОбновления.ТекстРедактирования);
Если ЭтоБазоваяВерсия И Не ДоступнаУстановкаПатчейВБазовойВерсии Тогда
Диалог.Фильтр = НСтр("ru = 'Все файлы поставки (*.cf*;*.cfu)|*.cf*;*.cfu|Файлы поставки конфигурации (*.cf)|*.cf|Файлы поставки обновления конфигурации(*.cfu)|*.cfu'");
ФайловаяСистемаКлиент.ЗагрузитьФайл(
Новый ОписаниеОповещения("ПослеВыбораФайлаОбновления", ЭтотОбъект),
ПараметрыЗагрузки);
Иначе
Диалог.МножественныйВыбор = Истина;
Диалог.Фильтр = НСтр("ru = 'Все файлы (*.cf*;*.cfu;*.cfe;*.zip)|*.cf*;*.cfu;*.cfe;*.zip|Файлы поставки конфигурации (*.cf)|*.cf|Файлы поставки обновления конфигурации (*.cfu)|*.cfu|Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'");
КонецЕсли;
Диалог.Заголовок = НСтр("ru = 'Выбор поставки обновления конфигурации'");
ФайловаяСистемаКлиент.ЗагрузитьФайлы(
Новый ОписаниеОповещения("ПослеВыбораФайловОбновления", ЭтотОбъект),
ПараметрыЗагрузки);
Если Диалог.Выбрать() Тогда
ВыбранныеФайлы = СтрСоединить(Диалог.ВыбранныеФайлы, ",");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция СвойстваДиалогаВыбораФайлаОбновления()
Свойства = Новый Структура("Фильтр, Заголовок");
#Если ВебКлиент Тогда
Свойства.Заголовок = НСтр("ru = 'Выбор исправлений'");
Свойства.Фильтр = НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'");
#Иначе
Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда
Свойства.Заголовок = НСтр("ru = 'Выбор исправлений'");
Свойства.Фильтр = НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'");
Иначе
Свойства.Заголовок = НСтр("ru = 'Выбор поставки обновления конфигурации'");
ОписаниеФильтраДиалога = Новый Массив;
ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы поставки конфигурации (*.cf)|*.cf'"));
ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы поставки обновления конфигурации(*.cfu)|*.cfu'"));
Если ЭтоБазоваяВерсия И Не ДоступнаУстановкаПатчейВБазовойВерсии Тогда
ОписаниеФильтраДиалога.Вставить(0, НСтр("ru = 'Все файлы поставки (*.cf*;*.cfu)|*.cf*;*.cfu'"));
Иначе
ОписаниеФильтраДиалога.Вставить(0, НСтр("ru = 'Все файлы (*.cf*;*.cfu;*.cfe;*.zip)|*.cf*;*.cfu;*.cfe;*.zip'"));
ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'"));
КонецЕсли;
Свойства.Фильтр = СтрСоединить(ОписаниеФильтраДиалога, "|");
КонецЕсли;
#КонецЕсли
Возврат Свойства;
КонецФункции
&НаКлиенте
Процедура ПослеВыбораФайловОбновления(ОписаниеВыбранныхФайлов, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ОписаниеВыбранныхФайлов) <> Тип("Массив") Тогда
Возврат;
КонецЕсли;
ОбработатьФайлыОбновления(ОписаниеВыбранныхФайлов);
КонецПроцедуры
// Параметры:
// ОписаниеВыбранногоФайла - Неопределено
// - Структура:
// * Хранение - Строка
// * Имя - Строка
// ДополнительныеПараметры - Неопределено
//
&НаКлиенте
Процедура ПослеВыбораФайлаОбновления(ОписаниеВыбранногоФайла, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ОписаниеВыбранногоФайла) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
ОписаниеИмениФайла = СтрРазделить(ОписаниеВыбранногоФайла.Имя, ПолучитьРазделительПути());
ОписаниеВыбранногоФайла.Вставить("ИмяФайла", ОписаниеИмениФайла[ОписаниеИмениФайла.ВГраница()]);
ОписаниеВыбранныхФайлов = Новый Массив;
ОписаниеВыбранныхФайлов.Добавить(ОписаниеВыбранногоФайла);
ОбработатьФайлыОбновления(ОписаниеВыбранныхФайлов)
КонецПроцедуры
// Параметры:
// ОписаниеВыбранныхФайлов - Массив из Структура:
// * Хранение - Строка
// * Имя - Строка
// * ИмяФайла - Строка
//
&НаКлиенте
Процедура ОбработатьФайлыОбновления(ОписаниеВыбранныхФайлов)
ИнициализироватьФайлыИсправлений(ОписаниеВыбранныхФайлов, Истина);
ИменаФайловИсправлений = Новый Массив;
ИменаФайловОбновлений = Новый Массив;
Для Каждого ОписаниеВыбранногоФайла Из ОписаниеВыбранныхФайлов Цикл
Если ЭтоФайлИсправления(ОписаниеВыбранногоФайла.Имя) Тогда
ИменаФайловИсправлений.Добавить(ОписаниеВыбранногоФайла.Имя);
Иначе
ИменаФайловОбновлений.Добавить(ОписаниеВыбранногоФайла.Имя);
КонецЕсли;
КонецЦикла;
ИменаФайлов = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ИменаФайловИсправлений);
Если ИменаФайловОбновлений.Количество() > 0 Тогда
ИменаФайлов.Вставить(0, ИменаФайловОбновлений[0]);
КонецЕсли;
ВыбранныеФайлы = СтрСоединить(ИменаФайлов, ",");
КонецПроцедуры
// Параметры:
// ОписаниеФайлов - Строка
// - Массив из Структура:
// * Хранение - Строка
// * Имя - Строка
// * ИмяФайла - Строка
// Переинициализировать - Булево
//
&НаКлиенте
Процедура ИнициализироватьФайлыИсправлений(ОписаниеФайлов, Переинициализировать = Ложь)
Если ТипЗнч(ФайлыИсправлений) = Тип("Массив") И Не Переинициализировать Тогда
Возврат;
КонецЕсли;
ФайлыИсправлений = Новый Массив;
Если ТипЗнч(ОписаниеФайлов) = Тип("Массив") Тогда
Для Каждого ОписаниеФайла Из ОписаниеФайлов Цикл
Если ЭтоФайлИсправления(ОписаниеФайла.ИмяФайла) Тогда
ФайлыИсправлений.Добавить(Новый ОписаниеПередаваемогоФайла(ОписаниеФайла.Имя, ОписаниеФайла.Хранение));
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипЗнч(ОписаниеФайлов) = Тип("Строка") Тогда
ИменаФайлов = СтрРазделить(ОписаниеФайлов, ",");
Для Каждого ИмяФайла Из ИменаФайлов Цикл
Если ЭтоФайлИсправления(ИмяФайла) Тогда
ФайлыИсправлений.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяФайла));
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЭтоФайлИсправления(ИмяФайла)
Возврат СтрЗаканчиваетсяНа(ИмяФайла, ".cfe") Или СтрЗаканчиваетсяНа(ИмяФайла, ".zip");
КонецФункции
&НаКлиенте
Функция ЭтоВебКлиент()
#Если ВебКлиент Тогда
Возврат Истина;
#Иначе
Возврат ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер();
#КонецЕсли
КонецФункции
&НаКлиенте
Функция ИменаФайловИсправлений()
ИменаФайловИсправлений = Новый Массив;
Для Каждого ФайлИсправления Из ФайлыИсправлений Цикл
ИменаФайловИсправлений.Добавить(ФайлИсправления.Имя);
КонецЦикла;
Возврат ИменаФайловИсправлений;
КонецФункции
&НаКлиенте
Процедура ОбновитьИнформациюОНаличииСоединений(ТекущаяСтраница = Неопределено)
@@ -550,7 +751,7 @@
ЗаполнитьЗначенияСвойств(ПараметрыОбновления, Объект);
ПараметрыОбновления.Вставить("ЗавершениеРаботыСистемы", Параметры.ЗавершениеРаботыСистемы);
ПараметрыОбновления.Вставить("НуженФайлОбновления", Булево(НуженФайлОбновления));
ПараметрыОбновления.Вставить("ФайлыИсправлений", ФайлыИсправлений);
ПараметрыОбновления.Вставить("ФайлыИсправлений", ИменаФайловИсправлений());
ПараметрыОбновления.Вставить("КонфигурацияИзменена", КонфигурацияИзменена);
ПараметрыОбновления.Вставить("ЗагрузитьРасширения", ЗагрузитьРасширения);
@@ -599,7 +800,8 @@
&НаКлиенте
Процедура ПерейтиСоСтраницыФайлаОбновления()
ФайлыИсправлений = Новый Массив;
ИнициализироватьФайлыИсправлений(ВыбранныеФайлы);
Объект.ИмяФайлаОбновления = "";
Если Не ПустаяСтрока(ИсходныеКонфигурации) Тогда
УдалитьИзВременногоХранилища(ИсходныеКонфигурации);
@@ -608,9 +810,7 @@
ИменаВыбранныхФайлов = СтрРазделить(ВыбранныеФайлы, ",");
Для Каждого ИмяФайла Из ИменаВыбранныхФайлов Цикл
Если СтрЗаканчиваетсяНа(ИмяФайла, ".cfe") Или СтрЗаканчиваетсяНа(ИмяФайла, ".zip") Тогда
ФайлыИсправлений.Добавить(ИмяФайла);
Иначе // Это файл обновления.
Если Не ЭтоФайлИсправления(ИмяФайла) Тогда
Если Не ПустаяСтрока(Объект.ИмяФайлаОбновления) Тогда
ВызватьИсключение НСтр("ru = 'Допустимо выбирать только один файл обновления.'");
КонецЕсли;
@@ -701,15 +901,14 @@
&НаКлиенте
Процедура ПерейтиКУстановкеИсправлений()
ЗагружаемыеФайлы = Новый Массив;
Для Каждого ФайлИсправления Из ФайлыИсправлений Цикл
ЗагружаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ФайлИсправления));
КонецЦикла;
ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьУстановкуИсправлений", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Интерактивно = Ложь;
ЗагружаемыеФайлы = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ФайлыИсправлений);
ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения, ПараметрыЗагрузки, ЗагружаемыеФайлы);
КонецПроцедуры
@@ -870,7 +1069,6 @@
////////////////////////////////////////////////////////////////////////////////
// Планирование обновления в указанное время.
&НаКлиенте
// Возвратить каталог файла - часть пути без имени файла.
//
// Параметры:
@@ -879,9 +1077,11 @@
// Возвращаемое значение:
// Строка - каталог файла
//
Функция ПолучитьКаталогФайла(Знач ПутьКФайлу)
&НаКлиенте
Функция КаталогФайлаОбновления(Знач ПутьКФайлу)
ПозицияСимвола = СтрНайти(ПутьКФайлу, ПолучитьРазделительПути(), НаправлениеПоиска.СКонца);
ПозицияСимвола = СтрНайти(ПутьКФайлу, "\", НаправлениеПоиска.СКонца);
Если ПозицияСимвола > 1 Тогда
Возврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);
Иначе
@@ -935,5 +1135,4 @@
КонецФункции
#КонецОбласти
@@ -17,24 +17,32 @@ var removeFixNames = [ИменаУдаляемыхИсправлений] // И
var v8conf = [ИмяИсполняемогоФайлаКонфигуратора] // Путь к исполняемому файлу 1С:Предприятия 8
var v8client = [ИмяИсполняемогоФайлаКлиента] // Путь к исполняемому файлу 1С:Предприятия 8
var v8comcntr = [ПутьКCOMСоединителю] // Путь к comcntr.dll
var v8logEncoding = '[КодировкаЛогФайла]'
var infoBasePath = [ПараметрПутиКИнформационнойБазе]
var BaseFileName = [СтрокаПутиКФайлуИнформационнойБазы]
var unlockCode = '[КодРазблокировки]'
var connectionString = [СтрокаСоединенияИнформационнойБазы] + ';UC=[КодРазблокировки]'
var backupFileName = [КаталогРезервнойКопии] + '1Cv8' + now.valueOf() + '.1CD' // Файл резервной копии
var UseRestore = [ВосстанавливатьИнформационнуюБазу] // Использовать восстановление ИБ в случае падения
var createBackup = [СоздаватьРезервнуюКопию] // создавать резервную копию
var eventLogID = [СобытиеЖурналаРегистрации]
var emailAddress = [АдресЭлектроннойПочты] // адрес электронной почты для отправки уведомления
var adminName = [ИмяАдминистратораОбновления] // имя администратора, инициировавшего обновление
var doBlockUsers = [БлокироватьСоединенияИБ] // устанавливать блокировку соединений перед обновлением
var comConnectorName = [ИмяCOMСоединителя] // имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение
var useComConnector = [ИспользоватьCOMСоединитель] // флаг использования COM-соединения для работы с 1С:Предприятием 8
var startEnterprise = [ЗапускСеансаПослеОбновления] // выполнять запуск предприятия после обновления
var makeCompression = [ВыполнятьСжатиеТаблицИБ] // запускать сжатие таблиц информационной базы
var executeDeferredHandlers = [ВыполнитьОтложенныеОбработчики] // выполнить отложенные обработчики обновления
var tempLogFileName = 'templog.txt'
var errorFileName = 'error.txt'
var tempLogFileName = 'templog.txt' // временный лог-файл платформы с параметром /out
var errorFileName = 'error.txt' // имя файла-маркера ошибок для параметров /CВыполнитьОбновлениеИЗавершитьРаботу и ВыполнитьЗагрузкуРасширенийИЗавершитьРаботу
var taskNameScheduleService = [ИмяЗадачиПланировщикаЗадач] // Если указано, то задача, которой запущен скрипт.
var runAppAdditionalParams = [ПараметрыЗапускаПредприятия] // Аргументы командной строки, которые следует добавить к запуску 1С:Предприятия в режиме клиента.
var updateConfiguration = [ВыполнитьОбновлениеКонфигурации]
@@ -127,7 +135,15 @@ function logFile (text, failed) {
}
// Записать текст из временного лог-файла
function appendLog () {
function appendLog (logEncoding) {
if (logEncoding == 'ASCII' || v8logEncoding == 'ASCII') {
return appendLogASCII()
} else {
return appendLogUTF8()
}
}
function appendLogASCII () {
var f = null
var outf
var text
@@ -151,6 +167,29 @@ function appendLog () {
return (text && text.length > 0)
}
function appendLogUTF8 () {
try {
oADODBStream.Open()
oADODBStream.LoadFromFile(tempLogFileName)
text = oADODBStream.ReadText()
} finally {
try {
oADODBStream.Close()
} catch (e) { return }
}
try {
outf = oFileSystemObject.OpenTextFile(outFileName, ForAppending, true, TristateTrue)
outf.WriteLine('')
outf.WriteLine(text)
outf.WriteLine('')
} finally {
try {
outf.Close()
} catch (e) { return }
}
return (text && text.length > 0)
}
// Инициализация
function initialize () {
log(format('[СообщениеПутьКФайлуСкрипта]', thisFileName))
@@ -494,7 +533,7 @@ function doExecuteUpdate (lastVersion) {
true)
if (result === 0 && oFileSystemObject.FileExists(errorFileName)) {
log('[СообщениеОтказОбновленияБазыОбщее]', true)
appendLog()
appendLog('ASCII')
result = 1
}
return result
@@ -876,7 +915,7 @@ function addDeletePatches() {
tempLogFileName
),
SW_HIDE, true)
appendLog()
appendLog('ASCII')
return result
}
@@ -899,7 +938,7 @@ function DeletePatches() {
tempLogFileName
),
SW_HIDE, true)
appendLog()
appendLog('ASCII')
} catch (e) {
log(format('[СообщениеОтказВызоваУдалитьИсправленияИзСкрипта]', e.name, e.message), true)
@@ -940,7 +979,7 @@ function doExecuteLoadExt() {
if (result === 0 && oFileSystemObject.FileExists(errorFileName)) {
log('[СообщениеОтказОбновленияБазыОбщее]', true)
appendLog()
appendLog('ASCII')
result = 1
}
@@ -964,9 +1003,11 @@ var oShell = new ActiveXObject('WScript.Shell')
oShell.CurrentDirectory = thisFileDir
var oFileSystemObject = new ActiveXObject('Scripting.FileSystemObject')
var oADODBStream = new ActiveXObject('ADODB.Stream')
oADODBStream.CharSet = 'utf-8'
clearLogFile()
appendLog()
appendLog('ASCII')
log(format('[СообщениеПараметрыCOMСоединителя]', useComConnector))
@@ -353,11 +353,16 @@
Иначе
Если ДокументHTMLТекущегоПисьмаПодготовлен Тогда
Если ФорматСообщения = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML
И ДокументHTMLТекущегоПисьмаПодготовлен Тогда
ТекущийОбъект.ТекстHTML = Взаимодействия.ПолучитьТекстHTMLИзОбъектаДокументHTML(ДокументHTML);
ТекущийОбъект.Текст = Взаимодействия.ПолучитьОбычныйТекстИзHTML(ТекущийОбъект.ТекстHTML);
Иначе
ТекущийОбъект.Текст = Взаимодействия.ПолучитьОбычныйТекстИзHTML(ТекущийОбъект.ТекстHTML);
КонецЕсли;
КонецЕсли;
@@ -1565,7 +1570,28 @@
Процедура ВопросОЗаписиФайлаПослеЗакрытия(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ТекущиеДанные = Вложения.Получить(ДополнительныеПараметры.ТекущийИндексВКоллекции);
Если ТекущиеДанные <> Неопределено Тогда
ИмяФайла = ТекущиеДанные.ИмяФайла;
Иначе
Возврат;
КонецЕсли;
Записать();
ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("ИмяФайла", ИмяФайла);
НайденныеСтроки = Вложения.НайтиСтроки(ПараметрыПоиска);
Если НайденныеСтроки.Количество() > 0 Тогда
ИдентификаторСтроки = Вложения.Индекс(НайденныеСтроки[0]);
Элементы.Вложения.ТекущаяСтрока = ИдентификаторСтроки;
ДополнительныеПараметры.ТекущийИндексВКоллекции = ИдентификаторСтроки;
Иначе
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
@@ -194,31 +194,26 @@
|ИЗ
| Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее
|ГДЕ
| ЭлектронноеПисьмоИсходящее.УдалитьИдентификаторСообщенияОтправкаIMAP <> """"
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка
|ИЗ
| ЖурналДокументов.Взаимодействия КАК Взаимодействия
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоИсходящее КАК ТаблицаДокумента
| ПО Взаимодействия.ИдентификаторСообщения = ТаблицаДокумента.ИдентификаторОснования
| И Взаимодействия.УчетнаяЗапись = ТаблицаДокумента.УчетнаяЗапись
| И Взаимодействия.Ссылка <> ТаблицаДокумента.ВзаимодействиеОснование
| И (Взаимодействия.ИдентификаторСообщения <> """")
| И (ТаблицаДокумента.ВзаимодействиеОснование <> """")";
| ЭлектронноеПисьмоИсходящее.ТипТекста = ЗНАЧЕНИЕ(Перечисление.ТипыТекстовЭлектронныхПисем.HTML)
| И ВЫБОР
| КОГДА (ВЫРАЗИТЬ(ЭлектронноеПисьмоИсходящее.Текст КАК СТРОКА(1))) = """"
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| И ВЫБОР
| КОГДА (ВЫРАЗИТЬ(ЭлектронноеПисьмоИсходящее.ТекстHTML КАК СТРОКА(1))) <> """"
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Дата", Дата(2016, 7, 1));
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
// Обработчик обновления на версию 2.3.6.69:
// - переносит данные о идентификаторе письма IMAP из одного реквизита в другой для
// - предотвращения потери информации при обновлении на последующие релизы.
// Обработчик обновления на версию 3.1.5.147:
// - заполняет реквизит Текст, для писем в формате HTML, для которых он ранее не был заполнен.
//
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
@@ -227,24 +222,11 @@
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| Взаимодействия.Ссылка КАК ПисьмоОснование,
| ВЫБОР
| КОГДА Взаимодействия.Ссылка ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ТребуетсяУказаниеПисьмаОснования,
| ТаблицаДокумента.УдалитьИдентификаторСообщенияОтправкаIMAP КАК УдалитьИдентификаторСообщенияОтправкаIMAP
| ТаблицаДокумента.Ссылка КАК Ссылка
|ИЗ
| &ВТДокументыДляОбработки КАК СсылкиДляОбработки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоИсходящее КАК ТаблицаДокумента
| ПО (ТаблицаДокумента.Ссылка = СсылкиДляОбработки.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ ЖурналДокументов.Взаимодействия КАК Взаимодействия
| ПО (Взаимодействия.ИдентификаторСообщения = ТаблицаДокумента.ИдентификаторОснования)
| И (Взаимодействия.УчетнаяЗапись = ТаблицаДокумента.УчетнаяЗапись)
| И (Взаимодействия.Ссылка <> ТаблицаДокумента.ВзаимодействиеОснование)
| И (Взаимодействия.ИдентификаторСообщения <> """")
| И (ТаблицаДокумента.ВзаимодействиеОснование <> """")";
| ПО (ТаблицаДокумента.Ссылка = СсылкиДляОбработки.Ссылка)";
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Результат = ОбновлениеИнформационнойБазы.СоздатьВременнуюТаблицуСсылокДляОбработки(Параметры.Очередь, ПолноеИмяОбъекта, МенеджерВременныхТаблиц);
@@ -282,14 +264,11 @@
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ОбъектыДляОбработки.Ссылка);
Иначе
Если ЗначениеЗаполнено(ОбъектыДляОбработки.УдалитьИдентификаторСообщенияОтправкаIMAP) Тогда
Объект.ИдентификаторСообщенияОтправкаIMAP = Объект.УдалитьИдентификаторСообщенияОтправкаIMAP;
Объект.УдалитьИдентификаторСообщенияОтправкаIMAP = "";
КонецЕсли;
Если Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTML
И Не ПустаяСтрока(Объект.ТекстHTML)
И ПустаяСтрока(Объект.Текст) Тогда
Если ОбъектыДляОбработки.ТребуетсяУказаниеПисьмаОснования Тогда
Объект.ВзаимодействиеОснование = ОбъектыДляОбработки.ПисьмоОснование;
Объект.Текст = Взаимодействия.ПолучитьОбычныйТекстИзHTML(Объект.ТекстHTML);
КонецЕсли;
@@ -1,17 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<p>В списке содержится актуальная (текущая) информация о соответствии пользователей <a href="Catalog.РолиИсполнителей/Help">ролям исполнителей</a>.</p>
<p>Перед началом работы с бизнес-процессами и задачами рекомендуется заполнить список.</p>
<p>Для того чтобы назначить исполнителей ролей, которые участвуют в бизнес-процессах без объектов адресации, выполните команду <strong>Роли и исполнители задач</strong> в разделе <strong>Администрирование - Органайзер</strong>.</p>
<p>Для того чтобы назначить исполнителей ролей, которые участвуют в бизнес-процессах без объектов адресации, выполните команду <strong>Роли и исполнители задач</strong> в разделе <strong>Администрирование - Органайзер - Бизнес-процессы и задачи</strong>.</p>
<p>Для того чтобы назначить исполнителей на роли, которые участвуют в бизнес-процессах с <a href="ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач/Help">объектами адресации</a>, необходимо воспользоваться командой <strong>Роли и исполнители задач</strong> на панели навигации этих объектов, например, на панели навигации <strong>Организации</strong>.</p>
<p>В списке выводится:</p>
<ul><li><strong>Роль</strong> - наименование роли. Роли, на которые не назначено ни одного исполнителя, отмечены значком <strong>Внимание</strong>. Такая ситуация может приводить к возникновению зависших <a href="Task.ЗадачаИсполнителя/Help">задач</a> (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен <a href="Report.ЗависшиеЗадачи/Help">Отчет по зависшим задачам</a>, для получения уведомлений по зависшим задачам - предопределенная роль <a href="#1">Координатор выполнения задач</a>. <a name="СтандартныеПодсистемы.Пользователи">
</a></li><li><a name="СтандартныеПодсистемы.Пользователи"><strong>Исполнители</strong> - имя </a><a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a> (если на роль назначен 1 исполнитель) или количество человек, назначенных на эту роль.</li></ul><h3>Назначение исполнителей на роль</h3>
</a></li>
<li><a name="СтандартныеПодсистемы.Пользователи"><strong>Исполнители</strong> - имя </a><a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a> (если на роль назначен 1 исполнитель) или количество человек, назначенных на эту роль.</li></ul><h3>Назначение исполнителей на роль</h3>
<ul><li>Выделите роль, нажмите <strong>Назначить исполнителей на роль</strong>, <a href="InformationRegister.ИсполнителиЗадач.Form.ИсполнителиРоли/Help">подберите исполнителей</a> из списка пользователей.
</li><li>Также можно воспользоваться двойным щелчком мыши.</li></ul><h3>Предопределенные роли</h3>
</li>
<li>Также можно воспользоваться двойным щелчком мыши.</li></ul><h3>Предопределенные роли</h3>
<p>В составе программы поставляются следующие роли:</p>
<p></p>
<table width="100%"><tbody><tr><td><strong>Роль</strong></td>
<td><strong>Краткое описание</strong></td></tr><tr><td><a name="#1">Координатор выполнения задач</a></td>
<td>Предопределенная роль, используется для получения уведомлений о просроченных и зависших задачах. Сотрудники, назначенные на роль, получают уведомление по всем таким задачам, адресованным любым исполнителям.</td></tr></tbody></table><h3>См. также:</h3>
<ul><li><a href="InformationRegister.ИсполнителиЗадач/Help">Общая информация о ролевой адресации</a>.
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
</li>
<li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -13,7 +13,7 @@
<div style="MARGIN: 0cm 0cm 6pt"><a href="#C">Контроль журнала регистрации</a></div>
</li>
<li>
<div style="MARGIN: 0cm 0cm 6pt"><a href="#D">Продолжительность работы регламентных заданий</a></div></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="#Ap">Анализ активности пользователей</a> </h3>
<div style="MARGIN: 0cm 0cm 6pt"><a href="#D">Продолжительность работы регламентных заданий</a></div></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="Ap">Анализ активности пользователей</a> </h3>
<ul><li>
<div style="MARGIN: 0cm 0cm 6pt">Выводит статистическую информацию по активности пользователей (часы работы, количество подключений, количество введенных/измененных документов/справочников, количество ошибок и предупреждений при работе пользователя, максимальное количество одновременно работающих пользователей). Для наглядности часть статистики выводится в виде диаграмм.</div>
</li>
@@ -30,7 +30,7 @@
<div style="MARGIN: 0cm 0cm 6pt">С помощью флажков включите или выключите вывод информации по количеству введенных и измененных документов и справочников в виде диаграмм;</div>
</li>
<li>
<div style="MARGIN: 0cm 0cm 6pt"> Выберите вид диаграммы из списка для вывода информации по количеству введенных и измененных документов и справочников.</div></li></ul></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="#B">Активность пользователя</a> </h3>
<div style="MARGIN: 0cm 0cm 6pt"> Выберите вид диаграммы из списка для вывода информации по количеству введенных и измененных документов и справочников.</div></li></ul></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="B">Активность пользователя</a> </h3>
<ul><li>
<div style="MARGIN: 0cm 0cm 6pt">Выводится подробная статистика по активности выбранного <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a> (список созданных и измененных документов/справочников/бизнес-процессов/задач). Для наглядности часть статистики выводится в виде диаграмм. Может использоваться как расшифровка варианта отчета <a href="#Ap">Анализ активности пользователей</a> по конкретному пользователю.</div>
</li>
@@ -44,12 +44,12 @@
<li>
<p style="MARGIN: 0cm 0cm 6pt"><strong>Дополнительные настройки</strong>: Нажмите кнопку <strong>Настройки</strong>. Кроме основных настроек, доступны:</p>
<ul><li>
<div style="MARGIN: 0cm 0cm 6pt">Включите соответствующие флажки, выберите значение <strong>Да</strong>, чтобы <strong>Выводить</strong> данные о бизнес-процессах, задачах, справочниках, документах, или <strong>Нет</strong>, чтобы не выводить. По умолчанию в отчете выводятся данные о справочниках и документах.</div></li></ul></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="#C">Контроль журнала регистрации</a> </h3>
<div style="MARGIN: 0cm 0cm 6pt">Включите соответствующие флажки, выберите значение <strong>Да</strong>, чтобы <strong>Выводить</strong> данные о бизнес-процессах, задачах, справочниках, документах, или <strong>Нет</strong>, чтобы не выводить. По умолчанию в отчете выводятся данные о справочниках и документах.</div></li></ul></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="C">Контроль журнала регистрации</a> </h3>
<ul><li>
<div style="MARGIN: 0cm 0cm 6pt">Представляет собой список критичных записей журнала регистрации (записи об ошибках и предупреждениях). Дает возможность контролировать проблемные ситуации в ходе эксплуатации программы. Отчет позволяет быстро проанализировать часто возникающие проблемы и принять решения по их устранению, не прибегая к помощи журнала регистрации.</div>
</li>
<li>
<div style="MARGIN: 0cm 0cm 6pt"><strong>Настройки</strong>: Укажите <strong>Период</strong>.</div></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="#D">Продолжительность работы регламентных заданий</a> </h3>
<div style="MARGIN: 0cm 0cm 6pt"><strong>Настройки</strong>: Укажите <strong>Период</strong>.</div></li></ul><h3 style="MARGIN: 0cm 0cm 6pt"><a name="D">Продолжительность работы регламентных заданий</a> </h3>
<ul><li>
<div style="MARGIN: 0cm 0cm 6pt">Выводится время выполнения и продолжительность работы сеансов <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентных заданий</a> в выбранный день. Позволяет провести анализ загруженности сервера регламентными заданиями, выявить интервалы с пиковыми нагрузками и разгрузить их.</div>
</li>
@@ -16,4 +16,4 @@
<li>Для расшифровки прав пользователя дважды щелкните по одной из ячеек в строке.</li></ul></ul></div>
<h3>См. также:</h3>
<div>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Форма отчета</a>.</li></ul></div></body></html>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></div></body></html>
File diff suppressed because it is too large. Load diff
@@ -65,6 +65,13 @@
<valueType>
<v8:Type>xs:boolean</v8:Type>
</valueType>
<appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType"/>
</dcscor:item>
</appearance>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>ПравоПросмотр</dataPath>
@@ -78,6 +85,13 @@
<valueType>
<v8:Type>xs:boolean</v8:Type>
</valueType>
<appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType"/>
</dcscor:item>
</appearance>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>ПравоРедактирование</dataPath>
@@ -91,6 +105,13 @@
<valueType>
<v8:Type>xs:boolean</v8:Type>
</valueType>
<appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType"/>
</dcscor:item>
</appearance>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>Право</dataPath>
@@ -109,6 +130,13 @@
<v8:AllowedSign>Nonnegative</v8:AllowedSign>
</v8:NumberQualifiers>
</valueType>
<appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType"/>
</dcscor:item>
</appearance>
<availableValue>
<value xsi:type="xs:decimal">1</value>
<presentation xsi:type="v8:LocalStringType">
@@ -137,57 +165,6 @@
</presentation>
</availableValue>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>КартинкаПросмотр</dataPath>
<field>КартинкаПросмотр</field>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Картинка просмотр</v8:content>
</v8:item>
</title>
<valueType>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>КартинкаРедактирование</dataPath>
<field>КартинкаРедактирование</field>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Картинка редактирование</v8:content>
</v8:item>
</title>
<valueType>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>КартинкаСоздание</dataPath>
<field>КартинкаСоздание</field>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Картинка создание</v8:content>
</v8:item>
</title>
<valueType>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</valueType>
</field>
<field xsi:type="DataSetFieldField">
<dataPath>Отчет</dataPath>
<field>Отчет</field>
@@ -254,18 +231,6 @@
<expression>Максимум(Право)</expression>
<group>ОбъектМетаданных</group>
</totalField>
<totalField>
<dataPath>КартинкаПросмотр</dataPath>
<expression>Максимум(КартинкаПросмотр)</expression>
</totalField>
<totalField>
<dataPath>КартинкаРедактирование</dataPath>
<expression>Максимум(КартинкаРедактирование)</expression>
</totalField>
<totalField>
<dataPath>КартинкаСоздание</dataPath>
<expression>Максимум(КартинкаСоздание)</expression>
</totalField>
<totalField>
<dataPath>ПравоПросмотр</dataPath>
<expression>Максимум(ПравоПросмотр)</expression>
@@ -1042,6 +1007,210 @@
</dcsat:item>
</template>
</template>
<template>
<name>Макет10</name>
<template xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:AreaTemplate">
<dcsat:item xsi:type="dcsat:TableRow">
<dcsat:tableCell>
<dcsat:item xsi:type="dcsat:Field">
<dcsat:value xsi:type="dcscor:Parameter">Право</dcsat:value>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="xs:string">ЧФ=</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:item>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Расшифровка</dcscor:parameter>
<dcscor:value xsi:type="dcscor:Parameter">Расшифровка</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>РазмерКартинки</dcscor:parameter>
<dcscor:value xmlns:mxl="http://v8.1c.ru/8.2/data/spreadsheet" xsi:type="mxl:PictureSize">AutoSize</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ВертикальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:VerticalAlign">Center</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ГоризонтальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:HorizontalAlign">Center</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:tableCell>
</dcsat:item>
</template>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:ExpressionAreaTemplateParameter">
<dcsat:name>Право</dcsat:name>
<dcsat:expression>Право</dcsat:expression>
</parameter>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:DetailsAreaTemplateParameter">
<dcsat:name>Расшифровка</dcsat:name>
<dcsat:fieldExpression>
<dcsat:field>Право</dcsat:field>
<dcsat:expression>ЕстьNull(Право, 0)</dcsat:expression>
</dcsat:fieldExpression>
</parameter>
</template>
<template>
<name>Макет11</name>
<template xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:AreaTemplate">
<dcsat:item xsi:type="dcsat:TableRow">
<dcsat:tableCell>
<dcsat:item xsi:type="dcsat:Field">
<dcsat:value xsi:type="dcscor:Parameter">ПравоПросмотр</dcsat:value>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="xs:string">БЛ=; БИ=</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:item>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Расшифровка</dcscor:parameter>
<dcscor:value xsi:type="dcscor:Parameter">Расшифровка</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>РазмерКартинки</dcscor:parameter>
<dcscor:value xmlns:mxl="http://v8.1c.ru/8.2/data/spreadsheet" xsi:type="mxl:PictureSize">AutoSize</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ВертикальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:VerticalAlign">Center</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ГоризонтальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:HorizontalAlign">Center</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:tableCell>
</dcsat:item>
</template>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:ExpressionAreaTemplateParameter">
<dcsat:name>ПравоПросмотр</dcsat:name>
<dcsat:expression>ПравоПросмотр</dcsat:expression>
</parameter>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:DetailsAreaTemplateParameter">
<dcsat:name>Расшифровка</dcsat:name>
<dcsat:fieldExpression>
<dcsat:field>ПравоПросмотр</dcsat:field>
<dcsat:expression>ЕстьNull(ПравоПросмотр, Ложь)</dcsat:expression>
</dcsat:fieldExpression>
</parameter>
</template>
<template>
<name>Макет12</name>
<template xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:AreaTemplate">
<dcsat:item xsi:type="dcsat:TableRow">
<dcsat:tableCell>
<dcsat:item xsi:type="dcsat:Field">
<dcsat:value xsi:type="dcscor:Parameter">ПравоРедактирование</dcsat:value>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="xs:string">БЛ=; БИ=</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:item>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Расшифровка</dcscor:parameter>
<dcscor:value xsi:type="dcscor:Parameter">Расшифровка</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>РазмерКартинки</dcscor:parameter>
<dcscor:value xmlns:mxl="http://v8.1c.ru/8.2/data/spreadsheet" xsi:type="mxl:PictureSize">AutoSize</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ВертикальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:VerticalAlign">Center</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ГоризонтальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:HorizontalAlign">Center</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:tableCell>
</dcsat:item>
</template>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:ExpressionAreaTemplateParameter">
<dcsat:name>ПравоРедактирование</dcsat:name>
<dcsat:expression>ПравоРедактирование</dcsat:expression>
</parameter>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:DetailsAreaTemplateParameter">
<dcsat:name>Расшифровка</dcsat:name>
<dcsat:fieldExpression>
<dcsat:field>ПравоРедактирование</dcsat:field>
<dcsat:expression>ЕстьNull(ПравоРедактирование, Ложь)</dcsat:expression>
</dcsat:fieldExpression>
</parameter>
</template>
<template>
<name>Макет13</name>
<template xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:AreaTemplate">
<dcsat:item xsi:type="dcsat:TableRow">
<dcsat:tableCell>
<dcsat:item xsi:type="dcsat:Field">
<dcsat:value xsi:type="dcscor:Parameter">ПравоИнтерактивноеДобавление</dcsat:value>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Формат</dcscor:parameter>
<dcscor:value xsi:type="xs:string">БЛ=; БИ=</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:item>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Расшифровка</dcscor:parameter>
<dcscor:value xsi:type="dcscor:Parameter">Расшифровка</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>РазмерКартинки</dcscor:parameter>
<dcscor:value xmlns:mxl="http://v8.1c.ru/8.2/data/spreadsheet" xsi:type="mxl:PictureSize">AutoSize</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ВертикальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:VerticalAlign">Center</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ГоризонтальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:HorizontalAlign">Center</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:tableCell>
</dcsat:item>
</template>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:ExpressionAreaTemplateParameter">
<dcsat:name>ПравоИнтерактивноеДобавление</dcsat:name>
<dcsat:expression>ПравоИнтерактивноеДобавление</dcsat:expression>
</parameter>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:DetailsAreaTemplateParameter">
<dcsat:name>Расшифровка</dcsat:name>
<dcsat:fieldExpression>
<dcsat:field>ПравоИнтерактивноеДобавление</dcsat:field>
<dcsat:expression>ЕстьNull(ПравоИнтерактивноеДобавление, Ложь)</dcsat:expression>
</dcsat:fieldExpression>
</parameter>
</template>
<fieldTemplate>
<field>Право</field>
<template>Макет10</template>
</fieldTemplate>
<fieldTemplate>
<field>ПравоПросмотр</field>
<template>Макет11</template>
</fieldTemplate>
<fieldTemplate>
<field>ПравоРедактирование</field>
<template>Макет12</template>
</fieldTemplate>
<fieldTemplate>
<field>ПравоИнтерактивноеДобавление</field>
<template>Макет13</template>
</fieldTemplate>
<groupTemplate>
<groupField>Пользователь</groupField>
<groupName>КолонкаПользователь</groupName>
@@ -1076,18 +1245,12 @@
</groupTemplate>
<groupHeaderTemplate>
<groupField>ГруппаДоступа</groupField>
<groupField>КартинкаПросмотр</groupField>
<groupField>КартинкаРедактирование</groupField>
<groupField>КартинкаСоздание</groupField>
<groupName>ПраваПоГруппамДоступа</groupName>
<templateType>Header</templateType>
<template>Макет4</template>
</groupHeaderTemplate>
<groupHeaderTemplate>
<groupField>Пользователь</groupField>
<groupField>КартинкаПросмотр</groupField>
<groupField>КартинкаРедактирование</groupField>
<groupField>КартинкаСоздание</groupField>
<groupName>ПраваПользователя</groupName>
<templateType>Header</templateType>
<template>Макет9</template>
@@ -1124,6 +1287,7 @@
<dcsset:userSettingID>91c5e0cc-63a9-4398-b8d3-561eeecd248d</dcsset:userSettingID>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:use>false</dcsset:use>
<dcsset:left xsi:type="dcscor:Field">Право</dcsset:left>
<dcsset:comparisonType>GreaterOrEqual</dcsset:comparisonType>
<dcsset:right xsi:type="xs:decimal">1</dcsset:right>
@@ -1942,90 +2106,6 @@
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ПравоПросмотр</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">true</dcsset:right>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ВходВПрограммуРазрешен</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">false</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоНедействительногоПользователяФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ПравоРедактирование</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">true</dcsset:right>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ВходВПрограммуРазрешен</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">false</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоНедействительногоПользователяФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ПравоИнтерактивноеДобавление</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">true</dcsset:right>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ВходВПрограммуРазрешен</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">false</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоНедействительногоПользователяФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
@@ -2214,13 +2294,13 @@
<dcsset:field>Пользователь</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаПросмотр</dcsset:field>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаРедактирование</dcsset:field>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаСоздание</dcsset:field>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
@@ -2264,97 +2344,6 @@
<dcsset:conditionalAppearance>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>Право</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">Право</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:decimal">1</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоПросмотраФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>Право</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">Право</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:decimal">2</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоРедактированияФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>Право</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">Право</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:decimal">3</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоСозданияФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter/>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ВыводитьКартинку</dcscor:parameter>
<dcscor:value xsi:type="dcsset:DataCompositionPictureOutputType">Auto</dcscor:value>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ВертикальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:VerticalAlign">Center</dcscor:value>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ГоризонтальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:HorizontalAlign">Center</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
@@ -2375,9 +2364,6 @@
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
@@ -2398,9 +2384,6 @@
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
@@ -2441,33 +2424,6 @@
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>Право</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">Право</dcsset:left>
<dcsset:comparisonType>Filled</dcsset:comparisonType>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ВходВПрограммуРазрешен</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">false</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоНедействительногоПользователяФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
@@ -2493,9 +2449,6 @@
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
@@ -2521,9 +2474,6 @@
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
@@ -2661,13 +2611,13 @@
<dcsset:field>ГруппаДоступа</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаПросмотр</dcsset:field>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаРедактирование</dcsset:field>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаСоздание</dcsset:field>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
@@ -2678,34 +2628,11 @@
</dcsset:item>
</dcsset:filter>
<dcsset:conditionalAppearance>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter/>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ВыводитьКартинку</dcscor:parameter>
<dcscor:value xsi:type="dcsset:DataCompositionPictureOutputType">Auto</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
@@ -2726,9 +2653,6 @@
<dcsset:item>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
@@ -2749,9 +2673,6 @@
<dcsset:item>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
@@ -2772,9 +2693,6 @@
<dcsset:item>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
@@ -2800,9 +2718,6 @@
<dcsset:item>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
@@ -2828,9 +2743,6 @@
<dcsset:item>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
@@ -2965,13 +2877,13 @@
<dcsset:field>ГруппаДоступа</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаПросмотр</dcsset:field>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаРедактирование</dcsset:field>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>КартинкаСоздание</dcsset:field>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
</dcsset:selection>
</dcsset:item>
@@ -3888,90 +3800,6 @@
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаПросмотр</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоПросмотр</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ПравоПросмотр</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">true</dcsset:right>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ВходВПрограммуРазрешен</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">false</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоНедействительногоПользователяФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаРедактирование</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоРедактирование</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ПравоРедактирование</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">true</dcsset:right>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ВходВПрограммуРазрешен</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">false</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоНедействительногоПользователяФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
<dcsset:field>КартинкаСоздание</dcsset:field>
</dcsset:item>
<dcsset:item>
<dcsset:field>ПравоИнтерактивноеДобавление</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:filter>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ПравоИнтерактивноеДобавление</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">true</dcsset:right>
</dcsset:item>
<dcsset:item xsi:type="dcsset:FilterItemComparison">
<dcsset:left xsi:type="dcscor:Field">ВходВПрограммуРазрешен</dcsset:left>
<dcsset:comparisonType>Equal</dcsset:comparisonType>
<dcsset:right xsi:type="xs:boolean">false</dcsset:right>
</dcsset:item>
</dcsset:filter>
<dcsset:appearance>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ПравоНедействительногоПользователяФон</dcscor:value>
</dcscor:item>
</dcsset:appearance>
</dcsset:item>
<dcsset:item>
<dcsset:selection>
<dcsset:item>
@@ -3,12 +3,17 @@
<p>Если установлен отбор по <strong>Координатору</strong>, то в отчет будут выводиться только те задачи, которые назначены исполнителям в <a href="ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач/Help">объектах адресации</a>, за которые отвечает указанный координатор выполнения задач. Можно установить фильтр по <strong>Автору</strong> задачи. Также предусмотрен отбор по <strong>Периоду</strong>.</p>
<h3>Варианты отчета</h3>
<ul><li>Для того чтобы установить группировку списка зависших задач по объектам адресации, выберите вариант отчета <strong>Сводка по зависшим задачам</strong>. В отчете выводятся основной и дополнительный объекты адресации, ответственный, задача. Для сокращения выведенной в отчете информации снимите флажок <strong>Подробно</strong>, в этом случае не выводятся наименование задачи.
<ul><li>Можно отобрать задачи по <strong>Ответственному</strong> и по <strong>Автору</strong>.</li></ul></li><li>Вариант отчета <strong>Зависшие задачи по объектам адресации</strong> позволяет посмотреть количество зависших задач в разрезе <a href="Catalog.РолиИсполнителей/Help">ролей исполнителей</a> и <a href="ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач/Help">объектов адресации</a>. Выводится основной и дополнительный объект адресации, задача.
<ul><li>Можно установить отбор зависших задач по конкретному исполнителю роли, например, по <strong>Координатору</strong>. </li></ul></li><li>Вариант отчета <strong>Зависшие задачи по ответственным</strong> позволяет включить группировку по ролям исполнителей, например, по <strong>Координатору</strong>.
</li><li>Для просмотра одновременно как зависших, так и просроченных задач предназначен вариант отчета <strong>Просроченные задачи</strong>.
<ul><li>Можно отобрать задачи по <strong>Ответственному</strong> и по <strong>Автору</strong>.</li></ul></li>
<li>Вариант отчета <strong>Зависшие задачи по объектам адресации</strong> позволяет посмотреть количество зависших задач в разрезе <a href="Catalog.РолиИсполнителей/Help">ролей исполнителей</a> и <a href="ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач/Help">объектов адресации</a>. Выводится основной и дополнительный объект адресации, задача.
<ul><li>Можно установить отбор зависших задач по конкретному исполнителю роли, например, по <strong>Координатору</strong>. </li></ul></li>
<li>Вариант отчета <strong>Зависшие задачи по ответственным</strong> позволяет включить группировку по ролям исполнителей, например, по <strong>Координатору</strong>.
</li>
<li>Для просмотра одновременно как зависших, так и просроченных задач предназначен вариант отчета <strong>Просроченные задачи</strong> (<b>Просроченные задачи подчиненных</b>).
<ul><li>Зависшие задачи в отчете выделяются красным цветом (для этого включите флажок <strong>Выделять задачи без назначенных исполнителей</strong> в настройках отчета).
</li><li>Можно установить отбор по конкретному исполнителю роли, например, по <strong>Координатору</strong>.</li></ul></li></ul><h3 style="MARGIN: 0cm 0cm 6pt">См. также: </h3>
</li>
<li>Можно установить отбор по конкретному исполнителю роли, например, по <strong>Координатору</strong>.</li></ul></li></ul><h3 style="MARGIN: 0cm 0cm 6pt">См. также: </h3>
<ul><li>
<div style="MARGIN: 0cm 0cm 6pt"><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>;</div>
</li><li>
</li>
<li>
<div style="MARGIN: 0cm 0cm 6pt"><a href="CommonForm.ФормаНастроекОтчета/Help">Настройки отчетов</a>.</div></li></ul></body></html>
@@ -2,10 +2,14 @@
<p>Предназначен для получения информации об объеме данных на диске, который занимают "ненужные" файлы (устаревшие, добавленные по ошибке).</p>
<p>Количество файлов выдается по каждому владельцу (объекту программы, к которому присоединены файлы). </p>
<p>Открывается из окна <a href="InformationRegister.НастройкиОчисткиФайлов/Help">Настройки очистки файлов</a>, в котором можно задать критерии оценки файлов и сроки их хранения для каждого объекта. </p><a name="СтандартныеПодсистемы.Варианты отчетов">
</a><p><a name="СтандартныеПодсистемы.Варианты отчетов">С помощью кнопки <strong>Настройки</strong> можно перейти к использованию возможностей более тонкого </a><a href="CommonForm.ФормаНастроекОтчета/Help">отбора записей</a> отчета.</p>
</a>
<p><a name="СтандартныеПодсистемы.Варианты отчетов">С помощью кнопки <strong>Настройки</strong> можно перейти к использованию возможностей более тонкого </a><a href="CommonForm.ФормаНастроекОтчета/Help">отбора записей</a> отчета.</p>
<h3>Отбор по владельцу</h3>
<ul><li>Можно отобрать файлы по одному владельцу, например, по папке. Для этого дважды кликните мышью по нужному владельцу в отчете.
</li><li>Отчет выдает результат отбора по владельцу.
</li><li>Можно сделать более тонкий отбор, выбирая различные поля из предлагаемого списка. </li></ul><h3>См. также:</h3>
</li>
<li>Отчет выдает результат отбора по владельцу.
</li>
<li>Можно сделать более тонкий отбор, выбирая различные поля из предлагаемого списка. </li></ul><h3>См. также:</h3>
<ul><a name="СтандартныеПодсистемы.Варианты отчетов">
</a><li><a name="СтандартныеПодсистемы.Варианты отчетов"></a><a href="CommonForm.ФормаОтчета/Help">Форма отчета</a>.</li></ul></body></html>
</a>
<li><a name="СтандартныеПодсистемы.Варианты отчетов"></a><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></body></html>
@@ -99,7 +99,8 @@
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПользовательИлиГруппа, "ИдентификаторПользователяИБ"));
УстановитьПривилегированныйРежим(Ложь);
Если Пользователи.ЭтоПолноправныйПользователь(ПользовательИБ, Истина) Тогда
Если ПользовательИБ <> Неопределено
И Пользователи.ЭтоПолноправныйПользователь(ПользовательИБ, Истина) Тогда
Область = Макет.ПолучитьОбласть("ПолноправныйПользователь");
Документ.Вывести(Область, 1);
@@ -4,8 +4,12 @@
<p>С помощью кнопки <strong>Настройки</strong> можно перейти к использованию возможностей более тонкого <a href="CommonForm.ФормаНастроекОтчета/Help">отбора записей</a> отчета.</p>
<h3>Отбор по значениям</h3>
<ul><li>Можно отобрать файлы по нужным параметрам. Для этого дважды кликните мышью по нужному значению в диаграмме.
</li><li>Можно сделать более тонкий отбор, выбирая различные поля из предлагаемого списка.
</li><li>После окончания настройки нажмите кнопку <strong>Выбрать</strong>.</li></ul><h3>См. также:</h3>
</li>
<li>Можно сделать более тонкий отбор, выбирая различные поля из предлагаемого списка.
</li>
<li>После окончания настройки нажмите кнопку <strong>Выбрать</strong>.</li></ul><h3>См. также:</h3>
<ul><a name="СтандартныеПодсистемы.ВариантыОтчетов">
</a><li><a name="СтандартныеПодсистемы.ВариантыОтчетов">
</a><div><a name="СтандартныеПодсистемы.ВариантыОтчетов"></a><a href="CommonForm.ФормаОтчета/Help">Форма отчета</a>.</div></li></ul></body></html>
</a>
<li><a name="СтандартныеПодсистемы.ВариантыОтчетов">
</a>
<div><a name="СтандартныеПодсистемы.ВариантыОтчетов"></a><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</div></li></ul></body></html>
@@ -2,7 +2,9 @@
<p>Предназначен для контроля сроков действия согласий на обработку ПДн.</p>
<p>Отображается список действующих согласий с отбором по организации. Возможен отбор по дате действия.</p>
<p>Отражаются <strong>Субъект</strong>, <strong>Дата получения</strong>, <strong>Срок действия</strong>.</p><a name="СтандартныеПодсистемы.Варианты отчетов">
</a><p><a name="СтандартныеПодсистемы.Варианты отчетов">При необходимости можно </a><a href="CommonForm.ФормаНастроекОтчета/Help">настроить</a> более жесткие условия отбора с помощью кнопки <strong>Настройки</strong>.</p>
</a>
<p><a name="СтандартныеПодсистемы.Варианты отчетов">При необходимости можно </a><a href="CommonForm.ФормаНастроекОтчета/Help">настроить</a> более жесткие условия отбора с помощью кнопки <strong>Настройки</strong>.</p>
<h3>См. также:</h3>
<ul><a name="СтандартныеПодсистемы.Варианты отчетов">
</a><li><a name="СтандартныеПодсистемы.Варианты отчетов"></a><a href="CommonForm.ФормаОтчета/Help">Форма отчета</a>.</li></ul></body></html>
</a>
<li><a name="СтандартныеПодсистемы.Варианты отчетов"></a><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></body></html>
@@ -5,11 +5,17 @@
<p>Производится отбор по организации. </p>
<p>Отражаются поля:</p>
<ul><li><strong>Субъект</strong>;
</li><li>документ, на основании которого прекращается срок действия (<a href="Document.СогласиеНаОбработкуПерсональныхДанных/Help">согласие на обработку ПДн</a> или <a href="Document.ОтзывСогласияНаОбработкуПерсональныхДанных/Help">отзыв согласия</a>);
</li><li><strong>Организация</strong>;
</li><li><strong>Дата получения</strong>;
</li><li><strong>Срок действия</strong>.</li></ul><a name="СтандартныеПодсистемы.Варианты отчетов">
</a><p><a name="СтандартныеПодсистемы.Варианты отчетов">При необходимости (если документов слишком много) можно </a><a href="CommonForm.ФормаНастроекОтчета/Help">настроить</a> более жесткие условия отбора с помощью кнопки <strong>Настройки</strong>.</p>
</li>
<li>документ, на основании которого прекращается срок действия (<a href="Document.СогласиеНаОбработкуПерсональныхДанных/Help">согласие на обработку ПДн</a> или <a href="Document.ОтзывСогласияНаОбработкуПерсональныхДанных/Help">отзыв согласия</a>);
</li>
<li><strong>Организация</strong>;
</li>
<li><strong>Дата получения</strong>;
</li>
<li><strong>Срок действия</strong>.</li></ul><a name="СтандартныеПодсистемы.Варианты отчетов">
</a>
<p><a name="СтандартныеПодсистемы.Варианты отчетов">При необходимости (если документов слишком много) можно </a><a href="CommonForm.ФормаНастроекОтчета/Help">настроить</a> более жесткие условия отбора с помощью кнопки <strong>Настройки</strong>.</p>
<h3>См. также:</h3>
<ul><a name="СтандартныеПодсистемы.Варианты отчетов">
</a><li><a name="СтандартныеПодсистемы.Варианты отчетов"></a><a href="CommonForm.ФормаНастроекОтчета/Help">Форма отчета</a>.</li></ul></body></html>
</a>
<li><a name="СтандартныеПодсистемы.Варианты отчетов"></a><a href="CommonForm.ФормаНастроекОтчета/Help">Работа с отчетами</a>.</li></ul></body></html>
@@ -1925,93 +1925,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ОсновнойЯзык</name>
<right>
@@ -3360,6 +3273,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ПараметрыРаботыПрограммы</name>
<right>
@@ -21,37 +21,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас</name>
<right>
@@ -107,6 +76,37 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -2746,45 +2746,6 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.ОсновнойЯзык</name>
<right>
@@ -4690,6 +4651,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Catalog.ЗначенияСвойствОбъектовИерархия</name>
<right>
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Role xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="57e39881-cbf9-4cac-9ed0-bf4a6ea667ee">
<name>РежимВсеФункции</name>
<name>РежимТехническогоСпециалиста</name>
<synonym>
<key>ru</key>
<value>Режим &quot;Все функции&quot;</value>
<value>Режим технического специалиста</value>
</synonym>
</mdclass:Role>
Loaded 100 of 111 files, more files were not shown because too many files have changed in this diff. Show more