Skip to content
лого - блог 1с программиста

Блог 1С программиста

Наработки, заметки и другая информация по 1С

  • Главная
  • Типовые конфигурации
    • ЗУП 3.1
      • Разработка
        • Обработки
        • Отчеты
        • Печатные формы
        • Расширения
      • Инструкции
      • Ответы техподдержки 1С
      • Общие вопросы
    • ДО 2.1
    • УХ 3.2
    • УПП 1.3
  • Интеграции и обмены
  • Шаблоны и заготовки
    • Типовые приемы
    • Отчеты
    • Обработки
    • Печатные формы
    • Расширения
  • Платформа 1С
  • Разработки
    • Контакты
  • Toggle search form

Работа с Web-сервисами 1С на примерах

Posted on 24 марта 23 г.24 февраля 25 г. By Алексей 3 комментария к записи Работа с Web-сервисами 1С на примерах

Содержание:

  • Краткое описание
  • Файлы материала
  • Подготовка
  • Пример реализации Web-сервиса в базе 1С ЗУП
  • Пример обращения к Web-сервису на стороне клиента
Краткое описание

Web-сервисы — это объект метаданных, в модуле которого можно описать методы доступные для использования сторонними программами (после публикации на веб-сервере). Для доступа к web сервису используется протокол SOAP. Для описания структуры передаваемых данных можно использовать XDTO-пакеты. Более подробно про XDTO можно почитать в статье — Работа с XML через механизм XDTO с примерами.

В данной статье рассмотрен пример создания веб-сервиса «Данные сотрудника», который по табельному номеру возвращает ФИО сотрудника и таблицу с данными по рабочему времени состоящую из даты и отработанных часов.

Описание примера работы с web-сервисом
Файлы материала
Расширение «Пример web-сервиса»Скачать
Расширение «Пример обращения к web-сервису»Скачать

