Внешние источники данных в 1С 8.2.14.533

0. Олег Филиппов (comol) 2689 03.10.11 14:03 Сейчас в теме
Читая анонсы обновлений 1С, задумывались, какая это замечательная возможность? Хотите использовать в своих решениях? В статье изложен опыт практического использования внешних источников данных, возможно, это "совсем не то, чего мы все так хотели".

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

Комментарии
1. Александр Тарасов (tarasoff) 03.10.11 14:03 Сейчас в теме
А как создать подключение, если сервер 1С стоит на Linux и необходимо соединиться с базой на MS SQL?
2. Андрей Крутских (K_A_O) 481 03.10.11 14:51 Сейчас в теме
Старый вариант через ADO не требует изменения конфигурации, но вот интересна скорость получения данных.
По сравнению с перебором в RecordSet и по сравнению с загрузкой с помощью компоненты GameWithFire.
olga_kozyreva; sumaueev; +2 Ответить 3
3. Ийон Тихий (cool.vlad4) 41 03.10.11 14:55 Сейчас в теме
(2) Тоже интересно, но в любом случае -на nix серверах ADO и тем более на серверах GameWithFire, не взлетят...
4. Олег Филиппов (comol) 2689 03.10.11 15:45 Сейчас в теме
(1) tarasoff, в linux вроде ест сервис unixodbc его нужно устанавливать и настраивать... далее уже через него подключаться.
5. Олег Филиппов (comol) 2689 03.10.11 15:46 Сейчас в теме
(3) cool.vlad4, А в том то и штука что ADO не используется и даже OLEDB не используется. 1C взяли ниже уровень... наверное как раз чтобы под *nix работало... но как работает unixodbc это уже другой вопрос....
6. Олег Филиппов (comol) 2689 03.10.11 15:48 Сейчас в теме
(2) K_A_O, С учетом того что для работы через ADO в запросе сперва нужно выгрузить данные в таблицу значений, а потом во временную таблицу работает конечно быстрее... вот только гибкости при этом такой нет...
7. Ийон Тихий (cool.vlad4) 41 03.10.11 15:58 Сейчас в теме
(5) Мы и не говорили, что используется, просто всех интересует сравнение скорости, но на самом деле лучше и проще, чтобы каждый для своей задачи проверил и сделал выбор.(ODBC там используется, если про то речь)
8. Ийон Тихий (cool.vlad4) 41 03.10.11 16:02 Сейчас в теме
(5) Вы просто подумали, что 3 я адресовал вам, нет он был адресован K_A_O, где я совственно и подчеркнул, чем Внешние источники лучше ADO и компоненты(и я не заметил, это в статье есть?)
9. Олег Филиппов (comol) 2689 03.10.11 16:03 Сейчас в теме
(7) cool.vlad4, на самом деле лучше если бы 1С "до ума" это довели и не заставляли нас мучаться... был бы во франче написал бы им прямо в суппорт. Вообще не дело ни с временными таблицами ни с другими данными соединять нельзя... прямо такое чувство что не доделали то что хотели...
10. Александр Тарасов (tarasoff) 03.10.11 16:33 Сейчас в теме
Я пробовал делать внешнее соединение, если сервер стоит на linux, но так и не довёл до конца (нет времени). Только путем проб и ошибок, можно понять как с этим работать, т.к. в 1с нет примеров как правильно написать строку подключения к Базе, использую unixodbc.
11. Олег Филиппов (comol) 2689 03.10.11 16:38 Сейчас в теме
(10) tarasoff, так там "..." кнопка есть в подключении. Я про неё писал вроде. Под Linux правда не знаю отработает это или нет...
12. Александр Тарасов (tarasoff) 03.10.11 16:41 Сейчас в теме
(11) comol, Эта кнопка не работает
13. Олег Филиппов (comol) 2689 03.10.11 18:17 Сейчас в теме
(12) tarasoff, ну может вам вот этот сайт http://www.connectionstrings.com/ поможет?
14. Alex AlexX (_iAlex) 04.10.11 15:59 Сейчас в теме
а кто-то реально в жизни пробовал ?? Чтение данных это замечательно, жалко что нет операций вставки и удаления :(
15. Олег Филиппов (comol) 2689 04.10.11 16:31 Сейчас в теме
(14) _iAlex, Так я вроде в реальной жизни использую :)... с чтением там тоже проблемы... те что я описал...
16. Ийон Тихий (cool.vlad4) 41 05.10.11 13:49 Сейчас в теме
Да попробовал я эту вещь и тоже нифига не понял, а зачем оно надо? видимо разработчики позаботились о том, <sarcasm> что всех очень мучило - чтение прайс листов на сервере</sarcasm> Надеюсь они доведут идею до логического конца....
17. Александр Орефков (orefkov) 1446 05.10.11 14:50 Сейчас в теме
Имхо лучше бы 1С тупо стырила из 1С++ код ODBCDataBase и ODBCRecordset.
Вот это бы было дело. А так - фигня какая-то получилась.
Это надо же придумать - описывать состав ВНЕШНЕГО источника данных в конфигурации.
А на лету подключится к произвольному источнику данных (для чего в свое время MS и создавала ODBC) - низзя.
ybatiaev; sheriff_ibiza; C4H9O2N; sound; K_A_O; fishca; +6 Ответить 2
18. Сергей Рудаков (fishca) 1039 05.10.11 14:55 Сейчас в теме
(17) снегопат как поживает, не скоро увидим выход в свет?
19. Александр Орефков (orefkov) 1446 05.10.11 14:58 Сейчас в теме
(18)
Вопросы по Снегопату пжста в его форум. Там на все готов ответить.
20. Олег Филиппов (comol) 2689 05.10.11 18:11 Сейчас в теме
(17) orefkov, Так "на лету" если нужно - подключайтесь через ADO без проблем... Как я понял весь смысл как раз в описании источника в конфигурации - чтобы можно было в конструкторе запросов использовать, и разименовывать как нравится... этакий аналог LinQ :)
21. Ийон Тихий (cool.vlad4) 41 05.10.11 18:15 Сейчас в теме
(20) на LINQ это совсем не похоже.
22. Ян Войцик (Yan-1986@mail.ru) 05.10.11 19:05 Сейчас в теме
23. Олег Филиппов (comol) 2689 06.10.11 01:00 Сейчас в теме
(21) cool.vlad4, Ну ооочень отдалённо же что-то общее есть :)))
24. Александр Орефков (orefkov) 1446 06.10.11 01:11 Сейчас в теме
25. Сергей Рудаков (fishca) 1039 06.10.11 09:25 Сейчас в теме
(19) на форуме не нашел ответа на вопрос по срокам выхода, к сожалению. :(
26. Александр Орефков (orefkov) 1446 06.10.11 09:27 Сейчас в теме
(25)
Ну так спроси, на то и форум. (Сорри за оффтоп).
27. Сергей Рудаков (fishca) 1039 06.10.11 09:30 Сейчас в теме
(26) За меня уже спросили, ответа в той теме нет от тебя ;) Зарегистрироваться не понял как. В гостевом форуме спросил :)
28. Илья Фамилия (Murom) 06.10.11 12:13 Сейчас в теме
А мне так не хватало записи в базу MySQL. Думал доделают ух оторвусь... но видно не судьба :(
29. Ийон Тихий (cool.vlad4) 41 06.10.11 12:31 Сейчас в теме
(23) ничего, абсолютно ничего. Linq - это вывод типов (которого в 1С в принципе нет, да и не нужен по большому счету), это лямбда-выражения(грубо говоря анонимные функции), которых тоже нет, и самое главное в совокупности это работа практически с любой коллекцией (главное чтоб был интерфейс IQueryable), что позволяет работать как с AD, как с Ms SQL, как с xml и даже с Facebook, (потому как сама технология расширяема) и ей по барабану какой провайдер. Я честно слово перечитал статью еще раз и вообще не увидел ничего похожего на Linq. Даже на Linq to Sql.
PS Я помню кто-то сравнивал Linq и язык запросов от 1С, что якобы 1С придумала это раньше. Но ничего подобного. Linq коренным образом отличается и от языка запросов 1С, как по сути, так и по форме.
30. Ийон Тихий (cool.vlad4) 41 06.10.11 12:34 Сейчас в теме
(28) А что мешает сделать это сейчас, - обычными методами?
31. Илья Фамилия (Murom) 06.10.11 12:44 Сейчас в теме
(30) Да сейчас работет через ADODB.Connection и ADODB.Recordset, но приходиться писать большие объемы данных и все это не очень быстро. Хочется чтоб работало быстрее.
32. Олег Филиппов (comol) 2689 06.10.11 15:04 Сейчас в теме
(24) orefkov, Ну так и клиента 1С на линуксе есть... просто нужно код выполнять в клиентском модуле... на винде ADO везде есть...
33. Олег Филиппов (comol) 2689 06.10.11 15:07 Сейчас в теме
(29) cool.vlad4, По сути Linq язык описания структуры данных для удобства работы с ней из программного кода. Внешние источники данных нужны для той же цели. Вот с этой точки зрения посмотрите... создавались они для одного и того же. Просто подходы у 1с и microsoft очень разные :)
34. Олег Филиппов (comol) 2689 06.10.11 15:08 Сейчас в теме
(31) Murom, ИХМО если речь об обмене с сайтом наверное надо задуматься о локальной копии mysql и настройке репликации...
35. Семен Слепаков (sa1m0nn) 21 07.10.11 08:43 Сейчас в теме
Ну вот. Испортил себе настроение чтением объективной оценки нового мёртворожденного механизма :(.
36. Илья Фамилия (Murom) 07.10.11 10:11 Сейчас в теме
(34) Хм.. спасибо как-то не думал про такой вариант. Надо попробовать на досуге.
37. Олег Филиппов (comol) 2689 07.10.11 10:19 Сейчас в теме
(35) sa1m0nn, Вы то прочитав настроение себе испортили... :))
38. Andrey Ivanov (pomestnik) 47 19.10.11 14:45 Сейчас в теме
Очень жалко что нельзя изменять внешние источники данных...
39. sound sound (sound) 519 19.11.11 14:51 Сейчас в теме
40. Юлия Петрова (petrovaUL) 18.01.12 08:16 Сейчас в теме
41. Владимир (Владимир1717) 03.02.12 12:24 Сейчас в теме
А какие параметры указывать в полях AppName и Рабочая станция при работе с конструктором строки подключения? При всех вариантах: имя базы и пустота во всех сочетаниях, ответ один: "Возможно, заполнены не все параметры или их значение не допустимо". Если без конструктора, а в поле строки указываю стандартное скулевое: DRIVER={SQL Server};SERVER=[имя сервера];UID=[логин];PWD=[пароль];APP=вот здесь забил [upp] и прокатило;DATABASE=[имя базы SQL].
42. Punker (Punker) 16.02.12 09:48 Сейчас в теме
Спасибо автору за статью, давно искал документацию по тому что это за объект и как его готовить.
43. apalon_pss (pavel_pss) 16.02.12 14:19 Сейчас в теме
спасибо, помогло, полезная статья
44. Игорь Маркин (Elgrego) 120 16.02.12 15:49 Сейчас в теме
Насколько я понимаю плюсы в следующем:
1. Все запросы к внешним данным выполняются на сервере (в случае клиент-серверной архитектуры), что избавляет от настройки клиентских машин (у нас они измеряются сотнями);
2. Возможность использования конструктора для написания запроса к внешнему источнику данных;
3. Если есть различные источники данных с одинаковой структурой и несколько баз 1С (например в филиалах), то можно не меняя кода 1С просто подключить каждую базу 1С к своему источнику данных в тонком клиенте.
4. Возможность использования результата в СКД, что дает возможность построить отчет не написав не строчки кода, используя различные консоли, которые генерируют отчеты на СКД.
45. Олег Филиппов (comol) 2689 16.02.12 19:11 Сейчас в теме
(44) Elgrego,
1) а вот если у вас на 1-ом локальном компьютере стоит какой-нибудь InterBase или ещё что-то доисторическое... нужно драйвер его поставить на сервер... а сервер 64 разрядный... вообщем для кого "+" а для кого "-". "-" ИХМО будет чаще

