3_1_3_264

This commit is contained in:
Компания 1С committed 2020-09-04 19:02:00 +03:00
1 parent eff646d7ea
commit deb29ece90
46 files changed
+1040 -728

No files matched your search

@@ -37,4 +37,25 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция КодыВалют() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка,
| Валюты.Наименование КАК СимвольныйКод
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| Валюты.СпособУстановкиКурса <> ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты)
| И Валюты.СпособУстановкиКурса <> ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.РасчетПоФормуле)";
Запрос = Новый Запрос(ТекстЗапроса);
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
КонецФункции
#КонецОбласти
#КонецЕсли
+35 -2
View File
@@ -165,10 +165,12 @@
ПараметрыВалюты.Вставить("ДополнительныеСвойства");
ПараметрыВалюты.Вставить("ФормулаРасчетаКурса");
ПараметрыВалюты.Вставить("СпособУстановкиКурса");
ПараметрыВалюты.Вставить("ИспользуемыеВалютыПриРасчетеКурса", ИспользуемыеВалютыПриРасчетеКурса());
ЗаполнитьЗначенияСвойств(ПараметрыВалюты, ЭтотОбъект);
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Валюта", ПараметрыВалюты);
ПараметрыЗадания.Вставить("КодыВалют", Справочники.Валюты.КодыВалют());
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(Новый УникальныйИдентификатор());
ПараметрыВыполнения.ОжидатьЗавершение = 0;
@@ -183,8 +185,6 @@
Процедура ЗапланироватьКопированиеКурсовВалюты()
Перем РаботаСКурсамиВалютСлужебный;
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Валюты") Тогда
МодульРаботаСКурсамиВалютСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСКурсамиВалютСлужебный");
@@ -193,6 +193,39 @@
КонецПроцедуры
Функция ИспользуемыеВалютыПриРасчетеКурса()
Если СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда
Возврат ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОсновнаяВалюта);
КонецЕсли;
Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда
Возврат Новый Массив;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| &ФормулаРасчетаКурса ПОДОБНО ""%"" + Валюты.Наименование + ""%""
| И Валюты.Наименование <> """"";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ФормулаРасчетаКурса", ФормулаРасчетаКурса);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ТекстОшибки = НСтр("ru = 'В формуле должна быть использована хотя бы одна основная валюта.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Объект.ФормулаРасчетаКурса");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
#КонецОбласти
#Иначе
@@ -419,6 +419,110 @@
<showInCard>true</showInCard>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>РолиИмя</name>
<id>400</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Роли.Имя</segments>
</dataPath>
<extendedTooltip>
<name>РолиИмяРасширеннаяПодсказка</name>
<id>402</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РолиИмяКонтекстноеМеню</name>
<id>401</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>РолиЭтоНедоступнаяРоль</name>
<id>406</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Роли.ЭтоНедоступнаяРоль</segments>
</dataPath>
<extendedTooltip>
<name>РолиЭтоНедоступнаяРольРасширеннаяПодсказка</name>
<id>408</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РолиЭтоНедоступнаяРольКонтекстноеМеню</name>
<id>407</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<readOnly>true</readOnly>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>РолиЭтоНесуществующаяРоль</name>
<id>409</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Роли.ЭтоНесуществующаяРоль</segments>
</dataPath>
<extendedTooltip>
<name>РолиЭтоНесуществующаяРольРасширеннаяПодсказка</name>
<id>411</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РолиЭтоНесуществующаяРольКонтекстноеМеню</name>
<id>410</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<readOnly>true</readOnly>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<autoCommandBar>
<name>РолиКоманднаяПанель</name>
<id>199</id>
@@ -2042,6 +2146,10 @@
</columns>
<columns>
<name>Имя</name>
<title>
<key>ru</key>
<value>Имя роли в конфигурации</value>
</title>
<id>5</id>
<valueType>
<types>String</types>
@@ -2069,6 +2177,10 @@
</columns>
<columns>
<name>ЭтоНедоступнаяРоль</name>
<title>
<key>ru</key>
<value>Это недоступная роль</value>
</title>
<id>6</id>
<valueType>
<types>Boolean</types>
@@ -2082,6 +2194,10 @@
</columns>
<columns>
<name>ЭтоНесуществующаяРоль</name>
<title>
<key>ru</key>
<value>Это несуществующая роль</value>
</title>
<id>7</id>
<valueType>
<types>Boolean</types>
@@ -121,7 +121,7 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
МодульУправлениеКонтактнойИнформациейСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформациейСлужебный");
Если МодульУправлениеКонтактнойИнформациейСлужебный.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Параметры.Очередь) Тогда
Если МодульУправлениеКонтактнойИнформациейСлужебный.ВидыКонтактнойИнформацииОбновляются(Параметры.Очередь) Тогда
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений");
Возврат;
КонецЕсли;
@@ -129,7 +129,7 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
Если МодульДополнительныеОтчетыИОбработки.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Параметры.Очередь) Тогда
Если МодульДополнительныеОтчетыИОбработки.ДополнительныеОтчетыИОбработкиОбновляются(Параметры.Очередь) Тогда
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений");
Возврат;
КонецЕсли;
@@ -958,12 +958,18 @@
Возврат;
КонецЕсли;
ПараметрыФормирования = Новый Структура;
ПараметрыФормирования.Вставить("ЗагрузитьРезультат", Ложь);
ПараметрыФормирования.Вставить("ИдентификаторЗадания", Результат.ИдентификаторЗадания);
Если Результат.Статус <> "Выполняется" Тогда
ПослеФормирования(Результат, Ложь);
ПослеФормирования(Результат, ПараметрыФормирования);
Возврат;
КонецЕсли;
Обработчик = Новый ОписаниеОповещения("ПослеФормирования", ЭтотОбъект, Истина);
ПараметрыФормирования.ЗагрузитьРезультат = Истина;
Обработчик = Новый ОписаниеОповещения("ПослеФормирования", ЭтотОбъект, ПараметрыФормирования);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
@@ -971,13 +977,16 @@
КонецПроцедуры
&НаКлиенте
Процедура ПослеФормирования(Результат, ЗагрузитьРезультатФормированияОтчета) Экспорт
Если Результат = Неопределено Тогда
Процедура ПослеФормирования(Результат, ПараметрыФормирования) Экспорт
Если ФоновоеЗаданиеИдентификатор <> ПараметрыФормирования.ИдентификаторЗадания Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
Если ЗагрузитьРезультатФормированияОтчета Тогда
Если Результат = Неопределено Тогда
ПоказатьОшибкиФормирования(НСтр("ru = 'Формирование отчета прервано администратором'"));
ПоказатьОповещениеПользователя(НСтр("ru = 'Отчет не сформирован'"),, Заголовок);
ИначеЕсли Результат.Статус = "Выполнено" Тогда
Если ПараметрыФормирования.ЗагрузитьРезультат Тогда
ЗагрузитьРезультатФормированияОтчета();
КонецЕсли;
ПоказатьОповещениеПользователя(НСтр("ru = 'Отчет сформирован'"),, Заголовок);
@@ -994,7 +1003,7 @@
МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(ИдентификаторЗамера);
КонецЕсли;
ОтчетСформирован = (Результат.Статус = "Выполнено");
ОтчетСформирован = ?(Результат = Неопределено, Ложь, Результат.Статус = "Выполнено");
ИнтеграцияПодсистемБСПКлиент.ПослеФормирования(ЭтотОбъект, ОтчетСформирован);
ОтчетыКлиентПереопределяемый.ПослеФормирования(ЭтотОбъект, ОтчетСформирован);
@@ -1108,6 +1117,7 @@
&НаСервере
Процедура ЗагрузитьРезультатФормированияОтчета()
Если Не ЭтоАдресВременногоХранилища(ФоновоеЗаданиеАдресХранилища) Тогда
ПоказатьОшибкиФормирования(НСтр("ru = 'Не удалось сформировать отчет'"));
Возврат;
КонецЕсли;
@@ -1118,6 +1128,7 @@
ФоновоеЗаданиеИдентификатор = Неопределено;
Если Результат = Неопределено Тогда
ПоказатьОшибкиФормирования(НСтр("ru = 'Не удалось сформировать отчет (пустой результат)'"));
Возврат;
КонецЕсли;
@@ -62,8 +62,10 @@
//
Функция КодРегионаПоНаименованию(Название) Экспорт
НаименованиеРегиона = СтрЗаменить(Название, "Кемеровская область - Кузбасс обл", "Кемеровская область - Кузбасс");
СписокРегионов = АдресныйКлассификаторПовтИсп.СписокРегионов();
КодСубъектаРФ = СписокРегионов.Получить(ВРег(Название));
КодСубъектаРФ = СписокРегионов.Получить(ВРег(НаименованиеРегиона));
Если КодСубъектаРФ <> Неопределено Тогда
Возврат КодСубъектаРФ;
@@ -72,10 +74,10 @@
// Если не нашли, то подсмотрим еще и в классификаторе - макете.
Классификатор = РегистрыСведений.АдресныеОбъекты.КлассификаторСубъектовРФ();
Фильтр = Новый Структура("Наименование", Название);
Фильтр = Новый Структура("Наименование", НаименованиеРегиона);
Варианты = Классификатор.НайтиСтроки(Фильтр);
Если Варианты.Количество() = 0 Тогда
ЧастиСлова = АдресныйКлассификаторСлужебный.НаименованиеИСокращение(Название);
ЧастиСлова = АдресныйКлассификаторСлужебный.НаименованиеИСокращение(НаименованиеРегиона);
Фильтр.Вставить("Наименование", ЧастиСлова.Наименование);
Фильтр.Вставить("Сокращение", ЧастиСлова.Сокращение);
Варианты = Классификатор.НайтиСтроки(Фильтр);
@@ -282,8 +282,7 @@
// Возвращает тип ссылки дополнительного отчета.
Функция ТипСсылкиДополнительногоОтчета()
Существует = ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки");
Если Существует Тогда
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
Возврат Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки");
КонецЕсли;
@@ -1691,7 +1691,7 @@
КонецПроцедуры
Функция ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь) Экспорт
Функция ДополнительныеОтчетыИОбработкиОбновляются(Очередь) Экспорт
Возврат ОбновлениеИнформационнойБазы.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь, "Справочник.ДополнительныеОтчетыИОбработки");
КонецФункции
@@ -234,6 +234,10 @@
НомерВРегистре = 0;
// Чтение макета "Описатель".
Если НосительМакетов.Метаданные().Макеты.Найти("Описатель") = Неопределено Тогда
Возврат Результат;
КонецЕсли;
ТабличныйДокумент = НосительМакетов.ПолучитьМакет("Описатель");
Для НомерСтроки = 3 По ТабличныйДокумент.ВысотаТаблицы Цикл
ПрефиксСтроки = "R"+ НомерСтроки +"C";
@@ -355,12 +359,16 @@
ДвоичныеДанные = НосительМакетов.ПолучитьМакет(ЛокализованноеИмяМакета);
ДвоичныеДанные.Записать(АрхивПолноеИмя);
Исключение
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось извлечь файл из макета %1 (ЛокализованноеИмяМакета: %2) обработки ИнформацияПриЗапуске по причине:'"),
ИмяМакета, ЛокализованноеИмяМакета) + Символы.ПС;
Если НосительМакетов.Метаданные().Макеты.Найти(ЛокализованноеИмяМакета) = Неопределено Тогда
ТекстСообщения = ТекстСообщения + НСтр("ru = 'Макет с таким именем не существует.'") + Символы.ПС;
КонецЕсли;
ТекстСообщения = ТекстСообщения + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Информация при запуске'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
,
,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
УровеньЖурналаРегистрации.Ошибка,,, ТекстСообщения);
Возврат Неопределено;
КонецПопытки;
@@ -732,6 +732,8 @@
ПараметрыНапоминания.Вставить("Описание", Текст);
Если ТипЗнч(ВремяСобытия) = Тип("РасписаниеРегламентногоЗадания") Тогда
ПараметрыНапоминания.Вставить("Расписание", ВремяСобытия);
ИначеЕсли ТипЗнч(ВремяСобытия) = Тип("Строка") Тогда
ПараметрыНапоминания.Вставить("ИмяРеквизитаИсточника", ВремяСобытия);
Иначе
ПараметрыНапоминания.Вставить("ВремяСобытия", ВремяСобытия);
КонецЕсли;
@@ -2482,10 +2482,7 @@
РегистрыСведений.РезультатыОбменаДанными.ЗарегистрироватьУстранениеПроблемы(Объект,
Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент);
// Устанавливаем режим загрузки данных для объекта.
ОбменДаннымиСервер.УстановитьОбменДаннымиЗагрузка(Объект, Истина, Ложь, Отправитель);
// Проверка на коллизии дат запрета загрузки.
Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
@@ -2494,11 +2491,27 @@
НачатьТранзакцию();
Попытка
// Отменяем проведение документа.
Объект.Проведен = Ложь;
Объект.Записать();
Если Объект.ДополнительныеСвойства.Свойство("ИспользоватьОтменуПроведенияДляОчисткиДвижений")
И Объект.ДополнительныеСвойства.ИспользоватьОтменуПроведенияДляОчисткиДвижений = Истина Тогда
ОбменДаннымиСервер.УстановитьОбменДаннымиЗагрузка(Объект, Ложь, Ложь, Отправитель);
Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ОбменДаннымиСервер.УстановитьОбменДаннымиЗагрузка(Объект, Истина, Ложь, Отправитель);
Иначе
// Устанавливаем режим загрузки данных для объекта.
ОбменДаннымиСервер.УстановитьОбменДаннымиЗагрузка(Объект, Истина, Ложь, Отправитель);
// Отменяем проведение документа.
Объект.Проведен = Ложь;
Объект.Записать();
ОбменДаннымиСервер.УдалитьДвиженияУДокумента(Объект);
КонецЕсли;
ОбменДаннымиСервер.УдалитьДвиженияУДокумента(Объект);
ПроведениеДокументаОтменено = Истина;
ЗафиксироватьТранзакцию();
Исключение
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.3.250";
Описание.Версия = "3.1.3.264";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -151,7 +151,8 @@
// * КодСтраны - Строка - код страны по ОКСМ.
// * Индекс - Строка - почтовый индекс.
// * КодРегиона - Строка - код региона РФ.
// * Регион - Строка - текстовое представление региона РФ.
// * Регион - Строка - текстовое представление региона РФ. Для получения полного наименования региона
// следует использовать функцию РегионАдресаКонтактнойИнформации.
// * РегионТипПолный - Строка - полное наименование типа региона. Например: "область".
// * РегионТипКраткий - Строка - краткое наименование типа региона. Например: "обл".
// * РегионСокращение - Строка - устаревшее свойство. Сокращение региона, например: "обл", если
@@ -2166,11 +2167,11 @@
Функция СведенияОбАдресахВВидеСтруктуры(Адреса, ДополнительныеПараметры)
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("СведенияОбАдресах", "Адреса", Адреса, Тип("Массив"));
Если Адреса.Количество() = 0 Тогда
Возврат Новый Массив;
КонецЕсли;
ТаблицаАдресов = Новый ТаблицаЗначений;
ТаблицаАдресов.Колонки.Добавить("ИндексАдреса", ОбщегоНазначения.ОписаниеТипаЧисло(10));
ТаблицаАдресов.Колонки.Добавить("АдресJSON", Новый ОписаниеТипов("Структура"));
@@ -2237,17 +2238,22 @@
ЭтоНациональныйАдрес = ?(СтрСравнить(АдресИзJSON.Country, РаботаСАдресамиКлиентСервер.ОсновнаяСтрана().Наименование) = 0, Истина, Ложь);
АдресПоПолям.КодРегиона = ?(ЭтоНациональныйАдрес, КодРегиона(НаименованиеРегиона), "");;
ИдентификаторАдресногоОбъекта = "";
МаксимальныйУровеньИдентификатора = 0;
Для каждого ЧастьАдреса Из СоответствиеУровней Цикл
ИдентификаторТекущегоУровня = АдресИзJSON[ЧастьАдреса.Ключ + "Id"];
ТипКраткий = АдресИзJSON[ЧастьАдреса.Ключ + "Type"];
НаименованиеУровня = ?(Параметры.НаименованиеВключаетСокращение, СокрЛП(АдресИзJSON[ЧастьАдреса.Ключ] + " " + ТипКраткий),
АдресИзJSON[ЧастьАдреса.Ключ]);
Если ЧастьАдреса.Ключ = "area" И СтрНачинаетсяС(АдресИзJSON[ЧастьАдреса.Ключ], "Кемеровская область -") Тогда
НаименованиеУровня = "Кемеровская область - Кузбасс";
ТипКраткий = "обл";
Иначе
ТипКраткий = АдресИзJSON[ЧастьАдреса.Ключ + "Type"];
НаименованиеУровня = ?(Параметры.НаименованиеВключаетСокращение, СокрЛП(АдресИзJSON[ЧастьАдреса.Ключ] + " " + ТипКраткий),
АдресИзJSON[ЧастьАдреса.Ключ]);
КонецЕсли;
АдресПоПолям[ЧастьАдреса.Значение.Имя] = НаименованиеУровня;
АдресПоПолям[ЧастьАдреса.Значение.Имя + "Сокращение"] = ТипКраткий;
АдресПоПолям[ЧастьАдреса.Значение.Имя + "ТипКраткий"] = ТипКраткий;
@@ -2351,6 +2357,7 @@
КонецЕсли;
АдресПоПолям.Регион = СтрЗаменить(АдресПоПолям.Регион, "Кемеровская область - Кузбасс обл", "Кемеровская область - Кузбасс");
УправлениеКонтактнойИнформациейСлужебный.ЗаменитьВСтруктуреНеопределеноНаПустуюСтроку(АдресПоПолям);
СтрокаАдреса.Адрес = АдресПоПолям;
@@ -2363,9 +2370,27 @@
КонецЦикла;
Возврат НаборАдресов;
КонецФункции
Процедура УстановкаТипаОбластьКемеровскойОбласти(КонтактнаяИнформацияПоПолям) Экспорт
Если СтрСравнить(КонтактнаяИнформацияПоПолям.area, "Кемеровская область -") = 0 Тогда
КонтактнаяИнформацияПоПолям.area = "Кемеровская область - Кузбасс";
КонтактнаяИнформацияПоПолям.areaType= "обл";
КонецЕсли;
КонецПроцедуры
Процедура УстановкаТипаКузбассКемеровскойОбласти(КонтактнаяИнформацияПоПолям) Экспорт
Если СтрСравнить(КонтактнаяИнформацияПоПолям.area, "Кемеровская область - Кузбасс") = 0 Тогда
КонтактнаяИнформацияПоПолям.area = "Кемеровская область -";
КонтактнаяИнформацияПоПолям.areaType= "Кузбасс";
КонецЕсли;
КонецПроцедуры
// Возвращает сведения об адресе в виде отдельных частей адреса и различных кодов (код региона, ОКТМО и др.).
//
Функция СведенияОбАдресеВВидеСтруктуры(Знач АдресСтрокой, ДополнительныеПараметры)
@@ -275,20 +275,35 @@
Процедура ПроверитьКорректностьКурсаНа01_01_1980(Валюта) Экспорт
ДатаКурса = Дата("19800101");
СтруктураКурса = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ДатаКурса, Новый Структура("Валюта", Валюта));
Если (СтруктураКурса.Курс = 0) Или (СтруктураКурса.Кратность = 0) Тогда
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(Валюта);
НаборЗаписей.Отбор.Период.Установить(ДатаКурса);
Запись = НаборЗаписей.Добавить();
Запись.Валюта = Валюта;
Запись.Период = ДатаКурса;
Запись.Курс = 1;
Запись.Кратность = 1;
НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
НаборЗаписей.Записать();
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КурсыВалют");
ЭлементБлокировки.УстановитьЗначение("Валюта", Валюта);
ЭлементБлокировки.УстановитьЗначение("Период", ДатаКурса);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
СтруктураКурса = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ДатаКурса, Новый Структура("Валюта", Валюта));
Если (СтруктураКурса.Курс = 0) Или (СтруктураКурса.Кратность = 0) Тогда
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(Валюта);
НаборЗаписей.Отбор.Период.Установить(ДатаКурса);
Запись = НаборЗаписей.Добавить();
Запись.Валюта = Валюта;
Запись.Период = ДатаКурса;
Запись.Курс = 1;
Запись.Кратность = 1;
НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
НаборЗаписей.Записать();
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
@@ -443,34 +458,7 @@
ЗависимаяВалюта = Параметры.Валюта;
СпособУстановкиКурса = ЗависимаяВалюта.СпособУстановкиКурса;
СписокВалют = Новый Массив;
Если СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда
СписокВалют.Добавить(ЗависимаяВалюта.ОсновнаяВалюта);
ИначеЕсли СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| &ФормулаРасчетаКурса ПОДОБНО ""%"" + Валюты.Наименование + ""%""";
Запрос.УстановитьПараметр("ФормулаРасчетаКурса", ЗависимаяВалюта.ФормулаРасчетаКурса);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ТекстОшибки = НСтр("ru = 'В формуле должна быть использована хотя бы одна основная валюта.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Объект.ФормулаРасчетаКурса");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СписокВалют.Добавить(Выборка.Ссылка);
КонецЦикла
КонецЕсли;
СписокВалют = Параметры.Валюта.ИспользуемыеВалютыПриРасчетеКурса;
ТекстЗапроса =
"ВЫБРАТЬ
@@ -514,6 +502,7 @@
НаборЗаписей.Отбор.Период.Установить(Выборка.Период);
НаборЗаписей.Прочитать();
НаборЗаписей.ДополнительныеСвойства.Вставить("ОбновитьКурсЗависимойВалюты", ЗависимаяВалюта);
НаборЗаписей.ДополнительныеСвойства.Вставить("КодыВалют", Параметры.КодыВалют);
НаборЗаписей.ДополнительныеСвойства.Вставить("ОбновленныеПериоды", ОбновленныеПериоды);
НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
НаборЗаписей.Записать();
@@ -2354,27 +2354,6 @@
КонецЕсли;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.4.1.50";
Обработчик.Комментарий =
НСтр("ru = 'Перенос двоичных данных файлов в регистр сведений Двоичные данные файлов.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("bb2c6a93-98b0-4a01-8793-6b82f316490e");
Обработчик.Процедура = "РегистрыСведений.ДвоичныеДанныеФайлов.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ОчередьОтложеннойОбработки = 2;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.ДвоичныеДанныеФайлов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ЧитаемыеОбъекты = "Справочник.ВерсииФайлов";
Обработчик.ИзменяемыеОбъекты = "Справочник.ВерсииФайлов,РегистрСведений.ДвоичныеДанныеФайлов";
Обработчик.БлокируемыеОбъекты = "Справочник.Файлы, Справочник.ВерсииФайлов";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Если ПодсистемаЭПСуществует Тогда
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "РаботаСФайлами.ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений";
Приоритет.Порядок = "После";
КонецЕсли;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.4.1.1";
Обработчик.Комментарий =
@@ -2461,6 +2440,51 @@
Приоритет.Процедура = "Справочники.Файлы.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Приоритет.Порядок = "Любой";
Обработчик = Обработчики.Добавить();
Обработчик.Процедура = "РегистрыСведений.ДвоичныеДанныеФайлов.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Версия = "3.1.3.260";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("84e58943-94fe-4f92-99b3-91be534d3754");
Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.ДвоичныеДанныеФайлов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.Комментарий = НСтр("ru = 'Создание недостающих версий файлов для элементов справочника Файлы.'");
Обработчик.ОчередьОтложеннойОбработки = 6;
Читаемые = Новый Массив;
Читаемые.Добавить(Метаданные.Справочники.Файлы.ПолноеИмя());
Читаемые.Добавить(Метаданные.РегистрыСведений.ДвоичныеДанныеФайлов.ПолноеИмя());
Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
Изменяемые = Новый Массив;
Изменяемые.Добавить(Метаданные.Справочники.Файлы.ПолноеИмя());
Изменяемые.Добавить(Метаданные.РегистрыСведений.ДвоичныеДанныеФайлов.ПолноеИмя());
Изменяемые.Добавить(Метаданные.Справочники.ВерсииФайлов.ПолноеИмя());
Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
Блокируемые = Новый Массив;
Блокируемые.Добавить(Метаданные.РегистрыСведений.ДвоичныеДанныеФайлов.ПолноеИмя());
Блокируемые.Добавить(Метаданные.Справочники.ВерсииФайлов.ПолноеИмя());
Блокируемые.Добавить(Метаданные.Справочники.Файлы.ПолноеИмя());
Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
НоваяСтрока = Обработчик.ПриоритетыВыполнения.Добавить();
НоваяСтрока.Процедура = "РаботаСФайлами.ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений";
НоваяСтрока.Порядок = "После";
НоваяСтрока = Обработчик.ПриоритетыВыполнения.Добавить();
НоваяСтрока.Процедура = "РегистрыСведений.НаличиеФайлов.ОбработатьДанныеДляПереходаНаНовуюВерсию";
НоваяСтрока.Порядок = "После";
НоваяСтрока = Обработчик.ПриоритетыВыполнения.Добавить();
НоваяСтрока.Процедура = "Справочники.Файлы.ОбработатьДанныеДляПереходаНаНовуюВерсию";
НоваяСтрока.Порядок = "После";
НоваяСтрока = Обработчик.ПриоритетыВыполнения.Добавить();
НоваяСтрока.Процедура = "РегистрыСведений.СведенияОФайлах.ОбработатьДанныеДляПереходаНаНовуюВерсию";
НоваяСтрока.Порядок = "После";
РаботаСФайламиВТомахСлужебный.ПриДобавленииОбработчиковОбновления(Обработчики);
КонецПроцедуры
@@ -46,7 +46,7 @@
ИначеЕсли КаналСообщений = "ОбменДанными\ПрикладноеПриложение\УдалениеОбмена" Тогда
УдалитьОбменДаннымиВИнформационнойБазе(Отправитель, ТелоСообщения.ИмяПланаОбмена, ТелоСообщения.КодУзла);
УдалитьОбменДаннымиВИнформационнойБазе(Отправитель, ТелоСообщения.ИмяПланаОбмена, ТелоСообщения.КодУзла, ТелоСообщения.ОбластьДанных);
ИначеЕсли КаналСообщений = "ОбменДанными\ПрикладноеПриложение\УстановитьПрефиксОбластиДанных" Тогда
@@ -154,72 +154,10 @@
// Для совместимости, если корреспондент имеет БСП версии ниже БСП 2.1.2
//
Процедура УдалитьОбменДаннымиВИнформационнойБазе(Отправитель, ИмяПланаОбмена, КодУзла)
// Поиск узла по формату кода узла "S00000123"
УзелИнформационнойБазы = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду(ОбменДаннымиВМоделиСервиса.КодУзлаПланаОбменаВСервисе(Число(КодУзла)));
Если УзелИнформационнойБазы.Пустая() Тогда
// Поиск узла по формату кода узла "0000123" (старый формат)
УзелИнформационнойБазы = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду(КодУзла);
КонецЕсли;
КодЭтогоУзла = ОбменДаннымиПовтИсп.ПолучитьКодЭтогоУзлаДляПланаОбмена(ИмяПланаОбмена);
КодЭтогоУзла = ОбменДаннымиСлужебный.НомерОбластиИзКодаУзлаПланаОбмена(КодЭтогоУзла);
Если УзелИнформационнойБазы.Пустая() Тогда
// Отмечаем успешное выполнение операции в управляющем приложении
ОтправитьСообщениеУспешноеВыполнениеОперации(КодЭтогоУзла, Число(КодУзла), Отправитель);
Возврат; // настройка обмена не найдена (возможно, была удалена ранее)
КонецЕсли;
// Удаляем каталог обмена информацией
НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбменаОбластиДанных.НастройкиТранспорта(УзелИнформационнойБазы);
Если НастройкиТранспорта <> Неопределено
И НастройкиТранспорта.ВидТранспортаСообщенийОбменаПоУмолчанию = Перечисления.ВидыТранспортаСообщенийОбмена.FILE Тогда
Если Не ПустаяСтрока(НастройкиТранспорта.FILEОбщийКаталогОбменаИнформацией)
И Не ПустаяСтрока(НастройкиТранспорта.ОтносительныйКаталогОбменаИнформацией) Тогда
АбсолютныйКаталогОбменаИнформацией = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(
НастройкиТранспорта.FILEОбщийКаталогОбменаИнформацией,
НастройкиТранспорта.ОтносительныйКаталогОбменаИнформацией);
АбсолютныйКаталог = Новый Файл(АбсолютныйКаталогОбменаИнформацией);
Попытка
УдалитьФайлы(АбсолютныйКаталог.ПолноеИмя);
Исключение
ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
КонецЕсли;
// Удаляем узел
Попытка
УзелИнформационнойБазы.ПолучитьОбъект().Удалить();
Исключение
СтрокаСообщенияОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
// Отмечаем в управляющем приложении ошибку выполнения операции
ОтправитьСообщениеОшибкаПриУдаленииОбмена(КодЭтогоУзла, Число(КодУзла), СтрокаСообщенияОбОшибке, Отправитель);
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщенияОбОшибке);
Возврат;
КонецПопытки;
Процедура УдалитьОбменДаннымиВИнформационнойБазе(Отправитель, ИмяПланаОбмена, КодУзла, ОбластьДанных)
// Отмечаем успешное выполнение операции в управляющем приложении
ОтправитьСообщениеУспешноеВыполнениеОперации(КодЭтогоУзла, Число(КодУзла), Отправитель);
ОтправитьСообщениеУспешноеВыполнениеОперации(ОбластьДанных, Число(КодУзла), Отправитель);
КонецПроцедуры
@@ -319,31 +257,6 @@
КонецПроцедуры
Процедура ОтправитьСообщениеОшибкаПриУдаленииОбмена(Код1, Код2, СтрокаОшибки, КонечнаяТочка)
Если Не ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
Возврат;
КонецЕсли;
МодульОбменСообщениями = ОбщегоНазначения.ОбщийМодуль("ОбменСообщениями");
НачатьТранзакцию();
Попытка
ТелоСообщения = Новый Структура("Код1, Код2, СтрокаОшибки", Код1, Код2, СтрокаОшибки);
МодульОбменСообщениями.ОтправитьСообщение("ОбменДанными\ПрикладноеПриложение\Ответ\ОшибкаПриУдаленииОбмена", ТелоСообщения, КонечнаяТочка);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОтправкаСообщений(),
УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Процедура ДобавитьОбработчикКаналаСообщений(Канал, ОбработчикКанала, Обработчики)
Обработчик = Обработчики.Добавить();
@@ -405,7 +405,7 @@
КонецЦикла;
КонецПроцедуры
Функция СсылкиНаУдаляемыеОбъектыВРеквизитах(Источник, Реквизиты)
Функция СсылкиНаУдаляемыеОбъектыВРеквизитах(Источник, Реквизиты, ЭтоРегистрБухгалтерии = Ложь)
ЗначенияСсылочныхТипов = Новый Массив;
Для Каждого Реквизит Из Реквизиты Цикл
@@ -418,7 +418,7 @@
ТипЗначения = ТипЗнч(Значение);
Если ЗначениеЗаполнено(Значение) И ОбщегоНазначения.ЭтоСсылка(ТипЗначения) Тогда
ЗначенияСсылочныхТипов.Добавить(Значение);
ИначеЕсли СтрНайти(Реквизит.Имя,"Субконто") > 0 Тогда
ИначеЕсли СтрНайти(Реквизит.Имя,"Субконто") > 0 И ЭтоРегистрБухгалтерии Тогда
СсылкиНаУдаляемыеОбъектыВСубконто(Значение, ЗначенияСсылочныхТипов);
КонецЕсли;
@@ -455,13 +455,13 @@
Возврат ЗначенияСсылочныхТипов;
КонецФункции
Функция СсылкиНаУдаляемыеОбъектыВНабореЗаписей(НаборЗаписей, Знач Реквизиты)
Функция СсылкиНаУдаляемыеОбъектыВНабореЗаписей(НаборЗаписей, Знач Реквизиты, ЭтоРегистрБухгалтерии = Ложь)
ЗначенияСсылочныхТипов = Новый Массив;
Для Каждого Запись Из НаборЗаписей Цикл
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВРеквизитах(Запись, Реквизиты));
СсылкиНаУдаляемыеОбъектыВРеквизитах(Запись, Реквизиты, ЭтоРегистрБухгалтерии));
КонецЦикла;
Возврат ЗначенияСсылочныхТипов;
@@ -526,6 +526,7 @@
Функция СсылкиНаУдаляемыеОбъектыВРегистрах(Источник, МетаданныеИсточника)
ЗначенияСсылочныхТипов = Новый Массив;
ЭтоРегистрБухгалтерии = ОбщегоНазначения.ЭтоРегистрБухгалтерии(МетаданныеИсточника);
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "Измерения") Тогда
Если ОбщегоНазначения.ЭтоРегистрБухгалтерии(МетаданныеИсточника) И МетаданныеИсточника.Корреспонденция Тогда
@@ -535,7 +536,7 @@
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты));
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты, ЭтоРегистрБухгалтерии));
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "Ресурсы") Тогда
@@ -545,24 +546,24 @@
Реквизиты = МетаданныеИсточника.Ресурсы;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ЗначенияСсылочныхТипов, СсылкиНаУдаляемыеОбъектыВНабореЗаписей(
Источник, Реквизиты));
Источник, Реквизиты, ЭтоРегистрБухгалтерии));
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника,"СтандартныеРеквизиты") Тогда
Если ОбщегоНазначения.ЭтоРегистрБухгалтерии(МетаданныеИсточника) Тогда
Если ЭтоРегистрБухгалтерии Тогда
Реквизиты = СформироватьСтандартныеРеквизитыРегистраБухгалтерии(МетаданныеИсточника);
Иначе
Реквизиты = МетаданныеИсточника.СтандартныеРеквизиты;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты));
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты, ЭтоРегистрБухгалтерии));
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "Реквизиты") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, МетаданныеИсточника.Реквизиты));
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, МетаданныеИсточника.Реквизиты, ЭтоРегистрБухгалтерии));
КонецЕсли;
Возврат ЗначенияСсылочныхТипов;
@@ -604,5 +605,4 @@
#КонецОбласти
#КонецОбласти
#КонецОбласти
@@ -968,7 +968,16 @@
Возврат;
КонецЕсли;
СсылкиНаУдаляемыеОбъекты = УдалениеПомеченныхОбъектов.СсылкиНаУдаляемыеОбъекты(Источник);
СсылкиНаУдаляемыеОбъекты = Новый Массив;
Попытка
СсылкиНаУдаляемыеОбъекты = УдалениеПомеченныхОбъектов.СсылкиНаУдаляемыеОбъекты(Источник);
Исключение
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Удаление помеченных'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, , ,
НСтр("ru='Не удалось выполнить контроль удаляемых объектов:'") + ОписаниеОшибки());
КонецПопытки;
Если СсылкиНаУдаляемыеОбъекты.Количество() > 0 Тогда
ШаблонСообщения = НСтр("ru = 'Выполняется удаление ""%1"".
|Замените ""%1"" на непомеченные на удаление аналоги.'");
@@ -1513,7 +1522,6 @@
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -22566,7 +22566,7 @@
// Число нужно увеличивать при внесении изменений в состав параметров кэша
// (в том числе при изменении версии шаблонов).
Возврат "19";
Возврат "20";
КонецФункции
@@ -23815,7 +23815,7 @@
Возврат;
КонецЕсли;
Если Параметры.ПолеВладельца <> Неопределено Тогда
Если Параметры.ИспользуетсяОграничениеПоВладельцу Тогда
ПолеВладельца = Параметры.ПолеВладельца; // См. НовоеПолеВладельца
Поля = ":" + ПолеВладельца.Имя;
@@ -286,7 +286,7 @@
СоответствиеИменПсевдонимам.Вставить("УправлениеКонтактнойИнформациейСлужебный.ИсправлениеУстаревшихАдресов");
КонецПроцедуры
Функция ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь) Экспорт
Функция ВидыКонтактнойИнформацииОбновляются(Очередь) Экспорт
Возврат ОбновлениеИнформационнойБазы.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь, "Справочник.ВидыКонтактнойИнформации");
КонецФункции
@@ -1076,6 +1076,7 @@
ДанныеАнализа = ЧастиАдресаТаблицей(Представление);
Если ДанныеАнализа.Количество() = 0 Тогда
Адрес.Value = Представление;
Возврат Адрес;
КонецЕсли;
@@ -1110,7 +1111,9 @@
Если РазбиватьНаПоля Тогда
МодульРаботаСАдресамиКлиентСервер = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресамиКлиентСервер");
Адрес.AddressType = МодульРаботаСАдресамиКлиентСервер.МуниципальныйАдрес();
Если МодульРаботаСАдресамиКлиентСервер <> Неопределено Тогда
Адрес.AddressType = МодульРаботаСАдресамиКлиентСервер.МуниципальныйАдрес();
КонецЕсли;
Адрес.Value = Представление;
РаспределитьАдресПоПолямБезКлассификатора(Адрес, ДанныеАнализа);
@@ -1126,7 +1129,9 @@
ЗаполнитьЗначенияСвойств(Адрес, ВариантыАдреса);
Если ЕстьРаботаСАдресамиКлиентСервер Тогда
МодульРаботаСАдресамиКлиентСервер = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресамиКлиентСервер");
МодульРаботаСАдресамиКлиентСервер.ОбновитьПредставлениеАдреса(Адрес, Ложь);
Если МодульРаботаСАдресамиКлиентСервер <> Неопределено Тогда
МодульРаботаСАдресамиКлиентСервер.ОбновитьПредставлениеАдреса(Адрес, Ложь);
КонецЕсли;
Иначе
ОбновитьПредставлениеАдреса(Адрес, Ложь);
КонецЕсли;
@@ -1138,7 +1143,6 @@
Иначе
Если ЕстьРаботаСАдресамиКлиентСервер Тогда
МодульРаботаСАдресамиКлиентСервер = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресамиКлиентСервер");
ТипАдреса = ?(УправлениеКонтактнойИнформацией.ЭтоСтранаУчастникЕАЭС(Адрес.Country),
УправлениеКонтактнойИнформациейКлиентСервер.АдресЕАЭС(),
УправлениеКонтактнойИнформациейКлиентСервер.ИностранныйАдрес());
@@ -1460,10 +1464,9 @@
Возврат "";
КонецЕсли;
Вид = Неопределено;
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоКонтактнаяИнформацияВJSON(КонтактнаяИнформация) Тогда
КонтактнаяИнформация = СтрокуJSONВСтруктуру(КонтактнаяИнформация);
КонтактнаяИнформация = JSONВКонтактнуюИнформациюПоПолям(КонтактнаяИнформация, Неопределено);
ИначеЕсли ТипЗнч(КонтактнаяИнформация) = Тип("Структура") Тогда
@@ -1482,7 +1485,7 @@
КонецЕсли;
Если ПустаяСтрока(КонтактнаяИнформация.Value) Тогда
СформироватьПредставлениеКонтактнойИнформации(КонтактнаяИнформация, Вид);
СформироватьПредставлениеКонтактнойИнформации(КонтактнаяИнформация, Неопределено);
КонецЕсли;
Возврат КонтактнаяИнформация.Value
@@ -4517,6 +4520,13 @@
КонецЕсли;
КонецЦикла;
Если КонтактнаяИнформацияПоПолям.Свойство("area") И Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
МодульРаботаСАдресами.УстановкаТипаОбластьКемеровскойОбласти(КонтактнаяИнформацияПоПолям);
КонецЕсли;
ЗаписатьJSON(ЗаписьJSON, КонтактнаяИнформацияПоПолям,, "АдаптацияПолейКонтактнойИнформации", УправлениеКонтактнойИнформациейСлужебный);
Возврат ЗаписьJSON.Закрыть();
@@ -4591,6 +4601,13 @@
ЧтениеJSON.Закрыть();
Если Результат.Свойство("area") И Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
МодульРаботаСАдресами.УстановкаТипаКузбассКемеровскойОбласти(Результат);
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -13,13 +13,18 @@
// Параметры:
// Наборы - ДеревоЗначений:
// * Имя - Строка - имя набора свойств. Формируется из полного имени объекта
// метаданных заменой символа "." на "_".
// Например, "Документ_ЗаказПокупателя".
// * Идентификатор - УникальныйИдентификатор - идентификатор ссылки предопределенного элемента.
// метаданных заменой символа "." на "_".
// Например, "Документ_ЗаказПокупателя".
// * Идентификатор - УникальныйИдентификатор - уникальный идентификатор предопределенного набора свойств.
// Не должен повторяться в других наборах свойств.
// Формат идентификатора Random UUID (Version 4).
// Чтобы получить идентификатор, нужно в режиме 1С:Предприятие вычислить значение
// конструктора платформы "Новый УникальныйИдентификатор" или воспользоваться online-генератором,
// например, https://www.uuidgenerator.net/version4.
// * Используется - Неопределено
// - Булево - признак того, что набор свойств используется.
// Например, можно использовать для скрытия набора по функциональным опциям.
// Значение по умолчанию - Неопределено, соответствует значению Истина.
// Например, можно использовать для скрытия набора по функциональным опциям.
// Значение по умолчанию - Неопределено, соответствует значению Истина.
// * ЭтоГруппа - Булево - Истина, если набор свойств является группой.
//
Процедура ПриПолученииПредопределенныхНаборовСвойств(Наборы) Экспорт
@@ -821,7 +821,7 @@
МассивИдентификаторовПорцииДляЗагрузки.Добавить(ИдЗагружать.Получить(Инд));
КоличествоВПорции = КоличествоВПорции + 1;
Если КоличествоВПорции = 10 Тогда
Если КоличествоВПорции = 5 Тогда
Прервать;
КонецЕсли;
@@ -82,6 +82,7 @@
ДополнительныеПараметры.Вставить("ЭлементСписок", ЭлементСписок);
ДополнительныеПараметры.Вставить("НавигационнаяСсылка", Неопределено);
ДополнительныеПараметры.Вставить("Форма", Форма);
ДополнительныеПараметры.Вставить("ВыводитьПрогресс", ВыводитьПрогресс);
Если Форма.Окно <> Неопределено Тогда
ДополнительныеПараметры.НавигационнаяСсылка = Форма.Окно.ПолучитьНавигационнуюСсылку();
КонецЕсли;
@@ -131,15 +132,19 @@
ДополнительныеПараметры.Форма.ДатаПредыдущегоПолученияОтправкиПочты = ОбщегоНазначенияКлиент.ДатаСеанса();
Заголовок = НСтр("ru = 'Отправка и получение почты'");
РезультатВыполнения = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
Если РезультатВыполнения.ЕстьОшибки Тогда
ПоказатьОповещениеПользователя(Заголовок, ДополнительныеПараметры.НавигационнаяСсылка,
НСтр("ru = 'Не удалось выполнить все действия. Технические подробности для администратора в журнале регистрации.'"),
БиблиотекаКартинок.Ошибка32, СтатусОповещенияПользователя.Важное);
Иначе
ПоказатьОповещениеПользователя(Заголовок, ДополнительныеПараметры.НавигационнаяСсылка,
РезультатОтправкиПолученияПисем(РезультатВыполнения));
Если ДополнительныеПараметры.ВыводитьПрогресс Тогда
Заголовок = НСтр("ru = 'Отправка и получение почты'");
РезультатВыполнения = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
Если РезультатВыполнения.ЕстьОшибки Тогда
ПоказатьОповещениеПользователя(Заголовок, ДополнительныеПараметры.НавигационнаяСсылка,
НСтр("ru = 'Не удалось выполнить все действия. Технические подробности для администратора в журнале регистрации.'"),
БиблиотекаКартинок.Ошибка32, СтатусОповещенияПользователя.Важное);
Иначе
ПоказатьОповещениеПользователя(Заголовок, ДополнительныеПараметры.НавигационнаяСсылка,
РезультатОтправкиПолученияПисем(РезультатВыполнения));
КонецЕсли;
КонецЕсли;
Оповестить("ВыполненаОтправкаПолучениеПисем");
@@ -590,6 +590,10 @@
//
Процедура УстановитьНовоеСостояниеОригинала(ДанныеЗаписи, ИмяСостояния, Изменено = Ложь) Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетОригиналовПервичныхДокументов") = Ложь Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(ДанныеЗаписи) = Тип("Массив") Тогда
@@ -130,7 +130,7 @@
// Источник - ЭлементФормы - список или декорация формы, у которого будет открыт выпадающий список.
//
Процедура ОткрытьМенюВыбораСостояния(Форма, Источник) Экспорт
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'У пользователя недостаточно прав на изменение состояния оригинала первичного документа'"));
Возврат;
@@ -205,10 +205,9 @@
// ИмяСобытия - Строка - имя произошедшего события.
// Форма - УправляемаяФорма - форма документа.
//
Процедура ОбработчикОповещенияФормаДокумента(ИмяСобытия, Форма) Экспорт
Если ИмяСобытия = "ИзменениеСостоянияОригиналаПервичногоДокумента"
Или ИмяСобытия = "ТабличныеДокументыНапечатаны" Тогда
Процедура ОбработчикОповещенияФормаДокумента(ИмяСобытия, Форма) Экспорт
Если ИмяСобытия = "ИзменениеСостоянияОригиналаПервичногоДокумента" Тогда
СформироватьНадписьТекущегоСостоянияОригинала(Форма);
ИначеЕсли ИмяСобытия = "ДобавлениеУдалениеСостоянияОригиналаПервичногоДокумента" Тогда
Форма.ОбновитьОтображениеДанных();
@@ -223,8 +222,8 @@
// Форма - УправляемаяФорма - форма списка документов.
// Список - ЭлементФормы - основной список формы.
//
Процедура ОбработчикОповещенияФормаСписка(ИмяСобытия, Форма, Список) Экспорт
Процедура ОбработчикОповещенияФормаСписка(ИмяСобытия, Форма, Список) Экспорт
Если ИмяСобытия = "ДобавлениеУдалениеСостоянияОригиналаПервичногоДокумента" Тогда
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("СписокВыбораСостоянийОригинала", Неопределено);
@@ -251,8 +250,8 @@
// Список - ЭлементФормы - основной список формы.
// СтандартнаяОбработка - Булево - Истина, если в форме используется стандартная обработка события "Выбор"
//
Процедура СписокВыбор(ИмяПоля, Форма, Список, СтандартнаяОбработка) Экспорт
Процедура СписокВыбор(ИмяПоля, Форма, Список, СтандартнаяОбработка) Экспорт
Если ИмяПоля = "СостояниеОригиналаПервичногоДокумента" Или ИмяПоля = "СостояниеОригиналПолучен" Тогда
СтандартнаяОбработка = Ложь;
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
@@ -383,21 +382,23 @@
//
Процедура СформироватьНадписьТекущегоСостоянияОригинала(Форма)
Если ЗначениеЗаполнено(Форма.Объект.Ссылка) Тогда
ТекущиеСостояниеОригинала = УчетОригиналовПервичныхДокументовВызовСервера.СведенияОСостоянииОригиналаПоСсылке(Форма.Объект.Ссылка);
Если ПустаяСтрока(ТекущиеСостояниеОригинала) Тогда
ТекущиеСостояниеОригинала=НСтр("ru='<Состояние оригинала неизвестно>'");
Форма.Элементы.ДекорацияСостояниеОригинала.ЦветТекста = WebЦвета.Серебряный;
Если Не Форма.Элементы.Найти("ДекорацияСостояниеОригинала") = Неопределено Тогда
Если ЗначениеЗаполнено(Форма.Объект.Ссылка) Тогда
ТекущиеСостояниеОригинала = УчетОригиналовПервичныхДокументовВызовСервера.СведенияОСостоянииОригиналаПоСсылке(Форма.Объект.Ссылка);
Если ПустаяСтрока(ТекущиеСостояниеОригинала) Тогда
ТекущиеСостояниеОригинала=НСтр("ru='<Состояние оригинала неизвестно>'");
Форма.Элементы.ДекорацияСостояниеОригинала.ЦветТекста = WebЦвета.Серебряный;
Иначе
ТекущиеСостояниеОригинала = ТекущиеСостояниеОригинала.СостояниеОригиналаПервичногоДокумента;
Форма.Элементы.ДекорацияСостояниеОригинала.ЦветТекста = Новый Цвет();
КонецЕсли;
Иначе
ТекущиеСостояниеОригинала = ТекущиеСостояниеОригинала.СостояниеОригиналаПервичногоДокумента;
Форма.Элементы.ДекорацияСостояниеОригинала.ЦветТекста = Новый Цвет();
Форма.Элементы.ДекорацияСостояниеОригинала.ЦветТекста = WebЦвета.Серебряный;
КонецЕсли;
Иначе
Форма.Элементы.ДекорацияСостояниеОригинала.ЦветТекста = WebЦвета.Серебряный;
Форма.Элементы.ДекорацияСостояниеОригинала.Заголовок = ТекущиеСостояниеОригинала;
КонецЕсли;
Форма.Элементы.ДекорацияСостояниеОригинала.Заголовок = ТекущиеСостояниеОригинала;
КонецПроцедуры
// Обработчик оповещения, вызванного после завершения работы процедуры УстановитьСостояниеОригинала(...).
@@ -1527,7 +1527,7 @@
КонецЕсли;
Реквизиты.Вставить(ОписаниеРеквизита.Имя, Истина);
СписокРеквизитов = СписокРеквизитов + ", " + Префикс + ОписаниеРеквизита.Имя + " КАК " + СтрЗаменить(Префикс + ОписаниеРеквизита.Имя, ".", "_");
СписокРеквизитов = СписокРеквизитов + ", " + Префикс + ОписаниеРеквизита.Имя;
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -1662,9 +1662,6 @@
Процедура УстановитьПараметрыИзЗапроса(Параметры, Результат, Знач Префикс = "")
Если ЗначениеЗаполнено(Префикс) Тогда
Префикс = Префикс + "_";
КонецЕсли;
Для каждого ЗначениеПараметра Из Параметры Цикл
Если ТипЗнч(Параметры[ЗначениеПараметра.Ключ]) = Тип("Соответствие") Тогда
УстановитьПараметрыИзЗапроса(Параметры[ЗначениеПараметра.Ключ], Результат, Префикс + ЗначениеПараметра.Ключ);
@@ -1690,6 +1687,7 @@
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ПреобразоватьСтрокиКТипу(Значение, Тип)
@@ -1812,25 +1810,13 @@
СписокРеквизитов = Сред(СписокПараметров(ПараметрыОснования), 3);
Если ЗначениеЗаполнено(СписокРеквизитов) Тогда
Запрос = Новый Запрос;
ЗапросТекст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| %1
|ИЗ
| %2 КАК %3
|ГДЕ
| %3.Ссылка = &Ссылка";
ЗапросТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ЗапросТекст, СписокРеквизитов, МетаданныеОбъекта.ПолноеИмя(), МетаданныеОбъекта.Имя);
Запрос.УстановитьПараметр("Ссылка", Предмет);
Запрос.Текст = ЗапросТекст;
ЗначенияРеквизитов = Новый Соответствие;
Для Каждого ЗначениеРеквизита Из ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Предмет, СписокРеквизитов, Истина) Цикл
ЗначенияРеквизитов.Вставить(ЗначениеРеквизита.Ключ,ЗначениеРеквизита.Значение);
КонецЦикла;
УстановитьПараметрыИзЗапроса(Реквизиты, ЗначенияРеквизитов);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() > 0 Тогда
РезультатЗапроса = СтрокаТаблицыЗначенийВСоответствие(РезультатЗапроса[0]);
УстановитьПараметрыИзЗапроса(Реквизиты, РезультатЗапроса);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -394,6 +394,8 @@
// программы из справочника для которой удалось его создать.
// - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования - программа
// для которой нужно создать и вернуть менеджер криптографии.
// - Структура - см. ЭлектроннаяПодпись.НовоеОписаниеПрограммы
//
// * АлгоритмПодписи - Строка - если параметр заполнен, возвращает программу с указанным алгоритмом подписи.
//
Функция ПараметрыСозданияМенеджераКриптографии() Экспорт
@@ -2298,8 +2300,11 @@
КонецЕсли;
КонецЕсли;
ИдентификаторПутиКПрограмме = ?(ЗначениеЗаполнено(ОписаниеПрограммы.Ссылка),
ОписаниеПрограммы.Ссылка, ОписаниеПрограммы.Идентификатор);
СвойстваПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииСвойстваПрограммы(
ОписаниеПрограммы, ЭтоLinux, Ошибки, Истина, ПутьКПрограмме(ОписаниеПрограммы.Ссылка));
ОписаниеПрограммы, ЭтоLinux, Ошибки, Истина, ПутьКПрограмме(ИдентификаторПутиКПрограмме));
Если СвойстваПрограммы = Неопределено Тогда
Продолжить;
@@ -2376,7 +2381,7 @@
КонецФункции
Функция ПутьКПрограмме(ПрограммаСсылка) Экспорт
Функция ПутьКПрограмме(ПрограммаСсылка)
Результат = Новый Структура("ПутьКПрограмме, Существует", "", Ложь);
@@ -379,142 +379,40 @@
КонецФункции
Процедура НайтиУстановленныеПрограммы(Контекст) Экспорт
Функция НайтиУстановленныеПрограммы(ОписаниеПрограмм, ПроверятьНаСервере) Экспорт
Контекст.Вставить("Индекс", -1);
НайтиУстановленныеПрограммыНаСервереЦиклНачало(Контекст);
КонецПроцедуры
// См. также Контекст в ЭлектроннаяПодписьСлужебныйКлиент.КонтекстПоискаУстановленныхПрограмм
//
// Параметры:
// Контекст - Структура:
// * Программы - см. ЭлектроннаяПодписьСлужебныйВызовСервера.ЗаполнитьСписокПрограммДляПоиска
// * Индекс - Число
//
Процедура НайтиУстановленныеПрограммыНаСервереЦиклНачало(Контекст)
Если Контекст.Программы.Количество() <= Контекст.Индекс + 1 Тогда
// После цикла.
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
ОписаниеПрограммы = Контекст.Программы.Получить(Контекст.Индекс);
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
ОписанияПрограмм = Новый Массив;
ОписанияПрограмм.Добавить(Контекст.ОписаниеПрограммы);
ОписаниеОшибок = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеОписаниеОшибок();
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОписанияПрограмм", ОписанияПрограмм);
ПараметрыВыполнения.Вставить("Индекс", -1);
ПараметрыВыполнения.Вставить("ПоказатьОшибку", Ложь);
ПараметрыВыполнения.Вставить("ОписаниеОшибок", ОписаниеОшибок);
ПараметрыВыполнения.Вставить("ЭтоLinux", ЭлектроннаяПодписьСлужебный.ТребуетсяПутьКПрограмме());
ПараметрыВыполнения.Вставить("Менеджер", Неопределено);
Контекст.Вставить("ПараметрыВыполнения", ПараметрыВыполнения);
СоздатьМенеджерКриптографииЦиклНачало(ПараметрыВыполнения, Контекст);
КонецПроцедуры
Процедура СоздатьМенеджерКриптографииЦиклНачало(Контекст, ПараметрыВыполнения)
ОписаниеПрограммы = Контекст.ОписанияПрограмм[0]; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
СвойстваПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииСвойстваПрограммы(
Контекст.ОписаниеПрограммы,
Контекст.ЭтоLinux,
Контекст.ОписаниеОшибок.Ошибки,
Ложь,
ЭлектроннаяПодписьСлужебный.ПутьКПрограмме(Контекст.ОписаниеПрограммы.Ссылка));
Если СвойстваПрограммы = Неопределено Тогда
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
Возврат;
Если ПроверятьНаСервере = Неопределено Тогда
ПроверятьНаСервере = ЭлектроннаяПодпись.ПроверятьЭлектронныеПодписиНаСервере()
Или ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере();
КонецЕсли;
Попытка
ИнформацияМодуля = СредстваКриптографии.ПолучитьИнформациюМодуляКриптографии(
СвойстваПрограммы.ИмяПрограммы,
СвойстваПрограммы.ПутьКПрограмме,
СвойстваПрограммы.ТипПрограммы);
Исключение
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииДобавитьОшибку(Контекст.ОписаниеОшибок.Ошибки,
Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
Истина, Истина, Истина);
СвойстваОшибки = Контекст.ОписаниеОшибок.Ошибки[0]; // см. ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки
ТекстОшибки = НСтр("ru = 'Не установлена на сервере.'") + " " + СвойстваОшибки.Описание;
ОбновитьЗначение(Контекст.ОписаниеПрограммы.РезультатПроверкиНаСервере, ТекстОшибки);
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
Возврат;
КонецПопытки;
Программы = ЗаполнитьСписокПрограммДляПоиска(ОписаниеПрограмм);
Если ИнформацияМодуля = Неопределено Тогда
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииПрограммаНеНайдена(
Контекст.ОписаниеПрограммы, Контекст.Ошибки, Истина);
Менеджер = Неопределено;
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
Возврат;
Если Не ПроверятьНаСервере Тогда
Возврат Программы;
КонецЕсли;
Если Не Контекст.ЭтоLinux Тогда
ИмяПрограммыПолученное = ИнформацияМодуля.Имя;
ИмяПрограммыСовпадает = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииИмяПрограммыСовпадает(
Контекст.ОписаниеПрограммы, ИмяПрограммыПолученное, Контекст.ОписаниеОшибок.Ошибки, Истина);
Если Не ИмяПрограммыСовпадает Тогда
Менеджер = Неопределено;
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
Возврат;
Для Каждого Программа Из Программы Цикл
ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.Программа = Программа;
ПараметрыСоздания.ОписаниеОшибки = Новый Структура;
Менеджер = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("", ПараметрыСоздания);
Если Менеджер = Неопределено Тогда
Программа.РезультатПроверкиНаСервере =
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОшибкиПоискаПрограммы(
НСтр("ru = 'Не установлена на сервере %1.'"), ПараметрыСоздания.ОписаниеОшибки);
Иначе
Программа.РезультатПроверкиНаСервере = "";
Программа.Установлена = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Попытка
Менеджер = Новый МенеджерКриптографии(
СвойстваПрограммы.ИмяПрограммы,
СвойстваПрограммы.ПутьКПрограмме,
СвойстваПрограммы.ТипПрограммы);
Исключение
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииДобавитьОшибку(Контекст.ОписаниеОшибок.Ошибки,
Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
Истина, Истина, Истина);
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
Возврат;
КонецПопытки;
Возврат Программы;
АлгоритмыУстановлены = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииАлгоритмыУстановлены(
Контекст.ОписаниеПрограммы, Менеджер, Контекст.ОписаниеОшибок.Ошибки);
Если Не АлгоритмыУстановлены Тогда
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
Возврат;
КонецЕсли;
ОбновитьЗначение(Контекст.ОписаниеПрограммы.РезультатПроверкиНаСервере, "");
ОбновитьЗначение(Контекст.ОписаниеПрограммы.Установлена, Истина);
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
КонецПроцедуры
Процедура ОбновитьЗначение(СтароеЗначение, НовоеЗначение)
Если СтароеЗначение <> НовоеЗначение Тогда
СтароеЗначение = НовоеЗначение;
КонецЕсли;
КонецПроцедуры
КонецФункции
// Для процедуры НайтиУстановленныеПрограммы.
Функция ЗаполнитьСписокПрограммДляПоиска(ОписаниеПрограмм) Экспорт
Функция ЗаполнитьСписокПрограммДляПоиска(ОписаниеПрограмм)
ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм();
@@ -523,6 +421,7 @@
МассивИсключений = Новый Массив;
МассивИсключений.Добавить("Установлена");
МассивИсключений.Добавить("Ссылка");
МассивИсключений.Добавить("Идентификатор");
МассивИсключений.Добавить("РезультатПроверкиНаКлиенте");
МассивИсключений.Добавить("РезультатПроверкиНаСервере");
@@ -542,7 +441,7 @@
Продолжить;
КонецЕсли;
Если КлючИЗначение.Значение <> Неопределено Тогда
ОбновитьЗначение(Строки[0][КлючИЗначение.Ключ], КлючИЗначение.Значение);
Строки[0][КлючИЗначение.Ключ] = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -573,6 +472,7 @@
ОписаниеПрограммы = ЭлектроннаяПодпись.НовоеОписаниеПрограммы();
ОписаниеПрограммы.Вставить("Ссылка", Неопределено);
ОписаниеПрограммы.Вставить("Идентификатор", Неопределено);
ОписаниеПрограммы.Вставить("Установлена", Ложь);
ОписаниеПрограммы.Вставить("РезультатПроверкиНаКлиенте", "");
ОписаниеПрограммы.Вставить("РезультатПроверкиНаСервере", Неопределено);
@@ -191,15 +191,20 @@
КонецЕсли;
ОбщиеНастройки = ЭлектроннаяПодписьКлиент.ОбщиеНастройки();
ОписаниеПрограммы = ОбщиеНастройки.ОписанияПрограммПоСсылке.Получить(ПрограммаСсылка); // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Если ОписаниеПрограммы = Неопределено Тогда
ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Результат);
Возврат;
Если ТипЗнч(ПрограммаСсылка) = Тип("Строка") Тогда
ИдентификаторПрограммы = ПрограммаСсылка;
Иначе
ОписаниеПрограммы = ОбщиеНастройки.ОписанияПрограммПоСсылке.Получить(ПрограммаСсылка); // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Если ОписаниеПрограммы = Неопределено Тогда
ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Результат);
Возврат;
КонецЕсли;
ИдентификаторПрограммы = ОписаниеПрограммы.Идентификатор;
КонецЕсли;
ПутиНайдены = Ложь;
Для Каждого ПутиКМодулямПрограмм Из ОбщиеНастройки.ПоставляемыеПутиКМодулямПрограмм Цикл
Если СтрНачинаетсяС(ОписаниеПрограммы.Идентификатор, ПутиКМодулямПрограмм.Ключ) Тогда
Если СтрНачинаетсяС(ИдентификаторПрограммы, ПутиКМодулямПрограмм.Ключ) Тогда
ПутиНайдены = Истина;
Прервать;
КонецЕсли;
@@ -332,33 +337,21 @@
// Продолжение процедуры НайтиУстановленныеПрограммы.
Процедура НайтиУстановленныеПрограммы(Оповещение, ОписаниеПрограмм, ПроверятьНаСервере) Экспорт
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("Программы", ЭлектроннаяПодписьСлужебныйВызовСервера.ЗаполнитьСписокПрограммДляПоиска(ОписаниеПрограмм));
ПараметрыОповещения.Вставить("ОповещениеОЗавершении", Оповещение);
Если ПроверятьНаСервере = Неопределено Тогда
ПроверятьНаСервере = ЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере()
Или ЭлектроннаяПодписьКлиент.СоздаватьЭлектронныеПодписиНаСервере();
КонецЕсли;
ПараметрыОповещения.Вставить("ПроверятьНаСервере", ПроверятьНаСервере);
Программы = ЭлектроннаяПодписьСлужебныйВызовСервера.НайтиУстановленныеПрограммы(
ОписаниеПрограмм, ПроверятьНаСервере);
Оповещение = Новый ОписаниеОповещения("НайтиУстановленныеПрограммыПослеПодключенияРасширения", ЭтотОбъект, ПараметрыОповещения);
Контекст = КонтекстПоискаУстановленныхПрограмм();
Контекст.Индекс = -1;
Контекст.Программы = Программы;
Контекст.ОповещениеОЗавершении = Оповещение;
Оповещение = Новый ОписаниеОповещения("НайтиУстановленныеПрограммыПослеПодключенияРасширения", ЭтотОбъект, Контекст);
ЭлектроннаяПодписьКлиент.УстановитьРасширение(Истина, Оповещение);
КонецПроцедуры
// Продолжение процедуры НайтиУстановленныеПрограммы.
Процедура НайтиУстановленныеПрограммыПослеПодключенияРасширения(Подключено, ДополнительныеПараметры) Экспорт
Если Не Подключено Тогда
Возврат;
КонецЕсли;
Контекст = КонтекстПоискаУстановленныхПрограмм();
Контекст.Индекс = -1;
Контекст.Программы = ДополнительныеПараметры.Программы;
Контекст.ПроверятьНаСервере = ДополнительныеПараметры.ПроверятьНаСервере;
Контекст.ОповещениеОЗавершении = ДополнительныеПараметры.ОповещениеОЗавершении;
Процедура НайтиУстановленныеПрограммыПослеПодключенияРасширения(Подключено, Контекст) Экспорт
НайтиУстановленныеПрограммыЦиклНачало(Контекст);
@@ -368,78 +361,48 @@
Процедура НайтиУстановленныеПрограммыЦиклНачало(Контекст)
Если Контекст.Программы.Количество() <= Контекст.Индекс + 1 Тогда
// После цикла.
ОповещениеОЗавершении = Контекст.ОповещениеОЗавершении;
Если Контекст.ПроверятьНаСервере Тогда
Контекст.Вставить("ОповещениеОЗавершении", Неопределено);
ЭлектроннаяПодписьСлужебныйВызовСервера.НайтиУстановленныеПрограммы(Контекст);
КонецЕсли;
ВыполнитьОбработкуОповещения(ОповещениеОЗавершении, Контекст.Программы);
НайтиУстановленныеПрограммыПослеЦикла(Контекст);
Возврат;
КонецЕсли;
Контекст = Контекст; // см. КонтекстПоискаУстановленныхПрограмм
Контекст.Индекс = Контекст.Индекс + 1;
ОписаниеПрограммы = Контекст.Программы.Получить(Контекст.Индекс);
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.Программа = Контекст.Программы.Получить(Контекст.Индекс);
ПараметрыСоздания.ПоказатьОшибку = Неопределено;
ОписанияПрограмм = Новый Массив;
ОписанияПрограмм.Добавить(Контекст.ОписаниеПрограммы);
ОписаниеОшибок = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеОписаниеОшибок();
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОписанияПрограмм", ОписанияПрограмм);
ПараметрыВыполнения.Вставить("Индекс", -1);
ПараметрыВыполнения.Вставить("ПоказатьОшибку", Ложь);
ПараметрыВыполнения.Вставить("ОписаниеОшибок", ОписаниеОшибок);
ПараметрыВыполнения.Вставить("АлгоритмПодписи", "");
ПараметрыВыполнения.Вставить("ЭтоLinux", ТребуетсяПутьКПрограмме());
ПараметрыВыполнения.Вставить("Менеджер", Неопределено);
ПараметрыВыполнения.Вставить("ИнтерактивныйРежим", Ложь);
ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения(
"НайтиУстановленныеПрограммыЦиклПродолжение", ЭтотОбъект, Контекст));
Контекст.Вставить("ПараметрыВыполнения", Новый Структура("ОписаниеОшибок", ОписаниеОшибок));
СоздатьМенеджерКриптографииЦиклНачало(ПараметрыВыполнения);
Оповещение = Новый ОписаниеОповещения("НайтиУстановленныеПрограммыЦиклПродолжение", ЭтотОбъект, Контекст);
СоздатьМенеджерКриптографии(Оповещение, "", ПараметрыСоздания);
КонецПроцедуры
// Продолжение процедуры НайтиУстановленныеПрограммы.
Процедура НайтиУстановленныеПрограммыЦиклПродолжение(Менеджер, Контекст) Экспорт
Процедура НайтиУстановленныеПрограммыЦиклПродолжение(Результат, Контекст) Экспорт
ОписаниеПрограммы = Контекст.ОписаниеПрограммы;
Ошибки = Контекст.ПараметрыВыполнения.ОписаниеОшибок.Ошибки; // Массив Из см. ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки
Контекст = Контекст; // см. КонтекстПоискаУстановленныхПрограмм
ОписаниеПрограммы = Контекст.Программы.Получить(Контекст.Индекс);
Если Менеджер <> Неопределено Тогда
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверкиНаКлиенте, "");
ОбновитьЗначение(ОписаниеПрограммы.Установлена, Истина);
НайтиУстановленныеПрограммыЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Для Каждого Ошибка Из Ошибки Цикл
Прервать;
КонецЦикла;
Если Ошибка.НеУказанПуть Тогда
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверкиНаКлиенте, НСтр("ru = 'Не указан путь к программе.'"));
Если ТипЗнч(Результат) = Тип("МенеджерКриптографии") Тогда
ОписаниеПрограммы.РезультатПроверкиНаКлиенте = "";
ОписаниеПрограммы.Установлена = Истина;
Иначе
ТекстОшибки = НСтр("ru = 'Не установлена на компьютере.'") + " " + Ошибка.Описание;
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверкиНаКлиенте, ТекстОшибки);
ОписаниеПрограммы.РезультатПроверкиНаКлиенте =
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОшибкиПоискаПрограммы(
НСтр("ru = 'Не установлена на компьютере.'"), Результат);
КонецЕсли;
ОбновитьЗначение(ОписаниеПрограммы.Установлена, Ложь);
НайтиУстановленныеПрограммыЦиклНачало(Контекст);
КонецПроцедуры
// Для процедуры НайтиУстановленныеПрограммы.
Процедура ОбновитьЗначение(СтароеЗначение, НовоеЗначение)
// Продолжение процедуры НайтиУстановленныеПрограммы.
Процедура НайтиУстановленныеПрограммыПослеЦикла(Контекст)
Если СтароеЗначение <> НовоеЗначение Тогда
СтароеЗначение = НовоеЗначение;
КонецЕсли;
Для Каждого Программа Из Контекст.Программы Цикл
Программа.Удалить("Идентификатор");
КонецЦикла;
ВыполнитьОбработкуОповещения(Контекст.ОповещениеОЗавершении, Контекст.Программы);
КонецПроцедуры
@@ -1541,9 +1504,12 @@
// программы из справочника для которой удалось его создать.
// - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования - программа
// для которой нужно создать и вернуть менеджер криптографии.
// - Структура - см. ЭлектроннаяПодпись.НовоеОписаниеПрограммы
//
// * ИнтерактивныйРежим - Булево - если Истина, тогда менеджер криптографии будет создан
// в режиме использования интерактивного режима криптографии
// (установка свойства ПарольДоступаКЗакрытомуКлючу будет запрещена).
//
// * АлгоритмПодписи - Строка - если параметр заполнен, возвращает программу с указанным алгоритмом подписи.
//
Функция ПараметрыСозданияМенеджераКриптографии() Экспорт
@@ -1605,6 +1571,7 @@
// * ОписаниеПрограмм - Массив из см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
// * СвойстваОшибки - Массив из Структура:
// ** Описание - Строка
// * Индекс - Число
//
Функция КонтекстСоздатьМенеджерКриптографии()
@@ -1726,6 +1693,17 @@
СоздатьМенеджерКриптографииПослеЦикла(Контекст);
Возврат;
КонецЕсли;
Поток = Новый ПотокВПамяти;
Поток.НачатьПолучениеРазмера(Новый ОписаниеОповещения(
"СоздатьМенеджерКриптографииЦиклНачалоПродолжение", ЭтотОбъект, Контекст));
КонецПроцедуры
// Продолжение процедуры СоздатьМенеджерКриптографии.
Процедура СоздатьМенеджерКриптографииЦиклНачалоПродолжение(Результат, Контекст) Экспорт
Контекст = Контекст; // см. КонтекстСоздатьМенеджерКриптографии
Контекст.Индекс = Контекст.Индекс + 1;
ОписаниеПрограммы = Контекст.ОписанияПрограмм[Контекст.Индекс]; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
@@ -1747,8 +1725,11 @@
КонецЕсли;
КонецЕсли;
ИдентификаторПутиКПрограмме = ?(ЗначениеЗаполнено(ОписаниеПрограммы.Ссылка),
ОписаниеПрограммы.Ссылка, ОписаниеПрограммы.Идентификатор);
ПолучитьПутьКПрограмме(Новый ОписаниеОповещения("СоздатьМенеджерКриптографииЦиклПослеПолученияПутиКПрограмме",
ЭтотОбъект, Контекст), ОписаниеПрограммы.Ссылка);
ЭтотОбъект, Контекст), ИдентификаторПутиКПрограмме);
КонецПроцедуры
@@ -5984,21 +5965,20 @@
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// Структура:
// * ОповещениеОЗавершении - ОписаниеОповещения
// * ПроверятьНаСервере - Булево
// * Программы - см. ЭлектроннаяПодписьСлужебныйВызовСервера.ЗаполнитьСписокПрограммДляПоиска
// * Индекс - Число
//
Функция КонтекстПоискаУстановленныхПрограмм()
Контекст = Новый Структура;
Контекст = Новый Структура;
Контекст.Вставить("Индекс");
Контекст.Вставить("Программы");
Контекст.Вставить("ПроверятьНаСервере");
Контекст.Вставить("ОповещениеОЗавершении");
Возврат Контекст;
КонецФункции
#КонецОбласти
@@ -129,7 +129,13 @@
//
Функция МенеджерКриптографииОписанияПрограмм(Программа, Ошибки, Знач ОписанияПрограмм) Экспорт
Если Программа <> Неопределено Тогда
Если ТипЗнч(Программа) = Тип("Структура") Тогда
ОписанияПрограмм = Новый Массив;
ОписанияПрограмм.Добавить(Программа);
Возврат ОписанияПрограмм;
ИначеЕсли Программа <> Неопределено Тогда
ПрограммаНайдена = Ложь;
Для Каждого ОписаниеПрограммы Из ОписанияПрограмм Цикл
@@ -513,6 +519,21 @@
КонецПроцедуры
// Параметры:
// ЗаголовокОшибки - Строка
// ОписаниеОшибок - см. НовоеОписаниеОшибок
//
Функция ТекстОшибкиПоискаПрограммы(Знач ЗаголовокОшибки, ОписаниеОшибок) Экспорт
Для Каждого Ошибка Из ОписаниеОшибок.Ошибки Цикл
Прервать;
КонецЦикла;
ЗаголовокОшибки = СтрЗаменить(ЗаголовокОшибки, "%1", ОписаниеОшибок.ИмяКомпьютера);
Возврат ЗаголовокОшибки + " " + Ошибка.Описание;
КонецФункции
// Только для внутреннего использования.
//
// Параметры:
@@ -59,7 +59,7 @@
Запрос.Текст =
"ВЫБРАТЬ
| Программы.Ссылка КАК Ссылка,
| Программы.Наименование КАК Наименование,
| Программы.Наименование КАК Представление,
| Программы.ИмяПрограммы КАК ИмяПрограммы,
| Программы.ТипПрограммы КАК ТипПрограммы,
| Программы.АлгоритмПодписи КАК АлгоритмПодписи,
@@ -122,7 +122,7 @@
// Возвращаемое значение:
// Структура:
// * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// * Наименование - Строка
// * Представление - Строка
// * ИмяПрограммы - Строка
// * ТипПрограммы - Число
// * АлгоритмПодписи - Строка
@@ -134,7 +134,7 @@
Описание = Новый Структура;
Описание.Вставить("Ссылка");
Описание.Вставить("Наименование");
Описание.Вставить("Представление");
Описание.Вставить("ИмяПрограммы");
Описание.Вставить("ТипПрограммы");
Описание.Вставить("АлгоритмПодписи");
@@ -208,33 +208,65 @@
Для Каждого ОписаниеПрограммы Из ОбщиеНастройки.ОписанияПрограмм Цикл
Если ПутиКПрограммамНаСерверахLinux.Получить(ОписаниеПрограммы.Ссылка) <> Неопределено Тогда
Если ЗначениеЗаполнено(ОписаниеПрограммы.Идентификатор) Тогда
ПутиКПрограммамНаСерверахLinux.Вставить(ОписаниеПрограммы.Идентификатор,
ПутиКПрограммамНаСерверахLinux.Получить(ОписаниеПрограммы.Ссылка));
КонецЕсли;
Продолжить;
КонецЕсли;
Для Каждого ПутиКМодулямПрограмм Из ОбщиеНастройки.ПоставляемыеПутиКМодулямПрограмм Цикл
Если Не СтрНачинаетсяС(ОписаниеПрограммы.Идентификатор, ПутиКМодулямПрограмм.Ключ) Тогда
Продолжить;
КонецЕсли;
ПутиКМодулямПрограммы = ПутиКМодулямПрограмм.Значение.Получить(ТипПлатформыСтрокой);
Если ПутиКМодулямПрограммы = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеПути = Новый Структура("ПутьКПрограмме, Существует", ПутиКМодулямПрограммы[0], Ложь);
ОписаниеПути = ОписаниеПутиПоИдентификаторуПрограммы(ОписаниеПрограммы.Идентификатор,
ОбщиеНастройки.ПоставляемыеПутиКМодулямПрограмм, ТипПлатформыСтрокой);
Если ОписаниеПути <> Неопределено Тогда
ПутиКПрограммамНаСерверахLinux.Вставить(ОписаниеПрограммы.Ссылка, ОписаниеПути);
Для Каждого ПутиКМодулям Из ПутиКМодулямПрограммы Цикл
Если Не ОдинИзМодулейСуществует(ПутиКМодулям) Тогда
Продолжить;
КонецЕсли;
ОписаниеПути.ПутьКПрограмме = ПутиКМодулям;
ОписаниеПути.Существует = Истина;
Прервать;
КонецЦикла;
КонецЦикла;
ПутиКПрограммамНаСерверахLinux.Вставить(ОписаниеПрограммы.Идентификатор, ОписаниеПути);
КонецЕсли;
КонецЦикла;
ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм();
Для Каждого ПоставляемаяНастройка Из ПоставляемыеНастройки Цикл
Если ПутиКПрограммамНаСерверахLinux.Получить(ПоставляемаяНастройка.Идентификатор) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеПути = ОписаниеПутиПоИдентификаторуПрограммы(ПоставляемаяНастройка.Идентификатор,
ОбщиеНастройки.ПоставляемыеПутиКМодулямПрограмм, ТипПлатформыСтрокой);
Если ОписаниеПути <> Неопределено Тогда
ПутиКПрограммамНаСерверахLinux.Вставить(ПоставляемаяНастройка.Идентификатор, ОписаниеПути);
КонецЕсли;
КонецЦикла;
Возврат Новый ФиксированноеСоответствие(ПутиКПрограммамНаСерверахLinux);
КонецФункции
Функция ОписаниеПутиПоИдентификаторуПрограммы(Идентификатор,
ПоставляемыеПутиКМодулямПрограмм, ТипПлатформыСтрокой)
ОписаниеПути = Неопределено;
Для Каждого ПутиКМодулямПрограмм Из ПоставляемыеПутиКМодулямПрограмм Цикл
Если Не СтрНачинаетсяС(Идентификатор, ПутиКМодулямПрограмм.Ключ) Тогда
Продолжить;
КонецЕсли;
ПутиКМодулямПрограммы = ПутиКМодулямПрограмм.Значение.Получить(ТипПлатформыСтрокой);
Если ПутиКМодулямПрограммы = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеПути = Новый Структура("ПутьКПрограмме, Существует", ПутиКМодулямПрограммы[0], Ложь);
Для Каждого ПутиКМодулям Из ПутиКМодулямПрограммы Цикл
Если Не ОдинИзМодулейСуществует(ПутиКМодулям) Тогда
Продолжить;
КонецЕсли;
ОписаниеПути.ПутьКПрограмме = ПутиКМодулям;
ОписаниеПути.Существует = Истина;
Прервать;
КонецЦикла;
Прервать;
КонецЦикла;
Возврат ОписаниеПути;
КонецФункции
Функция ОдинИзМодулейСуществует(ПутиКМодулям)
МодулиПрограммы = СтрРазделить(ПутиКМодулям, ":");
+9 -9
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="1e2f928c-e6b6-11ea-9290-0242ac110002">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="adb66684-eec6-11ea-d79f-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="1e2f928d-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="1e2f92be-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="1e2f92bf-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="1e2f92c8-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="1e2f92c9-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="1e2f92d2-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="dbc9ff47-da7a-452c-a80b-54deba3778a9"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="adb66685-eec6-11ea-d79f-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="adb666b6-eec6-11ea-d79f-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="adb666b7-eec6-11ea-d79f-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="adb666c0-eec6-11ea-d79f-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="adb666c1-eec6-11ea-d79f-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="adb666c2-eec6-11ea-d79f-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="a6fd9351-b8d4-4af7-b1a8-426e28edb6c1"/>
<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.3.250</version>
<version>3.1.3.264</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,634d1ef2-e6b6-11ea-7c96-0242ac110002,1,56a04cf6-e6b6-11ea-0686-0242ac110002,"3.1.3.250","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6172,1,0,1e2f928c-e6b6-11ea-9290-0242ac110002,1e2f928c-e6b6-11ea-9290-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,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,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-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
{6,1,1,f22c9bd0-eec6-11ea-f19b-0242ac110002,1,e682fe50-eec6-11ea-299e-0242ac110002,"3.1.3.264","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6172,1,0,adb66684-eec6-11ea-d79f-0242ac110002,adb66684-eec6-11ea-d79f-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,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,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-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
@@ -574,6 +574,10 @@
СтандартнаяОбработка = Ложь;
Если Не Доступность Тогда
Возврат;
КонецЕсли;
Если ДокументыПечатались И Не Модифицированность Тогда
ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат(Истина, Неопределено);
Возврат;
@@ -729,7 +733,9 @@
Если Ответ = КодВозвратаДиалога.Нет Тогда
РазблокироватьОбъект();
Модифицированность = Ложь;
Закрыть();
Если Открыта() Тогда
Закрыть();
КонецЕсли;
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
ЗаписатьИРазблокироватьОбъект();
ПослеЗаписи();
@@ -770,7 +776,9 @@
ВозвращаемоеЗначение = Новый Структура;
ВозвращаемоеЗначение.Вставить("Ссылка", Объект.Ссылка);
ВозвращаемоеЗначение.Вставить("Добавлен", ЗаявлениеИсполнено());
Закрыть(ВозвращаемоеЗначение);
Если Открыта() Тогда
Закрыть(ВозвращаемоеЗначение);
КонецЕсли;
КонецПроцедуры
@@ -438,7 +438,9 @@
ДополнительныеПараметры = Новый Структура("НомерСборкиДляОбработчиков", Истина);
ОбработчикОтвета = Новый ОписаниеОповещения("ЗавершениеВводаНомераСборки", ЭтотОбъект, ДополнительныеПараметры);
НомераВерсии = СтрРазделить(ВерсияКонфигурации,".");
ПоказатьВводЧисла(ОбработчикОтвета, Число(НомераВерсии[3]), НСтр("ru = 'Укажите новый номер сборки'"));
ТекстПодсказки = НСтр("ru = 'Текущая версия: %1; Укажите новый номер сборки:'");
ТекстПодсказки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПодсказки, ВерсияКонфигурации);
ПоказатьВводЧисла(ОбработчикОтвета, Число(НомераВерсии[3]) + 1, ТекстПодсказки);
КонецПроцедуры
@@ -3872,7 +3874,6 @@
Если СтрЧислоВхождений(Обработчик.Версия, ".") = 3 Тогда
НомераВерсии = СтрРазделить(Обработчик.Версия, ".");
ТекущийНомерСборки = Формат(НомераВерсии[3], "ЧН=0; ЧГ=0");
НомераВерсии[3] = Формат(НовыйНомерСборки, "ЧН=0; ЧГ=0");
Обработчик.Версия = СтрСоединить(НомераВерсии, ".");
@@ -1431,11 +1431,10 @@
ТекстЗапросаВТ =
"ВЫБРАТЬ
|%Поля
|ПОМЕСТИТЬ %ИмяПриемника
|&Поля
|ПОМЕСТИТЬ ИмяПриемника
|ИЗ
| &Таблица КАК Т
|%Индексы";
| &Таблица КАК Т";
МассивПолей = Новый Массив;
Для Каждого Колонка Из НоваяТаблица.Колонки Цикл
@@ -1445,9 +1444,9 @@
ТекстПоляТаблицы = СтрСоединить(МассивПолей, "," + Символы.ПС);
ТекстПоляИндексирования = ?(ПоляИндексирования = "", "", "ИНДЕКСИРОВАТЬ ПО " + ПоляИндексирования);
ТекстЗапросаВТ = СтрЗаменить(ТекстЗапросаВТ, "%Поля", ТекстПоляТаблицы);
ТекстЗапросаВТ = СтрЗаменить(ТекстЗапросаВТ, "%ИмяПриемника", ИмяТаблицы);
ТекстЗапросаВТ = СтрЗаменить(ТекстЗапросаВТ, "%Индексы", ТекстПоляИндексирования);
ТекстЗапросаВТ = СтрЗаменить(ТекстЗапросаВТ, "&Поля", ТекстПоляТаблицы);
ТекстЗапросаВТ = СтрЗаменить(ТекстЗапросаВТ, "ИмяПриемника", ИмяТаблицы);
ТекстЗапросаВТ = ТекстЗапросаВТ + Символы.ПС + ТекстПоляИндексирования;
Запрос.Текст = ТекстЗапросаУничтожитьВТ + ТекстЗапросаВТ;
Запрос.УстановитьПараметр("Таблица", НоваяТаблица);
@@ -153,8 +153,10 @@
Результат = КонструкторРезультатаВыбора();
РегионЗагружен = Ложь;
Если Данные <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Результат, Данные);
РегионЗагружен = Данные.РегионЗагружен;
Иначе
Результат.Отказ = Истина;
Результат.Уровень = Уровень;
@@ -166,7 +168,7 @@
КонецЕсли;
Результат.Муниципальный = РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса);
Результат.ЗагруженныеДанные = Уровень = 1;
Результат.ЗагруженныеДанные = (Уровень = 1 Или РегионЗагружен);
ОповеститьОВыборе(Результат);
@@ -1588,8 +1588,14 @@
Для Каждого ВыбранныйФайл Из ВыбранныеФайлы Цикл
НоваяСтрока = Вложения.Добавить();
НоваяСтрока.Расположение = 2;
НоваяСтрока.ИмяФайлаНаКомпьютере = ВыбранныйФайл.ПолноеИмя;
#Если ВебКлиент Тогда
НоваяСтрока.Расположение = 4;
НоваяСтрока.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(ПолучитьИзВременногоХранилища(ВыбранныйФайл.Хранение));
#Иначе
НоваяСтрока.Расположение = 2;
НоваяСтрока.ИмяФайлаНаКомпьютере = ВыбранныйФайл.ПолноеИмя;
#КонецЕсли
ИмяФайла = ИмяФайлаБезКаталога(ВыбранныйФайл.ПолноеИмя);
НоваяСтрока.ИмяФайла = ИмяФайла;
@@ -27,13 +27,27 @@
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
| ПО ВерсииФайлов.Ссылка = ДвоичныеДанныеФайлов.Файл
|ГДЕ
| ДвоичныеДанныеФайлов.Файл ЕСТЬ NULL
| ДвоичныеДанныеФайлов.Файл ЕСТЬ NULL
| И ВерсииФайлов.ТипХраненияФайла = ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ВИнформационнойБазе)
|
|УПОРЯДОЧИТЬ ПО
| ВерсииФайлов.ДатаМодификацииУниверсальная УБЫВ";
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДвоичныеДанныеФайлов.Файл КАК Ссылка
|ИЗ
| РегистрСведений.ДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
|ГДЕ
| ТИПЗНАЧЕНИЯ(ДвоичныеДанныеФайлов.Файл.Ссылка) = &ТипФайла";
Запрос.УстановитьПараметр("ТипФайла", ТипЗнч(Справочники.Файлы.ПустаяСсылка()));
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок);
КонецПроцедуры
@@ -41,9 +55,28 @@
// Обновить записи регистра.
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ОбработкаЗавершена = Истина;
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ВерсииФайлов");
Если Выборка.Количество() > 0 Тогда
ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов(Выборка);
КонецЕсли;
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.Файлы");
Если Выборка.Количество() > 0 Тогда
СоздатьНедостающиеВерсииФайлов(Выборка);
КонецЕсли;
ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВерсииФайлов")
И ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.Файлы");
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов(Выборка)
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
@@ -91,27 +124,103 @@
КонецЦикла;
Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВерсииФайлов") Тогда
ОбработкаЗавершена = Ложь;
КонецЕсли;
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов не удалось обработать некоторые версии файлов (пропущены): %1'"),
ПроблемныхОбъектов);
НСтр("ru = 'Процедуре ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов не удалось обработать некоторые версии файлов (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.НайтиПоПолномуИмени("Справочник.ВерсииФайлов"),,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов обработала очередную порцию версий: %1'"),
ОбъектовОбработано));
Метаданные.НайтиПоПолномуИмени("Справочник.ВерсииФайлов"),,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов обработала очередную порцию версий: %1'"),
ОбъектовОбработано));
КонецЕсли;
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
КонецПроцедуры
Процедура СоздатьНедостающиеВерсииФайлов(Выборка)
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
Пока Выборка.Следующий() Цикл
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Файлы");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка);
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ДвоичныеДанныеФайлов");
ЭлементБлокировки.УстановитьЗначение("Файл", Выборка.Ссылка);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ФайлОбъект = Выборка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.Файлы
Если ФайлОбъект <> Неопределено Тогда
Версия = Справочники.ВерсииФайлов.СоздатьЭлемент();
Версия.УстановитьНовыйКод();
НаборСвойств = "Автор,Владелец,ДатаМодификацииУниверсальная,ДатаСоздания,ИндексКартинки,
|Наименование,ПометкаУдаления, ПутьКФайлу,Размер,Расширение,СтатусИзвлеченияТекста, ТекстХранилище, ТипХраненияФайла, Том";
ЗаполнитьЗначенияСвойств(Версия, ФайлОбъект, НаборСвойств);
Версия.НомерВерсии = 1;
Версия.ПолноеНаименование = ФайлОбъект.Наименование;
Версия.Владелец = Выборка.Ссылка;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Версия);
ФайлОбъект.ТекущаяВерсия = Версия.Ссылка;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ФайлОбъект);
ДвоичныеДанныеФайлов = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьМенеджерЗаписи();
ДвоичныеДанныеФайлов.Файл = Выборка.Ссылка;
ДвоичныеДанныеФайлов.Прочитать();
ДвоичныеДанныеФайлов.Файл = Версия.Ссылка;
ДвоичныеДанныеФайлов.Записать();
КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
// Если не удалось обработать какой-либо файл, повторяем попытку снова.
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать файл: %1 по причине:
|%2'"),
Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
Выборка.Ссылка.Метаданные(), Выборка.Ссылка, ТекстСообщения);
КонецПопытки;
КонецЦикла;
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре СоздатьНедостающиеВерсииФайлов не удалось обработать некоторые файлы (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.НайтиПоПолномуИмени("Справочник.ВерсииФайлов"),,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура СоздатьНедостающиеВерсииФайлов обработала очередную порцию файлов: %1'"),
ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -11,6 +11,7 @@
#Область ОписаниеПеременных
Перем ОшибкаРасчетаКурсаПоФормуле;
Перем КодыВалют;
#КонецОбласти
@@ -50,10 +51,10 @@
ДополнительныеСвойства.Свойство("ОбновитьКурсЗависимойВалюты", ВыбраннаяВалюта);
Для Каждого ЗаписьОсновнойВалюты Из ЭтотОбъект Цикл
Если ВыбраннаяВалюта <> Неопределено Тогда // Нужно обновить курс только указанной валюты.
ЗаблокироватьКурсЗависимойВалюты(ВыбраннаяВалюта, ЗаписьОсновнойВалюты.Период);
Иначе
Иначе
ЗависимыеВалюты = РаботаСКурсамиВалют.СписокЗависимыхВалют(ЗаписьОсновнойВалюты.Валюта, ДополнительныеСвойства);
Для Каждого ЗависимаяВалюта Из ЗависимыеВалюты Цикл
ЗаблокироватьКурсЗависимойВалюты(ЗависимаяВалюта, ЗаписьОсновнойВалюты.Период);
@@ -118,14 +119,29 @@
КонецЕсли;
КонецЕсли;
Если ЗаписьКурсовВалют.Курс = 0 Тогда
Возврат;
КонецЕсли;
НаборЗаписей.ДополнительныеСвойства.Вставить("ОтключитьКонтрольПодчиненныхВалют");
НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
Если ЗаписьКурсовВалют.Курс > 0 Тогда
НаборЗаписей.Записать();
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КурсыВалют");
ЭлементБлокировки.УстановитьЗначение("Валюта", ЗаписьКурсовВалют.Валюта);
ЭлементБлокировки.УстановитьЗначение("Период", ЗаписьКурсовВалют.Период);
КонецПроцедуры
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
НаборЗаписей.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
// Очищает курсы зависимых валют.
//
@@ -158,25 +174,39 @@
НаборЗаписей.Записать();
КонецПроцедуры
Функция КурсВалютыПоФормуле(Знач Валюта, Знач Формула, Знач Период)
ТекстЗапроса =
Функция КурсВалютыПоФормуле(Валюта, Формула, Период)
Если КодыВалют = Неопределено Тогда
КодыВалют = КодыВалют();
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Валюты.Наименование КАК СимвольныйКод,
| Валюты.Ссылка КАК Ссылка,
| Валюты.СимвольныйКод КАК СимвольныйКод
|ПОМЕСТИТЬ Валюты
|ИЗ
| &КодыВалют КАК Валюты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Валюты.СимвольныйКод КАК СимвольныйКод,
| ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 1) / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) КАК Курс
|ИЗ
| Справочник.Валюты КАК Валюты
| Валюты КАК Валюты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Период, ) КАК КурсыВалютСрезПоследних
| ПО КурсыВалютСрезПоследних.Валюта = Валюты.Ссылка
|ГДЕ
| Валюты.СпособУстановкиКурса <> ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты)
| И Валюты.СпособУстановкиКурса <> ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.РасчетПоФормуле)";
| ПО (КурсыВалютСрезПоследних.Валюта = Валюты.Ссылка)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("КодыВалют", КодыВалют);
Запрос.УстановитьПараметр("Период", Период);
Выражение = Формула;
Если СтрНайти(Выражение, ".") = 0 Тогда
Выражение = СтрЗаменить(Выражение, ",", ".");
КонецЕсли;
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Выражение = СтрЗаменить(Выражение, Выборка.СимвольныйКод, Формат(Выборка.Курс, "ЧРД=.; ЧГ=0"));
@@ -192,8 +222,8 @@
ОшибкаРасчетаКурсаПоФормуле.Вставить(Валюта, Истина);
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Расчет курса валюты ""%1"" по формуле ""%2"" не выполнен:'",
ОбщегоНазначения.КодОсновногоЯзыка()), Валюта, Формула);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Расчет курса валюты ""%1"" по формуле ""%2"" за период ""%3""не выполнен:'",
ОбщегоНазначения.КодОсновногоЯзыка()), Валюта, Формула, Период);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке),
Валюта, "Объект.ФормулаРасчетаКурса");
@@ -212,6 +242,31 @@
Возврат Результат;
КонецФункции
Функция КодыВалют()
КодыВалют = Неопределено;
ДополнительныеСвойства.Свойство("КодыВалют", КодыВалют);
Если КодыВалют = Неопределено Тогда
КодыВалют = Справочники.Валюты.КодыВалют();
КонецЕсли;
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
Результат.Колонки.Добавить("СимвольныйКод", Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(Метаданные.Справочники.Валюты.ДлинаНаименования, ДопустимаяДлина.Переменная)));
Для Каждого ОписаниеВалюты Из КодыВалют Цикл
// Валюта участвует в формуле, если символьный код содержит буквы.
Если ЗначениеЗаполнено(СтрСоединить(СтрРазделить(ОписаниеВалюты.СимвольныйКод, "0123456789", Ложь), "")) Тогда
ЗаполнитьЗначенияСвойств(Результат.Добавить(), ОписаниеВалюты);
КонецЕсли;
КонецЦикла;
Результат.Индексы.Добавить("Ссылка");
Возврат Результат;
КонецФункции
#КонецОбласти
#Иначе
@@ -281,8 +281,10 @@
ИначеЕсли ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульНастройкиТранспорта = ОбщегоНазначения.ОбщийМодуль("РегистрыСведений.НастройкиТранспортаОбменаОбластиДанных");
Возврат МодульНастройкиТранспорта.НастройкиТранспорта(Корреспондент);
МодульНастройкиТранспортаОбменаОбластиДанных = ОбщегоНазначения.ОбщийМодуль("РегистрыСведений.НастройкиТранспортаОбменаОбластиДанных");
Возврат МодульНастройкиТранспортаОбменаОбластиДанных.НастройкиТранспорта(Корреспондент);
КонецЕсли;
Возврат НастройкиТранспортаОбмена(Корреспондент, ВидТранспортаОбмена);
@@ -314,8 +316,10 @@
И ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульНастройкиТранспортаОбмена = ОбщегоНазначения.ОбщийМодуль("РегистрыСведений.НастройкиТранспортаОбменаОбластейДанных");
ВидТранспортаСообщений = МодульНастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(Корреспондент);
МодульНастройкиТранспортаОбменаОбластейДанных = ОбщегоНазначения.ОбщийМодуль("РегистрыСведений.НастройкиТранспортаОбменаОбластейДанных");
ВидТранспортаСообщений = МодульНастройкиТранспортаОбменаОбластейДанных.ВидТранспортаСообщенийОбменаПоУмолчанию(Корреспондент);
КонецЕсли;
Возврат ВидТранспортаСообщений;
@@ -144,17 +144,11 @@
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "ОбъектМетаданных", ОбъектМетаданных,
ВидСравненияКомпоновкиДанных.Равно, , Истина);
КонецЕсли;
ИначеЕсли КлючВарианта = "ПраваПользователейНаТаблицы" Тогда
СписокПользователей = Новый СписокЗначений;
СписокПользователей.ЗагрузитьЗначения(Контекст.Параметры.ПараметрКоманды);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "Пользователь", СписокПользователей,
ВидСравненияКомпоновкиДанных.ВСписке, , Истина);
ИначеЕсли КлючВарианта = "ПраваПользователяНаТаблицы" Тогда
ИначеЕсли КлючВарианта = "ПраваПользователейНаТаблицы" Или КлючВарианта = "ПраваПользователяНаТаблицы" Тогда
Если Контекст.Параметры.Свойство("ПараметрКоманды") Тогда
СписокПользователей = Новый СписокЗначений;
СписокПользователей.ЗагрузитьЗначения(Контекст.Параметры.ПараметрКоманды);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "Пользователь", СписокПользователей,
ВидСравненияКомпоновкиДанных.ВСписке, , Истина);
УстановитьОтборПоПользователям(НовыеНастройкиКД, СписокПользователей);
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -867,6 +861,20 @@
КонецФункции
Процедура УстановитьОтборПоПользователям(НовыеНастройкиКД, СписокПользователей)
ИмяПараметра = "Пользователь";
Параметр = НовыеНастройкиКД.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если Параметр = Неопределено Тогда
НовыеНастройкиКД = КомпоновщикНастроек.Настройки;
Параметр = НовыеНастройкиКД.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
КонецЕсли;
Параметр.Использование = Истина;
Параметр.Значение = СписокПользователей;
КонецПроцедуры
#КонецОбласти
#Иначе
@@ -683,93 +683,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>
@@ -3467,6 +3380,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы</name>
<right>
@@ -14,37 +14,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>// ДляОбъекта(ПолеОбъекта = "")
@@ -1057,45 +1057,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>
@@ -4850,6 +4811,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы</name>
<right>