1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2025-01-26 03:52:13 +02:00

Merge pull request #19 from firstBitSportivnaya/xml_json_preview

Доработка подсистемы управления интеграциями
This commit is contained in:
Ivan Smirnov 2024-02-05 19:09:42 +03:00 committed by GitHub
commit 5fffb4c4f8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 3983 additions and 48 deletions

View File

@ -23,8 +23,6 @@
},
"sourceFormat": "designer",
"srcDir": "src",
"v8version": "8.3.21.1644",
"edtVersion": "2022.2.1:x86_64",
"resultsTransform": {
"removeSupport": false
},

View File

@ -9,28 +9,21 @@
ЖурналРегистрации = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
КолДнейХраненияИсторииИнтеграции = __ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение("КолДнейХраненияИсторииИнтеграции");
Если НЕ ЗначениеЗаполнено(КолДнейХраненияИсторииИнтеграции) Тогда
Возврат;
КонецЕсли;
//Длительность хранения ошибок интеграции на месяц дольше, чем успешных записей
ДатаАктуальности = НачалоДня(ТекущаяДатаСеанса()) - 86400 * КолДнейХраненияИсторииИнтеграции;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| __ИсторияИнтеграции.Ссылка КАК Ссылка
| ИсторияИнтеграции.Ссылка КАК Ссылка
|ИЗ
| Справочник.__ИсторияИнтеграции КАК __ИсторияИнтеграции
| Справочник.__ИсторияИнтеграции КАК ИсторияИнтеграции
|ГДЕ
| (__ИсторияИнтеграции.Ошибка
| И __ИсторияИнтеграции.ДатаИнтеграции < &ДатаАктуальности
| ИЛИ НЕ __ИсторияИнтеграции.Ошибка
| И __ИсторияИнтеграции.ДатаИнтеграции < ДОБАВИТЬКДАТЕ(&ДатаАктуальности, МЕСЯЦ, -1))";
| (ИсторияИнтеграции.Ошибка
| И ИсторияИнтеграции.ДатаИнтеграции < ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, -&ДнейХраненияОшибок)
| ИЛИ НЕ ИсторияИнтеграции.Ошибка
| И ИсторияИнтеграции.ДатаИнтеграции < ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, -&ДнейХранения))";
Запрос.УстановитьПараметр("ДатаАктуальности", ДатаАктуальности);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("ДнейХранения", __ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение("КолДнейХраненияИсторииИнтеграции"));
Запрос.УстановитьПараметр("ДнейХраненияОшибок", __ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение("КолДнейХраненияОшибокИсторииИнтеграции"));
РезультатЗапроса = Запрос.Выполнить();
@ -50,9 +43,9 @@
ИмяСобытия = НСтр("ru = 'Очистка истории интеграции'");
ЗаголовокОшибки = СтрШаблон("Не удалось удалить запись истории интеграции %1", ВыборкаДетальныеЗаписи.Ссылка);
ТекстОшибки = __ОбщегоНазначенияСервер.ПолучениеПолногоТекстаОшибкиПриИсключении(ЗаголовокОшибки,
ТекстОшибки = __ОбщегоНазначенияСервер.ПолучениеПолногоТекстаОшибкиПриИсключении(ЗаголовокОшибки,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПолучитьСообщенияПользователю(Истина));
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,, ВыборкаДетальныеЗаписи.Ссылка, ТекстОшибки);
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , ВыборкаДетальныеЗаписи.Ссылка, ТекстОшибки);
КонецПопытки;

View File

