Обработка для 1С: выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

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

Арт.: 1121106

Продано: 18

Демонстрация
Демонстрация
Лицензии

2400 руб.

Техподдержка и обновления

3000 руб.

Состав решения: Web-сервис, общий модуль с готовыми функциями для работы с ним, константа и перечисление для однозначного определения текущей базы, обработка для задания соответствия объектов информационных баз.

Минимальный релиз платформы для корректной работы 8.2.19.90 (ниже не проверялось)

Эффект от внедрения:
- ускорение в десятки, сотни раз выполнения запросов к другим информационным базам за счет уменьшения времени подключения (по сравнению с COM);
- сокращение кода и увеличение скорости и простоты отладки за счет унификации механизма выполнения запросов к другим информационным базам.

Подготовка к использованию (пошагово на примере БП и ЗУП)
• Объединить конфигурацию с текущими конфигурациями БП и ЗУП, в каждую конфигурацию будет добавлено по 4 новых объекта. Не забудьте снять флаг «Свойства» с корня дерева метаданных.
• Опубликовать Web-сервисы в этих базах и в каждой базе создать пользователя «Webservice» с паролем «12345qwerty» для авторизации через Web-сервис (имя пользователя и пароль можно поменять в общем модуле).
• Перейти в «Общие» - «WS-Ссылки» - «Добавить» и указать путь к:
  - файлу - если у вас платформа 8.2. Для получения файла перейти по ссылке «http://<имясервера>/<имябазы>/ws/ws.1cws?wsdl», авторизоваться и сохранить страницу как XML файл.
  - WS-ссылке - если у вас платформа 8.3. WS-ссылка выглядит так: «http://<имясервера>/<имябазы>/ws/ws.1cws?wsdl».
  Переименовать WS-ссылку - WS-ссылка на БП должна называться «БП», WS-ссылка на ЗУП должна называться «ЗУП» и т.д.  
• Задать константу «ИдентификаторБазы» в каждой базе (в БП это будет «Перечисления.Мод_ИдентификаторБазы.БП», в ЗУП, соответственно, «Перечисления.Мод_ИдентификаторБазы.ЗУП»)

Как это работает?
Решение позволяет разработчику не отвлекаться на детали взаимодействия с Web-сервисом и предоставляет в пользование 2 глобальные функции:
- глЗапрос(ПрефиксБазы, Запрос);
- глВыполнить(ПрефиксБазы, Код);
Параметром «ПрефиксБазы» задается база, в которой происходит выполнение запроса или кода. Доступные префиксы можно посмотреть в «Общие» - «WS-Ссылки» в дереве метаданных конфигурации. 
В параметр «Запрос» необходимо передавать сам запрос с параметрами, в параметр "Код" - код на языке 1С.

Пример использования

Запрос = Новый Запрос("ВЫБРАТЬ
|    Контрагенты.Наименование
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    Контрагенты.ИНН = &ИНН");
Запрос.УстановитьПараметр("ИНН", ИНН);
Выборка = глЗапрос("БП", Запрос);
НаименованиеКонтрагента = Выборка[0].Наименование;


Правила использования
• Ссылочные параметры, кроме счетов бухгалтерского учета, необходимо менять на строковые, например, вместо «Организация = &Организация» писать «Организация.Код = &КодОрганизации». В архиве есть 
обработка "Добавление идентификаторов в регистр соответствий объектов ИБ", позволяющая настроить соответствие между счетами бухгалтерского учета двух баз, если вдруг у них разные идентификаторы (не встречал подобного).
• При выполнении кода результат можно вернуть с помощью вызова исключения.
• Если «ПрефиксБазы» совпадает с идентификатором текущей базы, то запрос или код выполняется в ней. Т.е. сбор данных из разных баз в одну таблицу можно выполнять в цикле, меняя только префикс базы, например:

ОбщаяТаблица = Новый ТаблицаЗначений;
МассивПрефиксов = Новый Массив;
МассивПрефиксов.Добавить("БП");
МассивПрефиксов.Добавить("УТ");
МассивПрефиксов.Добавить("ЗУП");
Для каждого Префикс из МассивПрефиксов Цикл
    ЗагрузитьВТаблицуЗначений(ОбщаяТаблица, глЗапрос(Префикс, Запрос));
КонецЦикла;


Замена COM-подключений на выполнение запросов через Web-сервис
Переменные COM-подключения должны быть заменены переменными этой базы, например, вместо «COM.NewObject("Запрос");» необходимо написать просто «Новый Запрос;».
Далее рассмотрены основные конструкции встроенного языка для работы с COM-подключением и их аналоги для работы с функцией «глЗапрос».

COM-подключение Web-сервис
ЗапросCOM = COM.NewObject("Запрос"); Запрос = Новый Запрос;
ЗапросCOM.УстановитьПараметр("ДатаОкончания", COM.NewObject("Граница",КонецДня(КонДата),БазаCOM.ВидГраницы.Включая)); ЗапросCOM.УстановитьПараметр("ДатаОкончания", Новый Граница(КонецДня(КонДата), ВидГраницы.Включая));
ЗапросCOM.УстановитьПараметр("Контрагент",   БазаCOM.Справочники.Контрагенты.НайтиПоРеквизиту("Код",Контрагент.Код)); Необходимо изменить условие в запросе.
«ГДЕ Контрагент = &Контрагент»
заменить на
«ГДЕ Контрагент.Код = &Код» 
и передать «Код» в качестве параметра.
СписокСчетов.Добавить(COM.ПланыСчетов.Хозрасчетный.НайтиПоКоду("75")); СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("75"));
РезультатИтогиCOM = ЗапросCOM.Выполнить().Выгрузить(); РезультатИтоги = глЗапрос("БП", Запрос);

 

