В компаниях, которые разворачивают у себя системный комплекс 1С: Предприятие, используя платформу ОС Windows, для веб-публикации информационных баз пользуются WS (Web-Servis). Решение оправдано тем, что оно позволяет обходиться только штатными средствами платформы Windows, не «заморачиваясь» на приобретение дополнительного софта.
В нашей статье найдутся ответы на вопросы, как загружать\выгружать данные из одной базы в другую с помощью такого полезного инструмента, как Web Сервис. Разберем прикладные задачи на примере выгрузки таблицы остатков.
Сразу предупредим, что обмен через веб-сервисы осуществляется только в том случае, если опубликован веб-сервис (Apache либо IIS) на компьютере.
Обмен через веб-сервисы с помощью МС: Автообмен без программирования
В работе любого предприятия, использующего механизмы обмена данными, может возникнуть потребность автоматического режима обмена в определенные часы, дни.
Существует готовая программа МС: Автообмен. С ее помощью обмен между двумя базами 1С настраивается в удобном для пользователя пошаговом мастере. Для автоматического запуска автообмена выбирается расписание. Например: Выполнять: каждый день; с 8:00 один раз в день.
Благодаря программе обмены ускоряются через веб-сервисы. Вместе со скоростью приходит стабильность, независимость от релиза платформы 1С: Предприятие.
На странице программы МС: Автообмен посмотрите видео демонстрации с подробным описанием возможностей программы.
Начальные шаги на пути обмена данными через Web Сервисы
Как уже было сказано вначале, процедуру обмена рассмотрим на примере выгрузки таблицы остатков.
Первый шаг — создание Web-Service в удаленной базе. На картинке 1 показано открытое окно Конфигурация. В разделе Web-сервисы создан веб-сервис под названием 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. Как уже говорилось выше, это встроенный готовый пакет.

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

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

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

Листинг. Функция ОстаткиТоваровНаСкладах (НачалоПериода, КонецПериода, Склад) выглядит следующим образом:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование КАК НоменклатураНаименование,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Запись, , Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты";
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоНаименованию(Склад,истина));
ТаблицаРезультата = Запрос.Выполнить().Выгрузить();
Хранилище = новый ХранилищеЗначения(ТаблицаРезультата);
Возврат Хранилище;
Теперь осталось только опубликовать созданный Web-сервис на веб-сервере — например, в каталоге C:\ inetpub\wwwroot\ObmenCU. Расставляем галочки для всех необходимых задач:
- Публиковать тонкий клиент и веб-клиент.
- Публиковать стандартный интерфейс OData.
В подразделе Web-сервисы отмечаем галочками задачи:
- Публиковать Web-сервисы по умолчанию.
- Имя и адрес публикуемого сервиса (ObmenCU.1cws).
Весь процесс показан на картинке 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) — будущее. Хотя в данной технологии, как и везде, есть свои плюсы и минусы.