Выполнение запроса в другой базе 1С без com-соединения. HTTP-сервис

30.11.18

Интеграция - Обмен между базами 1C

Выполнение любого запроса с параметрами из одной базы 1С в другую. Используя HTTP-сервис. Посредством POST-запроса и JSON.

Скачать файлы

Наименование Файл Версия Размер
Выполнить запрос в другой базе 1с без com-соединения. HTTP-сервис.:
.dt 43,08Kb
66
.dt 1 43,08Kb 66 Скачать

Com-соединение использовать не хотелось по ряду причин. Одной из главных является зоопарк разных баз на разных платформах 1с. И поэтому написал http-сервис.

Публикуем ее на Apache или iss (об публикации 1с  есть много статей в интернете) .

Пишем функцию, которая обрабатывает POST-запрос в теле запроса строка JSON в которой хранится Структура с запросом и его параметрами. Ниже видно как заполнить  параметры с датой и элементом справочника. Функция на выходе возвращает Таблицу значений ЗначениеВСтрокуВнутр (в текстовом представлении)

Далее Создаем обработку и пишем процедуру обращения к HTTP- сервису. Описываем запрос который будет выполнен в другой базе. Заворачиваем его в JSON. Делаем POST-запрос к адресу http-сервиса. Получаем  текст из тела ответа. Преобразуем ее в Таблицу значений методом ЗначениеИзСтрокиВнутр.

В демо-базе заполню данные чтобы получить результат.

В демо-базе  для скачивания требует логин и пароль

Логин: user

Пароль:12345

Тестировал на релизе 1С:Предприятие 8.3 (8.3.13.1513)

Запрос HTTP-сервис POST JSON

См. также

SALE! 10%

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

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Обработка позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Есть фильтр по организации и множество других опциональных параметров выгрузки. Наши правила переноса в продаже с 2015 года, постоянно работаем над их развитием. Более 360 предприятий выполнили переход с использованием этого продукта. Оказываем техническую поддержку по всем вопросам проекта переноса данных из УПП 1.3.

50722 45650 руб.

04.08.2015    159265    363    266    

345

SALE! 10%

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

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

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

25080 руб.

12.06.2017    134593    718    291    

387

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

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

28000 руб.

15.12.2021    20086    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Переносятся документы за выбранный период, нормативно-справочная информация и остатки по счетам бухгалтерского учета из программы "1С:БП 3.0" в "1С:УТ 11" или "1С:КА. 2" или "1С:ERP Управление предприятием, ред. 2".

50722 45650 руб.

31.10.2014    231090    124    326    

295

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    34031    80    57    

78

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    68191    176    136    

108

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

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

60000 руб.

05.10.2022    9155    9    8    

10

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

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

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

28000 руб.

23.07.2020    46019    194    64    

153
Отзывы
19. John_d 5204 06.12.18 17:36 Сейчас в теме
(18) красиво)
Тогда еще такую заплатку. Использовать нестандартную переменную запроса.
Запрос234а15а2 = Новый Запрос;
Aligator69; +1 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 30.11.18 17:09 Сейчас в теме
Хорошая идея для небольших объемов данных: сверка, синхронизация маленьких таблиц и т.п.

Для выгрузки/загрузки полных объемов данных проще сохранить в источнике массивные данные в файл JSON и затем получить его в приемнике и обработать.
2. dsdred 3231 30.11.18 17:32 Сейчас в теме
Сразу видно не читали https://its.1c.ru/db/content/v8std/src/d810/i8100770.htm?_=1528299650
Для вашего примера достаточно OData без создания http-сервиса

А по http-сервисам вот:

HTTP Сервисы: Путь к своему сервису. Часть 1
HTTP Сервисы: Путь к своему сервису. Часть 2
HTTP Сервисы: Путь к своему сервису. Часть 3
HTTP Сервисы: Путь к своему сервису. Часть 4

П.С. Это больше на костыль похоже, причем на дыру в безопасности.
user1479482; kser87; Drivingblind; wowik; rpgshnik; papche; zarankony; frkbvfnjh; unichkin; Vladimir Litvinenko; zeegin; +11 Ответить
10. Aleks.spb 05.12.18 09:34 Сейчас в теме
(2) У вас отличный фундаментальный труд, на освоение которого нужно потратить от трех дней и больше, если есть возможность и время копать глубоко.
Тут конкретный узкоспециализированный пример, освоить который можно за час и оставшееся время посвятить уже решению задачи.
user1346935; gubanoff; John_d; +3 Ответить
13. dsdred 3231 05.12.18 15:43 Сейчас в теме
(10)
Тут конкретный узкоспециализированный пример, освоить который можно за час и оставшееся время посвятить уже решению задачи.

