0. comol 3691 03.10.11 14:03 Сейчас в теме

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

Читая анонсы обновлений 1С, задумывались, какая это замечательная возможность? Хотите использовать в своих решениях? В статье изложен опыт практического использования внешних источников данных, возможно, это "совсем не то, чего мы все так хотели".

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

Комментарии
Избранное Подписка Сортировка: Древо
1. tarasoff 03.10.11 14:03 Сейчас в теме
А как создать подключение, если сервер 1С стоит на Linux и необходимо соединиться с базой на MS SQL?
4. comol 3691 03.10.11 15:45 Сейчас в теме
(1) tarasoff, в linux вроде ест сервис unixodbc его нужно устанавливать и настраивать... далее уже через него подключаться.
2. K_A_O 514 03.10.11 14:51 Сейчас в теме
Старый вариант через ADO не требует изменения конфигурации, но вот интересна скорость получения данных.
По сравнению с перебором в RecordSet и по сравнению с загрузкой с помощью компоненты GameWithFire.
olga_kozyreva; sumaueev; +2 Ответить
3. cool.vlad4 43 03.10.11 14:55 Сейчас в теме
(2) Тоже интересно, но в любом случае -на nix серверах ADO и тем более на серверах GameWithFire, не взлетят...
5. comol 3691 03.10.11 15:46 Сейчас в теме
(3) cool.vlad4, А в том то и штука что ADO не используется и даже OLEDB не используется. 1C взяли ниже уровень... наверное как раз чтобы под *nix работало... но как работает unixodbc это уже другой вопрос....
7. cool.vlad4 43 03.10.11 15:58 Сейчас в теме
(5) Мы и не говорили, что используется, просто всех интересует сравнение скорости, но на самом деле лучше и проще, чтобы каждый для своей задачи проверил и сделал выбор.(ODBC там используется, если про то речь)
9. comol 3691 03.10.11 16:03 Сейчас в теме
(7) cool.vlad4, на самом деле лучше если бы 1С "до ума" это довели и не заставляли нас мучаться... был бы во франче написал бы им прямо в суппорт. Вообще не дело ни с временными таблицами ни с другими данными соединять нельзя... прямо такое чувство что не доделали то что хотели...
8. cool.vlad4 43 03.10.11 16:02 Сейчас в теме
(5) Вы просто подумали, что 3 я адресовал вам, нет он был адресован K_A_O, где я совственно и подчеркнул, чем Внешние источники лучше ADO и компоненты(и я не заметил, это в статье есть?)
6. comol 3691 03.10.11 15:48 Сейчас в теме
(2) K_A_O, С учетом того что для работы через ADO в запросе сперва нужно выгрузить данные в таблицу значений, а потом во временную таблицу работает конечно быстрее... вот только гибкости при этом такой нет...
10. tarasoff 03.10.11 16:33 Сейчас в теме
Я пробовал делать внешнее соединение, если сервер стоит на linux, но так и не довёл до конца (нет времени). Только путем проб и ошибок, можно понять как с этим работать, т.к. в 1с нет примеров как правильно написать строку подключения к Базе, использую unixodbc.
11. comol 3691 03.10.11 16:38 Сейчас в теме
(10) tarasoff, так там "..." кнопка есть в подключении. Я про неё писал вроде. Под Linux правда не знаю отработает это или нет...
12. tarasoff 03.10.11 16:41 Сейчас в теме
(11) Эта кнопка не работает
13. comol 3691 03.10.11 18:17 Сейчас в теме
(12) tarasoff, ну может вам вот этот сайт http://www.connectionstrings.com/ поможет?
22. Yan-1986@mail.ru 05.10.11 19:05 Сейчас в теме
48. Varies 28.05.12 07:30 Сейчас в теме
Пару месяцев назад уже столкнулся с внешними данными. Задача стояла в УТ3(11) получать данные из SQL по артикулу продукта. Сначала хотел быстренько кинуть внешние данные в запрос печати, да не тут то было... пришлось дописать клиентсерверные модули чтобы хоть как-то облегчить код в модулях документов.

Не так давно в дистрибутиве 1С появилась конфигурация Фабрика отчетов (Report factory) рекомендую всем стащить с неё модуль инициализации :)
lefthander; +1 Ответить
14. _iAlex 04.10.11 15:59 Сейчас в теме
а кто-то реально в жизни пробовал ?? Чтение данных это замечательно, жалко что нет операций вставки и удаления :(
15. comol 3691 04.10.11 16:31 Сейчас в теме
(14) _iAlex, Так я вроде в реальной жизни использую :)... с чтением там тоже проблемы... те что я описал...
16. cool.vlad4 43 05.10.11 13:49 Сейчас в теме
Да попробовал я эту вещь и тоже нифига не понял, а зачем оно надо? видимо разработчики позаботились о том, <sarcasm> что всех очень мучило - чтение прайс листов на сервере</sarcasm> Надеюсь они доведут идею до логического конца....
17. orefkov 1957 05.10.11 14:50 Сейчас в теме
Имхо лучше бы 1С тупо стырила из 1С++ код ODBCDataBase и ODBCRecordset.
Вот это бы было дело. А так - фигня какая-то получилась.
Это надо же придумать - описывать состав ВНЕШНЕГО источника данных в конфигурации.
А на лету подключится к произвольному источнику данных (для чего в свое время MS и создавала ODBC) - низзя.
ybatiaev; sheriff_ibiza; C4H9O2N; sound; K_A_O; fishca; +6 Ответить
18. fishca 1127 05.10.11 14:55 Сейчас в теме
(17) снегопат как поживает, не скоро увидим выход в свет?
19. orefkov 1957 05.10.11 14:58 Сейчас в теме
(18)
Вопросы по Снегопату пжста в его форум. Там на все готов ответить.
25. fishca 1127 06.10.11 09:25 Сейчас в теме
(19) на форуме не нашел ответа на вопрос по срокам выхода, к сожалению. :(
26. orefkov 1957 06.10.11 09:27 Сейчас в теме
(25)
Ну так спроси, на то и форум. (Сорри за оффтоп).
27. fishca 1127 06.10.11 09:30 Сейчас в теме
(26) За меня уже спросили, ответа в той теме нет от тебя ;) Зарегистрироваться не понял как. В гостевом форуме спросил :)
20. comol 3691 05.10.11 18:11 Сейчас в теме
(17) orefkov, Так "на лету" если нужно - подключайтесь через ADO без проблем... Как я понял весь смысл как раз в описании источника в конфигурации - чтобы можно было в конструкторе запросов использовать, и разименовывать как нравится... этакий аналог LinQ :)
21. cool.vlad4 43 05.10.11 18:15 Сейчас в теме
(20) на LINQ это совсем не похоже.
23. comol 3691 06.10.11 01:00 Сейчас в теме
(21) cool.vlad4, Ну ооочень отдалённо же что-то общее есть :)))
29. cool.vlad4 43 06.10.11 12:31 Сейчас в теме
(23) ничего, абсолютно ничего. Linq - это вывод типов (которого в 1С в принципе нет, да и не нужен по большому счету), это лямбда-выражения(грубо говоря анонимные функции), которых тоже нет, и самое главное в совокупности это работа практически с любой коллекцией (главное чтоб был интерфейс IQueryable), что позволяет работать как с AD, как с Ms SQL, как с xml и даже с Facebook, (потому как сама технология расширяема) и ей по барабану какой провайдер. Я честно слово перечитал статью еще раз и вообще не увидел ничего похожего на Linq. Даже на Linq to Sql.
PS Я помню кто-то сравнивал Linq и язык запросов от 1С, что якобы 1С придумала это раньше. Но ничего подобного. Linq коренным образом отличается и от языка запросов 1С, как по сути, так и по форме.
33. comol 3691 06.10.11 15:07 Сейчас в теме
(29) cool.vlad4, По сути Linq язык описания структуры данных для удобства работы с ней из программного кода. Внешние источники данных нужны для той же цели. Вот с этой точки зрения посмотрите... создавались они для одного и того же. Просто подходы у 1с и microsoft очень разные :)
24. orefkov 1957 06.10.11 01:11 Сейчас в теме
32. comol 3691 06.10.11 15:04 Сейчас в теме
(24) orefkov, Ну так и клиента 1С на линуксе есть... просто нужно код выполнять в клиентском модуле... на винде ADO везде есть...
28. Murom 06.10.11 12:13 Сейчас в теме
А мне так не хватало записи в базу MySQL. Думал доделают ух оторвусь... но видно не судьба :(
30. cool.vlad4 43 06.10.11 12:34 Сейчас в теме
(28) А что мешает сделать это сейчас, - обычными методами?
31. Murom 06.10.11 12:44 Сейчас в теме
(30) Да сейчас работет через ADODB.Connection и ADODB.Recordset, но приходиться писать большие объемы данных и все это не очень быстро. Хочется чтоб работало быстрее.
34. comol 3691 06.10.11 15:08 Сейчас в теме
(31) Murom, ИХМО если речь об обмене с сайтом наверное надо задуматься о локальной копии mysql и настройке репликации...
36. Murom 07.10.11 10:11 Сейчас в теме
(34) Хм.. спасибо как-то не думал про такой вариант. Надо попробовать на досуге.
35. sa1m0nn 22 07.10.11 08:43 Сейчас в теме
Ну вот. Испортил себе настроение чтением объективной оценки нового мёртворожденного механизма :(.
37. comol 3691 07.10.11 10:19 Сейчас в теме
(35) sa1m0nn, Вы то прочитав настроение себе испортили... :))
39. sound 530 19.11.11 14:51 Сейчас в теме
38. pomestnik 48 19.10.11 14:45 Сейчас в теме
Очень жалко что нельзя изменять внешние источники данных...
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 16.02.12 09:48 Сейчас в теме
Спасибо автору за статью, давно искал документацию по тому что это за объект и как его готовить.
43. pavel_pss 16.02.12 14:19 Сейчас в теме
спасибо, помогло, полезная статья
44. Elgrego 122 16.02.12 15:49 Сейчас в теме
Насколько я понимаю плюсы в следующем:
1. Все запросы к внешним данным выполняются на сервере (в случае клиент-серверной архитектуры), что избавляет от настройки клиентских машин (у нас они измеряются сотнями);
2. Возможность использования конструктора для написания запроса к внешнему источнику данных;
3. Если есть различные источники данных с одинаковой структурой и несколько баз 1С (например в филиалах), то можно не меняя кода 1С просто подключить каждую базу 1С к своему источнику данных в тонком клиенте.
4. Возможность использования результата в СКД, что дает возможность построить отчет не написав не строчки кода, используя различные консоли, которые генерируют отчеты на СКД.
45. comol 3691 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 3691 20.03.12 19:10 Сейчас в теме
Сделайте источником данных запрос, а в запросе как-нить CONVERT если у вас там тип приводится к примитивному... ну а если вы ключем хотите сделать не примитивный тип... ну.. ну вы понимаете :)
49. Banzai79 15.01.13 16:10 Сейчас в теме
а сейчас 2013 году можно не изменяя конфигурацию добавлять Внешний Источник Данных, с помощью внешней обработки?
50. comol 3691 15.01.13 16:35 Сейчас в теме
51. Ish_2 1017 24.01.13 14:58 Сейчас в теме
(0) Попробовал использовать базу Oracle как "ВнешнийИсточникДанных" полгода назад - получил такие эффекты , что со страхом откатился на на обычное ADO-соединение. А ты не пробовал ?
52. qwind 18.04.13 19:03 Сейчас в теме
Полезная статья с примером, очень кстати пришлась.
53. 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 3691 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 19.09.13 23:37 Сейчас в теме
(54), comol, да понятно что есть проверенные механизмы - но казалось бы, удобно то как могло бы быть. БД - вот они, рядышком, на одном и том же SQL сервере, только руку протяни, да поменяй строку подключения в зависимости от префикса ИБ. "Нашим" хочется отчеты строить шустренько, собирая номенклатуру из одного места, а "цену" из другого, и тому подобное. Придется, видимо, добавлять собаке пятую ногу
56. comol 3691 20.09.13 09:11 Сейчас в теме
(55) kembrik, Если отчеты надо шустренько то вам прямой дорогой в сторону DWH. Оно как раз для этого и делается. Когда номенклатура в одном месте, а цена в другом это Best Practice обычно - MDM решения называется :). Далее OLAP. Ну или QlickView...
57. madonov 159 22.12.16 03:35 Сейчас в теме
Появилась необходимость получить информацию из внешнего источника данных (SQL 2008).

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

Платформа 8.2.19.90.


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


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

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

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

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

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

Вакансии

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

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

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

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