Дело было давно. Как-то раз бухгалтерам понадобилось переносить информацию о физических лиц из ЗУП в БП.
Попробую кратко описать как все делалось:
— На сервере 1С был поднят web-сервер (локальный) IIS.
— Была создана публикация (Администрация >> Публикация на веб-сервере), которая получила имя sotrudniki.1cws (C:Inetpubwwwrootwssotrudniki.1cws).
— Структура файла (в архиве представлены два варианта: без авторизации и с авторизацией). Не забудьте прописать Логин, Пароль, Имя базы, Имя сервера.
— Дальше немного картинок, т.к. описывать все долго, да и не каждому нужны все поля будут (рис.1-5).
— После был написан модуль web-сервиса (в справочнике ФизЛица убраны группы). Можно скачать в архиве с xdto-пакетом.
— Теперь вернусь к XDTO пакету. Попробую описать структуру полей (кому лень писать пакет, может его скачать и не забудьте подключить пакет к web-сервису):
1. Для каждого поля задаем тип (строка, число и т.д.) — например для поля Код — string (http://www.w3.org/2001/XMLSchema).
2. Заполним остальные параметры (Возможно пустое: Истина/Ложь, Фиксированное: Истина/Ложь) — например для поля Ссылка «Возможно пустое» и «Фиксированное» = Ложь.
Часть работы в ЗУП выполнена. Стоит перейти ко второй конфигурации (БП).
— В справочник «Физические лица» добавляем кнопку «Заполнить» и добавляем форму заполнения (это все можно и в обработку вынести при желании). В архиве будет представлена процедура для этой кнопки.
— Создадим новую форму «ВыборЗагрузкиЗУП» и табличную часть «ДанныеФизлиц». Поля ТЧ:
1. Наименование (строка, неограниченная длина).
2. ДатаРождения (дата).
3. АдресПредставление (строка, неограниченная длина).
— В форме «ВыборЗагрузкиЗУП» при выборе строки в ТЧ «ДанныеФизлиц», установим событие «При выборе»:
Процедура ДанныеФизлицВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
Наименование = ВыбраннаяСтрока.Наименование;
мИндекс = ВыбраннаяСтрока.НомерСтроки — 1;
ЭтаФорма.Модифицированность = Ложь;
ЭтаФорма.Закрыть();
КонецПроцедуры
— Создадим новый общий модуль (назовем его WSService) и пропишем там новую функцию:
//Функция получения данных из удаленной БД
Функция ПолучитьДанныеОтгрузкиУдаленно(Знач АдресВебСервиса, Знач Наименование) Экспорт
Определения = Новый WSОпределения(АдресВебСервиса + «?wsdl»);
Прокси = Новый WSПрокси(Определения, «http://www.sample-package.org», «Сотрудники», «СотрудникиSoap»);
Возврат Прокси.ПолучитьСписокСотрудников(Наименование);
КонецФункции
Вот вроде и все. Работы не так много и в свое время было интересно поиграться с этими вещами.
29/07/2012
Для пущей наглядности добавил мини демо-базу. Но прописать все остальное в ЗУП все же надо, как и поднять IIS (или ему подобный сервер). В базе один справочник «ФизическиеЛица», перечисление «ПолФизическихЛиц», общий модуль «WSService», пакет XDTO (упрощенный), и Web-сервис «Сотрудники» (упрощенный).
Не забудьте в процедуре «Процедура ДействияФормыЗаполнить(Кнопка)» формы «ФормаЭлемента» справочника «ФизическиеЛица» отредактировать строку, заменив <Ваш_Сервер> на требуемое значение (имя вашего сервера IIS):
ДанныеОтгрузки = ПолучитьДанныеОтгрузкиУдаленно(«http://Ваш_Сервер/ws/sotrudniki_auth.1cws«, СправочникОбъект.Наименование);
П.С.
Это первая публикация. Может корявенькая, не совсем понятная. Но идея в 2009 году была в обмене информацией ЗУП и БП средствами web-сервиса.
Навеяло воспоминания о былом: //infostart.ru/public/140728/
Опишите скорость обмена данными. Сколько времени будут ехать 1000 сотрудников?! Это я к тому чтобы сравнить с привычным com соединением.
(1) Angeros,
Там не идет пакетный обмен. Чтобы сделать пакетно, надо идти иным путем сопоставления данных. В данном случае скорость зависит от сервера. В среднем на получение данных сотрудника уходит порядка 10 секунд (это тот вариант что на картинке про Абрамова). Иногда и мгновенно проходит. В нашей базе на текущий момент 9000 записей в справочнике.