В начало

Добавить вложения в документ «Заявка»

 

            Нужно добавить в прилагаемые файлы документа «Заявка» файлы, полученные с сайта.

 

Листинг. Модуль внешней обработки

&НаКлиенте

Функция Авторизация(Знач Логин, Знач Пароль)

           

            Соединение = Новый HTTPСоединение("site.ru", 443,,,,30, Новый ЗащищенноеСоединениеOpenSSL);  

           

            Запрос = Новый HTTPЗапрос("/login?login-form-email=" + Логин + "&login-form-password=" + Пароль);

           

            Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);    

           

            Если Ответ.КодСостояния = 200 Тогда

                        Куки = Ответ.Заголовки.Получить("Set-Cookie");

                        Куки = СтрЗаменить(Куки, ";", Символы.ПС);

                        Куки = СтрЗаменить(Куки, ",", Символы.ПС);

                        MosregToken = СтрПолучитьСтроку(Куки, 1);                 

                        JSessionID =  СокрЛП(СтрПолучитьСтроку(Куки, 5));

                                               

                        Возврат JSessionID + ";" + MosregToken;

            Иначе                           

                        Возврат "";

            КонецЕсли;   

КонецФункции

 

&НаКлиенте

Функция ПолучитьМассивВложенийПоIdЗаявки(Знач Cookie, Знач idЗаявки)

                        Заголовки = Новый Соответствие;             

                        Заголовки.Вставить("Cookie", Cookie);

                        Запрос2 = Новый HTTPЗапрос("/api/claim/" + idЗаявки, Заголовки);

                       

                        Соединение = Новый HTTPСоединение("site.ru", 443,,,,30, Новый ЗащищенноеСоединениеOpenSSL);

                        Ответ2 = Соединение.ВызватьHTTPМетод("GET", Запрос2);   

           

           

                        Если Ответ2.КодСостояния = 200 Тогда

                       

                                   ЧтениеJSON = Новый ЧтениеJSON();

                                    ЧтениеJSON.УстановитьСтроку(Ответ2.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));

                                   Ответ22 = ПрочитатьJSON(ЧтениеJSON);

                                   ЧтениеJSON.Закрыть();        

                                  

                                   Возврат Ответ22.value.images;

                        Иначе  

                                   Возврат "";

                        КонецЕсли;   

 

КонецФункции

 

&НаСервере

Процедура ДобавитьВложенияВЗаявку(Знач ИмяФайла, Знач ДвоичныеДанныеКартинки, Знач idЗаявки)

           

            СсылкаНаЗаявку = ПолучитьСсылкуНаЗаявку("ЕДСМО" +  idЗаявки);

           

                                                          

                        Вложение = Справочники.УК_ХранилищеДополнительнойИнформации.СоздатьЭлемент();    

                        Вложение.УстановитьНовыйКод();

                        Вложение.ОбменДанными.Загрузка = Истина;

           

                        Вложение.Наименование = "Префикс" + idЗаявки;

                        Вложение.Объект = СсылкаНаЗаявку;

                        Вложение.ВидВложения = Перечисления.УКНСИ_ВидВложения.Входящее;

                        Вложение.ВидДанных = Перечисления.УКНСИ_ВидыДополнительнойИнформацииОбъектов.Изображение;

                        Вложение.ИмяФайла = ИмяФайла;

                        ДанныеФото = ДвоичныеДанныеКартинки;

                        Вложение.Хранилище = Новый ХранилищеЗначения(Новый Картинка(ДанныеФото), Новый СжатиеДанных());

                        данныеХЗ = Вложение.Хранилище.Получить();

                       

                        Если данныеХЗ <> Неопределено Тогда

                                   Вложение.ХранилищеРазмер = данныеХЗ.ПолучитьДвоичныеДанные().Размер();

                        КонецЕсли;

                       

                        Вложение.Записать();

                       

КонецПроцедуры

 

Функция АдресКартинкиБезДомена(Знач ИсхСтр)

           

            Если НЕ ЗначениеЗаполнено(ИсхСтр) ИЛИ       

                        СтрНайти(ИсхСтр, "/images") = 0 Тогда

                        Возврат ИсхСтр;

            КонецЕсли;   

                       

            Поз1Нач = СтрНайти(ИсхСтр, "/images", , 1, 1);

            Поз2Кон = СтрДлина(ИсхСтр);

           

            Возврат          Сред(ИсхСтр, Поз1Нач, Поз2Кон - Поз1Нач + 1);

КонецФункции        

 

&НаКлиенте

Процедура ПриложитьФайлКартинкиДвоичныеДанныеЗапросом(Команда)

            Авт = Авторизация("123", "456");

            idЗаявки = "789";

           

            Если НЕ ЗначениеЗаполнено(Авт) Тогда

                        Возврат;

            КонецЕсли;

           

             МассивКартинок = ПолучитьМассивВложенийПоIdЗаявки(Авт, idЗаявки);

           

            Для Каждого Эл Из МассивКартинок Цикл

                        Запрос = Новый HTTPЗапрос(АдресКартинкиБезДомена(Эл.Url));

 

                        Соединение = Новый HTTPСоединение("site.ru", 443,,,,30, Новый ЗащищенноеСоединениеOpenSSL);

                       

                        Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);

                       

                        ДвоичныеДанныеКартинки = Ответ.ПолучитьТелоКакДвоичныеДанные();

                                                                      

                        ДобавитьВложенияВЗаявку(Эл.Name, ДвоичныеДанныеКартинки, idЗаявки);

            КонецЦикла;

           

КонецПроцедуры