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