Top.Mail.Ru
Меню
Каталог Программы 1С Опыт и отзывы Услуги Компания Статьи Контакты

Обмен между 1С через веб-сервисы

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft  19.08.2025 Актуальность проверена: 19.08.2025   5 мин.
Подобрать перенос данных 1С

Специализируемся на переносах данных 1С с 2015г.

Подобрать перенос данных 1С >>

Интеграция 1С с маркетплейсами

Специализируемся на интеграциях 1С с маркетплейсами с 2021г.

Изучить продукты >>

Содержание

В компаниях, которые разворачивают у себя системный комплекс 1С: Предприятие, используя платформу ОС Windows, для веб-публикации информационных баз пользуются WS (Web-Servis). Решение оправдано тем, что оно позволяет обходиться только штатными средствами платформы Windows, не «заморачиваясь» на приобретение дополнительного софта.

В нашей статье найдутся ответы на вопросы, как загружать\выгружать данные из одной базы в другую с помощью такого полезного инструмента, как Web Сервис. Разберем прикладные задачи на примере выгрузки таблицы остатков.

Сразу предупредим, что обмен через веб-сервисы осуществляется только в том случае, если опубликован веб-сервис (Apache либо IIS) на компьютере.

Обмен через веб-сервисы с помощью МС: Автообмен без программирования

В работе любого предприятия, использующего механизмы обмена данными, может возникнуть потребность автоматического режима обмена в определенные часы, дни.

Существует готовая программа МС: Автообмен. С ее помощью обмен между двумя базами 1С настраивается в удобном для пользователя пошаговом мастере. Для автоматического запуска автообмена выбирается расписание. Например: Выполнять: каждый день; с 8:00 один раз в день.

Благодаря программе обмены ускоряются через веб-сервисы. Вместе со скоростью приходит стабильность, независимость от релиза платформы 1С: Предприятие.

На странице программы МС: Автообмен посмотрите видео демонстрации с подробным описанием возможностей программы.

Начальные шаги на пути обмена данными через Web Сервисы

Как уже было сказано вначале, процедуру обмена рассмотрим на примере выгрузки таблицы остатков.

Первый шаг — создание Web-Service в удаленной базе. На картинке 1 показано открытое окно Конфигурация. В разделе Web-сервисы создан веб-сервис под названием ObmenWS.

Картинка 1. Создание Web -Service в удаленной базе под названием ObmenWS.

Заполнение свойств Web -Сервиса

После создания Web-Service в удаленной базе под названием ObmenWS понадобится заполнить его свойства. Для этого надо открыть вкладку «Прочее», как на картинке 2. Здесь последовательно заполним свойства.

В первой строке «URL Пространства имен» укажем, к примеру, «1.1.1.1» . Это необходимо, чтобы можно было идентифицировать Web-Service по сочетанию его имени и пространству имен.

Вторая строка «Пакеты XDTO» требует некоторых пояснений. Фирма 1С создала универсальный способ представления данных для интеграции с другими системами. А также обмена данными между конфигурациями «1С: Предприятие» с разными структурами данных. В данном случае речь идет о пакетах XDTO. Аббревиатура расшифровывается как XML Data Transfer Objects. То есть, как видно из названия, с помощью механизма XDTO объектное моделирование данных описывается с использованием схемы XML. Благодаря такому решению стало возможным оперирование не узлами XML, а использование в рамках языка 1С прикладных понятий:

  • Сотрудник;
  • Счет;
  • встроенные типы «ТаблицаЗначений», «СправочникСсылка» и прочие.

Для нашего примера не понадобится создание собственных пакетов XDTO. Достаточно воспользоваться встроенными пакетами 1С. В системе «1С: Предприятие» реализована сериализация данных на основе механизма XDTO, которая позволяет сериализовать в/из XML все типы данных, хранящиеся в базе данных. Для нашего примера возьмем пакет «http://v8.1c.ru/8.1/data/core». В нем содержится формат «Двоичные данные». Он помогает передаче любых типов через хранилище данных.
В третьей строке «Имя файла публикации» прописываем название «ObmenWS1.1cws». На самом деле, сюда вписывается любое название файла, которое пользователь придумал самостоятельно. Требования обычные:

  • латинский шрифт (желателен);
  • расширение 1cws (обязательно);
  • совпадение с данным вами именем каталога на web-сервере (желательно).

Опираясь на этих «трех слонов», дадим наше название «ObmenWS1».

С правой стороны открыта вкладка «Выбор пакетов XDTO». Не оставляем ее без внимания и проставляем галочку возле строки http://v8.1c.ru/8.1/data/core. Как уже говорилось выше, это встроенный готовый пакет.