@ -7,6 +7,7 @@
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen">ПриОткрытии</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
@ -151,6 +152,91 @@
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаФорматированиеТекстаЗапроса" id="138">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа форматирование текста запроса</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа форматирование текста запроса</v8:content>
</v8:item>
</ToolTip>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаФорматированиеТекстаЗапросаРасширеннаяПодсказка" id="139"/>
<ChildItems>
<CheckBoxField name="ВидОтображенияЗапроса" id="135">
<DataPath>ВидОтображенияЗапроса</DataPath>
<CheckBoxType>Tumbler</CheckBoxType>
<EditFormat>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>БЛ=Код; БИ=Дерево</v8:content>
</v8:item>
</EditFormat>
<ContextMenu name="ВидОтображенияЗапросаКонтекстноеМеню" id="136"/>
<ExtendedTooltip name="ВидОтображенияЗапросаРасширеннаяПодсказка" id="137"/>
<Events>
<Event name="OnChange">ВидОтображенияЗапросаПриИзменении</Event>
</Events>
</CheckBoxField>
<CommandBar name="ГруппаФорматированиеТекстаЗапросаКомандыПанель" id="148">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа форматирование текста запроса команды панель</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа форматирование текста запроса команды панель</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГруппаФорматированиеТекстаЗапросаКомандыПанельРасширеннаяПодсказка" id="149"/>
<ChildItems>
<ButtonGroup name="ГруппаФорматированиеТекстаЗапросаКомандыПанельКнопок" id="150">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа форматирование текста запроса команды панель кнопок</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа форматирование текста запроса команды панель кнопок</v8:content>
</v8:item>
</ToolTip>
<Representation>Compact</Representation>
<ExtendedTooltip name="ГруппаФорматированиеТекстаЗапросаКомандыПанельКнопокРасширеннаяПодсказка" id="151"/>
<ChildItems>
<Button name="РазвернутьВсе" id="152">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.РазвернутьВсе</CommandName>
<ExtendedTooltip name="РазвернутьВсеРасширеннаяПодсказка" id="153"/>
</Button>
<Button name="СвернутьВсе" id="154">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.СвернутьВсе</CommandName>
<ExtendedTooltip name="СвернутьВсеРасширеннаяПодсказка" id="155"/>
</Button>
</ChildItems>
</ButtonGroup>
<Button name="КопироватьВБуферОбмена" id="156">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КопироватьВБуферОбмена</CommandName>
<ExtendedTooltip name="КопироватьВБуферОбменаРасширеннаяПодсказка" id="157"/>
</Button>
</ChildItems>
</CommandBar>
</ChildItems>
</UsualGroup>
<Pages name="ГруппаСтраницы" id="60">
<EnableContentChange>true</EnableContentChange>
<Title>
@ -409,5 +495,66 @@
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ВидОтображенияЗапроса" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вид отображения запроса</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="РазвернутьВсе" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Развернуть все</v8:content>
</v8:item>
</Title>
<Picture>
<xr:Ref>StdPicture.ExpandAll</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>РазвернутьВсе</Action>
<Representation>Picture</Representation>
</Command>
<Command name="СвернутьВсе" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Свернуть все</v8:content>
</v8:item>
</Title>
<Picture>
<xr:Ref>StdPicture.CollapseAll</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>СвернутьВсе</Action>
<Representation>Picture</Representation>
</Command>
<Command name="КопироватьВБуферОбмена" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Копировать в буфер обмена</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Копировать в буфер обмена</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.CloneListItem</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>КопироватьВБуферОбмена</Action>
<Representation>TextPicture</Representation>
</Command>
</Commands>
</Form>

View File

@ -1,4 +1,11 @@
#Область ОбработчикиСобытийФормы
#Область ОписаниеПеременных
&НаКлиенте
Перем ДокументВнешнийОбъектИсходящий, ДокументВнешнийОбъектВходящий;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
@ -12,12 +19,21 @@
Элементы.Ошибка.Видимость = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ЗапросВходящий) Тогда
ЗапросВходящийОтформатированный = ОтформатироватьСообщениеИнтеграции(Объект.ЗапросВходящий);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ЗапросИсходящий) Тогда
ЗапросИсходящийОтформатированный = ОтформатироватьСообщениеИнтеграции(Объект.ЗапросИсходящий);
Если Объект.ФорматЗапросаИнтеграции <> Перечисления.__ФорматыЗапросовИнтеграции.ПроизвольныйФормат Тогда
Элементы.ГруппаФорматированиеТекстаЗапроса.Видимость = Истина;
Элементы.ВидОтображенияЗапроса.Видимость = Объект.ФорматЗапросаИнтеграции = Перечисления.__ФорматыЗапросовИнтеграции.JSON;
Элементы.ЗапросИсходящий.Вид = ВидПоляФормы.ПолеHTMLДокумента;
Элементы.ЗапросВходящий.Вид = ВидПоляФормы.ПолеHTMLДокумента;
Элементы.ЗапросИсходящий.УстановитьДействие("ДокументСформирован", "ЗапросИсходящийДокументСформирован_Подключаемый");
Элементы.ЗапросВходящий.УстановитьДействие("ДокументСформирован", "ЗапросВходящийДокументСформирован_Подключаемый");
Иначе
Элементы.ГруппаФорматированиеТекстаЗапроса.Видимость = Ложь;
Если ЗначениеЗаполнено(Объект.ЗапросВходящий) Тогда
ЗапросВходящийОтформатированный = ОтформатироватьСообщениеИнтеграции(Объект.ЗапросВходящий);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ЗапросИсходящий) Тогда
ЗапросИсходящийОтформатированный = ОтформатироватьСообщениеИнтеграции(Объект.ЗапросИсходящий);
КонецЕсли;
КонецЕсли;
Для Каждого Строка Из Объект.ОбъектыИнтеграции Цикл
@ -26,8 +42,130 @@
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиент = __ВспомогательныйМодульНеПереноситьКлиент;
// -- Обход ошибки отстутствия модуля БСП, не переносить
Если ЗначениеЗаполнено(Объект.ФорматЗапросаИнтеграции) И Объект.ФорматЗапросаИнтеграции <> ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Перечисление.__ФорматыЗапросовИнтеграции.ПроизвольныйФормат") Тогда
ИнициализироватьБазовыйФайлРедактора(ПолучитьФорматИнтеграции(Объект.ФорматЗапросаИнтеграции));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидОтображенияЗапросаПриИзменении(Элемент)
Если ВидОтображенияЗапроса Тогда
ИнициализироватьИЗаполнитьТекстомОбъектJSON("tree");
Иначе
ИнициализироватьИЗаполнитьТекстомОбъектJSON("code");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗапросИсходящийДокументСформирован_Подключаемый(Элемент)
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиент = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
Если Объект.ФорматЗапросаИнтеграции = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Перечисление.__ФорматыЗапросовИнтеграции.JSON") Тогда
ИнициализироватьИЗаполнитьТекстомОбъектJSON("code", "Исходящий");
Иначе
ИнициализироватьИЗаполнитьТекстомОбъектXML("Исходящий");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗапросВходящийДокументСформирован_Подключаемый(Элемент)
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиент = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
Если Объект.ФорматЗапросаИнтеграции = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Перечисление.__ФорматыЗапросовИнтеграции.JSON") Тогда
ИнициализироватьИЗаполнитьТекстомОбъектJSON("code", "Входящий");
Иначе
ИнициализироватьИЗаполнитьТекстомОбъектXML("Входящий");
КонецЕсли;
КонецПроцедуры
#КонецОбласти // ОбработчикиСобытийФормы
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура РазвернутьВсе(Команда)
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиент = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
Если Объект.ФорматЗапросаИнтеграции = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Перечисление.__ФорматыЗапросовИнтеграции.XML") Тогда
Элементы.ЗапросИсходящий.Документ.defaultView.Xonomy.plusminus("xonomy1", true);
Элементы.ЗапросВходящий.Документ.defaultView.Xonomy.plusminus("xonomy1", true);
Иначе
Если ВидОтображенияЗапроса Тогда
ДокументВнешнийОбъектИсходящий.expandAll();
ДокументВнешнийОбъектВходящий.expandAll();
Иначе
ДокументВнешнийОбъектИсходящий.format();
ДокументВнешнийОбъектВходящий.format();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СвернутьВсе(Команда)
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиент = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
Если Объект.ФорматЗапросаИнтеграции = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Перечисление.__ФорматыЗапросовИнтеграции.XML") Тогда
Элементы.ЗапросИсходящий.Документ.defaultView.Xonomy.plusminus("xonomy1", false);
Элементы.ЗапросВходящий.Документ.defaultView.Xonomy.plusminus("xonomy1", false);
Иначе
Если ВидОтображенияЗапроса Тогда
ДокументВнешнийОбъектИсходящий.collapseAll();
ДокументВнешнийОбъектВходящий.collapseAll();
Иначе
ДокументВнешнийОбъектИсходящий.compact();
ДокументВнешнийОбъектВходящий.compact();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КопироватьВБуферОбмена(Команда)
#Если НЕ ВебКлиент Тогда
СистемнаяИнформация = Новый СистемнаяИнформация();
Если НЕ СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 Или ТипПлатформы.Linux_x86_64 Тогда
ОбъектКопирования = Новый COMОбъект("htmlfile");
Если Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя = "ГруппаЗапросВходящий" Тогда
ПолеКопирования = Объект.ЗапросВходящий;
ИначеЕсли Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя = "ГруппаЗапросИсходящий" Тогда
ПолеКопирования = Объект.ЗапросИсходящий;
Иначе
Возврат;
КонецЕсли;
ОбъектКопирования.ParentWindow.ClipboardData.SetData("Text", ПолеКопирования);
КонецЕсли;
#КонецЕсли
КонецПроцедуры
#КонецОбласти // ОбработчикиКомандФормы
#Область СлужебныеПроцедурыИФункции
&НаСервере
@ -40,7 +178,111 @@
КонецЕсли;
Возврат Запрос;
КонецФункции
#КонецОбласти // СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ИнициализироватьБазовыйФайлРедактора(ФорматИнтеграции)
#Если ВебКлиент Тогда
ВызватьИсключение НСтр("ru = 'Редактор " + ФорматИнтеграции + " не предназначен для веб-клиента'");
#Иначе
Если ФорматИнтеграции = "JSON" Тогда
ЗапросИсходящийОтформатированный = ПолучитьБазовыйФайлРедактора(ФорматИнтеграции);
ЗапросВходящийОтформатированный = ЗапросИсходящийОтформатированный;
Иначе
ЗапросИсходящийОтформатированный = ПолучитьБазовыйФайлРедактора(ФорматИнтеграции, "Out");
ЗапросВходящийОтформатированный = ПолучитьБазовыйФайлРедактора(ФорматИнтеграции, "In");
КонецЕсли;
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Функция ПолучитьБазовыйФайлРедактора(ФорматИнтеграции, Дополнение = "")
#Если НЕ ВебКлиент Тогда
КаталогКомпоненты = КаталогВременныхФайлов() + ФорматИнтеграции + "Editor" + Дополнение;
КаталогНаДиске = Новый Файл(КаталогКомпоненты);
ДвоичныеДанные = ДвоичныеДанныеМакета(ФорматИнтеграции);
Чтение = Новый ЧтениеДанных(ДвоичныеДанные);
Файл = Новый ЧтениеZipФайла(Чтение.ИсходныйПоток());
Файл.ИзвлечьВсе(КаталогКомпоненты);
БазовыйФайлРедактора = КаталогКомпоненты + ПолучитьРазделительПути() + "index.html";
Возврат БазовыйФайлРедактора;
#КонецЕсли
КонецФункции
&НаКлиенте
Процедура ИнициализироватьИЗаполнитьТекстомОбъектJSON(ВидОтображения, ТипЗапроса = "")
Если ТипЗапроса = "Исходящий" Тогда
Если ДокументВнешнийОбъектИсходящий <> Неопределено Тогда
ДокументВнешнийОбъектИсходящий.destroy();
КонецЕсли;
ДокументВнешнийОбъектИсходящий = Элементы.ЗапросИсходящий.Документ.defaultView.Init(ВидОтображения);
ДокументВнешнийОбъектИсходящий.setName("Корень"); // Установка имени верхнего уровня для дерева
ДокументВнешнийОбъектИсходящий.setText(Объект.ЗапросИсходящий);
ИначеЕсли ТипЗапроса = "Входящий" Тогда
Если ДокументВнешнийОбъектВходящий <> Неопределено Тогда
ДокументВнешнийОбъектВходящий.destroy();
КонецЕсли;
ДокументВнешнийОбъектВходящий = Элементы.ЗапросВходящий.Документ.defaultView.Init(ВидОтображения);
ДокументВнешнийОбъектВходящий.setName("Корень"); // Установка имени верхнего уровня для дерева
ДокументВнешнийОбъектВходящий.setText(Объект.ЗапросВходящий);
Иначе
Если ДокументВнешнийОбъектИсходящий <> Неопределено Тогда
ДокументВнешнийОбъектИсходящий.destroy();
КонецЕсли;
ДокументВнешнийОбъектИсходящий = Элементы.ЗапросИсходящий.Документ.defaultView.Init(ВидОтображения);
ДокументВнешнийОбъектИсходящий.setName("Корень"); // Установка имени верхнего уровня для дерева
ДокументВнешнийОбъектИсходящий.setText(Объект.ЗапросИсходящий);
Если ДокументВнешнийОбъектВходящий <> Неопределено Тогда
ДокументВнешнийОбъектВходящий.destroy();
КонецЕсли;
ДокументВнешнийОбъектВходящий = Элементы.ЗапросВходящий.Документ.defaultView.Init(ВидОтображения);
ДокументВнешнийОбъектВходящий.setName("Корень"); // Установка имени верхнего уровня для дерева
ДокументВнешнийОбъектВходящий.setText(Объект.ЗапросВходящий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИнициализироватьИЗаполнитьТекстомОбъектXML(ТипЗапроса)
Если ТипЗапроса = "Исходящий" Тогда
Элементы.ЗапросИсходящий.Документ.defaultView.start(ОтформатироватьСообщениеИнтеграции(Объект.ЗапросИсходящий), "nerd");
Иначе
Элементы.ЗапросВходящий.Документ.defaultView.start(ОтформатироватьСообщениеИнтеграции(Объект.ЗапросВходящий), "nerd");
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДвоичныеДанныеМакета(ФорматИнтеграции)
Возврат ПолучитьОбщийМакет("__" + ФорматИнтеграции + "Editor");
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьФорматИнтеграции(ФорматЗапросаИнтеграции)
ИндексЗначенияПеречисления = Перечисления.__ФорматыЗапросовИнтеграции.Индекс(ФорматЗапросаИнтеграции);
ФорматИнтеграции = Метаданные.Перечисления.__ФорматыЗапросовИнтеграции.ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;
Возврат ФорматИнтеграции;
КонецФункции
#КонецОбласти // СлужебныеПроцедурыИФункции

View File

@ -240,7 +240,7 @@
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:type="xr:DesignTimeRef">35632399-a982-4f7f-9680-362a16ef3a00.00000000-0000-0000-0000-000000000000</xr:FillValue>
<xr:FillValue xsi:type="xr:DesignTimeRef"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>

View File

@ -1103,7 +1103,7 @@
<CommandInterface>
<CommandBar>
<Item>
<Command>0:b5477fc9-9786-454e-a627-0f3a7c40e4e2</Command>
<Command>0</Command>
<Type>Auto</Type>
<DefaultVisible>false</DefaultVisible>
<Visible>

View File

@ -70,13 +70,13 @@
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| __ПредопределенныеЗначения.Ссылка КАК ПредопределенноеЗначение,
| __ПредопределенныеЗначения.ИмяПредопределенныхДанных КАК Имя
| ПредопределенныеЗначения.Ссылка КАК ПредопределенноеЗначение,
| ПредопределенныеЗначения.ИмяПредопределенныхДанных КАК Имя
|ПОМЕСТИТЬ ПредопределенныеЗначения
|ИЗ
| ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения
| ПланВидовХарактеристик.__ПредопределенныеЗначения КАК ПредопределенныеЗначения
|ГДЕ
| __ПредопределенныеЗначения.ИмяПредопределенныхДанных В(&МассивИмен)
| ПредопределенныеЗначения.ИмяПредопределенныхДанных В(&МассивИмен)
|;
|
|////////////////////////////////////////////////////////////////////////////////

View File

@ -16,7 +16,21 @@
<v8:NumberQualifiers>
<v8:Digits>3</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
<v8:AllowedSign>Nonnegative</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
<IsFolder>false</IsFolder>
</Item>
<Item id="ea3b1a9b-5123-4390-a7b6-b887a0bb70ae">
<Name>КолДнейХраненияОшибокИсторииИнтеграции</Name>
<Code>000000003</Code>
<Description>Количество дней хранения ошибок истории интеграции</Description>
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>3</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Nonnegative</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
<IsFolder>false</IsFolder>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<CommonModule uuid="317efc87-5d43-428f-850e-8a58993a8276">
<Properties>
<Name>__ВспомогательныйМодульНеПереноситьКлиент</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вспомогательный модуль клиент (не переносить)</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>false</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -0,0 +1,5 @@
Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт
Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного);
КонецФункции

