Универсальный обмен данными XML через web-сервисы

09.10.13

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Организация онлайн-обмена данными в формате "Конвертации данных" через web-сервисы

Вступление

Целью статьи является рассказать о том, как организовать передачу через web-сервис XML-данных в формате универсального обмена данными в информационную базу на платформе 1С:Предприятие 8.1 и старше. А также как получить из базы xml-данные. Cтатья может быть полезна для знакомства с web-сервисами. Если уже знакомы с ними, то, думаю, можете почерпнуть для себя новые полезные приемы.

Универсальный обмен данными XML, он же "1С:Конвертация данных" – это технология обмена данными между различными конфигурациями на платформе 1С.
С помощью этой технологии организованы все "типовые" обмены (УТ  Бухгалтерия, УТ  Розница, ЗУП  Бухгалтерия и т.д.). А также можно организовать свои собственные сценарии обмена с нуля между любыми конфигурациями на платформах 1С (начиная с 7.7). Обучение технологии «1С:Конвертации данных» не является целью данной статьи. Подразумевается, что вы с ней  знакомы или познакомитесь из других источников, их предостаточно. Могу порекомендовать материалы на диске ИТС. Или, может быть, вам вообще не нужно с ней знакомиться, а просто автоматизировать саму передачу данных.
Попутно попробую рассказать немного теории. Чтобы «подружить» с
web-сервисами тех, кто мало с ними знаком.

Технология «Конвертации данных» предлагает два способа передачи данных: через файлы – в одной базе выгрузили, в другой загрузили, либо через COM-соединение. Оба способа имеют свои недостатки. Для меня, я бы сказал, фатальные. А если серьезно, просто таят в себе существенные неудобства. Расписывать недостатки и убеждать не буду – это отдельная тема. Коротко перечислю достоинства web-сервисов, важные для меня:

  1. Возможность организовать онлайн-обмен;
  2. Возможность организовать удаленный онлайн-обмен, т.е. через Интернет;
  3. База-приемник и база-источник могут работать на разных релизах и даже версиях платформы (COM-соединение в таких ситуациях использовать проблематично, почти невозможно);
  4. Очень быстрая установка соединения и очень быстрая передача данных. Правда, «холодный» запуск по времени сравним с COM-соединением.
  5. Удобно для разработчика, возможность использовать одну и ту же технологию трансфера данных как для обменов 1С  1C, так и для обменов 1С  Другие системы.

Вообще, я «фанат» web-сервисов. Мог бы ещё много рассказать об их отладке, обмене с «чужеродными» средами, в том числе такими проблемными, как PHP (в виду вольного обращения данной платформы со стандартами SOA). Но это темы для отдельных статей. 

Инфраструктура

Вопросы установка и настройка web-сервера, публикации web-сервисов не рассматриваются в данной статье. Подразумевается, что это вы делать умеете или готовы разобраться, или у вас просто есть готовая инфраструктура. Могу порекомендовать документацию к 1С:Предприятию и «погуглить» в Интернете (именно «и», а не «или»).

Реализация. Серверная сторона.

Сервер – это для нас информационная база, которая принимает и отдает данные. Всё делаем на платформе 1С:Предприятие 8.2 (прикладное решение не важно).

Web-сервис

Добавляем web-сервис. Назовем «ОбменДаннымиXML». Свойства следующие:

Ключевым свойством для нас является Пакеты XDTOВыбранный пакет «http://v8.1c.ru/8.1/data/core» представляет встроенные типы 1С:Предприятия, общие для любых конфигураций, такие как ХранилищеЗначения, Структура, Массив и т.п. Пускай вас не смущает число 8.1 в имени пакета. Имеется в виду, что эти типы есть в платформах 8.1 и выше, и их XML-представление не менялось с платформы 8.1.

URI пространства имен в данном случае совершенно не важен, можно указать любую строку. Их принято строить на базе URL, которые использует ваша организация, чтобы гарантировать глобальную уникальность имен типов, описанных в ваших пакетах, на всякий случай. Но мы описывать свои типы (это делается при помощи пакетов XDTOв соответствующей ветке дерева конфигурации) не будем, так как нам достаточно встроенных типов 1C:Предприятия.

Имя файла публикации может быть любым, но с соблюдением требований к URL. Кириллицу лучше не использовать. Расширение «1cws» тоже лучше не менять (не пробовал, если честно).


Операции

Добавляем операции web-сервиса. Наш web-сервис должен уметь как принимать данные, записывая в свою ИБ, так и отдавать их (выгружать в XML). Поэтому добавляем две операции, "ПринятьДанные" и "ОтдатьДанные".

 

Операция ПринятьДанные

"ПринятьДанные" записывает в ИБ xml-данные, переданные в первом параметре "Данные". Тип параметра - Хранилище значения. ХранилищеЗначения выбираем, чтобы сжимать данные при передаче, т.к. файлы XML могут быть очень увесистыми и при этом хорошо "жмутся". Но можно было бы использовать и просто Строку, string(http://www.w3.org/2001/XMLSchema). 
Операция возвращает целое число – количество успешно записанных объектов.
Второй параметр - ТекстОшибки, строка, входной-выходной, для возврата текста ошибки.


Понятно, что ValueStorage– это ХранилищеЗначения

Код метода:

Функция ПринятьДанные(Данные, ТекстОшибки)

	
	УстановитьПривилегированныйРежим(Истина);
	
	ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	ОбработкаОбмена.РежимОбмена = "Загрузка";
	
	РаботаВозможна = ОбработкаОбмена.ВыполнитьДействияПередЧтениемДанных(Данные.Получить());
	
	Если НЕ РаботаВозможна Тогда
		Возврат 0;
	КонецЕсли;	

	ОбработкаОбмена.ПроизвестиЧтениеДанных(ТекстОшибки);
	
	ОбработкаОбмена.ВыполнитьДействияПослеЗавершенияЧтенияДанных(); 
	
	Возврат ОбработкаОбмена.мСчетчикЗагруженныхОбъектов;	
	
КонецФункции

Операция ОтдатьДанные

"ОтдатьДанные" возвращает xml-данные, выгруженные по переданным правилам обмена. Также в виде ХранилищаЗначения.
Это тоже обертка над Универсальным обменом, только уже более функциональная. Обратите внимание , что Массив и Структура – это уже не простые типы, они попадают в метод в виде XDTO-объектов, и их нужно явно преобразовывать в/из типы 1С:Предприятия. Преобразовывать в/из XDTO нужно и на клиентской стороне.

 


ПравилаВыгрузки - это массив имен правил выгрузки, по которым следует произвести выборку данных.


ЗначенияПараметров – это структура со значениями параметров конвертации.

Код:

Функция ОтдатьДанные(ПравилаОбмена, ПравилаВыгрузкиXDTO, ЗначенияПараметровXDTO)
	
	УстановитьПривилегированныйРежим(Истина);
	
	// Иницализация
	Обмен = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	Обмен.РежимОбмена = "Выгрузка";
	ИмяВремФайла = ПолучитьИмяВременногоФайла("xml");
	Обмен.ИмяФайлаОбмена = ИмяВремФайла;
	
	// Загрузка правил
	ИмяФайлаПравилОбмена = ПолучитьИмяВременногоФайла("xml");
	ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаПравилОбмена);
	ЗаписьТекста.Записать(ПравилаОбмена.Получить());
	ЗаписьТекста.Закрыть();
	Обмен.ИмяФайлаПравилОбмена = ИмяФайлаПравилОбмена;
	Обмен.ЗагрузитьПравилаОбмена();
	
	// Параметры
	ЗначенияПараметров = СериализаторXDTO.ПрочитатьXDTO(ЗначенияПараметровXDTO);
	Если ЗначениеЗаполнено(ЗначенияПараметров) Тогда
		Для каждого КлючИЗнач Из ЗначенияПараметров Цикл
			Обмен.УстановитьЗначениеПараметраВТаблице(КлючИЗнач.Ключ, КлючИЗнач.Значение);
		КонецЦикла; 
	КонецЕсли; 
	
	// Правила выгрузки данных
	ПравилаВыгрузки = СериализаторXDTO.ПрочитатьXDTO(ПравилаВыгрузкиXDTO);
	Если ЗначениеЗаполнено(ПравилаВыгрузки) Тогда
		
		// Сначала снимаем все отметки
		Для Каждого Строка из Обмен.ТаблицаПравилВыгрузки.Строки Цикл
			Строка.Включить = 0;
			Обмен.УстановитьПометкиПодчиненных(Строка, "Включить");
		КонецЦикла;
		
		// Теперь устанавливаем по переданным ПВД
		Для каждого ИмяПравилаВыгрузки Из ПравилаВыгрузки Цикл
			СтрДерева = Обмен.ТаблицаПравилВыгрузки.Строки.Найти(ИмяПравилаВыгрузки, "Имя", Истина);
			Если СтрДерева = Неопределено Тогда
				ВызватьИсключение "ОбменДаннымиXML.ОтдатьДанныеXML(): не удалось найти ПВД """ + ИмяПравилаВыгрузки + """!";
			Иначе
				СтрДерева.Включить = 1;
				Обмен.УстановитьПометкиРодителей(СтрДерева, "Включить");
			КонецЕсли; 
		КонецЦикла; 
		
	КонецЕсли; 
	
	// Выгрузка
	Обмен.ВыполнитьВыгрузку();	
	
	// Конец
	ЧтениеТекста = Новый ЧтениеТекста;
	ЧтениеТекста.Открыть(ИмяВремФайла, КодировкаТекста.UTF8);
	
	Результат = ЧтениеТекста.Прочитать();
	
	ЧтениеТекста.Закрыть();
	
	УдалитьФайлы(ИмяВремФайла);
	УдалитьФайлы(ИмяФайлаПравилОбмена);
	
	ХранилищеДанных = Новый ХранилищеЗначения(Результат, Новый СжатиеДанных(9));
	
	Возврат ХранилищеДанных;
	
КонецФункции 

Обработка УниверсальныйОбменДаннымиXML

Если в вашем прикладном решении такая обработка отсутствует, то её нужно добавить из комплекта поставки конфигурации «Конвертация данных» (файл V8Exchan82.epf).

 

Доступ к web-сервису. Роли и пользователи.

Для обращения к веб-сервисам необходимо подготовить роль и пользователя. Самый простой путь – это добавить отдельную роль, назовем ВебСервисы, этой роли не даем никаких прав, кроме прав на операции веб-сервиса, а сами методы выполняем в привилегированном режиме.
 

Добавляем пользователя

Назначаем ему только нашу роль ВебСервисы и больше никаких других. Этого достаточно.

На серверной стороне настройка закончена.

Клиент (обращение к web-сервису)

Тут просто приведу примеры обращения к веб-сервисам. Откуда берутся правила обмена , правила выгрузки, значения параметров и т.п. – это уже вопрос вашей прикладной задачи и её реализации.

Передача данных в базу-приемник

Пример передачи xml-данных в базу-приемник, на стороне которой работает вышеописанный web-сервис:

Функция ПередатьНаСервере(СтрокаXML)
	
	Данные = Новый ХранилищеЗначения(СтрокаXML, Новый СжатиеДанных(9));
	
	// Подкдючение
	Определения = Новый WSОпределения("http://server1c8/db_buh/ws/xml-exchange.1cws?wsdl", "WebServices", "12345");
	Прокси = Новый WSПрокси(Определения, "http://your-domain.ru/", "ОбменДаннымиXML", "ОбменДаннымиXMLSoap");
	Прокси.Пользователь = "WebServices";
	Прокси.Пароль = "12345";
	
	// Передача
	ТекстОшибки = "";
	ЗагруженоОбъектов = Прокси.ПринятьДанные(Данные, ТекстОшибки);
	
	Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
		Сообщить(ТекстОшибки);
	КонецЕсли; 
	
	Возврат ЗагруженоОбъектов;
	
КонецФункции // ПередатьНСервере()

Данные перед этим получены из этой базы-источника функцией:

Функция ВыгрузитьКонтрагента(Организация, Контрагент)
	
	ПравилаОбмена = ПолучитьПравилаОбмена();
	
	// Инициализация
	Обмен = Обработки.УниверсальныйОбменДаннымиXML.Создать();
	Обмен.РежимОбмена = "Выгрузка";
	ИмяФайлаДанных = ПолучитьИмяВременногоФайла("xml");
	Обмен.ИмяФайлаОбмена = ИмяФайлаДанных;
	
	// Загрузка правил
	ИмяФайлаПравилОбмена = ПолучитьИмяВременногоФайла("xml");
	ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаПравилОбмена);
	ЗаписьТекста.Записать(ПравилаОбмена);
	ЗаписьТекста.Закрыть();
	Обмен.ИмяФайлаПравилОбмена = ИмяФайлаПравилОбмена;
	Обмен.ЗагрузитьПравилаОбмена();
	
	// Параметры
	Обмен.УстановитьЗначениеПараметраВТаблице("Организация", Организация);
	
	// Правила выгрузки данных
	
	// Сначала все отключаем
	Для Каждого Строка из Обмен.ТаблицаПравилВыгрузки.Строки Цикл
		Строка.Включить = 0;
		Обмен.УстановитьПометкиПодчиненных(Строка, "Включить");
	КонецЦикла;
	// Включаем нужное правило
	СтрПравил = Обмен.ТаблицаПравилВыгрузки.Строки.Найти("Контрагенты", "Имя", Истина);
	Если СтрПравил = Неопределено Тогда
		ВызватьИсключение "ПередатьНСервере(): не удалось найти правило выгрузки ""Контрагенты"" в правилах обмена.";
	КонецЕсли; 
	СтрПравил.Включить = 1;
	Обмен.УстановитьПометкиРодителей(СтрПравил, "Включить");
	
	// Отбор
	Постр = Новый ПостроительОтчета("ВЫБРАТЬ ПЕРВЫЕ 1 _.* ИЗ Справочник.Контрагенты КАК _
 |{ГДЕ _.Ссылка.* КАК Справочник_Контрагенты}");
	Постр.Отбор.Добавить("Справочник_Контрагенты").Установить(Контрагент);
	СтрПравил.ИспользоватьОтбор = Истина;
	СтрПравил.НастройкиПостроителя = Постр.ПолучитьНастройки();
	
	// Выгрузка
	Обмен.ВыполнитьВыгрузку();	
	ЧтениеТекста = Новый ЧтениеТекста;
	ЧтениеТекста.Открыть(ИмяФайлаДанных, КодировкаТекста.UTF8);
	СтрокаXML = ЧтениеТекста.Прочитать();
	ЧтениеТекста.Закрыть();
	УдалитьФайлы(ИмяФайлаДанных);
	УдалитьФайлы(ИмяФайлаПравилОбмена);
	
	Возврат СтрокаXML;
	
КонецФункции // ВыгрузитьКонтрагента()

Получение данных от web-сервиса

Пример получения данных от web-сервиса:

Функция ПолучитьДанныеОтВебСервиса(ПравилаСтрокой)
	
	// Подкдючение
	Определения = Новый WSОпределения("http://server1c8/db_buh/ws/xml-exchange.1cws?wsdl", "WebServices", "12345");
	Прокси = Новый WSПрокси(Определения, "http://your-domain.ru/", "ОбменДаннымиXML", "ОбменДаннымиXMLSoap");
	Прокси.Пользователь = "WebServices";
	Прокси.Пароль = "12345";
	
	// Параметры
	ПравилаВыгрузки = Новый Массив;
	ПравилаВыгрузки.Добавить("ИерархияКонтрагентов");
	ПравилаВыгрузкиXDTO = СериализаторXDTO.ЗаписатьXDTO(ПравилаВыгрузки);
	
	ЗначенияПараметров = Новый Структура("КодБазыИсточника", "00001");
	ЗначенияПараметровXDTO = СериализаторXDTO.ЗаписатьXDTO(ЗначенияПараметров);
	
	// Получение данных
	Правила = Новый ХранилищеЗначения(ПравилаСтрокой, Новый СжатиеДанных(9));
	Данные = Прокси.ОтдатьДанные(Правила, ПравилаВыгрузкиXDTO, ЗначенияПараметровXDTO);
	
	// Возвращаем строку XML
	Возврат Данные.Получить();
	
КонецФункции // ПолучитьДанныеОтВебСервиса()
 

Конец

Спасибо за внимание

web-сервисы Универсальный обмен данными в формате XML Конвертация данных

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    160254    368    268    

349

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135523    730    291    

391

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20593    137    38    

93

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68811    179    139    

111

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46742    199    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231862    124    327    

296

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67738    41    123    

46

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34402    81    58    

78
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. GoodZone 12 09.10.13 06:35 Сейчас в теме
тестовую бы конфу, чтоб не с нуля пробовать.
+
2. т1951 09.10.13 09:22 Сейчас в теме
очень интересно. Спасибо
+
3. KliMich 09.10.13 09:26 Сейчас в теме
Идея довольно интересная. Спавибо!
Буду пробовать
+
4. Tedman 09.10.13 10:04 Сейчас в теме
Mleg, ну что тут скажешь?!
Красавец! Сам частенько занимаюсь процессом обмена данными, и думал разобраться с тем, можно ли его проводить через web-сервисы, а тут статья такая отличная.
Во всём этом есть только один (как мне кажется) очень неприятный момент. Если (теоретически) некий злоумышленник перехватит пакет (если используется незащищенное http-соединение), то с помощью обработки обмена с привилегированным режимом сделать он сможешь что угодно. Вероятность, конечно, не велика, но, тем не менее, сделать это не сложно.
+
5. stanru1 91 09.10.13 10:46 Сейчас в теме
элегантно! ценю такой подход, когда по максимуму используется типовой функционал. автор молодец!
+
6. Yashazz 4722 09.10.13 10:56 Сейчас в теме
Достаточно подробно, грамотно расписано. Наконец кто-то озаботился, спасибо.
Жаль, самые скользкие и интересные грабли (как публикация веб-сервисов) оставлены за кадром. Ибо, на самом деле, документации на эту тему крайне мало, а труднообъяснимых граблей и багов платформы там много.

И да, веб-сервисы 1С это страшенная дыра в безопасности, конечно. Поэтому, увы, в серьёзных проектах либо не используются, либо требуют дополнительных мер защиты сторонними средствами.
+
18. bonv 1517 10.10.13 13:37 Сейчас в теме
(6)Yashazz,
А можно примеры
страшенная дыра в безопасности
?
+
7. ZLENKO 398 09.10.13 11:38 Сейчас в теме
Интересно. Спасибо.
+
8. peterxx 22 09.10.13 12:24 Сейчас в теме
Прекрасно, интересная, добротная, актуальная статья. Думаю будет очень полезно.
+
9. Yashazz 4722 09.10.13 12:33 Сейчас в теме
Такие статьи, конечно, были и раньше, например, http://infostart.ru/public/159824/
Но здесь достаточно толково расписано то, что ранее было изложено более скомканно.

А вот то, что действительно сложно в веб-сервисах (публикация), здесь не освещено и считается само собой разумеющимся. Поэтому плюсить не буду.
+
10. Mleg 342 09.10.13 13:30 Сейчас в теме
(9) Да, я смотрел эту статью, перед тем как писать свою. Она немножко на другую тему, там не про передачу данных в формате Универсального обмена.
Да, публикация веб-сервисов – это не всегда просто. Я не считаю это само собой разумеющимся. Но это за рамками статьи, совсем другой вопрос, моей целью не было покрыть и эту тему. С таким же успехом можно было бы упрекнуть в том, что я не рассмотрел вопросы установки платформы.
Однако, "Пожелание зарегистрировано" ©
Atrocity; Dmitrii D; Unk92; AganinEvgeniy; w-divin; SirYozha; +6
11. Yashazz 4722 09.10.13 13:46 Сейчас в теме
(10) Не согласен. Милейшая строка "http://server1c8/db_buh/ws/xml-exchange.1cws?wsdl" вызовет вопросы у ваших читателей. Откуда она взялась? По каким принципам сформирована? Что в ней есть что?
Вы никак специально не заостряете на ней внимание, в результате произойдёт копипаст, а потом ваша процедура не заработает, и вам же предъявят, что публикуете фигню на ИС. Оно надо?
Strange Device; Redokov; +2
16. WKBAPKA 214 10.10.13 11:07 Сейчас в теме
(9) Yashazz,
в публикации веб-сервисом сложного ничего нет если веб сервис и 1С установлены на одном сервере. Если же на разных серверах, то:
1. Если сервера крутяться под виндой, установить клиента 1С на сервер с веб сервисом (это самый простой вариант), или публиковать с помощью утилиты.
2. Если сервера крутяться под другой операционкой, пробывать публиковать с помощью утилиты входящей в платформу, но прийдется повозиться.
Но всеже проще иметь отдельный тазик с виндой для оного дела, который будет светиться в интернете.
+
19. Yashazz 4722 10.10.13 14:57 Сейчас в теме
(16) Берёте 1 локальный комп (сам себе сервер), винду7 и iis7.5, простейшую файловую базу, и я посмотрю, как для вас "в публикации ничего сложного нет". При наличии всех нужных прав и прочая, разумеется.
(17) Вот так писать не надо. Первый параметр - это, цитирую, "МестоположениеWSDL" (Местоположение WSDL файла, откуда будет получено определение веб-сервисов), а отнюдь не URI. И формируется не как левая пятка хочет, а по чётким принципам, внимание на которых заостряют редко.

Идею изложил хоть и давнюю, но хорошую. Изложил чётко, внятно, доступно. НО: допустил недосмотр, который не позволяет воспользоваться статьёй без доработки кода напильником. Фактически, "скачал - не работает". Согласны?

(18) Покурите старые дискуссии насчёт веб-сервисов с участием Трактора. Я щас навскидку не найду.
+
20. WKBAPKA 214 10.10.13 16:22 Сейчас в теме
(19) Yashazz,
1. А чего пробывать? У меня дома развернутый сервер установлен под Апач, я на нем гонял свои веб сервисы. И у клиента установили без проблем. Была только проблема с настройками кодировки самого веб-сервера, а опубликовать вообще не проблема. Кстати, на эту тему, тему публикации, как раз много информации в интернете, даже есть видео на ютубе.
2. сорри, спутал с WSПрокси... но как бы там не было, можно WSПрокси использовать без создания определения. Ну уж если Вам так надо, почитайте про веб сервисы в интернете, ведь эта технология не разработка 1С. Там же найдете и правила формирования строки.
+
23. Yashazz 4722 10.10.13 16:44 Сейчас в теме
(20) Ключевое слово - "под Апач". Под IIS всё не так просто. И нигде, ни на каком ютюбе, нет подробностей и тонкостей авторизации, к примеру.
(20)(21) Мне - в общем, ничего не надо, кроме предупреждения автора крупными буквами, что без доработки это вообще ни у кого не взлетит. Или правки строки, о которой я говорю, в сторону шаблонизации.
Я-то и правила шаблона знаю, и другие моменты (которые, к слову, и на http://its.1c.ru есть), но автор об этом ни слова.

Повторяю, напильником придётся поработать не "возможно", а наверняка. Или я чего-то упустил, и "httр://server1c8/db_buh/ws/xml-exchange.1cws?wsdl" это уже стандартизованный дефолтный путь подключения?

(22) Ага, а полные права отдельным товарищам/группам на bin и папку базы, если она файловая? )) Золотую середину, при которой и веб-сервисы работают, и по доступу не "проходной двор", найти бывает трудно.
+
24. WKBAPKA 214 10.10.13 17:10 Сейчас в теме
(23) Yashazz,
я такие варианты про файловые базы даже не рассматриваю... зачем кому то что то публиковать, если база файловая??? Если у людей нет денег на приобретения сервера 1С, то значит у них нет денег и на организацию безопасности...

ПЫ СЫ: название данной публикации "Организация онлайн-обмена данными в формате "Конвертации данных" через web-сервисы". Т.е. предполагается что читатель знаком с понятием веб-сервис и умеет с ним работать. Вы еще предъявите претензии автору, почему он не расшифровал, что такое конвертация и не привел примеры и описания, как работать с этой конфигурацией.

AganinEvgeniy; l_men; +2
26. Yashazz 4722 10.10.13 17:31 Сейчас в теме
(24) Оффтопить не буду, но, по-твоему, пользователи файловых БД почти как "недочеловеки", с чем не согласен.

Если б автор предполагал, что читатель знаком с веб-сервисами, достаточно было бы 1 предложения: "Выгрузку и загрузку делаем как вызов обработки обмена из методов веб-сервиса", и код этих методов.

Ну и странновато для знакомых с веб-сервисами выглядят фразы вроде "Расширение «1cws» тоже лучше не менять (не пробовал, если честно)." - RTFM руководство админа, господа; расширение это идёт в алиасе, а дёргать можно как по name (имени, как в конфе), так и по alias (предложенному имени файла).
В общем, нелогично - что-то разжёвано, что-то упущено.
Ладно, видимо, это я один такой не такой )))
awk; vano-ekt; holostyak; +3
22. WKBAPKA 214 10.10.13 16:30 Сейчас в теме
(19) Yashazz,
Что касается дыр в безопасности, я читал статью на которую вы ссылаетесь... Но! в ней речь шла о публикации базы и опасность заключалась в том, что можно получить данные о пользователях и их паролях, что равносильно получить доступ к самой базе. Веб сервисы же напротив, предоставляют ограниченную информацию. При всех тех же параметрах, злоумышленник не получит больше, чем ему может дать сервис + можно еще организовать дополнительную аутентификацию, на уровне базы на случай, если кто то перехватит логин и пароль для авторизации!
+
12. Yashazz 4722 09.10.13 14:15 Сейчас в теме
Я уж не говорю про управление доступом. Вот возьмёт прокси и не создатся, ваши дальнейшие действия? Отсылать к "Руководству администратора"? А там это изложено, во-первых, для "одминов", а во-вторых, очень скудно и неполно. У 1С есть несколько багов, выдаваемых за фичи, в вопросе авторизации (что динамического подключения, что статического).

Без описания этого ценность вашей публикации снижается.
mr.Samuelson; +1
13. Yashazz 4722 09.10.13 18:57 Сейчас в теме
Ну так что, автор, я минусую, т.к. нифига не работает?
14. Yashazz 4722 10.10.13 10:35 Сейчас в теме
Понятно. У всех, вишь ты, всё работает, и лишь у одного меня хардкодинг типа
Определения = Новый WSОпределения("http://server1c8/db_buh/ws/xml-exchange.1cws?wsdl", "WebServices", "12345");
вызывает дурацкие вопросы.
alexeyplotnikov; kirinalex; +2 1
17. WKBAPKA 214 10.10.13 11:12 Сейчас в теме
(14) Yashazz,
вот так писать не надо. Первый параметр, это пространство имен. Должен быть уникальным и может быть представлен любым уникальным адресом. Формируется произвольно, как вашей душе угодно.
Мне кажется, зря Вы на автора наезжаете. Он изложил хорошую идею для обмена данными между веб сервисами!
VVi3ard; +1
15. WKBAPKA 214 10.10.13 11:02 Сейчас в теме
бегло пробежался... статья хорошо написана... вот бы она была написана когда я искал пути передачи данных через WEB...
единственное, что хотелось бы посоветовать - методы веб-сервиса определять на английском языке, что бы при настройке веб-сервера не было проблем с кодировками. По крайней мере, я с этим столкнулся и потратил время на то, что бы разобраться в причине ошибки "Ошибка разбора SOAP сообщения: неверная версия сообщения" веб-сервиса.
+
21. WKBAPKA 214 10.10.13 16:26 Сейчас в теме
Автор предложил очень хорошую идею до которой еще нужно додуматься... а это уже дорогого стоит. Плюс, автор еще и реализацию описал. А то что напильником немного возможно прийдется поработать, так уж увольте. Отправте автору пару сот вечно зеленых президентов и он лично для вас напишет статью со всеми подробностями.
VVi3ard; vkm1980; pm74; troubleshooter; Redokov; +5
33. zarucheisky 30.10.13 15:49 Сейчас в теме
(21) Не, не совсем так, самой идее ровно столько лет, сколько платформе 8.1...
Все, кто сталкивался, знали, он, молодец, озвучил :)
+
25. WKBAPKA 214 10.10.13 17:11 Сейчас в теме
что касается IIS, документаций на эту тему полно... лично я рекомендую апач, т.к. проще...
+
27. awk 741 15.10.13 14:33 Сейчас в теме
(0) Круто. Вот только забыли недостатки SOAP:

1. Передача больших объемов двоичных данных требует наличия большого объема оперативной памяти. Получение ошибок: Out of memory.
2. Медленный ответ от 1С приведет к зависанию сессии веб сервера, что может отрицательно сказаться на его работе и работе ОС в целом.
3. На промежуточных узлах могут быть ограничения на размер POST запроса, что приведет к неожиданным вылетам обмена, и долгом курении травы поиске в интернете и документации.
4. Для отладки(при возникновении проблем) на клиент-серверных базах придется ставить отладку сервера, что не способствует производительности.
user1109162; life-wayfarer; mr.Samuelson; ZLENKO; CeHbKA; Totoro; kostas; +7
28. kostas 10 28.10.13 18:17 Сейчас в теме
(27) awk,
За п.3 плюсанул Вам! Важная информация.

+
35. Трактор 1247 30.10.13 20:40 Сейчас в теме
(27) awk,
1. Передача больших объемов двоичных данных требует наличия большого объема оперативной памяти. Получение ошибок: Out of memory.

Я как-то гигабайтный файл передавал через веб сервис. Долго, но передался. Если обмен делать небольшими порциями и клиентов не очень много, то может прокатить.
+
38. awk 741 31.10.13 01:22 Сейчас в теме
(35) Трактор, Да. Может прокатить, а может и не прокатить. Если на промежуточных узлах нет ограничений - прокатит. А если есть ограничения, то порежут сообщение и кирдык.
+
39. awk 741 31.10.13 01:25 Сейчас в теме
(35) Трактор, Ночь. Читаю плохо. И не на то отвечаю.
По объему оперативки:

Один гиг - не показатель. Редко встретишь сейчас объем ОЗУ меньше гига. Плюс свап. Прокатит. Но не быстро. Проще кинутся ссылкой на ресурс.
+
29. psamt1k 28.10.13 21:55 Сейчас в теме
эх! Где же ты был полгода-год назад!!! Я себе весь мозг вскрыл, пока разобрался как тут все работает и смог добавить свои плюшки.
Но тем не менее плюсую!
+
30. Kamikadze 46 29.10.13 20:03 Сейчас в теме
У себя сделал немного проще - только выгрузку из системы НСИ. Идея хороша.
+
31. Kamikadze 46 29.10.13 20:07 Сейчас в теме
У меня, для примера, обмены через СОМ работали с каждой базой по 2 минуты, сильно нагружая сервер. Теперь - 20 сек. За 3 месяца потерь данных не было. так что идея перевода обменов на веб - сервисы очень даже актуальная. По - моему в последней СБП есть такие механизмы.
+
32. zarucheisky 30.10.13 15:15 Сейчас в теме
(31) обмены через СОМ работали с каждой базой по 2 минуты, сильно нагружая сервер. Теперь - 20 сек.
Скорее всего львиная доля времени уходила на инициализацию COM-объекта+авторизацию.
Грубо говоря, при одном и том же объеме передаваемых данных вызов тех же методов через COM/ws будет одинаков по быстродействию.
+
44. ZLENKO 398 11.07.14 12:22 Сейчас в теме
(32) zarucheisky, "обмены через СОМ работали с каждой базой по 2 минуты"

COM соединение можно сохранять между сеансами обмена и не инициализировать каждый раз заново.
+
48. ZLENKO 398 01.09.16 15:31 Сейчас в теме
(44) ZLENKO.PRO, "COM соединение можно сохранять между сеансами обмена и не инициализировать каждый раз заново."

Кстати в 8.3.8 уже нельзя :-)
+
34. kostik_love 309 30.10.13 18:31 Сейчас в теме
Ребята, может вопрос не в тему- но как выполнять отладку web-сервисов?
может автор напишет такую же полезную и подробную статью)))
+
36. Трактор 1247 30.10.13 20:42 Сейчас в теме
(34) kostik_love,
как выполнять отладку web-сервисов?

Как обычно. Включаешь отладку на сервере, в отладчике, там где предметы отладки, ставишь галку "отладка веб сервисов" и отлаживаешь. Отлаживать возможно только если ты сам делаешь запросы. Рабочую базу не отладишь - слишком много запросов.
+
37. Трактор 1247 31.10.13 00:48 Сейчас в теме
36+
(34) kostik_love, запросы к 1С можно посылать специализированной приблудой soapui http://sourceforge.net/projects/soapui/files/soapui/3.6.1/
life-wayfarer; +1
40. kostik_love 309 31.10.13 10:01 Сейчас в теме
(37) Трактор, Спасибо за ответ- буду пробовать- очень своевременно
+
41. sarun 33 06.05.14 08:50 Сейчас в теме
Спасибо за хорошую обзорную статью. Только начинаю изучение вэбсервисов,поэтому статья очень помогла.
Вот только непонятным остался вопрос как передавать правила обмена в вэб сервисы, автор это намеренно опустил:

"Клиент (обращение к web-сервису)

Тут просто приведу примеры обращения к веб-сервисам. Откуда берутся правила обмена , правила выгрузки, значения параметров и т.п. – это уже вопрос вашей прикладной задачи и её реализации"

Подскажите, пожалуйста, кто сталкивался.
+
42. inesik 10.07.14 10:09 Сейчас в теме
(41) sarun, я тоже думала, куда их добавить, решила добавить в реквизит узла обмена, как хранилище значения.
+
43. Kamikadze 46 10.07.14 11:14 Сейчас в теме
так в БСП это уже работает
+
45. sarun 33 25.08.14 13:34 Сейчас в теме
42 Я добавил в макет
+
46. БизнесРешение 23.09.14 09:57 Сейчас в теме
Отличная идея и описание процесса её реализации - доступно и всерьёз! :))
+
47. user_2010 894 11.11.14 15:10 Сейчас в теме
Есть такой вопрос: сделала веб-сервис в 1С, опубликовала, он работает в SoapUI, еще проверяли из других программ - работает... Но нужно его использовать в программе, которая работает на платформе SharePoint. Так вот у них мой веб-сервис не работает. Как они объясняют: не тот синтаксис веб-сервиса.

Вот такой синтаксис делает 1С:
xs:schema targetNamespace=
xs:element name=

А вот так надо SharePoint:
s:schema elementFormDefault=
s:element name=

Почему 1С делает "xs", а не "s"?

Т.е. вместо "<xs:..." должно быть "<s:...".

Как это сделать в 1С? Как изменить синтаксис опубликованного веб-сервиса?
+
51. user_2010 894 18.02.19 17:33 Сейчас в теме
(47) напишу, хоть и времени с тех пор прошло много. Проблема была не в 1С, 1С все правильно делала!
+
49. strafer 28.07.17 10:15 Сейчас в теме
Попробовал сделать описанное выше, но получил ошибку
Процедура или функция с указанным именем не определена (ПолучитьПравилаОбмена)
	ПравилаОбмена = <<?>>ПолучитьПравилаОбмена(); (Проверка: Сервер)

Конфигурация УТП.
+
53. maksa2005 533 25.07.19 14:07 Сейчас в теме
(49)Это говорит о том, что откуда брать обмен. Создайте макет и добавить туда правила и все)
(50)это опечатка автора. у меня все получилось
+
50. Smal 18.02.19 16:43 Сейчас в теме
Возникла задача скрестить ужа с ежом через вэб обмен по правилам обмена из конвертации. Прочитал статью ..
сделал у себя на тестовой вэбсервис. при проверке начала выдавать ошибку (... переменная не найдена). увидел что автор в статье (на скрин)
в вэбсервисе переменная называется по одному(ПравилаОбмена, ПравилаВыгрузки, ЗначенияПараметров) , а в коде по другому (ПравилаОбмена, ПравилаВыгрузкиXDTO, ЗначенияПараметровXDTO) - я так понимаю, что это просто опечатка автора ? Если не так поправьте плиз.
+
52. maksa2005 533 25.07.19 14:06 Сейчас в теме
Спасибо за статью
+
54. alexeypenzin 2 09.10.19 10:05 Сейчас в теме
Статья отличная, но хочется продолжения.
На практике, в основном, нужно выгружать в базу приемник только измененные объекты. Не совсем понятно как это реализовать с помощью веб-сервисов. Как в данном обмене применить планы обмена? Когда и где очищать таблицу измененных объектов?

Коротко вопрос: На клиенте получили данные, как на сервере узнать что клиент принял данные и на сервере удалить данный объект из таблицы измененных объектов?
xavi; Krotov_Valery; acanta; +3
55. GERDUSKA 14.02.20 15:12 Сейчас в теме
Спасибо! Очень пригодилось!
+
56. igor-pn 72 21.02.22 02:26 Сейчас в теме
Спасибо!!! Очень помогло, то что нужно!!!
+
57. ER34 27 30.10.23 01:55 Сейчас в теме
Module initialization error: Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта
reason:
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(14283)}: Error calling context method (УдалитьФайлы)
reason:
The operation is not allowed because the application is running in safe mode.
Код ошибки: Client
Техническая информация:
<detail xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">

Вот этим достаёт. Как запустить обработку через веб сервис в небезопасном режиме?


Не понял как удалить сообщение - можно только изменить. Разобрался - дело было в расширении и похоже это не личится. Переместил сервис из расширения в основную конфу и отлегло
+
Оставьте свое сообщение