Статистика:
Просмотры 25200
Загрузки 18
Рейтинг 35
Создание 24.09.19 11:17
Обновление 04.12.19 12:56
№ Публикации 1121106
Характеристики:
Теги

Web-сервис COM-подключение замена запрос параметры выполнение обмен

Рубрики Инструментарий разработчика Перенос данных 1C
Кому Программист
Тип файла Архив с данными
Платформа Платформа 1С v8.3
Конфигурация Не имеет значения
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Платные (руб)
Код открыт Да
1. novatrade 23.02.20 22:05 Сейчас в теме
а в чем быстрее получается? в выполнении запроса? в передаче данных? как Вы сравнивали?
2. Техподдержка 25.02.20 09:13
(1) отпадает необходимость создавать COM-подключение, на создание которого тратится много времени, вместо этого запрос можно выполнить так же как и к этой базе
3. novatrade 27.02.20 22:30 Сейчас в теме
Честно, не понял в чем тратится много времени. На само соединение или передачу данных?
5. novatrade 28.02.20 19:57 Сейчас в теме
сделайте модуль в принимающей базе, в качестве параметра передавайте текст запроса и условия - получайте результат. Будет работать быстро
6. Техподдержка 28.02.20 20:03
(5) напишите подробнее пожалуйста, интересно
7. novatrade 28.02.20 20:40 Сейчас в теме
После выходных постараюсь
8. krava_vlad 30.12.21 12:31 Сейчас в теме
А если конфигурация приемник находится в облаке сервиса 1с а источник в моем полном распоряжении (изначально база файловая, но могу разместить ее на скл и могу опубликовать в интернете). Я так понимаю что для работы нужно тогда чтобы ваше дополнение было в виде разширения. У вас есть такой вариант работы?
9. Техподдержка 30.12.21 23:42
(8) Здравствуйте, можно сделать в виде расширения, но нюансы публикации веб-сервиса в облаке не подскажу, не сталкивался. Теоретически сделать возможно
10. krava_vlad 30.12.21 23:58 Сейчас в теме
(9) Обмен нужен односторонний. То есть в облако нужно загружать данные и чтобы он выступал инициатором обмена
11. Техподдержка 31.12.21 01:44
(10) А чем не устраивает типовой обмен? Там есть возможность выгрузки в облако
12. sh99 10.03.23 14:00 Сейчас в теме
Всё работало. Но после обновления конфигурации стала появляться ошибка Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/enterprise/current-config}DocumentRef.ВнутреннееПотребление'
Как исправить?
13. sh99 10.03.23 15:32 Сейчас в теме
Дополнение: конфигурация КА 2.5. При обновлении изменился идентификатор вида документа. Был "ВнутреннееПотреблениеТоваров" (всё работало нормально), стал "ВнутреннееПотребление" (стала выскакивать указанная выше ошибка).
14. Техподдержка 10.03.23 15:47
(13) Добрый день. Необходимо переопубликовать обновленную базу и обновить WS-ссылку на Web-сервис в базе, из которой делается запрос. Инструкция по обновлению WS-ссылки есть в описании публикации.
15. oft 03.08.23 10:52 Сейчас в теме
Продукт привлек внимание скоростью (лёгкостью) замены готовых отчетов с сом на web.
Подключили, закомментировали 3 строки, добавили 2 и готово! Например:
БЫЛО:
РезОбразцы = ЗапросОбразцы.Выполнить();
ВыборкаОбразцы = РезОбразцы.Выбрать();
Пока ВыборкаОбразцы.Следующий() Цикл
стрТЗ = тзОбразцы.Добавить();
ЗаполнитьЗначенияСвойств(стрТЗ,ВыборкаОбразцы);
КонецЦикла;
СТАЛО:
//РезОбразцы = ЗапросОбразцы.Выполнить(); //закомментировано 1я
//ВыборкаОбразцы = РезОбразцы.Выбрать(); //закомментировано 2я
//Пока ВыборкаОбразцы.Следующий() Цикл //закомментировано 3я
РезОбразцы = глЗапрос(Префикс, ЗапросОбразцы); //добавлено 1я строка
Для каждого ВыборкаОбразцы Из РезОбразцы Цикл //добавлено 2я строка
стрТЗ = тзОбразцы.Добавить();
ЗаполнитьЗначенияСвойств(стрТЗ,ВыборкаОбразцы);
КонецЦикла;
НО, могут быть "сюрпризы". Обсуждение здесь: https://forum.mista.ru/topic.php?id=888625

Оставьте свое сообщение

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравне...

10000 руб.

SALE! 15%

Синхронизация и обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмен...

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций нов...

26280 21024 руб.

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте врем...

55778 50200 руб.

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1...

35000 31500 руб.

SALE! 10%

Database Compression Tool (DCT) Универсальный инструмент сжатия, свертки и конвертации баз данных 1С

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и в...

8400 7140 руб.

SALE! 15%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 1...

35000 31500 руб.

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расста...

53111 47800 руб.

SALE! 10%

Перенос данных из УПП 1.3 / КА 1.1 в БП 3. Переносятся документы, справочники и начальные остатки

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся докум...

48278 43450 руб.

SALE! 10%

Обмен УПП 1.3, КА 1.1, УТ 10.3 с EnterpriseData (универсальный формат обмена) ED2

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработ...

15300 13005 руб.

SALE! 15%

Переход и перенос данных из Камин 3.0, 4.0, 5.0 в ЗУП 3.х

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.