View File

@ -178,10 +178,101 @@
ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(ПодготовленнаяСтрока, КодировкаТекста);
Base64Hash = ПолучитьBase64СтрокуИзДвоичныхДанных(ДвоичныеДанныеСтроки);
Возврат Base64Hash;
Возврат Base64Hash;
КонецФункции
Функция ДатаИзUnixTime(Знач Секунд) Экспорт
Если Не ЗначениеЗаполнено(Секунд) Тогда
Возврат '0001.01.01';
ИначеЕсли ТипЗнч(Секунд) = Тип("Строка") Тогда
Секунд = Число(Секунд);
КонецЕсли;
Дата = '1970.01.01' + Секунд;
Возврат Дата;
КонецФункции
#Область REST
Функция ПолучитьЗапросТекстомИзСоответствияJSON(ТелоЗапросаJSON) Экспорт
НастройкиСериализации = Новый НастройкиСериализацииJSON;
НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата;
НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ТелоЗапросаJSON, НастройкиСериализации);
СтрокаJSON = ЗаписьJSON.Закрыть();
Возврат СтрокаJSON;
КонецФункции
Функция ПодготовитьТаблицуКодовОтветаHTTP() Экспорт
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
ТаблицаКодовОтвета = Новый ТаблицаЗначений;
ТаблицаКодовОтвета.Колонки.Добавить("КодОтвета" , ОбщегоНазначения.ОписаниеТипаЧисло(3));
ТаблицаКодовОтвета.Колонки.Добавить("КраткоеОписание" , ОбщегоНазначения.ОписаниеТипаСтрока(150));
// Успешные
НоваяСтрока = ТаблицаКодовОтвета.Добавить();
НоваяСтрока.КодОтвета = 100;
НоваяСтрока.КраткоеОписание = РасшифровкаКодаСостоянияHTTP(НоваяСтрока.КодОтвета);
НоваяСтрока = ТаблицаКодовОтвета.Добавить();
НоваяСтрока.КодОтвета = 200;
НоваяСтрока.КраткоеОписание = РасшифровкаКодаСостоянияHTTP(НоваяСтрока.КодОтвета);
// Сообщения о перенаправлениях
Для Инкремент = 0 По 8 Цикл
НоваяСтрока = ТаблицаКодовОтвета.Добавить();
НоваяСтрока.КодОтвета = Число("30" + Инкремент);
НоваяСтрока.КраткоеОписание = РасшифровкаКодаСостоянияHTTP(НоваяСтрока.КодОтвета);
КонецЦикла;
// Клиентские
Для Инкремент = 0 По 17 Цикл
НоваяСтрока = ТаблицаКодовОтвета.Добавить();
Если Инкремент < 10 Тогда
НоваяСтрока.КодОтвета = Число("40" + Инкремент);
Иначе
НоваяСтрока.КодОтвета = Число("4" + Инкремент);
КонецЕсли;
НоваяСтрока.КраткоеОписание = РасшифровкаКодаСостоянияHTTP(НоваяСтрока.КодОтвета);
КонецЦикла;
НоваяСтрока = ТаблицаКодовОтвета.Добавить();
НоваяСтрока.КодОтвета = 429;
НоваяСтрока.КраткоеОписание = РасшифровкаКодаСостоянияHTTP(НоваяСтрока.КодОтвета);
// Серверные
Для Инкремент = 0 По 11 Цикл
НоваяСтрока = ТаблицаКодовОтвета.Добавить();
Если Инкремент < 10 Тогда
НоваяСтрока.КодОтвета = Число("50" + Инкремент);
Иначе
НоваяСтрока.КодОтвета = Число("5" + Инкремент);
КонецЕсли;
НоваяСтрока.КраткоеОписание = РасшифровкаКодаСостоянияHTTP(НоваяСтрока.КодОтвета);
КонецЦикла;
Возврат ТаблицаКодовОтвета;
КонецФункции
// Функция возвратает расшифровку под коду состояния HTTP-ответа
//
// Параметры:
@ -192,8 +283,26 @@
//
Функция РасшифровкаКодаСостоянияHTTP(КодСостояния) Экспорт
Если КодСостояния = 304 Тогда // Not Modified
Если 100 <= КодСостояния И КодСостояния <= 299 Тогда
Расшифровка = НСтр("ru = 'Успешно.'");
ИначеЕсли КодСостояния = 300 Тогда // Multiple Choice
Расшифровка = НСтр("ru = 'Запрос имеет более чем один из возможных ответов.'");
ИначеЕсли КодСостояния = 301 Тогда // Moved Permanently
Расшифровка = НСтр("ru = 'URI запрашиваемого ресурса был изменён.'");
ИначеЕсли КодСостояния = 302 Тогда // Found
Расшифровка = НСтр("ru = 'Запрошенный ресурс временно изменён.'");
ИначеЕсли КодСостояния = 303 Тогда // See Other
Расшифровка = НСтр("ru = 'Попробуйте получить запрашиваемый ресурс в другой URI с запросом GET.'");
ИначеЕсли КодСостояния = 304 Тогда // Not Modified
Расшифровка = НСтр("ru = 'Нет необходимости повторно передавать запрошенные ресурсы.'");
ИначеЕсли КодСостояния = 305 Тогда // Use Proxy
Расшифровка = НСтр("ru = 'Запрошенный ресурс должен быть доступен через прокси.'");
ИначеЕсли КодСостояния = 306 Тогда // Switch Proxy
Расшифровка = НСтр("ru = 'Последующие запросы должны использовать указанный прокси.'");
ИначеЕсли КодСостояния = 307 Тогда // Temporary Redirect
Расшифровка = НСтр("ru = 'Запрошенный ресурс временно перенаправлен на другой URL-адрес с тем же методом, который использовал предыдущий запрос.'");
ИначеЕсли КодСостояния = 308 Тогда // Permanent Redirect
Расшифровка = НСтр("ru = 'Запрошенный ресурс теперь постоянно находится в другом URI.'");
ИначеЕсли КодСостояния = 400 Тогда // Bad Request
Расшифровка = НСтр("ru = 'Запрос не может быть исполнен.'");
ИначеЕсли КодСостояния = 401 Тогда // Unauthorized
@ -271,7 +380,9 @@
КонецФункции
#КонецОбласти // ПрограммныйИнтерфейс
#КонецОбласти // REST
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<CommonModule uuid="d83a71d7-fc42-47ef-a902-c6313857c7c6">
<Properties>
<Name>__КоннекторHTTP</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Коннектор HTTP</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<CommonTemplate uuid="0218d031-6e05-4f40-b37c-6e85ecbc9de0">
<Properties>
<Name>__JSONEditor</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>JSON editor</v8:content>
</v8:item>
</Synonym>
<Comment>https://github.com/josdejong/jsoneditor</Comment>
<TemplateType>BinaryData</TemplateType>
</Properties>
</CommonTemplate>
</MetaDataObject>

