Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

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

Арт.: 1121106

Продано: 15

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

2400 руб.

1000 руб.

Состав решения: 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.Выполнить().Выгрузить(); РезультатИтоги = глЗапрос("БП", Запрос);

 

Статистика:
Просмотры 23589
Загрузки 15
Рейтинг 32
Создание 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С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравне...

13000 10400 руб.

SALE! 20%

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

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

45650 36520 руб.

SALE! 20%

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

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

25080 21318 руб.

SALE! 15%

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2...

34650 27720 руб.

SALE! 20%

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

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

43450 34760 руб.

SALE! 20%

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

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

28000 25200 руб.

SALE! 10%

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

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием перен...

50722 45650 руб.

SALE! 10%

Перенос данных из Парус 10 в ЗГУ ред.3

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ)...

60000 руб.

Infostart PrintWizard

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки...

18000 13500 руб.

SALE! 25%

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

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

28000 25200 руб.

SALE! 10%
88005555256
Заказать звонок
support@infostart.ru
Telegram
Чат на сайте