Имя: Пароль:
1C
 
Отчет с данными из другой базы
,
0 Буковка
 
04.12.23
10:17
Помогите, пожалуйста, с правильностью действий (код напишу сама). Мне нужно сформировать отчет в базе 1, используя данные базы 2(в базе 1 нет данных объектов).
Нужно использовать http соединение

Могу ли я создать отчет в базе 2, написать http-метод в базе 2 и получить это всё в базе 1? я могу в базе 1 использовать внешний отчет?
1 Доминошник
 
04.12.23
10:21
В общем случае ответ на оба вопроса - да.
2 Обработка
 
04.12.23
10:23
Либо СОМ либо http.

Но надо работать с предсавлениями а не самими объектами в отчетах. Так будте и правильне.
3 Буковка
 
04.12.23
10:24
(1) а как лучше сделать? формировать отчет в базе 1, используя внешний источник данных? или получать данные, сформированные в базе 2 в отчете?
4 Обработка
 
04.12.23
10:45
(3) А гугл тебе что сказал?
5 Shur1cIT
 
04.12.23
10:50
(0) делалп одобное, отчет сверял остатки в ERP и УПП, В УПП был поднят сервис HTTP в ERP сам отчет, те ерп формировал запрос в УПП за остатками далее после того как остатки получены соединял их с остатками в текущей базе.
6 Буковка
 
04.12.23
11:14
(5) спасибо, буду пробовать
7 lEvGl
 
гуру
04.12.23
11:41
(0) если надо просто в одной базе показать результат отчета из другой базы, то формируем отчет в базе2, возвращаем в базу1 просто ТабДок, показываем(). Он сериализуется.
+ способы передачи текста есть разные, от сервисов до тупо файлов
8 Буковка
 
04.12.23
11:45
(7) а как этот табдок показать в базе 1? сделать обработку? или в базе 1 сделать отчет на скд? мне это момент не совсем понятен
9 lEvGl
 
гуру
04.12.23
11:56
(8) в базе1 кнопка(где хотите, без разницы), она вызывает сервис (например, но можно и СОМ ипользовать. + и - одного и другого много раз обсуждались) базы2, в сервисе функция, которая программно формирует нужный отчет, на выходе этого формирования получаем ТабДок, который сериализуем и строкой возвращаем в качестве ответа на вызов сервиса базы2 в базу1. И пишем Показать(), все. А, ну из xml строки надо конечно ТабДок тут, в базе1, создать. Это делает через СериализоторXDTO, строчка кода в база2, строчка кода в база1, и имеем табДок в база1.
10 Буковка
 
04.12.23
11:57
(9) спасибо большое
11 nodrama
 
04.12.23
13:40
(0) У нас много таких отчетов.
Мы в "нужной базе". собираем нужные данные из другой базы и формируем отчет. хттп, ком и т.д. не суть важно.

Но у нас видимо проще. мы в "базе2" ни чего не формируем. Мы забираем только нужные данные (цифры там, даты, фио, ну и т.д.) и уже в нужной базе строим отчет.
12 p-soft
 
04.12.23
13:47
(6) да, это самое удобное:
- делаем хттп сервис на источнике
- на стороне хттп сервиса сняли данные с регистров, засунули их в массив структур, это все в json и вернули как двоичные данные тела ответа.
- на стороне инициатора запроса из тела ответа получаем json, преобразовываем в тз и тз пихаем как набор данных в отчет.
на днях тоже делал сверку из ут11 со складом. если данные паковать в deflate - вообще все летает.
13 p-soft
 
04.12.23
13:48
(12) у меня на сайте есть конфа и обработка с примером как делать, кстати
14 lEvGl
 
гуру
04.12.23
15:16
как то сомнения на счет связывания данных и так далее из за этого
Мне нужно сформировать отчет в базе 1, используя данные базы 2(в базе 1 нет данных объектов)

не говоря про синхронизацию ссылок и остального
15 Donkey_hot
 
04.12.23
15:22
(0) Вариант с пересылкой готового ТабДока кажется не очень гибким с точки зрения отборов, группировок и прочего. Но если возможности настройки не предусматривается, то можно и ТабДок.
16 Буковка
 
04.12.23
16:34
(14) мне не нужно связывать данные. Мне нужно вывести отчет из базы 2 в базе 1 (не используя данные базы 1)
17 Буковка
 
04.12.23
16:37
пока я пришла к такому варианту:
Результат = HTTPОтвет.ПолучитьТелоКакДвоичныеДанные();
        
        ПотокФайла = Новый ПотокВПамяти();
        Результат.Записать(ПотокФайла);
        ДвоичныеДанныеФайла = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные();
        Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения();
        
        ТабличныйДокумент.Прочитать(Поток);
        Поток.Закрыть();
        
        HTTPСоединение = Неопределено;
        Возврат ТабличныйДокумент;
18 lEvGl
 
гуру
04.12.23
16:54
(16) это и не вам было
(17) и как, работает?
19 Буковка
 
05.12.23
15:04
(18) нет, переделала иначе:
1) сделала скд в базе 1 с внешним набором данных, в модуле объекта передала параметры и вызвала метод из базы 2 и получила ТЗ
2) в базе 2 написала метод и запрос для получения ТЗ.

примерно всё так, как Вы подсказали в (9)
Спасибо!
20 lEvGl
 
гуру
05.12.23
16:47
(19) замечательно же! и какие возможности теперь есть у пользователя этого отчета на скд, все счастливы? у них же скд, а не просто таб док.
и еще интересно, что там в этой ТЗ, наименования вместо ссылок или ОбъектНеНайден?
21 Буковка
 
06.12.23
11:18
(20) Представление вместо ссылок. Это плохо?
22 lEvGl
 
гуру
06.12.23
11:29
(21) что для кого то хорошо, а что плохо сказать не могу. но свертка/группировка по одинаковым значениям поля в скд происходит, факт