Binary file not shown.

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.14">
<CommonTemplate uuid="39407ce1-55d8-4877-8633-f63a1cc58966">
<Properties>
<Name>__XMLEditor</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>XMLEditor</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>XMLEditor</v8:content>
</v8:item>
<v8:item>
<v8:lang>uk</v8:lang>
<v8:content>XMLEditor</v8:content>
</v8:item>
</Synonym>
<Comment>https://github.com/michmech/xonomy</Comment>
<TemplateType>BinaryData</TemplateType>
</Properties>
</CommonTemplate>
</MetaDataObject>

Binary file not shown.

View File

@ -240,13 +240,17 @@
<Role>ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</Role>
<Role>ПолныеПрава</Role>
<CommonTemplate>__BSLEditor</CommonTemplate>
<CommonTemplate>__JSONEditor</CommonTemplate>
<CommonTemplate>__XMLEditor</CommonTemplate>
<CommonModule>__ВспомогательныйМодульНеПереносить</CommonModule>
<CommonModule>__ВспомогательныйМодульНеПереноситьКлиент</CommonModule>
<CommonModule>__ДокументыОбработкаЗаполнения</CommonModule>
<CommonModule>__ДокументыОбработкаПроведения</CommonModule>
<CommonModule>__ДокументыПередЗаписью</CommonModule>
<CommonModule>__ДокументыПриЗаписи</CommonModule>
<CommonModule>__ДокументыПриКопировании</CommonModule>
<CommonModule>__ИнтеграцииСервер</CommonModule>
<CommonModule>__КоннекторHTTP</CommonModule>
<CommonModule>__МетодыРегламентныхЗаданийСервер</CommonModule>
<CommonModule>__МодификацияКонфигурацииКлиентПереопределяемый</CommonModule>
<CommonModule>__МодификацияКонфигурацииКлиентСерверПереопределяемый</CommonModule>

