This commit is contained in:
Компания 1С committed 2018-03-23 00:01:00 +03:00
1 parent 02245f1363
commit 9a30420561
65 files changed
+2214 -1081

No files matched your search

@@ -67,81 +67,19 @@
Настройки.Колонки.Добавить("АлгоритмыХеширования", Новый ОписаниеТипов("Массив")); Настройки.Колонки.Добавить("АлгоритмыХеширования", Новый ОписаниеТипов("Массив"));
Настройки.Колонки.Добавить("АлгоритмыШифрования", Новый ОписаниеТипов("Массив")); Настройки.Колонки.Добавить("АлгоритмыШифрования", Новый ОписаниеТипов("Массив"));
// ViPNet CSP Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
Настройка = Настройки.Добавить(); ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
Настройка.Представление = НСтр("ru = 'ViPNet CSP'"); "Обработка.ПрограммыЭлектроннойПодписиИШифрования");
Настройка.ИмяПрограммы = "Infotecs Cryptographic Service Provider"; ОбработкаПрограммыЭлектроннойПодписиИШифрования.ДобавитьПоставляемыеНастройкиПрограмм(Настройки);
Настройка.ТипПрограммы = 2; Иначе
// Варианты: GOST R 34.10-2001, GOST 34.10-2012 256, GOST 34.11-2012 512. ДобавитьНастройкиMicrosoftEnhancedCSP(Настройки);
Настройка.АлгоритмПодписи = "GOST R 34.10-2001"; КонецЕсли;
// Варианты: GOST R 34.11-94, GOST 34.11-2012 256, GOST 34.11-2012 512.
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89"; // Один вариант.
Настройка.Идентификатор = "VipNet";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001"); Возврат Настройки;
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 256");
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 512");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// КриптоПро CSP КонецФункции
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "GOST R 34.10-2001";
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001"); Процедура ДобавитьНастройкиMicrosoftEnhancedCSP(Настройки) Экспорт
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// ЛИССИ CSP
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ЛИССИ CSP'");
Настройка.ИмяПрограммы = "LISSI-CSP";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "GOST R 34.10-2001";
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "Lissi";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// Сигнал-КОМ CSP (RFC 4357)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (RFC 4357)'");
Настройка.ИмяПрограммы = "Signal-COM CPGOST Cryptographic Provider";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "ECR3410-CP";
Настройка.АлгоритмХеширования = "RUS-HASH-CP";
Настройка.АлгоритмШифрования = "GOST28147";
Настройка.Идентификатор = "SignalComCPGOST";
Настройка.АлгоритмыПодписи.Добавить("ECR3410-CP");
Настройка.АлгоритмыХеширования.Добавить("RUS-HASH-CP");
Настройка.АлгоритмыШифрования.Добавить("GOST28147");
// Сигнал-КОМ CSP (ITU-T X.509 v.3).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (ITU-T X.509 v.3)'");
Настройка.ИмяПрограммы = "Signal-COM ECGOST Cryptographic Provider";
Настройка.ТипПрограммы = 129;
Настройка.АлгоритмПодписи = "ECR3410";
Настройка.АлгоритмХеширования = "RUS-HASH";
Настройка.АлгоритмШифрования = "GOST28147";
Настройка.Идентификатор = "SignalComECGOST";
Настройка.АлгоритмыПодписи.Добавить("ECR3410");
Настройка.АлгоритмыХеширования.Добавить("RUS-HASH");
Настройка.АлгоритмыШифрования.Добавить("GOST28147");
// Microsoft Enhanced CSP // Microsoft Enhanced CSP
Настройка = Настройки.Добавить(); Настройка = Настройки.Добавить();
@@ -163,9 +101,206 @@
Настройка.АлгоритмыШифрования.Добавить("DES"); Настройка.АлгоритмыШифрования.Добавить("DES");
Настройка.АлгоритмыШифрования.Добавить("3DES"); Настройка.АлгоритмыШифрования.Добавить("3DES");
Возврат Настройки; КонецПроцедуры
КонецФункции ////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы.
Процедура ЗаполнитьНачальныеНастройки(Программы = Неопределено, БезОблачнойПрограммы = Ложь) Экспорт
Если Программы = Неопределено Тогда
Программы = Новый Соответствие;
ДобавитьПрограммыНачальногоЗаполнения(Программы);
КонецЕсли;
ОписаниеПрограмм = Новый Массив;
Для Каждого КлючИЗначение Из Программы Цикл
ОписаниеПрограмм.Добавить(ЭлектроннаяПодпись.НовоеОписаниеПрограммы(
КлючИЗначение.Ключ, КлючИЗначение.Значение));
КонецЦикла;
ЭлектроннаяПодпись.ЗаполнитьСписокПрограмм(ОписаниеПрограмм);
Если БезОблачнойПрограммы Тогда
Возврат;
КонецЕсли;
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ПрограммыЭлектроннойПодписиИШифрования");
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьПрограммуОблачногоСервиса();
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьПрограммыНачальногоЗаполнения(Программы)
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ПрограммыЭлектроннойПодписиИШифрования");
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ДобавитьПрограммыНачальногоЗаполнения(Программы);
Иначе
Программы.Вставить("Microsoft Enhanced Cryptographic Provider v1.0", 1);
КонецЕсли;
КонецПроцедуры
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПрограммыЭлектроннойПодписиИШифрования.Ссылка
|ИЗ
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования
|ГДЕ
| НЕ ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ОбработкаЗавершена = Истина;
ВыборкаДетальныеЗаписи = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь,
"Справочник.ПрограммыЭлектроннойПодписиИШифрования");
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
ПоставляемыеНастройки = ПоставляемыеНастройкиПрограмм();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбновитьПредставлениеПрограммыОтложенно(ВыборкаДетальныеЗаписи.Ссылка,
ОбъектовОбработано, ПроблемныхОбъектов, ПоставляемыеНастройки);
КонецЦикла;
ДозаполнитьНачальныеНастройкиОтложенно(ОбъектовОбработано, ПроблемныхОбъектов);
Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ПрограммыЭлектроннойПодписиИШифрования") Тогда
ОбработкаЗавершена = Ложь;
КонецЕсли;
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре Справочники.ОбработатьДанныеДляПереходаНаНовуюВерсию.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые программы электронной подписи (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.НайтиПоПолномуИмени("Справочник.ПрограммыЭлектроннойПодписиИШифрования"),,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура Справочники.ОбработатьДанныеДляПереходаНаНовуюВерсию.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"),
ОбъектовОбработано));
КонецЕсли;
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
КонецПроцедуры
Процедура ОбновитьПредставлениеПрограммыОтложенно(Программа, ОбъектовОбработано, ПроблемныхОбъектов, ПоставляемыеНастройки)
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования");
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Свойства = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Программа,
"ИмяПрограммы, ТипПрограммы, Наименование, ЭтоПрограммаОблачногоСервиса");
Отбор = Новый Структура("ИмяПрограммы, ТипПрограммы", Свойства.ИмяПрограммы, Свойства.ТипПрограммы);
Строки = ПоставляемыеНастройки.НайтиСтроки(Отбор);
Если Не Свойства.ЭтоПрограммаОблачногоСервиса
И Строки.Количество() = 1
И Строки[0].Представление <> Свойства.Наименование Тогда
ПрограммаОбъект = Программа.ПолучитьОбъект();
ПрограммаОбъект.Наименование = Строки[0].Представление;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрограммаОбъект);
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обновить программу ""%1"" по причине:
|%2'"), Строка(Программа), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения);
Возврат;
КонецПопытки;
ОбъектовОбработано = ОбъектовОбработано + 1;
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Программа.Ссылка);
КонецПроцедуры
Процедура ДозаполнитьНачальныеНастройкиОтложенно(ОбъектовОбработано, ПроблемныхОбъектов)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПрограммыЭлектроннойПодписиИШифрования.ИмяПрограммы КАК ИмяПрограммы,
| ПрограммыЭлектроннойПодписиИШифрования.ТипПрограммы КАК ТипПрограммы
|ИЗ
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования
|ГДЕ
| ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса";
Программы = Новый Соответствие;
ДобавитьПрограммыНачальногоЗаполнения(Программы);
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования");
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Программы.Получить(Выборка.ИмяПрограммы) = Выборка.ТипПрограммы Тогда
Программы.Удалить(Выборка.ИмяПрограммы);
КонецЕсли;
КонецЦикла;
ЗаполнитьНачальныеНастройки(Программы, Истина);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось дозаполнить начальные настройки программ по причине:
|%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение ТекстСообщения;
КонецПопытки;
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ПрограммыЭлектроннойПодписиИШифрования");
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьПрограммуОблачногоСервиса(Истина,
ОбъектовОбработано, ПроблемныхОбъектов);
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#КонецЕсли #КонецЕсли
@@ -121,15 +121,13 @@
КонецЕсли; КонецЕсли;
Если РазрешенияПолучены <> Истина Тогда Если РазрешенияПолучены <> Истина Тогда
ДанныеОбъекта = Новый Структура("Ссылка,ИспользоватьДляОтправки,СерверИсходящейПочты,ПортСервераИсходящейПочты,ИспользоватьДляПолучения,
|ПротоколВходящейПочты,СерверВходящейПочты,ПортСервераВходящейПочты");
ЗаполнитьЗначенияСвойств(ДанныеОбъекта, Объект);
Запрос = СоздатьЗапросНаИспользованиеВнешнихРесурсов(ДанныеОбъекта);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПолучениеРазрешенийЗавершение", ЭтотОбъект, ПараметрыЗаписи); ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПолучениеРазрешенийЗавершение", ЭтотОбъект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда
ДанныеОбъекта = Новый Структура("Ссылка,ИспользоватьДляОтправки,СерверИсходящейПочты,ПортСервераИсходящейПочты,ИспользоватьДляПолучения,
|ПротоколВходящейПочты,СерверВходящейПочты,ПортСервераВходящейПочты");
ЗаполнитьЗначенияСвойств(ДанныеОбъекта, Объект);
Запрос = СоздатьЗапросНаИспользованиеВнешнихРесурсов(ДанныеОбъекта);
МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент");
МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов( МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Запрос), ЭтотОбъект, ОповещениеОЗакрытии); ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Запрос), ЭтотОбъект, ОповещениеОЗакрытии);
@@ -155,7 +155,6 @@
КонецЕсли; КонецЕсли;
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы); ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры КонецПроцедуры
@@ -121,6 +121,7 @@
Процедура ИнформационнаяБазаПеремещена(Команда) Процедура ИнформационнаяБазаПеремещена(Команда)
ИнформационнаяБазаПеремещенаНаСервере(); ИнформационнаяБазаПеремещенаНаСервере();
СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения(); СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения();
ОбновитьИнтерфейс();
Закрыть(); Закрыть();
КонецПроцедуры КонецПроцедуры
@@ -128,6 +129,7 @@
Процедура ЭтоКопияИнформационнойБазы(Команда) Процедура ЭтоКопияИнформационнойБазы(Команда)
ЭтоКопияИнформационнойБазыНаСервере(); ЭтоКопияИнформационнойБазыНаСервере();
СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения(); СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения();
ОбновитьИнтерфейс();
Закрыть(); Закрыть();
КонецПроцедуры КонецПроцедуры
@@ -10,7 +10,7 @@
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
ВладелецТокена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.СклоненияПредставленийОбъектов"); ВладелецТокена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.СклоненияПредставленийОбъектов");
Токен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ВладелецТокена, "ТокенДоступаКСервисуMorpher"); Токен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ВладелецТокена, "ТокенДоступаКСервисуMorpher", Истина);
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
ВидДоступаКСервисуMorher = 0; ВидДоступаКСервисуMorher = 0;
@@ -803,12 +803,10 @@
КонецЦикла; КонецЦикла;
КонецЦикла; КонецЦикла;
Если ТекущийРазделСсылка = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда Если ТекущийРазделСсылка = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Раздел ""%1"" не подключен к подсистеме ""%2"". НСтр("ru = 'Для панели отчетов указан несуществующий раздел ""%1"" (см. ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов).'"),
|См. модуль ВариантыОтчетовПереопределяемый, процедуру ОпределитьРазделыСВариантамиОтчетов.'"), Параметры.ПутьКПодсистеме);
Параметры.ПутьКПодсистеме,
ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(Неопределено));
КонецЕсли; КонецЕсли;
КлючНазначенияИспользования = "Раздел_" + Строка(ТекущийРазделСсылка.УникальныйИдентификатор()); КлючНазначенияИспользования = "Раздел_" + Строка(ТекущийРазделСсылка.УникальныйИдентификатор());
@@ -342,8 +342,6 @@
Строка.Представление = ВРег(Строка.Представление); Строка.Представление = ВРег(Строка.Представление);
КонецЦикла; КонецЦикла;
НайденныеКонтакты.Индексы.Добавить("Представление");
// Для каждой строки проставим список найденных контактов. // Для каждой строки проставим список найденных контактов.
Для Каждого СтрокаТаблицы Из ТаблицаКонтактов Цикл Для Каждого СтрокаТаблицы Из ТаблицаКонтактов Цикл
Если Не ПустаяСтрока(СтрокаТаблицы.Адрес) Тогда Если Не ПустаяСтрока(СтрокаТаблицы.Адрес) Тогда
@@ -7535,7 +7535,7 @@
ПараметрыПолучения.Вставить("ПутьДляСохранения", ПутьДляСохранения); ПараметрыПолучения.Вставить("ПутьДляСохранения", ПутьДляСохранения);
ЗагруженныйФайл = МодульПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(ОписаниеРегиона.Адрес, ПараметрыПолучения); ЗагруженныйФайл = МодульПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(ОписаниеРегиона.Адрес, ПараметрыПолучения);
Если Не ЗагруженныйФайл.Статус Тогда Если Не ЗагруженныйФайл.Статус Тогда
УдалитьВременныйФайл(ЗагруженныйФайл.Путь); УдалитьВременныйФайл(ВременныйКаталог);
ВызватьИсключение ЗагруженныйФайл.СообщениеОбОшибке; ВызватьИсключение ЗагруженныйФайл.СообщениеОбОшибке;
КонецЕсли; КонецЕсли;
@@ -252,6 +252,10 @@
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьПочтовыйКлиент"); Возврат ПолучитьФункциональнуюОпцию("ИспользоватьПочтовыйКлиент");
КонецФункции КонецФункции
Функция ИспользуетсяПрочиеВзаимодействия() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьПрочиеВзаимодействия");
КонецФункции
Функция ОтправлятьПисьмаВФорматеHTML() Экспорт Функция ОтправлятьПисьмаВФорматеHTML() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ОтправлятьПисьмаВФорматеHTML"); Возврат ПолучитьФункциональнуюОпцию("ОтправлятьПисьмаВФорматеHTML");
КонецФункции КонецФункции
@@ -343,6 +347,228 @@
Блокировка.Добавить("РегистрСведений.НастройкиУчетныхЗаписейЭлектроннойПочты"); Блокировка.Добавить("РегистрСведений.НастройкиУчетныхЗаписейЭлектроннойПочты");
КонецФункции КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Шаблоны сообщений
Процедура СоздатьПисьмо(Сообщение, УчетнаяЗапись) Экспорт
ПисьмоHTML = (Сообщение.ДополнительныеПараметры.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML);
НачатьТранзакцию();
Попытка
Письмо = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
Письмо.Автор = Пользователи.ТекущийПользователь();
Письмо.Ответственный = Пользователи.ТекущийПользователь();
Письмо.Дата = ТекущаяДатаСеанса();
Письмо.Важность = Перечисления.ВариантыВажностиВзаимодействия.Обычная;
Письмо.Кодировка = КодировкаТекста.UTF8;
Письмо.ОтправительПредставление = Строка(УчетнаяЗапись);
Если ПисьмоHTML Тогда
Письмо.ТекстHTML = Сообщение.Текст;
Письмо.Текст = ПолучитьОбычныйТекстИзHTML(Сообщение.Текст);
Иначе
Письмо.Текст = Сообщение.Текст;
КонецЕсли;
Письмо.Тема = Сообщение.Тема;
Письмо.ТипТекста = ?(ПисьмоHTML, Перечисления.ТипыТекстовЭлектронныхПисем.HTML, Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст);
Письмо.УчетнаяЗапись = УчетнаяЗапись;
Письмо.ВзаимодействиеОснование = Неопределено;
// Заполним реквизиты ВключатьТелоИсходногоПисьма, ОтображатьТелоИсходногоПисьма, УведомитьОДоставке и УведомитьОПрочтении.
НастройкиПользователя = ПолучитьПараметрыРаботыПользователяДляИсходящегоЭлектронногоПисьма(
УчетнаяЗапись, Сообщение.ДополнительныеПараметры.ФорматПисьма, Истина);
ЗаполнитьЗначенияСвойств(Письмо, НастройкиПользователя);
Письмо.УдалятьПослеОтправки = Ложь;
Письмо.Комментарий = КомментарийПоНаименованиюШаблона(Сообщение.ДополнительныеПараметры.Наименование);
СписокПолучателейСпискомЗначений =( ТипЗнч(Сообщение.Получатель) = Тип("СписокЗначений"));
Для Каждого ПолучательПисьма Из Сообщение.Получатель Цикл
НоваяСтрока = Письмо["ПолучателиПисьма"].Добавить();
Если СписокПолучателейСпискомЗначений Тогда
НоваяСтрока.Адрес = ПолучательПисьма.Значение;
НоваяСтрока.Представление = ПолучательПисьма.Представление;
Иначе
НоваяСтрока.Адрес = ПолучательПисьма.Адрес;
НоваяСтрока.Представление = ПолучательПисьма.Представление;
НоваяСтрока.Контакт = ПолучательПисьма.ИсточникКонтактнойИнформации;
КонецЕсли;
КонецЦикла;
Письмо.СписокПолучателейПисьма = ВзаимодействияКлиентСервер.ПолучитьПредставлениеСпискаАдресатов(Письмо.ПолучателиПисьма, Ложь);
Письмо.СтатусПисьма = ?(ОбщегоНазначения.ИнформационнаяБазаФайловая(),
Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик,
Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Исходящее);
Письмо.ЕстьВложения = (Сообщение.Вложения.Количество() > 0);
РазмерВложений = 0;
РазмерыВложений = Новый Соответствие;
Для Каждого Вложение Из Сообщение.Вложения Цикл
Размер = ПолучитьИзВременногоХранилища(Вложение.АдресВоВременномХранилище).Размер() * 1.5;
РазмерВложений = РазмерВложений + Размер;
РазмерыВложений.Вставить(Вложение.АдресВоВременномХранилище, Размер);
// Если у идентификатора не английские символы, то письмо может быть некорректно обработано.
Если ЗначениеЗаполнено(Вложение.Идентификатор) Тогда
Идентификатор = СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(Вложение.Идентификатор);
Письмо.ТекстHTML = СтрЗаменить(Письмо.ТекстHTML, "cid:" + Вложение.Идентификатор, "cid:" + Идентификатор);
Вложение.Идентификатор = Идентификатор;
КонецЕсли;
КонецЦикла;
Письмо.Размер = РазмерВложений + СтрДлина(Письмо.Тема) * 2
+ ?(ПисьмоHTML, СтрДлина(Письмо.ТекстHTML), СтрДлина(Письмо.Текст)) * 2;
Письмо.Записать();
// Добавим вложения
Для Каждого Вложение Из Сообщение.Вложения Цикл
МодульУправлениеЭлектроннойПочтой = ОбщегоНазначения.ОбщийМодуль("УправлениеЭлектроннойПочтой");
Если ПустаяСтрока(Вложение.Идентификатор) Тогда
МодульУправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(Письмо.Ссылка,
Вложение.АдресВоВременномХранилище, Вложение.Представление, РазмерыВложений[Вложение.АдресВоВременномХранилище]);
ИначеЕсли ПисьмоHTML Тогда
ПрисоединенныйФайл = МодульУправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(Письмо.Ссылка,
Вложение.АдресВоВременномХранилище, Вложение.Представление, РазмерыВложений[Вложение.АдресВоВременномХранилище]);
Если ПрисоединенныйФайл <> Неопределено Тогда
ПрисоединенныйФайлОбъект = ПрисоединенныйФайл.ПолучитьОбъект();
ПрисоединенныйФайлОбъект.ИДФайлаЭлектронногоПисьма = Вложение.Идентификатор;
ПрисоединенныйФайлОбъект.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Сообщение.ДополнительныеПараметры.Свойство("Предмет") И ЗначениеЗаполнено(Сообщение.ДополнительныеПараметры.Предмет) Тогда
Предмет = Сообщение.ДополнительныеПараметры.Предмет;
Иначе
Предмет = Письмо.Ссылка;
КонецЕсли;
Реквизиты = СтруктураРеквизитовВзаимодействияДляЗаписи(Предмет, Истина);
ВзаимодействияВызовСервера.ЗаписьРегистрРеквизитыВзаимодействия(Письмо.Ссылка, Реквизиты);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ТекстСообщения = НСтр("ru = 'Не удалось создать письмо : %Письмо% по причине: %Причина%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Письмо%", Письмо);
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,, Письмо, ТекстСообщения);
Возврат;
КонецПопытки;
Попытка
ИдентификаторПисьма = ВыполнитьОтправкуПисьма(Письмо);
Исключение
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Ошибка при отправке письма %1'"),КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
Если НЕ Письмо.УдалятьПослеОтправки Тогда
Попытка
Письмо.ИдентификаторСообщения = ИдентификаторПисьма;
Письмо.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено;
Письмо.ДатаОтправления = ТекущаяДатаСеанса();
Письмо.Записать(РежимЗаписиДокумента.Запись);
ВзаимодействияВызовСервера.УстановитьПапкуЭлектронногоПисьма(
Письмо.Ссылка, ОпределитьПапкуДляПисьма(Письмо.Ссылка));
Исключение
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка при записи письма после успешной отправки %1'"),
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Иначе
Письмо.Прочитать();
Письмо.Удалить();
КонецЕсли;
КонецПроцедуры
Процедура СоздатьИОтправитьСообщениеSMS(Сообщение) Экспорт
СообщениеSMS = Документы.СообщениеSMS.СоздатьДокумент();
СообщениеSMS.Дата = ТекущаяДатаСеанса();
СообщениеSMS.Автор = Пользователи.ТекущийПользователь();
СообщениеSMS.Ответственный = Пользователи.ТекущийПользователь();
СообщениеSMS.Важность = Перечисления.ВариантыВажностиВзаимодействия.Обычная;
СообщениеSMS.ВзаимодействиеОснование = Неопределено;
СообщениеSMS.ТекстСообщения = Сообщение.Текст;
СообщениеSMS.Тема = ВзаимодействияКлиентСервер.ТемаПоТекстуСообщения(Сообщение.Текст);
СообщениеSMS.ОтправлятьВТранслите = Сообщение.ДополнительныеПараметры.ПеревестиВТранслит;
СообщениеSMS.Комментарий = КомментарийПоНаименованиюШаблона(Сообщение.ДополнительныеПараметры.Наименование);
Для каждого АдресатSMS Из Сообщение.Получатель Цикл
НоваяСтрока = СообщениеSMS.Адресаты.Добавить();
Если ТипЗнч(АдресатSMS) = Тип("Структура") Тогда
НоваяСтрока.Контакт = АдресатSMS.ИсточникКонтактнойИнформации;
НоваяСтрока.ПредставлениеКонтакта = АдресатSMS.Представление;
НоваяСтрока.КакСвязаться = АдресатSMS.НомерТелефона;
НоваяСтрока.НомерДляОтправки = АдресатSMS.НомерТелефона;
Иначе
НоваяСтрока.Контакт = "";
НоваяСтрока.ПредставлениеКонтакта = АдресатSMS.Представление;
НоваяСтрока.КакСвязаться = АдресатSMS.Значение;
НоваяСтрока.НомерДляОтправки = АдресатSMS.Значение;
КонецЕсли;
НоваяСтрока.ИдентификаторСообщения = "";
НоваяСтрока.ТекстОшибки = "";
НоваяСтрока.СостояниеСообщения = Перечисления.СостоянияСообщенияSMS.Черновик;
КонецЦикла;
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ОтправкаSMSПоДокументу(СообщениеSMS);
Иначе
ВзаимодействияКлиентСервер.УстановитьСостояниеИсходящееДокументСообщениеSMS(СообщениеSMS);
КонецЕсли;
СообщениеSMS.Записать();
Если Сообщение.ДополнительныеПараметры.Свойство("Предмет") И ЗначениеЗаполнено(Сообщение.ДополнительныеПараметры.Предмет) Тогда
Предмет = Сообщение.ДополнительныеПараметры.Предмет;
Иначе
Предмет = СообщениеSMS.Ссылка;
КонецЕсли;
Реквизиты = СтруктураРеквизитовВзаимодействияДляЗаписи(Предмет, Истина);
ВзаимодействияВызовСервера.ЗаписьРегистрРеквизитыВзаимодействия(СообщениеSMS.Ссылка, Реквизиты);
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Обработчики событий подсистем конфигурации. // Обработчики событий подсистем конфигурации.
@@ -1971,6 +2197,7 @@
ЗаполнитьЗначенияСвойств(Форма, СтруктураРеквизитов, "Предмет, Рассмотрено, РассмотретьПосле"); ЗаполнитьЗначенияСвойств(Форма, СтруктураРеквизитов, "Предмет, Рассмотрено, РассмотретьПосле");
КонецПроцедуры КонецПроцедуры
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции работы с взаимодействиями. // Процедуры и функции работы с взаимодействиями.
@@ -8129,4 +8356,44 @@
КонецФункции КонецФункции
// Формирует структуру для записи в регистр сведений ПредметыПапкиВзаимодействий.
//
// Параметры:
// Папка - Справочник.ПапкиЭлектронныхПисем - папка, имеет смысл для документов "Электронное письмо входящее"
// и "Электронное письмо исходящее".
// Предмет - СправочникСсылка, ДокументСсылка, указывает на предмет взаимодействия.
// Рассмотрено - Булево - признак рассмотрения взаимодействия.
// РассмотретьПосле - ДатаВремя - дата, до которой отложено рассмотрение взаимодействия.
// РассчитыватьРассмотрено - Булево - признак необходимости расчета состояний папки и предмета.
//
// Возвращаемое значение:
// Структура - сформированная структура.
//
Функция СтруктураРеквизитовВзаимодействияДляЗаписи(Предмет, Рассмотрено)
СтруктураВозврата = ВзаимодействияКлиентСервер.ПустаяСтруктураРеквизитыВзаимодействия();
Если Предмет <> Неопределено Тогда
СтруктураВозврата.Предмет = Предмет;
КонецЕсли;
Если Рассмотрено <> Неопределено Тогда
СтруктураВозврата.Рассмотрено = Рассмотрено;
КонецЕсли;
СтруктураВозврата.РассчитыватьРассмотрено = Истина;
Возврат СтруктураВозврата;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////
// Шаблоны сообщений
Функция КомментарийПоНаименованиюШаблона(НаименованиеШаблона)
Возврат НСтр("ru = 'Создано и отправлено по шаблону'") + " - " + НаименованиеШаблона;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -780,6 +780,7 @@
ПараметрыКоманды = Новый Структура; ПараметрыКоманды = Новый Структура;
ПараметрыКоманды.Вставить("ЭтаФорма", ПараметрыВыполнения.Форма); ПараметрыКоманды.Вставить("ЭтаФорма", ПараметрыВыполнения.Форма);
ПараметрыКоманды.Вставить("ДополнительнаяОбработкаСсылка", ВыполняемаяКоманда.Ссылка);
ВыполнитьКомандуВнешнегоОбъекта(ВнешнийОбъект, ВыполняемаяКоманда.Идентификатор, ПараметрыКоманды, Неопределено); ВыполнитьКомандуВнешнегоОбъекта(ВнешнийОбъект, ВыполняемаяКоманда.Идентификатор, ПараметрыКоманды, Неопределено);
КонецПроцедуры КонецПроцедуры
@@ -749,14 +749,14 @@
Обработчик.ОбщиеДанные = Истина; Обработчик.ОбщиеДанные = Истина;
Обработчик = Обработчики.Добавить(); Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.4.4.161"; Обработчик.Версия = "2.4.5.48";
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеПроизводственныхКалендарей"; Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеПроизводственныхКалендарей";
Обработчик.РежимВыполнения = "Оперативно"; Обработчик.РежимВыполнения = "Оперативно";
Обработчик.ОбщиеДанные = Истина; Обработчик.ОбщиеДанные = Истина;
Если Не ОбщегоНазначения.РазделениеВключено() Тогда Если Не ОбщегоНазначения.РазделениеВключено() Тогда
Обработчик = Обработчики.Добавить(); Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.4.4.161"; Обработчик.Версия = "2.4.5.48";
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей"; Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей";
Обработчик.ОчередьОтложеннойОбработки = 1; Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "КалендарныеГрафики.ЗаполнитьДанныеОбновленияДанныхЗависимыхОтПроизводственныхКалендарей"; Обработчик.ПроцедураЗаполненияДанныхОбновления = "КалендарныеГрафики.ЗаполнитьДанныеОбновленияДанныхЗависимыхОтПроизводственныхКалендарей";
@@ -162,30 +162,30 @@
КонецФункции КонецФункции
// Возвращает подробные сведения о выявленных проблемах указанного вида проверки. // Возвращает подробные сведения о выявленных проблемах одного или нескольких интересующих видов проверки.
// //
// Параметры: // Параметры:
// ВидПроверок - СправочникСсылка.ВидыПроверок - ссылка на вид проверки. // ВидПроверок - СправочникСсылка.ВидыПроверок - ссылка на вид проверки.
// - Строка - строковый идентификатор вида проверки Свойство1. // - Строка - строковый идентификатор вида проверки Свойство1.
// - Массив - строковые идентификаторы вида проверки Свойство1...СвойствоN. // - Массив - строковые идентификаторы вида проверки Свойство1...СвойствоN.
// ПоискПоТочномуСоответствию - Булево - Регулирует возможности точности. Если Истина, то поиск ведется // ПоискПоТочномуСоответствию - Булево - если Истина, то вид проверки определяется по точному соответствию со
// по переданным свойствам на равенство, остальные свойства должны быть равны // всеми переданными значениям свойств в параметре ВидПроверок (см. пример № 2).
// Неопределено (табличная часть дополнительных свойств должна быть пуста). // Если Ложь, то вид проверки определяется по указанным значениям свойств
// Если Ложь, то значения остальных свойств могут быть произвольными, главное // и с любыми значениями неуказанных свойств в параметре ВидПроверок (см. пример № 3).
// чтобы соответствующие свойства были равны свойствам структуры. По умолчанию Истина.
// //
// Возвращаемое значение: // Возвращаемое значение:
// ТаблицаЗначений - таблица проблем: // ТаблицаЗначений - выявленные проблемы:
// * ПроблемныйОбъект - ЛюбаяСсылка - Ссылка на объект "Источник" проблем. // * ПроблемныйОбъект - ЛюбаяСсылка - ссылка на объект, с которым связана проблема.
// * ПравилоПроверки - СправочникСсылка.ПравилаПроверкиУчета - Ссылка на выполненную проверку. // * ВажностьПроблемы - ПеречислениеСсылка.ВажностьПроблемыУчета - важность проблемы учета
// * УточнениеПроблемы - Строка - Строка-уточнение найденной проблемы. // "Информация", "Предупреждение", "Ошибка", "ПолезныйСовет" и "ВажнаяИнформация".
// * ВажностьПроблемы - ПеречислениеСсылка.ВажностьПроблемыУчета - Важность проблемы учета // * ПравилоПроверки - СправочникСсылка.ПравилаПроверкиУчета - выполненная проверка с описанием проблемы.
// "Информация", "Предупреждение", "Ошибка" и "ПолезныйСовет". // * ВидПроверок - СправочникСсылка.ВидыПроверок - вид проверки.
// * Ответственный - СправочникСсылка.Пользователи - Заполнен если есть возможность // * УточнениеПроблемы - Строка - текстовое уточнение найденной проблемы.
// идентифицировать ответственного в проблемном объекте. // * Ответственный - СправочникСсылка.Пользователи - заполнен, если по выявленной проблеме
// * ДополнительнаяИнформация - ХранилищеЗначений - Служебное свойство с дополнительными // алгоритм проверки определил конкретного ответственного.
// сведениями, связанными с выявленной проблемой // * Выявлено - Дата - дата и время выявления проблемы.
// * Выявлено - Дата - Серверное время идентификации проблемы. // * ДополнительнаяИнформация - ХранилищеЗначений - произвольные дополнительные сведения, связанные
// с выявленной проблемой.
// //
// Пример: // Пример:
// 1) Результат = ПодробнаяИнформацияПоВидамПроверок("СистемныеПроверки"); // 1) Результат = ПодробнаяИнформацияПоВидамПроверок("СистемныеПроверки");
@@ -194,6 +194,11 @@
// ВидПроверок.Добавить(Организация); // ВидПроверок.Добавить(Организация);
// ВидПроверок.Добавить(МесяцЗакрытия); // ВидПроверок.Добавить(МесяцЗакрытия);
// Результат = ПодробнаяИнформацияПоВидамПроверок(ВидПроверок); // Результат = ПодробнаяИнформацияПоВидамПроверок(ВидПроверок);
// 3) Выбрать все проблемы закрытия месяца по всем периодам для указанной организации:
// ВидПроверок = Новый Массив;
// ВидПроверок.Добавить("ЗакрытиеМесяца");
// ВидПроверок.Добавить(Организация);
// Результат = ПодробнаяИнформацияПоВидамПроверок(ВидПроверок, Ложь);
// //
Функция ПодробнаяИнформацияПоВидамПроверок(ВидПроверок, ПоискПоТочномуСоответствию = Истина) Экспорт Функция ПодробнаяИнформацияПоВидамПроверок(ВидПроверок, ПоискПоТочномуСоответствию = Истина) Экспорт
@@ -202,6 +207,16 @@
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ПоискПоТочномуСоответствию", ПоискПоТочномуСоответствию, Тип("Булево")); ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ПоискПоТочномуСоответствию", ПоискПоТочномуСоответствию, Тип("Булево"));
ПодробнаяИнформация = Новый ТаблицаЗначений; ПодробнаяИнформация = Новый ТаблицаЗначений;
КолонкиПодробнойИнформации = ПодробнаяИнформация.Колонки;
КолонкиПодробнойИнформации.Добавить("ПроблемныйОбъект", ОбщегоНазначения.ОписаниеТипаВсеСсылки());
КолонкиПодробнойИнформации.Добавить("ВажностьПроблемы", Новый ОписаниеТипов("ПеречислениеСсылка.ВажностьПроблемыУчета"));
КолонкиПодробнойИнформации.Добавить("ПравилоПроверки", Новый ОписаниеТипов("СправочникСсылка.ПравилаПроверкиУчета"));
КолонкиПодробнойИнформации.Добавить("ВидПроверки", Новый ОписаниеТипов("СправочникСсылка.ВидыПроверок"));
КолонкиПодробнойИнформации.Добавить("УточнениеПроблемы", Новый ОписаниеТипов("Строка"));
КолонкиПодробнойИнформации.Добавить("Ответственный", Новый ОписаниеТипов("СправочникСсылка.Пользователи"));
КолонкиПодробнойИнформации.Добавить("Выявлено", Новый ОписаниеТипов("Дата"));
КолонкиПодробнойИнформации.Добавить("ДополнительнаяИнформация", Новый ОписаниеТипов("ХранилищеЗначения"));
МассивВидовПроверок = Новый Массив; МассивВидовПроверок = Новый Массив;
Если ТипЗнч(ВидПроверок) = Тип("СправочникСсылка.ВидыПроверок") Тогда Если ТипЗнч(ВидПроверок) = Тип("СправочникСсылка.ВидыПроверок") Тогда
@@ -217,14 +232,18 @@
Запрос = Новый Запрос( Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РезультатыПроверкиУчета.ПроблемныйОбъект КАК ПроблемныйОбъект, | РезультатыПроверкиУчета.ПроблемныйОбъект КАК ПроблемныйОбъект,
| РезультатыПроверкиУчета.ВажностьПроблемы КАК ВажностьПроблемы,
| РезультатыПроверкиУчета.ПравилоПроверки КАК ПравилоПроверки, | РезультатыПроверкиУчета.ПравилоПроверки КАК ПравилоПроверки,
| РезультатыПроверкиУчета.ВидПроверки КАК ВидПроверки | РезультатыПроверкиУчета.ВажностьПроблемы КАК ВажностьПроблемы,
| РезультатыПроверкиУчета.ВидПроверки КАК ВидПроверки,
| РезультатыПроверкиУчета.УточнениеПроблемы КАК УточнениеПроблемы,
| РезультатыПроверкиУчета.Ответственный КАК Ответственный,
| РезультатыПроверкиУчета.Выявлено КАК Выявлено,
| РезультатыПроверкиУчета.ДополнительнаяИнформация КАК ДополнительнаяИнформация
|ИЗ |ИЗ
| РегистрСведений.РезультатыПроверкиУчета КАК РезультатыПроверкиУчета | РегистрСведений.РезультатыПроверкиУчета КАК РезультатыПроверкиУчета
|ГДЕ |ГДЕ
| НЕ РезультатыПроверкиУчета.ИгнорироватьПроблему | НЕ РезультатыПроверкиУчета.ИгнорироватьПроблему
| И РезультатыПроверкиУчета.ВидПроверки В (&МассивВидовПроверок)"); | И РезультатыПроверкиУчета.ВидПроверки В(&МассивВидовПроверок)");
Запрос.УстановитьПараметр("МассивВидовПроверок", МассивВидовПроверок); Запрос.УстановитьПараметр("МассивВидовПроверок", МассивВидовПроверок);
Результат = Запрос.Выполнить(); Результат = Запрос.Выполнить();
@@ -475,6 +494,10 @@
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ДополнительныеСвойства", ДополнительныеСвойства, Тип("Структура")); ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ДополнительныеСвойства", ДополнительныеСвойства, Тип("Структура"));
КонецЕсли; КонецЕсли;
Если Не КонтрольВеденияУчетаСлужебный.ПодсистемаДоступна() Тогда
Возврат;
КонецЕсли;
ГлобальныеНастройки = КонтрольВеденияУчетаСлужебный.ГлобальныеНастройки(); ГлобальныеНастройки = КонтрольВеденияУчетаСлужебный.ГлобальныеНастройки();
СписокИмен = СтрРазделить(ИменаСписков, ","); СписокИмен = СтрРазделить(ИменаСписков, ",");
Элементы = Форма.Элементы; Элементы = Форма.Элементы;
@@ -575,8 +598,11 @@
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ДополнительныеСвойства", ДополнительныеСвойства, Тип("Структура")); ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ДополнительныеСвойства", ДополнительныеСвойства, Тип("Структура"));
КонецЕсли; КонецЕсли;
ДополнительныеСвойстваКомпоновщика = Настройки.ДополнительныеСвойства; Если Не КонтрольВеденияУчетаСлужебный.ПодсистемаДоступна() Тогда
Возврат;
КонецЕсли;
ДополнительныеСвойстваКомпоновщика = Настройки.ДополнительныеСвойства;
Если ДополнительныеСвойстваКомпоновщика.Свойство("КолонкаИндикатора") Тогда Если ДополнительныеСвойстваКомпоновщика.Свойство("КолонкаИндикатора") Тогда
КолонкаИндикатора = Настройки.ДополнительныеСвойства.КолонкаИндикатора; КолонкаИндикатора = Настройки.ДополнительныеСвойства.КолонкаИндикатора;
@@ -637,6 +663,10 @@
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ТекущийОбъект", ТекущийОбъект, ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "ТекущийОбъект", ТекущийОбъект,
КонтрольВеденияУчетаСлужебныйПовтИсп.ОписаниеТипаВсеОбъекты()); КонтрольВеденияУчетаСлужебныйПовтИсп.ОписаниеТипаВсеОбъекты());
Если Не КонтрольВеденияУчетаСлужебный.ПодсистемаДоступна() Тогда
Возврат;
КонецЕсли;
ГлобальныеНастройки = КонтрольВеденияУчетаСлужебный.ГлобальныеНастройки(); ГлобальныеНастройки = КонтрольВеденияУчетаСлужебный.ГлобальныеНастройки();
СсылкаНаОбъект = ТекущийОбъект.Ссылка; СсылкаНаОбъект = ТекущийОбъект.Ссылка;
ЭлементыУправляемойФормы = Форма.Элементы; ЭлементыУправляемойФормы = Форма.Элементы;
@@ -1707,7 +1707,7 @@
// //
Процедура РассчитатьПроцентВыгрузки(КоличествоВыгруженных, КоличествоОбъектовКВыгрузке) Экспорт Процедура РассчитатьПроцентВыгрузки(КоличествоВыгруженных, КоличествоОбъектовКВыгрузке) Экспорт
// Сообщение о проценте выгрузки выдаем через каждые 10 объектов. // Сообщение о проценте выгрузки выдаем через каждые 100 объектов.
Если КоличествоВыгруженных = 0 ИЛИ КоличествоВыгруженных / 100 <> Цел(КоличествоВыгруженных / 100) Тогда Если КоличествоВыгруженных = 0 ИЛИ КоличествоВыгруженных / 100 <> Цел(КоличествоВыгруженных / 100) Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -12404,7 +12404,7 @@
// //
Функция ЗащищенноеСоединение(Путь) Экспорт Функция ЗащищенноеСоединение(Путь) Экспорт
Возврат ?(НРег(Лев(Путь, 4)) = "ftps", Новый ЗащищенноеСоединениеOpenSSL, Неопределено); Возврат ?(НРег(Лев(Путь, 4)) = "ftps", ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение(), Неопределено);
КонецФункции КонецФункции
@@ -12644,7 +12644,9 @@
// дереве команд создания обмена вариантов настроек. // дереве команд создания обмена вариантов настроек.
// * ИмяКонфигурацииИсточника - Строка - Имя конфигурации источника, выводимое в // * ИмяКонфигурацииИсточника - Строка - Имя конфигурации источника, выводимое в
// пользовательском интерфейсе. // пользовательском интерфейсе.
// * ВерсииФорматаОбмена - Структура - Соответствие номеров поддерживаемых версий формата // * ИмяКонфигурацииПриемника - Структура - Перечень идентификаторов конфигураций-корреспондентов,
// обмен с которыми возможен через данный план обмена.
// * ВерсииФорматаОбмена - Соответствие - Соответствие номеров поддерживаемых версий формата
// и ссылок на общие модули с логикой обмена через формат. // и ссылок на общие модули с логикой обмена через формат.
// Используется только для обменов через универсальный формат. // Используется только для обменов через универсальный формат.
// * ФорматОбмена - Строка - Пространство имен XDTO пакета, в котором содержится // * ФорматОбмена - Строка - Пространство имен XDTO пакета, в котором содержится
@@ -12684,7 +12686,8 @@
Параметры.Вставить("ВариантыНастроекОбмена", ВариантыНастроекОбмена); Параметры.Вставить("ВариантыНастроекОбмена", ВариантыНастроекОбмена);
Параметры.Вставить("ВидГруппыДляВариантовНастроек", ВидГруппыФормы.Подменю); Параметры.Вставить("ВидГруппыДляВариантовНастроек", ВидГруппыФормы.Подменю);
Параметры.Вставить("ИмяКонфигурацииИсточника", ""); Параметры.Вставить("ИмяКонфигурацииИсточника", "");
Параметры.Вставить("ВерсииФорматаОбмена", Новый Структура); Параметры.Вставить("ИмяКонфигурацииПриемника", Новый Структура);
Параметры.Вставить("ВерсииФорматаОбмена", Новый Соответствие);
Параметры.Вставить("ФорматОбмена", ""); Параметры.Вставить("ФорматОбмена", "");
Параметры.Вставить("ПланОбменаИспользуетсяВМоделиСервиса", Ложь); Параметры.Вставить("ПланОбменаИспользуетсяВМоделиСервиса", Ложь);
Параметры.Вставить("ЭтоПланОбменаXDTO", Ложь); Параметры.Вставить("ЭтоПланОбменаXDTO", Ложь);
@@ -863,11 +863,13 @@
// добавляем запись в РС // добавляем запись в РС
РегистрыСведений.НастройкиТранспортаОбмена.ОбновитьЗапись(СтруктураЗаписи); РегистрыСведений.НастройкиТранспортаОбмена.ОбновитьЗапись(СтруктураЗаписи);
Если Не КонечнаяТочка = ПланыОбмена.ОбменСообщениями.ЭтотУзел() Тогда
Если ВерсияКорреспондента_2_0_1_6 Тогда Если ВерсияКорреспондента_2_0_1_6 Тогда
WSПрокси.UpdateConnectionSettings(КодЭтогоУзла(), СериализаторXDTO.ЗаписатьXDTO(НастройкиПодключенияПолучателя)); WSПрокси.UpdateConnectionSettings(КодЭтогоУзла(), СериализаторXDTO.ЗаписатьXDTO(НастройкиПодключенияПолучателя));
Иначе Иначе
WSПрокси.UpdateConnectionSettings(КодЭтогоУзла(), ЗначениеВСтрокуВнутр(НастройкиПодключенияПолучателя)); WSПрокси.UpdateConnectionSettings(КодЭтогоУзла(), ЗначениеВСтрокуВнутр(НастройкиПодключенияПолучателя));
КонецЕсли; КонецЕсли;
КонецЕсли;
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
@@ -954,14 +956,18 @@
ЗагруженныеОбъекты = Новый Массив; ЗагруженныеОбъекты = Новый Массив;
НачатьТранзакцию();
Попытка
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.УстановитьСтроку(Поток); ЧтениеXML.УстановитьСтроку(Поток);
ЧтениеXML.Прочитать(); // узел "Root" ЧтениеXML.Прочитать(); // узел "Root"
ЧтениеXML.Прочитать(); // узел объекта ЧтениеXML.Прочитать(); // узел объекта
Исключение
ЧтениеXML.Закрыть();
ВызватьИсключение;
КонецПопытки;
НачатьТранзакцию();
Попытка
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
Данные = ПрочитатьXML(ЧтениеXML); Данные = ПрочитатьXML(ЧтениеXML);
@@ -988,7 +994,6 @@
Продолжить; // Загружаем только новые сообщения. Продолжить; // Загружаем только новые сообщения.
КонецЕсли; КонецЕсли;
Данные.УстановитьНовыйКод();
Данные.Отправитель = Отправитель; Данные.Отправитель = Отправитель;
Данные.Получатель = ЭтотУзел(); Данные.Получатель = ЭтотУзел();
Данные.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); Данные.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
@@ -1027,6 +1032,8 @@
Данные.ОбменДанными.Отправитель = Отправитель; Данные.ОбменДанными.Отправитель = Отправитель;
Данные.ОбменДанными.Загрузка = Истина; Данные.ОбменДанными.Загрузка = Истина;
Данные.УстановитьНовыйКод();
Данные.Записать(); Данные.Записать();
Если ТребуетсяВосстановлениеРазделения Тогда Если ТребуетсяВосстановлениеРазделения Тогда
@@ -1037,14 +1044,15 @@
КонецЦикла; КонецЦикла;
ЧтениеXML.Закрыть();
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
ЧтениеXML.Закрыть();
ВызватьИсключение; ВызватьИсключение;
КонецПопытки; КонецПопытки;
ЧтениеXML.Закрыть();
КонецПроцедуры КонецПроцедуры
// Только для внутреннего использования. // Только для внутреннего использования.
@@ -32,7 +32,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы"; Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "2.4.4.166"; Описание.Версия = "2.4.5.71";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -0,0 +1,82 @@
#Область СлужебныйПрограммныйИнтерфейс
Функция Подключены() Экспорт
Если Заблокированы() Тогда
Возврат Ложь;
КонецЕсли;
// Вызов на сервере гарантирует получение корректного состояния в случае,
// когда данные регистрации информационной базы были изменены методом
// СистемаВзаимодействия.УстановитьДанныеРегистрацииИнформационнойБазы.
Возврат СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована();
КонецФункции
Функция Заблокированы() Экспорт
УстановитьПривилегированныйРежим(Истина);
ДанныеРегистрации = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(
"ДанныеРегистрацииИнформационнойБазыСистемыВзаимодействия");
Заблокированы = ДанныеРегистрации <> Неопределено;
УстановитьПривилегированныйРежим(Ложь);
Возврат Заблокированы;
КонецФункции
Процедура Заблокировать() Экспорт
Если Не ПравоДоступа("АдминистрированиеДанных", Метаданные) Тогда
ВызватьИсключение
НСтр("ru = 'Обсуждения не заблокированы. Для выполнения операции требуется право администрирования данных.'");
КонецЕсли;
Если Заблокированы() Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ДанныеРегистрации = СистемаВзаимодействия.ПолучитьДанныеРегистрацииИнформационнойБазы();
Если ТипЗнч(ДанныеРегистрации) = Тип("ДанныеРегистрацииИнформационнойБазыСистемыВзаимодействия") Тогда
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(
"ДанныеРегистрацииИнформационнойБазыСистемыВзаимодействия",
ДанныеРегистрации);
КонецЕсли;
СистемаВзаимодействия.УстановитьДанныеРегистрацииИнформационнойБазы(Неопределено);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Процедура Разблокировать() Экспорт
Если Не ПравоДоступа("АдминистрированиеДанных", Метаданные) Тогда
ВызватьИсключение
НСтр("ru = 'Обсуждения не заблокированы. Для выполнения операции требуется право администрирования данных.'");
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ДанныеРегистрации = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(
"ДанныеРегистрацииИнформационнойБазыСистемыВзаимодействия");
ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища("ДанныеРегистрацииИнформационнойБазыСистемыВзаимодействия");
Если ТипЗнч(ДанныеРегистрации) = Тип("ДанныеРегистрацииИнформационнойБазыСистемыВзаимодействия") Тогда
СистемаВзаимодействия.УстановитьДанныеРегистрацииИнформационнойБазы(ДанныеРегистрации);
КонецЕсли;
ДанныеРегистрации = Неопределено;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="2ca8bca9-813a-4833-8ef0-a5e83f91c10f">
<name>ОбсужденияСлужебныйВызовСервера</name>
<synonym>
<key>ru</key>
<value>Обсуждения служебный вызов сервера</value>
</synonym>
<server>true</server>
<serverCall>true</serverCall>
</mdclass:CommonModule>
@@ -1,8 +1,8 @@
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
Функция ОбсужденияПодключены() Экспорт Функция Подключены() Экспорт
Возврат СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована(); Возврат ОбсужденияСлужебныйВызовСервера.Подключены();
КонецФункции КонецФункции
@@ -265,10 +265,10 @@
// то следует использовать предварительный переход в привилегированный режим. // то следует использовать предварительный переход в привилегированный режим.
// //
// Параметры: // Параметры:
// МассивСсылок - Массив - массив ссылок на объекты одного типа. // Ссылки - Массив - массив ссылок на объекты одного типа.
// Значения массива должны быть ссылками на объекты одного типа. // Значения массива должны быть ссылками на объекты одного типа.
// если массив пуст, то результатом будет пустое соответствие. // если массив пуст, то результатом будет пустое соответствие.
// ИменаРеквизитов - Строка - имена реквизитов перечисленные через запятую, в формате требований к свойствам // Реквизиты - Строка - имена реквизитов перечисленные через запятую, в формате требований к свойствам
// структуры. Например, "Код, Наименование, Родитель". // структуры. Например, "Код, Наименование, Родитель".
// ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя, и в случае, // ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя, и в случае,
// - если какой-либо объект будет исключен из выборки по правам, то этот объект // - если какой-либо объект будет исключен из выборки по правам, то этот объект
@@ -283,56 +283,56 @@
// ** Ключ - Строка - имя реквизита; // ** Ключ - Строка - имя реквизита;
// ** Значение - Произвольный - значение реквизита. // ** Значение - Произвольный - значение реквизита.
// //
Функция ЗначенияРеквизитовОбъектов(МассивСсылок, ИменаРеквизитов, ВыбратьРазрешенные = Ложь) Экспорт Функция ЗначенияРеквизитовОбъектов(Ссылки, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт
Если ПустаяСтрока(ИменаРеквизитов) Тогда Если ПустаяСтрока(Реквизиты) Тогда
ВызватьИсключение НСтр("ru = 'Неверный второй параметр ИменаРеквизитов: ВызватьИсключение НСтр("ru = 'Неверный второй параметр Реквизиты:
|- Поле объекта должно быть указано'"); |- Поле объекта должно быть указано'");
КонецЕсли; КонецЕсли;
Если СтрНайти(ИменаРеквизитов, ".") <> 0 Тогда Если СтрНайти(Реквизиты, ".") <> 0 Тогда
ВызватьИсключение НСтр("ru = 'Неверный второй параметр ИменаРеквизитов: ВызватьИсключение НСтр("ru = 'Неверный второй параметр Реквизиты:
|- Обращение через точку не поддерживается'"); |- Обращение через точку не поддерживается'");
КонецЕсли; КонецЕсли;
ЗначенияРеквизитов = Новый Соответствие; ЗначенияРеквизитов = Новый Соответствие;
Если МассивСсылок.Количество() = 0 Тогда Если Ссылки.Количество() = 0 Тогда
Возврат ЗначенияРеквизитов; Возврат ЗначенияРеквизитов;
КонецЕсли; КонецЕсли;
ПерваяСсылка = МассивСсылок[0]; ПерваяСсылка = Ссылки[0];
Попытка Попытка
ПолноеИмяОбъектаМетаданных = ПерваяСсылка.Метаданные().ПолноеИмя(); ПолноеИмяОбъектаМетаданных = ПерваяСсылка.Метаданные().ПолноеИмя();
Исключение Исключение
ВызватьИсключение НСтр("ru = 'Неверный первый параметр МассивСсылок: ВызватьИсключение НСтр("ru = 'Неверный первый параметр Ссылки:
|- Значения массива должны быть ссылками'"); |- Значения массива должны быть ссылками'");
КонецПопытки; КонецПопытки;
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ " + ?(ВыбратьРазрешенные, "РАЗРЕШЕННЫЕ", "") + " "ВЫБРАТЬ " + ?(ВыбратьРазрешенные, "РАЗРЕШЕННЫЕ", "") + "
| Ссылка КАК Ссылка, " + ИменаРеквизитов + " | Ссылка КАК Ссылка, " + Реквизиты + "
|ИЗ |ИЗ
| " + ПолноеИмяОбъектаМетаданных + " КАК Таблица | " + ПолноеИмяОбъектаМетаданных + " КАК Таблица
|ГДЕ |ГДЕ
| Таблица.Ссылка В (&МассивСсылок)"; | Таблица.Ссылка В (&Ссылки)";
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок); Запрос.УстановитьПараметр("Ссылки", Ссылки);
Попытка Попытка
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Исключение Исключение
// Удаление пробелов. // Удаление пробелов.
ИменаРеквизитов = СтрЗаменить(ИменаРеквизитов, " ", ""); Реквизиты = СтрЗаменить(Реквизиты, " ", "");
// Преобразование параметра в массив полей. // Преобразование параметра в массив полей.
ИменаРеквизитов = СтрРазделить(ИменаРеквизитов, ","); Реквизиты = СтрРазделить(Реквизиты, ",");
// Поиск ошибки доступности полей. // Поиск ошибки доступности полей.
Результат = НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, ИменаРеквизитов); Результат = НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты);
Если Результат.Ошибка Тогда Если Результат.Ошибка Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверный второй параметр ИменаРеквизитов: %1'"), Результат.ОписаниеОшибки); НСтр("ru = 'Неверный второй параметр Реквизиты: %1'"), Результат.ОписаниеОшибки);
КонецЕсли; КонецЕсли;
// Не удалось распознать ошибку, проброс первичной ошибки. // Не удалось распознать ошибку, проброс первичной ошибки.
@@ -341,7 +341,7 @@
КонецПопытки; КонецПопытки;
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Результат = Новый Структура(ИменаРеквизитов); Результат = Новый Структура(Реквизиты);
ЗаполнитьЗначенияСвойств(Результат, Выборка); ЗаполнитьЗначенияСвойств(Результат, Выборка);
ЗначенияРеквизитов[Выборка.Ссылка] = Результат; ЗначенияРеквизитов[Выборка.Ссылка] = Результат;
КонецЦикла; КонецЦикла;
@@ -7493,14 +7493,14 @@
Если Тест[ИмяРеквизита] = Неопределено Тогда Если Тест[ИмяРеквизита] = Неопределено Тогда
Тест[ИмяРеквизита] = -1; Тест[ИмяРеквизита] = -1;
ЗаполнитьЗначенияСвойств(Тест, Результат); ЗаполнитьЗначенияСвойств(Тест, Результат);
// Реквизит либо не существует в метаданных, либо его значение = Неопределено.
Если Тест[ИмяРеквизита] = Неопределено Тогда Если Тест[ИмяРеквизита] = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Ошибка вычисления %1 для объекта %2. Реквизит %3 не найден'"), Возврат Неопределено;
ПутьДанных, Данные, ИмяРеквизита);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Результат = Тест[ИмяРеквизита]; Результат = Тест[ИмяРеквизита];
Если Результат = Неопределено Тогда // Не можем дальше читать. Если Результат = Неопределено Тогда
Возврат Неопределено; Возврат Неопределено;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
@@ -3350,22 +3350,36 @@
#Иначе #Иначе
Описание = Новый Массив; Описание = Новый Массив;
Журнал = Новый Массив;
Журнал.Добавить(
НСтр("ru = 'Журнал диагностики:
|Выполнена проверка возможности установить соединение.
|Описание диагностируемой ошибки см. в следующем сообщении журнала.'"));
Журнал.Добавить();
Описание.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Описание.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При обращении по URL: %1'"), НСтр("ru = 'При обращении по URL: %1'"),
URL)); URL));
Описание.Добавить(ПредставлениеМестаДиагностики()); Описание.Добавить(ПредставлениеМестаДиагностики());
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Если ОбщегоНазначения.РазделениеВключено() Тогда
Описание.Добавить(
НСтр("ru = 'Обратитесь к администратору.'"));
ОписаниеОшибки = СтрСоединить(Описание, Символы.ПС);
Результат = Новый Структура;
Результат.Вставить("ОписаниеОшибки", ОписаниеОшибки);
Результат.Вставить("ЖурналДиагностики", "");
Возврат Результат;
КонецЕсли;
#КонецЕсли
Журнал = Новый Массив;
Журнал.Добавить(
НСтр("ru = 'Журнал диагностики:
|Выполняется проверка доступности сервера.
|Описание диагностируемой ошибки см. в следующем сообщении журнала.'"));
Журнал.Добавить();
СоединениеЧерезПрокси = Ложь; СоединениеЧерезПрокси = Ложь;
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда
МодульПолучениеФайловИзИнтернетаКлиентСервер = МодульПолучениеФайловИзИнтернетаКлиентСервер =
ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер"); ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер");
@@ -3375,7 +3389,7 @@
Журнал.Добавить(СостояниеНастроекПрокси.Представление); Журнал.Добавить(СостояниеНастроекПрокси.Представление);
КонецЕсли; КонецЕсли;
#Иначе #Иначе
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда
МодульПолучениеФайловИзИнтернетаКлиентСервер = МодульПолучениеФайловИзИнтернетаКлиентСервер =
ОбщегоНазначенияКлиент.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер"); ОбщегоНазначенияКлиент.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер");
@@ -3385,12 +3399,13 @@
Журнал.Добавить(СостояниеНастроекПрокси.Представление); Журнал.Добавить(СостояниеНастроекПрокси.Представление);
КонецЕсли; КонецЕсли;
#КонецЕсли #КонецЕсли
Если СоединениеЧерезПрокси Тогда Если СоединениеЧерезПрокси Тогда
Описание.Добавить( Описание.Добавить(
НСтр("ru = 'Диагностика соединения не выполнена, т.к. настроен прокси-сервер. Обратитесь к администратору.'")); НСтр("ru = 'Диагностика соединения не выполнена, т.к. настроен прокси-сервер.
|Обратитесь к администратору.'"));
Иначе Иначе
@@ -3424,8 +3439,6 @@
|- подключение к интернету блокирует межсетевой экран, |- подключение к интернету блокирует межсетевой экран,
| антивирусная программа или другое программное обеспечение.'")); | антивирусная программа или другое программное обеспечение.'"));
ЖурналТрассировки = ЖурналТрассировкиМаршрутаСервера(АдресСервераКонтрольнойПроверки);
Иначе Иначе
Описание.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Описание.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -3437,10 +3450,10 @@
АдресСервераРесурса)); АдресСервераРесурса));
ЖурналТрассировки = ЖурналТрассировкиМаршрутаСервера(АдресСервераРесурса); ЖурналТрассировки = ЖурналТрассировкиМаршрутаСервера(АдресСервераРесурса);
Журнал.Добавить("3) " + ЖурналТрассировки);
КонецЕсли; КонецЕсли;
Журнал.Добавить("3) " + ЖурналТрассировки);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -3453,22 +3466,9 @@
ЖурналДиагностики = СтрСоединить(Журнал, Символы.ПС); ЖурналДиагностики = СтрСоединить(Журнал, Символы.ПС);
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Если ОбщегоНазначения.РазделениеВключено() Тогда
// В модели сервиса результат диагностики не возвращаем. В журнал не пишем.
// Демаскировать внутреннюю архитектуру запрещено.
Результат = Новый Структура;
Результат.Вставить("ОписаниеОшибки", ОписаниеОшибки);
Результат.Вставить("ЖурналДиагностики", "");
Возврат Результат;
КонецЕсли;
ЗаписьЖурналаРегистрации( ЗаписьЖурналаРегистрации(
НСтр("ru = 'Диагностика соединения'", КодОсновногоЯзыка()), НСтр("ru = 'Диагностика соединения'", КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, ЖурналДиагностики); УровеньЖурналаРегистрации.Ошибка,,, ЖурналДиагностики);
#Иначе #Иначе
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации( ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru = 'Диагностика соединения'", КодОсновногоЯзыка()), НСтр("ru = 'Диагностика соединения'", КодОсновногоЯзыка()),
@@ -3485,6 +3485,26 @@
КонецФункции КонецФункции
// Создает объект описания защищенного соединения OpenSSL.
// Параметры:
// СертификатКлиента - СертификатКлиентаФайл,
// СертификатКлиентаWindows,
// Неопределено - см ЗащищенноеСоединениеOpenSSL.
// СертификатыУдостоверяющихЦентров - СертификатыУдостоверяющихЦентровФайл,
// СертификатыУдостоверяющихЦентровWindows,
// СертификатыУдостоверяющихЦентровLinux,
// СертификатыУдостоверяющихЦентровОС,
// Неопределено - см ЗащищенноеСоединениеOpenSSL.
//
// Возвращаемое значение:
// ЗащищенноеСоединениеOpenSSL - описание защищенного соединения.
//
Функция НовоеЗащищенноеСоединение(СертификатКлиента = Неопределено, СертификатыУдостоверяющихЦентров = Неопределено) Экспорт
Возврат Новый ЗащищенноеСоединениеOpenSSL(СертификатКлиента, СертификатыУдостоверяющихЦентров);
КонецФункции
#Область УстаревшиеПроцедурыИФункции #Область УстаревшиеПроцедурыИФункции
// Устарела. Следует использовать ОбщегоНазначенияКлиентСервер.РазностьМассивов // Устарела. Следует использовать ОбщегоНазначенияКлиентСервер.РазностьМассивов
@@ -3681,15 +3701,36 @@
Функция ПредставлениеТипов(ОжидаемыеТипы) Функция ПредставлениеТипов(ОжидаемыеТипы)
Если ТипЗнч(ОжидаемыеТипы) = Тип("Массив") Тогда Если ТипЗнч(ОжидаемыеТипы) = Тип("Массив") Тогда
Результат = ""; Результат = "";
Индекс = 0;
Для Каждого Тип Из ОжидаемыеТипы Цикл Для Каждого Тип Из ОжидаемыеТипы Цикл
Если Не ПустаяСтрока(Результат) Тогда Если Не ПустаяСтрока(Результат) Тогда
Результат = Результат + ", "; Результат = Результат + ", ";
КонецЕсли; КонецЕсли;
Результат = Результат + ?(Тип = Неопределено, "Неопределено", Строка(Тип)); Результат = Результат + ПредставлениеТипа(Тип);
Индекс = Индекс + 1;
Если Индекс > 10 Тогда
Результат = Результат + ",... "
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='(всего %1 типов)'"), ОжидаемыеТипы.Количество());
Прервать;
КонецЕсли;
КонецЦикла; КонецЦикла;
Возврат Результат; Возврат Результат;
Иначе Иначе
Возврат Строка(ОжидаемыеТипы); Возврат ПредставлениеТипа(ОжидаемыеТипы);
КонецЕсли;
КонецФункции
Функция ПредставлениеТипа(Тип)
Если Тип = Неопределено Тогда
Возврат "Неопределено";
ИначеЕсли ТипЗнч(Тип) = Тип("ОписаниеТипов") Тогда
ТипСтрокой = Строка(Тип);
Возврат ?(СтрДлина(ТипСтрокой) > 150, Лев(ТипСтрокой, 150) + "..."
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='(всего %1 типов)'"), Тип.Типы().Количество()),
ТипСтрокой);
Иначе
ТипСтрокой = Строка(Тип);
Возврат ?(СтрДлина(ТипСтрокой) > 150, Лев(ТипСтрокой, 150) + "...", ТипСтрокой);
КонецЕсли; КонецЕсли;
КонецФункции КонецФункции
@@ -3811,9 +3852,9 @@
Или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64); Или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64);
Если ЭтоWindows Тогда Если ЭтоWindows Тогда
ШаблонКоманды = "ping %1 -n 2"; ШаблонКоманды = "ping %1 -n 2 -w 100";
Иначе Иначе
ШаблонКоманды = "ping -c 2 %1"; ШаблонКоманды = "ping -c 2 -w 100 %1";
КонецЕсли; КонецЕсли;
СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКоманды, АдресСервера); СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКоманды, АдресСервера);
@@ -3864,11 +3905,12 @@
Или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64); Или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64);
Если ЭтоWindows Тогда Если ЭтоWindows Тогда
ШаблонКоманды = "tracert -w 500 %1"; ШаблонКоманды = "tracert -w 100 -h 15 %1";
Иначе Иначе
ШаблонКоманды = "traceroute -w 500 %1"; // Если вдруг пакет traceroute не установлен - в потоке вывода будет ошибка.
// Если вдруг пакет не установлен - в потоке вывода будет ошибка. // Т.к. результат все равно не разбирается, на поток вывода можно не обращать внимания.
// Ну и ладно - мы результат все равно не разбираем, администратор поймет что ему надо доставить. // По нему администратор поймет что ему надо доставить.
ШаблонКоманды = "traceroute -w 100 -m 100 %1";
КонецЕсли; КонецЕсли;
СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКоманды, АдресСервера); СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКоманды, АдресСервера);
@@ -168,7 +168,7 @@
Попытка Попытка
Соединение = Новый HTTPСоединение("sms4b.ru", , , , ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси("https"), Соединение = Новый HTTPСоединение("sms4b.ru", , , , ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси("https"),
60, Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС)); 60, ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение());
HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос); HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Исключение Исключение
@@ -178,7 +178,7 @@
Попытка Попытка
Соединение = Новый HTTPСоединение("sms.ru", , , , ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси("http"), Соединение = Новый HTTPСоединение("sms.ru", , , , ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси("http"),
60, Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС)); 60, ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение());
HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос); HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Исключение Исключение
@@ -873,18 +873,17 @@
СвойстваНастройки = Информация.Поиск.ПользовательскиеНастройки.Получить(НастройкаВарианта.Идентификатор); СвойстваНастройки = Информация.Поиск.ПользовательскиеНастройки.Получить(НастройкаВарианта.Идентификатор);
КонецЕсли; КонецЕсли;
Если СвойстваНастройки = Неопределено Если НастройкаВарианта.Тип = "ЭлементОтбора" Или НастройкаВарианта.Тип = "ЗначениеПараметраНастроек" Тогда
И (НастройкаВарианта.Тип = "ЭлементОтбора" Или НастройкаВарианта.Тип = "ЗначениеПараметраНастроек") Тогда // Пропускаем все настройки СКД, которые не включены в пользовательские настройки, кроме параметров СКД.
Если СвойстваНастройки = Неопределено И Владелец.ИмяКоллекции <> "ПараметрыДанных" Тогда
Родитель.Строки.Удалить(НастройкаВарианта); // В целях оптимизации. Родитель.Строки.Удалить(НастройкаВарианта); // В целях оптимизации.
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Если СвойстваНастройки <> Неопределено Тогда
Если НастройкаВарианта.Тип = "ЭлементОтбора"
Или НастройкаВарианта.Тип = "ЗначениеПараметраНастроек" Тогда
ЗарегистрироватьПоле(Информация, УзелКД, ЭлементКД, НастройкаВарианта); ЗарегистрироватьПоле(Информация, УзелКД, ЭлементКД, НастройкаВарианта);
ЗарегистрироватьТипыИСвязи(Информация, НастройкаВарианта); ЗарегистрироватьТипыИСвязи(Информация, НастройкаВарианта);
КонецЕсли; КонецЕсли;
Если СвойстваНастройки <> Неопределено Тогда
НастройкаВарианта.ПользовательскаяНастройка = СвойстваНастройки; НастройкаВарианта.ПользовательскаяНастройка = СвойстваНастройки;
ЗарегистрироватьПользовательскуюНастройку(Информация, СвойстваНастройки, Неопределено, НастройкаВарианта); ЗарегистрироватьПользовательскуюНастройку(Информация, СвойстваНастройки, Неопределено, НастройкаВарианта);
Если Информация.ТолькоПользовательские Тогда Если Информация.ТолькоПользовательские Тогда
@@ -316,7 +316,7 @@
КонецЕсли; КонецЕсли;
Если ЗащищенноеСоединение = Истина Тогда Если ЗащищенноеСоединение = Истина Тогда
ЗащищенноеСоединение = НовыйЗащищенноеСоединение(); ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
ИначеЕсли ЗащищенноеСоединение = Ложь Тогда ИначеЕсли ЗащищенноеСоединение = Ложь Тогда
ЗащищенноеСоединение = Неопределено; ЗащищенноеСоединение = Неопределено;
// Иначе параметр ЗащищенноеСоединение был задан в явном виде. // Иначе параметр ЗащищенноеСоединение был задан в явном виде.
@@ -352,6 +352,8 @@
Попытка Попытка
Если Таймаут = АвтоматическоеОпределениеТаймаута() Тогда
Соединение = Новый FTPСоединение( Соединение = Новый FTPСоединение(
Сервер, Сервер,
Порт, Порт,
@@ -359,43 +361,14 @@
ПарольПользователя, ПарольПользователя,
Прокси, Прокси,
ПассивноеСоединение, ПассивноеСоединение,
10, 7,
ЗащищенноеСоединение, ЗащищенноеСоединение,
УровеньИспользованияЗащищенногоСоединения); УровеньИспользованияЗащищенногоСоединения);
Сервер = Соединение.Сервер;
Порт = Соединение.Порт;
РазмерФайла = РазмерФайлаFTP(Соединение, ПутьНаСервере); РазмерФайла = РазмерФайлаFTP(Соединение, ПутьНаСервере);
Исключение
РезультатДиагностики = ОбщегоНазначенияКлиентСервер.ДиагностикаСоединения(URL);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось установить FTP-соединение с сервером %1:%2
|по причине:
|%3
|
|Результат диагностики:
|%4'"),
Сервер, Формат(Порт, "ЧГ="),
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
РезультатДиагностики.ОписаниеОшибки);
Если ЗаписыватьОшибку Тогда
ЗаписатьОшибкуВЖурналРегистрации(ТекстОшибки);
КонецЕсли;
Возврат РезультатПолученияФайла(Ложь, ТекстОшибки);
КонецПопытки;
Если Таймаут = АвтоматическоеОпределениеТаймаута() Тогда
Таймаут = ТаймаутПоРазмеруФайла(РазмерФайла); Таймаут = ТаймаутПоРазмеруФайла(РазмерФайла);
КонецЕсли;
Попытка КонецЕсли;
Соединение = Новый FTPСоединение( Соединение = Новый FTPСоединение(
Сервер, Сервер,
@@ -408,16 +381,24 @@
ЗащищенноеСоединение, ЗащищенноеСоединение,
УровеньИспользованияЗащищенногоСоединения); УровеньИспользованияЗащищенногоСоединения);
Сервер = Соединение.Сервер;
Порт = Соединение.Порт;
Соединение.Получить(ПутьНаСервере, ПутьДляСохранения); Соединение.Получить(ПутьНаСервере, ПутьДляСохранения);
Исключение Исключение
РезультатДиагностики = ОбщегоНазначенияКлиентСервер.ДиагностикаСоединения(URL);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось получить файл %1 с сервера %2:%3 НСтр("ru = 'Не удалось получить файл %1 с сервера %2:%3
|по причине: |по причине:
|%4'"), |%4
|Результат диагностики:
|%5'"),
URL, Сервер, Формат(Порт, "ЧГ="), URL, Сервер, Формат(Порт, "ЧГ="),
КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
РезультатДиагностики.ОписаниеОшибки);
Если ЗаписыватьОшибку Тогда Если ЗаписыватьОшибку Тогда
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -444,20 +425,40 @@
Попытка Попытка
Если Таймаут = АвтоматическоеОпределениеТаймаута() Тогда
Соединение = Новый HTTPСоединение( Соединение = Новый HTTPСоединение(
Сервер, Сервер,
Порт, Порт,
ИмяПользователя, ИмяПользователя,
ПарольПользователя, ПарольПользователя,
Прокси, Прокси,
10, 7,
ЗащищенноеСоединение,
ИспользоватьАутентификациюОС);
РазмерФайла = РазмерФайлаHTTP(Соединение, ПутьНаСервере, Заголовки);
Таймаут = ТаймаутПоРазмеруФайла(РазмерФайла);
КонецЕсли;
Соединение = Новый HTTPСоединение(
Сервер,
Порт,
ИмяПользователя,
ПарольПользователя,
Прокси,
Таймаут,
ЗащищенноеСоединение, ЗащищенноеСоединение,
ИспользоватьАутентификациюОС); ИспользоватьАутентификациюОС);
Сервер = Соединение.Сервер; Сервер = Соединение.Сервер;
Порт = Соединение.Порт; Порт = Соединение.Порт;
РазмерФайла = РазмерФайлаHTTP(Соединение, ПутьНаСервере, Заголовки); ЗапросHTTP = Новый HTTPЗапрос(ПутьНаСервере, Заголовки);
ЗапросHTTP.Заголовки.Вставить("Accept-Charset", "UTF-8");
ЗапросHTTP.Заголовки.Вставить("X-1C-Request-UID", Строка(Новый УникальныйИдентификатор));
ОтветHTTP = Соединение.Получить(ЗапросHTTP, ПутьДляСохранения);
Исключение Исключение
@@ -484,27 +485,8 @@
КонецПопытки; КонецПопытки;
Если Таймаут = АвтоматическоеОпределениеТаймаута() Тогда
Таймаут = ТаймаутПоРазмеруФайла(РазмерФайла);
КонецЕсли;
Попытка Попытка
Соединение = Новый HTTPСоединение(
Сервер,
Порт,
ИмяПользователя,
ПарольПользователя,
Прокси,
Таймаут,
ЗащищенноеСоединение,
ИспользоватьАутентификациюОС);
ЗапросHTTP = Новый HTTPЗапрос(ПутьНаСервере, Заголовки);
ЗапросHTTP.Заголовки.Вставить("Accept-Charset", "UTF-8");
ЗапросHTTP.Заголовки.Вставить("X-1C-Request-UID", Строка(Новый УникальныйИдентификатор));
ОтветHTTP = Соединение.Получить(ЗапросHTTP, ПутьДляСохранения);
Если ОтветHTTP.КодСостояния = 301 // 301 Moved Permanently Если ОтветHTTP.КодСостояния = 301 // 301 Moved Permanently
Или ОтветHTTP.КодСостояния = 302 // 302 Found, 302 Moved Temporarily Или ОтветHTTP.КодСостояния = 302 // 302 Found, 302 Moved Temporarily
Или ОтветHTTP.КодСостояния = 303 // 303 See Other by GET Или ОтветHTTP.КодСостояния = 303 // 303 See Other by GET
@@ -696,7 +678,11 @@
Функция РазмерФайлаHTTP(СоединениеHTTP, Знач ПутьНаСервере, Знач Заголовки = Неопределено) Функция РазмерФайлаHTTP(СоединениеHTTP, Знач ПутьНаСервере, Знач Заголовки = Неопределено)
ЗапросHTTP = Новый HTTPЗапрос(ПутьНаСервере, Заголовки); ЗапросHTTP = Новый HTTPЗапрос(ПутьНаСервере, Заголовки);
Попытка
ПолученныеЗаголовки = СоединениеHTTP.ПолучитьЗаголовки(ЗапросHTTP);// HEAD ПолученныеЗаголовки = СоединениеHTTP.ПолучитьЗаголовки(ЗапросHTTP);// HEAD
Исключение
Возврат 0;
КонецПопытки;
РазмерСтрокой = ПолученныеЗаголовки.Заголовки["Content-Length"]; РазмерСтрокой = ПолученныеЗаголовки.Заголовки["Content-Length"];
ТипЧисло = Новый ОписаниеТипов("Число"); ТипЧисло = Новый ОписаниеТипов("Число");
@@ -710,10 +696,14 @@
РазмерФайла = 0; РазмерФайла = 0;
Попытка
НайденныеФайлы = СоединениеFTP.НайтиФайлы(ПутьНаСервере); НайденныеФайлы = СоединениеFTP.НайтиФайлы(ПутьНаСервере);
Если НайденныеФайлы.Количество() > 0 Тогда Если НайденныеФайлы.Количество() > 0 Тогда
РазмерФайла = НайденныеФайлы[0].Размер(); РазмерФайла = НайденныеФайлы[0].Размер();
КонецЕсли; КонецЕсли;
Исключение
РазмерФайла = 0;
КонецПопытки;
Возврат РазмерФайла; Возврат РазмерФайла;
@@ -893,18 +883,6 @@
КонецФункции КонецФункции
Функция НастройкаПроксиСервера()
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
НастройкаПроксиСервера = ПолучениеФайловИзИнтернета.НастройкиПроксиНаСервере();
#Иначе
НастройкаПроксиСервера = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().НастройкиПроксиСервера;
#КонецЕсли
Возврат НастройкаПроксиСервера;
КонецФункции
Функция ПредставлениеИнтернетПрокси(Прокси) Функция ПредставлениеИнтернетПрокси(Прокси)
Журнал = Новый Массив; Журнал = Новый Массив;
@@ -948,6 +926,17 @@
КонецФункции КонецФункции
Функция НастройкаПроксиСервера()
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
НастройкаПроксиСервера = ПолучениеФайловИзИнтернета.НастройкиПроксиНаСервере();
#Иначе
НастройкаПроксиСервера = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().НастройкиПроксиСервера;
#КонецЕсли
Возврат НастройкаПроксиСервера;
КонецФункции
// Возвращает прокси по настройкам НастройкаПроксиСервера для заданного протокола Протокол. // Возвращает прокси по настройкам НастройкаПроксиСервера для заданного протокола Протокол.
// //
@@ -1020,13 +1009,6 @@
КонецФункции КонецФункции
Функция НовыйЗащищенноеСоединение()
Сертификаты = Новый СертификатыУдостоверяющихЦентровОС;
Возврат Новый ЗащищенноеСоединениеOpenSSL(, Сертификаты);
КонецФункции
// Записывает событие-ошибку в журнал регистрации. Имя события // Записывает событие-ошибку в журнал регистрации. Имя события
// "Получение файлов из Интернета". // "Получение файлов из Интернета".
// Параметры: // Параметры:
@@ -916,7 +916,6 @@
МенеджерЗаписи.ДвоичныеДанныеФайла = Новый ХранилищеЗначения(ХранилищеФайла.Получить(), Новый СжатиеДанных(9)); МенеджерЗаписи.ДвоичныеДанныеФайла = Новый ХранилищеЗначения(ХранилищеФайла.Получить(), Новый СжатиеДанных(9));
МенеджерЗаписи.Записать(); МенеджерЗаписи.Записать();
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
ТекущаяВерсияОбъект.ПометкаУдаления = Истина; ТекущаяВерсияОбъект.ПометкаУдаления = Истина;
@@ -1250,7 +1250,7 @@
КонецЕсли; КонецЕсли;
МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный"); МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
Если Не МодульЭлектроннаяПодписьСлужебный.ДоступнаЭлектроннаяПодпись(ПодписанныйФайл) Тогда Если Не МодульЭлектроннаяПодписьСлужебный.ДоступнаЭлектроннаяПодпись(ТипЗнч(ПодписанныйФайл)) Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -5896,12 +5896,20 @@
КонецФункции КонецФункции
// Инициализирует объект HTTPСоединение. // Инициализирует объект HTTPСоединение.
//
// Параметры:
// СтруктураHref - Структура - Описание параметров подключения.
// ПараметрыСинхронизации - Структура - Параметры подключения: логин и пароль.
// Таймаут - Число - Определяет время ожидания осуществляемого соединения и операций, в секундах.
//
// Возвращаемое значение:
// HTTPСоединение - Установленное соединение.
//
Функция СоздатьHTTPСоединениеWebdav(СтруктураHref, ПараметрыСинхронизации, Таймаут) Функция СоздатьHTTPСоединениеWebdav(СтруктураHref, ПараметрыСинхронизации, Таймаут)
ЗащищенноеСоединение = Неопределено; ЗащищенноеСоединение = Неопределено;
Если СтруктураHref.Схема = "https" Тогда Если СтруктураHref.Схема = "https" Тогда
Сертификаты = Новый СертификатыУдостоверяющихЦентровОС; ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Сертификаты);
КонецЕсли; КонецЕсли;
Если НЕ ЗначениеЗаполнено(СтруктураHref.Порт) Тогда Если НЕ ЗначениеЗаполнено(СтруктураHref.Порт) Тогда
@@ -5934,7 +5942,7 @@
Результат = Новый Структура("Успешно, АдресВременныхДанных, ТекстОшибки"); Результат = Новый Структура("Успешно, АдресВременныхДанных, ТекстОшибки");
СтруктураHref = СтруктураURIРаскодированная(Href); СтруктураHref = СтруктураURIРаскодированная(Href);
Таймаут = ?(ДлинаФайла <> Неопределено, РассчитатьТаймаут(ДлинаФайла), 43200); Таймаут = ?(ДлинаФайла <> Неопределено, РассчитатьТаймаут(ДлинаФайла), 43200); // размер в мегабайтах * 128 или 12 часов.
HTTP = СоздатьHTTPСоединениеWebdav(СтруктураHref, ПараметрыСинхронизации, Таймаут); HTTP = СоздатьHTTPСоединениеWebdav(СтруктураHref, ПараметрыСинхронизации, Таймаут);
ЗаголовкиHTTP = Новый Соответствие; ЗаголовкиHTTP = Новый Соответствие;
@@ -106,6 +106,7 @@
#КонецЕсли #КонецЕсли
КоличествоСлучайныхВариантов = 26; КоличествоСлучайныхВариантов = 26;
КодБукваA = КодСимвола("A", 1);
Пока НЕ Успешно И ЦиклНомер < 100 Цикл Пока НЕ Успешно И ЦиклНомер < 100 Цикл
НомерКаталога = 0; НомерКаталога = 0;
@@ -120,7 +121,6 @@
КонецЕсли; КонецЕсли;
БуквыКаталога = ""; БуквыКаталога = "";
КодБукваA = КодСимвола("A", 1);
Пока Истина Цикл Пока Истина Цикл
НомерБуквы = НомерКаталога % 26; НомерБуквы = НомерКаталога % 26;
@@ -149,6 +149,10 @@
ПодКаталог = ПодКаталог + ЦиклНомерСтрока; ПодКаталог = ПодКаталог + ЦиклНомерСтрока;
КонецЕсли; КонецЕсли;
Если ЭтоЗарезервированноеИмяКаталога(ПодКаталог) Тогда
Продолжить;
КонецЕсли;
ПодКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПодКаталог); ПодКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПодКаталог);
КонецЕсли; КонецЕсли;
@@ -777,4 +781,16 @@
КонецФункции КонецФункции
Функция ЭтоЗарезервированноеИмяКаталога(ИмяПодКаталога)
СписокИмен = Новый Соответствие();
СписокИмен.Вставить("CON", Истина);
СписокИмен.Вставить("PRN", Истина);
СписокИмен.Вставить("AUX", Истина);
СписокИмен.Вставить("NUL", Истина);
Возврат СписокИмен[ИмяПодКаталога] <> Неопределено;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -257,6 +257,11 @@
ХранилищеЗначения = Новый ХранилищеЗначения(ПараметрыБлокировки); ХранилищеЗначения = Новый ХранилищеЗначения(ПараметрыБлокировки);
Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.Установить(ХранилищеЗначения); Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.Установить(ХранилищеЗначения);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда
МодульПолучениеФайловИзИнтернетаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ОбсужденияСлужебныйВызовСервера");
МодульПолучениеФайловИзИнтернетаКлиентСервер.Разблокировать();
КонецЕсли;
ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована = Ложь; ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована = Ложь;
ОбновитьПовторноИспользуемыеЗначения(); ОбновитьПовторноИспользуемыеЗначения();
@@ -276,9 +281,15 @@
Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.Установить(ХранилищеЗначения); Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.Установить(ХранилищеЗначения);
КонецЕсли; КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда
МодульПолучениеФайловИзИнтернетаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ОбсужденияСлужебныйВызовСервера");
МодульПолучениеФайловИзИнтернетаКлиентСервер.Заблокировать();
КонецЕсли;
ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована = Истина; ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована = Истина;
ОбновитьПовторноИспользуемыеЗначения(); ОбновитьПовторноИспользуемыеЗначения();
КонецПроцедуры КонецПроцедуры
// Возвращает признак установленной блокировки работы с внешними ресурсами. // Возвращает признак установленной блокировки работы с внешними ресурсами.
@@ -1456,6 +1467,11 @@
ХранилищеЗначения = Новый ХранилищеЗначения(ПараметрыБлокировки); ХранилищеЗначения = Новый ХранилищеЗначения(ПараметрыБлокировки);
Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.Установить(ХранилищеЗначения); Константы.ПараметрыБлокировкиРаботыСВнешнимиРесурсами.Установить(ХранилищеЗначения);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда
МодульПолучениеФайловИзИнтернетаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ОбсужденияСлужебныйВызовСервера");
МодульПолучениеФайловИзИнтернетаКлиентСервер.Заблокировать();
КонецЕсли;
ЗаписьЖурналаРегистрации(НСтр("ru = 'Работа с внешними ресурсами заблокирована'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ЗаписьЖурналаРегистрации(НСтр("ru = 'Работа с внешними ресурсами заблокирована'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения); УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения);
@@ -498,7 +498,7 @@
Таймаут = 10; Таймаут = 10;
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС); ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
Возврат Новый HTTPСоединение(АдресСервера,,,, ИнтернетПрокси, Таймаут, ЗащищенноеСоединение); Возврат Новый HTTPСоединение(АдресСервера,,,, ИнтернетПрокси, Таймаут, ЗащищенноеСоединение);
КонецФункции КонецФункции
@@ -509,7 +509,7 @@
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
ВладелецТокена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.СклоненияПредставленийОбъектов"); ВладелецТокена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.СклоненияПредставленийОбъектов");
Токен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ВладелецТокена, "ТокенДоступаКСервисуMorpher"); Токен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ВладелецТокена, "ТокенДоступаКСервисуMorpher", Истина);
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
Если ЗначениеЗаполнено(Токен) Тогда Если ЗначениеЗаполнено(Токен) Тогда
@@ -1,113 +1,5 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Функция ТекущийБраузер()
Результат = Новый Структура("Название,Версия", "Другой", "");
СистемнаяИнформация = Новый СистемнаяИнформация;
Строка = СистемнаяИнформация.ИнформацияПрограммыПросмотра;
Строка = СтрЗаменить(Строка, ",", ";");
// Opera
Идентификатор = "Opera";
Позиция = СтрНайти(Строка, Идентификатор, НаправлениеПоиска.СКонца);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Результат.Название = "Opera";
Идентификатор = "Version/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Результат.Версия = СокрЛП(Строка);
Иначе
Строка = СокрЛП(Строка);
Если СтрНачинаетсяС(Строка, "/") Тогда
Строка = Сред(Строка, 2);
КонецЕсли;
Результат.Версия = СокрЛ(Строка);
КонецЕсли;
Возврат Результат;
КонецЕсли;
// IE
Идентификатор = "MSIE"; // v11-
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "IE";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, ";");
Если Позиция > 0 Тогда
Строка = СокрЛ(Лев(Строка, Позиция - 1));
Результат.Версия = Строка;
КонецЕсли;
Возврат Результат;
КонецЕсли;
Идентификатор = "Trident"; // v11+
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "IE";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Идентификатор = "rv:";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, ")");
Если Позиция > 0 Тогда
Строка = СокрЛ(Лев(Строка, Позиция - 1));
Результат.Версия = Строка;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецЕсли;
// Chrome
Идентификатор = "Chrome/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "Chrome";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, " ");
Если Позиция > 0 Тогда
Строка = СокрЛ(Лев(Строка, Позиция - 1));
Результат.Версия = Строка;
КонецЕсли;
Возврат Результат;
КонецЕсли;
// Safari
Идентификатор = "Safari/";
Если СтрНайти(Строка, Идентификатор) > 0 Тогда
Результат.Название = "Safari";
Идентификатор = "Version/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, " ");
Если Позиция > 0 Тогда
Результат.Версия = СокрЛП(Лев(Строка, Позиция - 1));
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецЕсли;
// Firefox
Идентификатор = "Firefox/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "Firefox";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Если Не ПустаяСтрока(Строка) Тогда
Результат.Версия = СокрЛП(Строка);
КонецЕсли;
Возврат Результат;
КонецЕсли;
Возврат Результат;
КонецФункции
// См. СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске(). // См. СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске().
Функция ПараметрыРаботыКлиентаПриЗапуске() Экспорт Функция ПараметрыРаботыКлиентаПриЗапуске() Экспорт
@@ -241,6 +133,114 @@
КонецПроцедуры КонецПроцедуры
Функция ТекущийБраузер()
Результат = Новый Структура("Название,Версия", "Другой", "");
СистемнаяИнформация = Новый СистемнаяИнформация;
Строка = СистемнаяИнформация.ИнформацияПрограммыПросмотра;
Строка = СтрЗаменить(Строка, ",", ";");
// Opera
Идентификатор = "Opera";
Позиция = СтрНайти(Строка, Идентификатор, НаправлениеПоиска.СКонца);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Результат.Название = "Opera";
Идентификатор = "Version/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Результат.Версия = СокрЛП(Строка);
Иначе
Строка = СокрЛП(Строка);
Если СтрНачинаетсяС(Строка, "/") Тогда
Строка = Сред(Строка, 2);
КонецЕсли;
Результат.Версия = СокрЛ(Строка);
КонецЕсли;
Возврат Результат;
КонецЕсли;
// IE
Идентификатор = "MSIE"; // v11-
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "IE";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, ";");
Если Позиция > 0 Тогда
Строка = СокрЛ(Лев(Строка, Позиция - 1));
Результат.Версия = Строка;
КонецЕсли;
Возврат Результат;
КонецЕсли;
Идентификатор = "Trident"; // v11+
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "IE";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Идентификатор = "rv:";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, ")");
Если Позиция > 0 Тогда
Строка = СокрЛ(Лев(Строка, Позиция - 1));
Результат.Версия = Строка;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецЕсли;
// Chrome
Идентификатор = "Chrome/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "Chrome";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, " ");
Если Позиция > 0 Тогда
Строка = СокрЛ(Лев(Строка, Позиция - 1));
Результат.Версия = Строка;
КонецЕсли;
Возврат Результат;
КонецЕсли;
// Safari
Идентификатор = "Safari/";
Если СтрНайти(Строка, Идентификатор) > 0 Тогда
Результат.Название = "Safari";
Идентификатор = "Version/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Позиция = СтрНайти(Строка, " ");
Если Позиция > 0 Тогда
Результат.Версия = СокрЛП(Лев(Строка, Позиция - 1));
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецЕсли;
// Firefox
Идентификатор = "Firefox/";
Позиция = СтрНайти(Строка, Идентификатор);
Если Позиция > 0 Тогда
Результат.Название = "Firefox";
Строка = Сред(Строка, Позиция + СтрДлина(Идентификатор));
Если Не ПустаяСтрока(Строка) Тогда
Результат.Версия = СокрЛП(Строка);
КонецЕсли;
Возврат Результат;
КонецЕсли;
Возврат Результат;
КонецФункции
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Работа с предопределенными данными. // Работа с предопределенными данными.
@@ -2444,42 +2444,48 @@
Режимы = Метаданные.СвойстваОбъектов.РежимСовместимости; Режимы = Метаданные.СвойстваОбъектов.РежимСовместимости;
ТекущийРежим = Метаданные.РежимСовместимости; ТекущийРежим = Метаданные.РежимСовместимости;
ПоддерживаемаяВерсияПлатформы = "8.3.10";
ВерсияПлатформы = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(СистемнаяИнформация.ВерсияПриложения);
Если ТекущийРежим = Режимы.НеИспользовать Тогда Если ТекущийРежим = Режимы.НеИспользовать Тогда
НедоступныйРежим = ""; Если ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияПлатформы, ПоддерживаемаяВерсияПлатформы) = 0 Тогда
ИначеЕсли ТекущийРежим = Режимы.Версия8_1 Тогда НеПоддерживаемаяВерсияПлатформы = "";
НедоступныйРежим = "8.1"
ИначеЕсли ТекущийРежим = Режимы.Версия8_2_13 Тогда
НедоступныйРежим = "8.2.13"
ИначеЕсли ТекущийРежим = Режимы.Версия8_2_16 Тогда
НедоступныйРежим = "8.2.16";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_1 Тогда
НедоступныйРежим = "8.3.1";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_2 Тогда
НедоступныйРежим = "8.3.2";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_3 Тогда
НедоступныйРежим = "8.3.3";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_4 Тогда
НедоступныйРежим = "8.3.4";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_5 Тогда
НедоступныйРежим = "8.3.5";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_6 Тогда
НедоступныйРежим = "8.3.6";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_7 Тогда
НедоступныйРежим = "8.3.7";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_8 Тогда
НедоступныйРежим = "8.3.8";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_9 Тогда
НедоступныйРежим = "8.3.9";
Иначе Иначе
НедоступныйРежим = ""; НеПоддерживаемаяВерсияПлатформы = ВерсияПлатформы;
КонецЕсли;
ИначеЕсли ТекущийРежим = Режимы.Версия8_1 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.1"
ИначеЕсли ТекущийРежим = Режимы.Версия8_2_13 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.2.13"
ИначеЕсли ТекущийРежим = Режимы.Версия8_2_16 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.2.16";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_1 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.1";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_2 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.2";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_3 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.3";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_4 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.4";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_5 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.5";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_6 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.6";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_7 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.7";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_8 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.8";
ИначеЕсли ТекущийРежим = Режимы.Версия8_3_9 Тогда
НеПоддерживаемаяВерсияПлатформы = "8.3.9";
Иначе
НеПоддерживаемаяВерсияПлатформы = ?(СтрЗаканчиваетсяНа(Строка(ТекущийРежим), "8_3_10"), "", Строка(ТекущийРежим));
КонецЕсли; КонецЕсли;
Если ЗначениеЗаполнено(НедоступныйРежим) Тогда Если ЗначениеЗаполнено(НеПоддерживаемаяВерсияПлатформы) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Режим совместимости конфигурации с 1С:Предприятием версии %1 не поддерживается. НСтр("ru = 'Режим совместимости конфигурации с 1С:Предприятием версии %1 не поддерживается.
|Для запуска установите в конфигурации режим совместимости с 1С:Предприятием |Для запуска установите в конфигурации режим совместимости ""Не использовать"" при разработке на версии %2
|версии не ниже 8.3.10 или ""Не использовать"".'"), |(или ""Версия %2"" при разработке на более старших версиях).'"),
НедоступныйРежим); НеПоддерживаемаяВерсияПлатформы, ПоддерживаемаяВерсияПлатформы);
КонецЕсли; КонецЕсли;
// Проверка заполнения версии конфигурации. // Проверка заполнения версии конфигурации.
@@ -1170,7 +1170,7 @@
Функция HTTPСервисОтправитьДанныеСлужебный(Параметры) Функция HTTPСервисОтправитьДанныеСлужебный(Параметры)
Если Параметры.ЗащищенноеСоединение Тогда Если Параметры.ЗащищенноеСоединение Тогда
HTTPСоединение = Новый HTTPСоединение(Параметры.Сервер, Параметры.Порт,,,,Параметры.Таймаут, Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено)); HTTPСоединение = Новый HTTPСоединение(Параметры.Сервер, Параметры.Порт,,,,Параметры.Таймаут, ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение());
Иначе Иначе
HTTPСоединение = Новый HTTPСоединение(Параметры.Сервер, Параметры.Порт,,,,Параметры.Таймаут); HTTPСоединение = Новый HTTPСоединение(Параметры.Сервер, Параметры.Порт,,,,Параметры.Таймаут);
КонецЕсли; КонецЕсли;
@@ -3870,6 +3870,18 @@
ОтправитьТестовыйПакет(ПараметрыВыполнения, АдресРезультата); ОтправитьТестовыйПакет(ПараметрыВыполнения, АдресРезультата);
ИначеЕсли РезультатВыполнения.Успешно И ОзнакомительныйПакетОтправлен Тогда ИначеЕсли РезультатВыполнения.Успешно И ОзнакомительныйПакетОтправлен Тогда
Если ПараметрыВыполнения.ПолучениеИдентификатора Тогда
// Отправим пакет с данными через час.
УстановитьПараметрЦентраМониторинга("ОтправкаДанныхСледующееФормирование", ТекущаяУниверсальнаяДата() + 3600);
ПоместитьВоВременноеХранилище(РезультатВыполнения, АдресРезультата);
Если ОценкаПроизводительностиСуществует Тогда
МодульОценкаПроизводительности.ЗакончитьЗамерВремени("ЦентрМониторингаЗнакомство", ВремяНачала);
КонецЕсли;
КонецЕсли;
ИначеЕсли ПараметрыВыполнения.ПолучениеИдентификатора И НЕ РезультатВыполнения.Успешно Тогда
ПоместитьВоВременноеХранилище(РезультатВыполнения, АдресРезультата);
КонецЕсли;
Если ПараметрыВыполнения.ОтправкаТестовогоПакета Тогда Если ПараметрыВыполнения.ОтправкаТестовогоПакета Тогда
ПараметрыЦентраМониторинга.ОтправкаДанныхСледующееФормирование = ТекущаяУниверсальнаяДата() ПараметрыЦентраМониторинга.ОтправкаДанныхСледующееФормирование = ТекущаяУниверсальнаяДата()
+ ПолучитьПараметрыЦентраМониторинга("ОтправкаДанныхПериодФормирования"); + ПолучитьПараметрыЦентраМониторинга("ОтправкаДанныхПериодФормирования");
@@ -3883,18 +3895,6 @@
УстановитьПараметрыЦентраМониторинга(ПараметрыЦентраМониторинга); УстановитьПараметрыЦентраМониторинга(ПараметрыЦентраМониторинга);
КонецЕсли; КонецЕсли;
Если ПараметрыВыполнения.ПолучениеИдентификатора Тогда
// Отправим пакет с данными через час.
УстановитьПараметрЦентраМониторинга("ОтправкаДанныхСледующееФормирование", ТекущаяУниверсальнаяДата() + 3600);
ПоместитьВоВременноеХранилище(РезультатВыполнения, АдресРезультата);
Если ОценкаПроизводительностиСуществует Тогда
МодульОценкаПроизводительности.ЗакончитьЗамерВремени("ЦентрМониторингаЗнакомство", ВремяНачала);
КонецЕсли;
КонецЕсли;
ИначеЕсли ПараметрыВыполнения.ПолучениеИдентификатора И НЕ РезультатВыполнения.Успешно Тогда
ПоместитьВоВременноеХранилище(РезультатВыполнения, АдресРезультата);
КонецЕсли;
ИначеЕсли ПараметрыВыполнения.ПолучениеИдентификатора И ПараметрыЦентраМониторинга.ОзнакомительныйПакетОтправлен Тогда ИначеЕсли ПараметрыВыполнения.ПолучениеИдентификатора И ПараметрыЦентраМониторинга.ОзнакомительныйПакетОтправлен Тогда
ПоместитьВоВременноеХранилище(РезультатВыполнения, АдресРезультата); ПоместитьВоВременноеХранилище(РезультатВыполнения, АдресРезультата);
КонецЕсли; КонецЕсли;
@@ -100,22 +100,43 @@
НомераПолучателей = Новый Массив; НомераПолучателей = Новый Массив;
Для каждого Получатель Из Сообщение.Получатель Цикл Для каждого Получатель Из Сообщение.Получатель Цикл
Если ТипЗнч(Получатель) = Тип("Структура") Тогда
НомераПолучателей.Добавить(Получатель.НомерТелефона);
Иначе
НомераПолучателей.Добавить(Получатель.Значение); НомераПолучателей.Добавить(Получатель.Значение);
КонецЕсли;
КонецЦикла; КонецЦикла;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS") Тогда
МодульОтправкаSMS = ОбщегоНазначения.ОбщийМодуль("ОтправкаSMS"); МодульОтправкаSMS = ОбщегоНазначения.ОбщийМодуль("ОтправкаSMS");
Если МодульОтправкаSMS.ДоступнаОтправкаSMS() Тогда Если МодульОтправкаSMS.ДоступнаОтправкаSMS() Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия");
Если МодульВзаимодействия.ИспользуетсяПрочиеВзаимодействия() Тогда
МодульВзаимодействия.СоздатьИОтправитьСообщениеSMS(Сообщение);
Результат.Отправлено = Истина;
Возврат Результат;
КонецЕсли;
КонецЕсли;
РезультатОтправкаSMS = МодульОтправкаSMS.ОтправитьSMS(НомераПолучателей, Сообщение.Текст, Сообщение.ДополнительныеПараметры.Отправитель, Сообщение.ДополнительныеПараметры.ПеревестиВТранслит); РезультатОтправкаSMS = МодульОтправкаSMS.ОтправитьSMS(НомераПолучателей, Сообщение.Текст, Сообщение.ДополнительныеПараметры.Отправитель, Сообщение.ДополнительныеПараметры.ПеревестиВТранслит);
Результат.Отправлено = ПустаяСтрока(РезультатОтправкаSMS .ОписаниеОшибки); Результат.Отправлено = ПустаяСтрока(РезультатОтправкаSMS.ОписаниеОшибки);
Результат.ОписаниеОшибки = РезультатОтправкаSMS.ОписаниеОшибки; Результат.ОписаниеОшибки = РезультатОтправкаSMS.ОписаниеОшибки;
Иначе Иначе
Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение SMS не может быть отправлено сразу.'"); Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение SMS не может быть отправлено сразу.'");
КонецЕсли; КонецЕсли;
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
Иначе Иначе
Если Сообщение.Получатель.Количество() = 0 Тогда Если Сообщение.Получатель.Количество() = 0 Тогда
Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение не может быть отправлено сразу, т.к необходимо ввести адрес электронной почты.'"); Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение не может быть отправлено сразу, т.к необходимо ввести адрес электронной почты.'");
Возврат Результат; Возврат Результат;
@@ -153,12 +174,30 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями"); МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями");
Если МодульРаботаСПочтовымиСообщениями.ДоступнаОтправкаПисем() Тогда Если МодульРаботаСПочтовымиСообщениями.ДоступнаОтправкаПисем() Тогда
УчетнаяЗапись = МодульРаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(); УчетнаяЗапись = МодульРаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия");
Если МодульВзаимодействия.ИспользуетсяПочтовыйКлиент() Тогда
МодульВзаимодействия.СоздатьПисьмо(Сообщение, УчетнаяЗапись);
Результат.Отправлено = Истина;
Возврат Результат;
КонецЕсли;
КонецЕсли;
МодульРаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма); МодульРаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма);
Результат.Отправлено = Истина; Результат.Отправлено = Истина;
Иначе Иначе
Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение не может быть отправлено сразу.'"); Результат.ОписаниеОшибки = НСтр("ru = 'Сообщение не может быть отправлено сразу.'");
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
КонецЕсли КонецЕсли
@@ -98,33 +98,28 @@
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления. // См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
Обработчик = Обработчики.Добавить(); Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина; Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "Обработки.ПрограммыЭлектроннойПодписиИШифрования.ЗаполнитьНачальныеНастройки"; Обработчик.Процедура = "Справочники.ПрограммыЭлектроннойПодписиИШифрования.ЗаполнитьНачальныеНастройки";
Обработчик.РежимВыполнения = "Монопольно"; Обработчик.РежимВыполнения = "Монопольно";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.3.3.28";
Обработчик.Комментарий =
НСтр("ru = 'Заполнение справочника Программы электронной подписи и шифрования.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("8e76369a-e16c-415d-bfeb-95e7e5f07a00");
Обработчик.Процедура = "Обработки.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Обработки.ПрограммыЭлектроннойПодписиИШифрования.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ЧитаемыеОбъекты = "Справочник.ПрограммыЭлектроннойПодписиИШифрования";
Обработчик.ИзменяемыеОбъекты = "Справочник.ПрограммыЭлектроннойПодписиИШифрования";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
КонецЕсли;
Обработчик = Обработчики.Добавить(); Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.2.4.7"; Обработчик.Версия = "2.2.4.7";
Обработчик.Процедура = "ЭлектроннаяПодписьСлужебный.ПеренестиНастройкиМенеджераКриптографии"; Обработчик.Процедура = "ЭлектроннаяПодписьСлужебный.ПеренестиНастройкиМенеджераКриптографии";
Обработчик.РежимВыполнения = "Монопольно"; Обработчик.РежимВыполнения = "Монопольно";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.4.5.67";
Обработчик.Комментарий =
НСтр("ru = 'Заполнение справочника Программы электронной подписи и шифрования.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("8e76369a-e16c-415d-bfeb-95e7e5f07a00");
Обработчик.Процедура = "Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.ПрограммыЭлектроннойПодписиИШифрования.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ЧитаемыеОбъекты = "Справочник.ПрограммыЭлектроннойПодписиИШифрования";
Обработчик.ИзменяемыеОбъекты = "Справочник.ПрограммыЭлектроннойПодписиИШифрования";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
КонецПроцедуры КонецПроцедуры
@@ -534,10 +529,14 @@
ЭтоОшибкаПодписания = ЗначениеЗаполнено(ОписаниеОшибки); ЭтоОшибкаПодписания = ЗначениеЗаполнено(ОписаниеОшибки);
Если ТипЗнч(ЭлементДанных.СвойстваПодписи) = Тип("Строка") Тогда
СвойстваПодписи = ПолучитьИзВременногоХранилища(ЭлементДанных.СвойстваПодписи);
Иначе
СвойстваПодписи = ЭлементДанных.СвойстваПодписи;
КонецЕсли;
СообщениеЖурналаРегистрации = СведенияОПодписиДляЖурналаРегистрации( СообщениеЖурналаРегистрации = СведенияОПодписиДляЖурналаРегистрации(
ЭлементДанных.СвойстваПодписи.ДатаПодписи, СвойстваПодписи.ДатаПодписи, СвойстваПодписи, ЭтоОшибкаПодписания);
ЭлементДанных.СвойстваПодписи,
ЭтоОшибкаПодписания);
Если ЭтоОшибкаПодписания Тогда Если ЭтоОшибкаПодписания Тогда
ИмяСобытия = НСтр("ru = 'Электронная подпись.Ошибка подписания данных'", ИмяСобытия = НСтр("ru = 'Электронная подпись.Ошибка подписания данных'",
@@ -1405,10 +1405,20 @@
Иначе Иначе
Если Контекст.Программа <> Неопределено Тогда Если Контекст.Программа <> Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Программа ""%1"" не доступна или не установлена на компьютере.'"), НСтр("ru = 'Программа ""%1"" не доступна или не установлена на компьютере по причине:
Контекст.Программа); |%2'"),
Контекст.Программа,
СвойстваОшибки.Ошибки[0].Описание);
Иначе Иначе
ТекстОшибки = НСтр("ru = 'Ни одна из программ не доступна или не установлена на компьютере.'"); ТекстОшибки = НСтр("ru = 'Ни одна из программ не доступна или не установлена на компьютере.'");
Для Каждого Ошибка Из СвойстваОшибки.Ошибки Цикл
ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Программу ""%1"" не удалось использовать по причине:
|%2'"),
Ошибка.Программа,
Ошибка.Описание);
КонецЦикла;
КонецЕсли; КонецЕсли;
СвойстваОшибки.Вставить("Описание", ТекстОшибки); СвойстваОшибки.Вставить("Описание", ТекстОшибки);
КонецЕсли; КонецЕсли;
@@ -3319,7 +3329,7 @@
Если Не ЭлементДанных.Свойство("Объект") Тогда Если Не ЭлементДанных.Свойство("Объект") Тогда
ЭлектроннаяПодписьСлужебныйВызовСервера.ЗарегистрироватьПодписаниеДанныхВЖурнале( ЭлектроннаяПодписьСлужебныйВызовСервера.ЗарегистрироватьПодписаниеДанныхВЖурнале(
СвойстваТекущегоЭлементаДанных(Контекст, СвойстваПодписи.ДатаПодписи)); СвойстваТекущегоЭлементаДанных(Контекст, СвойстваПодписи));
ВыполнитьНаСторонеЦиклНачало(Контекст); ВыполнитьНаСторонеЦиклНачало(Контекст);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -3343,7 +3353,7 @@
КонецЕсли; КонецЕсли;
ЭлектроннаяПодписьСлужебныйВызовСервера.ЗарегистрироватьПодписаниеДанныхВЖурнале( ЭлектроннаяПодписьСлужебныйВызовСервера.ЗарегистрироватьПодписаниеДанныхВЖурнале(
СвойстваТекущегоЭлементаДанных(Контекст, СвойстваПодписи.ДатаПодписи)); СвойстваТекущегоЭлементаДанных(Контекст, СвойстваПодписи));
ПараметрыВыполнения = Новый Структура; ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОписаниеДанных", Контекст.ОписаниеДанных); ПараметрыВыполнения.Вставить("ОписаниеДанных", Контекст.ОписаниеДанных);
@@ -3485,7 +3495,7 @@
// Только для внутреннего использования. // Только для внутреннего использования.
Функция СвойстваТекущегоЭлементаДанных(ПараметрыВыполнения, ДатаПодписи = '00010101') Экспорт Функция СвойстваТекущегоЭлементаДанных(ПараметрыВыполнения, СвойстваПодписи = Неопределено) Экспорт
Если ПараметрыВыполнения.ОписаниеДанных.Свойство("Данные") Если ПараметрыВыполнения.ОписаниеДанных.Свойство("Данные")
Или Не ПараметрыВыполнения.ОписаниеДанных.Свойство("ТекущийЭлементНабораДанных") Тогда Или Не ПараметрыВыполнения.ОписаниеДанных.Свойство("ТекущийЭлементНабораДанных") Тогда
@@ -3501,10 +3511,13 @@
ПредставлениеЭлементаДанных = ПараметрыВыполнения.ПолноеПредставлениеДанных; ПредставлениеЭлементаДанных = ПараметрыВыполнения.ПолноеПредставлениеДанных;
КонецЕсли; КонецЕсли;
СвойстваЭлементаДанных = Новый Структура; Если СвойстваПодписи = Неопределено Тогда
СвойстваПодписи = Новый Структура; СвойстваПодписи = Новый Структура;
СвойстваПодписи.Вставить("Сертификат", ПараметрыВыполнения.СертификатАдрес); СвойстваПодписи.Вставить("Сертификат", ПараметрыВыполнения.СертификатАдрес);
СвойстваПодписи.Вставить("ДатаПодписи", ДатаПодписи); СвойстваПодписи.Вставить("ДатаПодписи", '00010101');
КонецЕсли;
СвойстваЭлементаДанных = Новый Структура;
СвойстваЭлементаДанных.Вставить("СвойстваПодписи", СвойстваПодписи); СвойстваЭлементаДанных.Вставить("СвойстваПодписи", СвойстваПодписи);
СвойстваЭлементаДанных.Вставить("ПредставлениеДанных", ПредставлениеЭлементаДанных); СвойстваЭлементаДанных.Вставить("ПредставлениеДанных", ПредставлениеЭлементаДанных);
@@ -3698,13 +3711,23 @@
Контекст.Вставить("КонвертSOAP", КонвертSOAP); Контекст.Вставить("КонвертSOAP", КонвертSOAP);
Контекст.Вставить("ДанныеАлгоритмаПодписания", ДанныеАлгоритмаПодписания); Контекст.Вставить("ДанныеАлгоритмаПодписания", ДанныеАлгоритмаПодписания);
Контекст.Вставить("СертификатКриптографии", Новый СертификатКриптографии(ДвоичныеДанные)); Контекст.Вставить("СертификатКриптографии", Новый СертификатКриптографии);
Контекст.Вставить("СертификатКриптографииBase64", СертификатКриптографииBase64); Контекст.Вставить("СертификатКриптографииBase64", СертификатКриптографииBase64);
Контекст.Вставить("МенеджерКриптографии", МенеджерКриптографии); Контекст.Вставить("МенеджерКриптографии", МенеджерКриптографии);
Контекст.Вставить("ТипКриптопровайдера", Неопределено); Контекст.Вставить("ТипКриптопровайдера", Неопределено);
Контекст.Вставить("ИмяКриптопровайдера", Неопределено); Контекст.Вставить("ИмяКриптопровайдера", Неопределено);
Контекст.СертификатКриптографии.НачатьИнициализацию(Новый ОписаниеОповещения(
"НачатьПроверкуПодписиПослеИнициализацииСертификата", ЭтотОбъект, Контекст),
ДвоичныеДанные);
КонецПроцедуры
Процедура НачатьПроверкуПодписиПослеИнициализацииСертификата(СертификатКриптографии, Контекст) Экспорт
Контекст.СертификатКриптографии = СертификатКриптографии;
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты(); ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ТекстПояснения = НСтр("ru = 'Для подписания XML необходима установка компоненты XMLDSig'"); ПараметрыПодключения.ТекстПояснения = НСтр("ru = 'Для подписания XML необходима установка компоненты XMLDSig'");
@@ -44,17 +44,18 @@
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
| Программы.Ссылка, | Программы.Ссылка КАК Ссылка,
| Программы.Наименование КАК Наименование, | Программы.Наименование КАК Наименование,
| Программы.ИмяПрограммы, | Программы.ИмяПрограммы КАК ИмяПрограммы,
| Программы.ТипПрограммы, | Программы.ТипПрограммы КАК ТипПрограммы,
| Программы.АлгоритмПодписи, | Программы.АлгоритмПодписи КАК АлгоритмПодписи,
| Программы.АлгоритмХеширования, | Программы.АлгоритмХеширования КАК АлгоритмХеширования,
| Программы.АлгоритмШифрования | Программы.АлгоритмШифрования КАК АлгоритмШифрования
|ИЗ |ИЗ
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК Программы | Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК Программы
|ГДЕ |ГДЕ
| НЕ Программы.ПометкаУдаления | НЕ Программы.ПометкаУдаления
| И НЕ Программы.ЭтоПрограммаОблачногоСервиса
| |
|УПОРЯДОЧИТЬ ПО |УПОРЯДОЧИТЬ ПО
| Наименование"; | Наименование";
+11 -10
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f5f016c2-84e7-48c0-9778-1ca0479605e1"> <mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c62db5d4-93b3-4f13-8889-81e64c73f224">
<name>БиблиотекаСтандартныхПодсистем</name> <name>БиблиотекаСтандартныхПодсистем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Библиотека стандартных подсистем, редакция 2.3</value> <value>Библиотека стандартных подсистем, редакция 2.3</value>
</synonym> </synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="e777d781-809f-4e8d-a34d-9ec19c44e538"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="66ae928c-408f-405d-9411-8fb67fce1316"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="ca27b9b7-04b9-45c1-94f6-9c12994138e3"/> <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="9cd82b1c-0f04-450c-8cf2-e44a270763aa"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="2195d815-2a9a-4533-b3ee-9c1dbb36b786"/> <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="55641679-6abe-4bef-b169-8dd1bb9f3fae"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="269875be-7c68-4490-baf7-f0c336d63da6"/> <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="ff91b048-fb10-4085-b1a6-96fcc3613c59"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="4b0abc3f-8f42-4424-b174-12d39bbf5311"/> <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="5451adc5-de58-4ddc-88fc-744f12840127"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="faeb5d91-57c0-4e9f-b897-304a1134220d"/> <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="993a11e2-0a9c-4836-9e9d-8b30e402845c"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="8d97ca75-4ded-455e-bea7-c250b382450e"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="5eb32ffa-247a-4f98-9caf-0d400f164003"/>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles> <defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles> <defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor> <vendor>Фирма &quot;1С&quot;</vendor>
<version>2.4.4.166</version> <version>2.4.5.71</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents> <includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities> <usedMobileApplicationFunctionalities>
@@ -46,7 +46,7 @@
<splash/> <splash/>
<copyright> <copyright>
<key>ru</key> <key>ru</key>
<value>Copyright © ООО &quot;1С-Софт&quot;, 2009-2017. Все права защищены</value> <value>Copyright © ООО &quot;1С-Софт&quot;, 2009-2018. Все права защищены</value>
</copyright> </copyright>
<vendorInformationAddress> <vendorInformationAddress>
<key>ru</key> <key>ru</key>
@@ -677,6 +677,7 @@
<commonModules>CommonModule.ОбновлениеКонфигурации</commonModules> <commonModules>CommonModule.ОбновлениеКонфигурации</commonModules>
<commonModules>CommonModule.ОбновлениеКонфигурацииВызовСервера</commonModules> <commonModules>CommonModule.ОбновлениеКонфигурацииВызовСервера</commonModules>
<commonModules>CommonModule.ОбновлениеКонфигурацииКлиент</commonModules> <commonModules>CommonModule.ОбновлениеКонфигурацииКлиент</commonModules>
<commonModules>CommonModule.ОбсужденияСлужебныйВызовСервера</commonModules>
<commonModules>CommonModule.ОбсужденияСлужебныйКлиент</commonModules> <commonModules>CommonModule.ОбсужденияСлужебныйКлиент</commonModules>
<commonModules>CommonModule.ОбщегоНазначения</commonModules> <commonModules>CommonModule.ОбщегоНазначения</commonModules>
<commonModules>CommonModule.ОбщегоНазначенияВызовСервера</commonModules> <commonModules>CommonModule.ОбщегоНазначенияВызовСервера</commonModules>
@@ -1 +1 @@
{6,1,1,ff0ca0a0-c9d0-4100-be75-c5b2fd0381c7,1,388c0a74-a99c-44c0-995d-3a6eecd7f6ef,"2.4.4.166","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5549,1,0,f5f016c2-84e7-48c0-9778-1ca0479605e1,f5f016c2-84e7-48c0-9778-1ca0479605e1,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,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,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,1,0,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82Line truncated {6,1,1,ec777841-3392-42a6-8cce-42e0b05cf36a,1,2afc11ab-5a89-4034-9794-e5f30c4918a1,"2.4.5.71","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5550,1,0,c62db5d4-93b3-4f13-8889-81e64c73f224,c62db5d4-93b3-4f13-8889-81e64c73f224,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,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,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,1,0,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82-Line truncated
@@ -11,11 +11,12 @@
Использование = Константы.ИспользоватьБизнесПроцессыИЗадачи.Получить(); Использование = Константы.ИспользоватьБизнесПроцессыИЗадачи.Получить();
ПараметрыПоиска = Новый Структура; ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("ИмяМетода", Метаданные.РегламентныеЗадания.СтартОтложенныхПроцессов.ИмяМетода); ПараметрыПоиска.Вставить("Метаданные", Метаданные.РегламентныеЗадания.СтартОтложенныхПроцессов);
СписокЗаданий = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыПоиска); СписокЗаданий = РегламентныеЗаданияСервер.НайтиЗадания(ПараметрыПоиска);
Если СписокЗаданий.Количество() = 0 Тогда Если СписокЗаданий.Количество() = 0 Тогда
ПараметрыЗадания = Новый Структура("Использование", Использование); ПараметрыЗадания = Новый Структура("Использование", Использование);
ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.СтартОтложенныхПроцессов);
УстановитьРасписание(ЭтотОбъект.Значение, ПараметрыЗадания); УстановитьРасписание(ЭтотОбъект.Значение, ПараметрыЗадания);
РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания); РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
Возврат; Возврат;
@@ -3824,7 +3824,7 @@
<event>ChoiceProcessing</event> <event>ChoiceProcessing</event>
<name>ПрограммаОбработкаВыбора</name> <name>ПрограммаОбработкаВыбора</name>
</handlers> </handlers>
<width>15</width> <width>19</width>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch> <horizontalStretch>false</horizontalStretch>
@@ -8610,6 +8610,21 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>ВариантАлгоритмов</name>
<title>
<key>ru</key>
<value>Вариант алгоритмов</value>
</title>
<id>89</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands> <formCommands>
<name>Далее</name> <name>Далее</name>
<title> <title>
@@ -41,8 +41,6 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
ЗаполнитьСписокПрограмм();
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -52,14 +50,22 @@
РеквизитыПроверкиАдреса.Вставить("ЮридическийАдрес", Ложь); РеквизитыПроверкиАдреса.Вставить("ЮридическийАдрес", Ложь);
РеквизитыПроверкиАдреса.Вставить("ФактическийАдрес", Ложь); РеквизитыПроверкиАдреса.Вставить("ФактическийАдрес", Ложь);
Если ЗначениеЗаполнено(Объект.Ссылка)
И ( Объект.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено")
Или Объект.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Подготовлено")) Тогда
ПодключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм", 0.1, Истина);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// При изменении состава или настроек программ. // При изменении состава или настроек программ.
Если ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования") Если ЗначениеЗаполнено(ВариантАлгоритмов)
Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux") Тогда И ( ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования")
Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux")) Тогда
ПодключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм", 0.1, Истина); ПодключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм", 0.1, Истина);
КонецЕсли; КонецЕсли;
@@ -685,6 +691,10 @@
СтандартнаяОбработка = Ложь; СтандартнаяОбработка = Ложь;
ДанныеВыбора = Новый СписокЗначений; ДанныеВыбора = Новый СписокЗначений;
Если СписокПрограмм.Количество() = 0 Тогда
ЗаполнитьСписокПрограмм();
КонецЕсли;
Для каждого Строка Из СписокПрограмм Цикл Для каждого Строка Из СписокПрограмм Цикл
Значение = ?(ЗначениеЗаполнено(Строка.Ссылка), Строка.Ссылка, Строка.Идентификатор); Значение = ?(ЗначениеЗаполнено(Строка.Ссылка), Строка.Ссылка, Строка.Идентификатор);
ДанныеВыбора.Добавить(Значение, Строка.Представление); ДанныеВыбора.Добавить(Значение, Строка.Представление);
@@ -767,19 +777,12 @@
&НаКлиенте &НаКлиенте
Процедура ПерейтиНаСтраницуПодготовкаЗапросаНаСертификат() Процедура ПерейтиНаСтраницуПодготовкаЗапросаНаСертификат()
ЗаполнитьПрограмму(Новый ОписаниеОповещения(
"ПерейтиНаСтраницуПодготовкаЗапросаНаСертификатЗавершение", ЭтотОбъект));
КонецПроцедуры
// Продолжение процедуры ПерейтиНаСтраницуПодготовкаЗапросаНаСертификат.
&НаКлиенте
Процедура ПерейтиНаСтраницуПодготовкаЗапросаНаСертификатЗавершение(Результат, Контекст) Экспорт
Если ПерейтиНаСтраницуПодготовкаЗапросаНаСертификатНаСервере() Тогда Если ПерейтиНаСтраницуПодготовкаЗапросаНаСертификатНаСервере() Тогда
ПослеЗаписи(); ПослеЗаписи();
КонецЕсли; КонецЕсли;
ПодключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм", 0.1, Истина);
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
@@ -3114,6 +3117,10 @@
&НаКлиенте &НаКлиенте
Процедура УстановитьСертификат(Оповещение) Процедура УстановитьСертификат(Оповещение)
Если СписокПрограмм.Количество() = 0 Тогда
ЗаполнитьСписокПрограмм();
КонецЕсли;
ДатаУстановкиСертификата = ОбщегоНазначенияКлиент.ДатаСеанса(); ДатаУстановкиСертификата = ОбщегоНазначенияКлиент.ДатаСеанса();
Контекст = Новый Структура("Оповещение", Оповещение); Контекст = Новый Структура("Оповещение", Оповещение);
@@ -4044,6 +4051,27 @@
Процедура ЗаполнитьСписокПрограмм() Процедура ЗаполнитьСписокПрограмм()
СписокПрограмм.Очистить(); СписокПрограмм.Очистить();
Если Не ЗначениеЗаполнено(КонтейнерКлючаПуть)
И Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено Тогда
ВариантАлгоритмов = ВариантАлгоритмов();
КонецЕсли;
Если Не ЗначениеЗаполнено(ВариантАлгоритмов) Тогда
ВариантАлгоритмов = "2001";
КонецЕсли;
ИдентификаторыНастроек = Новый Соответствие;
Если ВариантАлгоритмов = "2001" Тогда
ИдентификаторыНастроек.Вставить("VipNet2001", Истина);
ИдентификаторыНастроек.Вставить("CryptoPro2001", Истина);
Иначе
ИдентификаторыНастроек.Вставить("VipNet2012", Истина);
ИдентификаторыНастроек.Вставить("CryptoPro2012", Истина);
КонецЕсли;
Настройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм(); Настройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм();
Запрос = Новый Запрос; Запрос = Новый Запрос;
@@ -4057,9 +4085,9 @@
| И Программы.ТипПрограммы = &ТипПрограммы"; | И Программы.ТипПрограммы = &ТипПрограммы";
Для каждого Настройка Из Настройки Цикл Для каждого Настройка Из Настройки Цикл
Если Настройка.Идентификатор = "VipNet" Если ИдентификаторыНастроек.Получить(Настройка.Идентификатор) = Неопределено Тогда
Или Настройка.Идентификатор = "CryptoPro" Тогда Продолжить;
КонецЕсли;
Строка = СписокПрограмм.Добавить(); Строка = СписокПрограмм.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Настройка); ЗаполнитьЗначенияСвойств(Строка, Настройка);
@@ -4069,11 +4097,50 @@
Если Выборка.Следующий() Тогда Если Выборка.Следующий() Тогда
Строка.Ссылка = Выборка.Ссылка; Строка.Ссылка = Выборка.Ссылка;
КонецЕсли; КонецЕсли;
КонецЕсли;
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
&НаСервере
Функция ВариантАлгоритмов()
Попытка
ВебСервис = ВебСервисУЦ();
Фабрика = ВебСервис.Определение.ФабрикаXDTO;
URIПространстваИмен = ВебСервис.ТочкаПодключения.Интерфейс.URIПространстваИмен;
ТипПустогоПараметра = Фабрика.Пакеты.Получить(URIПространстваИмен).КорневыеСвойства.Получить("GetCertificateSettings").Тип;
ЗначениеПустогоПараметра = Фабрика.Создать(ТипПустогоПараметра);
Ответ = ВебСервис.GetCertificateSettings(ЗначениеПустогоПараметра).GetCertificateSettingsResult;
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Ответ);
ПостроительDOM = Новый ПостроительDOM();
ПостроительDOM = ПостроительDOM.Прочитать(ЧтениеXML);
ЧтениеXML.Закрыть();
УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("algorithm");
ВариантАлгоритмов = УзелDOM[0].ТекстовоеСодержимое;
Если ВариантАлгоритмов <> "2001" И ВариантАлгоритмов <> "2012" Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ответ сервера не соответствует ожидаемому:
|%1'"), Ответ);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось получить требуемый вариант алгоритмов от сервера 1С:Подпись по причине:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
ВызватьИсключение ТекстОшибки;
КонецПопытки;
Возврат ВариантАлгоритмов;
КонецФункции
&НаКлиенте &НаКлиенте
Процедура ЗаполнитьПрограмму(Оповещение = Неопределено) Процедура ЗаполнитьПрограмму(Оповещение = Неопределено)
@@ -4242,6 +4309,7 @@
ОбновитьЗначение(Содержание, "ЭлектроннаяПочта"); ОбновитьЗначение(Содержание, "ЭлектроннаяПочта");
ОбновитьЗначение(Содержание, "Подразделение"); ОбновитьЗначение(Содержание, "Подразделение");
// Сохранение заполненных значений, если есть. // Сохранение заполненных значений, если есть.
ОбновитьЗначение(Содержание, "ВариантАлгоритмов");
ОбновитьЗначение(Содержание, "Программа", Объект.Программа); ОбновитьЗначение(Содержание, "Программа", Объект.Программа);
ОбновитьЗначение(Содержание, "ПредставлениеПрограммы"); ОбновитьЗначение(Содержание, "ПредставлениеПрограммы");
ОбновитьЗначение(Содержание, "КонтейнерКлючаИмя"); ОбновитьЗначение(Содержание, "КонтейнерКлючаИмя");
@@ -4511,7 +4579,7 @@
Если Не ЗначениеЗаполнено(Путь) Тогда Если Не ЗначениеЗаполнено(Путь) Тогда
Строки = СписокПрограмм.НайтиСтроки(Новый Структура("Ссылка", Объект.Программа)); Строки = СписокПрограмм.НайтиСтроки(Новый Структура("Ссылка", Объект.Программа));
Если Строки[0].Идентификатор = "CryptoPro" Тогда Если СтрНачинаетсяС(Строки[0].Идентификатор, "CryptoPro") Тогда
ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ключ электронной подписи не создан. НСтр("ru = 'Ключ электронной подписи не создан.
| |
@@ -4881,7 +4949,7 @@
Строки = СписокПрограмм.НайтиСтроки(Новый Структура("Ссылка", Объект.Программа)); Строки = СписокПрограмм.НайтиСтроки(Новый Структура("Ссылка", Объект.Программа));
Если Строки[0].Идентификатор = "CryptoPro" Тогда Если СтрНачинаетсяС(Строки[0].Идентификатор, "CryptoPro") Тогда
ВыполнитьОбработкуОповещения(Контекст.Оповещение, НайтиБезУчетаРегистраИРазделителяПути( ВыполнитьОбработкуОповещения(Контекст.Оповещение, НайтиБезУчетаРегистраИРазделителяПути(
ИменаКонтейнеровКлючей, Контекст.ИмяДляСоздания) > 0); ИменаКонтейнеровКлючей, Контекст.ИмяДляСоздания) > 0);
Возврат; Возврат;
@@ -4928,7 +4996,7 @@
// С<Фамилия Имя>, Индивидуальный предприниматель". // С<Фамилия Имя>, Индивидуальный предприниматель".
Субъект = ПодготовитьСтрокуДляИмениКонтейнера(Фамилия) + " " Субъект = ПодготовитьСтрокуДляИмениКонтейнера(Фамилия) + " "
+ ПодготовитьСтрокуДляИмениКонтейнера(Имя) + ", " + ПодготовитьСтрокуДляИмениКонтейнера(Имя) + ", "
+ НСтр("ru = 'Индивидуальный предприниматель'"); + ПодготовитьСтрокуДляИмениКонтейнера(НСтр("ru = 'Индивидуальный предприниматель'"));
Иначе Иначе
// С<Фамилия Имя>, <Сокращенное наименование организации>". // С<Фамилия Имя>, <Сокращенное наименование организации>".
Субъект = ПодготовитьСтрокуДляИмениКонтейнера(Фамилия) + " " Субъект = ПодготовитьСтрокуДляИмениКонтейнера(Фамилия) + " "
@@ -4999,10 +5067,11 @@
СтрокаПодготовленная = ""; СтрокаПодготовленная = "";
КоличествоСимволов = СтрДлина(Строка); СтрокаЛатиницей = СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(Строка);
КоличествоСимволов = СтрДлина(СтрокаЛатиницей);
Для НомерСимвола = 1 По КоличествоСимволов Цикл Для НомерСимвола = 1 По КоличествоСимволов Цикл
Символ = Сред(Строка, НомерСимвола, 1); Символ = Сред(СтрокаЛатиницей, НомерСимвола, 1);
Если ЗаменаСимволов[Символ] <> Неопределено Тогда Если ЗаменаСимволов[Символ] <> Неопределено Тогда
Символ = ЗаменаСимволов[Символ]; Символ = ЗаменаСимволов[Символ];
КонецЕсли; КонецЕсли;
@@ -973,10 +973,15 @@
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo"> <extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>Clearing</event>
<name>ЕдиницаИзмеренияПериодаХраненияРезервныхКопийОчистка</name>
</handlers>
<width>7</width> <width>7</width>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap> <wrap>true</wrap>
<extendedEdit>false</extendedEdit>
<listChoiceMode>true</listChoiceMode> <listChoiceMode>true</listChoiceMode>
<typeDomainEnabled>true</typeDomainEnabled> <typeDomainEnabled>true</typeDomainEnabled>
<choiceList> <choiceList>
@@ -147,6 +147,13 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияПериодаХраненияРезервныхКопийОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область ОбработчикиКомандФормы #Область ОбработчикиКомандФормы
@@ -203,11 +203,6 @@
#Область ОбработчикиСобытийЭлементовШапкиФормы #Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура АдресныйКлассификаторПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура РазрешитьОтправлятьДанныеПриИзменении(Элемент) Процедура РазрешитьОтправлятьДанныеПриИзменении(Элемент)
Перем РезультатЗапуска; Перем РезультатЗапуска;
@@ -359,6 +354,11 @@
Подключаемый_ПриИзмененииРеквизита(Элемент); Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура АдресныйКлассификаторПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область ОбработчикиКомандФормы #Область ОбработчикиКомандФормы
@@ -454,7 +454,7 @@
МодульОбсужденияСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбсужденияСлужебныйКлиент"); МодульОбсужденияСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбсужденияСлужебныйКлиент");
Если МодульОбсужденияСлужебныйКлиент.ОбсужденияПодключены() Тогда Если МодульОбсужденияСлужебныйКлиент.Подключены() Тогда
МодульОбсужденияСлужебныйКлиент.ПоказатьОтключение(); МодульОбсужденияСлужебныйКлиент.ПоказатьОтключение();
Иначе Иначе
МодульОбсужденияСлужебныйКлиент.ПоказатьПодключение(); МодульОбсужденияСлужебныйКлиент.ПоказатьПодключение();
@@ -477,7 +477,7 @@
Если ОбсужденияПодключены = Неопределено Тогда Если ОбсужденияПодключены = Неопределено Тогда
МодульОбсужденияСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбсужденияСлужебныйКлиент"); МодульОбсужденияСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбсужденияСлужебныйКлиент");
ОбсужденияПодключены = МодульОбсужденияСлужебныйКлиент.ОбсужденияПодключены(); ОбсужденияПодключены = МодульОбсужденияСлужебныйКлиент.Подключены();
КонецЕсли; КонецЕсли;
Если ОбсужденияПодключены Тогда Если ОбсужденияПодключены Тогда
@@ -4,7 +4,7 @@
&НаКлиенте &НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Если Не СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована() Тогда Если Не ОбсужденияСлужебныйВызовСервера.Подключены() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Подключение обсуждений не выполнено.'")); ПоказатьПредупреждение(, НСтр("ru = 'Подключение обсуждений не выполнено.'"));
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -44,7 +44,7 @@
<key>ru</key> <key>ru</key>
<value>Для подключения обсуждений требуется создать учетную запись администратора программы. <value>Для подключения обсуждений требуется создать учетную запись администратора программы.
&lt;link e1cib/list/Справочник.Пользователи>Перейти к списку пользователей&lt;/>&lt;link e1cib/list/Справочник.Пользователи>...&lt;/></value> &lt;link e1cib/list/Справочник.Пользователи>Перейти к списку пользователей&lt;/></value>
</title> </title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
@@ -103,6 +103,108 @@
<scrollOnCompress>false</scrollOnCompress> <scrollOnCompress>false</scrollOnCompress>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormGroup">
<name>ТребуетсяРазблокировать</name>
<id>87</id>
<items xsi:type="form:Decoration">
<name>ТребуетсяРазблокироватьКартинка</name>
<id>89</id>
<title>
<key>ru</key>
<value>Требуется разблокировать картинка</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ТребуетсяРазблокироватьКартинкаРасширеннаяПодсказка</name>
<id>91</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ТребуетсяРазблокироватьКартинкаКонтекстноеМеню</name>
<id>90</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Обсуждения</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ТребуетсяРазблокироватьПояснение</name>
<id>92</id>
<title>
<key>ru</key>
<value>Работа с внешними ресурсами заблокирована.
Параметры подключения к серверу взаимодействия будут восстановлены после разблокировки внешних ресурсов.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ТребуетсяРазблокироватьПояснениеРасширеннаяПодсказка</name>
<id>94</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ТребуетсяРазблокироватьПояснениеКонтекстноеМеню</name>
<id>93</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<maxWidth>50</maxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<handlers>
<event>URLProcessing</event>
<name>ТребуетсяСоздатьАдминистратораПояснениеОбработкаНавигационнойСсылки</name>
</handlers>
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Требуется разблокировать</value>
</title>
<extendedTooltip>
<name>ТребуетсяРазблокироватьРасширеннаяПодсказка</name>
<id>88</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>ПредложениеРегистрации</name> <name>ПредложениеРегистрации</name>
<id>15</id> <id>15</id>
@@ -627,6 +729,7 @@
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<skipOnInput>true</skipOnInput>
<extendedTooltip> <extendedTooltip>
<name>НазадРасширеннаяПодсказка</name> <name>НазадРасширеннаяПодсказка</name>
<id>80</id> <id>80</id>
@@ -47,19 +47,11 @@
&НаКлиенте &НаКлиенте
Процедура Зарегистрироваться(Команда) Процедура Зарегистрироваться(Команда)
Если ПустаяСтрока(АдресЭлектроннойПочты) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Адрес электронной почты не заполнен'"));
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Адрес электронной почты содержит ошибки'"));
Возврат;
КонецЕсли;
СостояниеРегистрации = КонтейнерСостояний.СостояниеРегистрации; СостояниеРегистрации = КонтейнерСостояний.СостояниеРегистрации;
Если СостояниеРегистрации = "НеЗарегистрирована" Тогда Если СостояниеРегистрации = "ТребуетсяРазблокировать" Тогда
ПриРазблокировке();
ИначеЕсли СостояниеРегистрации = "НеЗарегистрирована" Тогда
ПриПолученииКодаРегистрации(); ПриПолученииКодаРегистрации();
ИначеЕсли СостояниеРегистрации = "ОжиданиеВводаКодаПодтверждения" Тогда ИначеЕсли СостояниеРегистрации = "ОжиданиеВводаКодаПодтверждения" Тогда
ПриРегистрации(); ПриРегистрации();
@@ -84,9 +76,33 @@
#Область СлужебныеОбработчикиСобытий #Область СлужебныеОбработчикиСобытий
&НаКлиенте
Процедура ПриРазблокировке()
ОбсужденияСлужебныйВызовСервера.Разблокировать();
КонтейнерСостояний.СостояниеРегистрации = "Зарегистрирована";
ПриИзмененииСостоянияФормы(КонтейнерСостояний, ЭтотОбъект);
Оповестить("ОбсужденияПодключены", Истина);
ОбновитьИнтерфейс();
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ПриПолученииКодаРегистрации() Процедура ПриПолученииКодаРегистрации()
Если ПустаяСтрока(АдресЭлектроннойПочты) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Адрес электронной почты не заполнен'"));
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Адрес электронной почты содержит ошибки'"));
Возврат;
КонецЕсли;
СерверВзаимодействия = КонтейнерСостояний.СерверВзаимодействия; СерверВзаимодействия = КонтейнерСостояний.СерверВзаимодействия;
ПараметрыРегистрации = Новый ПараметрыРегистрацииИнформационнойБазыСистемыВзаимодействия; ПараметрыРегистрации = Новый ПараметрыРегистрацииИнформационнойБазыСистемыВзаимодействия;
@@ -228,6 +244,10 @@
Возврат "ТребуетсяСоздатьАдминистратора"; Возврат "ТребуетсяСоздатьАдминистратора";
КонецЕсли; КонецЕсли;
Если ОбсужденияСлужебныйВызовСервера.Заблокированы() Тогда
Возврат "ТребуетсяРазблокировать";
КонецЕсли;
Возврат ?(СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована(), Возврат ?(СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована(),
"Зарегистрирована", "НеЗарегистрирована"); "Зарегистрирована", "НеЗарегистрирована");
@@ -245,6 +265,8 @@
Если СостояниеРегистрации = "ТребуетсяСоздатьАдминистратора" Тогда Если СостояниеРегистрации = "ТребуетсяСоздатьАдминистратора" Тогда
Элементы.Страницы.ТекущаяСтраница = Элементы.ТребуетсяСоздатьАдминистратора; Элементы.Страницы.ТекущаяСтраница = Элементы.ТребуетсяСоздатьАдминистратора;
ИначеЕсли СостояниеРегистрации = "ТребуетсяРазблокировать" Тогда
Элементы.Страницы.ТекущаяСтраница = Элементы.ТребуетсяРазблокировать;
ИначеЕсли СостояниеРегистрации = "НеЗарегистрирована" Тогда ИначеЕсли СостояниеРегистрации = "НеЗарегистрирована" Тогда
Элементы.Страницы.ТекущаяСтраница = Элементы.ПредложениеРегистрации; Элементы.Страницы.ТекущаяСтраница = Элементы.ПредложениеРегистрации;
ИначеЕсли СостояниеРегистрации = "ОжиданиеВводаКодаПодтверждения" Тогда ИначеЕсли СостояниеРегистрации = "ОжиданиеВводаКодаПодтверждения" Тогда
@@ -266,6 +288,10 @@
Если СостояниеРегистрации = "ТребуетсяСоздатьАдминистратора" Тогда Если СостояниеРегистрации = "ТребуетсяСоздатьАдминистратора" Тогда
Зарегистрироваться.Видимость = Ложь; Зарегистрироваться.Видимость = Ложь;
Назад.Видимость = Ложь; Назад.Видимость = Ложь;
ИначеЕсли СостояниеРегистрации = "ТребуетсяРазблокировать" Тогда
Зарегистрироваться.Видимость = Истина;
Зарегистрироваться.Заголовок = НСтр("ru = 'Восстановить подключение'");
Назад.Видимость = Ложь;
ИначеЕсли СостояниеРегистрации = "НеЗарегистрирована" Тогда ИначеЕсли СостояниеРегистрации = "НеЗарегистрирована" Тогда
Зарегистрироваться.Видимость = Истина; Зарегистрироваться.Видимость = Истина;
Назад.Видимость = Ложь; Назад.Видимость = Ложь;
@@ -1,124 +1,231 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Процедура ДобавитьПоставляемыеНастройкиПрограмм(Настройки) Экспорт
// ViPNet CSP (ГОСТ 2012)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ViPNet CSP (ГОСТ 2012)'");
Настройка.ИмяПрограммы = "Infotecs GOST 2012/512 Cryptographic Service Provider";
Настройка.ТипПрограммы = 77;
// Варианты: GOST 34.10-2012 256, GOST R 34.10-2001, GOST 34.11-2012 512.
Настройка.АлгоритмПодписи = "GOST 34.10-2012 256";
// Варианты: GOST 34.11-2012 256, GOST R 34.11-94, GOST 34.11-2012 512.
Настройка.АлгоритмХеширования = "GOST 34.11-2012 256";
Настройка.АлгоритмШифрования = "GOST 28147-89"; // Один вариант.
Настройка.Идентификатор = "VipNet2012";
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 256");
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 512");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// КриптоПро CSP (ГОСТ 2012)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012)'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GR 34.10-2012 256";
Настройка.АлгоритмХеширования = "GR 34.11-2012 256";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2012";
Настройка.АлгоритмыПодписи.Добавить("GR 34.10-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GR 34.11-2012 256");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// ЛИССИ CSP (ГОСТ 2012)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ЛИССИ CSP (ГОСТ 2012)'");
Настройка.ИмяПрограммы = "LISSI GOST R 34.10-2012 (256) CSP";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GOST R 34.10-12 256";
Настройка.АлгоритмХеширования = "GOST R 34.11-12 256";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "Lissi2012";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-12 256");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-12 256");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// Сигнал-КОМ CSP (RFC 4357, ГОСТ 2012)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (ГОСТ 2012)'");
Настройка.ИмяПрограммы = "Signal-COM GOST R 34.10-2012 (256) Cryptographic Provider";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GOST3410-12-256";
Настройка.АлгоритмХеширования = "GOST3411-12-256";
Настройка.АлгоритмШифрования = "GOST28147";
Настройка.Идентификатор = "SignalComCPGOST2012";
Настройка.АлгоритмыПодписи.Добавить("GOST3410-12-256");
Настройка.АлгоритмыХеширования.Добавить("GOST3411-12-256");
Настройка.АлгоритмыШифрования.Добавить("GOST28147");
// Microsoft Enhanced CSP
Справочники.ПрограммыЭлектроннойПодписиИШифрования.ДобавитьНастройкиMicrosoftEnhancedCSP(Настройки);
// ViPNet CSP (ГОСТ 2001)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ViPNet CSP (ГОСТ 2001)'");
Настройка.ИмяПрограммы = "Infotecs Cryptographic Service Provider";
Настройка.ТипПрограммы = 2;
// Варианты: GOST R 34.10-2001, GOST 34.10-2012 256, GOST 34.11-2012 512.
Настройка.АлгоритмПодписи = "GOST R 34.10-2001";
// Варианты: GOST R 34.11-94, GOST 34.11-2012 256, GOST 34.11-2012 512.
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89"; // Один вариант.
Настройка.Идентификатор = "VipNet2001";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 256");
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 512");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// КриптоПро CSP (ГОСТ 2001)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2001)'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "GOST R 34.10-2001";
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2001";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// ЛИССИ CSP (ГОСТ 2001)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ЛИССИ CSP (ГОСТ 2001)'");
Настройка.ИмяПрограммы = "LISSI-CSP";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "GOST R 34.10-2001";
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "Lissi2001";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// Сигнал-КОМ CSP (RFC 4357, ГОСТ 2001)
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (RFC 4357, ГОСТ 2001)'");
Настройка.ИмяПрограммы = "Signal-COM CPGOST Cryptographic Provider";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "ECR3410-CP";
Настройка.АлгоритмХеширования = "RUS-HASH-CP";
Настройка.АлгоритмШифрования = "GOST28147";
Настройка.Идентификатор = "SignalComCPGOST2001";
Настройка.АлгоритмыПодписи.Добавить("ECR3410-CP");
Настройка.АлгоритмыХеширования.Добавить("RUS-HASH-CP");
Настройка.АлгоритмыШифрования.Добавить("GOST28147");
// Сигнал-КОМ CSP (ITU-T X.509 v.3, ГОСТ 2001).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (ITU-T X.509 v.3, ГОСТ 2001)'");
Настройка.ИмяПрограммы = "Signal-COM ECGOST Cryptographic Provider";
Настройка.ТипПрограммы = 129;
Настройка.АлгоритмПодписи = "ECR3410";
Настройка.АлгоритмХеширования = "RUS-HASH";
Настройка.АлгоритмШифрования = "GOST28147";
Настройка.Идентификатор = "SignalComECGOST2001";
Настройка.АлгоритмыПодписи.Добавить("ECR3410");
Настройка.АлгоритмыХеширования.Добавить("RUS-HASH");
Настройка.АлгоритмыШифрования.Добавить("GOST28147");
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы. // Обновление информационной базы.
Процедура ЗаполнитьНачальныеНастройки() Экспорт Процедура ДобавитьПрограммыНачальногоЗаполнения(Программы) Экспорт
ОписаниеПрограмм = Новый Массив; Программы.Вставить("Infotecs GOST 2012/512 Cryptographic Service Provider", 77);
Программы.Вставить("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", 80);
ОписаниеПрограмм.Добавить(ЭлектроннаяПодпись.НовоеОписаниеПрограммы( Программы.Вставить("Infotecs Cryptographic Service Provider", 2);
"Infotecs Cryptographic Service Provider", 2)); Программы.Вставить("Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", 75);
ОписаниеПрограмм.Добавить(ЭлектроннаяПодпись.НовоеОписаниеПрограммы(
"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", 75));
ЭлектроннаяПодпись.ЗаполнитьСписокПрограмм(ОписаниеПрограмм);
КонецПроцедуры КонецПроцедуры
// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, Процедура ОбновитьПрограммуОблачногоСервиса(Отложенно = Ложь, ОбъектовОбработано = 0, ПроблемныхОбъектов = 0) Экспорт
// для которых необходимо обновить записи в регистре.
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
| ПрограммыЭлектроннойПодписиИШифрования.Ссылка | ПрограммыЭлектроннойПодписиИШифрования.Ссылка КАК Ссылка,
| ПрограммыЭлектроннойПодписиИШифрования.Наименование КАК Наименование,
| ПрограммыЭлектроннойПодписиИШифрования.ПометкаУдаления КАК ПометкаУдаления
|ИЗ |ИЗ
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования | Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования
|ГДЕ |ГДЕ
| ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса"; | ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса";
РезультатЗапроса = Запрос.Выполнить(); Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования");
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Представление = НСтр("ru = 'Облачный сервис'");
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
КонецПроцедуры
// При включении сервиса криптографии создается программа электронной подписи и шифрования.
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ОбработкаЗавершена = Истина;
ВыборкаДетальныеЗаписи = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ПрограммыЭлектроннойПодписиИШифрования");
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
Программа = Неопределено;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Ссылка.ПометкаУдаления Тогда
Программа = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Иначе
// Есть программа уже создана и не помечена на удаление, не создаем новую.
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ВыборкаДетальныеЗаписи.Ссылка);
ОбъектовОбработано = ОбъектовОбработано + 1;
КонецЕсли;
КонецЦикла;
Если ОбъектовОбработано = 0 Тогда
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования");
Блокировка.Заблокировать(); Блокировка.Заблокировать();
Если Программа = Неопределено Тогда Выборка = Запрос.Выполнить().Выбрать();
ОблачнаяПрограмма = ?(Выборка.Следующий(), Выборка, Неопределено);
Если ОблачнаяПрограмма = Неопределено
Или ОблачнаяПрограмма.Наименование <> Представление
Или ОблачнаяПрограмма.ПометкаУдаления Тогда
Если ОблачнаяПрограмма = Неопределено Тогда
Программа = Справочники.ПрограммыЭлектроннойПодписиИШифрования.СоздатьЭлемент(); Программа = Справочники.ПрограммыЭлектроннойПодписиИШифрования.СоздатьЭлемент();
Программа.Наименование = НСтр("ru = 'Облачный сервис'");
Программа.ЭтоПрограммаОблачногоСервиса = Истина;
Программа.Записать();
Иначе Иначе
// Если программа уже создана, снимаем пометку удаления. Программа = ОблачнаяПрограмма.Ссылка.ПолучитьОбъект();
Программа.УстановитьПометкуУдаления(Ложь);
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Программа.Ссылка);
КонецЕсли; КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1; Программа.Наименование = Представление;
Программа.ЭтоПрограммаОблачногоСервиса = Истина;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Программа);
КонецЕсли;
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
// Если не удалось обработать какой-либо документ, повторяем попытку снова.
Если ОблачнаяПрограмма <> Неопределено Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обновить программу ""%1"" по причине:
|%2'"), Строка(Программа), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Если Отложенно Тогда
ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
НСтр("ru = 'Не удалось добавить программу Облачный сервис по причине: УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения);
|%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат;
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
, , ТекстСообщения);
ВызватьИсключение;
КонецПопытки;
КонецЕсли; КонецЕсли;
Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ПрограммыЭлектроннойПодписиИШифрования") Тогда
ОбработкаЗавершена = Ложь;
КонецЕсли;
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре Обработки.ОбработатьДанныеДляПереходаНаНовуюВерсию.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые программы электронной подписи (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Метаданные.НайтиПоПолномуИмени("Справочник.ПрограммыЭлектроннойПодписиИШифрования"),, НСтр("ru = 'Не удалось добавить программу ""%1"" по причине:
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( |%2'"), Представление, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
НСтр("ru = 'Процедура Обработки.ОбработатьДанныеДляПереходаНаНовуюВерсию.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"),
ОбъектовОбработано));
КонецЕсли; КонецЕсли;
ВызватьИсключение ТекстСообщения;
КонецПопытки;
Параметры.ОбработкаЗавершена = ОбработкаЗавершена; Если Отложенно И ОблачнаяПрограмма <> Неопределено Тогда
ОбъектовОбработано = ОбъектовОбработано + 1;
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ОблачнаяПрограмма.Ссылка);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -3,17 +3,14 @@
&НаСервере &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат; Возврат;
КонецЕсли; КонецЕсли;
УстановитьУсловноеОформление();
НастроитьДинамическийСписок(); НастроитьДинамическийСписок();
УстановитьУсловноеОформление();
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -12,7 +12,17 @@
Если ЭтоНоваяГруппа Тогда Если ЭтоНоваяГруппа Тогда
ОбъектЗначение = Справочники[Параметры.ИмяСправочникаХранилищаФайлов].СоздатьГруппу(); ОбъектЗначение = Справочники[Параметры.ИмяСправочникаХранилищаФайлов].СоздатьГруппу();
ОбъектЗначение.Родитель = ?(Параметры.Родитель <> Неопределено И Параметры.Родитель.ЭтоГруппа, Параметры.Родитель, Неопределено);
Если Параметры.Свойство("Родитель") И Параметры.Родитель <> Неопределено И ТипЗнч(Параметры.Родитель) = ТипЗнч(ОбъектЗначение.Ссылка) Тогда
Если Параметры.Родитель.ЭтоГруппа Тогда
ОбъектЗначение.Родитель = Параметры.Родитель;
ИначеЕсли Параметры.Родитель.Родитель <> Неопределено И ТипЗнч(Параметры.Родитель.Родитель) = ТипЗнч(ОбъектЗначение.Ссылка) Тогда
ОбъектЗначение.Родитель = Параметры.Родитель.Родитель; // В качестве первого родителя была передана ссылка на элемент.
КонецЕсли;
Иначе
ОбъектЗначение.Родитель = Неопределено;
КонецЕсли;
ОбъектЗначение.ВладелецФайла = Параметры.ВладелецФайла; ОбъектЗначение.ВладелецФайла = Параметры.ВладелецФайла;
ОбъектЗначение.ДатаСоздания = ТекущаяУниверсальнаяДата(); ОбъектЗначение.ДатаСоздания = ТекущаяУниверсальнаяДата();
ОбъектЗначение.Автор = Пользователи.АвторизованныйПользователь(); ОбъектЗначение.Автор = Пользователи.АвторизованныйПользователь();
@@ -1,19 +1,19 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p> <p>
<style>A:link { <style>A:link {
COLOR: #006699; TEXT-DECORATION: none TEXT-DECORATION: none; COLOR: #006699
} }
A:visited { A:visited {
COLOR: #006699; TEXT-DECORATION: none TEXT-DECORATION: none; COLOR: #006699
} }
A:hover { A:hover {
COLOR: #006699; TEXT-DECORATION: underline TEXT-DECORATION: underline; COLOR: #006699
} }
H2 { H2 {
BORDER-BOTTOM: sienna 1px solid; PADDING-BOTTOM: 2px; FONT-FAMILY: Verdana; COLOR: #a3611f; FONT-SIZE: 130%; FONT-WEIGHT: normal FONT-SIZE: 130%; FONT-FAMILY: Verdana; BORDER-BOTTOM: sienna 1px solid; FONT-WEIGHT: normal; COLOR: #a3611f; PADDING-BOTTOM: 2px
} }
H3 { H3 {
MARGIN-TOP: 5px; FONT-SIZE: 120% FONT-SIZE: 120%; MARGIN-TOP: 5px
} }
P.Usual { P.Usual {
MARGIN-TOP: 10px MARGIN-TOP: 10px
@@ -37,8 +37,7 @@ UL {
</li><li> </li><li>
<div> <div>
<div>Принцип работы встроенного редактора текстовых файлов такой же, как и у внешнего приложения. Файл копируется на локальный компьютер и помечается как занятый в информационной базе. До тех пор пока вы не нажмете <strong>Еще - Закончить редактирование</strong>,<strong> </strong>созданная версия файла не будет доступна другим пользователям.<strong> </strong></div></div> <div>Принцип работы встроенного редактора текстовых файлов такой же, как и у внешнего приложения. Файл копируется на локальный компьютер и помечается как занятый в информационной базе. До тех пор пока вы не нажмете <strong>Еще - Закончить редактирование</strong>,<strong> </strong>созданная версия файла не будет доступна другим пользователям.<strong> </strong></div></div>
</li><li>После окончания редактирования файла нажмите <strong>Еще - Закончить редактирование</strong>, для того чтобы снять с него пометку занятости для редактирования. В зависимости от настроек команда также сохраняет версию файла или обновляет файл в хранилище. По умолчанию создается новая <a href="DataProcessor.РаботаСФайлами.Form.ВерсияПрисоединенногоФайла/Help"><u><font color="#0000ff">версия файла</font></u></a>. Для изменения настройки при <a href="DataProcessor.РаботаСФайлами.Form.ФормаВозвратаФайла/Help"><u><font color="#0000ff">создании версии</font></u></a> снимите соответствующий флажок. </li></ul><h3>Просмотр задач</h3> </li><li>После окончания редактирования файла нажмите <strong>Еще - Закончить редактирование</strong>, для того чтобы снять с него пометку занятости для редактирования. В зависимости от настроек команда также сохраняет версию файла или обновляет файл в хранилище. По умолчанию создается новая <a href="DataProcessor.РаботаСФайлами.Form.ВерсияПрисоединенногоФайла/Help"><u><font color="#0000ff">версия файла</font></u></a>. Для изменения настройки при <a href="DataProcessor.РаботаСФайлами.Form.ФормаВозвратаФайла/Help"><u><font color="#0000ff">создании версии</font></u></a> снимите соответствующий флажок. </li></ul><h3>Просмотр карточки файла</h3>
<ul><li>С помощью команды <strong>Еще - Задачи</strong> можно просмотреть <a href="Task.ЗадачаИсполнителя.Form.ЗадачиПоПредмету/Help"><u><font color="#0000ff">список задач</font></u></a>, которые были созданы на основании данного файла.</li></ul><h3>Просмотр карточки файла</h3>
<ul><li>Нажмите <strong>Еще - Открыть карточку</strong>, для того чтобы просмотреть <a href="Catalog.Файлы.Form.ФормаЭлемента/Help"><u><font color="#0000ff">сведения о файле</font></u></a>.</li></ul><h3>Сравнение версий</h3> <ul><li>Нажмите <strong>Еще - Открыть карточку</strong>, для того чтобы просмотреть <a href="Catalog.Файлы.Form.ФормаЭлемента/Help"><u><font color="#0000ff">сведения о файле</font></u></a>.</li></ul><h3>Сравнение версий</h3>
<ul><li>Нажмите <strong>Еще - Показать отличия</strong>, для того чтобы произвести <a href="DataProcessor.РаботаСФайлами.Form.ВыборСпособаСравненияВерсий/Help"><u><font color="#0000ff">сравнение версий файлов</font></u></a>. Если программа для сравнения версий не была выбрана заранее в персональных настройках программы (вкладка <strong>Работа с файлами</strong>), предлагается ее выбрать. Доступны Microsoft Word или OpenOffice.org Writer.</li></ul><h3>Сохранение файла</h3> <ul><li>Нажмите <strong>Еще - Показать отличия</strong>, для того чтобы произвести <a href="DataProcessor.РаботаСФайлами.Form.ВыборСпособаСравненияВерсий/Help"><u><font color="#0000ff">сравнение версий файлов</font></u></a>. Если программа для сравнения версий не была выбрана заранее в персональных настройках программы (вкладка <strong>Работа с файлами</strong>), предлагается ее выбрать. Доступны Microsoft Word или OpenOffice.org Writer.</li></ul><h3>Сохранение файла</h3>
<ul><li>Нажмите <strong>Еще - Сохранить как</strong>, для того чтобы сохранить файл в указанный каталог на жестком или сетевом диске. </li></ul><h3>Открытие файла в стандартной программе</h3> <ul><li>Нажмите <strong>Еще - Сохранить как</strong>, для того чтобы сохранить файл в указанный каталог на жестком или сетевом диске. </li></ul><h3>Открытие файла в стандартной программе</h3>
@@ -70,6 +70,11 @@
&НаКлиенте &НаКлиенте
Процедура СохранитьПапку() Процедура СохранитьПапку()
Если ПустаяСтрока(ПапкаДляЭкспорта) Или ПапкаДляЭкспорта = ПолучитьРазделительПути() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо указать папку.'"));
Возврат;
КонецЕсли;
Если НЕ СтрЗаканчиваетсяНа(ПапкаДляЭкспорта, ПолучитьРазделительПути()) Тогда Если НЕ СтрЗаканчиваетсяНа(ПапкаДляЭкспорта, ПолучитьРазделительПути()) Тогда
ПапкаДляЭкспорта = ПапкаДляЭкспорта + ПолучитьРазделительПути(); ПапкаДляЭкспорта = ПапкаДляЭкспорта + ПолучитьРазделительПути();
КонецЕсли; КонецЕсли;
@@ -144,16 +149,13 @@
&НаСервере &НаСервере
Процедура СформироватьДеревоФайлов(ПапкаРодитель) Процедура СформироватьДеревоФайлов(ПапкаРодитель)
Запрос = Новый Запрос; Запрос = Новый Запрос;
ТекстЗапроса = ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Файлы.ВладелецФайла КАК Папка, | Файлы.ВладелецФайла КАК Папка,
| Файлы.ВладелецФайла.Наименование КАК НаименованиеПапки, | Файлы.ВладелецФайла.Наименование КАК НаименованиеПапки,
| ВЫБОР | &ТекущаяВерсия КАК ТекущаяВерсия,
| КОГДА Файлы.ТекущаяВерсия = ЗНАЧЕНИЕ(Справочник.ВерсииФайлов.ПустаяСсылка)
| ТОГДА Файлы.Ссылка
| ИНАЧЕ ЕстьNull(Файлы.ТекущаяВерсия, ЗНАЧЕНИЕ(Справочник.ВерсииФайлов.ПустаяСсылка))
| КОНЕЦ КАК ТекущаяВерсия,
| Файлы.Наименование КАК ПолноеНаименование, | Файлы.Наименование КАК ПолноеНаименование,
| Файлы.Расширение КАК Расширение, | Файлы.Расширение КАК Расширение,
| Файлы.Размер КАК Размер, | Файлы.Размер КАК Размер,
@@ -169,14 +171,28 @@
|ИТОГИ ПО |ИТОГИ ПО
| Папка ИЕРАРХИЯ"; | Папка ИЕРАРХИЯ";
Запрос.Параметры.Вставить("Ссылка", ПапкаРодитель); Запрос.Параметры.Вставить("Ссылка", ПапкаРодитель);
Если Не ПустаяСтрока(ИмяСправочникаХранилищаФайлов) Тогда Если Не ПустаяСтрока(ИмяСправочникаХранилищаФайлов) Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВерсииФайлов", ИмяСправочникаХранилищаВерсийФайлов);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Файлы", ИмяСправочникаХранилищаФайлов); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Файлы", ИмяСправочникаХранилищаФайлов);
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "ВладелецФайла", "Родитель"); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекущаяВерсия", ИмяСправочникаХранилищаФайлов + ".Ссылка");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВладелецФайла", "Родитель");
Иначе Иначе
Запрос.Текст = ТекстЗапроса;
ВыборТекущейВерсии = "ВЫБОР
| КОГДА Файлы.ТекущаяВерсия = ЗНАЧЕНИЕ(Справочник.ВерсииФайлов.ПустаяСсылка)
| ТОГДА Файлы.Ссылка
| ИНАЧЕ ЕстьNull(Файлы.ТекущаяВерсия, ЗНАЧЕНИЕ(Справочник.ВерсииФайлов.ПустаяСсылка))
| КОНЕЦ";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекущаяВерсия", ВыборТекущейВерсии);
КонецЕсли; КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Результат = Запрос.Выполнить(); Результат = Запрос.Выполнить();
ТаблицаВыгрузки = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ТаблицаВыгрузки = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Если ТранслитерироватьИменаПапокИФайлов И ТаблицаВыгрузки.Строки.Количество() > 0 Тогда Если ТранслитерироватьИменаПапокИФайлов И ТаблицаВыгрузки.Строки.Количество() > 0 Тогда
КорневаяПапкаДляВыгрузки = ТаблицаВыгрузки.Строки[0]; КорневаяПапкаДляВыгрузки = ТаблицаВыгрузки.Строки[0];
@@ -185,7 +201,9 @@
КорневаяПапкаДляВыгрузки.Расширение = СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(КорневаяПапкаДляВыгрузки.Расширение); КорневаяПапкаДляВыгрузки.Расширение = СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(КорневаяПапкаДляВыгрузки.Расширение);
ИзменитьИменаФайловИПапок(КорневаяПапкаДляВыгрузки); ИзменитьИменаФайловИПапок(КорневаяПапкаДляВыгрузки);
КонецЕсли; КонецЕсли;
ЗначениеВРеквизитФормы(ТаблицаВыгрузки, "ДеревоФайлов"); ЗначениеВРеквизитФормы(ТаблицаВыгрузки, "ДеревоФайлов");
КонецПроцедуры КонецПроцедуры
// Рекурсивная функция, которая собственно и выгружает файлы на локальный диск. // Рекурсивная функция, которая собственно и выгружает файлы на локальный диск.
@@ -336,8 +336,6 @@
Если Обработчик.Статус = "Ошибка" Тогда Если Обработчик.Статус = "Ошибка" Тогда
Обработчик.СтатистикаВыполнения.Очистить(); Обработчик.СтатистикаВыполнения.Очистить();
Обработчик.Статус = "НеВыполнено"; Обработчик.Статус = "НеВыполнено";
ИначеЕсли Обработчик.Статус = "Выполняется" Тогда
Обработчик.СтатистикаВыполнения.Вставить("КоличествоЗапусков", 0);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецЦикла; КонецЦикла;
@@ -767,7 +767,9 @@
Если Обработано Тогда Если Обработано Тогда
МенеджерКонстанты.Значение = ЗначениеКонстанты; МенеджерКонстанты.Значение = ЗначениеКонстанты;
УстановитьПривилегированныйРежим(Истина);
ЗаписатьДанные(МенеджерКонстанты); ЗаписатьДанные(МенеджерКонстанты);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -1896,8 +1896,6 @@
Объект.Текст = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст(); Объект.Текст = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст();
Иначе Иначе
Объект.Текст = Текст; Объект.Текст = Текст;
ТекстПисьмаФорматированныйДокумент.Добавить(Объект.Текст);
ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(Объект.ТекстHTML, Новый Структура);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -2855,18 +2853,36 @@
Если ТипЗнч(Результат.Текст) = Тип("Структура") Тогда Если ТипЗнч(Результат.Текст) = Тип("Структура") Тогда
РезультатТекст = Результат.Текст.ТекстHTML; РезультатТекст = Результат.Текст.ТекстHTML;
СтруктураВложений = Результат.Текст.СтруктураВложений; СтруктураВложений = Результат.Текст.СтруктураВложений;
НужнаКонвертацияИзHTML = Ложь; Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками;
Иначе Иначе
СтруктураВложений = Новый Структура(); СтруктураВложений = Новый Структура();
РезультатТекст = Результат.Текст; РезультатТекст = Результат.Текст;
НужнаКонвертацияИзHTML = СтрНачинаетсяС(РезультатТекст , "<!DOCTYPE html"); Если СтрНачинаетсяС(РезультатТекст , "<!DOCTYPE html") Тогда
Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками;
Иначе
Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст;
КонецЕсли;
КонецЕсли; КонецЕсли;
Если Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками Тогда
ТекстПисьмаФорматированныйДокумент.УстановитьHTML(РезультатТекст, СтруктураВложений); ТекстПисьмаФорматированныйДокумент.УстановитьHTML(РезультатТекст, СтруктураВложений);
Если НужнаКонвертацияИзHTML Тогда ТекстПисьма = "";
РезультатТекст = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст(); Элементы.ТекстПисьма.Вид = ВидПоляФормы.ПолеHTMLДокумента;
КонецЕсли; Элементы.СтраницыТекстПисьма.ТекущаяСтраница = Элементы.СтраницаФорматированныйДокумент;
ФорматСообщения = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
Иначе
ТекстПисьмаФорматированныйДокумент.Удалить();
Элементы.ТекстПисьма.Вид = ВидПоляФормы.ПолеТекстовогоДокумента;
Объект.ТекстHTML = "";
Объект.Кодировка = "UTF-8";
Элементы.СтраницыТекстПисьма.ТекущаяСтраница = Элементы.СтраницаОбычныйТекст;
ТекстПисьма = РезультатТекст; ТекстПисьма = РезультатТекст;
Элементы.ТекстПисьма.Вид = ВидПоляФормы.ПолеТекстовогоДокумента;
ФорматСообщения = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
КонецЕсли;
Элементы.ФорматСообщения.Заголовок = ФорматСообщения;
Объект.Тема = Результат.Тема; Объект.Тема = Результат.Тема;
Если ЗначениеЗаполнено(Результат.Получатель) Тогда Если ЗначениеЗаполнено(Результат.Получатель) Тогда
@@ -70,6 +70,7 @@
</pages> </pages>
</help> </help>
<dataLockControlMode>Managed</dataLockControlMode> <dataLockControlMode>Managed</dataLockControlMode>
<enableTotalsSliceLast>true</enableTotalsSliceLast>
<recordPresentation> <recordPresentation>
<key>ru</key> <key>ru</key>
<value>Курс валюты</value> <value>Курс валюты</value>
@@ -286,8 +286,7 @@
КонецЕсли; КонецЕсли;
Если (Протокол = "https" Или Протокол = "ftps") И ЗащищенноеСоединение = Неопределено Тогда Если (Протокол = "https" Или Протокол = "ftps") И ЗащищенноеСоединение = Неопределено Тогда
Сертификаты = Новый СертификатыУдостоверяющихЦентровОС; ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Сертификаты);
КонецЕсли; КонецЕсли;
WSОпределения = WSОпределения(АдресWSDL, ИмяПользователя, Пароль,, ЗащищенноеСоединение); WSОпределения = WSОпределения(АдресWSDL, ИмяПользователя, Пароль,, ЗащищенноеСоединение);
@@ -40,7 +40,18 @@
// Процедура обновляет запись в регистре по переданным значениям структуры. // Процедура обновляет запись в регистре по переданным значениям структуры.
Процедура ОбновитьЗапись(СтруктураЗаписи) Экспорт Процедура ОбновитьЗапись(СтруктураЗаписи) Экспорт
НачатьТранзакцию();
Попытка
ОбменДаннымиСервер.ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, "НастройкиТранспортаОбмена"); ОбменДаннымиСервер.ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, "НастройкиТранспортаОбмена");
ЗаписатьПароль("COMПарольПользователя", "COMПарольПользователя", СтруктураЗаписи);
ЗаписатьПароль("FTPСоединениеПароль", "FTPСоединениеПароль", СтруктураЗаписи);
ЗаписатьПароль("WSПароль", "WSПароль", СтруктураЗаписи);
ЗаписатьПароль("ПарольАрхиваСообщенияОбмена", "ПарольАрхиваСообщенияОбмена", СтруктураЗаписи);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры КонецПроцедуры
@@ -2561,6 +2561,93 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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> <object>
<name>InformationRegister.БуферОперацийСтатистики</name> <name>InformationRegister.БуферОперацийСтатистики</name>
<right> <right>
@@ -3265,93 +3352,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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> <object>
<name>InformationRegister.РежимыПодключенияВнешнихМодулей</name> <name>InformationRegister.РежимыПодключенияВнешнихМодулей</name>
<right> <right>
@@ -22,7 +22,8 @@
"УчетныеЗаписиЭлектроннойПочты", "Т.Ссылка", "ИЛИ(", "УчетныеЗаписиЭлектроннойПочты", "Т.Ссылка", "ИЛИ(",
"Пользователи", "Т.ВладелецУчетнойЗаписи", "И", "Пользователи", "Т.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")", "Условие", "Т.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")</condition> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
</condition>
</restrictionByCondition> </restrictionByCondition>
</right> </right>
<right> <right>
@@ -4930,6 +4930,45 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </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> <object>
<name>Document.СогласиеНаОбработкуПерсональныхДанных</name> <name>Document.СогласиеНаОбработкуПерсональныхДанных</name>
<right> <right>
@@ -6227,45 +6266,6 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </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> <object>
<name>InformationRegister.РежимыПодключенияВнешнихМодулей</name> <name>InformationRegister.РежимыПодключенияВнешнихМодулей</name>
<right> <right>
@@ -10,17 +10,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name> <name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right> <right>
@@ -52,4 +41,15 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights> </Rights>
@@ -8,5 +8,6 @@
<content>DataProcessor.ПодключениеОбсуждений</content> <content>DataProcessor.ПодключениеОбсуждений</content>
<content>CommonPicture.Обсуждения</content> <content>CommonPicture.Обсуждения</content>
<content>CommonModule.ОбсужденияСлужебныйКлиент</content> <content>CommonModule.ОбсужденияСлужебныйКлиент</content>
<content>CommonModule.ОбсужденияСлужебныйВызовСервера</content>
<parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem>
</mdclass:Subsystem> </mdclass:Subsystem>