В коде расширения необходимо изменить логин, пароль и адрес публикации (http://192.168.21.0/zup31) на подходящие для подключения к вашей базе с web сервисом.

Подготовка

Для работы необходимо установить любой веб-сервер (Apache, IIS) для дальнейшей публикации на нем web-сервиса. Если веб-сервис находится в расширении, то необходимо в публикации установить флаг «Публиковать Web-сервисы расширений по умолчанию».

Публикация Web-сервиса на веб сервере

Для отладки в файл публикации default.vrd необходимо добавить строчку со следующим содержанием

XHTML
1
<debug enable="true" protocol="tcp" url="tcp://localhost"/>

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

Пример реализации Web-сервиса в базе 1С ЗУП

Создадим XDTO-пакет с именем «АВ_ДанныеСотрудника», что бы описать структуру передаваемых данных (аналогичный XDTO-пакет был создан в статье Работа с XML через механизм XDTO с примерами).

В данном пакете создадим «тип объекта» ДанныеПоРабочемуВремени со свойствами:

Дататип string из пространства имен http://www.w3.org/2001/XMLSchema
РабочееВремятип int из пространства имен http://www.w3.org/2001/XMLSchema

И «тип объекта» Сотрудник со свойствами:

ФИОтип string из пространства имен http://www.w3.org/2001/XMLSchema
ТабельныйНомертип string из пространства имен http://www.w3.org/2001/XMLSchema
ДанныеПо РабочемуВременитип ДанныеПоРабочемуВремени из пространства имен https://www.myblog-1c.ru
  1. После этого создадим одноименный веб-сервис «АВ_ДанныеПоСотруднику«. Установим пакет XDTO, пространство имен и имя для публикации.
Создание web-сервиса шаг 1

2. В нем создадим единственный метод «Получить» и свяжем с одноименной функцией.

Создание web-сервиса шаг 2

3. Добавим один входной параметр «НомерДокумента«, который не может быть пустым.

Создание web-сервиса шаг 3

4. Опишем функцию, которая будет формировать данные по сотруднику и возвращать их в стороннюю программу.

1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Функция Получить(НомерДокумента)
СотрудникСсылка = Справочники.Сотрудники.НайтиПоКоду(НомерДокумента);
Если НЕ ЗначениеЗаполнено(СотрудникСсылка) Тогда
Возврат Неопределено;
КонецЕсли;
// получить тип объектов XDTO    
ДанныеПоРабочемуВремениТип = ФабрикаXDTO.Тип("https://www.myblog-1c.ru", "ДанныеПоРабочемуВремени");
СотрудникТип = ФабрикаXDTO.Тип("https://www.myblog-1c.ru", "Сотрудник");
// созадть объект XDTO "сотрудник" и заполнить свойства
Сотрудник = ФабрикаXDTO.Создать(СотрудникТип);
Сотрудник.ФИО = СотрудникСсылка.Наименование;
Сотрудник.ТабельныйНомер = СотрудникСсылка.Код;
          
// созадть объект XDTO "данных по времени 1" и заполнить свойства  
ДанныеПоРабочемуВремени = ФабрикаXDTO.Создать(ДанныеПоРабочемуВремениТип);
ДанныеПоРабочемуВремени.Дата = Дата(2023,3,1);
ДанныеПоРабочемуВремени.ВремяПоТабелю = 5;
// добавить строку к сотруднику
Сотрудник.ДанныеПоРабочемуВремени.Добавить(ДанныеПоРабочемуВремени);
// созадть объект XDTO "данных по времени 2" и заполнить свойства  
ДанныеПоРабочемуВремени = ФабрикаXDTO.Создать(ДанныеПоРабочемуВремениТип);
ДанныеПоРабочемуВремени.Дата = Дата(2023,3,2);
ДанныеПоРабочемуВремени.ВремяПоТабелю = 8;
// добавить строку к сотруднику
Сотрудник.ДанныеПоРабочемуВремени.Добавить(ДанныеПоРабочемуВремени);
    Возврат Сотрудник;  
КонецФункции

После публикации веб сервис будет доступен для клиентских приложений.

Пример обращения к Web-сервису на стороне клиента

Перед обращения к веб сервису необходимо создать Прокси подключение, данную операцию можно сделать двумя способами:

1. С использованием статической WS ссылки (Более быстрое подключение к источнику, но необходимо создать объект в дереве метаданных)

В момент создания WS-ссылки будут прочитаны данные по структуре XDTO и протоколу SOAP из Web-сервиса в базе источнике.

2. С использованием динамической WS ссылки (Более медленный, учитывает изменения веб-сервиса и XDTO-пакета в источнике «на лету»)

Пример кода получения данных из другой конфигурации:

Адрес публикации (http://192.168.21.0/zup31) и Логин / Пароль для входа в базу необходимо заменить на свои.

1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Процедура ПолучитьДанныеСотрудникаНаСервере(Знач ТабельныйНомер)
Логин = "Администратор";
Пароль = "";
//ТабельныйНомер = "0000-00001";
//// Пример создания "Прокси" с использованием статической WS ссылки
//Прокси = WSСсылки.АВ_ДанныеСотрудника.СоздатьWSПрокси("https://www.myblog-1c.ru", "АВ_ДанныеСотрудника", "АВ_ДанныеСотрудникаSoap");
//Прокси.Пользователь = Логин;
//Прокси.Пароль = Пароль;
// Создание "Прокси" с использованием динамической WS ссылки
Определение = Новый WSОпределения("http://192.168.21.0/zup31/ws/worker.1cws?wsdl", Логин, Пароль);
Прокси = Новый WSПрокси(Определение, "https://www.myblog-1c.ru", "АВ_ДанныеСотрудника", "АВ_ДанныеСотрудникаSoap");
Прокси.Пользователь = Логин;
Прокси.Пароль = Пароль;  
// вызов метода web-сервиса
    ДанныеПоСотруднику = Прокси.Получить(ТабельныйНомер);
// обработка результата
Если ДанныеПоСотруднику = Неопределено Тогда
        Возврат;
КонецЕсли;  
Сообщить("По сотруднику "+ДанныеПоСотруднику.ФИО+" получено рабочее время");
Для Каждого СтрокаВремя Из ДанныеПоСотруднику.ДанныеПоРабочемуВремени Цикл
Сообщить(" - "+Формат(СтрокаВремя.Дата, "ДФ=dd.MM.yyyy")+" - "+Строка(СтрокаВремя.ВремяПоТабелю)+" ч.");
КонецЦикла;
КонецПроцедуры

Рекомендации

  • Работа с XML через механизм XDTO с примерами
  • Пример интеграции с ДО 2.1 через веб-сервис
  • Инструкция к обработке "API YandexGPT"
ЗУП 3.1, Интеграции и обмены Tags:web-сервис

Навигация по записям

Previous Post: Обработка «Выплата сотруднику через банк» ЗУП 3.1
Next Post: Мастер-данных “Управления холдингом 3.2” (часть 2)

Комментарии (3) on “Работа с Web-сервисами 1С на примерах”

  1. Аноним:
    2 декабря 23 г. в 10:53

    Статья помогла, спасибо!

    Ответить
  2. Аноним:
    4 июня 24 г. в 14:10

    Хорошая статья.

    Ответить
  3. Андрей:
    24 июня 26 г. в 07:41

    а как обратиться к веб сервису не из 1С, а из сторонней программы — например из Postman?

    Ответить

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

ДзенTelegram

Разработки

  • Печатная форма "Расходный кассовый ордер" для ЗУП 3.1 Печатная форма "Расходный кассовый ордер" ЗУП 3.1 650,00 ₽
  • Отчет "План-факт отпусков сотрудников в виде диаграммы Ганта Отчет "План-факт по отпускам сотрудников" ЗУП 3.1 650,00 ₽
  • Приказ об отмене трудового договора (рис 1) Печатная форма "Отмена приема на работу" ЗУП 3.1 650,00 ₽
  • Обработка “Выплата сотруднику через банк” ЗУП 3.1 Обработка “Выплата сотруднику через банк” ЗУП 3.1 0,00 ₽
  • Тестирование API Яндекс GPT Обработка "Работа с API YandexGPT" 650,00 ₽

MDM web-сервис XML БСП ЕФС-1 ИИ КД 2.0 НДФЛ СЗВ-СТАЖ СЗВ-ТД СКД СТД-Р СФР СЭДО ФСС ФСС НС больничные листы взносы вычеты длительная операция запрос интерфейс кадровая история кадровые данные кадровые переводы легкий труд мастер-данных обмен данными общий модуль отбор отпуска печать без проверки печать с диалогом пользователи представление прием на работу резервы отпусков сверхурочные синхронизация ЗУП и БП средний заработок табель таблица периодов табличный документ фотография штатное расписание

Яндекс.Метрика

© 2022-2026 myblog-1c.ru

Пользовательское соглашение

Контакты