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

03.10.11

Интеграция - Внешние источники данных

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

Релиз 8.2.14.533  - наконец-то более-менее стабильный вариант 14-го релиза платформы. Наконец-то представился случай испытать в деле замечательную возможность - "внешние источники данных".

Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С, и при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес-приложений, с твердой уверенностью скажет вам, что ему нравится больше всего в 1С. Конечно конструктор запросов - самый удобный и продуманный механизм написания запросов для получения данных из реляционных структур, который я лично когда-либо встречал.  А теперь 1С нам предоставили такую замечательную возможность использовать его не только с 1С, но и с любыми другими таблицами. Вот только в эту "бочку мёда" насыпана куча "ложек дёгтя". Обо всём по порядку:

1) Настройка и использование - без "танцев с бубном" не получится 

a) Добавляете внешний источник данных - вроде ничего сложного.

б) Ставите галочку "Выбрать из списка" - обязательно - это нужно, чтобы проверить работоспособность уже вначале, и избавить себя от лишних заморочек.

в)



- обязательно нажимаем "..." - подключение именно ODBC. Не OLEDB как мы все привыкли, а на уровень ниже

г)


А вот здесь будьте ОЧЕНЬ ВНИМАТЕЛЬНЫ.
Это драйвер ODBC - в случае использования клиент-серверной версии он должен обязательно быть на сервере. Если вы ведёте разработку на одной системе, а рабочая версия на другой (как это обычно бывает) убедитесь что вас не ждут сюрпризы. Странная рекомендация, но выбирайте самый древний или самый общий драйвер в случае, если вас не особо заботит скорость и за пределы возможностей стандарта SQL92 вы выходить не намерены. Это обеспечит вам лучшую совместимость. Например для SQL Server 2008 лучшим драйвером будет SQL Server Native Client 11, но рекомендую выбирать просто SQL Server, иначе этот самый native client придётся устанавливать либо на сервер, либо на все клиентские машины (в случае использования файловой версии), а выигрыша особого для простых задач он не даст.


д) Стандартные диалоги выбора Сервера


и базы данных


е) На вопрос сохранения пароля рекомендую ответить "да", иначе так и не получится это дело запустить.

ж) Выбираете таблицу и реквизиты... замечательная возможность - её можно сразу же переименовать так как вам нравится (и реквизиты тоже), при этом в свойствах у вас будут отображаться названия полей источника данных


з) А теперь запускаете, открываете конструктор запросов - выбираете тупо все записи из таблицы и ОПА - ошибка. Что делать? Если у вас управляемый интерфейс  - заглянуть в меню сервис, а если обычный... 
Я лично использовал вот такой код:

Параметры = ВнешниеИсточникиДанных.DAX.ПолучитьОбщиеПараметрыСоединения();
Параметры.АутентификацияСтандартная = Истина;
Параметры.ИмяПользователя = "sa";
Параметры.Пароль = "pas";
Параметры.СтрокаСоединения = "DRIVER={SQL Server};SERVER=servet;UID=sa;PWD=;DATABASE=database";
Параметры.СУБД = "MSSQLServer";

ВнешниеИсточникиДанных.DAX.УстановитьОбщиеПараметрыСоединения(Параметры);
ВнешниеИсточникиДанных.DAX.УстановитьПараметрыСоединенияПользователя(ИмяПользователя(), Параметры);
ВнешниеИсточникиДанных.DAX.УстановитьПараметрыСоединенияСеанса(Параметры);

ВнешниеИсточникиДанных.DAX.УстановитьСоединение();


Может каких-то кусков и не нужно, но это работает. Выполнить код нужно ОДИН РАЗ. После чего будет нормально подключаться... мистика конечно - зачем это было нужно не понятно...

2) Источники данных только для чтения
Да, чудес не бывает... но иногда так хочется....

3) НЕЛЬЗЯ ИХ ИСПОЛЬЗОВАТЬ ВМЕСТЕ С ВНУТРЕННИМИ ИСТОЧНИКАМИ ДАННЫХ
Меня лично этот факт убил наповал


Как же так.... то, чего так ждали и уже представляли и облизывались, как мы сейчас в одном запросе соединим наши данные с 1С-кой свернём - сгруппируем, вставим в отчет, а не тут-то было...

Но, естественно, опытных людей это не останавливает... какая мысль пришла в голову? Правильно - временные таблицы:

4) НЕЛЬЗЯ ИХ ИСПОЛЬЗОВАТЬ ВМЕСТЕ С ВРЕМЕННЫМИ ТАБЛИЦАМИ


А вот это уже не похоже на технологические трудности, а очень смахивает на то что нам хотят "чтобы жизнь раем не казалась" сделать :).

5) Можно использовать только в соединениях СКД
Для тех кто не знает - это в СКД на вкладке "Связи наборов данных". Часто вы ими пользуетесь? Удобно? Видимо так нас хотят принудить к использованию их чаще. Вот только там есть колонка "Условие связи" и "Параметр связи". Ни в одной типовой конфигурации не нашел примера их использования, в документации и у Хрусталевой тоже как-то всё не прозрачно. Кто-нибудь сможет мне объяснить как работает "условие связи"? Если там написать РеквизитИсточника = РевизитПриемника это не работает. Конечно условие можно записать в поле "Выражение" - в большинстве случаев этого хватает... вот только как-то не очень просто получается.

Итого ранее эта задача решалась где-то так:

Функция ИнициализироватьИсточникДанных()

    ДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[5].Значение;
    ДатаКон = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[4].Значение;
    Если ДатаКон > '20100101' Тогда
        ДатаКон = '20100101';
    КонецЕсли;

    КЧ = Новый КвалификаторыЧисла(15,2);
    КС = Новый КвалификаторыСтроки(255);

    МассивЧисло = Новый Массив();
    МассивЧисло.Добавить(Тип("Число"));

    МассивСтрока = Новый Массив();
    МассивСтрока.Добавить(Тип("Строка"));

    МассивДата = Новый Массив();
    МассивДата.Добавить(Тип("Дата"));

    //В таблицу будем заполнять бухгалтерскую себестоимость
    ТипЧисло = Новый ОписаниеТипов(МассивЧисло,,КЧ);
    ТипСтрока = Новый ОписаниеТипов(МассивСтрока,,КС);
    ТипДата = Новый ОписаниеТипов(МассивДата);

    //таблица для загрузки данных из SQL
    ТЗ = Новый ТаблицаЗначений();
    ТЗ.Колонки.Добавить("НоменклатураКод", ТипСтрока);
    ТЗ.Колонки.Добавить("Qnty", ТипЧисло);
    ТЗ.Колонки.Добавить("Период", ТипДата);

    ТЗ.Индексы.Добавить("Период");

    //Подключаемся к SQL
    СтрокаПодключения = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Pwd=;Data Source=;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=Reports";
    Connection  = Новый COMОбъект("ADODB.Connection");
    Command  = Новый COMОбъект("ADODB.Command");
    RecordSet  = Новый COMОбъект("ADODB.RecordSet");
    Дата = "";
    Попытка
        Connection.Open(СокрЛП(СтрокаПодключения));
        Command.ActiveConnection   = Connection;
        Command.CommandText = "Select * from PH where period >= '" + Строка(Формат(ДатаНач, "ДФ=ггггММдд")) + "' and period <= '" +  Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + "'";
        RecordSet = Command.Execute();
        RecordSet.MoveFirst();
    Исключение
        Возврат ТЗ;
    КонецПопытки;

    Пока RecordSet.EOF = Ложь Цикл
        Строка = ТЗ.Добавить();
        Строка.НоменклатураКод = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value;
        Строка.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
        Строка.Период = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
        RecordSet.MoveNext();
    КонецЦикла;

    Запрос = Новый Запрос();
    ВрТаблица = Новый МенеджерВременныхТаблиц();
    Запрос.МенеджерВременныхТаблиц = ВрТаблица;
    Запрос.УстановитьПараметр("врТаблицаДанных",  ТЗ);
    Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
    Запрос.Текст = "ВЫБРАТЬ
                | врТаблицаДанных.НоменклатураКод,
                | врТаблицаДанных.Qnty,
                | врТаблицаДанных.Период
                |ПОМЕСТИТЬ ТаблицаДанных
                |ИЗ
                | &врТаблицаДанных КАК врТаблицаДанных
                |ГДЕ
                | врТаблицаДанных.Период >= &ДатаНач
                | И врТаблицаДанных.Период <= &ДатаКон";
    Запрос.Выполнить();
    ТЗ = Неопределено;

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = ВрТаблица;
    Запрос.Текст = "Здесь запрос с участием верменной таблицы";

    Результат = Запрос.Выполнить();
    Возврат Результат;

КонецФункции

ВнешнийНабор = ИнициализироватьИсточникДанных();
НаборДанных = Новый Структура();
НаборДанных.Вставить("ТаблицаSQL", ВнешнийНабор);
ТиповыеОтчеты.СформироватьТиповойОтчет(ЭтотОбъект, Результат, ДанныеРасшифровки, ВыводВФормуОтчета, НаборДанных);


 

Собственно строчек кода немного и они достаточно стандартны... при этом можно пользоваться полным функционалом конструктора запросов, а в СКД отдать только функцию КОМПОНОВКИ ДАННЫХ

Но на вид чуть, конечно, не так красиво... да и выгрузка в таблицу значений каждый раз - нужно код писать и проверять, не ошибся ли в названии реквизитов... а то, что нам дали в 1С, выглядит как-то половинчато. Я ещё не определился, чем удобнее пользоваться. Вы решайте, и пишите о ваших решениях, и что вас к ним подтолкнуло.

См. также

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9156    9    8    

10

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22350    18    1    

21

Автоматическая многопоточная выгрузка данных 1С 8.3 в БД Clickhouse и MS SQL (для работы с данными 1С в BI-системах)

Внешние источники данных Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматизированной выгрузки данных из 1С 8.3, а также MS Excel в базу данных ClickHouse, а также в Microsoft SQL для работы с данными 1С в Yandex Datalens, Visiology, Apache Superset (и не только) - "Экстрактор данных 1С в BI". Решение отлично работает со всеми типовыми (и не только) конфигурациями 1С 8.3 для управляемых форм. Gозволяет автоматизировать работу бизнес-аналитика по ежедневной выгрузке данных из 1С в БД ClickHouse для последующей работы с этой БД в Yandex Datalens/ Система полностью автоматизирует работу с хранилищем данных в БД Clickhouse/MS SQL. Не надо быть программистом, чтобы одной кнопкой получать любые данные из 1С в Вашей BI-системе

230000 руб.

15.11.2022    12912    11    47    

28

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    48628    96    159    

86

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81471    128    123    

146

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    29979    20    31    

21
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tarasoff 03.10.11 14:03 Сейчас в теме
А как создать подключение, если сервер 1С стоит на Linux и необходимо соединиться с базой на MS SQL?
4. comol 5046 03.10.11 15:45 Сейчас в теме
(1) tarasoff, в linux вроде ест сервис unixodbc его нужно устанавливать и настраивать... далее уже через него подключаться.
2. K_A_O 538 03.10.11 14:51 Сейчас в теме
Старый вариант через ADO не требует изменения конфигурации, но вот интересна скорость получения данных.
По сравнению с перебором в RecordSet и по сравнению с загрузкой с помощью компоненты GameWithFire.
olga_kozyreva; sumaueev; +2 Ответить
3. cool.vlad4 2 03.10.11 14:55 Сейчас в теме
(2) Тоже интересно, но в любом случае -на nix серверах ADO и тем более на серверах GameWithFire, не взлетят...
5. comol 5046 03.10.11 15:46 Сейчас в теме
(3) cool.vlad4, А в том то и штука что ADO не используется и даже OLEDB не используется. 1C взяли ниже уровень... наверное как раз чтобы под *nix работало... но как работает unixodbc это уже другой вопрос....
7. cool.vlad4 2 03.10.11 15:58 Сейчас в теме
(5) Мы и не говорили, что используется, просто всех интересует сравнение скорости, но на самом деле лучше и проще, чтобы каждый для своей задачи проверил и сделал выбор.(ODBC там используется, если про то речь)
9. comol 5046 03.10.11 16:03 Сейчас в теме
(7) cool.vlad4, на самом деле лучше если бы 1С "до ума" это довели и не заставляли нас мучаться... был бы во франче написал бы им прямо в суппорт. Вообще не дело ни с временными таблицами ни с другими данными соединять нельзя... прямо такое чувство что не доделали то что хотели...
8. cool.vlad4 2 03.10.11 16:02 Сейчас в теме
(5) Вы просто подумали, что 3 я адресовал вам, нет он был адресован K_A_O, где я совственно и подчеркнул, чем Внешние источники лучше ADO и компоненты(и я не заметил, это в статье есть?)
6. comol 5046 03.10.11 15:48 Сейчас в теме
(2) K_A_O, С учетом того что для работы через ADO в запросе сперва нужно выгрузить данные в таблицу значений, а потом во временную таблицу работает конечно быстрее... вот только гибкости при этом такой нет...
10. tarasoff 03.10.11 16:33 Сейчас в теме
Я пробовал делать внешнее соединение, если сервер стоит на linux, но так и не довёл до конца (нет времени). Только путем проб и ошибок, можно понять как с этим работать, т.к. в 1с нет примеров как правильно написать строку подключения к Базе, использую unixodbc.
11. comol 5046 03.10.11 16:38 Сейчас в теме
(10) tarasoff, так там "..." кнопка есть в подключении. Я про неё писал вроде. Под Linux правда не знаю отработает это или нет...
12. tarasoff 03.10.11 16:41 Сейчас в теме
(11) Эта кнопка не работает
13. comol 5046 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 5046 04.10.11 16:31 Сейчас в теме
(14) _iAlex, Так я вроде в реальной жизни использую :)... с чтением там тоже проблемы... те что я описал...
16. cool.vlad4 2 05.10.11 13:49 Сейчас в теме
Да попробовал я эту вещь и тоже нифига не понял, а зачем оно надо? видимо разработчики позаботились о том, <sarcasm> что всех очень мучило - чтение прайс листов на сервере</sarcasm> Надеюсь они доведут идею до логического конца....
17. orefkov 1152 05.10.11 14:50 Сейчас в теме
Имхо лучше бы 1С тупо стырила из 1С++ код ODBCDataBase и ODBCRecordset.
Вот это бы было дело. А так - фигня какая-то получилась.
Это надо же придумать - описывать состав ВНЕШНЕГО источника данных в конфигурации.
А на лету подключится к произвольному источнику данных (для чего в свое время MS и создавала ODBC) - низзя.
ybatiaev; shaykhelov; C4H9O2N; sound; K_A_O; fishca; +6 Ответить
18. fishca 1254 05.10.11 14:55 Сейчас в теме
(17) снегопат как поживает, не скоро увидим выход в свет?
19. orefkov 1152 05.10.11 14:58 Сейчас в теме
(18)
Вопросы по Снегопату пжста в его форум. Там на все готов ответить.
25. fishca 1254 06.10.11 09:25 Сейчас в теме
(19) на форуме не нашел ответа на вопрос по срокам выхода, к сожалению. :(
26. orefkov 1152 06.10.11 09:27 Сейчас в теме
(25)
Ну так спроси, на то и форум. (Сорри за оффтоп).
27. fishca 1254 06.10.11 09:30 Сейчас в теме
(26) За меня уже спросили, ответа в той теме нет от тебя ;) Зарегистрироваться не понял как. В гостевом форуме спросил :)
20. comol 5046 05.10.11 18:11 Сейчас в теме
(17) orefkov, Так "на лету" если нужно - подключайтесь через ADO без проблем... Как я понял весь смысл как раз в описании источника в конфигурации - чтобы можно было в конструкторе запросов использовать, и разименовывать как нравится... этакий аналог LinQ :)
21. cool.vlad4 2 05.10.11 18:15 Сейчас в теме
(20) на LINQ это совсем не похоже.
23. comol 5046 06.10.11 01:00 Сейчас в теме
(21) cool.vlad4, Ну ооочень отдалённо же что-то общее есть :)))
29. cool.vlad4 2 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 5046 06.10.11 15:07 Сейчас в теме
(29) cool.vlad4, По сути Linq язык описания структуры данных для удобства работы с ней из программного кода. Внешние источники данных нужны для той же цели. Вот с этой точки зрения посмотрите... создавались они для одного и того же. Просто подходы у 1с и microsoft очень разные :)
24. orefkov 1152 06.10.11 01:11 Сейчас в теме
32. comol 5046 06.10.11 15:04 Сейчас в теме
(24) orefkov, Ну так и клиента 1С на линуксе есть... просто нужно код выполнять в клиентском модуле... на винде ADO везде есть...
28. Murom 06.10.11 12:13 Сейчас в теме
А мне так не хватало записи в базу MySQL. Думал доделают ух оторвусь... но видно не судьба :(
30. cool.vlad4 2 06.10.11 12:34 Сейчас в теме
(28) А что мешает сделать это сейчас, - обычными методами?
31. Murom 06.10.11 12:44 Сейчас в теме
(30) Да сейчас работет через ADODB.Connection и ADODB.Recordset, но приходиться писать большие объемы данных и все это не очень быстро. Хочется чтоб работало быстрее.
34. comol 5046 06.10.11 15:08 Сейчас в теме
(31) Murom, ИХМО если речь об обмене с сайтом наверное надо задуматься о локальной копии mysql и настройке репликации...
36. Murom 07.10.11 10:11 Сейчас в теме
(34) Хм.. спасибо как-то не думал про такой вариант. Надо попробовать на досуге.
35. sa1m0nn 28 07.10.11 08:43 Сейчас в теме
Ну вот. Испортил себе настроение чтением объективной оценки нового мёртворожденного механизма :(.
37. comol 5046 07.10.11 10:19 Сейчас в теме
(35) sa1m0nn, Вы то прочитав настроение себе испортили... :))
39. sound 535 19.11.11 14:51 Сейчас в теме
38. pomestnik 50 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 289 16.02.12 14:19 Сейчас в теме
спасибо, помогло, полезная статья
44. Elgrego 121 16.02.12 15:49 Сейчас в теме
Насколько я понимаю плюсы в следующем:
1. Все запросы к внешним данным выполняются на сервере (в случае клиент-серверной архитектуры), что избавляет от настройки клиентских машин (у нас они измеряются сотнями);
2. Возможность использования конструктора для написания запроса к внешнему источнику данных;
3. Если есть различные источники данных с одинаковой структурой и несколько баз 1С (например в филиалах), то можно не меняя кода 1С просто подключить каждую базу 1С к своему источнику данных в тонком клиенте.
4. Возможность использования результата в СКД, что дает возможность построить отчет не написав не строчки кода, используя различные консоли, которые генерируют отчеты на СКД.
45. comol 5046 16.02.12 19:11 Сейчас в теме
(44) Elgrego,
1) а вот если у вас на 1-ом локальном компьютере стоит какой-нибудь InterBase или ещё что-то доисторическое... нужно драйвер его поставить на сервер... а сервер 64 разрядный... вообщем для кого "+" а для кого "-". "-" ИХМО будет чаще

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

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

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

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

Что делать???
Если меняешь тип на строку. Нарушается работа отчетов связанных с этим внешним источником данных.
47. comol 5046 20.03.12 19:10 Сейчас в теме
Сделайте источником данных запрос, а в запросе как-нить CONVERT если у вас там тип приводится к примитивному... ну а если вы ключем хотите сделать не примитивный тип... ну.. ну вы понимаете :)
49. Banzai79 15.01.13 16:10 Сейчас в теме
а сейчас 2013 году можно не изменяя конфигурацию добавлять Внешний Источник Данных, с помощью внешней обработки?
50. comol 5046 15.01.13 16:35 Сейчас в теме
51. Ish_2 1104 24.01.13 14:58 Сейчас в теме
(0) Попробовал использовать базу Oracle как "ВнешнийИсточникДанных" полгода назад - получил такие эффекты , что со страхом откатился на на обычное ADO-соединение. А ты не пробовал ?
52. qwind 18.04.13 19:03 Сейчас в теме
Полезная статья с примером, очень кстати пришлась.
53. kembrik 10 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 5046 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 10 19.09.13 23:37 Сейчас в теме
(54), comol, да понятно что есть проверенные механизмы - но казалось бы, удобно то как могло бы быть. БД - вот они, рядышком, на одном и том же SQL сервере, только руку протяни, да поменяй строку подключения в зависимости от префикса ИБ. "Нашим" хочется отчеты строить шустренько, собирая номенклатуру из одного места, а "цену" из другого, и тому подобное. Придется, видимо, добавлять собаке пятую ногу
56. comol 5046 20.09.13 09:11 Сейчас в теме
(55) kembrik, Если отчеты надо шустренько то вам прямой дорогой в сторону DWH. Оно как раз для этого и делается. Когда номенклатура в одном месте, а цена в другом это Best Practice обычно - MDM решения называется :). Далее OLAP. Ну или QlickView...
57. madonov 169 22.12.16 03:35 Сейчас в теме
Появилась необходимость получить информацию из внешнего источника данных (SQL 2008).

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

Платформа 8.2.19.90.


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


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

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

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

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

Что делать ?
Прикрепленные файлы:
61. Andy_sh 20.01.21 20:38 Сейчас в теме
Источники данных только для чтения
- увы, но автор обманул читателей.
Открываем доку на ИТС, например для 8.3.10 и читаем
Для получения доступа к внешним источникам данных используется механизм ODBC. Данные внешних источников данных доступны как для чтения, так и для записи
Оставьте свое сообщение