0. John_d 317 30.11.18 16:47 Сейчас в теме

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

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. VmvLer 30.11.18 17:09 Сейчас в теме
Хорошая идея для небольших объемов данных: сверка, синхронизация маленьких таблиц и т.п.

Для выгрузки/загрузки полных объемов данных проще сохранить в источнике массивные данные в файл JSON и затем получить его в приемнике и обработать.
2. dsdred 911 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

П.С. Это больше на костыль похоже, причем на дыру в безопасности.
papche; nikita0832; frkbvfnjh; unichkin; VladimirL; zeegin; +6 Ответить
10. Aleks.spb 05.12.18 09:34 Сейчас в теме
(2) У вас отличный фундаментальный труд, на освоение которого нужно потратить от трех дней и больше, если есть возможность и время копать глубоко.
Тут конкретный узкоспециализированный пример, освоить который можно за час и оставшееся время посвятить уже решению задачи.
13. dsdred 911 05.12.18 15:43 Сейчас в теме
(10)
Тут конкретный узкоспециализированный пример, освоить который можно за час и оставшееся время посвятить уже решению задачи.

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

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

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

Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется. "
8. oleganatolievich 140 04.12.18 19:35 Сейчас в теме
(6) значениевстрокувнутр < сериализация в JSON < сериализация в XML по скорости
9. dsdred 911 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 317 05.12.18 10:17 Сейчас в теме
(9) Спасибо за комментарий. Вместе мы сделали код безопаснее.
Результ = "";
Значение1 = СтрЗаменить(СтрСтр.Значение,";",""); //запрет кода 1с с двумя и более операторами
Выполнить("Результ = " + Значение1);

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

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

Кто его знает, не хочу ломать голову, но вот вам замена ";"=Символ(59)
Специальный запуск долгих запросов или получение данных из баз в которые не должно было быть доступа...
17. John_d 317 06.12.18 10:26 Сейчас в теме
(16)Это выполняемый код тут Символ(59) не прокатит в качестве разделителя операторов.
18. dsdred 911 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 317 06.12.18 17:36 Сейчас в теме
(18) красиво)
Тогда еще такую заплатку. Использовать нестандартную переменную запроса.
Запрос234а15а2 = Новый Запрос;
12. santech-1C 05.12.18 13:02 Сейчас в теме
не нравится "выполнить()" - сделайте через "Запрос.Выполнить()"

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

Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день