3_0_1_220

This commit is contained in:
Компания 1С committed 2018-07-27 00:51:00 +03:00
1 parent 6148df8714
commit 2630908c42
83 files changed
+3048 -1403

No files matched your search

@@ -634,6 +634,7 @@
<items xsi:type="form:Table">
<name>НаборыСвойств</name>
<id>1</id>
<displayImportance>VeryHigh</displayImportance>
<title>
<key>ru</key>
<value>Наборы свойств</value>
@@ -868,6 +869,7 @@
<borderColor xsi:type="core:ColorRef">
<color>Style.BorderColor</color>
</borderColor>
<currentRowUse>SelectionPresentationAndChoice</currentRowUse>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
@@ -880,9 +882,48 @@
<userSettingsGroup>ГруппаПользовательскихНастроек</userSettingsGroup>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>КоманднаяПанельФормыМобильныйКлиент</name>
<id>185</id>
<displayImportance>VeryHigh</displayImportance>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Командная панель формы мобильный клиент</value>
</title>
<toolTip>
<key>ru</key>
<value>Командная панель формы мобильный клиент</value>
</toolTip>
<extendedTooltip>
<name>КоманднаяПанельФормыМобильныйКлиентРасширеннаяПодсказка</name>
<id>186</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>Свойства</name>
<id>38</id>
<displayImportance>VeryHigh</displayImportance>
<title>
<key>ru</key>
<value>Свойства</value>
@@ -32,6 +32,18 @@
Элементы.ПоискИУдалениеДублей.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Элементы.Переместить(Элементы.КоманднаяПанельФормы, Элементы.КоманднаяПанельФормыМобильныйКлиент);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НаборыСвойств", "Шапка", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НаборыСвойств", "АвтоМаксимальнаяВысота", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НаборыСвойств", "МаксимальнаяВысота", 5);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КопироватьРеквизит", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВставитьРеквизит", "ТолькоВоВсехДействиях", Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -8,6 +8,14 @@
ТаблицаРеквизитов = ПолучитьИзВременногоХранилища(Параметры.РеквизитыОбъекта);
ЗначениеВРеквизитФормы(ТаблицаРеквизитов, "РеквизитыОбъекта");
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаКомандаОтмена", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -85,6 +85,13 @@
КонецЕсли;
КонецЦикла;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаКомандаОтмена", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -45,6 +45,12 @@
Элементы.ОбщиеЗначенияСведенийКомментарий.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ОбщиеЗначенияСведенийКомментарий.Заголовок, ТекущийНаборСвойств);
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаЗаписатьИЗакрыть", "Картинка", БиблиотекаКартинок.ЗаписатьИЗакрыть);
КонецЕсли;
КонецПроцедуры
@@ -38,6 +38,12 @@
Элементы.КнопкиПредупреждения.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -2,17 +2,25 @@
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
СведенияОПланеОбмена = СведенияОПланеОбмена(ПараметрКоманды);
Если СведенияОПланеОбмена.РазделенныйРежим Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Загрузка правил обмена данными в разделенном режиме недоступна.'"));
Возврат;
КонецЕсли;
Если СведенияОПланеОбмена.ИспользуютсяПравилаКонвертации Тогда
ОбменДаннымиКлиент.ЗагрузитьПравилаСинхронизацииДанных(СведенияОПланеОбмена.ИмяПланаОбмена);
Иначе
ВидПравил = ПредопределенноеЗначение("Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов");
Отбор = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, СведенияОПланеОбмена.ВидПравилПРО);
ЗначенияЗаполнения = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, СведенияОПланеОбмена.ВидПравилПРО);
Отбор = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, ВидПравил);
ЗначенияЗаполнения = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, ВидПравил);
ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, ЗначенияЗаполнения, "ПравилаДляОбменаДанными",
ПараметрКоманды, "ПравилаРегистрацииОбъектов");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -22,9 +30,19 @@
&НаСервере
Функция СведенияОПланеОбмена(Знач УзелИнформационнойБазы)
Результат = Новый Структура("ИмяПланаОбмена,ИспользуютсяПравилаКонвертации");
Результат.ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы);
Результат.ИспользуютсяПравилаКонвертации = ОбменДаннымиПовтИсп.ЕстьМакетПланаОбмена(Результат.ИмяПланаОбмена, "ПравилаОбмена");
Результат = Новый Структура("РазделенныйРежим",
ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных());
Если Не Результат.РазделенныйРежим Тогда
Результат.Вставить("ИмяПланаОбмена",
ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы));
Результат.Вставить("ИспользуютсяПравилаКонвертации",
ОбменДаннымиПовтИсп.ЕстьМакетПланаОбмена(Результат.ИмяПланаОбмена, "ПравилаОбмена"));
Результат.Вставить("ВидПравилПРО", Перечисления.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов);
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -53,6 +53,12 @@
ПолучитьМинимальнуюДлинуПаролейПользователей());
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаЗаписатьИЗакрыть", "Заголовок", НСтр("ru ='ОК'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -55,6 +55,12 @@
ЗаполнитьПрава();
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаЗаписатьИЗакрыть", "Заголовок", НСтр("ru ='ОК'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -14,6 +14,12 @@
ЗащитаПерсональныхДанных.ПриСозданииФормыНастройкиРегистрацииСобытий(ЭтотОбъект);
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаЗаписатьИЗакрыть", "Заголовок", НСтр("ru ='ОК'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -31,6 +31,24 @@
КонецЕсли;
Заголовок = НСтр("ru = 'Отправка SMS на телефон'") + " " + НомераПолучателей;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Элементы.Переместить(Элементы.НастройкаОтправкиSMSОткрыть, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.Отправить, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.Закрыть, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.Справка, Элементы.ФормаКоманднаяПанель);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НастройкаОтправкиSMSОткрыть", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Справка", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Отправить", "ТолькоВоВсехДействиях", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Отправить", "Заголовок", НСтр("ru ='Отправить'"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Закрыть", "ТолькоВоВсехДействиях", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаКоманднаяПанель", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -66,6 +66,12 @@
Элементы.ГруппаТипПодключения.ТекущаяСтраница = ?(ТипПодключения = "COM", Элементы.ГруппаCOM, Элементы.ГруппаRAS);
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -86,6 +86,14 @@
ТолькоПросмотр = Истина;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВариантыИспользованияПроксиСервера", "ВидПереключателя", ВидПереключателя.Переключатель);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КнопкаОтмена", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -20,6 +20,12 @@
ЗаполнитьТаблицуПолучателейИзМассиваСтруктур(СписокПолучателей);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -26,6 +26,15 @@
Элементы.Минимум.ФорматРедактирования = ФорматЧисел;
Элементы.Максимум.ФорматРедактирования = ФорматЧисел;
Элементы.Среднее.ФорматРедактирования = "ЧДЦ=" + Строка(РазрядностьСреднего) + "; ЧН=0";
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Закрыть", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Справка", "ТольковоВсехДействиях", Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -472,6 +472,44 @@
<items xsi:type="form:FormGroup">
<name>ПередДобавлениемРасширений</name>
<id>17</id>
<items xsi:type="form:Decoration">
<name>Надпись4МобильныйКлиент</name>
<id>211</id>
<title>
<key>ru</key>
<value>При подключении расширения конфигурации рекомендуется обращать внимание на источник, из которого был получен файл расширения.
Если вы не уверены в содержимом расширения или в его источнике, то расширение не рекомендуется подключать к программе.
См. также: &lt;link http://1c.ru/news/info.jsp?id=21537>Пример проблемы с вирусом во внешней обработке&lt;/>.
</value>
</title>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Надпись4МобильныйКлиентРасширеннаяПодсказка</name>
<id>213</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>Надпись4МобильныйКлиентКонтекстноеМеню</name>
<id>212</id>
<autoFill>true</autoFill>
</contextMenu>
<formatted>true</formatted>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>Надпись4</name>
<id>26</id>
@@ -59,6 +59,26 @@
Элементы.ПредупрежденииПередУдалениемРасширенияТекстУдалить.Заголовок = НСтр("ru = 'Удалить расширение?'");
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Для каждого ЭлементФормы Из Элементы Цикл
Если ТипЗнч(ЭлементФормы) <> Тип("КнопкаФормы")
ИЛИ СтрНайти(ЭлементФормы.Имя, "Отмена") = 0 Тогда
Продолжить;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, ЭлементФормы.Имя, "Видимость", Ложь);
КонецЦикла;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Надпись4", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Надпись4МобильныйКлиент", "Видимость", Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -52,6 +52,19 @@
ОбновитьСписок();
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Элементы.Переместить(Элементы.СписокРасширенийДобавить, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СписокРасширенийУдалить, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.КнопкиСписка, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.ФормаУстановленныеПатчи, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.ФормаОбновитьКэшиРасширений, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.ФормаУдалитьУстаревшиеКэшиРасширений, Элементы.ФормаКоманднаяПанель);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КомандыФормы", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -37,6 +37,13 @@
Ссылка = Параметры.ЗначениеРеквизита;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаКнопкаОтмена", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -351,6 +351,9 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ОбновитьФайлИзФайлаНаДиске</picture>
</picture>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
@@ -30,6 +30,12 @@
// Заполнение таблицы значений свойств.
ЗаполнитьТаблицуЗначенийСвойств(Истина);
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаЗаписатьИЗакрыть", "Картинка", БиблиотекаКартинок.ЗаписатьИЗакрыть);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -776,7 +776,7 @@
<name>СписокПриложенийГруппаВыполненияОбменаДанными</name>
<id>390</id>
<items xsi:type="form:Button">
<name>ВыполнитьСинхронизацию</name>
<name>СписокПриложенийВыполнитьСинхронизацию</name>
<id>52</id>
<visible>true</visible>
<enabled>true</enabled>
@@ -785,7 +785,7 @@
</userVisible>
<skipOnInput>false</skipOnInput>
<extendedTooltip>
<name>ВыполнитьСинхронизациюРасширеннаяПодсказка</name>
<name>СписокПриложенийВыполнитьСинхронизациюРасширеннаяПодсказка</name>
<id>467</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -803,6 +803,32 @@
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:Button">
<name>СписокПриложенийВыполнитьСинхронизациюСДополнительнымиОтборами</name>
<id>713</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокПриложенийВыполнитьСинхронизациюСДополнительнымиОтборамиРасширеннаяПодсказка</name>
<id>714</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ВыполнитьСинхронизациюСДополнительнымиОтборами</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -2588,10 +2614,10 @@
</edit>
</columns>
<columns>
<name>ИнтерактивнаяОтправка</name>
<name>ДоступнаИнтерактивнаяОтправка</name>
<title>
<key>ru</key>
<value>Интерактивная отправка</value>
<value>Доступна интерактивная отправка</value>
</title>
<id>16</id>
<valueType>
@@ -3275,7 +3301,7 @@
<name>ВыполнитьСинхронизацию</name>
<title>
<key>ru</key>
<value>Запустить синхронизацию</value>
<value>Синхронизировать</value>
</title>
<id>3</id>
<toolTip>
@@ -3591,6 +3617,32 @@
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ВыполнитьСинхронизациюСДополнительнымиОтборами</name>
<title>
<key>ru</key>
<value>Синхронизировать с дополнительными параметрами</value>
</title>
<id>11</id>
<toolTip>
<key>ru</key>
<value>Синхронизировать данные, задав дополнительные отборы</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.СинхронизацияДанныхИнтерактивноеВыполнение</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВыполнитьСинхронизациюСДополнительнымиОтборами</name>
</handler>
</action>
<representation>Picture</representation>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -21,6 +21,21 @@
УстановитьОтображениеЭлементовФормы();
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Элементы.Переместить(Элементы.СписокПриложенийГруппаУправление, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СписокПриложенийГруппаИзменениеИСостав, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СписокПриложенийГруппаВыполненияОбменаДанными, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СписокПриложенийГруппаРасписаниеВыполненияОбмена, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СписокПриложенийГруппаСобытия, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СписокПриложенийГруппаТиповые, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СписокПриложенийОбновитьМонитор, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.ФормаСправка, Элементы.ФормаКоманднаяПанель);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоманднаяПанель", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -67,12 +82,8 @@
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВыполнитьСинхронизацию(Команда)
Процедура СписокПриложенийПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
@@ -80,43 +91,29 @@
Возврат;
КонецЕсли;
Если Не НастройкаСинхронизацииЗавершена(ТекущиеДанные.УзелИнформационнойБазы) Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущиеДанные", ТекущиеДанные);
Элементы.СписокПриложенийНачальнаяВыгрузкаДанных.Доступность =
ТекущиеДанные.ДоступнаИнтерактивнаяОтправка И Не ТекущиеДанные.ЗапускОбменаИзКорреспондента;
ОповещениеЗавершения = Новый ОписаниеОповещения("ВопросПродолжитьНастройкуСинхронизацииЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОповещениеЗавершения,
НСтр("ru = 'Перед запуском синхронизации данных необходимо завершить ее настройку.
|Открыть форму помощника настройки?'"),
РежимДиалогаВопрос.ДаНет);
ИначеЕсли ТекущиеДанные.ЗапускОбменаИзКорреспондента
И Не ТекущиеДанные.ПолученоСообщениеДляСопоставленияДанных Тогда
ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Запуск синхронизации с ""%1"" из этой программы не поддерживается.
|Перейдите в ""%1"" и запустите синхронизацию из нее.'"), ТекущиеДанные.НаименованиеКорреспондента));
Иначе
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("УзелОбмена", ТекущиеДанные.УзелИнформационнойБазы);
ДополнительныеПараметры.Вставить("ИмяПланаОбмена", ТекущиеДанные.ИмяПланаОбмена);
ДополнительныеПараметры.Вставить("ОтправитьДанные", Не ТекущиеДанные.ЗапускОбменаИзКорреспондента);
ДополнительныеПараметры.Вставить("ИнтерактивнаяОтправка", ТекущиеДанные.ИнтерактивнаяОтправка);
ДополнительныеПараметры.Вставить("АвтоматическаяСинхронизация", ТекущиеДанные.ВариантОбменаДанными = "Синхронизация");
ДополнительныеПараметры.Вставить("НастройкаРасписания", Ложь);
Если МодельСервиса Тогда
ДополнительныеПараметры.Вставить("ОбластьДанныхКорреспондента", ТекущиеДанные.ОбластьДанных);
КонецЕсли;
ОписаниеПродолжения = Новый ОписаниеОповещения("ПродолжитьВыполнениеСинхронизации", ЭтотОбъект, ДополнительныеПараметры);
Если ТекущиеДанные.ЭтоОбменСПриложениемВСервисе Тогда
ВыполнитьОбработкуОповещения(ОписаниеПродолжения);
Иначе
ПроверитьСовместимостьПравилКонвертации(ОписаниеПродолжения);
КонецЕсли;
КонецЕсли;
Элементы.СписокПриложенийВыполнитьСинхронизациюСДополнительнымиОтборами.Доступность =
ТекущиеДанные.ДоступнаИнтерактивнаяОтправка;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВыполнитьСинхронизацию(Команда)
ОбработкаКомандыВыполненияСинхронизации();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьСинхронизациюСДополнительнымиОтборами(Команда)
ОбработкаКомандыВыполненияСинхронизации(Истина);
КонецПроцедуры
@@ -291,7 +288,7 @@
НСтр("ru = 'Перед выгрузкой данных для сопоставления необходимо завершить настройку синхронизации.
|Открыть форму помощника настройки?'"),
РежимДиалогаВопрос.ДаНет);
ИначеЕсли Не ТекущиеДанные.ИнтерактивнаяОтправка Тогда
ИначеЕсли Не ТекущиеДанные.ДоступнаИнтерактивнаяОтправка Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для выбранного варианта настройки синхронизации выгрузка данных для сопоставления не поддерживается.'"));
Возврат;
Иначе
@@ -301,7 +298,7 @@
ПараметрыПомощника.Вставить("ОбластьДанныхКорреспондента", ТекущиеДанные.ОбластьДанных);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("НачальнаяВыгрузкаДанныхЗавершение", ЭтотОбъект);
ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.ВыгрузкаДанныхДляСопоставления",
ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма.ВыгрузкаДанныхДляСопоставления",
ПараметрыПомощника, ЭтотОбъект, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
@@ -450,6 +447,54 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаКомандыВыполненияСинхронизации(ИспользоватьДопОтборы = Ложь)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не НастройкаСинхронизацииЗавершена(ТекущиеДанные.УзелИнформационнойБазы) Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущиеДанные", ТекущиеДанные);
ОповещениеЗавершения = Новый ОписаниеОповещения("ВопросПродолжитьНастройкуСинхронизацииЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОповещениеЗавершения,
НСтр("ru = 'Перед запуском синхронизации данных необходимо завершить ее настройку.
|Открыть форму помощника настройки?'"),
РежимДиалогаВопрос.ДаНет);
ИначеЕсли ТекущиеДанные.ЗапускОбменаИзКорреспондента
И Не ТекущиеДанные.ПолученоСообщениеДляСопоставленияДанных Тогда
ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Запуск синхронизации с ""%1"" из этой программы не поддерживается.
|Перейдите в ""%1"" и запустите синхронизацию из нее.'"), ТекущиеДанные.НаименованиеКорреспондента));
Иначе
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("УзелОбмена", ТекущиеДанные.УзелИнформационнойБазы);
ДополнительныеПараметры.Вставить("ИмяПланаОбмена", ТекущиеДанные.ИмяПланаОбмена);
ДополнительныеПараметры.Вставить("ЭтоОбменСПриложениемВСервисе", ТекущиеДанные.ЭтоОбменСПриложениемВСервисе);
ДополнительныеПараметры.Вставить("ОбластьДанныхКорреспондента", ТекущиеДанные.ОбластьДанных);
ДополнительныеПараметры.Вставить("ИспользоватьДопОтборы", ИспользоватьДопОтборы);
ДополнительныеПараметры.Вставить("ДоступнаИнтерактивнаяОтправка", ТекущиеДанные.ДоступнаИнтерактивнаяОтправка);
ДополнительныеПараметры.Вставить("ВариантОбменаДанными", ТекущиеДанные.ВариантОбменаДанными);
ДополнительныеПараметры.Вставить("ПолученоСообщениеДляСопоставленияДанных", ТекущиеДанные.ПолученоСообщениеДляСопоставленияДанных);
ДополнительныеПараметры.Вставить("ЗапускОбменаИзКорреспондента", ТекущиеДанные.ЗапускОбменаИзКорреспондента);
ОписаниеПродолжения = Новый ОписаниеОповещения("ПродолжитьВыполнениеСинхронизации", ЭтотОбъект, ДополнительныеПараметры);
Если ТекущиеДанные.ЭтоОбменСПриложениемВСервисе Тогда
ВыполнитьОбработкуОповещения(ОписаниеПродолжения);
Иначе
ПроверитьСовместимостьПравилКонвертации(ОписаниеПродолжения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВозможностьНастройкиСинхронизацииДанных(Отказ = Ложь)
@@ -682,7 +727,7 @@
Если СтрокаПриложение.ЭтоОбменСПриложениемВСервисе Тогда
СтрокаПриложение.РежимРаботыПриложения = 1;
СтрокаПриложение.ИнтерактивнаяОтправка = Истина;
СтрокаПриложение.ДоступнаИнтерактивнаяОтправка = Истина;
Иначе
@@ -696,12 +741,15 @@
СтрокаПриложение.ЗапускОбменаИзКорреспондента = Истина;
КонецЕсли;
СтрокаПриложение.ИнтерактивнаяОтправка =
СтрокаПриложение.ДоступнаИнтерактивнаяОтправка =
Не ОбменДаннымиПовтИсп.ЭтоПланОбменаРаспределеннойИнформационнойБазы(СтрокаПриложение.ИмяПланаОбмена)
И Не ОбменДаннымиПовтИсп.ЭтоУзелСтандартногоОбменаДанными(СтрокаПриложение.ИмяПланаОбмена);
КонецЕсли;
СтрокаПриложение.ДоступнаИнтерактивнаяОтправка = СтрокаПриложение.ДоступнаИнтерактивнаяОтправка
И Не (СтрокаПриложение.ВариантОбменаДанными = "ТолькоПолучение");
ИдентификаторНастройки = ОбменДаннымиСервер.СохраненныйВариантНастройкиУзлаПланаОбмена(
СтрокаПриложение.УзелИнформационнойБазы);
@@ -841,7 +889,8 @@
Элементы.ИнформационнаяПанельТребуетсяОбновление.Видимость = ТребуетсяОбновление;
Элементы.ВыполнитьСинхронизацию.Видимость = ЕстьНастроенныеОбмены;
Элементы.СписокПриложенийГруппаВыполненияОбменаДанными.Видимость = ЕстьНастроенныеОбмены;
Элементы.СписокПриложенийИнформацияПоОбмену.Видимость = ЕстьНастроенныеОбмены;
Элементы.ОткрытьРезультатыСинхронизацииДанных.Доступность = ЕстьНастроенныеОбмены;
@@ -953,18 +1002,63 @@
КонецФункции
&НаКлиенте
Процедура ОткрытьПомощникИнтерактивнойСинхронизации(ДополнительныеПараметры)
ПараметрыПомощника = Новый Структура;
ПараметрыПомощника.Вставить("ЭтоОбменСПриложениемВСервисе", ДополнительныеПараметры.ЭтоОбменСПриложениемВСервисе);
ПараметрыПомощника.Вставить("ОбластьДанныхКорреспондента", ДополнительныеПараметры.ОбластьДанныхКорреспондента);
ПараметрыПомощника.Вставить("ОтправитьДанные",
Не ДополнительныеПараметры.ВариантОбменаДанными = "ТолькоПолучение");
ПараметрыПомощника.Вставить("РежимДополненияВыгрузки",
ДополнительныеПараметры.ИспользоватьДопОтборы Или ДополнительныеПараметры.ВариантОбменаДанными = "ПолучениеИОтправка");
ПараметрыПомощника.Вставить("НастройкаРасписания", Ложь);
ВспомогательныеПараметры = Новый Структура;
ВспомогательныеПараметры.Вставить("ПараметрыПомощника", ПараметрыПомощника);
ОбменДаннымиКлиент.ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(ДополнительныеПараметры.УзелОбмена,
ЭтотОбъект, ВспомогательныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПомощникАвтоматическойСинхронизации(ДополнительныеПараметры)
ПараметрыПомощника = Новый Структура;
ПараметрыПомощника.Вставить("ЭтоОбменСПриложениемВСервисе", ДополнительныеПараметры.ЭтоОбменСПриложениемВСервисе);
ПараметрыПомощника.Вставить("ОбластьДанныхКорреспондента", ДополнительныеПараметры.ОбластьДанныхКорреспондента);
ВспомогательныеПараметры = Новый Структура;
ВспомогательныеПараметры.Вставить("ПараметрыПомощника", ПараметрыПомощника);
ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(ДополнительныеПараметры.УзелОбмена,
ЭтотОбъект, , Истина, ВспомогательныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьВыполнениеСинхронизации(Результат, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры.ИнтерактивнаяОтправка Тогда
Если ДополнительныеПараметры.ПолученоСообщениеДляСопоставленияДанных Тогда
ОбменДаннымиКлиент.ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(ДополнительныеПараметры.УзелОбмена,
ЭтотОбъект, ДополнительныеПараметры);
ОткрытьПомощникИнтерактивнойСинхронизации(ДополнительныеПараметры);
Иначе
ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(ДополнительныеПараметры.УзелОбмена,
ЭтотОбъект, , ДополнительныеПараметры.АвтоматическаяСинхронизация);
Если Не ДополнительныеПараметры.ДоступнаИнтерактивнаяОтправка
Или (ДополнительныеПараметры.ВариантОбменаДанными = "Синхронизация"
И Не ДополнительныеПараметры.ИспользоватьДопОтборы) Тогда
ОткрытьПомощникАвтоматическойСинхронизации(ДополнительныеПараметры);
Иначе
ОткрытьПомощникИнтерактивнойСинхронизации(ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
@@ -1074,19 +1168,4 @@
КонецФункции
&НаКлиенте
Процедура СписокПриложенийПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Элементы.СписокПриложенийНачальнаяВыгрузкаДанных.Доступность = ТекущиеДанные.ИнтерактивнаяОтправка
И Не ТекущиеДанные.ЗапускОбменаИзКорреспондента
И Не ТекущиеДанные.ПолученоСообщениеДляСопоставленияДанных;
КонецПроцедуры
#КонецОбласти
@@ -22,11 +22,18 @@
КонецЕсли;
Если Параметры.Свойство("ИзмененоПредставление") Тогда
ИзмененоПредставление = Параметры.ИзмененоПредставление;
ИзмененоПредставление = Параметры.ИзмененоПредставление;
КонецЕсли;
ОбновитьГруппуИнформационнаяНадписьСервисСклонения();
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаКомандаОтмена", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -79,6 +79,14 @@
Элементы.НовыйПароль.Подсказка = ПользователиСлужебный.ПодсказкаДляНовогоПароля();
Элементы.НовыйПароль2.Подсказка = ПользователиСлужебный.ПодсказкаДляНовогоПароля();
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СоздатьПароль", "Заголовок", НСтр("ru ='Создать'"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаЗакрытьФорму", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаКоманднаяПанель", "ГоризонтальноеПоложение", ГоризонтальноеПоложениеЭлемента.Центр);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -39,6 +39,13 @@
КонецЕсли;
Элементы.ВыбранныйОбъект.ТолькоПросмотр = Элементы.ВыбранныйОбъект.СписокВыбора.Количество() = 1;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КнопкаСохранить", "Картинка", БиблиотекаКартинок.СохранитьФайл);
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -9,8 +9,8 @@
КонецЕсли;
ТабличныеДокументыДляСравнения = ПолучитьИзВременногоХранилища(Параметры.АдресТабличныхДокументов);
ПрочитатьТабличныйДокументИзХранилища(ТабличныеДокументыДляСравнения.Левый, ТабличныйДокументЛевый);
ПрочитатьТабличныйДокументИзХранилища(ТабличныеДокументыДляСравнения.Правый, ТабличныйДокументПравый);
ТабличныйДокументЛевый = ПодготовитьТабличныйДокумент(ТабличныеДокументыДляСравнения.Левый);
ТабличныйДокументПравый = ПодготовитьТабличныйДокумент(ТабличныеДокументыДляСравнения.Правый);
Элементы.ГруппаЛевыйТабличныйДокумент.Заголовок = Параметры.ЗаголовокЛевый;
Элементы.ГруппаПравыйТабличныйДокумент.Заголовок = Параметры.ЗаголовокПравый;
@@ -580,12 +580,23 @@
КонецПроцедуры
&НаСервере
Процедура ПрочитатьТабличныйДокументИзХранилища(ДокументВХранилище, Документ)
ВременныйФайл = ПолучитьИмяВременногоФайла("mxl");
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДокументВХранилище);
ДвоичныеДанные.Записать(ВременныйФайл);
Документ.Прочитать(ВременныйФайл);
УдалитьФайлы(ВременныйФайл);
КонецПроцедуры
Функция ПодготовитьТабличныйДокумент(ТабличныйДокумент)
Если ТипЗнч(ТабличныйДокумент) = Тип("ТабличныйДокумент") Тогда
Возврат ТабличныйДокумент;
КонецЕсли;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ТабличныйДокумент);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("mxl");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
Результат = Новый ТабличныйДокумент;
Результат.Прочитать(ИмяВременногоФайла);
УдалитьФайлы(ИмяВременногоФайла);
Возврат Результат;
КонецФункции
#КонецОбласти
@@ -18,6 +18,12 @@
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Установка ведущей конечной точки для ""%1""'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КонечнаяТочка, "Наименование"));
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -115,30 +115,6 @@
Возврат "Россия";
КонецФункции
Функция ПреобразоватьТипАдресаВебСервиса(ТипАдреса) Экспорт
Если СтрСравнить(ТипАдреса, "MUNICIPAL") = 0 Тогда
Возврат МуниципальныйАдрес();
ИначеЕсли СтрСравнить(ТипАдреса, "TERRITORIAL") = 0 Тогда
Возврат АдминистративноТерриториальныйАдрес();
КонецЕсли;
Возврат ТипАдреса;
КонецФункции
Функция ТипАдресаДляВебСервиса(ТипАдреса) Экспорт
Если СтрСравнить(ТипАдреса, МуниципальныйАдрес()) = 0 Тогда
Возврат "MUNICIPAL";
ИначеЕсли СтрСравнить(ТипАдреса, АдминистративноТерриториальныйАдрес()) = 0 Тогда
Возврат "TERRITORIAL"
КонецЕсли;
Возврат ТипАдреса;
КонецФункции
Функция ПрефиксВерсииЗапроса() Экспорт
Возврат "rest/v1/";
КонецФункции
@@ -211,7 +211,6 @@
УстановитьИдентификаторыАдресаПоЗагруженнымДанным(Адрес);
Иначе
УстановитьИдентификаторыАдресаЧерезВебСервис(Адрес);
Адрес.addressType = АдресныйКлассификаторКлиентСервер.ПреобразоватьТипАдресаВебСервиса(Адрес.addressType);
КонецЕсли;
КонецЕсли;
@@ -826,7 +825,12 @@
ОписаниеДома.Дом = СведенияОДоме.number;
ОписаниеДома.НазваниеВладения = СведенияОДоме.type;
ОписаниеДома.Индекс = Формат(СведенияОДоме.ZipCode, "ЧГ=0");
ОписаниеДома.ОКТМО = Формат(СведенияОДоме.oktmo, "ЧГ=0");
ОписаниеДома.ОКТМО = Формат(СведенияОДоме.oktmo, "ЧГ=0");
ОписаниеДома.ОКАТО = Формат(СведенияОДоме.okato, "ЧГ=0");
ОписаниеДома.КодИФНСФЛ = Формат(СведенияОДоме.ifnsFlCode, "ЧГ=0");
ОписаниеДома.КодИФНСЮЛ = Формат(СведенияОДоме.ifnsUlCode, "ЧГ=0");
ОписаниеДома.КодУчасткаИФНСФЛ = Формат(СведенияОДоме.ifnsFlAreaCode, "ЧГ=0");
ОписаниеДома.КодУчасткаИФНСЮЛ = Формат(СведенияОДоме.ifnsUlAreaCode, "ЧГ=0");
ДобавитьИнформациюОДоме(ВариантыДомов, ОписаниеДома, НаименованиеЗданийИСтроений, СтрокаПоиска);
КонецЦикла;
@@ -3090,17 +3094,14 @@
ПрефиксВерсииЗапроса = АдресныйКлассификаторКлиентСервер.ПрефиксВерсииЗапроса();
HTTPЗапрос = Новый HTTPЗапрос(ПрефиксВерсииЗапроса + "verify");
ДанныеЗапроса = Новый Массив();
ДанныеЗапроса.Добавить(АдресаДляПроверки.Адрес);
ДанныеЗапроса.Добавить(АдресДляПередачиВСервис(АдресаДляПроверки.Адрес));
АдресаДляПроверки.Адрес.addressType = АдресныйКлассификаторКлиентСервер.ТипАдресаДляВебСервиса(АдресаДляПроверки.Адрес.addressType);
ПодготовитьАдресаДляПередачиВСервис(ДанныеЗапроса);
ДанныеДляЗапроса = Новый Структура("requests", ДанныеЗапроса);
Адрес = СтруктураВСтрокуJSON(ДанныеДляЗапроса);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.УстановитьТелоИзСтроки(Адрес);
HTTPЗапрос.УстановитьТелоИзСтроки(СтруктураВСтрокуJSON(ДанныеДляЗапроса));
Попытка
РезультатПроверки = Сервис.ОтправитьДляОбработки(HTTPЗапрос);
@@ -3161,23 +3162,128 @@
КонецПроцедуры
Функция ПодготовитьАдресаДляПередачиВСервис(Адреса)
#Область КонвертацияАдресаБазыВАдресВебСервиса
Функция АдресДляПередачиВСервис(Адрес)
МуниципальныеУровни = Новый Соответствие;
МуниципальныеУровни.Вставить("MunDistrictID", Истина);
МуниципальныеУровни.Вставить("SettlementID", Истина);
Результат = НовыйАдресДляДляПередачиВСервис();
Для каждого Адрес Из Адреса Цикл
Для каждого КлючЗначение Из Адрес Цикл
Если ПустаяСтрока(КлючЗначение.Значение) Или МуниципальныеУровни.Получить(КлючЗначение.Ключ) = Истина Тогда
Адрес[КлючЗначение.Ключ] = Неопределено;
КонецЕсли;
КонецЦикла;
Адрес.Вставить("house", Адрес.HouseNumber);
ЗаполнитьЗначенияСвойств(Результат, Адрес,, "apartments, buildings");
Результат.Вставить("ifnsFlAreaCode", Адрес.ifnsFLAreaCode);
Результат.Вставить("ifnsFlCode", Адрес.ifnsFLCode);
Результат.Вставить("ifnsUlAreaCode", Адрес.ifnsULAreaCode);
Результат.Вставить("ifnsUlCode", Адрес.ifnsULCode);
Результат.Вставить("apartments", Новый Массив);
Для Каждого Дом Из Адрес.apartments Цикл
ВебДом = НовыйДомДляДляПередачиВСервис();
ВебДом.type = Дом.Type;
ВебДом.number = Дом.Number;
Результат.apartments.Добавить(ВебДом);
КонецЦикла;
Результат.Вставить("buildings", Новый Массив);
Для Каждого Дом Из Адрес.buildings Цикл
ВебДом = НовыйДомДляДляПередачиВСервис();
ВебДом.type = Дом.Type;
ВебДом.number = Дом.Number;
Результат.buildings.Добавить(ВебДом);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция НовыйАдресДляДляПередачиВСервис()
Адрес = Новый Структура;
Адрес.Вставить("ZIPcode"); // postalCode -> ZIPCode
Адрес.Вставить("apartments"); // Массив из (См. ДомДляДляПередачиВСервис())
Адрес.Вставить("area");
Адрес.Вставить("areaCode");
Адрес.Вставить("areaId");
Адрес.Вставить("areaType");
Адрес.Вставить("buildings"); // Массив из (См. ДомДляДляПередачиВСервис())
Адрес.Вставить("city");
Адрес.Вставить("cityDistrict");
Адрес.Вставить("cityDistrictId");
Адрес.Вставить("cityDistrictType");
Адрес.Вставить("cityId");
Адрес.Вставить("cityType");
Адрес.Вставить("codeKLADR"); // code -> codeKLADR
Адрес.Вставить("district");
Адрес.Вставить("districtId");
Адрес.Вставить("districtType");
Адрес.Вставить("houseId");
Адрес.Вставить("houseType");
Адрес.Вставить("houseNumber"); // house -> houseNumber
Адрес.Вставить("id");
Адрес.Вставить("ifnsFlAreaCode");
Адрес.Вставить("ifnsFlCode");
Адрес.Вставить("ifnsUlAreaCode");
Адрес.Вставить("ifnsUlCode");
Адрес.Вставить("locality");
Адрес.Вставить("localityId");
Адрес.Вставить("localityType");
Адрес.Вставить("munDistrict");
Адрес.Вставить("munDistrictId");
Адрес.Вставить("munDistrictType");
Адрес.Вставить("okato");
Адрес.Вставить("oktmo");
Адрес.Вставить("settlement");
Адрес.Вставить("settlementId");
Адрес.Вставить("settlementType");
Адрес.Вставить("street");
Адрес.Вставить("streetId");
Адрес.Вставить("streetType");
Адрес.Вставить("territory");
Адрес.Вставить("territoryId");
Адрес.Вставить("territoryType");
Адрес.Вставить("value");
Возврат Адрес;
КонецФункции
Функция НовыйДомДляДляПередачиВСервис()
Дом = Новый Структура;
Дом.Вставить("type");
Дом.Вставить("number");
Возврат Дом;
КонецФункции
#КонецОбласти
#Область КонвертацияАдресВебСервисаВАдресБазы
Функция АдресДляСохраненияВБазе(Адрес, Муниципальный = Истина)
Результат = ОписаниеАдреса();
ЗаполнитьЗначенияСвойств(Результат, Адрес);
Для Каждого ПолеАдреса Из Результат Цикл
Если ПолеАдреса.Значение = Неопределено Тогда
Результат[ПолеАдреса.Ключ] = "";
КонецЕсли;
КонецЦикла;
Если Муниципальный Тогда
Результат.addressType = АдресныйКлассификаторКлиентСервер.МуниципальныйАдрес();
Иначе
Результат.addressType = АдресныйКлассификаторКлиентСервер.АдминистративноТерриториальныйАдрес();
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
// Заполнение адреса по данным сервиса 1С.
//
Процедура ЗаполнитьАдресаПоПочтовомуИндексуКлассификатораСервис1С(Результат, Индекс)
@@ -3251,14 +3357,33 @@
Возврат;
КонецЕсли;
ДанныеJSON = СтруктураВСтрокуJSON(Данные);
ПредставлениеТерриториальное = Данные.valueReversed;
ПредставлениеМуниципальное = Данные.munValueReversed;
ДобавитьВариантАдреса(ВариантыАдреса, КешПредставлений, ПредставлениеМуниципальное, Данные.id, Истина, Ложь, ДанныеJSON);
Если ПредставлениеТерриториальное <> ПредставлениеМуниципальное Тогда
ДобавитьВариантАдреса(ВариантыАдреса, КешПредставлений, ПредставлениеТерриториальное, Данные.id, Ложь, Ложь, ДанныеJSON);
ДанныеМуниципальный = АдресДляСохраненияВБазе(Данные);
ДобавитьВариантАдреса(
ВариантыАдреса,
КешПредставлений,
ПредставлениеМуниципальное,
Данные.id,
Истина, // Муниципальный
Ложь, // ЗагруженныеДанные
СтруктураВСтрокуJSON(ДанныеМуниципальный));
Если ПредставлениеТерриториальное <> ПредставлениеМуниципальное Тогда
ДанныеТерриториальный = АдресДляСохраненияВБазе(Данные, Ложь);
ДобавитьВариантАдреса(
ВариантыАдреса,
КешПредставлений,
ПредставлениеТерриториальное,
Данные.id,
Ложь, // Муниципальный
Ложь, // ЗагруженныеДанные
СтруктураВСтрокуJSON(ДанныеТерриториальный));
КонецЕсли;
КонецЦикла;
@@ -3301,38 +3426,9 @@
КонецЕсли;
Если РезультатВебСервис.Данные.Количество() > 0 Тогда
Если РезультатВебСервис.Данные.Количество() > 1 Тогда
ИскомыйТипаАдреса = ?(ЭтоМуниципальныйАдрес, "MUNICIPAL", "TERRITORIAL");
Для каждого Адрес Из РезультатВебСервис.Данные Цикл
Если СтрСравнить(Адрес.addressType, ИскомыйТипаАдреса) = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
Адрес = РезультатВебСервис.Данные[0];
КонецЕсли;
Если СтрСравнить(Адрес.addressType, "TERRITORIAL") = 0 Тогда
Адрес.addressType = АдресныйКлассификаторКлиентСервер.АдминистративноТерриториальныйАдрес();
Иначе
Адрес.addressType = АдресныйКлассификаторКлиентСервер.МуниципальныйАдрес();
КонецЕсли;
ОписаниеАдреса = ОписаниеАдреса();
ЗаполнитьЗначенияСвойств(ОписаниеАдреса, Адрес);
Для каждого ПолеАдреса Из ОписаниеАдреса Цикл
Если ПолеАдреса.Значение = Неопределено Тогда
ОписаниеАдреса[ПолеАдреса.Ключ] = "";
КонецЕсли;
КонецЦикла;
Результат.Данные = ОписаниеАдреса;
Иначе
Результат.Данные = ОписаниеАдреса();
Результат.Данные = АдресДляСохраненияВБазе(РезультатВебСервис.Данные[0], ЭтоМуниципальныйАдрес);
КонецЕсли;
КонецПроцедуры
Функция АдресныеСведенияСервис1СПоКоду(Результат, Знач Идентификатор, Знач ИмяКода)
@@ -4348,8 +4444,8 @@
ДомЧислом = "10000";
КонецЕсли;
ОписаниеДома.Индекс = Формат(Запись.ПочтовыйИндекс, "ЧГ=0");
ОписаниеДома.ОКТМО = Формат(Запись.ОКТМО, "ЧГ=0");
ОписаниеДома.Индекс = Формат(Запись.ПочтовыйИндекс, "ЧГ=0");
ОписаниеДома.ОКТМО = Формат(Запись.ОКТМО, "ЧГ=0");
Если НомерДома.Количество() > 1 Тогда
ОписаниеДома.Корпус = НомерДома[1];
@@ -4384,20 +4480,45 @@
КонецПроцедуры
Функция ОписаниеДома()
ОписаниеДома = Новый Структура("ДомЧислом, Дом, Корпус, Строение, ВидСтроения, ВидВладения, НазваниеВладения, НазваниеСтроения, Идентификатор");
ОписаниеДома = Новый Структура;
ОписаниеДома.Вставить("ДомЧислом");
ОписаниеДома.Вставить("Дом");
ОписаниеДома.Вставить("Корпус");
ОписаниеДома.Вставить("Строение");
ОписаниеДома.Вставить("ВидСтроения", 0);
ОписаниеДома.Вставить("ВидВладения", 0);
ОписаниеДома.Вставить("НазваниеВладения");
ОписаниеДома.Вставить("НазваниеСтроения", "");
ОписаниеДома.Вставить("Идентификатор");
ОписаниеДома.Вставить("Индекс", "");
ОписаниеДома.Вставить("ОКТМО", "");
ОписаниеДома.ВидВладения = 0;
ОписаниеДома.ВидСтроения = 0;
ОписаниеДома.НазваниеСтроения = "";
ОписаниеДома.Вставить("ОКАТО", "");
ОписаниеДома.Вставить("КодИФНСФЛ", "");
ОписаниеДома.Вставить("КодИФНСЮЛ", "");
ОписаниеДома.Вставить("КодУчасткаИФНСФЛ", "");
ОписаниеДома.Вставить("КодУчасткаИФНСЮЛ", "");
Возврат ОписаниеДома;
КонецФункции
Процедура ДобавитьИнформациюОДоме(ВариантыДомов, ОписаниеДома, НаименованиеЗданийИСтроений, СтрокаПоиска = "")
НомерДомаИСтроения = Новый Структура("Идентификатор,Индекс,ОКТМО");
Владение = Новый Структура;
Владение.Вставить("ВидВладения", ОписаниеДома.НазваниеВладения);
Владение.Вставить("НомерВладения", ОписаниеДома.Дом);
НомерДомаИСтроения.Вставить("Дом", Новый Структура("ВидВладения, НомерВладения", ОписаниеДома.НазваниеВладения, ОписаниеДома.Дом));
НомерДомаИСтроения = Новый Структура;
НомерДомаИСтроения.Вставить("Идентификатор");
НомерДомаИСтроения.Вставить("Индекс");
НомерДомаИСтроения.Вставить("ОКТМО");
НомерДомаИСтроения.Вставить("ОКАТО");
НомерДомаИСтроения.Вставить("КодИФНСФЛ", "");
НомерДомаИСтроения.Вставить("КодИФНСЮЛ", "");
НомерДомаИСтроения.Вставить("КодУчасткаИФНСФЛ", "");
НомерДомаИСтроения.Вставить("КодУчасткаИФНСЮЛ", "");
НомерДомаИСтроения.Вставить("Дом", Владение);
Если ЗначениеЗаполнено(ОписаниеДома.Дом) Тогда
Если ПустаяСтрока(СтрокаПоиска) Или Не СтрНачинаетсяС(ОписаниеДома.Дом, СтрокаПоиска) Тогда
@@ -4416,12 +4537,16 @@
Если ПустаяСтрока(СтрокаПоиска) Или Не СтрНачинаетсяС(ОписаниеДома.Корпус, СтрокаПоиска) Тогда
ТекстПроСтроения = НСтр("ru = 'корпус'") + " " + ОписаниеДома.Корпус;
Иначе
ТекстПроСтроения = Новый ФорматированнаяСтрока(НСтр("ru = 'корпус'") + " ",
ТекстПроСтроения = Новый ФорматированнаяСтрока(НСтр("ru = 'корпус'") + " ",
Новый ФорматированнаяСтрока(СтрокаПоиска, Новый Шрифт(,, Истина) , ЦветаСтиля.РезультатУспехЦвет),
Сред(ОписаниеДома.Корпус, СтрДлина(СтрокаПоиска) + 1));
КонецЕсли;
НомерДомаИСтроения.Вставить("Корпус", Новый Структура("ВидКорпуса, НомерКорпуса", "Корпус", ОписаниеДома.Корпус));
Корпус = Новый Структура;
Корпус.Вставить("ВидКорпуса", "Корпус");
Корпус.Вставить("НомерКорпуса", ОписаниеДома.Корпус);
НомерДомаИСтроения.Вставить("Корпус", Корпус);
Иначе
ТекстПроСтроения = "";
КонецЕсли;
@@ -4432,7 +4557,12 @@
Разделитель = ?(ПустаяСтрока(ТекстПроСтроения), "", ", ");
ТекстПроСтроения = Новый ФорматированнаяСтрока(ТекстПроСтроения, Разделитель + НазваниеСтроения + " " + СокрЛП(ОписаниеДома.Строение));
НомерДомаИСтроения.Вставить("Строение", Новый Структура("ВидСтроения, НомерСтроения", НазваниеСтроения, ОписаниеДома.Строение));
Строение = Новый Структура;
Строение.Вставить("ВидСтроения", НазваниеСтроения);
Строение.Вставить("НомерСтроения", ОписаниеДома.Строение);
НомерДомаИСтроения.Вставить("Строение", Строение);
КонецЕсли;
Если ЗначениеЗаполнено(ТекстПроДом) Тогда
@@ -4442,11 +4572,11 @@
ТекстПроДомФормат = ТекстПроСтроения;
КонецЕсли;
ЗаполнитьЗначенияСвойств(НомерДомаИСтроения, ОписаниеДома,
"Идентификатор, Индекс, ОКТМО, ОКАТО, КодИФНСФЛ, КодИФНСЮЛ, КодУчасткаИФНСФЛ, КодУчасткаИФНСЮЛ");
ИнформацияОДоме = ВариантыДомов.Добавить();
ЗаполнитьЗначенияСвойств(ИнформацияОДоме, ОписаниеДома);
НомерДомаИСтроения.Идентификатор = ОписаниеДома.Идентификатор;
НомерДомаИСтроения.Индекс = ОписаниеДома.Индекс;
НомерДомаИСтроения.ОКТМО = ОписаниеДома.ОКТМО;
ИнформацияОДоме.Значение = НомерДомаИСтроения;
ИнформацияОДоме.Представление = ТекстПроДомФормат;
@@ -170,6 +170,8 @@
МодульУправлениеДоступомСлужебныйВМоделиСервиса.ПослеЗагрузкиДанных(Контейнер);
КонецЕсли;
ОбновлениеИнформационнойБазыСлужебный.ПослеЗагрузкиДанных(Контейнер);
КонецПроцедуры
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных.
@@ -44,6 +44,10 @@
КомпонентыОбмена.Вставить("ИспользоватьКвитирование", Истина);
КомпонентыОбмена.Вставить("ТолькоНастройкиXDTO", Ложь);
// Перечень поддерживаемых объектов формата для текущего сеанса обмена.
// Содержит набот совместно поддерживаемых объектов этой базы и базы корреспондента
// в контексте конкретного действия обмена (отправки/получения).
// Подробнее см. ОбменДаннымиXDTOСервер.ЗаполнитьПоддерживаемыеОбъектыXDTO
КомпонентыОбмена.Вставить("ПоддерживаемыеОбъектыXDTO", Новый Массив);
СостояниеОбменаДанными = Новый Структура;
@@ -63,6 +67,18 @@
КомпонентыОбмена.Вставить("ИспользоватьТранзакции", Истина);
// Структура настроек XDTO этой базы.
// Участвует в формировании списка поддерживаемых объектов (см. "ПоддерживаемыеОбъектыXDTO")
// При отправке по ней будет сформирована заголовочная часть сообщения обмена - в этом случае
// будет содержать перечень всех доступных объектов формата с детализацией по версиям.
КомпонентыОбмена.Вставить("НастройкиXDTO", Новый Структура);
КомпонентыОбмена.НастройкиXDTO.Вставить("Формат", "");
КомпонентыОбмена.НастройкиXDTO.Вставить("ПоддерживаемыеОбъекты", Новый ТаблицаЗначений);
КомпонентыОбмена.НастройкиXDTO.Вставить("ПоддерживаемыеВерсии", Новый Массив);
ИнициализироватьТаблицуПоддерживаемыхОбъектовФормата(
КомпонентыОбмена.НастройкиXDTO.ПоддерживаемыеОбъекты, "ОтправкаПолучение");
Если НаправлениеОбмена = "Отправка" Тогда
КомпонентыОбмена.Вставить("ВыгруженныеОбъекты", Новый Массив);
@@ -110,14 +126,15 @@
КомпонентыОбмена.Вставить("ОбъектыДляОтложеннойЗаписи", Новый Соответствие);
ТаблицаПоддерживаемыеОбъекты = Новый ТаблицаЗначений;
ИнициализироватьТаблицуПоддерживаемыхОбъектовФормата(ТаблицаПоддерживаемыеОбъекты, "ОтправкаПолучение");
// Структура настроек XDTO корреспондента, зачитываемая из сообщения обмена.
КомпонентыОбмена.Вставить("НастройкиXDTOКорреспондента", Новый Структура);
КомпонентыОбмена.НастройкиXDTOКорреспондента.Вставить("Формат", "");
КомпонентыОбмена.НастройкиXDTOКорреспондента.Вставить("ПоддерживаемыеОбъекты", ТаблицаПоддерживаемыеОбъекты);
КомпонентыОбмена.НастройкиXDTOКорреспондента.Вставить("ПоддерживаемыеОбъекты", Новый ТаблицаЗначений);
КомпонентыОбмена.НастройкиXDTOКорреспондента.Вставить("ПоддерживаемыеВерсии", Новый Массив);
ИнициализироватьТаблицуПоддерживаемыхОбъектовФормата(
КомпонентыОбмена.НастройкиXDTOКорреспондента.ПоддерживаемыеОбъекты, "ОтправкаПолучение");
КомпонентыОбмена.Вставить("ПрефиксКорреспондента");
КонецЕсли;
@@ -1388,7 +1405,7 @@
Header.Confirmation = Confirmation;
Для Каждого ВерсияФормата Из ВерсииФорматаОбменаМассив(ЗаписьСообщения.Получатель) Цикл
Для Каждого ВерсияФормата Из КомпонентыОбмена.НастройкиXDTO.ПоддерживаемыеВерсии Цикл
Header.AvailableVersion.Добавить(ВерсияФормата);
КонецЦикла;
@@ -1398,7 +1415,7 @@
Header.NewFrom = ОбменДаннымиСервер.ИдентификаторЭтогоУзлаДляОбмена(ЗаписьСообщения.Получатель);
КонецЕсли;
ВыгрузитьПоддерживаемыеОбъектыФормата(Header, ЗаписьСообщения.Получатель);
ВыгрузитьПоддерживаемыеОбъектыФормата(Header, КомпонентыОбмена);
Header.Prefix = ОбменДаннымиСервер.ПрефиксИнформационнойБазы();
@@ -2663,23 +2680,7 @@
ИнициализироватьТаблицыПравилОбмена(КомпонентыОбмена);
Для Каждого ПравилоКонвертации Из КомпонентыОбмена.ПравилаКонвертацииОбъектов Цикл
Отбор = Новый Структура;
Отбор.Вставить("Версия", Версия.Ключ);
Отбор.Вставить("Объект", ПравилоКонвертации.ТипXDTO.Имя);
СтрокиОбъекты = ТаблицаОбъекты.НайтиСтроки(Отбор);
Если СтрокиОбъекты.Количество() = 0 Тогда
СтрокаОбъекты = ТаблицаОбъекты.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОбъекты, Отбор);
Иначе
СтрокаОбъекты = СтрокиОбъекты[0];
КонецЕсли;
СтрокаОбъекты.Отправка = Истина;
КонецЦикла;
ЗаполнитьПоддерживаемыеОбъектыФорматаПоКомпонентамОбмена(ТаблицаОбъекты, КомпонентыОбмена);
КонецЕсли;
Если СтрНайти(Режим, "Получение") Тогда
@@ -2692,23 +2693,7 @@
ИнициализироватьТаблицыПравилОбмена(КомпонентыОбмена);
Для Каждого ПравилоОбработки Из КомпонентыОбмена.ПравилаОбработкиДанных Цикл
Отбор = Новый Структура;
Отбор.Вставить("Версия", Версия.Ключ);
Отбор.Вставить("Объект", ПравилоОбработки.ОбъектВыборкиФормат);
СтрокиОбъекты = ТаблицаОбъекты.НайтиСтроки(Отбор);
Если СтрокиОбъекты.Количество() = 0 Тогда
СтрокаОбъекты = ТаблицаОбъекты.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОбъекты, Отбор);
Иначе
СтрокаОбъекты = СтрокиОбъекты[0];
КонецЕсли;
СтрокаОбъекты.Получение = Истина;
КонецЦикла;
ЗаполнитьПоддерживаемыеОбъектыФорматаПоКомпонентамОбмена(ТаблицаОбъекты, КомпонентыОбмена);
КонецЕсли;
КонецЦикла;
@@ -3085,7 +3070,6 @@
// отправка которых поддерживается из этой базы
// и получение которых поддерживается в базе-корреспонденте.
ТаблицаОбъектыБазы = ПоддерживаемыеОбъектыФормата(ИмяПланаОбмена, "Отправка", КомпонентыОбмена.УзелКорреспондента);
ТаблицаОбъектыБазыКорреспондента = ПоддерживаемыеОбъектыФорматаКорреспондента(КомпонентыОбмена.УзелКорреспондента, "Получение");
ИначеЕсли КомпонентыОбмена.НаправлениеОбмена = "Получение" Тогда
@@ -3094,7 +3078,6 @@
// получение которых поддерживается в этой базе
// и отправка которых поддерживается в базе-корреспонденте.
ТаблицаОбъектыБазы = ПоддерживаемыеОбъектыФормата(ИмяПланаОбмена, "Получение", КомпонентыОбмена.УзелКорреспондента);
ТаблицаОбъектыБазыКорреспондента = ПоддерживаемыеОбъектыФорматаКорреспондента(КомпонентыОбмена.УзелКорреспондента, "Отправка");
Иначе
@@ -3103,9 +3086,13 @@
КонецЕсли;
ОтборПоВерсииИНаправлению = Новый Структура("Версия", КомпонентыОбмена.ВерсияФорматаОбмена);
ОтборПоВерсииИНаправлению.Вставить(КомпонентыОбмена.НаправлениеОбмена, Истина);
ТаблицаОбъектыБазыПоВерсии = КомпонентыОбмена.НастройкиXDTO.ПоддерживаемыеОбъекты.Скопировать(ОтборПоВерсииИНаправлению);
ОтборПоВерсии = Новый Структура("Версия", КомпонентыОбмена.ВерсияФорматаОбмена);
ТаблицаОбъектыБазыПоВерсии = ТаблицаОбъектыБазы.Скопировать(ОтборПоВерсии);
ТаблицаОбъектыБазыКорреспондентаПоВерсии = ТаблицаОбъектыБазыКорреспондента.Скопировать(ОтборПоВерсии);
Для Каждого СтрокаОбъектыБазыПоВерсии Из ТаблицаОбъектыБазыПоВерсии Цикл
@@ -3924,7 +3911,7 @@
КонецФункции
Процедура ВыгрузитьПоддерживаемыеОбъектыФормата(Header, УзелКорреспондента)
Процедура ВыгрузитьПоддерживаемыеОбъектыФормата(Header, КомпонентыОбмена)
СтрокаВсеВерсии = "";
Для Каждого AvailableVersion Из Header.AvailableVersion Цикл
@@ -3935,8 +3922,7 @@
КонецЕсли;
КонецЦикла;
ТаблицаПоддерживаемыеОбъекты = ПоддерживаемыеОбъектыФормата(
ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелКорреспондента));
ТаблицаПоддерживаемыеОбъекты = КомпонентыОбмена.НастройкиXDTO.ПоддерживаемыеОбъекты.Скопировать();
ТаблицаПоддерживаемыеОбъекты.Сортировать("Объект, Версия");
@@ -4005,7 +3991,8 @@
Header.AvailableObjectTypes = Неопределено;
КонецЕсли;
РегистрыСведений.НастройкиОбменаДаннымиXDTO.ОбновитьНастройки(УзелКорреспондента, "ПоддерживаемыеОбъекты", ТаблицаПоддерживаемыеОбъекты);
РегистрыСведений.НастройкиОбменаДаннымиXDTO.ОбновитьНастройки(
КомпонентыОбмена.УзелКорреспондента, "ПоддерживаемыеОбъекты", ТаблицаПоддерживаемыеОбъекты);
КонецПроцедуры
@@ -5290,6 +5277,35 @@
КонецПроцедуры
Процедура ЗаполнитьСтруктуруНастроекXDTO(КомпонентыОбмена) Экспорт
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(КомпонентыОбмена.УзелКорреспондента);
КомпонентыОбмена.НастройкиXDTO.Формат = ФорматОбмена(ИмяПланаОбмена, "");
Если КомпонентыОбмена.НаправлениеОбмена = "Отправка" Тогда
КомпонентыОбмена.НастройкиXDTO.ПоддерживаемыеОбъекты = ПоддерживаемыеОбъектыФормата(
ИмяПланаОбмена, "ОтправкаПолучение", КомпонентыОбмена.УзелКорреспондента);
Иначе
ТаблицаОбъекты = Новый ТаблицаЗначений;
ИнициализироватьТаблицуПоддерживаемыхОбъектовФормата(ТаблицаОбъекты, КомпонентыОбмена.НаправлениеОбмена);
ЗаполнитьПоддерживаемыеОбъектыФорматаПоКомпонентамОбмена(ТаблицаОбъекты, КомпонентыОбмена);
ЕстьАлгоритм = ОбменДаннымиСервер.ЕстьАлгоритмМенеджераПланаОбмена(
"ПриОпределенииПоддерживаемыхОбъектовФормата", ИмяПланаОбмена);
Если ЕстьАлгоритм Тогда
ПланыОбмена[ИмяПланаОбмена].ПриОпределенииПоддерживаемыхОбъектовФормата(
ТаблицаОбъекты, КомпонентыОбмена.НаправлениеОбмена, КомпонентыОбмена.УзелКорреспондента);
КонецЕсли;
КомпонентыОбмена.НастройкиXDTO.ПоддерживаемыеОбъекты = ТаблицаОбъекты;
КонецЕсли;
КомпонентыОбмена.НастройкиXDTO.ПоддерживаемыеВерсии = ВерсииФорматаОбменаМассив(КомпонентыОбмена.УзелКорреспондента);
КонецПроцедуры
Процедура ЗаполнитьСтруктуруНастроекXDTOКорреспондента(СтруктураНастроек,
Header, ФорматСодержитВерсию = Истина, УзелОбмена = Неопределено) Экспорт
@@ -6151,6 +6167,52 @@
КонецПроцедуры
Процедура ЗаполнитьПоддерживаемыеОбъектыФорматаПоКомпонентамОбмена(ТаблицаОбъекты, КомпонентыОбмена)
Если КомпонентыОбмена.НаправлениеОбмена = "Отправка" Тогда
Для Каждого ПравилоКонвертации Из КомпонентыОбмена.ПравилаКонвертацииОбъектов Цикл
Отбор = Новый Структура;
Отбор.Вставить("Версия", КомпонентыОбмена.ВерсияФорматаОбмена);
Отбор.Вставить("Объект", ПравилоКонвертации.ТипXDTO.Имя);
СтрокиОбъекты = ТаблицаОбъекты.НайтиСтроки(Отбор);
Если СтрокиОбъекты.Количество() = 0 Тогда
СтрокаОбъекты = ТаблицаОбъекты.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОбъекты, Отбор);
Иначе
СтрокаОбъекты = СтрокиОбъекты[0];
КонецЕсли;
СтрокаОбъекты.Отправка = Истина;
КонецЦикла;
ИначеЕсли КомпонентыОбмена.НаправлениеОбмена = "Получение" Тогда
Для Каждого ПравилоОбработки Из КомпонентыОбмена.ПравилаОбработкиДанных Цикл
Отбор = Новый Структура;
Отбор.Вставить("Версия", КомпонентыОбмена.ВерсияФорматаОбмена);
Отбор.Вставить("Объект", ПравилоОбработки.ОбъектВыборкиФормат);
СтрокиОбъекты = ТаблицаОбъекты.НайтиСтроки(Отбор);
Если СтрокиОбъекты.Количество() = 0 Тогда
СтрокаОбъекты = ТаблицаОбъекты.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОбъекты, Отбор);
Иначе
СтрокаОбъекты = СтрокиОбъекты[0];
КонецЕсли;
СтрокаОбъекты.Получение = Истина;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -646,12 +646,13 @@
// ПараметрыДиалога - Структура - Необязательные дополнительные параметры диалога выбора файла.
// ОповещениеЗавершения - ОписаниеОповещения - Необязательное оповещение, которое будет вызвано со следующими
// параметрами:
// Результат - Строка - Выбранное значение (массив строк, если был
// множественный выбор);
// Результат - Строка, Неопределено - Выбранное значение (массив строк, если был
// множественный выбор), или Неопределено - если ничего не выбрано;
// ДополнительныеПараметры - Неопределено.
//
//
Процедура ОбработчикВыбораФайла(Объект, Знач ИмяСвойства, СтандартнаяОбработка = Ложь, Знач ПараметрыДиалога = Неопределено, ОповещениеЗавершения = Неопределено) Экспорт
СтандартнаяОбработка = Ложь;
УмолчанияДиалога = Новый Структура;
@@ -665,37 +666,70 @@
ТекстПредупреждения = НСтр("ru = 'Для данной операции необходимо установить расширение для веб-клиента 1С:Предприятие.'");
Оповещение = Новый ОписаниеОповещения("ОбработчикВыбораФайлаЗавершение", ЭтотОбъект, Новый Структура);
Оповещение.ДополнительныеПараметры.Вставить("Объект", Объект);
Оповещение.ДополнительныеПараметры.Вставить("ИмяСвойства", ИмяСвойства);
Оповещение.ДополнительныеПараметры.Вставить("ПараметрыДиалога", ПараметрыДиалога);
Оповещение.ДополнительныеПараметры.Вставить("ОповещениеЗавершения", ОповещениеЗавершения);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяСвойства", ИмяСвойства);
ДополнительныеПараметры.Вставить("ПараметрыДиалога", ПараметрыДиалога);
ДополнительныеПараметры.Вставить("ОповещениеЗавершения", ОповещениеЗавершения);
Оповещение = Новый ОписаниеОповещения("ОбработчикВыбораФайлаПродолжение", ЭтотОбъект, ДополнительныеПараметры);
ОбщегоНазначенияКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Оповещение, ТекстПредупреждения, Ложь);
КонецПроцедуры
// Обработчик немодального завершения диалога выбора файла.
//
Процедура ОбработчикВыбораФайлаЗавершение(Знач Результат, Знач ДополнительныеПараметры) Экспорт
// Обработчик асинхронного диалога выбора файла (продолжение).
//
Процедура ОбработчикВыбораФайлаПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Истина Тогда
Возврат;
КонецЕсли;
ИмяСвойства = ДополнительныеПараметры.ИмяСвойства;
Объект = ДополнительныеПараметры.Объект;
ИмяСвойства = ДополнительныеПараметры.ИмяСвойства;
ПараметрыДиалогаВыбора = ДополнительныеПараметры.ПараметрыДиалога;
Диалог = Новый ДиалогВыбораФайла(ПараметрыДиалогаВыбора.Режим);
ЗаполнитьЗначенияСвойств(Диалог, ПараметрыДиалогаВыбора);
Диалог.ПолноеИмяФайла = Объект[ИмяСвойства];
Если Диалог.Выбрать() Тогда
Объект[ИмяСвойства] = Диалог.ПолноеИмяФайла;
ДополнительныеПараметрыОповещения = Новый Структура;
ДополнительныеПараметрыОповещения.Вставить("Объект", ДополнительныеПараметры.Объект);
ДополнительныеПараметрыОповещения.Вставить("ИмяСвойства", ДополнительныеПараметры.ИмяСвойства);
ДополнительныеПараметрыОповещения.Вставить("ОповещениеЗавершения", ДополнительныеПараметры.ОповещениеЗавершения);
Оповещение = Новый ОписаниеОповещения("ОбработчикВыбораФайлаЗавершение", ЭтотОбъект, ДополнительныеПараметрыОповещения);
Диалог.Показать(Оповещение);
КонецПроцедуры
// Обработчик асинхронного диалога выбора файла (завершение).
//
Процедура ОбработчикВыбораФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
Объект = ДополнительныеПараметры.Объект;
ИмяСвойства = ДополнительныеПараметры.ИмяСвойства;
Результат = Неопределено;
Если ВыбранныеФайлы.Количество() > 1 Тогда
Результат = ВыбранныеФайлы;
Иначе
Результат = ВыбранныеФайлы[0];
Если ДополнительныеПараметры.ОповещениеЗавершения <> Неопределено Тогда
Результат = ?(Диалог.МножественныйВыбор, Диалог.ВыбранныеФайлы, Диалог.ПолноеИмяФайла);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеЗавершения, Результат);
КонецЕсли;
Объект[ИмяСвойства] = Результат;
КонецЕсли;
Если Не ДополнительныеПараметры.ОповещениеЗавершения = Неопределено Тогда
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеЗавершения, Результат);
КонецЕсли;
КонецПроцедуры
@@ -971,31 +1005,42 @@
// Владелец - форма-владелец для открываемой формы;
//
Процедура ВыполнитьОбменДаннымиОбработкаКоманды(УзелИнформационнойБазы, Владелец,
АдресДляВосстановленияПароляУчетнойЗаписи = "", Знач АвтоматическаяСинхронизация = Неопределено) Экспорт
АдресДляВосстановленияПароляУчетнойЗаписи = "", Знач АвтоматическаяСинхронизация = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
Если АвтоматическаяСинхронизация = Неопределено Тогда
АвтоматическаяСинхронизация = (ОбменДаннымиВызовСервера.ВариантОбменаДанными(УзелИнформационнойБазы) = "Синхронизация");
КонецЕсли;
ИмяФормыПомощника = "";
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы);
Если АвтоматическаяСинхронизация Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы);
ИмяФормыПомощника = "Обработка.ВыполнениеОбменаДанными.Форма";
ПараметрыФормы.Вставить("АдресДляВосстановленияПароляУчетнойЗаписи", АдресДляВосстановленияПароляУчетнойЗаписи);
ОткрытьФорму("Обработка.ВыполнениеОбменаДанными.Форма.Форма", ПараметрыФормы, Владелец, УзелИнформационнойБазы);
Иначе
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы);
ИмяФормыПомощника = "Обработка.ПомощникИнтерактивногоОбменаДанными.Форма";
ПараметрыФормы.Вставить("РасширенныйРежимДополненияВыгрузки", Истина);
КонецЕсли;
ОповещениеОЗакрытии = Неопределено;
Если Не ДополнительныеПараметры = Неопределено Тогда
ИмяФормы = "Обработка.ПомощникИнтерактивногоОбменаДанными.Форма";
ОткрытьФорму(ИмяФормы, ПараметрыФормы, Владелец, УзелИнформационнойБазы);
Если ДополнительныеПараметры.Свойство("ПараметрыПомощника") Тогда
Для Каждого ТекущийПараметр Из ДополнительныеПараметры.ПараметрыПомощника Цикл
ПараметрыФормы.Вставить(ТекущийПараметр.Ключ, ТекущийПараметр.Значение);
КонецЦикла;
КонецЕсли;
ДополнительныеПараметры.Свойство("ОповещениеОЗакрытии", ОповещениеОЗакрытии);
КонецЕсли;
ОткрытьФорму(ИмяФормыПомощника,
ПараметрыФормы, Владелец, УзелИнформационнойБазы.УникальныйИдентификатор(), , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
// Открывает форму интерактивного выполнения обмена данными для заданного узла плана обмена.
@@ -1003,25 +1048,34 @@
// Параметры:
// УзелИнформационнойБазы - ПланОбменаСсылка - узел плана обмена, для которого необходимо открыть форму;
// Владелец - форма-владелец для открываемой формы;
// ДополнительныеПараметры - Структура - Произвольная структура, которая будет передана в открываемую форму помощника.
// ОповещениеОЗакрытии - ОписаниеОповещения - Описание оповещения, которое будет вызвано при закрытии формы помощника.
// ДополнительныеПараметры - Структура - структура дополнительных параметров открытия помощника
// * ПараметрыПомощника - Структура - произвольная структура, которая будет передана в открываемую форму помощника;
// * ОповещениеОЗакрытии - ОписаниеОповещения - описание оповещения, которое будет вызвано при закрытии формы помощника.
//
Процедура ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(УзелИнформационнойБазы,
Владелец, ДополнительныеПараметры = Неопределено, ОповещениеОЗакрытии = Неопределено) Экспорт
Владелец, ДополнительныеПараметры = Неопределено) Экспорт
// Открываем форму помощника сопоставления объектов;
// в качестве параметра формы задаем узел информационной базы;
ПараметрыФормы = Новый Структура("УзелИнформационнойБазы", УзелИнформационнойБазы);
ПараметрыФормы.Вставить("РасширенныйРежимДополненияВыгрузки", Истина);
ОповещениеОЗакрытии = Неопределено;
Если Не ДополнительныеПараметры = Неопределено Тогда
Для Каждого ТекущийПараметр Из ДополнительныеПараметры Цикл
ПараметрыФормы.Вставить(ТекущийПараметр.Ключ, ТекущийПараметр.Значение);
КонецЦикла;
Если ДополнительныеПараметры.Свойство("ПараметрыПомощника") Тогда
Для Каждого ТекущийПараметр Из ДополнительныеПараметры.ПараметрыПомощника Цикл
ПараметрыФормы.Вставить(ТекущийПараметр.Ключ, ТекущийПараметр.Значение);
КонецЦикла;
КонецЕсли;
ДополнительныеПараметры.Свойство("ОповещениеОЗакрытии", ОповещениеОЗакрытии);
КонецЕсли;
ИмяФормы = "Обработка.ПомощникИнтерактивногоОбменаДанными.Форма";
ОткрытьФорму(ИмяФормы, ПараметрыФормы, Владелец, УзелИнформационнойБазы, , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма",
ПараметрыФормы, Владелец, УзелИнформационнойБазы.УникальныйИдентификатор(), , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
@@ -1,3 +1,62 @@
#Область ПрограммныйИнтерфейс
#Область УстаревшиеПроцедурыИФункции
// Устарела. Следует использовать новую (см. ОбменДаннымиСервер.ЭтоАвтономноеРабочееМесто).
//
Функция ЭтоАвтономноеРабочееМесто() Экспорт
УстановитьПривилегированныйРежим(Истина);
Если Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить() Тогда
Возврат Константы.ЭтоАвтономноеРабочееМесто.Получить();
Иначе
ГлавныйУзелЭтойИнформационнойБазы = ОбменДаннымиСервер.ГлавныйУзел();
Возврат ГлавныйУзелЭтойИнформационнойБазы <> Неопределено
И ЭтоУзелАвтономногоРабочегоМеста(ГлавныйУзелЭтойИнформационнойБазы);
КонецЕсли;
КонецФункции
// Устарела. Следует использовать новую (см. ОбменДаннымиПовтИсп.УзелПланаОбменаПоКоду).
//
Функция НайтиУзелПланаОбменаПоКоду(ИмяПланаОбмена, КодУзла) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ПланОбмена.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена.[ИмяПланаОбмена] КАК ПланОбмена
|ГДЕ
| ПланОбмена.Код = &Код";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяПланаОбмена]", ИмяПланаОбмена);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Код", КодУзла);
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Возвращает признак использования плана обмена в обмене данными.
@@ -1510,28 +1569,3 @@
КонецФункции
#КонецОбласти
#Область УстаревшиеПроцедурыИФункции
// Устарела. Следует использовать новую (см. ОбменДаннымиСервер.ЭтоАвтономноеРабочееМесто).
//
Функция ЭтоАвтономноеРабочееМесто() Экспорт
УстановитьПривилегированныйРежим(Истина);
Если Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить() Тогда
Возврат Константы.ЭтоАвтономноеРабочееМесто.Получить();
Иначе
ГлавныйУзелЭтойИнформационнойБазы = ОбменДаннымиСервер.ГлавныйУзел();
Возврат ГлавныйУзелЭтойИнформационнойБазы <> Неопределено
И ЭтоУзелАвтономногоРабочегоМеста(ГлавныйУзелЭтойИнформационнойБазы);
КонецЕсли;
КонецФункции
#КонецОбласти
@@ -6722,8 +6722,8 @@
// Если файл найден, то возвращается его имя, при этом удаляется информация об этом файле из хранилища.
//
// Параметры:
// ИдентификаторФайла - УникальныйИдентификатор - идентификатор получаемого файла.
// ИмяФайла - Строка - имя файла, из хранилища.
// ИдентификаторФайла - УникальныйИдентификатор - идентификатор получаемого файла.
// ИмяФайла - Строка - имя файла, из хранилища.
//
Процедура ПриПолученииФайлаИзХранилища(Знач ИдентификаторФайла, ИмяФайла)
@@ -10876,6 +10876,7 @@
Если ИмяПланаОбмена = ФорматОбмена Тогда
Результат.ПланОбменаСуществует = Истина;
Результат.ИмяПланаОбмена = ПланОбмена;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -10891,11 +10892,15 @@
ПрефиксИнформационнойБазы = Неопределено;
ОбменДаннымиПереопределяемый.ПриОпределенииПрефиксаИнформационнойБазыПоУмолчанию(ПрефиксИнформационнойБазы);
УзелКорреспондента = Неопределено;
Если ЗначениеЗаполнено(КодУзла) Тогда
УзелКорреспондента = УзелПланаОбменаПоКоду(Результат.ИмяПланаОбмена, КодУзла);
КонецЕсли;
Результат.ПрефиксИнформационнойБазы = ПолучитьФункциональнуюОпцию("ПрефиксИнформационнойБазы");
Результат.ПрефиксИнформационнойБазыПоУмолчанию = ПрефиксИнформационнойБазы;
Результат.НаименованиеИнформационнойБазы = СвойстваЭтогоУзла.Наименование;
Результат.УзелСуществует = ЗначениеЗаполнено(КодУзла)
И ЗначениеЗаполнено(УзелПланаОбменаПоКоду(Результат.ИмяПланаОбмена, КодУзла));
Результат.УзелСуществует = ЗначениеЗаполнено(УзелКорреспондента);
Результат.НастройкиПараметровУчетаЗаданы = Результат.УзелСуществует
И НастройкиПараметровУчетаВСистемеУстановлены(Результат.ИмяПланаОбмена, КодУзла, СообщениеОбОшибке);
Результат.КодЭтогоУзла = СвойстваЭтогоУзла.Код;
@@ -10914,7 +10919,7 @@
Результат.ВерсииФорматаОбмена = ОбщегоНазначения.ВыгрузитьКолонку(СвойстваПланаОбмена.ВерсииФорматаОбмена, "Ключ", Истина);
Результат.Вставить("ПоддерживаемыеОбъектыФормата",
ОбменДаннымиXDTOСервер.ПоддерживаемыеОбъектыФормата(Результат.ИмяПланаОбмена, "ОтправкаПолучение"));
ОбменДаннымиXDTOСервер.ПоддерживаемыеОбъектыФормата(Результат.ИмяПланаОбмена, "ОтправкаПолучение", УзелКорреспондента));
КонецЕсли;
Возврат Результат;
@@ -12035,18 +12040,31 @@
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Корреспондент, ИменаРеквизитов);
ТолькоПолучение = Истина;
ВыгрузкаВручную = Ложь;
Для Каждого Реквизит Из ЗначенияРеквизитов Цикл
Если Реквизит.Значение = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьВручную
Или Реквизит.Значение = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать Тогда
Результат = "ПолучениеИОтправка";
Прервать;
Если Реквизит.Значение = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости Тогда
Продолжить;
КонецЕсли;
Если Реквизит.Значение <> Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать Тогда
ТолькоПолучение = Ложь;
КонецЕсли;
Если Реквизит.Значение = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьВручную Тогда
ВыгрузкаВручную = Истина;
КонецЕсли;
КонецЦикла;
Если ТолькоПолучение Тогда
Результат = "ТолькоПолучение";
ИначеЕсли ВыгрузкаВручную Тогда
Результат = "ПолучениеИОтправка";
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -32,7 +32,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.0.1.213";
Описание.Версия = "3.0.1.220";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -1470,6 +1470,15 @@
КонецПроцедуры
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПослеЗагрузкиДанных.
Процедура ПослеЗагрузкиДанных(Контейнер) Экспорт
СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
Если СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно <> Истина Тогда
ЗапланироватьОтложенноеОбновление();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -4055,7 +4055,7 @@
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных);
Если ОбъектМетаданных = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Не указан объект для обработки электронных подписей и сертификатов шифрования.");
ВызватьИсключение НСтр("ru = 'Не указан объект для обработки электронных подписей и сертификатов шифрования.'");
КонецЕсли;
ЕстьТабличнаяЧастьЭП = ОбъектМетаданных.ТабличныеЧасти.Найти("УдалитьЭлектронныеПодписи") <> Неопределено;
@@ -10055,6 +10055,10 @@
Возврат Ложь;
КонецЕсли;
КонецЦикла;
#ИначеЕсли МобильныйКлиент Тогда
Возврат Ложь;
#КонецЕсли
Возврат Истина;
@@ -257,7 +257,7 @@
Возврат;
КонецЕсли;
МассивФайлов = НайтиФайлы(КаталогХранения, "backup*.zip", Ложь);
МассивФайлов = НайтиФайлы(КаталогХранения, "backup????_??_??_??_??_??*", Ложь);
СписокУдаляемыхФайлов = Новый Массив;
// Удаление резервных копий.
@@ -1913,7 +1913,7 @@
// планировать обновление после отмены транзакции не требуется.
// Пример:
//
// Вариант 1. Запись набора объектов вне транзакции (ТранзакцияАктивна() = Ложь).
// Вариант 1. Запись набора объектов вне транзакции (ТранзакцияАктивна() = Ложь).
//
// УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Истина);
// Попытка
@@ -1926,7 +1926,7 @@
// ВызыватьИсключение;
// КонецПопытки;
//
// Вариант 2. Запись набора объектов в транзакции (ТранзакцияАктивна() = Истина).
// Вариант 2. Запись набора объектов в транзакции (ТранзакцияАктивна() = Истина).
//
// УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Истина);
// НачатьТранзакцию();
@@ -2507,7 +2507,11 @@
// указанной подписки не существует, если наборы значений доступа не применяются.
//
Процедура ЗаписатьНаборыЗначенийДоступаПриЗаписи(Знач Объект, Отказ) Экспорт
// Проверка ОбменДанными.Загрузка пропускается только в тех случаях,
// когда дополнительно установлено свойство ЗаписатьНаборыЗначенийДоступа.
// В этом случае при записи ведущего объекта для корректной работы его RLS выполняется программная
// запись подчиненного объекта для обновления служебной табличной части НаборыЗначенийДоступа.
Если Объект.ОбменДанными.Загрузка
И НЕ Объект.ДополнительныеСвойства.Свойство("ЗаписатьНаборыЗначенийДоступа") Тогда
@@ -2531,6 +2535,10 @@
//
Процедура ЗаписатьЗависимыеНаборыЗначенийДоступаПриЗаписи(Знач Объект, Отказ) Экспорт
// Проверка ОбменДанными.Загрузка пропускается только в тех случаях,
// когда дополнительно установлено свойство ЗаписатьНаборыЗначенийДоступа.
// В этом случае при записи ведущего объекта для корректной работы его RLS выполняется программная
// запись подчиненного объекта для обновления служебной табличной части НаборыЗначенийДоступа.
Если Объект.ОбменДанными.Загрузка
И НЕ Объект.ДополнительныеСвойства.Свойство("ЗаписатьЗависимыеНаборыЗначенийДоступа") Тогда
@@ -6849,8 +6857,7 @@
// ЗаписьПерерасчетов - Булево - параметр, передаваемый в подписку на событие ПередЗаписью,
// когда Источник это РегистрРасчетаНаборЗаписей.
//
Процедура ПроверитьДоступПередЗаписьюНабораЗаписей(Источник, Отказ,
Замещение = Неопределено,
Процедура ПроверитьДоступПередЗаписьюНабораЗаписей(Источник, Отказ, Замещение,
ТолькоЗапись = Неопределено,
ЗаписьФактическогоПериодаДействия = Неопределено,
ЗаписьПерерасчетов = Неопределено) Экспорт
@@ -6908,8 +6915,7 @@
// ЗаписьПерерасчетов - Булево - параметр, передаваемый в подписку на событие ПриЗаписи,
// когда Источник это РегистрРасчетаНаборЗаписей.
//
Процедура ПроверитьДоступПриЗаписиНабораЗаписей(Источник, Отказ,
Замещение = Неопределено,
Процедура ПроверитьДоступПриЗаписиНабораЗаписей(Источник, Отказ, Замещение,
ТолькоЗапись = Неопределено,
ЗаписьФактическогоПериодаДействия = Неопределено,
ЗаписьПерерасчетов = Неопределено) Экспорт
@@ -397,7 +397,7 @@
ВладельцыКонтактнойИнформации.Вставить(СтрокаКонтактнойИнформации.Объект, ПараметрыКонтактнойИнформации);
КонецЕсли;
ОбработатьСтрокуКонтактнойИнформации(СтрокаКонтактнойИнформации);
ВосстановитьПустыеЗначениеПредставление(СтрокаКонтактнойИнформации);
КонецЦикла;
@@ -504,7 +504,7 @@
Периодическая = МетаданныеОбъекта.ТабличныеЧасти.КонтактнаяИнформация.Реквизиты.Найти("ДействуетС") <> Неопределено;
Для каждого СтрокаКонтактнойИнформации Из КонтактнаяИнформация Цикл
ОбработатьСтрокуКонтактнойИнформации(СтрокаКонтактнойИнформации);
ВосстановитьПустыеЗначениеПредставление(СтрокаКонтактнойИнформации);
КонецЦикла;
Если Замещать Тогда
@@ -578,8 +578,8 @@
// Используется для определения типа, если его невозможно вычислить по полю ЗначенияПолей.
//
// Возвращаемое значение:
// Строка - Контактная информация в формате JSON советующей структуре описанной в функции ОписаниеНовойКонтактнойИнформации
// общего модуля УправлениеКонтактнойИнформациейКлиентСервер.
// Строка - Контактная информация в формате JSON, соответствующая структуре, описанной в функции
// УправлениеКонтактнойИнформациейКлиентСервер.ОписаниеНовойКонтактнойИнформации.
// Поля могут быть расширены национальной спецификой в одноименной функции общего модуля РаботаСАдресамиКлиентСервер.
//
Функция КонтактнаяИнформацияВJSON(Знач КонтактнаяИнформация, Знач ОжидаемыйВид = Неопределено) Экспорт
@@ -598,12 +598,12 @@
// Параметры:
// ЗначенияПолей - Строка, Структура, Соответствие, СписокЗначений - Описание полей контактной информации.
// Представление - Строка - Представление контактной информации. Используется, если невозможно определить
// представление из параметра ЗначенияПолей (например, отсутствует поле "Представление").
// представление из параметра ЗначенияПолей (например, отсутствует поле Представление).
// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации -
// Используется для определения типа, если его невозможно вычислить по полю ЗначенияПолей.
//
// Возвращаемое значение:
// Строка - Контактная информация в виде XML советующего структуре XDTO пакетов КонтактнаяИнформация и Адрес.
// Строка - Контактная информация в виде XML, соответствующего структуре XDTO пакетов КонтактнаяИнформация и Адрес.
//
Функция КонтактнаяИнформацияВXML(Знач ЗначенияПолей, Знач Представление = "", Знач ОжидаемыйВид = Неопределено) Экспорт
@@ -617,7 +617,8 @@
// Возвращает тип контактной информации.
//
// Параметры:
// КонтактнаяИнформация - Строка - Контактная информация в виде XML советующего структуре XDTO пакетов КонтактнаяИнформация и Адрес.
// КонтактнаяИнформация - Строка - Контактная информация в виде XML, соответсвующего структуре
// XDTO пакетов КонтактнаяИнформация и Адрес.
//
// Возвращаемое значение:
// ПеречислениеСсылка.ТипыКонтактнойИнформации - соответствующий тип.
@@ -1915,6 +1916,8 @@
КонецЕсли;
КонецЕсли;
ВосстановитьПустыеЗначениеПредставление(СтрокаТаблицы);
Если СтрокаТаблицы.ЭтоРеквизитТабличнойЧасти Тогда
Если ИменаТабличныхЧастейПоВидамКИ = Неопределено Тогда
@@ -2592,13 +2595,13 @@
// XDTO пакетам КонтактнаяИнформация и Адрес.
// Для адресов, введенных в свободной форме, корректное преобразование не гарантируется.
//
// Параметры:
// Представление - Строка - Строковое представление контактной информации, выводимое пользователю.
// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации,
// Параметры:
// Представление - Строка - Строковое представление контактной информации, выводимое пользователю.
// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации,
// Структура - Вид или тип контактной информации.
//
// Возвращаемое значение:
// Строка - Контактная информация в виде XML советующего структуре XDTO пакетов КонтактнаяИнформация и Адрес.
// Строка - Контактная информация в виде XML, соответствующего структуре XDTO пакетов КонтактнаяИнформация и Адрес.
//
Функция КонтактнаяИнформацияXMLПоПредставлению(Представление, ОжидаемыйВид) Экспорт
@@ -5055,43 +5058,68 @@
КонецПроцедуры
Процедура ОбработатьСтрокуКонтактнойИнформации(СтрокаКонтактнойИнформации)
Если ПустаяСтрока(СтрокаКонтактнойИнформации.Представление)
И ПустаяСтрока(СтрокаКонтактнойИнформации.ЗначенияПолей) Тогда
Возврат;
КонецЕсли;
Процедура ВосстановитьПустыеЗначениеПредставление(СтрокаКонтактнойИнформации)
Если ПустаяСтрока(СтрокаКонтактнойИнформации.Тип) Тогда
СтрокаКонтактнойИнформации.Тип = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ТипВидаКонтактнойИнформации(СтрокаКонтактнойИнформации.Вид);
СтрокаКонтактнойИнформации.Тип = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ТипВидаКонтактнойИнформации(
СтрокаКонтактнойИнформации.Вид);
КонецЕсли;
Если ПустаяСтрока(СтрокаКонтактнойИнформации.Представление) Тогда
ПустоеПредставление = ПустаяСтрока(СтрокаКонтактнойИнформации.Представление);
ПустоеЗначение = ПустаяСтрока(СтрокаКонтактнойИнформации.Значение);
ЗначенияПолей = Новый Структура("ЗначенияПолей", Неопределено);
ЗаполнитьЗначенияСвойств(ЗначенияПолей, СтрокаКонтактнойИнформации);
ЕстьЗначенияПолей = (ТипЗнч(ЗначенияПолей.ЗначенияПолей) = Тип("Строка"));
ПустыеЗначенияПолей = ЕстьЗначенияПолей И ПустаяСтрока(ЗначенияПолей.ЗначенияПолей);
Если ЕстьЗначенияПолей Тогда
Если ПустоеПредставление И ПустоеЗначение И ПустыеЗначенияПолей Тогда
Возврат;
КонецЕсли;
Иначе
Если ПустоеПредставление И ПустоеЗначение Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Если ПустоеПредставление Тогда
ФорматКонтактнойИнформации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаКонтактнойИнформации.Вид, "Тип, ВключатьСтрануВПредставление, ПроверятьПоФИАС");
ФорматКонтактнойИнформации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаКонтактнойИнформации.Вид,
"Тип, ВключатьСтрануВПредставление, ПроверятьПоФИАС");
ФорматКонтактнойИнформации.Вставить("ФорматАдреса", "ФИАС");
СтрокаКонтактнойИнформации.Представление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(СтрокаКонтактнойИнформации.ЗначенияПолей, ФорматКонтактнойИнформации);
СтрокаКонтактнойИнформации.Представление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(
СтрокаКонтактнойИнформации.ЗначенияПолей, ФорматКонтактнойИнформации);
КонецЕсли;
Если ПустаяСтрока(СтрокаКонтактнойИнформации.Значение) Тогда
Если ПустоеЗначение Тогда
Если ПустаяСтрока(СтрокаКонтактнойИнформации.ЗначенияПолей) Тогда
Если ЕстьЗначенияПолей И ПустыеЗначенияПолей Тогда
АдресПоПолям = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияПоПредставлению(СтрокаКонтактнойИнформации.Представление, СтрокаКонтактнойИнформации.Тип);
АдресПоПолям = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияПоПредставлению(
СтрокаКонтактнойИнформации.Представление, СтрокаКонтактнойИнформации.Тип);
СтрокаКонтактнойИнформации.Значение = УправлениеКонтактнойИнформациейСлужебный.СтруктураВСтрокуJSON(АдресПоПолям);
СтрокаКонтактнойИнформации.ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзJSONВXML(СтрокаКонтактнойИнформации.Значение, СтрокаКонтактнойИнформации.Тип);
СтрокаКонтактнойИнформации.ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзJSONВXML(
СтрокаКонтактнойИнформации.Значение, СтрокаКонтактнойИнформации.Тип);
ИначеЕсли ЕстьЗначенияПолей Тогда
СтрокаКонтактнойИнформации.Значение = КонтактнаяИнформацияВJSON(СтрокаКонтактнойИнформации.ЗначенияПолей,
СтрокаКонтактнойИнформации.Тип);
Иначе
СтрокаКонтактнойИнформации.Значение = КонтактнаяИнформацияВJSON(СтрокаКонтактнойИнформации.ЗначенияПолей, СтрокаКонтактнойИнформации.Тип);
АдресПоПолям = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияПоПредставлению(
СтрокаКонтактнойИнформации.Представление, СтрокаКонтактнойИнформации.Тип);
СтрокаКонтактнойИнформации.Значение = УправлениеКонтактнойИнформациейСлужебный.СтруктураВСтрокуJSON(АдресПоПолям);
КонецЕсли;
ИначеЕсли ПустаяСтрока(СтрокаКонтактнойИнформации.ЗначенияПолей) Тогда
ИначеЕсли ЕстьЗначенияПолей И ПустыеЗначенияПолей Тогда
КонтактнаяИнформацияXDTO = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению(СтрокаКонтактнойИнформации.Представление, СтрокаКонтактнойИнформации.Вид);
СтрокаКонтактнойИнформации.ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(КонтактнаяИнформацияXDTO);
КонтактнаяИнформацияXDTO = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению(
СтрокаКонтактнойИнформации.Представление, СтрокаКонтактнойИнформации.Вид);
СтрокаКонтактнойИнформации.ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(
КонтактнаяИнформацияXDTO);
КонецЕсли;
@@ -195,10 +195,11 @@
КонецФункции
// Описание структуры контактной информации для хранения ее в формате JSON.
// Список полей может быть расширен национальными полями в одноименной функции общего модуля РаботаСАдресамиКлиентСервер.
// Список полей может быть расширен национальными полями в одноименной функции общего модуля РаботаСАдресамиКлиентСервер.
//
// Параметры:
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации -
// Тип контактной информации, определяющий состав полей контактной информации.
// Тип контактной информации, определяющий состав полей контактной информации.
//
// Возвращаемое значение:
// Структура - Поля контактной информации с полями:
+9 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d8ea030d-2557-4348-9997-c0aba6118267">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d8eef2ae-4291-4c6e-a412-36292e8242fd">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.0</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="99d1caa1-4390-4fd2-9e3e-20b843673103"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="5c964add-5ca1-41cf-9766-d84e82bc1eda"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="a733b554-ff75-4ef1-bc23-edc79b25ad37"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="fc4ee2e9-464e-4a79-9755-7dbc0d6804fe"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="65987347-5788-40ad-9633-c49e97554681"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="d9a0fddf-0171-44d9-8475-c636d0cbceba"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="7a70ea7d-eb9e-4e0d-b213-0d5d93a59ea9"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="67570cc3-ce4d-4404-b150-3bbbc918eba3"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="7d06980d-c79b-4448-a471-f0ed5fa97cc6"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="9f6f564b-52ce-43ea-bda2-2cef19e15c10"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="01fefc4e-2b7d-4333-a33b-1404ddedf4eb"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="dc1b2d96-4292-48c2-827e-901e70e41a9b"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5f9ebbec-c7d3-4271-a8cd-e049d961be28"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="aa0a6d2f-6d1c-46ba-a503-597fda10f3ef"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.0.1.213</version>
<version>3.0.1.220</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,db6d0787-2789-4fa6-acb3-b74bc4b4725d,1,a70ed94d-d1ba-4b3e-acba-b155330b31ea,"3.0.1.213","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5842,1,0,d8ea030d-2557-4348-9997-c0aba6118267,d8ea030d-2557-4348-9997-c0aba6118267,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,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,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,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,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-74e8Line truncated
{6,1,1,3e5f5fd2-9e29-4cf6-9f26-0d489168fbab,1,f4ac2970-b97d-45ed-84ab-8da84c194faa,"3.0.1.220","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5842,1,0,d8eef2ae-4291-4c6e-a412-36292e8242fd,d8eef2ae-4291-4c6e-a412-36292e8242fd,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,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,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,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,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-74e8Line truncated
@@ -84,7 +84,7 @@
Если РезультатВыгрузки.ЕстьОшибки Тогда
ТекстСообщения = НСтр("ru = 'В ходе выполнения операции возникли ошибки'") + ": "
+ Символы.ПС + РезультатВыгрузки.ТекстОшибки
+ Символы.ПС + НСтр("ru = 'Данные могут быть выгружены не полностью.");
+ Символы.ПС + НСтр("ru = 'Данные могут быть выгружены не полностью.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
ИначеЕсли Не РезультатВыгрузки.ЕстьВыгруженныеОбъекты Тогда
ТекстСообщения = НСтр("ru = 'Не найдено ни одного объекта к выгрузке.'");
@@ -13,6 +13,9 @@
УзелИнформационнойБазы = Параметры.УзелИнформационнойБазы;
ЗавершениеРаботыСистемы = Параметры.ЗавершениеРаботыСистемы;
Параметры.Свойство("ЭтоОбменСПриложениемВСервисе", ОбменМеждуПриложениямиВСервисе);
Параметры.Свойство("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
Если Не ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда
Если ОбменДаннымиСервер.ЭтоПодчиненныйУзелРИБ() Тогда
@@ -24,43 +27,34 @@
КонецЕсли;
ЕстьОшибки = ((ОбменДаннымиСервер.ГлавныйУзел() = УзелИнформационнойБазы) И КонфигурацияИзменена());
// Устанавливаем заголовок формы.
ШаблонЗаголовка = НСтр("ru = 'Синхронизация данных с ""%1""'");
УстановитьПривилегированныйРежим(Истина);
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, Строка(УзелИнформационнойБазы));
НаименованиеКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "Наименование");
ВидТранспортаСообщений = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы);
ВыполнитьОтправкуДанных = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ВыполнитьОтправкуДанных(УзелИнформационнойБазы);
УстановитьПривилегированныйРежим(Ложь);
// Инициализируем роли пользователя
РольДоступнаДобавлениеИзменениеОбменовДанными = ОбменДаннымиСервер.ЕстьПраваНаАдминистрированиеОбменов();
РольДоступнаПолныеПрава = Пользователи.ЭтоПолноправныйПользователь();
// Инициализируем роли пользователя.
РольДоступнаАдминистрированиеОбменовДанными = ОбменДаннымиСервер.ЕстьПраваНаАдминистрированиеОбменов();
РольДоступнаПолныеПрава = Пользователи.ЭтоПолноправныйПользователь();
Элементы.ПанельТребуетсяОбновление.ТекущаяСтраница = ?(РольДоступнаПолныеПрава,
Элементы.ТребуетсяОбновлениеПолныеПрава, Элементы.ТребуетсяОбновлениеОграниченныеПрава);
Элементы.ТекстТребуетсяОбновлениеПолныеПрава.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Элементы.ТекстТребуетсяОбновлениеПолныеПрава.Заголовок, УзелИнформационнойБазы);
Элементы.ТекстТребуетсяОбновлениеОграниченныеПрава.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Элементы.ТекстТребуетсяОбновлениеОграниченныеПрава.Заголовок, УзелИнформационнойБазы);
Элементы.ЗабылиПароль.Видимость = Не ПустаяСтрока(АдресДляВосстановленияПароляУчетнойЗаписи);
СинхронизацияДанныхОтключена = Ложь;
ВыполнитьОтправкуДанных = Ложь;
НеНапоминатьОДолгойСинхронизации = Истина;
ПроверятьРасхождениеВерсий = Не ОбменМеждуПриложениямиВСервисе;
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса")
И ОбменДаннымиСервер.ЭтоАвтономноеРабочееМесто() Тогда
МодульАвтономнаяРабота = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРабота");
НеНапоминатьОДолгойСинхронизации = Не МодульАвтономнаяРабота.ФлагНастройкиВопросаОДолгойСинхронизации();
Иначе
НеНапоминатьОДолгойСинхронизации = Истина;
НеНапоминатьОДолгойСинхронизации = Не МодульАвтономнаяРабота.ФлагНастройкиВопросаОДолгойСинхронизации();
ПроверятьРасхождениеВерсий = Ложь;
КонецЕсли;
ВидТранспортаСообщений = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы);
// Устанавливаем заголовок формы.
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Синхронизация данных с ""%1""'"), НаименованиеКорреспондента);
// При обмене в распределенной информационной базе через веб-сервис всегда переопределяем параметры аутентификации
// (пользователь и пароль), сохраненные в информационной базе.
@@ -75,6 +69,7 @@
Если ВидТранспортаСообщений = Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда
Если ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(УзелИнформационнойБазы) Тогда
// Это РИБ и обмен по WS, используем текущего пользователя и пароль из сессии.
ИспользоватьТекущегоПользователяДляАутентификации = Истина;
ПарольСинхронизацииЗадан = ОбменДаннымиСервер.ПарольСинхронизацииДанныхЗадан(УзелИнформационнойБазы);
@@ -83,6 +78,7 @@
КонецЕсли;
Иначе
// Это не РИБ, читаем данные из настроек транспорта.
НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспортаWS(УзелИнформационнойБазы);
ПарольСинхронизацииЗадан = НастройкиТранспорта.WSЗапомнитьПароль;
@@ -102,57 +98,23 @@
КонецЕсли;
КонецЕсли;
// Инициализируем текущий сценарий работы обмена.
Если ЕстьОшибки Тогда
СценарийКогдаЕстьОшибкиПриНачалеРаботы();
ИначеЕсли ВидТранспортаСообщений <> Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда
// Вид транспорта - обычные каналы связи или подключения по COM.
ФоновоеЗаданиеИспользоватьПрогресс = Истина;
СценарийОбменаОбычный();
Иначе
// Вид транспорта - подключение через интернет.
ФоновоеЗаданиеИспользоватьПрогресс = Ложь;
ВыполнитьОтправкуДанных = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ВыполнитьОтправкуДанных(УзелИнформационнойБазы);
Элементы.ГруппаПредупрежденияДолгойСинхронизации.Видимость = Не НеНапоминатьОДолгойСинхронизации;
Элементы.ГруппаЗапросаПароля.Видимость = Не ПарольСинхронизацииЗадан;
Если ПарольСинхронизацииЗадан И НеНапоминатьОДолгойСинхронизации Тогда
// Сразу на выполнение обмена.
Если ВыполнитьОтправкуДанных Тогда
СценарийОбменаЧерезВебСервис_ОтправкаПолучениеОтправка();
Иначе
СценарийОбменаЧерезВебСервис();
КонецЕсли;
Иначе
ЕстьСтраницаЗапросаПароля = Истина;
Если ВыполнитьОтправкуДанных Тогда
СценарийОбменаЧерезВебСервисСЗапросомПароля_ОтправкаПолучениеОтправка();
Иначе
СценарийОбменаЧерезВебСервисСЗапросомПароля();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не ОбменДаннымиСервер.ЭтоАвтономноеРабочееМесто() Тогда
ПроверятьРасхождениеВерсий = Истина;
КонецЕсли;
ЕстьОшибки = ((ОбменДаннымиСервер.ГлавныйУзел() = УзелИнформационнойБазы) И КонфигурацияИзменена());
ФоновоеЗаданиеИспользоватьПрогресс = Не ОбменМеждуПриложениямиВСервисе
И Не (ВидТранспортаСообщений = Перечисления.ВидыТранспортаСообщенийОбмена.WS);
ЕстьСтраницаЗапросаПароля = Не ЕстьОшибки
И (ВидТранспортаСообщений = Перечисления.ВидыТранспортаСообщенийОбмена.WS)
И Не (ПарольСинхронизацииЗадан И НеНапоминатьОДолгойСинхронизации);
Элементы.ГруппаПредупрежденияДолгойСинхронизации.Видимость = ЕстьСтраницаЗапросаПароля И Не НеНапоминатьОДолгойСинхронизации;
Элементы.ГруппаЗапросаПароля.Видимость = ЕстьСтраницаЗапросаПароля И Не ПарольСинхронизацииЗадан;
КлючСохраненияПоложенияОкна = ?(ПарольСинхронизацииЗадан И НеНапоминатьОДолгойСинхронизации,
"ПарольСинхронизацииЗадан", "") + "/" + ?(НеНапоминатьОДолгойСинхронизации, "НеНапоминатьОДолгойСинхронизации", "");
ЗаполнитьТаблицуПереходов();
КонецПроцедуры
@@ -508,8 +470,6 @@
//
// Параметры:
//
// ПорядковыйНомерПерехода (обязательный) - Число. Порядковый номер перехода, который соответствует текущему шагу
// перехода.
// ИмяОсновнойСтраницы (обязательный) - Строка. Имя страницы панели "ПанельОсновная", которая соответствует текущему
// номеру перехода.
// ИмяОбработчикаПриОткрытии (необязательный) - Строка. Имя функции-обработчика события открытия текущей страницы
@@ -519,15 +479,14 @@
// Ложь.
//
&НаСервере
Процедура ТаблицаПереходовНоваяСтрока(
ПорядковыйНомерПерехода,
ИмяОсновнойСтраницы,
ИмяОбработчикаПриОткрытии = "",
ДлительнаяОперация = Ложь,
ИмяОбработчикаДлительнойОперации = "")
Функция ТаблицаПереходовНоваяСтрока(ИмяОсновнойСтраницы,
ИмяОбработчикаПриОткрытии = "",
ДлительнаяОперация = Ложь,
ИмяОбработчикаДлительнойОперации = "")
НоваяСтрока = ТаблицаПереходов.Добавить();
НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода;
НоваяСтрока.ПорядковыйНомерПерехода = ТаблицаПереходов.Количество();
НоваяСтрока.ИмяОсновнойСтраницы = ИмяОсновнойСтраницы;
НоваяСтрока.ИмяОбработчикаПриПереходеДалее = "";
@@ -537,43 +496,9 @@
НоваяСтрока.ДлительнаяОперация = ДлительнаяОперация;
НоваяСтрока.ИмяОбработчикаДлительнойОперации = ИмяОбработчикаДлительнойОперации;
КонецПроцедуры
// Добавляет новую строку в конец текущей таблицы переходов с переходом далее.
//
// Параметры:
//
// ПорядковыйНомерПерехода (обязательный) - Число. Порядковый номер перехода, который соответствует текущему шагу
// перехода.
// ИмяОсновнойСтраницы (обязательный) - Строка. Имя страницы панели "ПанельОсновная", которая соответствует текущему
// номеру перехода.
// ИмяОбработчикаПриОткрытии (необязательный) - Строка. Имя функции-обработчика события открытия текущей страницы
// помощника.
// ИмяОбработчикаПриПереходеДалее (необязательный) - Строка. Имя функции-обработчика события перехода на следующую
// страницу помощника.
// ДлительнаяОперация (необязательный) - Булево. Признак отображения страницы длительной операции.
// Истина - отображается страница длительной операции; Ложь - отображается обычная страница. Значение по умолчанию -
// Ложь.
//
&НаСервере
Процедура ТаблицаПереходовНоваяСтрокаПереходДалее(
ПорядковыйНомерПерехода,
ИмяОсновнойСтраницы,
ИмяОбработчикаПриОткрытии = "",
ИмяОбработчикаПриПереходеДалее = "")
Возврат НоваяСтрока;
НоваяСтрока = ТаблицаПереходов.Добавить();
НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода;
НоваяСтрока.ИмяОсновнойСтраницы = ИмяОсновнойСтраницы;
НоваяСтрока.ИмяОбработчикаПриПереходеДалее = ИмяОбработчикаПриПереходеДалее;
НоваяСтрока.ИмяОбработчикаПриОткрытии = ИмяОбработчикаПриОткрытии;
НоваяСтрока.ДлительнаяОперация = Ложь;
НоваяСтрока.ИмяОбработчикаДлительнойОперации = "";
КонецПроцедуры
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// ПЕРЕОПРЕДЕЛЯЕМАЯ ЧАСТЬ
@@ -598,6 +523,7 @@
Элементы.ПанельДействий.ТекущаяСтраница = Элементы.ДействияПродолжитьОтмена;
Элементы.ПродолжитьСинхронизацию.КнопкаПоУмолчанию = Истина;
Элементы.ДекорацияОшибкаРасхожденияВерсий.Заголовок = ОшибкаРасхожденияВерсийПриПолученииДанных.ТекстОшибки;
ПроверятьРасхождениеВерсий = Ложь;
КонецПроцедуры
@@ -815,11 +741,7 @@
ПерейтиДалее = Истина;
Иначе
ПерейтиДалее = Ложь;
ФоновоеЗаданиеВыполняемоеДействие = 2;
ФоновоеЗаданиеЗапуститьНаКлиенте(ФоновоеЗаданиеВыполняемоеДействие,
"Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными",
Отказ);
ПриНачалеВыгрузкиДанных(Отказ);
КонецЕсли;
КонецФункции
@@ -839,15 +761,128 @@
КонецФункции
&НаКлиенте
Процедура ПриНачалеВыгрузкиДанных(Отказ)
Если ОбменМеждуПриложениямиВСервисе Тогда
ПродолжитьОжидание = Истина;
ПриНачалеВыгрузкиДанныхНаСервере(ПродолжитьОжидание);
Если ПродолжитьОжидание Тогда
ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(
ПараметрыОбработчикаОжиданияВыгрузкиДанных);
ПодключитьОбработчикОжидания("ПриОжиданииВыгрузкиДанных",
ПараметрыОбработчикаОжиданияВыгрузкиДанных.ТекущийИнтервал, Истина);
Иначе
ПриЗавершенииВыгрузкиДанных();
КонецЕсли;
Иначе
ФоновоеЗаданиеВыполняемоеДействие = 2;
ФоновоеЗаданиеЗапуститьНаКлиенте(ФоновоеЗаданиеВыполняемоеДействие,
"Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными", Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОжиданииВыгрузкиДанных()
ПродолжитьОжидание = Ложь;
ПриОжиданииВыгрузкиДанныхНаСервере(ПараметрыОбработчикаВыгрузкиДанных, ПродолжитьОжидание);
Если ПродолжитьОжидание Тогда
ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжиданияВыгрузкиДанных);
ПодключитьОбработчикОжидания("ПриОжиданииВыгрузкиДанных",
ПараметрыОбработчикаОжиданияВыгрузкиДанных.ТекущийИнтервал, Истина);
Иначе
ПриЗавершенииВыгрузкиДанных();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗавершенииВыгрузкиДанных()
ДанныеВыгружены = Ложь;
СообщениеОбОшибке = "";
ПриЗавершенииВыгрузкиДанныхНаСервере(ПараметрыОбработчикаВыгрузкиДанных, ДанныеВыгружены, СообщениеОбОшибке);
ДлительнаяОперацияЗавершена = Истина;
ДлительнаяОперацияЗавершенаСОшибкой = Не ДанныеВыгружены;
Если ДанныеВыгружены Тогда
ИзменитьПорядковыйНомерПерехода(+1);
Иначе
ИзменитьПорядковыйНомерПерехода(-1);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриНачалеВыгрузкиДанныхНаСервере(ПродолжитьОжидание)
НастройкиВыгрузки = Новый Структура;
НастройкиВыгрузки.Вставить("Корреспондент", УзелИнформационнойБазы);
НастройкиВыгрузки.Вставить("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
МодульПомощникИнтерактивногоОбмена = ОбщегоНазначения.ОбщийМодуль(
"Обработки.ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса");
ПараметрыОбработчикаВыгрузкиДанных = Неопределено;
МодульПомощникИнтерактивногоОбмена.ПриНачалеВыгрузкиДанных(НастройкиВыгрузки,
ПараметрыОбработчикаВыгрузкиДанных, ПродолжитьОжидание);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПриОжиданииВыгрузкиДанныхНаСервере(ПараметрыОбработчика, ПродолжитьОжидание)
МодульПомощникИнтерактивногоОбмена = ОбщегоНазначения.ОбщийМодуль(
"Обработки.ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса");
ПродолжитьОжидание = Ложь;
МодульПомощникИнтерактивногоОбмена.ПриОжиданииВыгрузкиДанных(ПараметрыОбработчика, ПродолжитьОжидание);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПриЗавершенииВыгрузкиДанныхНаСервере(ПараметрыОбработчика, ДанныеВыгружены, СообщениеОбОшибке)
СтатусЗавершения = Неопределено;
МодульПомощникИнтерактивногоОбмена = ОбщегоНазначения.ОбщийМодуль(
"Обработки.ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса");
МодульПомощникИнтерактивногоОбмена.ПриЗавершенииВыгрузкиДанных(ПараметрыОбработчика, СтатусЗавершения);
ПараметрыОбработчика = Неопределено;
Если СтатусЗавершения.Отказ Тогда
ДанныеВыгружены = Ложь;
СообщениеОбОшибке = СтатусЗавершения.СообщениеОбОшибке;
Возврат;
Иначе
ДанныеВыгружены = СтатусЗавершения.Результат.ДанныеВыгружены;
Если Не ДанныеВыгружены Тогда
СообщениеОбОшибке = СтатусЗавершения.Результат.СообщениеОбОшибке;
Возврат;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция Подключаемый_ЗавершениеОбмена_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее)
Элементы.ПанельДействий.ТекущаяСтраница = Элементы.ДействияЗакрыть;
Элементы.ФормаЗакрыть.КнопкаПоУмолчанию = Истина;
СтраницаОбменЗавершенСОшибкой = ?(РольДоступнаДобавлениеИзменениеОбменовДанными,
Элементы.ОбменЗавершенСОшибкойДляАдминистратора,
Элементы.ОбменЗавершенСОшибкой);
СтраницаОбменЗавершенСОшибкой = ?(РольДоступнаАдминистрированиеОбменовДанными,
Элементы.ОбменЗавершенСОшибкойДляАдминистратора,
Элементы.ОбменЗавершенСОшибкой);
Если СинхронизацияДанныхОтключена Тогда
@@ -856,13 +891,27 @@
ИначеЕсли ЕстьОшибки Тогда
Если ТребуетсяОбновление Или ОбменДаннымиВызовСервера.ТребуетсяУстановкаОбновления() Тогда
Если РольДоступнаПолныеПрава Тогда
Элементы.ПанельДействий.ТекущаяСтраница = Элементы.ДействияУстановитьЗакрыть;
Элементы.УстановитьОбновление.КнопкаПоУмолчанию = Истина;
КонецЕсли;
Элементы.СтатусЗавершенияОбмена.ТекущаяСтраница = Элементы.ТребуетсяОбновление;
Элементы.СтатусЗавершенияОбмена.ТекущаяСтраница = Элементы.ОбменЗавершенСОшибкойТребуетсяОбновление;
Элементы.ПанельТребуетсяОбновление.ТекущаяСтраница = ?(РольДоступнаПолныеПрава,
Элементы.ТребуетсяОбновлениеПолныеПрава, Элементы.ТребуетсяОбновлениеОграниченныеПрава);
Элементы.ТекстТребуетсяОбновлениеПолныеПрава.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Элементы.ТекстТребуетсяОбновлениеПолныеПрава.Заголовок, НаименованиеКорреспондента);
Элементы.ТекстТребуетсяОбновлениеОграниченныеПрава.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Элементы.ТекстТребуетсяОбновлениеОграниченныеПрава.Заголовок, НаименованиеКорреспондента);
Иначе
Элементы.СтатусЗавершенияОбмена.ТекущаяСтраница = СтраницаОбменЗавершенСОшибкой;
КонецЕсли;
Иначе
@@ -898,6 +947,8 @@
&НаКлиенте
Функция Подключаемый_ЗапросПароляПользователя_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее)
Элементы.ЗабылиПароль.Видимость = Не ПустаяСтрока(АдресДляВосстановленияПароляУчетнойЗаписи);
Элементы.ВыполнитьОбмен.КнопкаПоУмолчанию = Истина;
КонецФункции
@@ -1222,90 +1273,59 @@
// РАЗДЕЛ ИНИЦИАЛИЗАЦИИ ПЕРЕХОДОВ
&НаСервере
Процедура СценарийОбменаОбычный()
ТаблицаПереходов.Очистить();
ТаблицаПереходовНоваяСтрока(1, "ОжиданиеСинхронизацииДанныхПрогрессБарЗагрузка", "ЗагрузкаДанных_ПриОткрытии", Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанныхПрогрессБарЗагрузка", , Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации_Окончание");
ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанныхПрогрессБарВыгрузка", "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанныхПрогрессБарВыгрузка", , Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
ТаблицаПереходовНоваяСтрока(5, "ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии", Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации");
КонецПроцедуры
&НаСервере
Процедура СценарийОбменаЧерезВебСервис()
ТаблицаПереходов.Очистить();
ТаблицаПереходовНоваяСтрока(1, "ОжиданиеСинхронизацииДанных",, Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанных", "ЗагрузкаДанных_ПриОткрытии", Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанных",, Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации_Окончание");
ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанных", "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(5, "ОжиданиеСинхронизацииДанных",, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
ТаблицаПереходовНоваяСтрока(6, "ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии", Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации");
КонецПроцедуры
&НаСервере
Процедура СценарийОбменаЧерезВебСервис_ОтправкаПолучениеОтправка()
Процедура ЗаполнитьТаблицуПереходов()
ТаблицаПереходов.Очистить();
ТаблицаПереходовНоваяСтрока(1, "ОжиданиеСинхронизацииДанных", , Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации");
// Отправка
ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанных", "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанных", , Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
// Получение
ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанных", "ЗагрузкаДанных_ПриОткрытии", Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(5, "ОжиданиеСинхронизацииДанных", , Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации_Окончание");
// Отправка
ТаблицаПереходовНоваяСтрока(6, "ОжиданиеСинхронизацииДанных", "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(7, "ОжиданиеСинхронизацииДанных", , Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
// Завершение
ТаблицаПереходовНоваяСтрока(8, "ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии", Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации");
КонецПроцедуры
&НаСервере
Процедура СценарийОбменаЧерезВебСервисСЗапросомПароля()
ТаблицаПереходов.Очистить();
ТаблицаПереходовНоваяСтрокаПереходДалее(1, "ЗапросПароляПользователя", "ЗапросПароляПользователя_ПриОткрытии", "ЗапросПароляПользователя_ПриПереходеДалее");
ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанных",, Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанных", "ЗагрузкаДанных_ПриОткрытии", Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанных",, Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации_Окончание");
ТаблицаПереходовНоваяСтрока(5, "ОжиданиеСинхронизацииДанных", "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(6, "ОжиданиеСинхронизацииДанных",, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
ТаблицаПереходовНоваяСтрока(7, "ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии", Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации");
КонецПроцедуры
&НаСервере
Процедура СценарийОбменаЧерезВебСервисСЗапросомПароля_ОтправкаПолучениеОтправка()
ТаблицаПереходов.Очистить();
ТаблицаПереходовНоваяСтрокаПереходДалее(1, "ЗапросПароляПользователя", "ЗапросПароляПользователя_ПриОткрытии", "ЗапросПароляПользователя_ПриПереходеДалее");
ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанных",, Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации");
// Отправка
ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанных", "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанных",, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
// Получение
ТаблицаПереходовНоваяСтрока(5, "ОжиданиеСинхронизацииДанных", "ЗагрузкаДанных_ПриОткрытии", Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(6, "ОжиданиеСинхронизацииДанных",, Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации_Окончание");
// Отправка
ТаблицаПереходовНоваяСтрока(7, "ОжиданиеСинхронизацииДанных", "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(8, "ОжиданиеСинхронизацииДанных",, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
// Завершение
ТаблицаПереходовНоваяСтрока(9, "ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии", Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации");
КонецПроцедуры
&НаСервере
Процедура СценарийКогдаЕстьОшибкиПриНачалеРаботы()
ТаблицаПереходов.Очистить();
ТаблицаПереходовНоваяСтрока(1, "ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии");
// Инициализируем текущий сценарий работы обмена.
Если ЕстьОшибки Тогда
ТаблицаПереходовНоваяСтрока("ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии");
Иначе
Если ФоновоеЗаданиеИспользоватьПрогресс Тогда
ИмяСтраницыСинхронизацияЗагрузка = "ОжиданиеСинхронизацииДанныхПрогрессБарЗагрузка";
ИмяСтраницыСинхронизацияВыгрузка = "ОжиданиеСинхронизацииДанныхПрогрессБарВыгрузка";
Иначе
ИмяСтраницыСинхронизацияЗагрузка = "ОжиданиеСинхронизацииДанных";
ИмяСтраницыСинхронизацияВыгрузка = "ОжиданиеСинхронизацииДанных";
КонецЕсли;
Если ОбменМеждуПриложениямиВСервисе Тогда
// Получение и отправка.
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияВыгрузка, "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияВыгрузка, , Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
Иначе
Если ЕстьСтраницаЗапросаПароля Тогда
СтрокаПерехода = ТаблицаПереходовНоваяСтрока("ЗапросПароляПользователя", "ЗапросПароляПользователя_ПриОткрытии");
СтрокаПерехода.ИмяОбработчикаПриПереходеДалее = "ЗапросПароляПользователя_ПриПереходеДалее";
КонецЕсли;
Если ВидТранспортаСообщений = Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда
ТаблицаПереходовНоваяСтрока("ОжиданиеСинхронизацииДанных", , Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации");
КонецЕсли;
Если ВыполнитьОтправкуДанных Тогда
// Отправка
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияВыгрузка, "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияВыгрузка, , Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
КонецЕсли;
// Получение
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияЗагрузка, "ЗагрузкаДанных_ПриОткрытии", Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияЗагрузка, , Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации_Окончание");
// Отправка
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияВыгрузка, "ВыгрузкаДанных_ПриОткрытии", Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации");
ТаблицаПереходовНоваяСтрока(ИмяСтраницыСинхронизацияВыгрузка, , Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации_Окончание");
КонецЕсли;
// Завершение
ТаблицаПереходовНоваяСтрока("ЗавершениеОбмена", "ЗавершениеОбмена_ПриОткрытии", Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации");
КонецЕсли;
КонецПроцедуры
@@ -575,6 +575,10 @@
Для каждого Реквизит Из МетаданныеСправочника.Реквизиты Цикл
Если Реквизит.Имя = "Идентификатор" Тогда
Продолжить;
КонецЕсли;
Если Реквизит.Тип.СодержитТип(Тип("ХранилищеЗначения")) Тогда
Продолжить;
КонецЕсли;
@@ -363,12 +363,12 @@
Если НачалоПериодаЗагрузки = ОкончаниеПериодаЗагрузки Тогда
ДатаКурса = ОкончаниеПериодаЗагрузки;
Кратность = Число(ЧастиСтроки[0]);
Курс = Число(ЧастиСтроки[1]);
Курс = КурсИзСтроки(ЧастиСтроки[1]);
Иначе
ДатаКурсаСтр = ЧастиСтроки[0];
ДатаКурса = Дата(Лев(ДатаКурсаСтр,4), Сред(ДатаКурсаСтр,5,2), Сред(ДатаКурсаСтр,7,2));
Кратность = Число(ЧастиСтроки[1]);
Курс = Число(ЧастиСтроки[2]);
Курс = КурсИзСтроки(ЧастиСтроки[2]);
КонецЕсли;
Если ДатаКурса > ОкончаниеПериодаЗагрузки Тогда
@@ -449,6 +449,32 @@
КонецФункции
// Предназначена для преобразования формата чисел, используемого в файле курсов валюты.
// Работает в любой локазизации, не поддерживает отрицательные числа.
Функция КурсИзСтроки(Знач Строка)
Строка = СокрЛП(Строка);
ЧастиСтроки = СтрРазделить(Строка, ".", Истина);
Если Строка = "" Или ЧастиСтроки.Количество() > 2 Тогда
ВызватьИсключение НСтр("ru = 'Преобразование значения к типу Число не может быть выполнено.'");
КонецЕсли;
ДлинаДробнойЧасти = 0;
Если ЧастиСтроки.Количество() > 1 Тогда
ДлинаДробнойЧасти = СтрДлина(ЧастиСтроки[1]);
КонецЕсли;
Строка = СтрСоединить(ЧастиСтроки, "");
Результат = 0;
Если Строка <> "" Тогда
Результат = Число(Строка) / Pow(10, ДлинаДробнойЧасти);
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ОбновитьФорматХраненияПрописи() Экспорт
ВыборкаВалют = Справочники.Валюты.Выбрать();
@@ -37,7 +37,7 @@
Функция ВерсияКалендарей() Экспорт
Возврат 15;
Возврат 17;
КонецФункции
@@ -49,7 +49,7 @@
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
Возврат "3.0.1.174";
Возврат "3.0.1.218";
КонецФункции
@@ -12,6 +12,9 @@
<Item Calendar="01" Year="2018" DayType="Праздник" Date="20180615" SwapDate=""/>
<Item Calendar="01" Year="2018" DayType="Предпраздничный" Date="20181004" SwapDate=""/>
<Item Calendar="01" Year="2018" DayType="Праздник" Date="20181005" SwapDate=""/>
<Item Calendar="01" Year="2019" DayType="Предпраздничный" Date="20191004" SwapDate=""/>
<Item Calendar="01" Year="2019" DayType="Праздник" Date="20191005" SwapDate="20191007"/>
<Item Calendar="01" Year="2019" DayType="Суббота" Date="20191007" SwapDate="20191005"/>
<Item Calendar="02" Year="2014" DayType="Праздник" Date="20140728" SwapDate=""/>
<Item Calendar="02" Year="2014" DayType="Предпраздничный" Date="20141003" SwapDate=""/>
<Item Calendar="02" Year="2014" DayType="Праздник" Date="20141004" SwapDate="20141006"/>
@@ -42,11 +45,15 @@
<Item Calendar="02" Year="2018" DayType="Праздник" Date="20180821" SwapDate=""/>
<Item Calendar="02" Year="2018" DayType="Предпраздничный" Date="20181010" SwapDate=""/>
<Item Calendar="02" Year="2018" DayType="Праздник" Date="20181011" SwapDate=""/>
<Item Calendar="02" Year="2019" DayType="Предпраздничный" Date="20191010" SwapDate=""/>
<Item Calendar="02" Year="2019" DayType="Праздник" Date="20191011" SwapDate=""/>
<Item Calendar="03" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="03" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="03" Year="2017" DayType="Праздник" Date="20170227" SwapDate=""/>
<Item Calendar="03" Year="2018" DayType="Предпраздничный" Date="20180215" SwapDate=""/>
<Item Calendar="03" Year="2018" DayType="Праздник" Date="20180216" SwapDate=""/>
<Item Calendar="03" Year="2019" DayType="Предпраздничный" Date="20190205" SwapDate=""/>
<Item Calendar="03" Year="2019" DayType="Праздник" Date="20190206" SwapDate=""/>
<Item Calendar="04" Year="2016" DayType="Праздник" Date="20160214" SwapDate="20160215"/>
<Item Calendar="04" Year="2016" DayType="Воскресенье" Date="20160215" SwapDate="20160214"/>
<Item Calendar="04" Year="2017" DayType="Предпраздничный" Date="20170203" SwapDate=""/>
@@ -80,6 +87,10 @@
<Item Calendar="05" Year="2018" DayType="Предпраздничный" Date="20180914" SwapDate=""/>
<Item Calendar="05" Year="2018" DayType="Праздник" Date="20180915" SwapDate="20180917"/>
<Item Calendar="05" Year="2018" DayType="Суббота" Date="20180917" SwapDate="20180915"/>
<Item Calendar="05" Year="2019" DayType="Предпраздничный" Date="20190725" SwapDate=""/>
<Item Calendar="05" Year="2019" DayType="Праздник" Date="20190726" SwapDate=""/>
<Item Calendar="05" Year="2019" DayType="Праздник" Date="20190915" SwapDate="20190916"/>
<Item Calendar="05" Year="2019" DayType="Воскресенье" Date="20190916" SwapDate="20190915"/>
<Item Calendar="06" Year="2016" DayType="Предпраздничный" Date="20160705" SwapDate=""/>
<Item Calendar="06" Year="2016" DayType="Праздник" Date="20160706" SwapDate=""/>
<Item Calendar="06" Year="2016" DayType="Праздник" Date="20160707" SwapDate=""/>
@@ -116,6 +127,10 @@
<Item Calendar="07" Year="2018" DayType="Праздник" Date="20180821" SwapDate=""/>
<Item Calendar="07" Year="2018" DayType="Праздник" Date="20180901" SwapDate=""/>
<Item Calendar="07" Year="2018" DayType="Праздник" Date="20180920" SwapDate=""/>
<Item Calendar="07" Year="2019" DayType="Праздник" Date="20190328" SwapDate=""/>
<Item Calendar="07" Year="2019" DayType="Праздник" Date="20190521" SwapDate=""/>
<Item Calendar="07" Year="2019" DayType="Праздник" Date="20190901" SwapDate=""/>
<Item Calendar="07" Year="2019" DayType="Праздник" Date="20190920" SwapDate=""/>
<Item Calendar="08" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="08" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="08" Year="2016" DayType="Предпраздничный" Date="20160404" SwapDate=""/>
@@ -143,6 +158,11 @@
<Item Calendar="08" Year="2018" DayType="Праздник" Date="20181202" SwapDate="20181203"/>
<Item Calendar="08" Year="2018" DayType="Воскресенье" Date="20181203" SwapDate="20181202"/>
<Item Calendar="08" Year="2018" DayType="Нерабочий" Date="20181228" SwapDate=""/>
<Item Calendar="08" Year="2019" DayType="Предпраздничный" Date="20190205" SwapDate=""/>
<Item Calendar="08" Year="2019" DayType="Праздник" Date="20190206" SwapDate=""/>
<Item Calendar="08" Year="2019" DayType="Предпраздничный" Date="20190404" SwapDate=""/>
<Item Calendar="08" Year="2019" DayType="Праздник" Date="20190405" SwapDate=""/>
<Item Calendar="08" Year="2019" DayType="Нерабочий" Date="20191228" SwapDate=""/>
<Item Calendar="09" Year="2016" DayType="Праздник" Date="20160503" SwapDate="20160504"/>
<Item Calendar="09" Year="2016" DayType="Суббота" Date="20160504" SwapDate="20160503"/>
<Item Calendar="09" Year="2016" DayType="Нерабочий" Date="20160705" SwapDate=""/>
@@ -160,11 +180,16 @@
<Item Calendar="09" Year="2018" DayType="Праздник" Date="20180503" SwapDate=""/>
<Item Calendar="09" Year="2018" DayType="Нерабочий" Date="20180615" SwapDate=""/>
<Item Calendar="09" Year="2018" DayType="Нерабочий" Date="20180821" SwapDate=""/>
<Item Calendar="09" Year="2019" DayType="Праздник" Date="20190503" SwapDate="20190506"/>
<Item Calendar="09" Year="2019" DayType="Воскресенье" Date="20190506" SwapDate="20190503"/>
<Item Calendar="09" Year="2019" DayType="Нерабочий" Date="20190507" SwapDate=""/>
<Item Calendar="11" Year="2016" DayType="Праздник" Date="20160822" SwapDate=""/>
<Item Calendar="11" Year="2017" DayType="Предпраздничный" Date="20170821" SwapDate=""/>
<Item Calendar="11" Year="2017" DayType="Праздник" Date="20170822" SwapDate=""/>
<Item Calendar="11" Year="2018" DayType="Предпраздничный" Date="20180821" SwapDate=""/>
<Item Calendar="11" Year="2018" DayType="Праздник" Date="20180822" SwapDate=""/>
<Item Calendar="11" Year="2019" DayType="Предпраздничный" Date="20190821" SwapDate=""/>
<Item Calendar="11" Year="2019" DayType="Праздник" Date="20190822" SwapDate=""/>
<Item Calendar="14" Year="2016" DayType="Предпраздничный" Date="20160426" SwapDate=""/>
<Item Calendar="14" Year="2016" DayType="Праздник" Date="20160427" SwapDate=""/>
<Item Calendar="14" Year="2016" DayType="Предпраздничный" Date="20160620" SwapDate=""/>
@@ -177,6 +202,11 @@
<Item Calendar="14" Year="2018" DayType="Праздник" Date="20180427" SwapDate=""/>
<Item Calendar="14" Year="2018" DayType="Предпраздничный" Date="20180620" SwapDate=""/>
<Item Calendar="14" Year="2018" DayType="Праздник" Date="20180621" SwapDate=""/>
<Item Calendar="14" Year="2019" DayType="Предпраздничный" Date="20190426" SwapDate=""/>
<Item Calendar="14" Year="2019" DayType="Праздник" Date="20190427" SwapDate="20190429"/>
<Item Calendar="14" Year="2019" DayType="Суббота" Date="20190429" SwapDate="20190427"/>
<Item Calendar="14" Year="2019" DayType="Предпраздничный" Date="20190620" SwapDate=""/>
<Item Calendar="14" Year="2019" DayType="Праздник" Date="20190621" SwapDate=""/>
<Item Calendar="16" Year="2016" DayType="Предпраздничный" Date="20160704" SwapDate=""/>
<Item Calendar="16" Year="2016" DayType="Праздник" Date="20160705" SwapDate=""/>
<Item Calendar="16" Year="2016" DayType="Предпраздничный" Date="20160829" SwapDate=""/>
@@ -196,6 +226,10 @@
<Item Calendar="16" Year="2018" DayType="Предпраздничный" Date="20180829" SwapDate=""/>
<Item Calendar="16" Year="2018" DayType="Праздник" Date="20180830" SwapDate=""/>
<Item Calendar="16" Year="2018" DayType="Праздник" Date="20181106" SwapDate=""/>
<Item Calendar="16" Year="2019" DayType="Предпраздничный" Date="20190829" SwapDate=""/>
<Item Calendar="16" Year="2019" DayType="Праздник" Date="20190830" SwapDate=""/>
<Item Calendar="16" Year="2019" DayType="Предпраздничный" Date="20191105" SwapDate=""/>
<Item Calendar="16" Year="2019" DayType="Праздник" Date="20191106" SwapDate=""/>
<Item Calendar="17" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="17" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="17" Year="2016" DayType="Предпраздничный" Date="20160505" SwapDate=""/>
@@ -221,6 +255,11 @@
<Item Calendar="17" Year="2018" DayType="Воскресенье" Date="20180717" SwapDate="20180715"/>
<Item Calendar="17" Year="2018" DayType="Предпраздничный" Date="20180814" SwapDate=""/>
<Item Calendar="17" Year="2018" DayType="Праздник" Date="20180815" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Предпраздничный" Date="20190205" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190206" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190506" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Предпраздничный" Date="20190814" SwapDate=""/>
<Item Calendar="17" Year="2019" DayType="Праздник" Date="20190815" SwapDate=""/>
<Item Calendar="20" Year="2016" DayType="Предпраздничный" Date="20160322" SwapDate=""/>
<Item Calendar="20" Year="2016" DayType="Праздник" Date="20160323" SwapDate=""/>
<Item Calendar="20" Year="2016" DayType="Предпраздничный" Date="20160415" SwapDate=""/>
@@ -256,6 +295,11 @@
<Item Calendar="20" Year="2018" DayType="Праздник" Date="20180618" SwapDate=""/>
<Item Calendar="20" Year="2018" DayType="Суббота" Date="20180619" SwapDate="20180616"/>
<Item Calendar="20" Year="2018" DayType="Воскресенье" Date="20180620" SwapDate="20180617"/>
<Item Calendar="20" Year="2019" DayType="Предпраздничный" Date="20190322" SwapDate=""/>
<Item Calendar="20" Year="2019" DayType="Праздник" Date="20190323" SwapDate="20190325"/>
<Item Calendar="20" Year="2019" DayType="Суббота" Date="20190325" SwapDate="20190323"/>
<Item Calendar="20" Year="2019" DayType="Предпраздничный" Date="20190415" SwapDate=""/>
<Item Calendar="20" Year="2019" DayType="Праздник" Date="20190416" SwapDate=""/>
<Item Calendar="21" Year="2016" DayType="Предпраздничный" Date="20160623" SwapDate=""/>
<Item Calendar="21" Year="2016" DayType="Праздник" Date="20160624" SwapDate=""/>
<Item Calendar="21" Year="2017" DayType="Предпраздничный" Date="20170623" SwapDate=""/>
@@ -263,31 +307,42 @@
<Item Calendar="21" Year="2017" DayType="Суббота" Date="20170626" SwapDate="20170624"/>
<Item Calendar="21" Year="2018" DayType="Праздник" Date="20180624" SwapDate="20180625"/>
<Item Calendar="21" Year="2018" DayType="Воскресенье" Date="20180625" SwapDate="20180624"/>
<Item Calendar="21" Year="2019" DayType="Праздник" Date="20190624" SwapDate=""/>
<Item Calendar="26" Year="2016" DayType="Праздник" Date="20160510" SwapDate=""/>
<Item Calendar="26" Year="2017" DayType="Предпраздничный" Date="20170424" SwapDate=""/>
<Item Calendar="26" Year="2017" DayType="Праздник" Date="20170425" SwapDate=""/>
<Item Calendar="26" Year="2018" DayType="Предпраздничный" Date="20180416" SwapDate=""/>
<Item Calendar="26" Year="2018" DayType="Праздник" Date="20180417" SwapDate=""/>
<Item Calendar="26" Year="2019" DayType="Предпраздничный" Date="20190506" SwapDate=""/>
<Item Calendar="26" Year="2019" DayType="Праздник" Date="20190507" SwapDate=""/>
<Item Calendar="58" Year="2016" DayType="Праздник" Date="20160510" SwapDate=""/>
<Item Calendar="58" Year="2017" DayType="Предпраздничный" Date="20170424" SwapDate=""/>
<Item Calendar="58" Year="2017" DayType="Праздник" Date="20170425" SwapDate=""/>
<Item Calendar="58" Year="2018" DayType="Предпраздничный" Date="20180416" SwapDate=""/>
<Item Calendar="58" Year="2018" DayType="Праздник" Date="20180417" SwapDate=""/>
<Item Calendar="58" Year="2019" DayType="Предпраздничный" Date="20190506" SwapDate=""/>
<Item Calendar="58" Year="2019" DayType="Праздник" Date="20190507" SwapDate=""/>
<Item Calendar="64" Year="2016" DayType="Праздник" Date="20160510" SwapDate=""/>
<Item Calendar="64" Year="2017" DayType="Предпраздничный" Date="20170424" SwapDate=""/>
<Item Calendar="64" Year="2017" DayType="Праздник" Date="20170425" SwapDate=""/>
<Item Calendar="64" Year="2018" DayType="Предпраздничный" Date="20180416" SwapDate=""/>
<Item Calendar="64" Year="2018" DayType="Праздник" Date="20180417" SwapDate=""/>
<Item Calendar="64" Year="2019" DayType="Предпраздничный" Date="20190506" SwapDate=""/>
<Item Calendar="64" Year="2019" DayType="Праздник" Date="20190507" SwapDate=""/>
<Item Calendar="75" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="75" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="75" Year="2017" DayType="Праздник" Date="20170227" SwapDate=""/>
<Item Calendar="75" Year="2018" DayType="Предпраздничный" Date="20180215" SwapDate=""/>
<Item Calendar="75" Year="2018" DayType="Праздник" Date="20180216" SwapDate=""/>
<Item Calendar="75" Year="2019" DayType="Предпраздничный" Date="20190205" SwapDate=""/>
<Item Calendar="75" Year="2019" DayType="Праздник" Date="20190206" SwapDate=""/>
<Item Calendar="85" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="85" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="85" Year="2017" DayType="Праздник" Date="20170227" SwapDate=""/>
<Item Calendar="85" Year="2018" DayType="Предпраздничный" Date="20180215" SwapDate=""/>
<Item Calendar="85" Year="2018" DayType="Праздник" Date="20180216" SwapDate=""/>
<Item Calendar="85" Year="2019" DayType="Предпраздничный" Date="20190205" SwapDate=""/>
<Item Calendar="85" Year="2019" DayType="Праздник" Date="20190206" SwapDate=""/>
<Item Calendar="91" Year="2016" DayType="Предпраздничный" Date="20160317" SwapDate=""/>
<Item Calendar="91" Year="2016" DayType="Праздник" Date="20160318" SwapDate=""/>
<Item Calendar="91" Year="2016" DayType="Праздник" Date="20160620" SwapDate=""/>
@@ -310,6 +365,7 @@
<Item Calendar="91" Year="2018" DayType="Праздник" Date="20180615" SwapDate=""/>
<Item Calendar="91" Year="2018" DayType="Предпраздничный" Date="20180820" SwapDate=""/>
<Item Calendar="91" Year="2018" DayType="Праздник" Date="20180821" SwapDate=""/>
<Item Calendar="91" Year="2019" DayType="Праздник" Date="20190318" SwapDate=""/>
<Item Calendar="92" Year="2016" DayType="Предпраздничный" Date="20160317" SwapDate=""/>
<Item Calendar="92" Year="2016" DayType="Праздник" Date="20160318" SwapDate=""/>
<Item Calendar="92" Year="2017" DayType="Предпраздничный" Date="20170317" SwapDate=""/>
@@ -317,6 +373,7 @@
<Item Calendar="92" Year="2017" DayType="Суббота" Date="20170320" SwapDate="20170318"/>
<Item Calendar="92" Year="2018" DayType="Праздник" Date="20180318" SwapDate="20180319"/>
<Item Calendar="92" Year="2018" DayType="Воскресенье" Date="20180319" SwapDate="20180318"/>
<Item Calendar="92" Year="2019" DayType="Праздник" Date="20190318" SwapDate=""/>
<Item Calendar="РФ" Year="2001" DayType="Праздник" Date="20010101" SwapDate=""/>
<Item Calendar="РФ" Year="2001" DayType="Праздник" Date="20010102" SwapDate=""/>
<Item Calendar="РФ" Year="2001" DayType="Праздник" Date="20010107" SwapDate="20010108"/>
@@ -741,4 +798,27 @@
<Item Calendar="РФ" Year="2018" DayType="Воскресенье" Date="20181105" SwapDate="20181104"/>
<Item Calendar="РФ" Year="2018" DayType="Предпраздничный" Date="20181229" SwapDate="20181231"/>
<Item Calendar="РФ" Year="2018" DayType="Суббота" Date="20181231" SwapDate="20181229"/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190101" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190102" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190103" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190104" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190105" SwapDate="20190502"/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190106" SwapDate="20190503"/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190107" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190108" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Предпраздничный" Date="20190222" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190223" SwapDate="20190510"/>
<Item Calendar="РФ" Year="2019" DayType="Предпраздничный" Date="20190307" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190308" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Предпраздничный" Date="20190430" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190501" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Суббота" Date="20190502" SwapDate="20190105"/>
<Item Calendar="РФ" Year="2019" DayType="Воскресенье" Date="20190503" SwapDate="20190106"/>
<Item Calendar="РФ" Year="2019" DayType="Предпраздничный" Date="20190508" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190509" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Суббота" Date="20190510" SwapDate="20190223"/>
<Item Calendar="РФ" Year="2019" DayType="Предпраздничный" Date="20190611" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20190612" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Праздник" Date="20191104" SwapDate=""/>
<Item Calendar="РФ" Year="2019" DayType="Предпраздничный" Date="20191231" SwapDate=""/>
</Items>
@@ -169,9 +169,10 @@
КомпонентыОбмена.СвойстваУзлаПланаОбмена = ОбменДаннымиXDTOСервер.СвойстваУзлаПланаОбмена(
КомпонентыОбмена.УзелКорреспондента);
ОбменДаннымиXDTOСервер.ИнициализироватьТаблицыПравилОбмена(КомпонентыОбмена);
ОбменДаннымиXDTOСервер.ЗаполнитьСтруктуруНастроекXDTO(КомпонентыОбмена);
ОбменДаннымиXDTOСервер.ЗаполнитьПоддерживаемыеОбъектыXDTO(КомпонентыОбмена);
ОбменДаннымиXDTOСервер.ИнициализироватьТаблицыПравилОбмена(КомпонентыОбмена);
КонецЕсли;
#КонецОбласти
@@ -214,7 +215,7 @@
Если Не КомпонентыОбмена.ФлагОшибки Тогда
ОбработкаДляЗагрузкиДанных().ПоместитьСообщениеДляСопоставленияДанных(ДанныеВыгрузкиXML);
Иначе
ОбработкаДляЗагрузкиДанных().ПоместитьСообщениеДляСопоставленияДанных("");
ОбработкаДляЗагрузкиДанных().ПоместитьСообщениеДляСопоставленияДанных(Неопределено);
КонецЕсли;
Иначе
Если Не КомпонентыОбмена.ФлагОшибки Тогда
@@ -515,6 +516,24 @@
КомпонентыОбмена = ОбменДаннымиXDTOСервер.ИнициализироватьКомпонентыОбмена("Получение");
КомпонентыОбмена.УзелКорреспондента = УзелОбменаЗагрузкаДанных;
КомпонентыОбмена.КлючСообщенияЖурналаРегистрации = КлючСообщенияЖурналаРегистрации;
КомпонентыОбмена.ВедениеПротоколаДанных.ВыводВПротоколИнформационныхСообщений = ВыводВПротоколИнформационныхСообщений;
КомпонентыОбмена.СостояниеОбменаДанными.ДатаНачала = ТекущаяДатаСеанса();
ОбменДаннымиXDTOСервер.ИнициализироватьВедениеПротоколаОбмена(КомпонентыОбмена, ИмяФайлаПротоколаОбмена);
Если Не ЗначениеЗаполнено(ДанныеВыгрузкиXML) Тогда
ОбменДаннымиXDTOСервер.ЗаписатьВПротоколВыполнения(КомпонентыОбмена, 15);
ОбменДаннымиXDTOСервер.ЗавершитьВедениеПротоколаОбмена(КомпонентыОбмена);
// Очищаем идентификатор сообщения для сопоставления.
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ПоместитьСообщениеДляСопоставленияДанных(
УзелОбменаЗагрузкаДанных, "");
Возврат;
КонецЕсли;
КаталогВыгрузки = ОбменДаннымиПовтИсп.КаталогВременногоХранилищаФайлов();
ИмяВременногоФайла = ОбменДаннымиСервер.УникальноеИмяФайлаСообщенияОбмена();
@@ -588,6 +607,11 @@
ОбменДаннымиXDTOСервер.ОбновитьНастройкиXDTOКорреспондента(КомпонентыОбмена);
ОбменДаннымиXDTOСервер.ОбновитьПрефиксКорреспондента(КомпонентыОбмена);
Если ИнициализироватьТаблицыПравил Тогда
ОбменДаннымиXDTOСервер.ИнициализироватьТаблицыПравилОбмена(КомпонентыОбмена);
ОбменДаннымиXDTOСервер.ЗаполнитьСтруктуруНастроекXDTO(КомпонентыОбмена);
КонецЕсли;
ОбменДаннымиXDTOСервер.ЗаполнитьПоддерживаемыеОбъектыXDTO(КомпонентыОбмена);
КонецЕсли;
@@ -621,10 +645,6 @@
КонецЕсли;
КонецЕсли;
Если ИнициализироватьТаблицыПравил Тогда
ОбменДаннымиXDTOСервер.ИнициализироватьТаблицыПравилОбмена(КомпонентыОбмена);
КонецЕсли;
КонецПроцедуры
Процедура ПослеОткрытияФайлаВыгрузки(Отказ = Ложь)
@@ -396,6 +396,10 @@
&НаСервереБезКонтекста
Процедура ПриОжиданииВыгрузкиДанныхДляСопоставленияНаСервере(ПараметрыОбработчика, ПродолжитьОжидание)
Если Не ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
Возврат;
КонецЕсли;
МодульПомощникНастройки = ОбщегоНазначения.ОбщийМодуль(
"Обработки.ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса");
МодульПомощникНастройки.ПриОжиданииВыгрузкиДанныхДляСопоставления(ПараметрыОбработчика, ПродолжитьОжидание);
@@ -555,6 +555,141 @@
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаПолучениеСообщенияОбмена</name>
<id>996</id>
<items xsi:type="form:FormGroup">
<name>ГруппаПолучениеСообщенияОбмена</name>
<id>998</id>
<items xsi:type="form:Decoration">
<name>ДекорацияПолучениеСообщенияОбменаКартинка</name>
<id>1000</id>
<title>
<key>ru</key>
<value>Декорация получение сообщения обмена картинка</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекорацияПолучениеСообщенияОбменаКартинкаРасширеннаяПодсказка</name>
<id>1002</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДекорацияПолучениеСообщенияОбменаКартинкаКонтекстноеМеню</name>
<id>1001</id>
<autoFill>true</autoFill>
</contextMenu>
<width>6</width>
<autoMaxWidth>true</autoMaxWidth>
<height>2</height>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ДлительнаяОперация48</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДекорацияПолучениеСообщенияОбменаНадпись</name>
<id>1003</id>
<title>
<key>ru</key>
<value>Выполняется получение данных.
Пожалуйста, подождите...</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекорацияПолучениеСообщенияОбменаНадписьРасширеннаяПодсказка</name>
<id>1005</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДекорацияПолучениеСообщенияОбменаНадписьКонтекстноеМеню</name>
<id>1004</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<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>999</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<verticalAlign>Top</verticalAlign>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страница получение сообщения обмена</value>
</title>
<extendedTooltip>
<name>СтраницаПолучениеСообщенияОбменаРасширеннаяПодсказка</name>
<id>997</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">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаОжиданияАнализаДанных</name>
<id>454</id>
@@ -635,7 +770,7 @@
<id>703</id>
<title>
<key>ru</key>
<value>Выполняется анализ данных. Это может занять несколько минут.
<value>Выполняется анализ полученных данных. Это может занять несколько минут.
Пожалуйста, подождите...</value>
</title>
<visible>true</visible>
@@ -1915,8 +2050,116 @@
<verticalStretch>true</verticalStretch>
<autoMaxCardHeight>true</autoMaxCardHeight>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаЗавершениеСопоставления</name>
<id>991</id>
<items xsi:type="form:FormField">
<name>ЗакончитьСопоставлениеДанных</name>
<id>988</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЗакончитьСопоставлениеДанных</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<handlers>
<event>OnChange</event>
<name>ЗакончитьСопоставлениеДанныхПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ЗакончитьСопоставлениеДанныхРасширеннаяПодсказка</name>
<id>990</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗакончитьСопоставлениеДанныхКонтекстноеМеню</name>
<id>989</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ЗагрузитьСообщениеПослеСопоставления</name>
<id>993</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЗагрузитьСообщениеПослеСопоставления</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<handlers>
<event>OnChange</event>
<name>ЗагрузитьСообщениеПослеСопоставленияПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ЗагрузитьСообщениеПослеСопоставленияРасширеннаяПодсказка</name>
<id>995</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗагрузитьСообщениеПослеСопоставленияКонтекстноеМеню</name>
<id>994</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа завершение сопоставления</value>
</title>
<extendedTooltip>
<name>ГруппаЗавершениеСопоставленияРасширеннаяПодсказка</name>
<id>992</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>Декорация7</name>
<name>ДекорацияПодсказкаПереходаИнформацииСтатистики</name>
<id>315</id>
<title>
<key>ru</key>
@@ -1928,7 +2171,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация7ExtendedTooltip</name>
<name>ДекорацияПодсказкаПереходаИнформацииСтатистикиРасширеннаяПодсказка</name>
<id>782</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1938,17 +2181,18 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>Декорация7КонтекстноеМеню</name>
<name>ДекорацияПодсказкаПереходаИнформацииСтатистикиКонтекстноеМеню</name>
<id>316</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<height>2</height>
<autoMaxHeight>true</autoMaxHeight>
<verticalStretch>true</verticalStretch>
<skipOnInput>false</skipOnInput>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
<verticalAlign>Bottom</verticalAlign>
<verticalAlign>Top</verticalAlign>
</extInfo>
</items>
<visible>true</visible>
@@ -6245,7 +6489,7 @@
<id>986</id>
<title>
<key>ru</key>
<value>Сохранить результаты сопоставления</value>
<value>Сохранить и закрыть</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -6271,7 +6515,7 @@
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>КомандаДалее1</name>
<name>КомандаДалееИнформацииСтатистики</name>
<id>982</id>
<visible>true</visible>
<enabled>true</enabled>
@@ -6279,7 +6523,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КомандаДалее1РасширеннаяПодсказка</name>
<name>КомандаДалееИнформацииСтатистикиРасширеннаяПодсказка</name>
<id>983</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -7791,6 +8035,57 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ЗакончитьСопоставлениеДанных</name>
<title>
<key>ru</key>
<value>Закончить сопоставление данных</value>
</title>
<id>61</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ЗагрузитьСообщениеПослеСопоставления</name>
<title>
<key>ru</key>
<value>Загрузить сообщение обмена</value>
</title>
<id>62</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>РежимДополненияВыгрузки</name>
<title>
<key>ru</key>
<value>Режим дополнения выгрузки</value>
</title>
<id>63</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ОбновитьИнформациюСопоставленияПолностью</name>
<title>
@@ -67,6 +67,8 @@
ВызватьИсключение НСтр("ru = 'Для выбранного узла сопоставление данных не предусмотрено.'");
КонецЕсли;
ПолученоСообщениеДляСопоставленияДанных = ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(Объект.УзелИнформационнойБазы);
Если Не Параметры.Свойство("ПолучитьДанные", ПолучитьДанные) Тогда
ПолучитьДанные = Истина;
КонецЕсли;
@@ -82,23 +84,23 @@
МодельСервиса = ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
Параметры.Свойство("ВидТранспортаСообщенийОбмена", Объект.ВидТранспортаСообщенийОбмена);
Параметры.Свойство("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
Параметры.Свойство("РежимДополненияВыгрузки", РежимДополненияВыгрузки);
Параметры.Свойство("РасширенныйРежимДополненияВыгрузки", ДополнениеВыгрузкиРасширенныйРежим);
Параметры.Свойство("ВидТранспортаСообщенийОбмена", Объект.ВидТранспортаСообщенийОбмена);
ПроверятьРасхождениеВерсий = Истина;
ПолученоСообщениеДляСопоставленияДанных = ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(Объект.УзелИнформационнойБазы);
НаименованиеКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.УзелИнформационнойБазы, "Наименование");
УстановитьЗаголовокФормы();
ИнициализироватьПомощникНастройкиРасписания(ЭтоЗапускИзДругогоПриложения);
ИнициализироватьРеквизитыДополненияВыгрузки();
Если РежимДополненияВыгрузки Тогда
ИнициализироватьРеквизитыДополненияВыгрузки();
КонецЕсли;
ИнициализироватьНастройкиТранспортаСообщенийОбмена();
@@ -118,41 +120,51 @@
Возврат;
КонецЕсли;
ТекущаяСтраница = Элементы.ПанельОсновная.ТекущаяСтраница;
Если ТекущаяСтраница = Элементы.СтраницаНачала Тогда
ТекстПодтверждения = НСтр("ru='Отменить синхронизацию данных?'");
Иначе
ТекстПодтверждения = НСтр("ru='Прервать синхронизацию данных?'");
КонецЕсли;
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(ЭтотОбъект, Отказ, ЗавершениеРаботы,
ТекстПодтверждения, "ЗакрытьФормуБезусловно");
НСтр("ru = 'Выйти из помощника?'"), "ЗакрытьФормуБезусловно");
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
Если ДлительнаяОперация Тогда
ЗавершитьВыполнениеДлительнойОперации(ИдентификаторЗадания);
КонецЕсли;
// удаляем временный каталог
Если ПолученоСообщениеДляСопоставленияДанных Тогда
Если ЗакончитьСопоставлениеДанных Тогда
УдалитьСообщениеДляСопоставленияДанных(Объект.УзелИнформационнойБазы);
Иначе
ПоместитьСообщениеДляСопоставленияДанныхВХранилище(Объект.УзелИнформационнойБазы, Объект.ИмяФайлаСообщенияОбмена);
КонецЕсли;
КонецЕсли;
УдалитьВременныйКаталогСообщенийОбмена(Объект.ИмяВременногоКаталогаСообщенийОбмена);
Если ЗначениеЗаполнено(ПараметрыПовторногоОткрытияФормы)
И ПараметрыПовторногоОткрытияФормы.Свойство("НоваяНастройкаСинхронизацииДанных") Тогда
НоваяНастройкаСинхронизацииДанных = ПараметрыПовторногоОткрытияФормы.НоваяНастройкаСинхронизацииДанных;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("УзелИнформационнойБазы", НоваяНастройкаСинхронизацииДанных);
ПараметрыФормы.Вставить("РасширенныйРежимДополненияВыгрузки", Истина);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОбменДаннымиКлиент.ОткрытьФормуПослеЗакрытияТекущей(ЭтотОбъект, "Обработка.ПомощникИнтерактивногоОбменаДанными.Форма", ПараметрыФормы, ПараметрыОткрытия);
ОбменДаннымиКлиент.ОткрытьФормуПослеЗакрытияТекущей(ЭтотОбъект,
"Обработка.ПомощникИнтерактивногоОбменаДанными.Форма", ПараметрыФормы, ПараметрыОткрытия);
Иначе
Оповестить("ЗакрытаФормаПомощникаСопоставленияОбъектов");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -217,6 +229,23 @@
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Страница СтраницаИнформацииСтатистики
&НаКлиенте
Процедура ЗакончитьСопоставлениеДанныхПриИзменении(Элемент)
ПриИзмененииФлагаЗакончитьСопоставлениеДанных();
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьСообщениеПослеСопоставленияПриИзменении(Элемент)
ПриИзмененииФлагаЗагрузитьСообщениеПослеСопоставления();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Страница СтраницаВопросОСоставеВыгрузки
@@ -982,6 +1011,59 @@
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииФлагаЗакончитьСопоставлениеДанных()
Элементы.ЗагрузитьСообщениеПослеСопоставления.Видимость = ЗакончитьСопоставлениеДанных;
ОбновитьДоступностьКомандПереходаИнформацииСтатистики();
ОбновитьЗаголовокПодсказкиПереходаИнформацииСтатистики();
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииФлагаЗагрузитьСообщениеПослеСопоставления()
ОбновитьДоступностьКомандПереходаИнформацииСтатистики();
ОбновитьЗаголовокПодсказкиПереходаИнформацииСтатистики();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗаголовокПодсказкиПереходаИнформацииСтатистики()
Если ПолученоСообщениеДляСопоставленияДанных Тогда
Если ЗакончитьСопоставлениеДанных Тогда
Если ЗагрузитьСообщениеПослеСопоставления Тогда
Элементы.ДекорацияПодсказкаПереходаИнформацииСтатистики.Заголовок =
НСтр("ru = 'Нажмите кнопку ""Далее"" для завершения сопоставления данных и загрузки сообщения обмена.'");
Иначе
Элементы.ДекорацияПодсказкаПереходаИнформацииСтатистики.Заголовок =
НСтр("ru = 'Нажмите кнопку ""Сохранить и закрыть"" для завершения сопоставления данных и выхода из помощника.'");
КонецЕсли;
Иначе
Элементы.ДекорацияПодсказкаПереходаИнформацииСтатистики.Заголовок =
НСтр("ru = 'Нажмите кнопку ""Сохранить и закрыть"" для сохранения результатов сопоставления и выхода из помощника.
|При следующем запуске помощника можно будет продолжить сопоставление данных.'");
КонецЕсли;
Иначе
Элементы.ДекорацияПодсказкаПереходаИнформацииСтатистики.Заголовок =
НСтр("ru = 'Нажмите кнопку ""Далее"" для синхронизации данных.'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДоступностьКомандПереходаИнформацииСтатистики()
Элементы.КомандаГотово.Доступность = Не ЗакончитьСопоставлениеДанных Или Не ЗагрузитьСообщениеПослеСопоставления;
Элементы.КомандаГотово.КнопкаПоУмолчанию = ЗакончитьСопоставлениеДанных;
Элементы.КомандаДалееИнформацииСтатистики.Доступность = ЗакончитьСопоставлениеДанных И ЗагрузитьСообщениеПослеСопоставления;
Элементы.КомандаДалееИнформацииСтатистики.КнопкаПоУмолчанию = ЗакончитьСопоставлениеДанных И ЗагрузитьСообщениеПослеСопоставления;
КонецПроцедуры
#КонецОбласти
#Область ПроцедурыИФункцииСервер
@@ -1516,6 +1598,13 @@
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УдалитьСообщениеДляСопоставленияДанных(УзелОбмена)
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ПоместитьСообщениеДляСопоставленияДанных(УзелОбмена, Неопределено);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УдалитьВременныйКаталогСообщенийОбмена(ИмяВременногоКаталога)
@@ -1525,14 +1614,39 @@
УдалитьФайлы(ИмяВременногоКаталога);
ИмяВременногоКаталога = "";
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПоместитьСообщениеДляСопоставленияДанныхВХранилище(Корреспондент, ИмяФайлаСообщенияОбмена)
Отбор = Новый Структура("УзелИнформационнойБазы", Корреспондент);
ОбщиеНастройки = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.Получить(Отбор);
Если ЗначениеЗаполнено(ОбщиеНастройки.СообщениеДляСопоставленияДанных) Тогда
Файл = Новый Файл(ИмяФайлаСообщенияОбмена);
Если Файл.Существует() Тогда
ИмяФайлаСообщенияВХранилище = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(
ОбменДаннымиПовтИсп.КаталогВременногоХранилищаФайлов(), Файл.Имя);
ПереместитьФайл(ИмяФайлаСообщенияОбмена, ИмяФайлаСообщенияВХранилище);
ОбменДаннымиСервер.ПоместитьФайлВХранилище(ИмяФайлаСообщенияВХранилище,
Новый УникальныйИдентификатор(ОбщиеНастройки.СообщениеДляСопоставленияДанных));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗавершитьВыполнениеДлительнойОперации(ИдентификаторЗадания)
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
@@ -2190,7 +2304,7 @@
Если РезультатАнализа.Свойство("ТекстОшибки") Тогда
ОшибкаРасхожденияВерсийПриПолученииДанных = РезультатАнализа;
ИначеЕсли РезультатАнализа.Свойство("Отказ") Тогда
ИначеЕсли РезультатАнализа.Отказ Тогда
ПропуститьПолучениеДанных = Истина;
ЗафиксироватьОшибку = Истина;
@@ -2260,6 +2374,11 @@
ПропуститьСтраницу = Истина;
КонецЕсли;
Если Не ПропуститьСтраницу Тогда
Элементы.ГруппаЗавершениеСопоставления.Видимость = ПолученоСообщениеДляСопоставленияДанных;
ПриИзмененииФлагаЗакончитьСопоставлениеДанных();
КонецЕсли;
КонецФункции
&НаКлиенте
@@ -2320,7 +2439,9 @@
Если ПропуститьПолучениеДанных Тогда
ПропуститьСтраницу = Истина;
УдалитьВременныйКаталогСообщенийОбмена(Объект.ИмяВременногоКаталогаСообщенийОбмена);
Если Не ПолученоСообщениеДляСопоставленияДанных Тогда
УдалитьВременныйКаталогСообщенийОбмена(Объект.ИмяВременногоКаталогаСообщенийОбмена);
КонецЕсли;
Иначе
ИнициализироватьПеременныеОбработки();
КонецЕсли;
@@ -2535,6 +2656,28 @@
КонецФункции
&НаКлиенте
Функция Подключаемый_СтраницаОжиданияВыгрузкиДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее)
Если ДлительнаяОперацияЗавершена Тогда
Если ДлительнаяОперацияЗавершенаСОшибкой Тогда
ОбменДаннымиВызовСервера.ЗафиксироватьЗавершениеОбменаСОшибкой(
Объект.УзелИнформационнойБазы,
"ВыгрузкаДанных",
ДатаНачалаОперации,
СообщениеОбОшибке);
Иначе
ОбменДаннымиВызовСервера.ЗафиксироватьВыполнениеВыгрузкиДанныхВРежимеДлительнойОперации(
Объект.УзелИнформационнойБазы, ДатаНачалаОперации);
КонецЕсли;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ПриНачалеВыгрузкиДанных(Отказ)
@@ -2726,28 +2869,6 @@
КонецПроцедуры
&НаКлиенте
Функция Подключаемый_СтраницаОжиданияВыгрузкиДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее)
Если ДлительнаяОперацияЗавершена Тогда
Если ДлительнаяОперацияЗавершенаСОшибкой Тогда
ОбменДаннымиВызовСервера.ЗафиксироватьЗавершениеОбменаСОшибкой(
Объект.УзелИнформационнойБазы,
"ВыгрузкаДанных",
ДатаНачалаОперации,
СообщениеОбОшибке);
Иначе
ОбменДаннымиВызовСервера.ЗафиксироватьВыполнениеВыгрузкиДанныхВРежимеДлительнойОперации(
Объект.УзелИнформационнойБазы, ДатаНачалаОперации);
КонецЕсли;
КонецЕсли;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Страницы итоговой информации
@@ -2758,6 +2879,8 @@
ОбновитьОтображениеЭлементовСтатусаОбменаДанными();
ЗакрытьФормуБезусловно = Истина;
Возврат Неопределено;
КонецФункции
@@ -2801,8 +2924,11 @@
КонецЕсли;
Если ОтправитьДанные Тогда
РезультатВыгрузкиДанных = "";
ТаблицаПереходовНоваяСтрока("СтраницаВопросОСоставеВыгрузки", "СтраницаНавигацииПродолжение", "СтраницаВопросОСоставеВыгрузки_ПриОткрытии");
Если РежимДополненияВыгрузки Тогда
РезультатВыгрузкиДанных = "";
ТаблицаПереходовНоваяСтрока("СтраницаВопросОСоставеВыгрузки", "СтраницаНавигацииПродолжение", "СтраницаВопросОСоставеВыгрузки_ПриОткрытии");
КонецЕсли;
// Выгрузка и загрузка данных.
ТаблицаПереходовНоваяСтрокаДлительнаяОперация(ИмяСтраницыСинхронизацияВыгрузка, "СтраницаНавигацииОжидание", Истина, "СтраницаОжиданияВыгрузкиДанных_ОбработкаДлительнойОперации", "ВыгрузкаДанных_ПриОткрытии");
@@ -2841,12 +2967,14 @@
КонецЕсли;
Если ОтправитьДанные Тогда
// Настройка выгрузки данных.
РезультатВыгрузкиДанных = "";
ТаблицаПереходовНоваяСтрока("СтраницаВопросОСоставеВыгрузки", "СтраницаНавигацииПродолжение", "СтраницаВопросОСоставеВыгрузки_ПриОткрытии");
// Длительная операция регистрации дополнительных данных к выгрузке.
ТаблицаПереходовНоваяСтрокаДлительнаяОперация("СтраницаРегистрацияДанных", "СтраницаНавигацииОжидание", Истина, "СтраницаРегистрацияДанных_ОбработкаДлительнойОперации", "СтраницаРегистрацияДанных_ПриОткрытии");
Если РежимДополненияВыгрузки Тогда
// Настройка выгрузки данных.
РезультатВыгрузкиДанных = "";
ТаблицаПереходовНоваяСтрока("СтраницаВопросОСоставеВыгрузки", "СтраницаНавигацииПродолжение", "СтраницаВопросОСоставеВыгрузки_ПриОткрытии");
// Длительная операция регистрации дополнительных данных к выгрузке.
ТаблицаПереходовНоваяСтрокаДлительнаяОперация("СтраницаРегистрацияДанных", "СтраницаНавигацииОжидание", Истина, "СтраницаРегистрацияДанных_ОбработкаДлительнойОперации", "СтраницаРегистрацияДанных_ПриОткрытии");
КонецЕсли;
// Выгрузка данных.
ТаблицаПереходовНоваяСтрокаДлительнаяОперация(ИмяСтраницыСинхронизацияВыгрузка, "СтраницаНавигацииОжидание", Истина, "СтраницаОжиданияВыгрузкиДанных_ОбработкаДлительнойОперации", "ВыгрузкаДанных_ПриОткрытии");
@@ -6,9 +6,13 @@
//
Процедура ВыполнитьАвтоматическоеСопоставлениеДанных(Параметры, АдресВременногоХранилища) Экспорт
ПоместитьВоВременноеХранилище(
РезультатАвтоматическогоСопоставленияДанных(Параметры.УзелИнформационнойБазы, Параметры.ИмяФайлаСообщенияОбмена, Параметры.ИмяВременногоКаталогаСообщенийОбмена,
Параметры.ПроверятьРасхождениеВерсий), АдресВременногоХранилища);
Результат = РезультатАвтоматическогоСопоставленияДанных(
Параметры.УзелИнформационнойБазы,
Параметры.ИмяФайлаСообщенияОбмена,
Параметры.ИмяВременногоКаталогаСообщенийОбмена,
Параметры.ПроверятьРасхождениеВерсий);
ПоместитьВоВременноеХранилище(Результат, АдресВременногоХранилища);
КонецПроцедуры
@@ -37,9 +41,17 @@
Файл = Новый Файл(ИмяВременногоФайла);
Если Файл.Существует() Тогда
СтруктураДанных.ИмяВременногоКаталогаСообщенийОбмена = Файл.Путь;
СтруктураДанных.ИдентификаторФайлаПакетаДанных = Файл.ПолучитьВремяИзменения();
СтруктураДанных.ИмяФайлаСообщенияОбмена = Файл.ПолноеИмя;
ИдентификаторФайлаПакетаДанных = Файл.ПолучитьВремяИзменения();
ИмяВременногоКаталогаДляОбмена = ОбменДаннымиСервер.СоздатьВременныйКаталогСообщенийОбмена();
ИмяВременногоФайлаДляОбмена = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(
ИмяВременногоКаталогаДляОбмена, ОбменДаннымиСервер.УникальноеИмяФайлаСообщенияОбмена());
ПереместитьФайл(ИмяВременногоФайла, ИмяВременногоФайлаДляОбмена);
СтруктураДанных.ИмяВременногоКаталогаСообщенийОбмена = ИмяВременногоКаталогаДляОбмена;
СтруктураДанных.ИдентификаторФайлаПакетаДанных = ИдентификаторФайлаПакетаДанных;
СтруктураДанных.ИмяФайлаСообщенияОбмена = ИмяВременногоФайлаДляОбмена;
КонецЕсли;
@@ -231,7 +243,7 @@
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне(
"Обработки.ПомощникСозданияОбменаДанными.ВыгрузитьДанныеДляСопоставления",
"Обработки.ПомощникИнтерактивногоОбменаДанными.ВыгрузитьДанныеДляСопоставления",
ПараметрыПроцедуры,
ПараметрыВыполнения);
@@ -300,6 +312,50 @@
КонецПроцедуры
Процедура ВыгрузитьДанныеДляСопоставления(Параметры, АдресРезультата) Экспорт
НастройкиВыгрузки = Неопределено;
Параметры.Свойство("НастройкиВыгрузки", НастройкиВыгрузки);
Результат = Новый Структура;
Результат.Вставить("ДанныеВыгружены", Истина);
Результат.Вставить("СообщениеОбОшибке", "");
ПараметрыОбмена = ОбменДаннымиСервер.ПараметрыОбмена();
ПараметрыОбмена.ВыполнятьЗагрузку = Ложь;
ПараметрыОбмена.ВыполнятьВыгрузку = Истина;
ПараметрыОбмена.ВидТранспортаСообщенийОбмена = НастройкиВыгрузки.ВидТранспорта;
ПараметрыОбмена.СообщениеДляСопоставленияДанных = Истина;
Если НастройкиВыгрузки.Свойство("WSПароль") Тогда
ПараметрыОбмена.Вставить("ПараметрыАутентификации", НастройкиВыгрузки.WSПароль);
КонецЕсли;
Отказ = Ложь;
Попытка
ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
НастройкиВыгрузки.УзелОбмена, ПараметрыОбмена, Отказ);
Исключение
Результат.ДанныеВыгружены = Ложь;
Результат.СообщениеОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииВыгрузкаДанныхДляСопоставления(),
УровеньЖурналаРегистрации.Ошибка, , , Результат.СообщениеОбОшибке);
КонецПопытки;
Результат.ДанныеВыгружены = Результат.ДанныеВыгружены И Не Отказ;
Если Не Результат.ДанныеВыгружены
И ПустаяСтрока(Результат.СообщениеОбОшибке) Тогда
Результат.СообщениеОбОшибке = НСтр("ru = 'При выполнении выгрузки данных для сопоставления возникли ошибки (см. Журнал регистрации).'");
КонецЕсли;
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
КонецПроцедуры
#Область РаботаСДлительнымиОперациями
// Для внутреннего использования.
//
Процедура ПриНачалеДлительнойОперации(ФоновоеЗадание, ПараметрыОбработчика, ПродолжитьОжидание = Истина)
@@ -384,66 +440,6 @@
КонецПроцедуры
// Для внутреннего использования.
//
Функция РезультатАвтоматическогоСопоставленияДанных(Знач Корреспондент, Знач ИмяФайлаСообщенияОбмена, Знач ИмяВременногоКаталогаСообщенийОбмена, ПроверятьРасхождениеВерсий)
// Выполняем автоматическое сопоставление данных, полученных от корреспондента.
// Получаем статистику сопоставления.
УстановитьПривилегированныйРежим(Истина);
ОбменДаннымиСервер.ИнициализироватьПараметрыПроверкиРасхожденияВерсий(ПроверятьРасхождениеВерсий);
ПомощникИнтерактивногоОбменаДанными = Создать();
ПомощникИнтерактивногоОбменаДанными.УзелИнформационнойБазы = Корреспондент;
ПомощникИнтерактивногоОбменаДанными.ИмяФайлаСообщенияОбмена = ИмяФайлаСообщенияОбмена;
ПомощникИнтерактивногоОбменаДанными.ИмяВременногоКаталогаСообщенийОбмена = ИмяВременногоКаталогаСообщенийОбмена;
ПомощникИнтерактивногоОбменаДанными.ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Корреспондент);
ПомощникИнтерактивногоОбменаДанными.ВидТранспортаСообщенийОбмена = Неопределено;
// Выполняем анализ сообщения обмена.
Отказ = Ложь;
РезультатВыполненияОбмена = Неопределено;
ПомощникИнтерактивногоОбменаДанными.ВыполнитьАнализСообщенияОбмена(Отказ, РезультатВыполненияОбмена);
Если Отказ Тогда
Если ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных.ЕстьОшибка Тогда
Возврат ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных;
ИначеЕсли РезультатВыполненияОбмена <> Неопределено Тогда
Результат = Новый Структура;
Результат.Вставить("ИнформацияСтатистики", Неопределено);
Результат.Вставить("ВсеДанныеСопоставлены", Истина);
Результат.Вставить("СтатистикаПустая", Истина);
Результат.Вставить("Отказ", Истина);
Результат.Вставить("РезультатВыполненияОбмена", РезультатВыполненияОбмена);
Возврат Результат;
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось загрузить данные из ""%1"" (этап анализа данных).'"),
Строка(Корреспондент));
КонецЕсли;
КонецЕсли;
// Выполняем автоматическое сопоставление и получаем статистику сопоставления.
Отказ = Ложь;
ПомощникИнтерактивногоОбменаДанными.ВыполнитьАвтоматическоеСопоставлениеПоУмолчаниюИПолучитьСтатистикуСопоставления(Отказ);
Если Отказ Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось загрузить данные из ""%1"" (этап автоматического сопоставления данных).'"),
Строка(Корреспондент));
КонецЕсли;
ТаблицаИнформацииСтатистики = ПомощникИнтерактивногоОбменаДанными.ТаблицаИнформацииСтатистики();
Результат = Новый Структура;
Результат.Вставить("ИнформацияСтатистики", ТаблицаИнформацииСтатистики);
Результат.Вставить("ВсеДанныеСопоставлены", ВсеДанныеСопоставлены(ТаблицаИнформацииСтатистики));
Результат.Вставить("СтатистикаПустая", ТаблицаИнформацииСтатистики.Количество() = 0);
Результат.Вставить("ЕстьНеСопоставленнаяНСИ", ЕстьНеСопоставленнаяНСИ(ТаблицаИнформацииСтатистики));
Возврат Результат;
КонецФункции
Процедура ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчика, ФоновоеЗадание)
ПараметрыОбработчика = Новый Структура;
@@ -471,4 +467,214 @@
#КонецОбласти
// Выполняет анализ входящего сообщения обмена. Заполняет данными таблицу ИнформацияСтатистики.
//
// Параметры:
// Параметры - Структура
// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибок при работе процедуры.
// РезультатВыполненияОбмена - ПеречислениеСсылка.РезультатыВыполненияОбмена - результат выполнения обмена данными.
//
Функция ТаблицаСтатистикиСообщенияОбмена(Параметры,
Отказ, РезультатВыполненияОбмена = Неопределено, СообщениеОбОшибке = "")
ИнформацияСтатистики = Неопределено;
ИнициализироватьТаблицуСтатистики(ИнформацияСтатистики);
ИмяВременногоКаталогаСообщенийОбмена = Параметры.ИмяВременногоКаталогаСообщенийОбмена;
УзелИнформационнойБазы = Параметры.УзелИнформационнойБазы;
ИмяФайлаСообщенияОбмена = Параметры.ИмяФайлаСообщенияОбмена;
Если ПустаяСтрока(ИмяВременногоКаталогаСообщенийОбмена) Тогда
// Не удалось получить данные из другой программы.
Отказ = Истина;
Возврат ИнформацияСтатистики;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
СтруктураНастроекОбмена = ОбменДаннымиСервер.СтруктураНастроекОбменаДляСеансаИнтерактивнойЗагрузки(
УзелИнформационнойБазы, ИмяФайлаСообщенияОбмена);
Если СтруктураНастроекОбмена.Отказ Тогда
Возврат ИнформацияСтатистики;
КонецЕсли;
ОбработкаОбменаДанными = СтруктураНастроекОбмена.ОбработкаОбменаДанными;
ПараметрыАнализа = Новый Структура("СобиратьСтатистикуКлассификаторов", Истина);
ОбработкаОбменаДанными.ВыполнитьАнализСообщенияОбмена(ПараметрыАнализа);
РезультатВыполненияОбмена = ОбработкаОбменаДанными.РезультатВыполненияОбмена();
Если ОбработкаОбменаДанными.ФлагОшибки() Тогда
Отказ = Истина;
СообщениеОбОшибке = ОбработкаОбменаДанными.СтрокаСообщенияОбОшибке();
Возврат ИнформацияСтатистики;
КонецЕсли;
ТаблицаДанныхЗаголовкаПакета = ОбработкаОбменаДанными.ТаблицаДанныхЗаголовкаПакета();
Для Каждого СтрокаДанныхЗаголовкаПакета Из ТаблицаДанныхЗаголовкаПакета Цикл
СтрокаИнформацияСтатистики = ИнформацияСтатистики.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаИнформацияСтатистики, СтрокаДанныхЗаголовкаПакета);
КонецЦикла;
// Дополняем таблицу статистики служебными данными.
СообщениеОбОшибке = "";
ДополнитьТаблицуСтатистики(ИнформацияСтатистики, Отказ, СообщениеОбОшибке);
// Определяем строки таблицы с признаком "ОдинКоМногим".
ИнформацияСтатистикиВременная = ИнформацияСтатистики.Скопировать(, "ИмяТаблицыПриемника, ЭтоУдалениеОбъекта");
ДобавитьКолонкуСоЗначениемВТаблицу(ИнформацияСтатистикиВременная, 1, "Итератор");
ИнформацияСтатистикиВременная.Свернуть("ИмяТаблицыПриемника, ЭтоУдалениеОбъекта", "Итератор");
Для Каждого СтрокаТаблицы Из ИнформацияСтатистикиВременная Цикл
Если СтрокаТаблицы.Итератор > 1 И Не СтрокаТаблицы.ЭтоУдалениеОбъекта Тогда
СтрокиИнформацияСтатистики = ИнформацияСтатистики.НайтиСтроки(Новый Структура("ИмяТаблицыПриемника, ЭтоУдалениеОбъекта",
СтрокаТаблицы.ИмяТаблицыПриемника, СтрокаТаблицы.ЭтоУдалениеОбъекта));
Для Каждого СтрокаИнформацияСтатистики Из СтрокиИнформацияСтатистики Цикл
СтрокаИнформацияСтатистики["ОдинКоМногим"] = Истина;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат ИнформацияСтатистики;
КонецФункции
// Для внутреннего использования.
//
Функция РезультатАвтоматическогоСопоставленияДанных(Знач Корреспондент,
Знач ИмяФайлаСообщенияОбмена, Знач ИмяВременногоКаталогаСообщенийОбмена, ПроверятьРасхождениеВерсий)
Результат = Новый Структура;
Результат.Вставить("ИнформацияСтатистики", Неопределено);
Результат.Вставить("ВсеДанныеСопоставлены", Истина);
Результат.Вставить("ЕстьНеСопоставленнаяНСИ", Ложь);
Результат.Вставить("СтатистикаПустая", Истина);
Результат.Вставить("Отказ", Ложь);
Результат.Вставить("СообщениеОбОшибке", "");
Результат.Вставить("РезультатВыполненияОбмена", Неопределено);
// Выполняем автоматическое сопоставление данных, полученных от корреспондента.
// Получаем статистику сопоставления.
УстановитьПривилегированныйРежим(Истина);
ОбменДаннымиСервер.ИнициализироватьПараметрыПроверкиРасхожденияВерсий(ПроверятьРасхождениеВерсий);
// Выполняем анализ сообщения обмена.
ПараметрыАнализа = Новый Структура;
ПараметрыАнализа.Вставить("ИмяВременногоКаталогаСообщенийОбмена", ИмяВременногоКаталогаСообщенийОбмена);
ПараметрыАнализа.Вставить("УзелИнформационнойБазы", Корреспондент);
ПараметрыАнализа.Вставить("ИмяФайлаСообщенияОбмена", ИмяФайлаСообщенияОбмена);
ИнформацияСтатистики = ТаблицаСтатистикиСообщенияОбмена(ПараметрыАнализа,
Результат.Отказ, Результат.РезультатВыполненияОбмена, Результат.СообщениеОбОшибке);
Если Результат.Отказ Тогда
Если ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных.ЕстьОшибка Тогда
Возврат ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных;
КонецЕсли;
Возврат Результат;
КонецЕсли;
ПомощникИнтерактивногоОбменаДанными = Создать();
ПомощникИнтерактивногоОбменаДанными.УзелИнформационнойБазы = Корреспондент;
ПомощникИнтерактивногоОбменаДанными.ИмяФайлаСообщенияОбмена = ИмяФайлаСообщенияОбмена;
ПомощникИнтерактивногоОбменаДанными.ИмяВременногоКаталогаСообщенийОбмена = ИмяВременногоКаталогаСообщенийОбмена;
ПомощникИнтерактивногоОбменаДанными.ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Корреспондент);
ПомощникИнтерактивногоОбменаДанными.ВидТранспортаСообщенийОбмена = Неопределено;
ПомощникИнтерактивногоОбменаДанными.ИнформацияСтатистики.Загрузить(ИнформацияСтатистики);
// Выполняем автоматическое сопоставление и получаем статистику сопоставления.
ПомощникИнтерактивногоОбменаДанными.ВыполнитьАвтоматическоеСопоставлениеПоУмолчаниюИПолучитьСтатистикуСопоставления(Результат.Отказ);
Если Результат.Отказ Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось загрузить данные из ""%1"" (этап автоматического сопоставления данных).'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Корреспондент, "Наименование"));
КонецЕсли;
ТаблицаИнформацииСтатистики = ПомощникИнтерактивногоОбменаДанными.ТаблицаИнформацииСтатистики();
Результат.ИнформацияСтатистики = ТаблицаИнформацииСтатистики;
Результат.ВсеДанныеСопоставлены = ВсеДанныеСопоставлены(ТаблицаИнформацииСтатистики);
Результат.СтатистикаПустая = (ТаблицаИнформацииСтатистики.Количество() = 0);
Результат.ЕстьНеСопоставленнаяНСИ = ЕстьНеСопоставленнаяНСИ(ТаблицаИнформацииСтатистики);
Возврат Результат;
КонецФункции
Процедура ИнициализироватьТаблицуСтатистики(ТаблицаСтатистики)
ТаблицаСтатистики = Новый ТаблицаЗначений;
ТаблицаСтатистики.Колонки.Добавить("ДанныеУспешноЗагружены", Новый ОписаниеТипов("Булево"));
ТаблицаСтатистики.Колонки.Добавить("ИмяТаблицыПриемника", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число"));
ТаблицаСтатистики.Колонки.Добавить("ИспользоватьПредварительныйПросмотр", Новый ОписаниеТипов("Булево"));
ТаблицаСтатистики.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("КоличествоОбъектовВИсточнике", Новый ОписаниеТипов("Число"));
ТаблицаСтатистики.Колонки.Добавить("КоличествоОбъектовВПриемнике", Новый ОписаниеТипов("Число"));
ТаблицаСтатистики.Колонки.Добавить("КоличествоОбъектовНесопоставленных", Новый ОписаниеТипов("Число"));
ТаблицаСтатистики.Колонки.Добавить("КоличествоОбъектовСопоставленных", Новый ОписаниеТипов("Число"));
ТаблицаСтатистики.Колонки.Добавить("ОдинКоМногим", Новый ОписаниеТипов("Булево"));
ТаблицаСтатистики.Колонки.Добавить("ПоляПоиска", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("ПоляТаблицы", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("ПроцентСопоставленияОбъектов", Новый ОписаниеТипов("Число"));
ТаблицаСтатистики.Колонки.Добавить("СинхронизироватьПоИдентификатору", Новый ОписаниеТипов("Булево"));
ТаблицаСтатистики.Колонки.Добавить("ТипИсточникаСтрокой", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("ТипОбъектаСтрокой", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("ТипПриемникаСтрокой", Новый ОписаниеТипов("Строка"));
ТаблицаСтатистики.Колонки.Добавить("ЭтоКлассификатор", Новый ОписаниеТипов("Булево"));
ТаблицаСтатистики.Колонки.Добавить("ЭтоУдалениеОбъекта", Новый ОписаниеТипов("Булево"));
ТаблицаСтатистики.Колонки.Добавить("ЭтоНСИ", Новый ОписаниеТипов("Булево"));
КонецПроцедуры
Процедура ДополнитьТаблицуСтатистики(ИнформацияСтатистики, Отказ, СообщениеОбОшибке = "")
Для Каждого СтрокаТаблицы Из ИнформацияСтатистики Цикл
Попытка
Тип = Тип(СтрокаТаблицы.ТипОбъектаСтрокой);
Исключение
Отказ = Истина;
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка: тип ""%1"" не определен.'"), СтрокаТаблицы.ТипОбъектаСтрокой);
Прервать;
КонецПопытки;
МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип);
СтрокаТаблицы.ИмяТаблицыПриемника = МетаданныеОбъекта.ПолноеИмя();
СтрокаТаблицы.Представление = МетаданныеОбъекта.Представление();
СтрокаТаблицы.Ключ = Строка(Новый УникальныйИдентификатор);
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьКолонкуСоЗначениемВТаблицу(Таблица, ЗначениеИтератора, ИмяПоляИтератора)
Таблица.Колонки.Добавить(ИмяПоляИтератора);
Таблица.ЗаполнитьЗначения(ЗначениеИтератора, ИмяПоляИтератора);
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -214,70 +214,6 @@
КонецПроцедуры
// Выполняет анализ входящего сообщения обмена. Заполняет данными таблицу ИнформацияСтатистики.
//
// Параметры:
// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибок при работе процедуры.
// РезультатВыполненияОбмена - ПеречислениеСсылка.РезультатыВыполненияОбмена - результат выполнения обмена данными.
//
Процедура ВыполнитьАнализСообщенияОбмена(Отказ, РезультатВыполненияОбмена = Неопределено) Экспорт
Если ПустаяСтрока(ИмяВременногоКаталогаСообщенийОбмена) Тогда
// Не удалось получить данные из другой программы.
Отказ = Истина;
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
СтруктураНастроекОбмена = ОбменДаннымиСервер.СтруктураНастроекОбменаДляСеансаИнтерактивнойЗагрузки(УзелИнформационнойБазы, ИмяФайлаСообщенияОбмена);
Если СтруктураНастроекОбмена.Отказ Тогда
Возврат;
КонецЕсли;
ОбработкаОбменаДанными = СтруктураНастроекОбмена.ОбработкаОбменаДанными;
ПараметрыАнализа = Новый Структура("СобиратьСтатистикуКлассификаторов", Истина);
ОбработкаОбменаДанными.ВыполнитьАнализСообщенияОбмена(ПараметрыАнализа);
РезультатВыполненияОбмена = ОбработкаОбменаДанными.РезультатВыполненияОбмена();
Если ОбработкаОбменаДанными.ФлагОшибки() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
ИнформацияСтатистики.Загрузить(ОбработкаОбменаДанными.ТаблицаДанныхЗаголовкаПакета());
// Дополняем таблицу статистики служебными данными.
ДополнитьТаблицуСтатистики(Отказ);
// Определяем строки таблицы с признаком "ОдинКоМногим".
ИнформацияСтатистикиВременная = ИнформацияСтатистики.Выгрузить(, "ИмяТаблицыПриемника, ЭтоУдалениеОбъекта");
ДобавитьКолонкуСоЗначениемВТаблицу(ИнформацияСтатистикиВременная, 1, "Итератор");
ИнформацияСтатистикиВременная.Свернуть("ИмяТаблицыПриемника, ЭтоУдалениеОбъекта", "Итератор");
Для Каждого СтрокаТаблицы Из ИнформацияСтатистикиВременная Цикл
Если СтрокаТаблицы.Итератор > 1 И Не СтрокаТаблицы.ЭтоУдалениеОбъекта Тогда
Строки = ИнформацияСтатистики.НайтиСтроки(Новый Структура("ИмяТаблицыПриемника, ЭтоУдалениеОбъекта",
СтрокаТаблицы.ИмяТаблицыПриемника, СтрокаТаблицы.ЭтоУдалениеОбъекта));
Для Каждого Строка Из Строки Цикл
Строка["ОдинКоМногим"] = Истина;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// Локальные служебные процедуры и функции.
@@ -345,40 +281,6 @@
КонецПроцедуры
Процедура ДополнитьТаблицуСтатистики(Отказ)
Для Каждого СтрокаТаблицы Из ИнформацияСтатистики Цикл
Попытка
Тип = Тип(СтрокаТаблицы.ТипОбъектаСтрокой);
Исключение
СтрокаСообщения = НСтр("ru = 'Ошибка: тип ""%1"" не определен.'");
СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, СтрокаТаблицы.ТипОбъектаСтрокой);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтрокаСообщения,,,, Отказ);
Продолжить;
КонецПопытки;
МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип);
СтрокаТаблицы.ИмяТаблицыПриемника = МетаданныеОбъекта.ПолноеИмя();
СтрокаТаблицы.Представление = МетаданныеОбъекта.Представление();
СтрокаТаблицы.Ключ = Строка(Новый УникальныйИдентификатор());
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьКолонкуСоЗначениемВТаблицу(Таблица, ЗначениеИтератора, ИмяПоляИтератора)
Таблица.Колонки.Добавить(ИмяПоляИтератора);
Таблица.ЗаполнитьЗначения(ЗначениеИтератора, ИмяПоляИтератора);
КонецПроцедуры
Функция ЭтоИмяТипаНСИ(ТипПриемникаСтрокой)
Если Документы.ТипВсеСсылки().СодержитТип(Тип(ТипПриемникаСтрокой)) Тогда
Возврат Ложь;
@@ -514,4 +514,13 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="c0804a4a-64d5-457f-a542-8e5badccbdf1">
<name>ВыгрузкаДанныхДляСопоставления</name>
<synonym>
<key>ru</key>
<value>Выгрузка данных для сопоставления</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:DataProcessor>
@@ -2140,6 +2140,23 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДоступнаИнтерактивнаяОтправка</name>
<title>
<key>ru</key>
<value>Доступна интерактивная отправка</value>
</title>
<id>29</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ПодробноеОписаниеСинхронизацииДанных</name>
<title>
@@ -156,16 +156,20 @@
ОповещениеПродолжения = Новый ОписаниеОповещения("ВыполнитьСопоставлениеИЗагрузкуДанныхПродолжение", ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОтправитьДанные", Ложь);
ДополнительныеПараметры.Вставить("НастройкаРасписания", Ложь);
ПараметрыПомощника = Новый Структура;
ПараметрыПомощника.Вставить("ОтправитьДанные", Ложь);
ПараметрыПомощника.Вставить("НастройкаРасписания", Ложь);
Если МодельСервиса Тогда
ДополнительныеПараметры.Вставить("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
ПараметрыПомощника.Вставить("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
КонецЕсли;
ВспомогательныеПараметры = Новый Структура;
ВспомогательныеПараметры.Вставить("ПараметрыПомощника", ПараметрыПомощника);
ВспомогательныеПараметры.Вставить("ОповещениеОЗакрытии", ОповещениеПродолжения);
ОбменДаннымиКлиент.ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(УзелОбмена,
ЭтотОбъект, ДополнительныеПараметры, ОповещениеПродолжения);
ЭтотОбъект, ВспомогательныеПараметры);
КонецПроцедуры
@@ -182,7 +186,7 @@
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ВыполнитьНачальнуюВыгрузкуДанныхЗавершение", ЭтотОбъект);
ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.ВыгрузкаДанныхДляСопоставления",
ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма.ВыгрузкаДанныхДляСопоставления",
ПараметрыПомощника, ЭтотОбъект, , , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
@@ -283,14 +287,17 @@
Возврат;
КонецЕсли;
ДоступнаИнтерактивнаяОтправка = ДоступнаИнтерактивнаяОтправка
И Не (ОбменДаннымиВызовСервера.ВариантОбменаДанными(УзелОбмена) = "ТолькоПолучение");
Если РезультатЗакрытия.ПолученыДанныеДляСопоставления
И Не ПолученыДанныеДляСопоставления Тогда
ПолученыДанныеДляСопоставления = РезультатЗакрытия.ПолученыДанныеДляСопоставления;
ЗаполнитьТаблицуЭтаповНастройки();
ОбновитьОтображениеТекущегоСостоянияНастройки();
КонецЕсли;
ЗаполнитьТаблицуЭтаповНастройки();
ОбновитьОтображениеТекущегоСостоянияНастройки();
ПараметрыПомощника = Новый Структура;
Если ПустаяСтрока(ИмяФормыПомощникаНастройкиСинхронизацииДанных) Тогда
@@ -539,7 +546,8 @@
НастройкаРИБ = ОбменДаннымиПовтИсп.ЭтоПланОбменаРаспределеннойИнформационнойБазы(ИмяПланаОбмена);
НастройкаXDTO = ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(ИмяПланаОбмена);
НастройкаУниверсальногоОбмена = ОбменДаннымиПовтИсп.ЭтоУзелСтандартногоОбменаДанными(ИмяПланаОбмена); // без правил конвертации
ДоступнаИнтерактивнаяОтправка = Не НастройкаРИБ;
НастройкаУниверсальногоОбмена = ОбменДаннымиПовтИсп.ЭтоУзелСтандартногоОбменаДанными(ИмяПланаОбмена); // без правил конвертации
Если НастройкаНовойСинхронизации
Или НастройкаРИБ
@@ -637,7 +645,7 @@
ДобавитьЭтапНастройки("СопоставлениеИЗагрузка", "ВыполнитьСопоставлениеИЗагрузкуДанных");
КонецЕсли;
Если Не НастройкаРИБ
Если ДоступнаИнтерактивнаяОтправка
И (ЕстьНастройкиТранспорта
Или НастройкаНовойСинхронизации) Тогда
ДобавитьЭтапНастройки("НачальнаяВыгрузкаДанных", "ВыполнитьНачальнуюВыгрузкуДанных");
@@ -85,7 +85,7 @@
</li><li>Можно ограничить данные, участвующие в синхронизации и задать, в разрезе каких <strong>Организаций</strong>, <strong>Складов</strong> и <strong>Подразделений</strong> будут отправляться данные:
<ul><li>Включение фильтра <strong>По организациям</strong> позволяет ограничить список организаций, по которым разрешена синхронизация данных. Наличие включенного фильтра влияет как на отправку самого списка организаций, так и на отправку других данных, связанных с организациями (списки и документы). Для включения фильтра установите переключатель в положение <strong>По выбранным</strong> (организациям), выберите с помощью флажков нужные организации из списка.
</li><li>Для включения фильтра <strong>По подразделениям</strong> на соответствующей вкладке установите переключатель в положение <strong>По выбранным</strong> (подразделениям), включите соответствующие флажки.
</li><li>Также можно выгружать информацию <strong>По выбранным</strong> (складам). Для этого на соответствующей вкладке с помощью переключателя выберите нужное значение, с помощью флажков выберите нужные склады.</li></ul></li><li><strong>Правила получения данных - значения по умолчанию</strong> необходимы для правильного отражения документов. Используются для автоматического дозаполнения документов при отправке данных. Возможно, в документах, полученных из другой программы, не были предусмотрены некоторые реквизиты. В этом случае при проведении синхронизации данных эти реквизиты будут заполнены программой автоматически. Их можно указать сразу же, при настройке синхронизации (по ссылке <strong>Изменить значения автоматического заполнения</strong>).</li></ul><h3>Параметры синхронизации данных</h3>
</li><li>Также можно выгружать информацию <strong>По выбранным</strong> (складам). Для этого на соответствующей вкладке с помощью переключателя выберите нужное значение, с помощью флажков выберите нужные склады.</li></ul></li><li><strong>Правила получения данных - значения по умолчанию</strong> необходимы для правильного отражения документов. Используются для автоматического заполнения данных в документах, которые не могут быть получены из обмена. Например, в документах, полученных из другой программы, не были предусмотрены некоторые реквизиты. В этом случае при проведении синхронизации данных эти реквизиты будут заполнены программой автоматически. Их можно указать сразу же, при настройке синхронизации (по ссылке <strong>Изменить значения автоматического заполнения</strong>).</li></ul><h3>Параметры синхронизации данных</h3>
<ul><li>Выводится <strong>Представление этой программы</strong>:
<ul><li><strong>Наименование</strong>;
</li><li><strong>Префикс</strong>;</li></ul></li><li>Выводится <strong>Представление программы-корреспондента</strong>:
@@ -819,7 +819,8 @@
Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(НастройкиПодключения.ИмяПланаОбмена) Тогда
НастройкиПодключенияКорреспондента.ВерсияФорматаОбмена = НастройкиПодключения.ВерсияФорматаОбмена;
ТаблицаОбъекты = ОбменДаннымиXDTOСервер.ПоддерживаемыеОбъектыФормата(НастройкиПодключения.ИмяПланаОбмена);
ТаблицаОбъекты = ОбменДаннымиXDTOСервер.ПоддерживаемыеОбъектыФормата(
НастройкиПодключения.ИмяПланаОбмена, "ОтправкаПолучение", НастройкиПодключения.УзелИнформационнойБазы);
СтрокаХранилище = СериализаторXDTO.XMLСтрока(
Новый ХранилищеЗначения(ТаблицаОбъекты, Новый СжатиеДанных(9)));
@@ -873,9 +874,11 @@
Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(НастройкиПодключения.ИмяПланаОбмена) Тогда
НастройкиПодключенияКорреспондента.ВерсияФорматаОбмена = НастройкиПодключения.ВерсияФорматаОбмена;
НастройкиПодключенияКорреспондента.ПоддерживаемыеОбъектыФормата = Новый ХранилищеЗначения(
ОбменДаннымиXDTOСервер.ПоддерживаемыеОбъектыФормата(НастройкиПодключения.ИмяПланаОбмена),
Новый СжатиеДанных(9));
ТаблицаОбъекты = ОбменДаннымиXDTOСервер.ПоддерживаемыеОбъектыФормата(
НастройкиПодключения.ИмяПланаОбмена, "ОтправкаПолучение", НастройкиПодключения.УзелИнформационнойБазы);
НастройкиПодключенияКорреспондента.ПоддерживаемыеОбъектыФормата = Новый ХранилищеЗначения(ТаблицаОбъекты, Новый СжатиеДанных(9));
КонецЕсли;
Сериализатор = Новый СериализаторXDTO(WSПрокси.ФабрикаXDTO);
@@ -1291,48 +1294,6 @@
КонецПроцедуры
Процедура ВыгрузитьДанныеДляСопоставления(Параметры, АдресРезультата) Экспорт
НастройкиВыгрузки = Неопределено;
Параметры.Свойство("НастройкиВыгрузки", НастройкиВыгрузки);
Результат = Новый Структура;
Результат.Вставить("ДанныеВыгружены", Истина);
Результат.Вставить("СообщениеОбОшибке", "");
ПараметрыОбмена = ОбменДаннымиСервер.ПараметрыОбмена();
ПараметрыОбмена.ВыполнятьЗагрузку = Ложь;
ПараметрыОбмена.ВыполнятьВыгрузку = Истина;
ПараметрыОбмена.ВидТранспортаСообщенийОбмена = НастройкиВыгрузки.ВидТранспорта;
ПараметрыОбмена.СообщениеДляСопоставленияДанных = Истина;
Если НастройкиВыгрузки.Свойство("WSПароль") Тогда
ПараметрыОбмена.Вставить("ПараметрыАутентификации", НастройкиВыгрузки.WSПароль);
КонецЕсли;
Отказ = Ложь;
Попытка
ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
НастройкиВыгрузки.УзелОбмена, ПараметрыОбмена, Отказ);
Исключение
Результат.ДанныеВыгружены = Ложь;
Результат.СообщениеОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииВыгрузкаДанныхДляСопоставления(),
УровеньЖурналаРегистрации.Ошибка, , , Результат.СообщениеОбОшибке);
КонецПопытки;
Результат.ДанныеВыгружены = Результат.ДанныеВыгружены И Не Отказ;
Если Не Результат.ДанныеВыгружены
И ПустаяСтрока(Результат.СообщениеОбОшибке) Тогда
Результат.СообщениеОбОшибке = НСтр("ru = 'При выполнении выгрузки данных для сопоставления возникли ошибки (см. Журнал регистрации).'");
КонецЕсли;
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
КонецПроцедуры
Функция ПредопределенноеРасписаниеКаждыйЧас() Экспорт
Месяцы = Новый Массив;
@@ -1465,8 +1426,10 @@
НовыйУзел = МенеджерПланаОбмена.СоздатьУзел();
НовыйУзел.Код = КодНовогоУзла;
Иначе
ВызватьИсключение НСтр("ru = 'Значение префикса первой информационной базы не уникально.
|В системе уже существует синхронизация данных для информационной базы (программы) с указанным префиксом.'");
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Значение префикса программы ""%1"" не уникально (""%2""). Уже существует настройка синхронизации с таким же префиксом.
|Для продолжения необходимо назначить в программе ""%1"" уникальный префикс информационной базы, отличный от текущего.'"),
НастройкиПодключения.НаименованиеВторойБазы, КодНовогоУзла);
КонецЕсли;
НовыйУзел.Наименование = НастройкиПодключения.НаименованиеВторойБазы;
@@ -1509,7 +1472,7 @@
Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(НастройкиПодключения.ИмяПланаОбмена) Тогда
Если НастройкиПодключения.ПоддерживаемыеОбъектыФормата <> Неопределено Тогда
РегистрыСведений.НастройкиОбменаДаннымиXDTO.ОбновитьНастройкиКорреспондента(НовыйУзел.Ссылка,
"ПоддерживаемыеОбъекты", НастройкиПодключения.ПоддерживаемыеОбъектыФормата);
"ПоддерживаемыеОбъекты", НастройкиПодключения.ПоддерживаемыеОбъектыФормата.Получить());
КонецЕсли;
СтруктураЗаписи = Новый Структура;
@@ -938,15 +938,6 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="e1cfcfa0-5cfb-47d9-af54-717d2c745c8a">
<name>ВыгрузкаДанныхДляСопоставления</name>
<synonym>
<key>ru</key>
<value>Выгрузка данных для сопоставления</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="3057de81-eb41-4161-9dc2-5445699906af">
<name>ЗагрузкаНастроекXDTO</name>
<synonym>
@@ -1281,7 +1281,7 @@
Если ЗначениеЗаполнено(ПредставлениеАдреса) Тогда
ТекстПредупреждения = НСтр("ru = 'Выбор из списка недоступен, т.к в адресном классификаторе отсутствует информация о нумерации домов для введенного адреса.'");
Иначе
ТекстПредупреждения = НСтр("ru = 'Для просмотра список домов заполните поля адреса.'");
ТекстПредупреждения = НСтр("ru = 'Для просмотра списка домов заполните поля адреса.'");
КонецЕсли;
ПоказатьПредупреждение(, ТекстПредупреждения);
КонецЕсли;
@@ -2488,9 +2488,6 @@
Если ВыбранноеЗначение.Свойство("Адрес") И ЗначениеЗаполнено(ВыбранноеЗначение.Адрес) Тогда
ПолученныйАдрес = УправлениеКонтактнойИнформациейСлужебный.СтрокаJSONВСтруктуру(ВыбранноеЗначение.Адрес);
ПолученныйАдрес.addressType = ?(СтрСравнить(ПолученныйАдрес.addressType,"TERRITORIAL") = 0,
РаботаСАдресамиКлиентСервер.АдминистративноТерриториальныйАдрес(),
РаботаСАдресамиКлиентСервер.МуниципальныйАдрес());
Иначе
ПолученныйАдрес = ОпределитьАдресПоИдентификатору(ВыбранноеЗначение);
КонецЕсли;
@@ -2588,8 +2585,13 @@
Модифицированность = Истина;
НеобходимоПерерисоватьПоляДомов = НаселенныйПунктДетально.Buildings.Количество() > 1;
НаселенныйПунктДетально.ZIPcode = ВыбранноеЗначение.Индекс;
НаселенныйПунктДетально.OKTMO = ВыбранноеЗначение.ОКТМО;
НаселенныйПунктДетально.ZIPcode = ВыбранноеЗначение.Индекс;
НаселенныйПунктДетально.oktmo = ВыбранноеЗначение.ОКТМО;
НаселенныйПунктДетально.okato = ВыбранноеЗначение.ОКАТО;
НаселенныйПунктДетально.ifnsFLCode = ВыбранноеЗначение.КодИФНСФЛ;
НаселенныйПунктДетально.ifnsULCode = ВыбранноеЗначение.КодИФНСЮЛ;
НаселенныйПунктДетально.ifnsFLAreaCode = ВыбранноеЗначение.КодУчасткаИФНСФЛ;
НаселенныйПунктДетально.ifnsULAreaCode = ВыбранноеЗначение.КодУчасткаИФНСЮЛ;
Если ВыбранноеЗначение.Свойство("Дом") Тогда
НаселенныйПунктДетально.HouseNumber = ВыбранноеЗначение.Дом.НомерВладения;
@@ -2618,8 +2620,8 @@
// отрисовка
Индекс = НаселенныйПунктДетально.ZipCode;
ОКТМО = НаселенныйПунктДетально.OKTMO;
Индекс = НаселенныйПунктДетально.ZIPcode;
ОКТМО = НаселенныйПунктДетально.oktmo;
Дом = НаселенныйПунктДетально.HouseNumber;
Если ЗначениеЗаполнено(НаселенныйПунктДетально.HouseType) Тогда
@@ -2633,7 +2635,7 @@
НеобходимоПерерисоватьПоляДомов = Истина;
КонецЕсли;
Иначе
Строение = "";
Строение= "";
КонецЕсли;
Если НеобходимоПерерисоватьПоляДомов Тогда
@@ -551,7 +551,7 @@
СообщенияОшибок.Вставить(001, НСтр("ru = 'Не обнаружены сообщения обмена.'"));
СообщенияОшибок.Вставить(002, НСтр("ru = 'Ошибка при распаковке сжатого файла сообщения.'"));
СообщенияОшибок.Вставить(003, НСтр("ru = 'Ошибка при сжатии файла сообщения обмена.'"));
СообщенияОшибок.Вставить(004, НСтр("ru = 'Ошибка при создании временного каталога'."));
СообщенияОшибок.Вставить(004, НСтр("ru = 'Ошибка при создании временного каталога.'"));
СообщенияОшибок.Вставить(005, НСтр("ru = 'Архив не содержит файл сообщения обмена.'"));
СообщенияОшибок.Вставить(006, НСтр("ru = 'Сообщение обмена не отправлено: превышен допустимый размер сообщения.'"));
@@ -54,7 +54,7 @@
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Элементы.ГруппаПричины.ОтображатьЗаголовок = Истина;
Элементы.ГруппаПричины.Заголовок = НСтр("Места использования");
Элементы.ГруппаПричины.Заголовок = НСтр("ru = 'Места использования'");
Для каждого ЭлементКоманднойПанели Из Элементы.СвязиНеУдаленныхКоманднаяПанель.ПодчиненныеЭлементы Цикл
@@ -10,6 +10,16 @@
АдресныйКлассификаторСлужебный.ПроверитьНачальноеЗаполнение(); // Инициализация списка регионов
АутентификацияВыполнена = ДанныеАутентификацииСайтаСохранены();
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
Элементы.Переместить(Элементы.ОК, Элементы.ФормаКоманднаяПанель);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВариантыАктуализации", "ВидПереключателя", ВидПереключателя.Переключатель);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -10,6 +10,38 @@
<items xsi:type="form:FormGroup">
<name>ВыборРегионовЗагрузки</name>
<id>61</id>
<items xsi:type="form:FormGroup">
<name>ГруппаМобильныйКлиент</name>
<id>219</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<toolTip>
<key>ru</key>
<value>Группа мобильный клиент</value>
</toolTip>
<extendedTooltip>
<name>ГруппаМобильныйКлиентРасширеннаяПодсказка</name>
<id>220</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаКоманднаяПанельРегионов</name>
<id>206</id>
@@ -172,6 +172,14 @@
СохраняемыеВНастройкахДанныеМодифицированы = Истина;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаКомандЗагрузкиПанель", "ГоризонтальноеПоложение", ГоризонтальноеПоложениеЭлемента.Центр);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Отмена", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СубъектыРФ", "ВариантУправленияВысотой", ВариантУправленияВысотойТаблицы.ВСтрокахТаблицы);
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -21,6 +21,14 @@
// Автосохранение настроек
СохраняемыеВНастройкахДанныеМодифицированы = Истина;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаКомандЗагрузкиПанель", "ГоризонтальноеПоложение", ГоризонтальноеПоложениеЭлемента.Центр);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СубъектыРФ", "ВариантУправленияВысотой", ВариантУправленияВысотойТаблицы.ВСтрокахТаблицы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -41,6 +41,15 @@
ЗначениеВРеквизитФормы(ДеревоРеквизитов, "РеквизитыОбъекта");
ВерсионированиеОбъектовПереопределяемый.ПриВыбореРеквизитовОбъекта(Параметры.Ссылка, РеквизитыОбъекта);
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Элементы.Переместить(Элементы.РеквизитыОбъектаВыбрать, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.ФормаУстановитьФлажки, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.ФормаСнятьФлажки, Элементы.ФормаКоманднаяПанель);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -767,6 +767,7 @@
<rowsPicture xsi:type="core:PictureRef">
<picture>CommonPicture.СостоянияПользователей</picture>
</rowsPicture>
<currentRowUse>SelectionPresentationAndChoice</currentRowUse>
<autoMaxCardHeight>true</autoMaxCardHeight>
<rowFilter xsi:type="core:UndefinedValue"/>
</items>
@@ -10,6 +10,16 @@
Список.Параметры.УстановитьЗначениеПараметра("Пользователь", Пользователи.ТекущийПользователь());
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
Элементы.Переместить(Элементы.КнопкаСоздать, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.КнопкаИзменить, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.КнопкаУдалить, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.СтандартныеКоманды, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.ФормаСправка, Элементы.ФормаКоманднаяПанель);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -10,6 +10,21 @@
Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
Элементы.Переместить(Элементы.КнопкаПрекратить, Элементы.ФормаКоманднаяПанель);
Элементы.Переместить(Элементы.КнопкаОтложить, Элементы.ФормаКоманднаяПанель);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КнопкаОткрыть", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КнопкаОтложить", "КнопкаПоУмолчанию", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КнопкаОтложить", "АктивизироватьПоУмолчанию", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КнопкаПрекратить", "ТолькоВоВсехДействиях", Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -730,6 +730,7 @@
<borderColor xsi:type="core:ColorRef">
<color>Style.BorderColor</color>
</borderColor>
<currentRowUse>SelectionPresentation</currentRowUse>
<autoMaxCardHeight>true</autoMaxCardHeight>
</items>
<items xsi:type="form:Button">
@@ -22,6 +22,13 @@
ПоказыватьНастройкуРасписанияОчистки = Не ОбщегоНазначения.РазделениеВключено();
Элементы.Расписание.Видимость = ПоказыватьНастройкуРасписанияОчистки;
Элементы.НастроитьРасписание.Видимость = ПоказыватьНастройкуРасписанияОчистки;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВариантВерсионированияГруппа", "Заголовок", НСтр("ru ='Сохранять версии'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -3,6 +3,7 @@
<items xsi:type="form:Table">
<name>ПравилоНастройкиОтбор</name>
<id>10</id>
<displayImportance>VeryHigh</displayImportance>
<title>
<key>ru</key>
<value>Правило настройки отбор</value>
@@ -424,6 +424,7 @@
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<currentRowUse>SelectionPresentationAndChoice</currentRowUse>
<autoMaxCardHeight>true</autoMaxCardHeight>
</items>
<items xsi:type="form:FormGroup">
@@ -24,6 +24,28 @@
Элементы.Расписание.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
Элементы.Переместить(Элементы.ФормаДобавить, Элементы.ФормаКоманднаяПанель);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаДобавить", "АктивизироватьПоУмолчанию", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаДобавить", "КнопкаПоУмолчанию", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаУстановитьДействиеОчиститьФайлыИВерсии", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаУстановитьДействиеОчиститьФайлы", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаУстановитьДействиеОчиститьВерсии", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаУстановитьДействиеНеОчищать", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаСтаршеМесяца", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаСтаршеШестиМесяцев", "ТолькоВоВсехДействиях", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФормаСтаршеГода", "ТолькоВоВсехДействиях", Истина);
Элементы.ПериодОчисткиГруппа.ВажностьПриОтображении = ВажностьПриОтображении.ОченьНизкая;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -14,7 +14,6 @@
<key>ru</key>
<value>Настройки транспорта обмена данными</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<editType>InDialog</editType>
<defaultRecordForm>InformationRegister.НастройкиТранспортаОбменаДанными.Form.ФормаЗаписи</defaultRecordForm>
<defaultListForm>InformationRegister.НастройкиТранспортаОбменаДанными.Form.ФормаСписка</defaultListForm>