2) Собственно конструктором можно и так пользоваться... ТЗ, её во временную таблицу и пожалуйста

3) А вот нет... у Вас же всё на сервере работает :). А если источники данных - файлы Access, а сервер работает под учеткой с ограниченными правами :).

4) не могу не согласится... да, теоретически возможно написать отчет не написав ни строчки кода... пожалуй единственный "+". Но учитывая (1) (2) и (3) едва ли чего-то мы им достигнем...
46. Татьяна Арсенян (Tanya_o) 12 20.03.12 17:55 Сейчас в теме
Статья хорошая. Может вы уже разобрались во всех новшествах работы с этим чудо объектом конфигурации.
У меня такой вопросик, извиняюсь что пишу тут но очень очень нужна помощь.
При переходе с 14 на 15 платформу выходит ощибка.

"ВнешнийИсточникДанных.OKTELL.Таблица.dbo_A_Stat_Connections_1x1.Поле.Id: Тип поля ключа таблицы с объектными данными может быть только одним из примитивных типов."

Что делать???
Если меняешь тип на строку. Нарушается работа отчетов связанных с этим внешним источником данных.
47. Олег Филиппов (comol) 2689 20.03.12 19:10 Сейчас в теме
Сделайте источником данных запрос, а в запросе как-нить CONVERT если у вас там тип приводится к примитивному... ну а если вы ключем хотите сделать не примитивный тип... ну.. ну вы понимаете :)
48. Denis Zuev (Varies) 28.05.12 07:30 Сейчас в теме
Пару месяцев назад уже столкнулся с внешними данными. Задача стояла в УТ3(11) получать данные из SQL по артикулу продукта. Сначала хотел быстренько кинуть внешние данные в запрос печати, да не тут то было... пришлось дописать клиентсерверные модули чтобы хоть как-то облегчить код в модулях документов.

