По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7) нашла. Не знаю - поможет ли вам это.
У меня был веб-сервис сторонней программы КИС, я его вызывала из 1С.ЗУП и передавала ему фото. Таким образом фотографии из 1С передавались в стороннюю программу КИС:
У меня был веб-сервис сторонней программы КИС, я его вызывала из 1С.ЗУП и передавала ему фото. Таким образом фотографии из 1С передавались в стороннюю программу КИС:
// вызывается процедурой этого модуля Процедура ОбменКИСПриЗаписи(Источник, Отказ) Экспорт
// как обработчик для Подписки на событие.ОбменКИС - используется при изменении фото Справочник.ХранилищеДополнительнойИнформации
Процедура ПередачаФотоФизЛиц(Флаг, ВключенОбменКИС, КлючВебСервисаКИС)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка,
| ФизическиеЛица.Код,
| ФизическиеЛица.Наименование,
| ФизическиеЛица.ДатаРождения,
| ФизическиеЛица.Пол,
| ФизическиеЛица.Пол.Порядок,
| ХранилищеДополнительнойИнформации.ВидДанных,
| ХранилищеДополнительнойИнформации.ИмяФайла,
| ХранилищеДополнительнойИнформации.Объект,
| ХранилищеДополнительнойИнформации.Хранилище,
| ХранилищеДополнительнойИнформации.ТекстФайла,
| ЕСТЬNULL(ХранилищеДополнительнойИнформацииИзменения.НомерСообщения, 0) КАК НомерСообщения
|ИЗ
| Справочник.ХранилищеДополнительнойИнформации.Изменения КАК ХранилищеДополнительнойИнформацииИзменения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
| ПО ХранилищеДополнительнойИнформации.Ссылка = ФизическиеЛица.ОсновноеИзображение
| ПО ХранилищеДополнительнойИнформацииИзменения.Ссылка = ХранилищеДополнительнойИнформации.Ссылка
|ГДЕ
| (ХранилищеДополнительнойИнформацииИзменения.НомерСообщения > &НомерСообщения
| ИЛИ ХранилищеДополнительнойИнформацииИзменения.НомерСообщения ЕСТЬ NULL )
| И ХранилищеДополнительнойИнформацииИзменения.Узел = &Узел";
Point = "Узел";
СсылкаНаУзел = ПланыОбмена.ОбменКИС.НайтиПоКоду(Point);
НовыйНомерОтправленного = СсылкаНаУзел.НомерОтправленного + 1; // новый/следующий номер отправленного сообщения, для текущих отправляемых сообщений
NomerAd = СсылкаНаУзел.НомерПринятого; // номер последнего приятого удачно сообщения, начиная со следующего сообщения - выгружаем в КИС
НовыйНомерПринятого = NomerAd;
Запрос.УстановитьПараметр("Узел", СсылкаНаУзел);
Запрос.УстановитьПараметр("НомерСообщения", NomerAd);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
URI = "www.xxx.ru/";
Пока Выборка.Следующий() Цикл
Если ВключенОбменКИС Тогда
// используем метод СоздатьWSПрокси типа WSСсылкаМенеджер.WSСсылка, который создает объект WSПрокси
// В WSПрокси мы указываем логин и пароль для доступа к веб-сервису и уже после этого вызываем функцию веб-сервиса. В нашем случае это функция ListOfDevices().
WSПроксиКИС = WSСсылки.WSСсылка_КИС_HRM.СоздатьWSПрокси(URI, "HRM", "HRMSoap");
Попытка
Ответ = WSПроксиКИС.AddEmlPhoto(КлючВебСервисаКИС, // ,
GUIDToUUID(XMLСтрока(Выборка.Ссылка)),
Выборка.ИмяФайла,
Выборка.Хранилище.Получить().ПолучитьДвоичныеДанные() // возвращает тип ДвоичныеДанные - последовательность байтов файла
);
Исключение
Сообщить("При передаче данных в КИС произошла ошибка: "+ОписаниеОшибки());
Флаг = Ложь; // были ошибки при загрузке в КИС, будем повторно передавать эти же данные
КонецПопытки;
Иначе
Ответ = "1"; // обмен с КИС выключен, но записи по измененям нужно удалить - поэтому делаем признак - как будто успешно передали изменения в КИС
КонецЕсли;
Если Ответ = "1" Тогда
НовыйНомерПринятого = Макс(?(Выборка.НомерСообщения = 0, НовыйНомерОтправленного, Выборка.НомерСообщения), НовыйНомерПринятого);
Иначе
Сообщить("Не передано в КИС фото " + Выборка.Наименование + ". Ответ = "+Строка(Ответ));
Флаг = Ложь; // были ошибки при загрузке в КИС, будем повторно передавать эти же данные
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
Добрый день, думаю можно попробовать веб-сервисом.
В базе источнике создаем план-обмена, в который регистрируем изменения.
Используем функции сериализации
С помощью них, можно передавать все что угодно.
В базе источника создаем процедуру в плане обмена
что-то типа:
В базе Приемнике создаем WEB-сервис.
Создаем Операцию UploadPhoto с одним входным параметром String с типом string
В базе источнике создаем план-обмена, в который регистрируем изменения.
Используем функции сериализации
С помощью них, можно передавать все что угодно.
Функция ЗначениеИзXMLСтроки(XMLСтрока)
НовыйСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.УстановитьСтроку(XMLСтрока);
Хранилище = НовыйСериализаторXDTO.ПрочитатьXML(ЧтениеXML);
Значение = Хранилище.Получить();
Возврат Значение;
КонецФункции
функция ЗначениеВXMLСтроку(Значение)
НовыйСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
НоваяЗаписьXML = Новый ЗаписьXML();
НоваяЗаписьXML.УстановитьСтроку();
ХранилищеПараметровЗапроса = Новый ХранилищеЗначения(Значение, Новый СжатиеДанных(9));
НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, ХранилищеПараметровЗапроса, НазначениеТипаXML.Явное);
xmlСтрокаПараметрыЗапроса = НоваяЗаписьXML.Закрыть();
Возврат xmlСтрокаПараметрыЗапроса;
КонецФункции
ПоказатьВ базе источника создаем процедуру в плане обмена
что-то типа:
//МассивСотрудников - все сотрудники которые поставлены на регистрацию в плане обмена
Процедура ОтправитьФотоВУзелОбмена(УзелОбмена, МассивСотрудников)
// Подключение к ВебСервису
WSПрокси = Неопределено;
ТекстОшибкиПодключения = ПодключитьWSПрокси(WSПрокси, УзелОбмена.АдресВебСервиса, УзелОбмена.ЛогинВебСервиса, УзелОбмена.ПарольВебСервиса);
Если ЗначениеЗаполнено(ТекстОшибкиПодключения) Тогда
Возврат;
КонецЕсли;
//ФормированиеДанныхДляОтправки
ТЗФотографий = ПолучитьТаблицуФотографий(МассивСотрудников); //в этой функции можно сделать ТЗ со строками Сотрудник и Фотография.
Если ТЗФотографий.Количество()=0 Тогда
Возврат;
КонецЕсли;
//Отправка данных
Попытка
МассивЗагруженныхУспешно = ЗначениеИзXMLСтроки(WSПрокси.UploadPhoto(ЗначениеВXMLСтроку(ТЗФотографий)));
СнятьОбъектыСРегистрацииДляУзла(УзелОбмена, МассивЗагруженныхУспешно, ТЗФотографий); // здесь снимаем с регистрации успешные (ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Сотрудник)), в ответе web-сервиса мы отправим успешно загруженных сотрудников обратно
Исключение
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
КонецПроцедуры
ПоказатьВ базе Приемнике создаем WEB-сервис.
Создаем Операцию UploadPhoto с одним входным параметром String с типом string
Функция UploadPhoto(String)
МассивЗагруженныхУспешно = Новый Массив;
Попытка
ТЗФоток = ЗначениеИзXMLСтроки(String);
Исключение
Возврат МассивЗагруженныхУспешно ;
КонецПопытки;
Для Каждого СтрокаТЗ Из ТЗФоток Цикл
УспешноЗагружено = ЗагрузитьФото(СтрокаТЗ); //Тут уже можно обработать нашу фотку
Если УспешноЗагружено Тогда
МассивЗагруженныхУспешно.Добавить(СтрокаТЗ.Сотрудник); //обратно вернем сотрудника
КонецЕсли;
КонецЦикла;
Возврат ЗначениеВXMLСтроку(МассивЗагруженныхУспешно);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот