Имя: Пароль:
1C
1С v8
Стыковка внешнего источника данных с данными 1С
,
0 AlterMann
 
08.02.17
16:51
Всем привет.
Подскажите, существует ли более цивилизованный способ стыковки данных, полученных запросом из внешнего источника (в моем случае идет обращение к базе Oracle), чем выгрузка результата запроса в таблицу значений, а потом добавление ее в качестве параметра в запрос в виде временной таблицы и последующего соединения с другими таблицами базы 1С? 1С 8.3.7.
1 MatveyIgor
 
08.02.17
16:57
2 AlterMann
 
08.02.17
17:09
(1) Прошу прощения, что не указал сразу. У меня клиент-серверная 1с на линукс, так что COM объекты мне не доступны :-(
3 H A D G E H O G s
 
08.02.17
17:12
Просто допустите такую возможность, что база 1С лежит на одном сервере, а внешняя база - на другом и такие вопросы пропадут.
4 MaxS
 
08.02.17
17:13
Сохранить в XML, прочитать из XML.
5 AlterMann
 
09.02.17
11:22
Вроде как 1С 8.3 позволяет делать следующее.

Реализована возможность работы с временными таблицами для внешних источников данных. Временная таблица создается непосредственно в базе данных внешнего источника данных. Для обращения к временной таблице используется синтаксис ВнешнийИсточникДанных.<Имя внешнего источника данных>.ВременнаяТаблица.<Имя временной таблицы>.

И в таком виде конструктор запроса при помещении результата во временную таблицу предупреждение "Получение данных из нескольких источников данных недопустимо" не выдает. Но из второго запроса у меня не получается обратиться к этой временной таблице. Ошибка выполнения запроса "Таблица не найдена". Я пробовал обращаться и по полному имени и просто по имени временной таблицы.
1. ВнешнийИсточникДанных<Имя внешнего источника данных>ВременнаяТаблица<Имя временной таблицы>
2.<Имя временной таблицы>.
6 AlterMann
 
09.02.17
11:22
(4) Чем это лучше, чем выгрузка в ТЗ?
7 KAO111
 
09.02.17
11:34
В СКД можно использовать 2 набора из разных источников
8 gorakh
 
09.02.17
11:35
(0) У меня получилось состыковать через ВнешнийИсточникДанных внешюю базу MS SQL (системы контроля доступа сотрудников). Пробывал на 8.3.6 - "не взлет". 8.3.9 -плохо работали встроенные отборы в форме списков. 8.3.8.2322-Все заработало. На ней и остановился.
9 shuhard
 
09.02.17
11:36
(5) а в (1) что по твоему описано ?
10 AlterMann
 
09.02.17
11:52
(9) А что в (1) написано? Подключившись через COM объекты данные выгружены в ТЗ, а потом добавлены в запрос через ВТ как параметр. Я так и делаю с внешним источником. Выгружаю результат запроса в ТЗ, а потом во второй запрос как ВТ. Я как раз хочу уйти от выгрузки в ТЗ больших объемов данных.
11 AlterMann
 
09.02.17
11:53
(7) Мне нужно именно в одном наборе получить возможность использовать данные из внешнего источника, чтобы соединив по кодам с объектами 1С получить ссылочные данные.
12 AlterMann
 
09.02.17
11:55
(8) Получилось состыковать с помощью временной таблицы?
13 gorakh
 
09.02.17
12:29
(12) Нет. Сначала получал данные из внешнего источника данных в таблицу значений. Потом уж строил запрос к 1с.
14 AlterMann
 
09.02.17
12:53
(13) Жаль, я надеялся, что есть способ делать это без выгрузки в таблицу значений. Не понимаю, зачем вообще в таком случае реализована возможность работы с ВТ для внешних источников (5)? Поместить можно, а использовать нельзя (
15 KAO111
 
09.02.17
12:54
(11) в СКД это работает

1-й набор, запрос в 1С, возможно ограничивающий набор данных какими то условиями

2-й набор, запрос к внешнему источнику.

Если просто связать 2 набора - можно будет в полях вывести как данные внешнего источника, так и 1С ссылки. Но для оптимизации можно в связи наборов указать параметр (поле из первого набора). Профайлером видно, что накладывается отбор на итоговый запрос во внешнем источнике.
16 KAO111
 
09.02.17
12:55
(14) ВТ внешних источников работают в одном наборе, там может быть пакет запросов.
17 MaxS
 
09.02.17
13:11
(6) ТЗ это плоская таблица.
В XML можно поместить всё, что угодно, например документ целиком в виде дерева со связанными справочниками и реквизитами.
Но если нужен моментальный онлайн доступ к сторонним данным, то xml дольше.
18 gorakh
 
09.02.17
15:21
(8) Попробывал на платформе 8.3.10.1877 выполнить поиск по таблице внешненго источника данных в управляемой форме списка выполнить поиск. Выдало ошибку "Ошибка аутентификации клиента средствами операционной системы: Аутентификационный контекст клиента отсутствует в рабочем процессе" На 8.3.8 такое не наблюдается.
19 Вафель
 
09.02.17
15:24
(17) а как ты это дерево потом в запрос засунешь
20 MaxS
 
09.02.17
17:48
(19) Из вопроса ТС следует. Более цивильный способ - не тягать множество плоских ТЗ из сторонней базы, а взять там всё один раз и развернуть у себя. Далее можно как угодно порезать дерево на ТЗ и делать запросы, если конечная цель именно в этом.
21 eks1985
 
09.02.17
18:32
(0) Пакетный запрос пробовал? Если в первом запросе прочитать из внешнего источника и создать вт, а во втором запросе пакета из нее прочититать
22 AlterMann
 
10.02.17
11:17
(20) не совсем. Задача в периодической подкачке данных из сторонней базы в 1с, так что такой метод не подойдет.
23 AlterMann
 
10.02.17
11:18
(21) По всякому пробовал. Пакетный запрос тоже выдает ошибку получения данных из нескольких источников.
24 KAO111
 
10.02.17
12:07
(23) зачем мучаться, в СКД все работает. Причем на SQL оптимальный запрос.
25 AlterMann
 
10.02.17
12:44
(24) Можно попросить привести пример отчета СКД?
26 KAO111
 
10.02.17
13:03
https://yadi.sk/d/XRpIWZs03DmskJ

запрос к внешнему источнику конечно надо будет изменить ))
27 AlterMann
 
10.02.17
14:24
(26) Спасибо за помощь, пожалуй так и сделаю.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс