Организация обмена данными между двумя информационными базами 1С — задача, с которой рано или поздно сталкивается каждый разработчик. Сегодня мы разберем, как правильно организовать передачу номенклатуры, используя веб-сервисы и другие интеграционные механизмы платформы.
Традиционным способом взаимодействия является использование WS-сервисов. Этот метод основан на протоколе SOAP и требует предварительного описания структуры данных через WSDL-файл. Рассмотрим, как программно подключиться к сервису и выполнить запрос данных.
Для начала создадим функцию подключения, которая инициализирует WSПрокси. Обратите внимание, что мы используем WSОпределения для инициализации соединения с удаленным сервисом.
Функция ПодключитьсяКСервисуФормированияПродаж() Экспорт
СтруктураСервиса = Новый Структура(\"ОК, Ошибки\", истина, ложь);
// Получаем параметры из констант
Логин = Константы._СервисФормированияПродаж_Логин.Получить();
Пароль = Константы._СервисФормированияПродаж_Пароль.Получить();
Адрес = Константы._СервисФормированияПродаж_Адрес.Получить();
Попытка
Определение = Новый WSОпределения(Адрес, Логин, Пароль);
ПространствоИмен = \"http://www.geniy1s.ru/CliEx\";
Сервис = Новый WSПрокси(Определение, ПространствоИмен, \"_ФормированиеПродаж\", \"_ФормированиеПродажSoap\");
Сервис.Пользователь = Логин;
Сервис.Пароль = Пароль;
СтруктураСервиса.Вставить(\"Сервис\", Сервис);
Исключение
СтруктураСервиса.ОК = ложь;
СтруктураСервиса.Ошибки = ОписаниеОшибки();
КонецПопытки;
Возврат СтруктураСервиса;
КонецФункции
После успешного подключения мы можем вызвать метод сервиса для получения номенклатуры. В приведенном ниже примере используется сериализация структуры для передачи параметров поиска.
Функция ПолучитьТовар(СтруктураПоиска) Экспорт
УстановитьПривилегированныйРежим(Истина);
Результат = Новый Структура();
СтруктураСервиса = ПодключитьсяКСервисуФормированияПродаж();
Если СтруктураСервиса.ОК = ложь Тогда
// Обработка ошибки подключения
Возврат Результат;
КонецЕсли;
// Вызов метода веб-сервиса
РезультатВнутр = СтруктураСервиса.Сервис.GetGoods(ЗначениеВСтрокуВнутр(СтруктураПоиска));
Результат = ЗначениеИзСтрокиВнутр(РезультатВнутр);
Возврат Результат;
КонецФункции
Хотя WS-сервисы работают стабильно, в современной разработке на 1С всё чаще используются более легкие и гибкие инструменты.
OData в настройках. После этого внешняя база получает доступ к объектам (справочникам, документам) через стандартные URL.При организации обмена данными следует придерживаться нескольких правил, чтобы избежать «глюков» и проблем с безопасностью:
ЗначениеВСтрокуВнутр: В приведенном выше примере этот метод использован для простоты, однако для обмена данными между базами всегда используйте JSON или XML. Эти форматы являются стандартом, они независимы от версии платформы 1С и позволяют легко диагностировать ошибки обмена.План обмена автоматически регистрирует изменения объектов, что позволяет передавать только то, что действительно изменилось с момента последней синхронизации.WS-сервисы. Если нужно связать свои базы 1С быстро — выбирайте OData. Для интеграции с веб-сайтами или мобильными приложениями идеально подходят HTTP-сервисы.Надеемся, этот разбор поможет вам выбрать оптимальный архитектурный путь для решения вашей задачи по обмену номенклатурой. Удачи в разработке!