View File

@ -20,32 +20,32 @@
Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ
| __СоответствияОбъектовИБ.ТипСоответствия КАК ТипСоответствия,
| __СоответствияОбъектовИБ.Объект1 КАК Объект1,
| __СоответствияОбъектовИБ.Объект2 КАК Объект2,
| __СоответствияОбъектовИБ.Объект3 КАК Объект3
| СоответствияОбъектовИБ.ТипСоответствия КАК ТипСоответствия,
| СоответствияОбъектовИБ.Объект1 КАК Объект1,
| СоответствияОбъектовИБ.Объект2 КАК Объект2,
| СоответствияОбъектовИБ.Объект3 КАК Объект3
|ИЗ
| РегистрСведений.__СоответствияОбъектовИБ КАК __СоответствияОбъектовИБ
| РегистрСведений.__СоответствияОбъектовИБ КАК СоответствияОбъектовИБ
|ГДЕ
| __СоответствияОбъектовИБ.ТипСоответствия = &ТипСоответствия";
| СоответствияОбъектовИБ.ТипСоответствия = &ТипСоответствия";
Если ЗначениеЗаполнено(Объект1) Тогда
ТекстЗапроса = СтрШаблон("%1%2И __СоответствияОбъектовИБ.Объект1 = &Объект1", ТекстЗапроса, Символы.ПС);
ТекстЗапроса = СтрШаблон("%1%2И СоответствияОбъектовИБ.Объект1 = &Объект1", ТекстЗапроса, Символы.ПС);
Запрос.УстановитьПараметр("Объект1", Объект1);
КонецЕсли;
Если ЗначениеЗаполнено(Объект2) Тогда
ТекстЗапроса = СтрШаблон("%1%2И __СоответствияОбъектовИБ.Объект2 = &Объект1", ТекстЗапроса, Символы.ПС);
ТекстЗапроса = СтрШаблон("%1%2И СоответствияОбъектовИБ.Объект2 = &Объект1", ТекстЗапроса, Символы.ПС);
Запрос.УстановитьПараметр("Объект2", Объект2);
КонецЕсли;
Если ЗначениеЗаполнено(Объект3) Тогда
ТекстЗапроса = СтрШаблон("%1%2И __СоответствияОбъектовИБ.Объект3 = &Объект1", ТекстЗапроса, Символы.ПС);
ТекстЗапроса = СтрШаблон("%1%2И СоответствияОбъектовИБ.Объект3 = &Объект1", ТекстЗапроса, Символы.ПС);
Запрос.УстановитьПараметр("Объект3", Объект3);
КонецЕсли;

View File

@ -30,6 +30,9 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.__РедактированиеНастроекИнтеграции</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">ScheduledJob.__ОчисткаИсторииИнтеграции</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonPicture.__ПодсистемаУправлениеИнтеграциями</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonTemplate.__JSONEditor</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonTemplate.__XMLEditor</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.__КоннекторHTTP</xr:Item>
</Content>
</Properties>
<ChildObjects/>

View File

@ -1,4 +1,5 @@
Справочник.__ИсторияИнтеграции.Форма.ФормаСписка.Форма Возможно ошибочный метод: "ДобавитьЗадание"
Справочник.__ИсторияИнтеграции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "ИсходныйПоток"
Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "Прочитать"
Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "НайтиФайлы"
Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "Существует"