Last active
March 23, 2017 16:33
-
-
Save JohnyDeath/9d8d178a39ba24363cce455ea400463c to your computer and use it in GitHub Desktop.
Общий модуль Континент
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
////В модуле обработки, где планируется использовать методы данной обработки вставить следующий код: | |
// //********************* | |
//Перем _ОбщийМодульКонтинент; | |
//СсылкаНаДопОбработку = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("_ОбщийМодульКонтинент"); | |
//_ОбщийМодульКонтинент = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(СсылкаНаДопОбработку); | |
// //*********************** | |
// Далее обращаться к методам, как к ОбщемуМодулю. Например: | |
// _ОбщийМодульКонтинент._Сообщить("Привет, Карл!"); | |
Перем СинонимыОрганизаций; | |
Перем _Услуги Экспорт; //Фиксированная структура | |
Перем _ТипыУслуг Экспорт;//ФиксированнаяСтруктурв | |
#Область Интерфейс | |
Функция _Сообщить(ТекстСообщения) Экспорт | |
Сообщить(ТекстСообщения); | |
КонецФункции | |
Функция ВызватьИзДопОбработки() Экспорт | |
СсылкаНаОбработку = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("_ОбщийМодульКонтинент"); | |
обОбработки = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(СсылкаНаОбработку); | |
обОбработки.ТестовыйМетод(); | |
КонецФункции | |
//Возвращает ИСТИНА, если сотрудник - штатный | |
// ЛОЖЬ - если ГПХ или "Не сотрудник" или неопределен | |
// В параметр "Сотрудник" возвращается найденный сотрудник, в ФизЛицо - физлицо по этому таб номеру | |
Функция ЭтоШтатныйСотрудник(Знач Организация, Знач ТабельныйНомер, Знач ДатаСреза = Неопределено, Сотрудник = Неопределено, ФизЛицо = Неопределено) Экспорт | |
Результат = Ложь; | |
Если ЭтоНесотрудник(ТабельныйНомер) Тогда | |
Возврат Результат; | |
КонецЕсли; | |
Если ДатаСреза = Неопределено Тогда | |
ДатаСреза = ТекущаяДатаСеанса(); | |
КонецЕсли; | |
Запрос = Новый Запрос; | |
Запрос.Текст = | |
"ВЫБРАТЬ | |
| КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо КАК ФизЛицо, | |
| КадроваяИсторияСотрудниковСрезПоследних.Сотрудник, | |
| ПериодыДействияДоговоровГражданскоПравовогоХарактера.Сотрудник КАК СотрудникГПХ | |
|ИЗ | |
| РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних( | |
| , | |
| Организация = &Организация | |
| И (Сотрудник.Код = &ТабельныйНомер | |
| ИЛИ Сотрудник.Код = &ТабельныйНомерПрефикс)) КАК КадроваяИсторияСотрудниковСрезПоследних | |
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодыДействияДоговоровГражданскоПравовогоХарактера КАК ПериодыДействияДоговоровГражданскоПравовогоХарактера | |
| ПО КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = ПериодыДействияДоговоровГражданскоПравовогоХарактера.Сотрудник | |
| И КадроваяИсторияСотрудниковСрезПоследних.Организация = ПериодыДействияДоговоровГражданскоПравовогоХарактера.Организация | |
| И КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо = ПериодыДействияДоговоровГражданскоПравовогоХарактера.ФизическоеЛицо | |
| И ПериодыДействияДоговоровГражданскоПравовогоХарактера.ДатаНачала <= &ДатаСреза | |
| И ПериодыДействияДоговоровГражданскоПравовогоХарактера.ДатаОкончания > &ДатаСреза"; | |
Запрос.УстановитьПараметр("ТабельныйНомер", СокрЛП(ТабельныйНомер)); | |
Запрос.УстановитьПараметр("ТабельныйНомерПрефикс","БК00-0" + СокрЛП(ТабельныйНомер)); | |
Запрос.УстановитьПараметр("Организация", Организация); | |
Запрос.УстановитьПараметр("ДатаСреза", ДатаСреза); | |
Выборка = Запрос.Выполнить().Выбрать(); | |
Если Выборка.Следующий() Тогда | |
Сотрудник = Выборка.Сотрудник; | |
ФизЛицо = Выборка.ФизЛицо; | |
Если ЗначениеЗаполнено(Выборка.СотрудникГПХ) Тогда | |
Результат = Ложь; | |
Иначе | |
Результат = Истина; | |
КонецЕсли; | |
КонецЕсли; | |
Возврат Результат; | |
КонецФункции | |
//Возвращает ИСТИНА, если в строке ТабНомера континента стоят предопределенные строки-константы | |
Функция ЭтоНесотрудник(Знач ТабельныйНомер) Экспорт | |
ПредопределенныеИмена = Новый Массив; | |
ПредопределенныеИмена.Добавить(".Не сотрудник"); | |
ПредопределенныеИмена.Добавить("NA"); | |
ПредопределенныеИмена.Добавить("na"); | |
Возврат (ПредопределенныеИмена.Найти(ТабельныйНомер) <> Неопределено); | |
КонецФункции | |
//Возвращает Организацию ЕРП по наименованию Континента | |
// Если не найдено - Неопределено | |
Функция ОрганизацияПоНаименованиюКонтинента(Знач ИмяОрганизацииВКонтиненте) Экспорт | |
Если СинонимыОрганизаций = Неопределено Тогда | |
ЗаполнитьСинонимыОрганизаций(); | |
КонецЕсли; | |
Возврат СинонимыОрганизаций.Получить(ИмяОрганизацииВКонтиненте); | |
КонецФункции | |
// Возвращает режим загрузки: | |
//0 - ГПХ | |
//1 - Не сотрудники | |
//2 - Сотрудники | |
//3 - Сотрудники. Билеты и гостиницы | |
Функция РассчитатьРежимЗагрузки(Знач Организация, Знач ТабельныйНомер, Знач ДатаСреза = Неопределено, Сотрудник = Неопределено, | |
Знач УслугаТип, Знач УслугаНазвание, Знач УслугаОписание) Экспорт | |
Если ЭтоНесотрудник(ТабельныйНомер) Тогда | |
Возврат 1 | |
КонецЕсли; | |
Если ДатаСреза = Неопределено Тогда | |
ДатаСреза = ТекущаяДатаСеанса(); | |
КонецЕсли; | |
Запрос = Новый Запрос; | |
Запрос.Текст = | |
"ВЫБРАТЬ | |
| КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо КАК ФизЛицо, | |
| КадроваяИсторияСотрудниковСрезПоследних.Сотрудник, | |
| ПериодыДействияДоговоровГражданскоПравовогоХарактера.Сотрудник КАК СотрудникГПХ | |
|ИЗ | |
| РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних( | |
| , | |
| Организация = &Организация | |
| И (Сотрудник.Код = &ТабельныйНомер | |
| ИЛИ Сотрудник.Код = &ТабельныйНомерПрефикс)) КАК КадроваяИсторияСотрудниковСрезПоследних | |
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодыДействияДоговоровГражданскоПравовогоХарактера КАК ПериодыДействияДоговоровГражданскоПравовогоХарактера | |
| ПО КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = ПериодыДействияДоговоровГражданскоПравовогоХарактера.Сотрудник | |
| И КадроваяИсторияСотрудниковСрезПоследних.Организация = ПериодыДействияДоговоровГражданскоПравовогоХарактера.Организация | |
| И КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо = ПериодыДействияДоговоровГражданскоПравовогоХарактера.ФизическоеЛицо | |
| И ПериодыДействияДоговоровГражданскоПравовогоХарактера.ДатаНачала <= &ДатаСреза | |
| И ПериодыДействияДоговоровГражданскоПравовогоХарактера.ДатаОкончания > &ДатаСреза"; | |
Запрос.УстановитьПараметр("ТабельныйНомер", СокрЛП(ТабельныйНомер)); | |
Запрос.УстановитьПараметр("ТабельныйНомерПрефикс","БК00-0" + СокрЛП(ТабельныйНомер)); | |
Запрос.УстановитьПараметр("Организация", Организация); | |
Запрос.УстановитьПараметр("ДатаСреза", ДатаСреза); | |
Выборка = Запрос.Выполнить().Выбрать(); | |
Если Выборка.Следующий() Тогда | |
Сотрудник = Выборка.Сотрудник; | |
ФизЛицо = Выборка.ФизЛицо; | |
Если ЗначениеЗаполнено(Выборка.СотрудникГПХ) Тогда | |
Возврат 0 | |
КонецЕсли; | |
КонецЕсли; | |
// Как понять что Режим загрузки = 3 (Сотрудники. Билеты и гостиницы): | |
//1. ТипУслуги в (Авиабилеты, Гостиницы, Ж/д билеты) | |
//2. Услуга не Сбор и не Штраф | |
//3. это не Аннулирование гостиницы | |
Если УслугаТип = _ТипыУслуг.Авиабилеты Или | |
УслугаТип = _ТипыУслуг.Гостиницы Или | |
УслугаТип = _ТипыУслуг.Ждбилеты Тогда | |
УслугаНазвание = НРег(УслугаНазвание); | |
Если Не СтрНайти(УслугаНазвание, "сбор") И Не СтрНайти(УслугаНазвание, "штраф") Тогда | |
УслугаОписание = НРег(УслугаОписание); | |
Если Не (УслугаТип = "Гостиницы" И СтрНайти(УслугаНазвание, "аннулирование")) Тогда | |
Возврат 3 | |
КонецЕсли; | |
КонецЕсли; | |
КонецЕсли; | |
Возврат 2 | |
КонецФункции | |
Функция ЗаполнитьРегистрИзВебСервиса(ДатаНачала, ДатаОкончания) Экспорт | |
Если ЗаполнитьШаблонСДаннымиИзВебСервиса(ДатаНачала, ДатаОкончания) Тогда | |
Возврат ПрочитатьШаблонСДанными() | |
КонецЕсли; | |
Возврат Ложь | |
КонецФункции | |
#КонецОбласти | |
#Область Служебные | |
Процедура Инит() | |
ЗаполнитьСинонимыОрганизаций(); | |
_Услуги = ЗаполнитьУслуги(); | |
_ТипыУслуг = ЗаполнитьТипыУслуг(); | |
КонецПроцедуры | |
Функция ЗаполнитьТипыУслуг() | |
ВсеТипыУслуг = Новый Массив; | |
ВсеТипыУслуг.Добавить("Авиабилеты"); | |
ВсеТипыУслуг.Добавить("Гостиницы"); | |
ВсеТипыУслуг.Добавить("Ж/д билеты"); | |
ВсеТипыУслуг.Добавить("Трансферы"); | |
ВсеТипыУслуг.Добавить("Доп. услуги"); | |
ВсеТипыУслуг.Добавить("Виза"); | |
ВсеТипыУслуг.Добавить("Дополнительный сервис"); | |
Возврат МассивВФиксСтруктуру(ВсеТипыУслуг); | |
КонецФункции | |
Функция ЗаполнитьУслуги() | |
ВсеУслуги = Новый Массив; | |
ВсеУслуги.Добавить("Гостиницы за рубежом"); | |
ВсеУслуги.Добавить("Гостиницы РФ"); | |
ВсеУслуги.Добавить("Жд билет внутренний"); | |
ВсеУслуги.Добавить("Жд билет международный"); | |
ВсеУслуги.Добавить("Авиабилет международный"); | |
ВсеУслуги.Добавить("Авиабилет внутренний"); | |
ВсеУслуги.Добавить("Сервисные услуги перевозчика"); | |
ВсеУслуги.Добавить("Банковский сбор при платеже зарубеж"); | |
ВсеУслуги.Добавить("Сбор за конвертацию"); | |
ВсеУслуги.Добавить("Сбор поставщика"); | |
ВсеУслуги.Добавить("Паспорт гражданина Российской Федерации"); | |
ВсеУслуги.Добавить("Трансферы РФ"); | |
ВсеУслуги.Добавить("Возврат сервисных услуг перевозчика"); | |
ВсеУслуги.Добавить("Трансферы за рубежом"); | |
ВсеУслуги.Добавить("Сервисный сбор"); | |
ВсеУслуги.Добавить("Виза выездная"); | |
ВсеУслуги.Добавить("Услуга"); | |
ВсеУслуги.Добавить("Сбор за ранний заезд"); | |
ВсеУслуги.Добавить("Штраф за обмен"); | |
ВсеУслуги.Добавить("Возврат жд билет внутренний"); | |
ВсеУслуги.Добавить("Деловой проездной"); | |
ВсеУслуги.Добавить("Медицинская страховка"); | |
ВсеУслуги.Добавить("Штраф за возврат/обмен билета"); | |
ВсеУслуги.Добавить("Транферы за рубежом"); | |
ВсеУслуги.Добавить("Заполнение анкеты (другие страны)"); | |
ВсеУслуги.Добавить("Возврат Авиабилет международный"); | |
ВсеУслуги.Добавить("Штраф"); | |
ВсеУслуги.Добавить("Сбор для корректировки"); | |
ВсеУслуги.Добавить("Возврат Авиабилет внутренний"); | |
Возврат МассивВФиксСтруктуру(ВсеУслуги); | |
КонецФункции | |
Функция МассивВФиксСтруктуру(Знач вхМассив) | |
СтруктураПервич = Новый Структура; | |
Для Каждого ЗначениеСтруктуры Из вхМассив Цикл | |
КлючСтруктуры = СтрокуВКлючСтруктуры(ЗначениеСтруктуры); | |
СтруктураПервич.Вставить(КлючСтруктуры, ЗначениеСтруктуры); | |
КонецЦикла; | |
ФиксСтруктура = Новый ФиксированнаяСтруктура(СтруктураПервич); | |
Возврат ФиксСтруктура; | |
КонецФункции | |
//Убирает все символы, которые не пройдут в качестве ключа структура | |
Функция СтрокуВКлючСтруктуры(Знач вхСтрока) | |
Ключ = вхСтрока; | |
Ключ = СтрЗаменить(Ключ, " ", ""); | |
Ключ = СтрЗаменить(Ключ, "/", ""); | |
Ключ = СтрЗаменить(Ключ, "\", ""); | |
Ключ = СтрЗаменить(Ключ, ".", ""); | |
Ключ = СтрЗаменить(Ключ, ",", ""); | |
Ключ = СтрЗаменить(Ключ, ")", ""); | |
Ключ = СтрЗаменить(Ключ, "(", ""); | |
Возврат Ключ; | |
КонецФункции | |
Процедура ЗаполнитьСинонимыОрганизаций() | |
СинонимыОрганизаций = Новый Соответствие; | |
СинонимыОрганизаций.Вставить("ЗАО «БИОКАД»", | |
Справочники.Организации.ПолучитьСсылку(Новый УникальныйИдентификатор("e77c72ef-920f-11de-a428-005056c00008"))); | |
СинонимыОрганизаций.Вставить("Общество с ограниченной ответственностью «Биокад-Фарм»", | |
Справочники.Организации.ПолучитьСсылку(Новый УникальныйИдентификатор("e77c72f3-920f-11de-a428-005056c00008"))); | |
КонецПроцедуры | |
#Область ЗаполнениеРегистраСведений_ДанныеКЭ | |
Функция ПрочитатьШаблонСДанными() | |
Результат = Ложь; | |
// заполним таблицу настроек | |
ТаблицаНастроек.Очистить(); | |
Для Каждого ТекЭл Из МаппингПолейЗаписиВебСервисаИРесурсовРегистра() Цикл | |
Если ЗначениеЗаполнено(ТекЭл.Значение) Тогда | |
НоваяСтрока = ТаблицаНастроек.Добавить(); | |
НоваяСтрока.НомерКолонкиФайла = | |
ШаблонСДанными.НайтиТекст(ТекЭл.Ключ, , | |
ШаблонСДанными.Область(1, 1, 1, ШаблонСДанными.ШиринаТаблицы), Истина).Лево; | |
НоваяСтрока.Имя = ТекЭл.Значение; | |
НоваяСтрока.Представление = ТекЭл.Ключ; | |
КонецЕсли; | |
КонецЦикла; | |
МЗ_ДляПроверки = РегистрыСведений.ДанныеКЭ.СоздатьМенеджерЗаписи(); | |
Для Сч = 2 По ШаблонСДанными.ВысотаТаблицы Цикл | |
Если Не ЗначениеЗаполнено(ШаблонСДанными.Область(Сч, 1).Текст) Тогда | |
Продолжить; | |
КонецЕсли; | |
НоваяЗапись = РегистрыСведений.ДанныеКЭ.СоздатьМенеджерЗаписи(); | |
Для Каждого ТекСтрокаНастройки Из ТаблицаНастроек Цикл | |
лЗнач = СокрЛП(ШаблонСДанными.Область(Сч, ТекСтрокаНастройки.НомерКолонкиФайла).Текст); | |
Если ЗначениеЗаполнено(лЗнач) Тогда | |
УстановитьЗначениеСвойстваЗаписи(НоваяЗапись, ТекСтрокаНастройки.Имя, лЗнач) | |
КонецЕсли; | |
КонецЦикла; | |
Если НоваяЗапись.НомерСтрокиФайла = 0 Тогда | |
Продолжить; | |
КонецЕсли; | |
//Если РежимЗагрузки = 4 Тогда | |
// НоваяЗапись.НомерСтрокиФайла = НоваяЗапись.НомерСтрокиФайла + 1000000; | |
// НоваяЗапись.РежимЗагрузки = 4; | |
//КонецЕсли; | |
// обновляем | |
//ЗаполнитьЗначенияСвойств(МЗ_ДляПроверки, НоваяЗапись); | |
//НоваяЗапись.Прочитать(); | |
//ЗаполнитьЗначенияСвойств(НоваяЗапись, МЗ_ДляПроверки, "НаименованиеПоставщикаСФ,КПППоставщикаСФ"); | |
//НоваяЗапись.Записать(); | |
//Продолжить; | |
// проверка что такая запись есть | |
ЗаполнитьЗначенияСвойств(МЗ_ДляПроверки, НоваяЗапись); | |
МЗ_ДляПроверки.Прочитать(); | |
Если МЗ_ДляПроверки.Выбран() Тогда | |
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("" + МЗ_ДляПроверки.НомерСтрокиФайла + " от " + МЗ_ДляПроверки.ДатаСоздания); | |
Возврат Ложь | |
КонецЕсли; | |
НоваяЗапись.РежимЗагрузки = РассчитатьРежимЗагрузки( | |
ОрганизацияПоНаименованиюКонтинента("ЗАО «БИОКАД»"), НоваяЗапись.ТабельныйНомер, НоваяЗапись.ДатаСоздания, , | |
НоваяЗапись.ТипУслуги, НоваяЗапись.Услуга, НоваяЗапись.НаименованиеУслуги); | |
НоваяЗапись.Пометка = Истина; | |
НоваяЗапись.Записать(); | |
Результат = Истина; | |
КонецЦикла; | |
Возврат Результат | |
КонецФункции | |
Процедура УстановитьЗначениеСвойстваЗаписи(ЗаписьРС, ИмяСвойства, Значение) | |
Если ТипЗнч(ЗаписьРС[ИмяСвойства]) = Тип("Дата") Тогда | |
ДатаМассив = СтрРазделить(Значение, "."); | |
Если ДатаМассив.Количество() = 3 Тогда | |
Значение = Дата(ДатаМассив[2], ДатаМассив[1], ДатаМассив[0]) | |
КонецЕсли; | |
ИначеЕсли ТипЗнч(ЗаписьРС[ИмяСвойства]) = Тип("Число") Тогда | |
Значение = СтрЗаменить(Значение, Символы.НПП, ""); | |
Значение = СтрЗаменить(Значение, " ", ""); | |
ИначеЕсли ТипЗнч(ЗаписьРС[ИмяСвойства]) = Тип("ПеречислениеСсылка.СтавкиНДС") Тогда | |
Значение = ОбменСКонтрагентамиПовтИсп.СтавкаНДСИзПредставления(Значение) | |
КонецЕсли; | |
ЗаписьРС[ИмяСвойства] = Значение | |
КонецПроцедуры | |
Функция МаппингПолейЗаписиВебСервисаИРесурсовРегистра() | |
Результат = Новый Структура; | |
Результат.Вставить("ТабельныйНомер" , "ТабельныйНомер"); | |
//Результат.Вставить("ЗаказИнициатор" , ""); | |
Результат.Вставить("ДокументНомер" , "НомерДокумента"); | |
Результат.Вставить("ДокументДатаСоздания" , "ДатаСоздания"); | |
//Результат.Вставить("Подразделение" , ""); | |
//Результат.Вставить("АвторизованноеЛицо" , ""); | |
//Результат.Вставить("НомерКомандировочногоУдостоверения" , ""); | |
Результат.Вставить("УслугаТип" , "ТипУслуги"); | |
Результат.Вставить("УслугаНазвание" , "Услуга"); | |
Результат.Вставить("АвиакомпанияКод" , "КодАвиакомпании"); | |
Результат.Вставить("НомерБилетаУслуги" , "НомерБилетаУслуги"); | |
Результат.Вставить("ЗаменаБилета" , "ЗаменаБилета"); | |
Результат.Вставить("УслугаОписание" , "НаименованиеУслуги"); | |
Результат.Вставить("Пассажир" , "ФИОПассажира"); | |
//Результат.Вставить("Маршрут" , ""); | |
//Результат.Вставить("Направление" , ""); | |
//Результат.Вставить("ВылетЗаездДата" , ""); | |
Результат.Вставить("ПрилетВыездДата" , "ДатаПрилета"); | |
Результат.Вставить("УслугаСтоимостьБезНдс" , "СтоимостьУслугиБезНДС"); | |
Результат.Вставить("НдсСумма" , "СуммаНДС"); | |
//Результат.Вставить("НдсПроцент" , ""); | |
Результат.Вставить("СтавкаНДС" , "СтавкаНДС"); | |
Результат.Вставить("УслугаСтоимостьВклНдс" , "СтоимостьУслугиСНДС"); | |
//Результат.Вставить("ФормаОплаты" , ""); | |
//Результат.Вставить("Плательщик" , ""); | |
//Результат.Вставить("ПоставщикИмя" , ""); | |
//Результат.Вставить("ПоставщикаСчетФактураНомер" , ""); // ? | |
//Результат.Вставить("ПроцентНдс" , ""); | |
//Результат.Вставить("ПоставщикИмяПолное" , ""); | |
Результат.Вставить("ПоставщикИНН" , "ИННПоставщика"); | |
//Результат.Вставить("ПоставщикКПП" , ""); | |
Результат.Вставить("СчетФактураНомер" , "НомерСчетаФактуры"); // ? | |
Результат.Вставить("СчетФактураДатаПроведения" , "ДатаСчетаФактуры"); | |
Результат.Вставить("ПоставщикСФИмяПолноеРус" , "НаименованиеПоставщикаСФ"); | |
Результат.Вставить("ПоставщикСФИНН" , "ИННПоставщикаСФ"); | |
Результат.Вставить("ПоставщикСФКПП" , "КПППоставщикаСФ"); | |
Результат.Вставить("СводнаяНакладнаяНомер" , "НомерСводногоДокумента"); | |
Результат.Вставить("СводнаяДата" , "ДатаСводногоДокумента"); | |
Результат.Вставить("НомерСтрокиФайла", "НомерСтрокиФайла"); // добавил порядковый номер для регистра | |
Возврат Результат | |
КонецФункции | |
#КонецОбласти | |
#КонецОбласти | |
#Область ВебСервисКЭ | |
Функция ПолучитьПараметрыВебСервиса() | |
ПараметрыВебСервиса = Новый Структура; | |
ПараметрыВебСервиса.Вставить("ПутьПубликацииСервера", "https://biocadservice.continent.ru:7000/ReportService.svc?singleWsdl"); | |
ПараметрыВебСервиса.Вставить("Пользователь", ""); | |
ПараметрыВебСервиса.Вставить("Пароль", ""); | |
ПараметрыВебСервиса.Вставить("Таймаут", 120); | |
ПараметрыВебСервиса.Вставить("URIПространстваИменСервиса", "http://tempuri.org/"); | |
ПараметрыВебСервиса.Вставить("ИмяСервиса", "ReportService"); | |
ПараметрыВебСервиса.Вставить("ИмяТочкиПодключения", "BasicHttpsBinding_IReportService"); | |
//{http://tempuri.org/}BasicHttpsBinding_IReportService | |
Возврат ПараметрыВебСервиса; | |
КонецФункции | |
Функция ДатаИзСтрокиХМЛ(Знач вхДата) | |
Если не ЗначениеЗаполнено(вхДата) Тогда | |
Возврат Неопределено; | |
КонецЕсли; | |
Возврат СериализаторXDTO.XMLЗначение(Тип("Дата"), вхДата); | |
КонецФункции | |
Функция ДатаВСтрокуХМЛ(Знач вхДата) | |
Возврат СериализаторXDTO.XMLСтрока(вхДата); | |
КонецФункции | |
Функция ПолучитьОбъектХДТОизВебСервиса(ДатаНачала, ДатаОкончания) | |
ПараметрыВебСервиса = ПолучитьПараметрыВебСервиса(); | |
//Инициализация WS-объектов | |
ВСОпределение = Новый WSОпределения(ПараметрыВебСервиса.ПутьПубликацииСервера, ПараметрыВебСервиса.Пользователь, ПараметрыВебСервиса.Пароль,,ПараметрыВебСервиса.Таймаут); | |
ВСПрокси = Новый WSПрокси(ВСОпределение, ПараметрыВебСервиса.URIПространстваИменСервиса, ПараметрыВебСервиса.ИмяСервиса, ПараметрыВебСервиса.ИмяТочкиПодключения,,ПараметрыВебСервиса.Таймаут); | |
Если ЗначениеЗаполнено(ПараметрыВебСервиса.Пользователь) Тогда | |
ВСПрокси.Пользователь = ПараметрыВебСервиса.Пользователь; | |
КонецЕсли; | |
Если ЗначениеЗаполнено(ПараметрыВебСервиса.Пароль) Тогда | |
ВСПрокси.Пароль = ПараметрыВебСервиса.Пароль; | |
КонецЕсли; | |
//ДатаНачала = "2017-03-01T00:00:00.000+04:00"; | |
//ДатаОкончания = "2017-03-01T00:00:00.000+04:00"; | |
//Создание объекта ХДТО-списка и наполнение в цикле | |
ФабрикаКонт = ВСПрокси.ФабрикаXDTO; | |
ТипПараметры = ФабрикаКонт.Тип(ПараметрыВебСервиса.URIПространстваИменСервиса, "AccountingDataGet"); | |
ПараметрыЗапроса = ФабрикаКонт.Создать(ТипПараметры); | |
ПараметрыЗапроса.dateFrom = ДатаВСтрокуХМЛ(ДатаНачала); | |
ПараметрыЗапроса.dateTo = ДатаВСтрокуХМЛ(ДатаОкончания); | |
Ответ = ВСПрокси.AccountingDataGet(ПараметрыЗапроса); | |
Возврат Ответ; | |
КонецФункции | |
Функция СтруктураЗаписиХДТО() | |
Запись = Новый Структура; | |
Запись.Вставить("ТабельныйНомер"); | |
Запись.Вставить("ЗаказИнициатор"); | |
Запись.Вставить("ДокументНомер"); | |
Запись.Вставить("ДокументДатаСоздания"); | |
Запись.Вставить("Подразделение"); | |
Запись.Вставить("АвторизованноеЛицо"); | |
Запись.Вставить("НомерКомандировочногоУдостоверения"); | |
Запись.Вставить("УслугаТип"); | |
Запись.Вставить("УслугаНазвание"); | |
Запись.Вставить("АвиакомпанияКод"); | |
Запись.Вставить("НомерБилетаУслуги"); | |
Запись.Вставить("ЗаменаБилета"); | |
Запись.Вставить("УслугаОписание"); | |
Запись.Вставить("Пассажир"); | |
Запись.Вставить("Маршрут"); | |
Запись.Вставить("Направление"); | |
Запись.Вставить("ВылетЗаездДата"); | |
Запись.Вставить("ПрилетВыездДата"); | |
Запись.Вставить("УслугаСтоимостьБезНдс"); | |
Запись.Вставить("НдсСумма"); | |
Запись.Вставить("НдсПроцент"); | |
Запись.Вставить("СтавкаНДС"); | |
Запись.Вставить("УслугаСтоимостьВклНдс"); | |
Запись.Вставить("ФормаОплаты"); | |
Запись.Вставить("Плательщик"); | |
Запись.Вставить("ПоставщикИмя"); | |
Запись.Вставить("ПоставщикаСчетФактураНомер"); | |
Запись.Вставить("ПроцентНдс"); | |
Запись.Вставить("ПоставщикИмяПолное"); | |
Запись.Вставить("ПоставщикИНН"); | |
Запись.Вставить("ПоставщикКПП"); | |
Запись.Вставить("СчетФактураНомер"); | |
Запись.Вставить("СчетФактураДатаПроведения"); | |
Запись.Вставить("ПоставщикСФИмяПолноеРус"); | |
Запись.Вставить("ПоставщикСФИНН"); | |
Запись.Вставить("ПоставщикСФКПП"); | |
Запись.Вставить("СводнаяНакладнаяНомер"); | |
Запись.Вставить("СводнаяДата"); | |
Возврат Запись; | |
КонецФункции | |
Функция ЗаполнитьШаблонСДаннымиИзВебСервиса(ДатаНачала, ДатаОкончания) | |
ОбъектХДТО = ПолучитьОбъектХДТОизВебСервиса(ДатаНачала, ДатаОкончания); | |
ВсеЗаписи = ОбъектХДТО.AccountingDataGetResult.Report.AccountData.Details_Collection.Details; | |
ШаблонСДанными.Очистить(); | |
СчСтрок = 1; | |
НумерацияПоля_НомерСтрокиФайла = Новый Соответствие; | |
Для Каждого СтрокаЗаписиХДТО Из ВсеЗаписи Цикл | |
Запись = СтруктураЗаписиХДТО(); | |
ЗаполнитьЗначенияСвойств(Запись, СтрокаЗаписиХДТО); | |
//Дату формата "2017-03-01T00:00:00.000+04:00" преобразовывать так: | |
// НужнаяДата = ДатаИзСтрокиХМЛ(Запись.РеквизитСДатой) | |
Запись.ДокументДатаСоздания = Формат(ДатаИзСтрокиХМЛ(Запись.ДокументДатаСоздания), "ДЛФ=D"); | |
Запись.ПрилетВыездДата = Формат(ДатаИзСтрокиХМЛ(Запись.ПрилетВыездДата), "ДЛФ=D"); | |
Запись.СчетФактураДатаПроведения = Формат(ДатаИзСтрокиХМЛ(Запись.СчетФактураДатаПроведения), "ДЛФ=D"); | |
Запись.СводнаяДата = Формат(ДатаИзСтрокиХМЛ(Запись.СводнаяДата), "ДЛФ=D"); | |
ДатаСоздания = Запись.ДокументДатаСоздания; | |
Если ЗначениеЗаполнено(НумерацияПоля_НомерСтрокиФайла[ДатаСоздания]) Тогда | |
НумерацияПоля_НомерСтрокиФайла[ДатаСоздания] = | |
НумерацияПоля_НомерСтрокиФайла[ДатаСоздания] + 1 | |
Иначе | |
НумерацияПоля_НомерСтрокиФайла[ДатаСоздания] = 1 | |
КонецЕсли; | |
СчСтрок = СчСтрок + 1; | |
СчКолонок = 1; | |
Для Каждого ТекЭл Из Запись Цикл | |
СчКолонок = СчКолонок + 1; | |
ШаблонСДанными.Область(СчСтрок, СчКолонок).Текст = ТекЭл.Значение | |
КонецЦикла; | |
ШаблонСДанными.Область(СчСтрок, 1).Текст = НумерацияПоля_НомерСтрокиФайла[ДатаСоздания]; | |
КонецЦикла; | |
Если ШаблонСДанными.ВысотаТаблицы Тогда | |
СчКолонок = 1; | |
Для Каждого ТекЭл Из Запись Цикл | |
СчКолонок = СчКолонок + 1; | |
ШаблонСДанными.Область(1, СчКолонок).Текст = ТекЭл.Ключ | |
КонецЦикла; | |
ШаблонСДанными.Область(1, 1).Текст = "НомерСтрокиФайла"; | |
Результат = Истина; | |
Иначе | |
Результат = Ложь; | |
КонецЕсли; | |
Возврат Результат | |
КонецФункции | |
#КонецОбласти | |
#Область СведенияОВнешнейОбработке | |
Функция СведенияОВнешнейОбработке() Экспорт | |
Версия = "1.5.0"; | |
// Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные | |
ПараметрыРегистрации = Новый Структура; | |
// Объявим еще одну переменную, которая нам потребуется ниже | |
МассивНазначений = Новый Массив; | |
// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать. | |
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов | |
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); | |
ПараметрыРегистрации.Вставить("Назначение", Новый Массив); | |
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок | |
ПараметрыРегистрации.Вставить("Наименование", "_ОбщийМодульКонтинент"); | |
// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим) | |
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); | |
// Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке | |
ПараметрыРегистрации.Вставить("Версия", Версия); | |
ПараметрыРегистрации.Вставить("Информация", "_ОбщийМодульКонтинент"); | |
// Создадим таблицу команд (подробнее смотрим ниже) | |
ТаблицаКоманд = ПолучитьТаблицуКоманд(); | |
ДобавитьКоманду(ТаблицаКоманд, | |
"Проверка тестовых методов (эмуляция ОМ)", | |
"Форма_ОбщийМодульКонтинент", | |
"ОткрытиеФормы" | |
); | |
ДобавитьКоманду(ТаблицаКоманд, "тестовый", "ТестовыйМетод();", "ВызовСерверногоМетода"); | |
// Сохраним таблицу команд в параметры регистрации обработки | |
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); | |
// Теперь вернем системе наши параметры | |
Возврат ПараметрыРегистрации; | |
КонецФункции | |
Функция ПолучитьТаблицуКоманд() | |
// Создадим пустую таблицу команд и колонки в ней | |
Команды = Новый ТаблицаЗначений; | |
// Как будет выглядеть описание печатной формы для пользователя | |
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); | |
// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати | |
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); | |
// Тут задается, как должна вызваться команда обработки | |
// Возможные варианты: | |
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система | |
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки | |
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки | |
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); | |
// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы | |
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); | |
// Для печатной формы должен содержать строку ПечатьMXL | |
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); | |
Возврат Команды; | |
КонецФункции | |
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") | |
// Добавляем команду в таблицу команд по переданному описанию. | |
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд | |
НоваяКоманда = ТаблицаКоманд.Добавить(); | |
НоваяКоманда.Представление = Представление; | |
НоваяКоманда.Идентификатор = Идентификатор; | |
НоваяКоманда.Использование = Использование; | |
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; | |
НоваяКоманда.Модификатор = Модификатор; | |
КонецПроцедуры | |
Процедура ВыполнитьКоманду(Индентификатор) Экспорт | |
Выполнить(Индентификатор); | |
КонецПроцедуры | |
#КонецОбласти //СведенияОВнешнейОбработке | |
Инит(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment