Обмен данными (экзамен)
Общие вопросы
1. Назовите средства платформы, используемые для построения схем обмена данными.
- Планы обмена - описывает перечень узлов, с которыми будет производиться обмен, а также состав данных.
- Средства XML-сериализации для представления данных в виде xml.
- Средства чтения/записи xml-документов позволяют работать без привязки к объектам 1С:Предприятия.
2. Опишите назначение планов обмена, а также механизмы, реализуемые планом обмена.
Как уже было сказано ранее, описывает перечень узлов, с которыми будет производиться обмен, состав данных, которым предполагается обмениваться, а также позволяет указать будет ли задействован механизм РИБ.
В качестве узлов могут выступать информационные системы 1С:Предприятие 8, 7.7, и не только, любая информационная система, которая работает с xml.
Для плана обмена можно создать, реквизиты, табличные части, формы.
Для каждого объекта, которые могут участвовать в обмене, задается режим авторегистрации - запретить или разрешить.
Реализуемые механизмы:
- РИБ.
- Служба регистрации изменений - перечень измененных элементов данных, которые должны быть переданы при очередном сообщении узлу.
- Инфраструктура сообщений - передаются измененные данные, изменения конфигурации (РИБ), служебная информация.
3. Опишите работу службы регистрации изменений. Чем реализуется этот механизм?
Обеспечивает регистрацию всех измененных данных, которые подлежат передаче в другие узлы. После получения подтверждающего сообщения о получении данных, информация о регистрации удаляется.
Информация регистрируется в таблице изменений. Каждая запись указывает на некоторый элемент данных, содержит информацию об узле, куда будет отправлено изменение, а также номер сообщения, в котором информация была отправлена первый раз.
Запись создается для каждого узла, в обмене с которым участвует регистрируемый объект.
При регистрации после изменения элемента данных номер сообщения имеет значение NULL. Затем заменяется на номер сообщения.
Авторегистрация - регистрация либо вручную, либо средствами платформы.
4. Где хранится информация о зарегистрированных изменениях? Как сделать запрос к таблице изменений? Как зарегистрировать изменение объекта? Как удалить регистрацию изменений?
Информация хранится в таблице изменений.
Запрос к таблице изменений
Регистрация изменений с помощью метода "ЗарегистрироватьИзменения" объекта "ПланыОбменаМенеджер".
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Выборка.Ссылка);
Удаление изменений при помощи метода "УдалитьРегистрациюИзменений".
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
5. Что такое «Инфраструктура сообщений»? Для чего используется и как реализована в платформе?
Она предназначена для формирования сообщений, которые должны быть переданы в другие узла при синхронизации. В каждом сообщении передаются изменения данных, изменения конфигурации (при использовании РИБ) и различная служебная информация. У сообщений есть уникальный номер, указан отправитель и получатель.
Сообщение формируется в виде XML файла.
В каждом сообщении содержится подтверждение получения предыдущего сообщения путем указания номера такого сообщения.
6. Расскажите про XML-сериализацию. Как сериализуются сложные и простые типы данных? Назовите эти типы данных. Где можно узнать, сериализуется ли указанный тип данных?
XML-сериализация - это преобразование данных 1С:Предприятия в данные формата XML, и обратно.
В синтакс-помощнике есть описание методов для работы с XML.
Сложные типы с точки зрения XML - это те, которые имеют вложенные элементы (все объекты БД, наборы записей регистров). Еще такие - Тип, ОписаниеТипов, КонстантаМенеджерЗначения.<имя константы>, УдалениеОбъекта.
Где можно посмотреть информацию о возможности сериализации типа данных - в синтакс-помощнике в описании типов.
7. Как можно записать в XML-файл данные, не конвертируемые методом глобального контекста «ЗаписатьXML»?
Можно использовать XDTO - это объект конфигурации, который предназначен для описания значений, типов и их взаимосвязей.
Пример, но это не точно:
Функция ПолучитьXML(Значение)
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(Значение);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
Возврат ЗаписьXML.Закрыть();
КонецФункции
Универсальный механизм обмена
1. Что представляет из себя универсальный механизм обмена? Какие возможности он даёт разработчику? Позволяет ли он перенос структуры ИБ?
Универсальный механизм обмена данными позволяет обмениваться информацией как с другими ПП 1С:Предприятия, так и с информационными системами, которые к 1С:Предприятию никакого отношения не имеют. Этот механизм переносит только данные. Перенос конфигурации не поддерживается.
Возможности:
- Обмен данными может быть реализован с любыми информационными системами;
- Организация различных стратегий обмена сообщениями (квитирование и гарантированная доставка ???);
- Реализация способов разрешения коллизий при одновременном изменении данных в разных узлах - платформой не регламентировано, разработчики сами принимают решения;
- Восстановление обмена данными после восстановления информационной базы из резервной копии (не нашел информации по этой возможности).
2. Расскажите про особенности и составные части универсального механизма обмена.
Особенности:
- использование xml документов;
- нет требования идентичности конфигураций, а также передаваемых объектов;
- можно одновременно обмениваться с разными информационными системами, схемы обмена при этом не будут пересекаться, то есть у каждой схемы свои настройки.
- нет ограничений на структуру распределенной системы, то есть можно создавать любые комбинации (звезда, снежинка и др);
- возможность управлять составом обмена. Сюда относятся структура данных, состав объектов.
Составные части:
- Планы обмена. Реализуют: службу регистрации изменений, инфраструктуру сообщений.
- XML сериализация.
- Чтение и запись XML документов.
3. Последовательно опишите процесс создания обмена данными с помощью плана обмена, подписок на события и процедур БСП.
- Создаем планы обмена в обеих конфигурациях. Имя плана обмена должно быть одинаковым в обеих конфигурациях. По инструкции подсистемы БСП "Обмен данными" в модуле менеджера плана обмена прописываем необходимые процедуры и функции.
- Включаем в состав планов обмена необходимые объекты метаданных. При это авторегистрацию отключаем. Это необходимо, чтобы при изменении значения реквизита, не участвующего в обмене, объект не регистрировался к обмену. Также в состав плана обмена должен быть включен регистр сведений "СоответствияОбъектовИнформационныхБаз".
- Создаем подписки на события, которые описаны в инструкции БСП. Подписки создаются для работы механизма регистрации измененных данных. Они еще как-то используются при обновлении информационной базы (из инструкции БСП), но детально я в это не вникал.
- Настраиваем общие команды. В инструкции БСП перечислены команды, у которых необходимо изменить свойство "Тип параметра команды". Это свойство составного типа, указывается ссылка на план обмена.
- В общий модуль "ОбменДаннымиПереопределяемый" в процедуру "ПолучитьПланыОбмена" добавить наш план обмена.
- ??? Добавляем макеты правил регистрации, правил обмена, правил обмена корреспондента.
4. Что такое авторегистрация в планах обмена? Как будет происходить регистрация объектов к обмену, если авторегистрацию отключить?
Платформа будет автоматически регистрировать измененные объекты к обмену. Если этот влаг отключить, то регистрацию необходимо делать программно при помощи метода "ЗарегистрироватьИзменения" объекта "ПланыОбменаМенеджер". В синтакс-помощнике есть описание доступных методов.
Либо можно добавить получателей в свойстве объекта ОбменДанными. Это необходимо делать в обработчике событий ПередЗаписью, ПередУдалением.
Способы регистрации изменений на ИТС
5. В каких ситуациях уместно использовать авторегистрацию, а в каких регистрировать объекты с помощью подписок на событие?
Если нам необходимо регистрировать к обмену все какие либо документы, то ставим авторегистрацию. Если же есть какие-то условию, алгоритм определения стоит выгружать данный документ или нет, то используем подписки. К примеру, какой-то реквизит не участвует в обмене, то и регистрировать к обмену такой документ не нужно, если меняется значение только этого реквизита. Или если выгрузка документа зависит от каких-то других условий, не зависящих от изменения документа (может быть сюда относится настройка дата выгрузки объектов, выгрузка для определенного склада).
6. Расскажите про регистрацию объектов к обмену с помощью подписок на события. Какие варианты программного кода необходимо указать в подписке?
Не совсем понятно что означает варианты программного кода - это связано с разным состоянием документа? То есть пометка удаления, удаление.
Подписка ПередЗаписью, ПередУдалением.
В этих подписках можно добавить Получателей в свойство ОбменДанными.Получатели:
ОбменДанными.Получатели.Добавить(ПланОбменаСсылка);
Принудительная регистрация изменений:
УзелОбмена = ПланыОбмена.ВыгрузкаНоменклатуры.НайтиПоКоду("001");
Если Источник.ПометкаУдаления Тогда
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,Источник);
Иначе
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена,Источник);
КонецЕсли;
7. Как реализовать регистрацию объектов в разрезе организаций?
Создать план обмена. У плана обмена реквизит "Организация". При добавлении узла в план обмена установить необходимое значение реквизита "Организация". Определить состав. Авторегистрацию отключить. В обработчике события "ПередЗаписью" или "ПередУдалением" написать код по добавлению получателей изменений - в свойстве "ОбменДанными" есть свойство "Получатели", в которое добавляем необходимый узел обмена.
ОбменДанными.Получатели.Добавить(Узел.Ссылка);
8. Какие действия необходимо предпринять, чтобы можно было загрузить ПОД, ПРО в план обмена, а также зарегистрировать объекты к обмену интерактивно?
Для загрузки ПОД, ПРО есть инструкция в БСП на ИТС.
ПРО создаются при помощи конфигурации Конвертация данных, 3.0. ПОД - Конвертация данных, 2.0.
У плана обмена создаются текстовые макеты с именами ПравилаОбмена и ПравилаРегистрации. Сюда правила и загружаются.
Вместо макета ПРО можно использовать так называемый Менеджер регистрации, расположенный в общем модуле. Настройки задаются в модуле менеджера плана обмена в методе ПриПолученииНастроек. Для создания общего модуля можно использовать конфигурацию "Конвертация данных, 3.0".
Правила можно переопределить в режиме предприятия.
Зарегистрировать можно либо в режиме предприятия в настройках синхронизации. Либо программно при помощи метода ЗарегистрироватьИзменения у объекта ПланыОбменаМенеджер.
9. Если в плане обмена есть 4 узла: источник и 3 приёмника, то сколько различных ПОД и ПРО можно загрузить в узлы этого плана обмена?
1 план обмена - 1 ПОД, 1 ПРО. Независимо от количества узлов.
Механизм РИБ
1. Что такое механизм РИБ? Расскажите подробно про возможности и особенности механизма.
РИБ - это совокупность информационных баз 1С:Предприятия (так называемых узлов распределенной информационной базы), в которых поддерживается синхронизация конфигурации и данных. РИБ имеет иерархическую структуру. У каждого узла есть главный и подчиненные узлы. Узел, у которого нет главного - корневой узел. Изменение конфигурации допускается только в корневом узле. Изменение данных - в любом узле.
В рамках РИБ в разных узлах данные могут отличаться.
Данные и изменения конфигурации переносятся при помощи механизма сообщений обмена. В отличие от использования универсальных механизмов обмена данными разработчик не может повлиять на состав и структуру данных, которые помещаются в тело сообщения.
Регистрацию изменений данных в РИБ выполняет служба регистрации изменений. Информация в сообщения обмена записывается с помощью xml сериализации. Регистрация изменений конфигурации и включение в сообщение обмена производится полностью автоматически и недоступна для пользователя и разработчика конфигураций.
2. Как настроить механизм РИБ между идентичными базами данных? Последовательно опишите процесс настройки.
Если подчиненные базы создаются с нуля:
- создать план обмена с включенным флагом РИБ;
- включаем в состав необходимые объекты конфигурации;
- в режиме предприятия создаем подчиненные узлы;
- создаем начальный образ для каждого подчиненного узла;
Если подчиненные базы уже существуют или нужно подключить еще одну базу:
- в центральном узле (или неважно где) создаем план обмена, настраиваем состав, при необходимости вносим логику регистрации изменений
- сохраняем конфигурацию в файл и загружаем во все подчиненные ИБ
- создаем узлы в планах обменов всех ИБ
- в подчиненных узлах программно устанавливаем главный узел
- можно начинать обмен
3. Как отключить подчинённую базу от РИБ?
Либо с помощью параметра запуска конфигуратора /ResetMasterNode. Либо программно при помощи метода ПланыОбмена.УстановитьГлавныйУзел(Неопределено).
Если нужно временно отключить, например, для загрузки конфигурации:
- запускаем конфигуратор с ключом запуска. во время запуска конфигуратор закроется. удаляем ключ запуска, и запускаем конфигуратор снова.
- загружаем конфигурацию.
- запускаем в режиме предприятия.
- появится вопрос о восстановлении главного узла - соглашаемся.
4. Какие права обязательно должны быть у пользователя, под которым происходит обмен данными, чтобы не встретить ошибку при обмене?
Полные.
Web- и http-сервисы
1. Что такое http-сервисы? Каково их назначение? В каких ситуациях следует использовать?
Это способ взаимодействия приложений через Интернет.
Назначение - посредством запроса получить какие-то данные через интернет, либо что-то с ними сделать, например, удалить.
Когда используется:
- при разработке мобильных приложений
- сайт интернет-магазина
- при разработке api и тд.
2. Последовательно опишите процесс создания http-сервиса.
- В конфигураторе создаем новый объект HTTP-сервис.
- Задаем "Корневой URL".
- Создаем "Шаблоны URL". В свойстве "Шаблон" прописываем адреса ресурсов. Допустимые символы: /, {} - параметризованный сегмент (переменная, к которой можно будет обратиться в коде), *.
- Добавляем методы для каждого шаблона url - get, post, put, delete и тд.
- Создаем обработчики методов в модуле объекта. Каждый метод принимает на вход один параметр типа HTTPСервисЗапрос, и должен вернуть ответ типа HTTPСервисОтвет.
- Публикуем http сервис, если это еще не было сделано.
3. Что такое web-сервисы? Каково их назначение? В каких ситуациях следует использовать? В чем отличие от http-сервисов?
WEB-сервисы — это сервисно-ориентированная технология, она по сути является удаленным вызовом процедур. Мы проектируем описание процедур, описание передаваемых параметров, и с помощью WEB сервисов мы эти процедуры можем вызывать. 1С со своей стороны также предоставляет технологию XDTO, которая позволяет валидировать входящие и исходящие данные, передаваемые в формате XML.
HTTP сервисы же основаны практически на голом HTTP, и эта технология ресурсно-ориентированная. Нет описания, нет проверки типов, нет проверки входящих и исходящих данных — есть только заголовки, параметры и тело запроса. И исторически используется формат данных JSON.
Отличие: http-сервисы используются для доступа к ресурсам, а web-сервисы для выполнения каких-то действий.
Веб сервисы используют протокол SOAP. Формат данных - xml.
Логично, что WEB-сервисы потенциально сложнее в реализации, потенциально используют больший объем передаваемых данных и дают потенциально большую вычислительную нагрузку.
4. Последовательно опишите процесс создания web-сервиса.
- Добавить в дерево конфигурации объект Web-сервис.
- Добавить операции, которые может выполнять данный веб сервис.
- Добавить параметры операций, при необходимости.
- В модуле веб сервиса создать обработчики операций.
5. Что такое веб-сервер? Можно ли запускать сервисы без веб-сервера?
Веб-сервер необходим для предоставления доступа к каким-либо ресурсам через сеть интернет.
Такое ощущение, что вопрос с подвохом. Но я не нашел информации как использовать веб и http сервисы без веб-сервера. Везде обязательно присутствует инструкция по установке Apache.
1С: Шина
1. Что такое 1С:Шина? Каково её назначение? Какие преимущества она даёт бизнесу, а какие разработчику? Как обстоит дело с лицензированием?
1С:Шина - это посредник, который обеспечивает асинхронный обмен сообщениями между различными информационными системами, работающими как на платформе 1С:Предприятие, так и с системами на других платформах. Асинхронность здесь подразумевается в следующем - что система-отправитель не взаимодействует напрямую с системой-получателем, а только с посредником.
Когда систем становится много, то возникают проблемы - нестабильность работы, задержки передачи данных, потеря сообщений, рассинхронизация данных, сложно масштабировать, поддерживать.
1С:Шина имеет большой инструментарий для управления обменами и их мониторинга.
Преимущества:
- гарантированная доставка - сообщение хранится пока получатель не подтвердит получение;
- независимая доставка сообщений. После отправки сообщения Шине система-отправитель у себя это сообщение не хранит;
- возможность отслеживать сообщения на всех этапах - где оно сейчас, а каком статусе (дошло, не дошло);
- маршрутизация сообщений - сообщения уходят к одному или нескольким получателям;
- преобразование сообщений - можно преобразовать сообщения на встроенном языке
- трансформация сообщений - из одного формата в другой;
- администрирование - панель управления позволяет выполнить регламентные процедуры, обновление и запуск новых обменов;
- есть готовые коннекторы - готовые решения для подключения к другим системам.
Стоимость в зависимости от количества пользователей - 100, 500 и более.
2. Как происходит разработка интеграции на основе 1С:Шины? Какие этапы разработки происходят в базе данных 1С и какие объекты метаданных там используются?
Разработка интеграции:
- Шина устанавливается на отдельный сервер. Есть 2 вариант установки - со встроенной IDE и без. Версия без используется для увеличения производительности. Для хранения данных можно использовать MSSQL, Postgres или файловую базу данных.
- Далее в панели управления настраиваем создаем проекты, приложения, добавляем информационные системы.
- Встроенная IDE позволяет в визуальном режиме описать источники и приемники сообщений.
- Затем опубликовать проект.
Для обмена сообщениями с Шиной в платформе есть специальный объект метаданных - "Сервисы интеграции":
- Создаем новый сервис
- Указываем адрес внешнего сервиса интеграции - это адрес приложения на сервер Шины.
- Загружаем список доступных каналов и выбираем с какими будем взаимодействовать.
- Сообщение интеграции формируется на встроенном языке, записывается в поток как двоичные данные, при помощи метода "ОтправитьСообщение" объектной модели сервисов интеграции записывается в хранилище сообщений. Сообщение еще не отправлено в Шину. Обычно отправка происходит пакетно с использованием регламентного задания.
Для приема сообщений в другой ПП 1С последовательность та же. Только используются другие каналы.
И не забываем выбирать необходимые каналы с отправкой либо получением квитанций. Прием и отправку квитанций необходимо обрабатывать самостоятельно. Для хранения информации можно использовать регистр сведений.
Тут описание настройки.
COM-соединение
1. Что такое технология COM? Как расшифровывается? Какими возможностями обладает?
COM является моделью для проектирования и создания компонентных объектов. Эта модель описывает различные технические приемы, которые могут использовать разработчики при создании независимых от языка программных модулей.
Модель компонентного объекта - Component Object Model.
Возможности:
- Создание приложений из повторно используемых компонентов.
- Взаимодействие компонентов по сети.
- Модернизация компонентов. COM предоставляет стандартный способ реализации разных версий компонента, при этом не нарушая работу старых клиентов.
- Использование в разных приложениях.
- Независимость от языка программирования.
2. Что такое Automation? Как происходит обращение к свойствам и методам объектов с использованием этой технологии? Как происходит передача данных от источника к приемнику?
Данная технология предназначена для программного управления программными продуктами. «1C:Предприятие» может выступать как в роли Automation Server, так и в роли Automation Client.
Основное назначение Automation-сервера «1С:Предприятия» управление приложением системы «1С:Предприятие» из других приложений и выполнение действий, аналогичных интерактивным действиям. Automation-сервер «1С:Предприятия» предоставляет доступ ко всем свойствам и методам своего глобального контекста, имеет дополнительные свойства и методы для выполнения действий, специфичных для работы в режиме Automation.
Для запуска системы «1С:Предприятие» в качестве Automation-сервера из внешнего приложения выполняется следующая последовательность действий:
- создается COM-объект с идентификатором V83.Application (толстый клиент) или V83c.Application (тонкий клиент);
- выполняется инициализация системы «1С:Предприятие» методом Connect();
- вызываются свойства и методы системы «1С:Предприятие» как Automation-сервера.
Обращение к свойствам и методам происходит через точку, как будто мы работаем в этой программе.
Насчет передачи данных; не совсем понятно и подходящей информации не нашел.
3. Опишите последовательность действий для подключения к базе данных-приемнику из источника, если база приемник – файловая/клиент-серверная.
V8 = Новый COMОбъект("V83.ComConnector");
Соединение = V8.Connect ("File=""c:\InfoBases\Trade""; Usr =""Director"";");
Строка соединения с ИБ представляет собой цепочку фрагментов вида Параметр=Значение. Фрагменты отделяются друг от друга символами ;. Если значение содержит пробельные символы, то оно должно быть заключено в двойные кавычки (").
Общие параметры:
- Usr — имя пользователя;
- Pwd — пароль.
Для файлового варианта определен параметр:
- File — каталог информационной базы.
Для клиент-серверного варианта определены параметры:
- Srvr — имя сервера 1С:Предприятия;
- Ref — имя информационной базы на сервере.
Метод Connect возвращает ссылку на созданный объект COM -соединения.
Метод Connect устанавливает COM-соединение с информационной базой 1С:Предприятия 8.0 и возвращает ссылку на объект COM-соединение.
4. В чем отличие V83.Application от V83.COMConnector? В каких ситуациях нужно вызывать каждый из этих COM-объектов? Почему не стоит лишний раз вызывать V83.Application?
Отличия:
- при использовании V83.Application запускается полноценное приложение. Соответственно, при работе через V83.COMConnector недоступна функциональность, связанная с организацией пользовательского интерфейса.
- При работе через V83.COMConnector (внешнее соединение) не доступны функциональные возможности, так или иначе связанные с организацией пользовательского интерфейса 1С:Предприятия 8.
- При работе внешнего соединения не используется модуль управляемого приложения (модуль обычного приложения) конфигурации 1С:Предприятия 8. Его роль при работе с внешним соединением играет модуль внешнего соединения.
Использование V83.COMConnector имеет и преимущества:
- Более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;
- Более быстрое обращение к свойствам и методам объектов 1C:Предприятия, так как для организации обращения не требуется организации межпроцессной коммуникации.
- Меньший расход ресурсов операционной системы.
5. Как разорвать COM-соединение? Обязательно ли это делать и почему?
Чтобы разорвать соединение есть специальный метод Quit():
Документ = ПолучитьCOMОбъект(Путь + "Integration.xls");
Документ.Application.Quit();
Если не разрывать com соединения, то могут быть утечки памяти. Также увидел информацию, что на каждое com соединение расходуется 1 лицензия. Не знаю насколько это соответствует действительности.
6. Как создать новый объект в другой БД? Как найти уже существующий?
Создание объекта в другой БД:
тз = Соединение.NewObject("ТаблицаЗначений");
Насчет "Как найти уже существующий" - не понял вопрос.
7. Как подключиться к другому приложению, например, к Microsoft Office Excel? Как программно менять данные/настройки в этом приложении?
Здесь можно посмотреть примеры методов для работы с excel.
Здесь методы по изменению настроек.
8. Сравните преимущества и недостатки технологии COM с сервисной технологией (web, http). Что лучше применять и в каких ситуациях?
Преимущества:
- Быстрая настройка: COM-соединения позволяют быстро организовать обмен данными без сложных настроек.
- Прямой доступ: Обеспечивают непосредственный доступ к объектам и методам 1С.
Недостатки:
- Ограничение платформой Windows: COM-соединения работают только в среде Windows, что ограничивает их применение на других операционных системах.
- Проблемы с производительностью: При большом количестве одновременных подключений производительность может снижаться.
- Безопасность: Требует дополнительных настроек для обеспечения безопасного взаимодействия.
COM-соединения рекомендуется использовать в простых сценариях внутри локальной сети, когда все системы работают под управлением Windows и количество одновременных подключений невелико.
Веб-сервисы подходят для сложных интеграций с разнородными системами, особенно когда требуется высокая надежность и строгая структура данных.
HTTP-сервисы лучше всего применять для легковесных и высокопроизводительных интеграций, особенно с веб- и мобильными приложениями, где важна гибкость и скорость взаимодействия.
