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

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

Арт.: 1121106

Продано: 20

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

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

 

Статистика:
Просмотры 25585
Загрузки 20
Рейтинг 37
Создание 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С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

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

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

55778 50200 руб.

SALE! 10%

ED для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ. Новые

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

27660 руб.

SALE! 20%

Database Compression Tool: Инструмент для свертки и сжатия баз данных 1С

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

8400 руб.

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

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

35000 руб.

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

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

55778 50200 руб.

SALE! 10%

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

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

53111 47800 руб.

SALE! 10%
SALE! 10%

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

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

48278 43450 руб.

SALE! 10%

Infostart PrintWizard (конструктор печатных форм)

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

22200 руб.