Есть конкретно OData, ее использование позволит сделать данную задачу еще быстрее и без создания бреши в безопасности.

П.С. Можно потратить час сейчас и X-дней потом чиня последствия. Беречь время правильно, но правильно беречь время лучше!
14. Aleks.spb 05.12.18 16:47 Сейчас в теме
(13) Вас понял, но я рассматривал это как пример организации http сервиса с post запросом/ответом в формате JSON для человека который начал с нуля.
15. dsdred 3231 05.12.18 17:18 Сейчас в теме
3. K_A_O 538 02.12.18 14:18 Сейчас в теме
А я-то уж по заголовку решил, что любой запрос в OData преобразуется.
4. Lapitskiy 1057 04.12.18 08:31 Сейчас в теме
а насколько правильно использовать "ЗначениеВСтрокуВнутр" в 2018 году?
5. John_d 5204 04.12.18 10:16 Сейчас в теме
(4) Это типовая функция платформы. Все зависит от задачи.
Например в УПП есть регистр сведений СоответствиеОбъектовДляОбмена, где хранятся текстовые ссылки на объекты в другой базе.
6. starik-2005 3031 04.12.18 13:37 Сейчас в теме
(4)
а насколько правильно использовать "ЗначениеВСтрокуВнутр" в 2018 году?
А там внутри тот же XML, только заююченый )))
gubanoff; +1 Ответить
7. Lapitskiy 1057 04.12.18 14:11 Сейчас в теме
(6) Но 1С вот что пишет:

"Примечание:

Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется. "
8. rabid_otter 134 04.12.18 19:35 Сейчас в теме
(6) значениевстрокувнутр < сериализация в JSON < сериализация в XML по скорости
9. dsdred 3231 04.12.18 19:51 Сейчас в теме
(8)Подключение на прямую к базе < http-сервисов + преобразования... И?

Суть не в этом.

Данный пример просто опасен.
В любой параметр можно запихнуть код выполняющий вредное действие (создать пользователя, додать себе прав, удалить что либо, прочитать и т.д.). Вот что главное!
И кто то еще и скачает и воткнет сию разработку.

П.С. Я когда то тоже нечто подобное навоял. Создал HTTP-сервис и метод "Выполнятор" из названия не трудно догадаться, что это за выполнятор был.
Посылал целый кусок кода и параметры в JSON, в куске кода который передавал описывал в каком виде вернуть данные.
Крутая вещь я вам скажу! Так я думал... А потом спустя пару месяцев ночью проснулся и вздрогнул от того, что я натворил. Слава богу всего в 4-х местах успел только использовать.

Потом еще и статью почитал которую выше написал https://its.1c.ru/db/content/v8std/src/d810/i8100770.htm?_=1528299650
Так что ЗначениеВСтрокуВнутр это лишь цветочки...
11. John_d 5204 05.12.18 10:17 Сейчас в теме
(9) Спасибо за комментарий. Вместе мы сделали код безопаснее.
Результ = "";
Значение1 = СтрЗаменить(СтрСтр.Значение,";",""); //запрет кода 1с с двумя и более операторами
Выполнить("Результ = " + Значение1);

Теперь я не могу придумать вредоносный код с одним оператором. Который начинается "Результ =".

Скриншот исправил. Файл перезалил.
16. dsdred 3231 05.12.18 19:05 Сейчас в теме
(11)Одну заплатку поставили, а сколько их еще будет?

Кто его знает, не хочу ломать голову, но вот вам замена ";"=Символ(59)
Специальный запуск долгих запросов или получение данных из баз в которые не должно было быть доступа...
17. John_d 5204 06.12.18 10:26 Сейчас в теме
(16)Это выполняемый код тут Символ(59) не прокатит в качестве разделителя операторов.
18. dsdred 3231 06.12.18 15:59 Сейчас в теме
(17)Как я уже говорил не хочу ломать голову. Я лишь показал как можно протащить команду с ";"

Выполнить ее или записать куда то для выполнения это уже следующая стадия размышлений.

Показываю как текст команды протащить:
Параметры1 = новый Структура;
	//Параметр хранит текст команды
	Параметры1.Вставить("КодДляВыполнения","СтрЗаменить(""Я1=1||Я2=2||Я3=3"",""||"",Символ(59))");	
	//Вариант1: Получаем текст команды, осталось подумать что с этим делать
	Параметры1.Вставить("ПришелНасралУлетел1","Запрос.Параметры.КодДляВыполнения");
	//Вариант2: Получаем текст команды, осталось подумать что с этим делать
	Параметры1.Вставить("ПришелНасралУлетел2","Запрос.Выполнить().Выгрузить()[0].ПерлХарбр");
	

	Запрос.Текст = "ВЫБРАТЬ &КодДляВыполнения КАК ПерлХарбр";
Показать
Прикрепленные файлы:
19. John_d 5204 06.12.18 17:36 Сейчас в теме
(18) красиво)
Тогда еще такую заплатку. Использовать нестандартную переменную запроса.
Запрос234а15а2 = Новый Запрос;
Aligator69; +1 Ответить
12. santech-1C 05.12.18 13:02 Сейчас в теме
не нравится "выполнить()" - сделайте через "Запрос.Выполнить()"

моя нетленка в тему

20. Sten74 14.05.20 17:19 Сейчас в теме
(12) Есть пример как обойти этот опасный вариант с "Выполнить"?
21. John_d 5204 15.05.20 09:17 Сейчас в теме
(20) 1. Из текста, который нужно выполнить убрать ";". СтрЗаменить(ТекстВыполнить,";","")
2. Переменной запроса дать сложное имя Запрос234а15а2 = Новый Запрос; (чтобы нельзя было сделать как показано в 18)
22. gubanoff 63 03.09.20 13:42 Сейчас в теме
(0) Ровно то, что нужно. Спасибо!
23. Drivingblind 227 19.10.20 05:06 Сейчас в теме
Была же уже очень хорошая статья на подобную тему: https://infostart.ru/1c/articles/1105734/
В комментариях тоже много чего полезного написали к данной публикации.
24. Batman1978 07.10.21 14:03 Сейчас в теме
А можно итоговый то текст ? а то я не совсем понял где и что меняется ?
25. Batman1978 07.10.21 14:05 Сейчас в теме
И вообще если сервер не имеет внешнего выхода в нет - а запрос я формирую на стороне сервера а на входе я смотрю только параметры - если параметры вы засунете исполняемый код - то как он вредоносно запуститься?
Простите если что за тупые вопросы:)
26. John_d 5204 07.10.21 15:02 Сейчас в теме
(25) в (18) предложил способ взлома. Только если нет доступа к интернету не понятно кто будет взламывать, наверное коллеги программисты.
Если изменить Запрос= Новый Запрос на Запрос234а15а2 = Новый Запрос, то способом из (18) уже не взломать.
27. Batman1978 08.10.21 16:26 Сейчас в теме
Я не совсем понял этот запрос вы формируете при отправке ? Но например если у меня идет через get /GetКакой-тоТекст/{Параметр1}/{Параметр2}/* и потом на стороне приема я смотрю в параметры и там что-то не то - то например если параметр тип дата - и прочитав там что-то не то - как оно взломается ?
я понимаю что у меня примитивно - но надо же быть образованным :)
и например далее по тексту я делаю выборку на стороне приема запроса ввиде запроса - как код взламывается ?
или это тот случай когда передается в обращении в теле запрос ?
28. John_d 5204 08.10.21 16:53 Сейчас в теме
(27) опасное место в коде:
Выполнить("результат =" + Значение1);
, т.е. если передать в Значение1 текст к примеру такой. 
Значение1 =
" 1;
Набор = РегистрСведений.Остатки.СоздатьНабор();
Набор.Записать();
";

то можно очистить регистр с остатками.
Потому надо сделать так чтобы никто "случайно" не передал такого кода в команду ВЫПОЛНИТЬ.
Для этого то я и запрещаю использовать ";" и как (18) использовать не стандартную запись Запрос = Новый Запрос, а похитрее Запрос123321 = Новый Запрос.
31. VladimirB 16 15.09.23 10:31 Сейчас в теме
(28)
Регистр почистить можно и одной командой

РегистрыСведений.ШтрихКоды.СоздатьНаборЗаписей().Записать();
32. John_d 5204 15.09.23 12:31 Сейчас в теме
(31) Да, тогда можно запретить использовать "Записать()"
33. VladimirB 16 15.09.23 12:39 Сейчас в теме
(32) Тогда уже воспользоваться объектом СхемаЗапроса. Чтобы уже в нем проанализировать, текст запроса ли вообще передали
29. Batman1978 11.10.21 09:56 Сейчас в теме
все я понял - это когда едит текст запроса внутри json строки
30. vechiy 35 10.02.23 16:24 Сейчас в теме
почему может возникать ошибка формата потока?
Прикрепленные файлы:
Оставьте свое сообщение