Не так давно в дистрибутиве 1С появилась конфигурация Фабрика отчетов (Report factory) рекомендую всем стащить с неё модуль инициализации :)
lefthander; +1 Ответить
49. Erbolat Akkusov (Banzai79) 15.01.13 16:10 Сейчас в теме
а сейчас 2013 году можно не изменяя конфигурацию добавлять Внешний Источник Данных, с помощью внешней обработки?
50. Олег Филиппов (comol) 2689 15.01.13 16:35 Сейчас в теме
51. Игорь Исхаков (Ish_2) 960 24.01.13 14:58 Сейчас в теме
(0) Попробовал использовать базу Oracle как "ВнешнийИсточникДанных" полгода назад - получил такие эффекты , что со страхом откатился на на обычное ADO-соединение. А ты не пробовал ?
52. Александр Павлов (qwind) 18.04.13 19:03 Сейчас в теме
Полезная статья с примером, очень кстати пришлась.
53. Kembrik (kembrik) 19.09.13 18:25 Сейчас в теме
Уж не знаю где спрашивать, попытаю счастья тут :)
Хочу отойти от подключения по COM и использования UUID = COMОбъект.NewObject("УникальныйИдентификатор",Уник);
Сразу же захотелось попытаться подключить SQL базу 1С в качестве внешнего источников данных и "искать" в ней по GUID данные с целью сравнения на соответствие.

