&НаСервере
Функция ПолучитьСсылкуНаБП(Знач НомерСП, Знач ДатаСП, Знач НомерСУ, Знач Организация)
Запрос = Новый Запрос;
Запрос.Текст
=
"ВЫБРАТЬ
| CRM_БизнесПроцесс.Ссылка
КАК Ссылка
|ИЗ
| БизнесПроцесс.CRM_БизнесПроцесс
КАК CRM_БизнесПроцесс
|ГДЕ
| CRM_БизнесПроцесс.НомерДелаСП
= &НомерДелаСП
| И CRM_БизнесПроцесс.ДатаПодачиВСудСП
= &ДатаПодачиВСудСП
| И CRM_БизнесПроцесс.СудебныйУчасток.Номер
= &НомерСудебногоУчастка
| И CRM_БизнесПроцесс.Истец.Наименование
= &Истец";
Запрос.УстановитьПараметр("НомерДелаСП", НомерСП);
Запрос.УстановитьПараметр("ДатаПодачиВСудСП", ДатаСП);
Запрос.УстановитьПараметр("НомерСудебногоУчастка", НомерСУ);
Запрос.УстановитьПараметр("Истец",
Организация);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий()
Тогда
Возврат Выборка.Ссылка;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция ПроверитьСтрокуТаблицы(Знач ДатаДокумента, Знач НомерДокумента, Знач СуммаДокумента)
Запрос = Новый Запрос;
Запрос.Текст
=
"ВЫБРАТЬ
| CRM_БизнесПроцессВзысканоПоИП.Ссылка
КАК Ссылка
|ИЗ
| БизнесПроцесс.CRM_БизнесПроцесс.ВзысканоПоИП
КАК CRM_БизнесПроцессВзысканоПоИП
|ГДЕ
| CRM_БизнесПроцессВзысканоПоИП.Период
= &Период
| И CRM_БизнесПроцессВзысканоПоИП.НомерДокумента
= &НомерДокумента
| И CRM_БизнесПроцессВзысканоПоИП.Сумма
= &Сумма";
Запрос.УстановитьПараметр("НомерДокумента", НомерДокумента);
Запрос.УстановитьПараметр("Период",
НачалоДня(ДатаДокумента));
Запрос.УстановитьПараметр("Сумма",
СуммаДокумента);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий()
Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Процедура
ДобавитьЗаписиВТабличнуюЧастьБП(Знач МассивДоков)
Для Каждого Эл Из МассивДоков Цикл
ДатаДокумента
= XMLЗначение(Тип("Дата"), Эл.ДатаДокумента);
ДатаСП
= XMLЗначение(Тип("Дата"), Эл.ДатаСП);
СсылкаНаБП
= ПолучитьСсылкуНаБП(Эл.НомерСП,
ДатаСП, Эл.НомерСудебногоУчастка,
Эл.Организация);
Если ЗначениеЗаполнено(СсылкаНаБП)
Тогда
Если НЕ ЗначениеЗаполнено(СсылкаНаБП.ВзысканоПоИП)
ИЛИ
НЕ ПроверитьСтрокуТаблицы(ДатаДокумента, Эл.НомерДокумента,
Эл.СуммаДокумента) Тогда
//Добавляем запись в таблицу
БП
ОбБп = СсылкаНаБП.ПолучитьОбъект();
НоваяСтр = ОбБп.ВзысканоПоИП.Добавить();
НоваяСтр.Период = ДатаДокумента;
НоваяСтр.НомерДокумента = Эл.НомерДокумента;
НоваяСтр.Сумма = Эл.СуммаДокумента;
ОбБп.Записать();
//Добавляем запись в РС
МЗ
= РегистрыСведений.РезультатОбменаЧерезСервисДЗФЛ.СоздатьМенеджерЗаписи();
МЗ.НомерДокумента = Эл.НомерДокумента;
МЗ.ДатаДокумента = XMLЗначение(Тип("Дата"),
Эл.ДатаДокумента);
МЗ.БизнесПроцесс = СсылкаНаБП;
МЗ.Организация = Эл.Организация;
МЗ.СуммаДокумента = Эл.СуммаДокумента;
МЗ.ДатаСП = XMLЗначение(Тип("Дата"), Эл.ДатаСП);
МЗ.НомерСП = Эл.НомерСП;
МЗ.НомерСудебногоУчастка = Эл.НомерСудебногоУчастка;
МЗ.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура
ЗаписатьРезультатОбменаВРегистр(Знач МассивСтатистики)
Для Каждого Эл Из МассивСтатистики Цикл
Если НЕ ЗначениеЗаполнено(Эл.НомерДокумента)
ИЛИ
НЕ ЗначениеЗаполнено(Эл.ДатаДокумента) Тогда
Продолжить;
КонецЕсли;
МЗ =
РегистрыСведений.РезультатОбменаЧерезСервисДЗФЛ.СоздатьМенеджерЗаписи();
МЗ.НомерДокумента
= Эл.НомерДокумента;
МЗ.ДатаДокумента
= XMLЗначение(Тип("Дата"), Эл.ДатаДокумента);
МЗ.Прочитать();
Если НЕ МЗ.Выбран() Тогда//Нет такой записи
МЗ.НомерДокумента = Эл.НомерДокумента;
МЗ.ДатаДокумента = XMLЗначение(Тип("Дата"),
Эл.ДатаДокумента);
МЗ.Организация = Эл.Организация;
МЗ.СуммаДокумента = Эл.СуммаДокумента;
МЗ.ДатаСП = XMLЗначение(Тип("Дата"),
Эл.ДатаСП);
МЗ.НомерСП = Эл.НомерСП;
МЗ.НомерСудебногоУчастка = Эл.НомерСудебногоУчастка;
МЗ.Записать();
Иначе
Если МЗ.СуммаДокумента <> Эл.СуммаДокумента
ИЛИ//Не все данные совпадают
МЗ.ДатаСП <> XMLЗначение(Тип("Дата"),
Эл.ДатаСП) ИЛИ
МЗ.НомерСП <> Эл.НомерСП
ИЛИ
МЗ.НомерСудебногоУчастка <> Эл.НомерСудебногоУчастка
ИЛИ
МЗ.Организация <> Эл.Организация
Тогда
МЗ.НомерДокумента = Эл.НомерДокумента;
МЗ.ДатаДокумента = XMLЗначение(Тип("Дата"),
Эл.ДатаДокумента);
МЗ.Организация = Эл.Организация;
МЗ.СуммаДокумента = Эл.СуммаДокумента;
МЗ.ДатаСП = XMLЗначение(Тип("Дата"),
Эл.ДатаСП);
МЗ.НомерСП = Эл.НомерСП;
МЗ.НомерСудебногоУчастка = Эл.НомерСудебногоУчастка;
МЗ.Записать();
Иначе
Продолжить;//Все
данные совпадают
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура
ДляРегламентногоЗадания()
Экспорт
Выборка = Справочники.ПараметрыПодключенияКСервисуДЗФЛ.Выбрать();
Пока Выборка.Следующий()
Цикл
Если Выборка.ПометкаУдаления = Ложь Тогда
Соединение
= Новый HTTPСоединение(Выборка.АдресПубликации,
Выборка.Порт, Выборка.Логин,
Выборка.Пароль,,30,,);
ДатаНачала = НачалоГода(ТекущаяДата());
ДатаОкончания = ТекущаяДата();
Заголовки =
Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Запрос = Новый HTTPЗапрос("/" + Выборка.Наименование
+ "/hs/DZFL/doki/"
+ ДатаНачала + "/" + ДатаОкончания,
Заголовки);
Результат2
= Соединение.ВызватьHTTPМетод("GET",
Запрос);
Если
Результат2.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Результат2.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));
РезСтруктура = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
//Вариант записи документов в
табличную часть бизнес-процесса
// и регистр сведений
ДобавитьЗаписиВТабличнуюЧастьБП(РезСтруктура);
//Вариант записи документов в
регистр сведений
//ЗаписатьРезультатОбменаВРегистр(РезСтруктура);
Иначе
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
|