Картинка 2. Заполнение свойств созданного Web - Сервиса под названием ObmenWS на вкладке Прочее

Добавление операций в WS для загрузки и выгрузки данных

Теперь мы имеем рабочий Web Сервис. В него необходимо внести операции для загрузки и выгрузки данных.

Процесс создания операции

Мы хотим создать операцию. Весь процесс создания показан на картинке 3.

Для этого в списке поля «Конфигурация» опускаемся в раздел ObmenWS. В нем выбираем операцию с названием «ОстаткиТоваровНаСкладах». Справа в окне «Свойства: «ОстаткиТоваровНаСкладах» отмечаем «Имя: ОстаткиТоваровНаСкладах» и «Синоним: Остатки товаров на складах». Указываем Тип возвращаемого значения: ValueStorage (Хранилище данных) и http://v8.1c.ru/8.1/data/core.

Картинка 3. Создание операции. Название: ОстаткиТоваровНаСкладах. Тип возвращаемого значения: ValueStorage (Хранилище данных).

Создание параметров для операции

На картинке 4 отражена последовательность создания параметров для проведения операции. В окне Конфигурация в разделе Действия находим подраздел Web – сервисы. Под ним открываем созданный нами ObmenWS. Дальше ОстаткиТоваровНаСкладах. Под этой операцией формируем перечень с произвольным количеством параметров:

  • НачалоПериода;
  • Организации;
  • Контрагенты;
  • КонецПериода;
  • Склад и т. д.

В нашем учебном примере разбираемся с тремя параметрами. Для каждого из них задаем Свойства. Они прописаны с правой стороны напротив каждого параметра, открытого в окне Конфигурация.

У параметра НачалоПериода задаем Свойства: НачалоПериода. Основные — это Имя и Синоним. А также, Тип значения: date (http://www.w3.org/2001/XMLSchema). Определим направление передачи данных с помощью параметра: входной параметр используется для передачи данных Web-сервису. Строка Возможно пустое значение показывает, может ли параметр операции принимать неопределенное значение. Не ставим здесь флажок.

Аналогично заполняем Свойства для параметра КонецПериода и Склад. Для параметра Склад вместо типа значения Дата ставим String (Строка). А именно, это выглядит так: string(http://www.w3.org/2001/XMLSchema).

Картинка 4. Добавление параметров.

Остается добавить программный код к операции «ОстаткиТоваровНаСкладах». В верхней панели задач окна Конфигурация кликаем на кнопку открытия со значком лупы у свойства «ИмяПроцедуры». В результате в модуле Web-сервиса будет создан шаблон функции-обработчика. Этот этап отражен на картинке 5. Мы должны вставить содержимое обработчика. Создать код функции ОстаткиТоваровНаСкладах (НачалоПериода, КонецПериода, Склад).

Картинка 5. Добавление программного кода к операции.

Листинг. Функция ОстаткиТоваровНаСкладах (НачалоПериода, КонецПериода, Склад) выглядит следующим образом:

Запрос = Новый Запрос;
Запрос.Текст =
  "ВЫБРАТЬ
  | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование КАК НоменклатураНаименование,
  | ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
  | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
  | ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
  | ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход
  |ИЗ
  | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Запись, , Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты";
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоНаименованию(Склад,истина));
ТаблицаРезультата = Запрос.Выполнить().Выгрузить();
Хранилище = новый ХранилищеЗначения(ТаблицаРезультата);
Возврат Хранилище;

Теперь осталось только опубликовать созданный Web-сервис на веб-сервере — например, в каталоге C:\ inetpub\wwwroot\ObmenCU. Расставляем галочки для всех необходимых задач:

  • Публиковать тонкий клиент и веб-клиент.
  • Публиковать стандартный интерфейс OData.

В подразделе Web-сервисы отмечаем галочками задачи:

  • Публиковать Web-сервисы по умолчанию.
  • Имя и адрес публикуемого сервиса (ObmenCU.1cws).

Весь процесс показан на картинке 6. Здесь же мы видим предупреждение, что каталог базы должен иметь полные права.

Картинка 6. Публикация на веб-сервере.

Публикация веб-сервера IIS для 1С

После того, как мы создали веб-сервис, нам предстоит его опубликовать, чтобы иметь возможность подключаться к нему из другой базы. Существует специальная инструкция, как правильно это сделать. Более подробно можно ознакомиться по ссылке: Публикация веб-сервера IIS для 1С. Сегодня Internet Information Services (IIS) зачастую используется на платформе Windows, чтобы публиковать информационные базы системы «1С: Предприятие». Такое решение позволяет обходиться без приобретения дополнительного софта.

Воспользоваться инструкцией по установке веб-сервера IIS могут обладатели Windows Server 2012 R2, 2016, 2019, 2022. Это необходимо, так как по умолчанию в операционной среде Windows компоненты веб-сервера не устанавливаются. А обмен через веб-сервисы работает только в том случае, когда опубликован веб-сервер на компьютере.

Рассмотрим также способ, как подключиться из другой базы, если понадобилось получить остатки за период по конкретному складу.

Создаем внешнюю обработку, в модуле обработки прописываем следующий код:

Процедура ПолучитьТаблицуСДругойБазы()
  НачалоПериода = ТекущаяДата();
  КонецПериода = ДобавитьМесяц(ТекущаяДата(),-3); //3 месяца назад
  Склад = "Основной склад";
  Таблица = ПолучениеДанных(НачПериод,КонПериод,Склад); //Первый вариант,
  //Если операций станет много, чтобы не писать для каждой операции свою функцию, можно создать одну универсальную
  Таблица = ПолучениеДанныхОптимизированно("ОстаткиТоваровНаСкладах",НачПериод,КонПериод,Склад); //Второй вариант - оптимизированно!)
КонецПроцедуры
Функция ПодключениеКWS()
  МестоположениеWSDL = "http://localhost/ObmenWS/ws/ObmenWS.1cws?wsdl" ; //localhost - указываем ваш ip-адрес, где опубликован ws
  ИмяПользователя = "Администратор";
  Пароль= "Пароль";
  URIПространстваИменСервиса = "1.1.1.1 ";
  ИмяСервиса= "ObmenWS";
  ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
  ВСОпределение = Новый WSОпределения(МестоположениеWSDL, ИмяПользователя, Пароль,,,ЗащищенноеСоединение);
  ВСПрокси = Новый WSПрокси(ВСОпределение,URIПространстваИменСервиса , ИмяСервиса,ИмяСервиса+"Soap" );
  ВСПрокси.Пользователь = ИмяПользователя;
  ВСПрокси.Пароль = Пароль;
  Возврат ВСПрокси;
КонецФункции
Функция ПолучениеДанныхОптимизированно(ИмяФункцииWS,
  П1 = Неопределено,
  П2 = Неопределено,
  П3 = Неопределено,
  П4 = Неопределено,
  П5 = Неопределено,
  П6 = Неопределено,
  П7 = Неопределено,
  П8 = Неопределено)
  Подключение = ПодключениеКWS();
  Данные = Вычислить("Подключение."+ИмяФункцииWS+"("+?(П1=Неопределено,"","П1")
  +?(П2=Неопределено,"",",П2")
  +?(П3=Неопределено,"",",П3")
  +?(П4=Неопределено,"",",П4")
  +?(П5=Неопределено,"",",П5")
  +?(П6=Неопределено,"",",П6")
  +?(П7=Неопределено,"",",П7")
  +?(П8=Неопределено,"",",П8") + ")");
  Ответ = Данные;
  Возврат Ответ;
КонецФункции
Функция ПолучениеДанных(НачПериод,КонПериод,Склад)
  Подключение = ПодключениеКWS();
  Хранилище = Подключение.ОстаткиТоваровНаСкладах(НачПериод,КонПериод,Склад);
  Таблица = Хранилище.Получить();
  Возврат Таблица;
КонецФункции

Обмен в универсальном формате EnterpriseData

Относительно новый механизм обмена данными через EnterpriseData широко используется между типовыми конфигурациями «1С: Предприятие». Весь функционал предлагается в свободном доступе в БСП (библиотека стандартных подсистем). Для пользования должна быть установлена версия не старше 2.3.1.62.

Кроме того, есть разные способы использования функционала ED. На стороне конфигурации разворачивают следующие веб-сервисы:

  • В качестве упрощенного способа импорта данных в ИБ (односторонне) из внешних приложений работает EnterpriseDataUpload.
  • За организацию двустороннего обмена между конфигурацией и сторонним приложением отвечает EnterpriseDataExchange. Чтобы обмен заработал, его надо настроить на стороне конфигурации.

Стоит отметить важную вещь: разработчики 1С считают, что именно за универсальным форматом ED (EnterpriseData) — будущее. Хотя в данной технологии, как и везде, есть свои плюсы и минусы.

MoscowSoft логотип

Нужна помощь?

Если не получается разобраться с вопросом самостоятельно, обратитесь к нам. Получите бесплатную консультацию эксперта!

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft

Возврат к списку