Внешние источники данных

Источник: http://itpath.ru/lesson-1c-part-11/

Описание возможностей

Механизм позволяющий из 1С Предприятия обращаться к данным хранящимся вне базы данных 1С. Для внешних данных имеется возможность создания форм, возможно использование их в объектах конфигурации как типообразующих данных. Получаемые данные могут быть 2 типов: Объектные (возможно использование как типа данных в реквизитах), Записи (просто набор записей). Механизм будет удобен при переходе на 1С 8 с другого ПО, в том числе с 1С Предприятие 7.7.

Создание источника

Создание базы MS SQL Server

Запускаем среду работы с MS SQL Server, в этом примере буду использовать MS SQL Server Management Studio. В дереве правой кнопкой на ветке Базы данных — Новая.

После создания БД загрузим подготовленный мной слепок БД: перетащить файл в окно MS SQL Server Management Studio

Выполняем скрипт.

Подключение к источнику внешних данных

Запускаем конфигуратор, в ветке Внешние источники добавляем новый. Внешний источник назовем «Задачи». Конструктором настроим соединение с БД (на скрине приведены параметры моей установки, у Вас они будут отличаться). Выбираем 3 таблицы, созданные скриптом: users, states, tasks.

По завершении получаем:

Посмотрим настройки для таблицы states:

Поле ключа — указывается поле уникального идентификатора (в нашем случае всегда id).

Поле представления — значение из какого поля будет использоваться при отображении (в нашем случае всегда title).

Настроим связи, т.к. данные у нас объектного типа:

Свойства таблиц и реквизитов:

Для всех полей признак использовать Null должен быть снят, иначе при выборе из списка будет отдельно предлагать установить Null.

    • users

        • реквизиты

            • parentid — ВнешнийИсточникДанныхТаблицаСсылка.Задачи.dbousers

            • isfolder — Булево

        • Вкладка иерархия:

            • Поле родителя — parentid

            • Признак незаполненного родителя — Заданное значение

            • Значение незаполненного родителя — 0

    • tasks

        • stateid — ВнешнийИсточникДанныхТаблицаСсылка.Задачи.dbostates

        • userid — ВнешнийИсточникДанныхТаблицаСсылка.Задачи.dbousers

        • done — Булево

Запускаем 1С Предприятие. Перед использованием внешних данных потребуется 1 раз настроить доступ к данным в режиме 1С Предприятие

Откроем задачу:

Надписи имеют названия колонок в БД, что не очень удобно, изменим синонимы на понятные.

Создадим формы редактирования и списка

Запускаем 1С Предприятие, смотрим результат:

Изменим представление задач, чтобы было видно номер и дату, для этого в конфигураторе в таблице Задачи сделаем следующее: Вкладка Данные — Обработчики представления. Корректируем модуль, PresentationFieldsGetProcessing — поля доступные для программного обращения для генерации представления, PresentationGetProcessing — описание правила представления.

Procedure PresentationFieldsGetProcessing(Fields, StandardProcessing)

//Вставить содержимое обработчика.

StandardProcessing = False;

Fields.Add("id");

Fields.Add("date_created");

EndProcedure

Procedure PresentationGetProcessing(Data, Presentation, StandardProcessing)

//Вставить содержимое обработчика.

StandardProcessing = False;

Presentation = Metadata.ExternalDataSources.Задачи.Tables.dbo_tasks.Presentation()

+ " " + String(Data.id) + NStr("ru=' от '") + Format(Data.date_created, "DLF=D");

EndProcedure

Результат от модификации

Использование внешних источников как типов данных

Модификация: Документ.ПоступлениеТМЦ

Добавим реквизит: ВнешняяЗадача — ВнешнийИсточникДанныхТаблицаСсылка.Задачи.dbo_tasks, разместим на форме. Получим:

Установка статуса Выполнено у внешней задачи

В модуле объекта: Внешние источники данных — Задачи — Таблицы — dbo_tasks создадим процедуру устанавливающую признак Выполнено у задачи

Процедура ВыполнитьЗадачу() Экспорт

state_id = ВнешниеИсточникиДанных.Задачи.Таблицы.dbo_states.НайтиПоПолю("id",4);

done = Истина;

КонецПроцедуры

В форме поступления создадим команду и вынесем на форму: ВыполнитьЗадачу, модуль обработчика приведем к виду:

&НаСервере

Процедура ВыполнитьЗадачуНаСервере()

ЗадачаОбъект = Объект.ВнешняяЗадача.ПолучитьОбъект();

ЗадачаОбъект.ВыполнитьЗадачу();

ЗадачаОбъект.Записать();

КонецПроцедуры

&НаКлиенте

Процедура ВыполнитьЗадачу(Команда)

ВыполнитьЗадачуНаСервере();

КонецПроцедуры

При помощи новой команды сделаем одну из задач закрытой. Данные во внешних источниках могут изменяться.

Отчеты по Внешним задачам

Создадим новый отчет, основанный на СКД (Система Компоновки Данных), настройки отчета:

Проверим что получилось

Создадим еще один отчет, в нем будем выводить информацию по документам Поступление и задачам, выбранным из внешнего источника

Проверим отчет

Платформа 1С позволяет эффективно решать повседневные задачи по автоматизации бизнеса. Обладает мощным механизмом управления отображения и получения данных. Язык запросов 1С очень близок по синтаксису к SQL, гибок и прост в освоении. Объект 1С запрос позволяет получить данные для дальнейшей обработки любым доступным способом. На данный момент 1С является лидером среди систем автоматизации бизнеса.