Ну и почти сразу же столкнулся с тем, что в SQL-табличке поле _IDRRef - бинарное. В строковой его транслировать его конечно можно, например CAST , потом "Переставить" в привычный для 1C порядок - но это все можно сделать на "далекой" SQL стороне, чего делать не хотелось бы. Отсюда вопрос, как можно заставить конструкцию


ТекГУИД=Строка(ТекСсылка.УникальныйИдентификатор());


	"ВЫБРАТЬ
		|	dbo__Reference57._IDRRef,
		|	dbo__Reference57._Code,
		|	dbo__Reference57._Description,
		|	dbo__Reference57.Представление
		|ИЗ
		|	ВнешнийИсточникДанных.Buh_utt.Таблица.dbo__Reference57 КАК dbo__Reference57
		|ГДЕ
		|	dbo__Reference57._IDRRef = &ТекГУИД";
//
...Показать Скрыть


работать ((
54. Олег Филиппов (comol) 2689 19.09.13 20:08 Сейчас в теме
(53) kembrik, Это баян уже. Вам к извращенцам на SQL.ru - там уже давно "рецепт придуман", к примеру такой:
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=895717&msg=13053424... Но мой вам совет "не вступать на эту извилистую дорожку". SQL имеет смысл когда вы переносите регулярно тонны данных, но тогда надо юзать MS IS и отбор GUID в GUID, в вашем случае лучше правда COM или специализированные средства (WS или .Net компоненты).
55. Kembrik (kembrik) 19.09.13 23:37 Сейчас в теме
(54), comol, да понятно что есть проверенные механизмы - но казалось бы, удобно то как могло бы быть. БД - вот они, рядышком, на одном и том же SQL сервере, только руку протяни, да поменяй строку подключения в зависимости от префикса ИБ. "Нашим" хочется отчеты строить шустренько, собирая номенклатуру из одного места, а "цену" из другого, и тому подобное. Придется, видимо, добавлять собаке пятую ногу
56. Олег Филиппов (comol) 2689 20.09.13 09:11 Сейчас в теме
(55) kembrik, Если отчеты надо шустренько то вам прямой дорогой в сторону DWH. Оно как раз для этого и делается. Когда номенклатура в одном месте, а цена в другом это Best Practice обычно - MDM решения называется :). Далее OLAP. Ну или QlickView...
57. Евгений Мадонов (madonov) 142 22.12.16 03:35 Сейчас в теме
Появилась необходимость получить информацию из внешнего источника данных (SQL 2008).

Источник добавлен, и вроде бы всё хорошо, НО!
Некоторые таблицы содержат в себе колонку с именем "Index" (int), при упоминании этой колонки в запросе он перестает работать, а без неё никак, она ключевая.

Платформа 8.2.19.90.


Есть у кого варианты как это можно исправить?
Прикрепленные файлы:
58. Евгений Мадонов (madonov) 142 22.12.16 06:44 Сейчас в теме
Как я понял, INDEX это служебное имя, для корректного использования в SQL его заключают в квадратные скобки, но в 1С этот номер не проходит =( .


Попробовал получить через представление - все равно не получается.
Прикрепленные файлы:
59. Евгений Мадонов (madonov) 142 23.12.16 02:32 Сейчас в теме
1. Создать в таблице новую колонку с новым именем (я выбрал INDEX_GUID)
2. В спецификации вычисляемого столбца указать ([index])

Таким образом мы получаем копию колонки INDEX, но с читаемым именем.

3. Обращаемся к колонке INDEX_GUID через источник данных - всё работает!
Прикрепленные файлы:
60. Konstantin Korolyoff (kos) 33 21.03.17 05:35 Сейчас в теме
платформа 8.3.8.2088
при подключении к 1с77 для полей "Строка(Х), Х>100" выдает сообщение

ВнешнийИсточникДанных Поле XXX: Для строки фиксированной длины запрещено задавать длину строки более 100 символов

Что делать ?
Прикрепленные файлы: