Источник: http://itpath.ru/lesson-1c-part-11/
Механизм позволяющий из 1С Предприятия обращаться к данным хранящимся вне базы данных 1С. Для внешних данных имеется возможность создания форм, возможно использование их в объектах конфигурации как типообразующих данных. Получаемые данные могут быть 2 типов: Объектные (возможно использование как типа данных в реквизитах), Записи (просто набор записей). Механизм будет удобен при переходе на 1С 8 с другого ПО, в том числе с 1С Предприятие 7.7.
Запускаем среду работы с 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С является лидером среди систем автоматизации бизнеса.