Раздел 08. Механизмы интеграции и обмена данными

С точки зрения XML сериализации значение типа "ДокументСсылка.ИмяДокумента" относится:
1. К простым типам

Одновременно с файлом формата dbf может быть открыто...

4. не более одного индексного файла

При обращении к базе данных 1С:Предприятие 8 через OLE выполняется процедура - обработчик события ПриНачалеРаботыСистемы" определенный...
1. в модуле приложения

Данную топологию обмена между информационны (имеющими одинаковую конфигурацию) можно

2. Только при использовании возможностей универсального обмена

При записи значения с использованием средств XML сериализации в XML документ:
3. Используются методы, относящиеся к средствам XML сериализации и объект "ЗаписьХМL"

При обращении к базе данных 1С:Предприятие 8 через СОМ выполняется процедура - обработчик события "ПриНачалеРаботыСистемы" определенный...

2. в модуле внешнего соединения

Данную топологию обмена между информационными базами (имеющими одинаковую конфигурацию) можно реализовать:

3. Как средствами универсального обмена, так и распределением информационной базы

Событие "ПриПолученииДанныхОтПодчиненного", определенное в модуле плана обмена, возникает при получении данных от подчиненного узла:
1. При отмеченном у данного плана обмена флаге "Распределенная база данных"

При последовательном чтении из текстового файла невозможно:

3. Возможно как построчное, так и посимвольное чтение

В процедуре, которая будет вызываться при подключении к базе данных через СОМ, нельзя использовать:

2. Форма.Открыть()

При использовании механизма распределенных баз данных изменения в конфигурации:

3. Изменения включаются в стандартные сообщения обмена

При использовании механизма распределенных информационных баз в соответствующем объекте "План обмена" отдельно взятой информационной базы (входящей в распределенную) определяется:

2. Главная (но она может и отсутствовать) и подчиненные базы

Для создания объекта, с использованием которого из одной базы 1С:Предприятие 8 будет производиться обращение через OLE к другой информационной базе 1С:Предприятие 8, используется конструктор:
3. Новый СОМОбъект

К простым с точки зрения XML сериализации относятся типы:

4. Которые представляются в виде элементов XML только с текстовым содержимым

Экземпляр объекта XBase позволяет одновременно организовать работу:
1. Только с одним файлом формата dbf

Для получения почты напрямую с почтового сервера (без использования установленного почтового клиента) использует объект:

2. Объект "ИнтернетПочта"

Элементы управления ActiveX могут использоваться в диалоге формы:
1. Без ограничения

К сложным, с точки зрения XML сериализации, относятся типы:

4. Типы, значения которых представляются в виде элементов XML, содержащих вложенные элементы

У плана обмена может быть следующее количество предопределенных узлов (которые нельзя удалить или пометить на удаление):

2. Всегда один

С точки зрения XML сериализации, значение типа "ХранилищеЗначения" относится:
1. К простым типам

Для обращения к свойствам элементов управления ActiveX из модуля формы используется:

2. Свойство "ЭлементыФормы"

При использовании универсальных механизмов обмена (в свою очередь использующих планы обмена) таблица регистрации изменений для объектов, изменение которых отправлено в сформированном сообщении:

3. Порядок определяется программистом

При использовании механизма распределенных баз данных таблица регистрации изменений для объектов, изменение которых отправлено в сформированном сообщении:
2. Очищается после приема квитанции о приеме отправленного сообщения

С точки зрения XML сериализации, значение типа "КонстантаМенеджерЗначения.Имя константы" относится:
2. К сложным типам

При работе с объектом "ИнтернетПочта" можно произвести выборку писем (либо заголовков):

5. Только все письма, находящиеся на сервере

В качестве макета нельзя использовать:

2. ActiveX элемент управления

При использовании возможности организации универсального обмена данными процесс разрешения коллизий:
1. По умолчанию платформой не определяется

При работе с внешней компонентой (выберите наиболее правильное утверждение):

3. После программной загрузки объекты внешней компоненты подключаются к "1С:Предприятию 8"

При использовании планов обмена, управлять составом узлов, для которых производится регистрация изменений объектов:
3. Состав узлов, для которых идет регистрация изменений, может корректироваться при работе с объектом

Объект "ПреобразованиеХSL" предназначен...
3. для преобразования XML документа в другой документ допустимого формата

С помощью средств XML сериализации нельзя в XML документ сохранить значения, имеющие тип:
6. Можно сохранить значения всех вышеуказанных типов

Выберите правильное утверждение, касающееся элемента управления "поле HTML документа"
4. Позволяет просматривать html документы, как в локальной сети, так и в сети Интернет

Для отслеживания момента полной загрузки HTML документа в элементе управления "Поле HTML документа" можно использовать:

2. Обработчик события "Документ сформирован" данного элемента управления, в котором при этом производится проверка свойства URL на равенство заданному адресу ресурса

Для получения почты посредством установленного на пользовательском компьютере почтового клиента используется объект:
1. Почта

При программном создании фабрики XDTO, типы в ней определенные:
3. не могут расширяться, определяются в полном объеме при создании

Типы определенные в глобальной фабрике XDTO:

4. могут расширяться за счет создания пакетов XDTO, изменения состава объектов конфигурации

Понятию "Фабрика XDTO" больше всего соответствует такое понятие XML как:
1. набор схем XML.

Понятию "Пакет XDTO" больше всего соответствует такое понятие XML как:
2. схема XML документа

В рамках создаваемого пакета XDTO (без использования директивы импорта) можно использовать типы:
2. определенные только в данном пакете и типы стандартные для XML..

В рамках модели XDTO понятие "Фасет" относится к:
2. тип значения XDTO.

При определении типа свойства объекта XDTO информация о типе включает:

2. имя типа и имя пространства имен

Менеджер WEB сервисов решает задачу:
1. управление пулом соединений с информационными базами.
2. поддержка WSDL описания сервиса, реализация протокола SOAP.
4. верны ответы 1,2.

Объект конфигурации "WEB сервис" используется для:

3. экспорта функциональности данной информационной базы

В случае если функция, реализующая операцию WEB сервиса, возвращает какое-либо значение. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:

5. объект или значение XDTO

При обращении к WEB сервису по статической ссылке последовательность действий следующая:
1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса.

При обращении к WEB сервису по динамической ссылке последовательность действий следующая:
1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса

В случае если функция, реализующая операцию WEB сервиса, принимает какое-либо значение в качестве параметра. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:
5. объект или значение XDTO

Каким образом можно определить в каких планах обмена для конкретного прикладного объекта указана авторегистрация?
1. В окне редактирования объекта, раздел "Обмен данными"
3. Посредством вызова окна "Дополнительно" для данного объекта (закладка "Планы обмена")

5. Верны ответы 1 и 3

Для прикладных объектов в окне редактирования объекта конфигурации на закладке "Обмен данными" указываются...

4. планы обмена, в которых будут учитываться изменения в данном объекте

Редактирование OLE-объектов осуществляется:

3. Приложением, связанным с OLE-объектом

Внешние файлы табличных документов:

2. Имеют расширение MXL

Automation-сервер "1С:Предприятие 8"...
1. предоставляет доступ ко всем свойствам и методам своего глобального контекста
2. предоставляет доступ к дополнительным свойствам и методам для выполнения действий, специфичных для работы в режиме Automation
3. позволяет управлять приложением системы "1С:Предприятие 8" из других приложений, а также выполнять действия, аналогичные интерактивным
4. верны все указанные ответы

Создание информационной системы с использованием нескольких информационных баз в системе 1С:Предприятие 8...
3. реализуется с помощью объекта конфигурации "Планы обмена"

Печать (Ctrl+P)

Web-сервисы

Механизм Web-сервисов позволяет использовать «1С:Предприятие» как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать «1С:Предприятие» с другими промышленными системами использованием сервисно-ориентированной архитектуры.

Добавление Web-сервиса

Для того чтобы добавить Web-сервис в дерево конфигурации, следует выделить ветку Общие – Web-сервисы и выполнить команду контекстного меню Добавить .
В результате выполнения команды будет открыто окно редактирования Web-сервиса.

На закладке Прочее окна редактирования Web-сервиса следует установить следующие параметры:
URI пространства имен – содержит URI пространства имен Web-сервиса. Каждый Web-сервис может быть однозначно идентифицирован по своему имени и URI пространству имен, которому он принадлежит.
● Пакеты XDTO – перечень пакетов XDTO, типы которых могут использоваться в качестве типов возвращаемого значения операций и типов параметров операций Web-сервиса.
Имя файла публикаций – имя файла описания Web-сервиса, который расположен на веб-сервере.
Для получения доступа к Web-сервису необходимо использовать адрес, который формируется следующим образом: <Имя хоста веб-сервера>/<Имя виртуального каталога>/ws/<Имя Web-сервиса> или <Имя хоста веб-сервера>/<Имя виртуального каталога>/ws/<Адрес Web-сервиса> .
Так, если виртуальный каталог имеет имя DemoWS , имя Web-сервиса в конфигураторе указано как ДемонстрацияРаботыWS, а в качестве адреса указано DemoWorkWS , то обращение к Web-сервису можно выполнять одновременно по двум адресам (для получения доступа с локальной машины):
http://localhost/DemoWS/ws/ДемонстрацияРаботыWS или http://localhost/DemoWS/ws/DemoWorkWS.
Кроме этого, на закладке содержится кнопка Модуль, которая позволяет открыть для редактирования модуль Web-сервиса.

Иерархическая структура Web-сервиса

Каждый Web-сервис, описываемый в дереве конфигурации, может содержать набор операций. Каждой операции должна соответствовать экспортируемая процедура, описанная в модуле Web-сервиса.


Описание Web-сервиса

В свою очередь, каждая операция может содержать набор параметров, имена которых должны соответствовать именам параметров процедуры, описывающей данную операцию.

Операции Web-сервиса

На закладке Операции выполняется добавление операции Web-сервиса. Редактирование свойств операции выполняется в палитре свойств.


Свойства операции Web-сервиса

Тип возвращаемого значения – тип значения, которое возвращает операция Web-сервиса. Может являться типом значения XDTO или типом объекта XDTO.
Возможно пустое значение – показывает, может ли возвращаемое значение принимать неопределенное значение.
В транзакции – показывает, будет ли выполняться код модуля Web-сервиса в транзакции или нет. Если свойство установлено, то при вызове Web-сервиса автоматически будет начата транзакция, а при завершении транзакция будет либо зафиксирована, либо произойдет откат транзакции (в зависимости от результатов выполнения). Если свойство не установлено, при начале исполнения модуля Web-сервиса транзакция начата не будет.
Имя процелуры – имя экспортной процедуры модуля Web-сервиса, которая будет выполнена при вызове данного свойства.
Режим управления блокировкой данных – указывает, какие блокировки будут использовать при доступе к данным.

Параметры операции

На закладке Операции для указанной операции нужно осуществить задание параметров операции Web-сервиса. Редактирование свойств параметра
выполняется в палитре свойств.


Свойства параметра операции

Тип значения – тип значения параметра операции Web-сервиса. Может являться типом значения XDTO или типом объекта XDTO.
Возможно пустое значение – показывает, может ли значение параметра операции принимать неопределенное значение.
Направление передачи – определяет направление передачи данных с помощью данного параметра. Возможные значения:
● Входной – означает, что параметр может использоваться только для передачи данных Web-сервису.
● Выходной – означает, что параметр может использоваться только для получения данных от Web-сервиса.
Входной – Выходной – означает, что параметр может использоваться как для передачи данных, так и для их получения от Web-сервиса.

Указание типов, определяемых системой

Чтобы в Web-сервисе воспользоваться типами, определяемыми системой 1С:Предприятие» (например, в параметрах и возвращаемом значении операций), нужно в конфигурации определить пакеты XDTO и для каждого пакета указать в его списке импортируемых пакетов (свойство Директивы импорта) набор пакетов платформы, в которые эти типы входят. URI пространства имен для указания типа содержится в статье синтакс-помощника по объекту данного типа.

Публикация Web-сервисов

Задача публикации сводится к размещению файла публикации в соответствующем каталоге. Для того, чтобы выполнить публикацию, следует выполнить команду меню “Администрирование – Публикация на веб-сервере… “.

В результате выполнения этой команды будет открыто окно, в котором осуществляется публикация информационной базы на локальном компьютере.

Внимание! Выполнение операции требует наличия прав администратора (для ОС Windows) или прав суперпользователя (для ОС Linux) на компьютере, на котором выполняется публикация

Основные настройки публикации

На закладке “Основные ” отображаются данные, необходимые для выполнения публикации.

Если публикация ранее не выполнялась, то значения полей (настройки) заполняется значениями по умолчанию (наименование выбирается из наименования информационной базы). Если требуется, измените эти настройки.
Если публикация уже выполнялась, то настройки выбираются по ранее указанным.
Если системой при открытии диалога с текущими настройками найдена публикация, но ее данные отличаются от данных настроек – выдается запрос на замену настроек.
Если публикация по настройкам не найдена, выдается предупреждение.

Выберите веб-сервер и укажите каталог, в который будет записан файл публикации.
Список веб-серверов формируется автоматически на основании установленных веб-серверов.

Имя публикации должно соответствовать правилам URL (стандарт RFC 1738).
Если выбран веб-сервер Apache 2.2 или Apache 2.4, то для имени каталога следует использовать US ASCII символы.

Примечание. При использовании веб-сервера Apache в диалоге настройки доступны для выбора обе версии веб-сервера. Следует учитывать, что настройки публикации для Apache 2.2 и Apache 2.4 несовместимы между собой. Поэтому необходимо правильно выбрать версию веб-сервера в диалоге.

Укажите необходимость публикации тонкого клиента и веб-клиента, а также Web- и HTTP-сервисов.

Если флажок “Публиковать стандартный интерфейс ODATA ” установлен, будет опубликован сервис ODATA, который позволяет считывать и изменять данные информационной базы с помощью HTTP-запросов.

На закладке “Web-сервисы ” установите флажок “Публиковать Web-сервисы ” и в таблице сформируйте список путем установки проставления флажков для тех Web-сервисов, которые нужно опубликовать.

Если флажок “Публиковать Web-сервисы по умолчанию” установлен, то при обновлении публикации выбранные web-сервисы будут опубликованы автоматически. В противном случае, web-сервисы будут отмечены как не публикуемые.

Если флажок “Публиковать Web-сервисы расширений по умолчанию” установлен, то при обновлении публикации web-сервисы, добавленные расширениями, будут опубликованы автоматически.

Алексей Багрянцев Октябрь 3, 2012

В процессе работы мы не раз сталкивались с проблемой выбора решения для той или иной задачи. Порой можно, не особо мучаясь, взяться за самый очевидный и распространенный метод как говориться, “решать в лоб”. В большинстве случаев такой подход так или иначе даст результат, но он может затребовать от вас серьезных умственных и временных затрат.

Поэтому в ситуации, когда перед вами стоит нестандартная задача, возможно, стоит отойти от привычных методов, а попробовать рассмотреть несколько вариантов, пусть даже они поначалу кажутся не слишком удачными или к ним просто неохота прибегать, потому что “обычно мы так не делаем”. Тут главное не бояться экспериментировать, потестировать каждый из методов, и наконец, выбрать наиболее подходящий, отвечающий всем вашим запросам и обеспечивающий требуемый результат.

Нам, разработчикам, с такими проблемами приходиться бороться очень часто. Об одной такой сложной и трудоемкой задаче, потребовавшей перебора нескольких подходов к ее решению, и пойдет речь ниже.

Предыстория

На одном из PHP проектов среднего размера возникли проблемы, связанные с выполнением тяжеловесных операций и интерактивном отображении статуса исполняемой операции. Кроме блокировки исполнения других запросов и перехода по другим ссылкам портала пользователь пребывал в неведении и не догадывался, что же происходит в данный момент времени, когда же закончится операция, возможно, произошла ошибка и т.д. Проект изначально носил статус экспериментального, требования к выполняемым фазам часто менялись на лету, изменялись приоритеты и вектор развития системы. Для формирования большего представления хотелось бы описать стек используемых технологий на проекте:

  • MVC Framework CakePHP 2.1 (PHP5.3);
  • MySQL;
  • jQuery, jQuery UI, jQuery plugins;
  • Selenium server, Snoopy server side browser simulator;
  • IMAP Server, etc.

В качестве операционной системы была выбрана: CentOS

Выбор фреймворка был обусловлен опытом его использования командой разработчиков, выбор же реляционной СУБД MySQL в качестве data storage является довольно стандартным решением и обусловлено стабильностью и распространенностью использования этой СУБД в качестве “движка” хранения данных.

На этапе проектирования системы сразу было трудно предугадать, что в системе появятся очень “тяжелые” операции, процесс выполнения которых придется пересматривать, реализовывать дополнительные компоненты и в общем перерабатывать архитектуру приложения. К тому же система была неким прототипом, где требования часто менялись, как и то, куда будет расти система в дальнейшем.

На одном из этапов был реализован ряд операций, которые оказались довольно “тяжеловесными” (highweighted operations) и мало того, что они блокировали выполнение других операций в рамках той же сессии, но и вообще процесс перехода по ссылкам системы становился невозможным до тех пор, пока “тяжелая” операция не была завершена. При рассмотрении проблемы на более низком уровне оказалось, что любой запрос блокировал файл сессии при его открытии, соответственно, пока операция не выполниться полностью и процесс не сбросит (flush) сессионные данные в файл сессии и не освободит его, сняв блокировку, другие запросы будут терпеливо ждать в очереди. Действительно, по умолчанию в PHP в качестве механизма хранения сессий используется файл. При открытии сессии срабатывает функция, наподобие fopen(), которая и блокирует файл на чтение и запись для других процессов. Сразу напрашивается решение о смене session storage для снятия блокировки, но поговорим об этом попозже.

Подходы

  1. Разбиение операции на шаги
  2. Ajax Polling
  3. Long Polling
  4. Forever lframe
  5. Streaming
  6. Comet-server
  7. Web-sockets

Коротко рассмотрим каждый из этих подходов для решения задачи выполнения тяжеловесных операций и интерактивного оповещения пользователя о прогрессе выполнения .

Разбиение операции на шаги

Первое что приходит в голову - операцию разделить на шаги. После выполнения очередного шага и отправки ответа браузеру пользователя, он инициирует следующий шаг сам, отправив соответствующий ajax-запрос на сервер.

В выполняемом проекте данный подход оказался не слишком удачным по причине того, что тяжеловесные операции были практически не делимы на шаги. Кроме того использовались сторонние и запущенные на сервере сервисы, для работы с которыми приходилось создавать и подготавливать соответствующие объекты во время исполнения запроса. После исполнения запроса, которые представлял 1 шаг операции, объекты “прибивались”. Возможно стоило подумать о их переиспользовании, но до мы этого не дошли.

Ajax Polling

Следующее решение, которое напрашивается, заключается в запуске операции на сервере и постоянном опросе сервера о статусе выполняемой операции путем посылки серии ajax-запросов через определенные интервалы времени. На клиенте же можно проанализировать такой ответ сервера (например, это может быть JSON, содержащий “message”, “percentage”, “error” и “redirect”) и отрисовать progress-bar, отображающий статус выполнения текущей операции.

Была попытка использования Polling подхода на проекте с двумя разными способами хранения результата выполнения операции:

    Хранение результатов выполнения в файле – +.txt

    Хранение результатов в БД, в соответствующей таблице – high_weight_operations

Пользователь инициировал выполнение операции с помощью ajax-запроса, после этого клиентский скрипт периодически опрашивал сервер и получал статус и прогресс текущей операции – /operations/get_status/ .

Но мы столкнулись со следующей проблемой: длительная операция стартовала, но блокировала файл сессии, тем самым исключала возможность выполнения параллельных запросов в рамках той же сессии. Иными словами, после запуска длительной операции все запросы, опрашивающие сервер, попадали в очередь и ждали момента, когда основной запрос освободит файл сессии.

Первое решение возникшей проблемы заключалась в освобождении файла сессии. Для этого в PHP предусмотрена функция – session_write_close() , с помощью которой можно закрыть сессию на запись. Действительно, можно запустить операцию, прочесть данные сессии, сделать в них изменения и закрыть сессию на запись.

Но в реалиях проекта, с учетом устоявшейся архитектуры, данное решение применить не удалось. Требовалась запись сессии во многих местах длительной операции. К тому же такое решение нельзя назвать “чистым”, т.к. пользователю, возможно, понадобиться ”попутешествовать” по сайту или запустить еще одну тяжелую операцию параллельно. Поэтому нужна была альтернатива.

Решение заключалось в смене Session Storage, что обеспечивало работу с сессией без блокировки при ее открытии. В качестве нового хранилища сессии можно выбрать один из следующих вариантов:

  • MySQL Database;
  • MongoDB;
  • Memcached;

Для того, чтобы сменить Session Storage в PHP предусмотрена функция – session.save_handler() , которая устанавливает пользовательские функции хранения сессии. Они используются для хранения и получения данных, ассоциированных с сессией. В сети можно найти множество примеров её использования, существуют уже реализованные классы, служащие для переноса сессии в БД или memcached.

Примечание : Для работы функции необходимо установить опцию session.save_handler в значение user в вашем файле конфигурации php.ini .

На проекте в качестве эксперимента было использовано хранение сессий в mysql и mongodb.

Примечание : Если понадобится, чтобы только что записанный в сессию параметр был доступен для других запросов, то сессию необходимо “сбосить (flush)” в mysql или mongodb, чтобы отработала функция записи сессии. Для этого необходимо закрыть её на запись и переоткрыть снова:

Public function session_flush() { session_write_close(); session_start(); }

После реализации соответствующих компонент, сессия перестала блокироваться и позволила обрабатываться нескольким запросам, ассоциируемых с одной и той же сессией, одновременно. Теперь она не “лочится” (lock ), как это было с файлами, при открытии файла функцией fopen , плюс ко всему скорость работы сессии значительно возросла.

Примечание : Для использования mongodb в PHP необходимо установить mongodb как сервис, а также драйвер работы на PHP.

Пример установки на CentOS :

  1. Создать репозиторий

/etc/yum.repos.d/10gen.repo

  1. Заполнить содержимым (в зависимости от разрядности ОС)

name=10genRepository

baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64

  1. Вызвать
  1. Далее

yum install mongo-10gen mongo-10gen-server

  1. Запустить “демон”

service mongod start

  1. Установить драйвер

yum -y install php-devel

sudo pecl install mongo

extension=mongo.so

После этого можно спокойно пользоваться mongodb .

В качестве примера прилагаю листинг компоненты CakePHP для переноса Session Storage и MongoDB

Mongo = new Mongo($connection_string); /* indexes */ $this->mongo->{self::MONGO_DATABASE}->{self::MONGO_COLLECTION}->ensureIndex("id", array("id" => 1)); $this->mongo->{self::MONGO_DATABASE}->{self::MONGO_COLLECTION}->ensureIndex("id", array("id" => 1, "expires" => 1)); // Register this object as the session handler if ($this->forceSaveHandler) { session_set_save_handler(array($this, "open"), array($this, "close"), array($this, "read"), array($this, "write"), array($this, "destroy"), array($this, "gc")); } $this->_timeout = Configure::read("Session.timeout") * 60; } public function __destruct() { try { $this->mongo->close(); session_write_close(); } catch (Exception $e) { } } public function open() { return true; } public function close() { $probability = mt_rand(1, 150); if ($probability <= 3) { $this->gc(); } return true; } public function read($id) { $cursor = $this->mongo->{self::MONGO_DATABASE}->{self::MONGO_COLLECTION}->find(array("id" => $id)); if ($cursor->count() == 1) { $cursor->next(); } else { return false; } $result = $cursor->current(); if (!empty($result) && isset($result["data"])) { return $result["data"]; } } public function write($id, $data) { if (!$id) { return false; } $expires = time() + $this->_timeout; $session = array("id" => $id, "data" => $data, "expires" => $expires); $filter = array("id" => $id); $options = array("safe" => true, "fsync" => true,); $collection = $this->mongo->{self::MONGO_DATABASE}->{self::MONGO_COLLECTION}; if ($collection->findOne($filter) == null) { return $collection->insert(am(array("_id" => new MongoId($id)), $session), $options); } else { return $collection->update($filter, array("$set" => $session), am($options, array("upsert" => false))); } } public function destroy($id) { return $this->mongo->{self::MONGO_DATABASE}->{self::MONGO_COLLECTION}->remove(array("id" => $id), true); } public function gc($time = null) { if (empty($time)) { $time = time(); } return $this->mongo->{self::MONGO_DATABASE}->{self::MONGO_COLLECTION}->remove(array("expires" => array("$lt" => $time)), true); } }

Реализация компоненты для переноса сессий в MySQL аналогична и отличается лишь в реализации функций gc(), destroy(), open(), write(), read(), close()

Примечание : Не забудьте изменить конфигурационный файл core.php проекта.

Configure::write("Session", array("defaults" => "database", "handler" => array("engine" => "MongoSession")));

Также можно добавить защиту на количество одновременных запросов в рамках одной сессии. На нашем проекте этим занималась отдельная компонента, отвечающая за тяжеловесные операции в целом – HighWeightedOperationsComponent.php, которая отслеживала количество операций, запущенный в рамках одной сессии и в зависимости от настроек разрешала запускать строго определенное количество операций.

Итог:

    Сменен Session Storage. Блокировок сессии больше нет.

    На клиенте инициируется ajax-запрос на старт операции.

    Реализована серия Polling-запросов на обновление статуса и progress-bar.

    Создана компонента управления “тяжелыми операциями”.

Long polling

Подход схож с предыдущим, но есть существенное отличие: в первом случае клиент сам опрашивает сервер на наличие изменений, в этом же случае устанавливается непрерывное соединение с сервером и сервер сам сигнализирует о появлении изменения. Преимущество данного подходя заключается в уменьшении трафика между клиентом и сервером.

Принцип: клиентский скрипт обращается к серверу и говорит: "Eсли у тебя появятся данные, я их готов сразу забрать, а потом снова подключусь". В некоторых реализациях сервера существует буферизация, когда сервер не сразу отдает данные, а ждет: вдруг сейчас появится что-то еще, тогда отправлю все сразу. Но такая буферизация вредна, так как вносит задержки, а мы хотим достичь максимальной скорости! После получения данных браузер должен снова открыть новое соединение. Длительность такого соединения может измеряться часами, но это в теории. Обычно время намного меньше и максимум достигает 5 минут, после которых просто создается новое соединение. Делается это потому, что серверы не любят такие долгоживущие сессии, да и сам протокол HTTP не очень приспособлен к такому использованию.

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

Forever IFrame

Коротко: На странице создается скрытый iFrame, который инкрементально рендерит информацию о прогрессе операции или выполняет java-скрипты. Но для этого HTTP-сервер и PHP должны быть настроены так, чтобы умели отдавать данные кусочно в процессе выполнения операции. Об этом рассказано подробно в следующем пункте.

Итак, мы инициируем выполнение операции через скрытый на странице элемент iFrame. На сервере операция отдает данные вызов кусочно и тут-же отсылает клиенту ответ, IFrame пытается выполнить присланный ответ:

Streaming

Подход экспериментально был использован на проекте.

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

Сначала нам нужно было найти и применить соответствующие настройки для Apache-сервера и PHP, что привело к поиску информации в сети и серии тестов. В итоге настройки выглядят следующим образом:

Public function prepare() { // Turn off output buffering ini_set("output_buffering", "off"); // Turn off PHP output compression ini_set("zlib.output_compression", false); // Implicitly flush the buffer(s) ini_set("implicit_flush", true); ob_implicit_flush(true); // Clear, and turn off output buffering while (ob_get_level() > 0) { // Get the curent level $level = ob_get_level(); // End the buffering ob_end_clean(); // If the current level has not changed, abort if (ob_get_level() == $level) break; } // Disable apache output buffering/compression if (function_exists("apache_setenv")) { apache_setenv("no-gzip", "1"); apache_setenv("dont-vary", "1"); } }

Была написана компонента полностью реализующий данный подход. Но после более глубокого анализа оказалось, что данный подход не применим, т.к. на клиенте отсутствуют события, сигнализирующие о том, что очередная порция данных пришла от посланного ранее ajax-запроса. По событию onSuccess приходят данные полностью целиком.

Comet-сервер

Согласно “Wikipedia”, Comet - любая модель работы web-приложения, при которой постоянное HTTP-соединение позволяет веб-серверу отправлять данные браузеру без дополнительного запроса со стороны браузера.

Общая черта таких моделей состоит в том, что все они основаны на технологиях, непосредственно поддерживаемых браузером (например, JavaScript), а не на проприетарных плагинах.

На данном проекте была попытка использования реализации Comet-сервера Dklab Realplexor .

Dklab Realplexor - это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера.

Web-sockets

Также обсуждалась возможность использования WebSockets. Но от этого подхода мы отказались по причине “не поддержки” старых браузеров.

WebSocket - протокол полнодуплексной связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени.

Итог:

В результате задача была реализована Polling-подходом, с переносом сессий в MongoDB. Но последующие обсуждения, увеличение количество “тяжеловесных” задач и их сложности привели к применению более стандартного и надежного решения – реализации очереди выполняемых задач с использованием CRON-планировщика. Действительно, после проверки всех прав на исполняемую операцию мы можем сохранить ее контекст в базу (таблица cron_taks), предварительно сериализовав его. На сервере по определенным интервалам времени будет запускаться CRON shell, который будет брать очередную задачу из очереди, менять ее статус на IN_PROGRESS и передавать ее соответствующему обработчику (TaskDispatcherComponent). Обработчик будет принимать десериализованный контекст запланированной задачи и исполнять ее в отдельном процессе. Ему доступны все модели и компоненты системы. Для определения статуса исполняемой задачи можно воспользоваться подходами Polling и LongPolling, а также организовать просмотр очереди своих задач отдельным отображением. Такой подход оказался более надежным и понятным, хоть и требует определенных архитектурных изменений в системе.

Web-сервис - это средство интеграции, обеспечивающее концепцию сервисной архитектуры. То есть, система 1С может быть представлена как набор независимых сервисов для сторонних систем, и в свою очередь может выступать потребителем таких сервисов. Схема архитектуры:

Менеджер web-сервиса, представленный на схеме, закрывает следующие задачи:

  • управляет пулом соединений с информационными базами
  • поддерживает описание сервиса в формате WSDL (Web Services Description Language, язык описания веб-сервисов, основанный на XML)
  • реализует протокол SOAP (Simple Object Access Protocol - простой протокол доступа к объектам), обеспечивает сериализацию сообщений, вызов нужных web-сервисов

В конфигурации web-сервисы реализованы как общие объекты:

Для web-серивиса, специфицируется набор операций, каждая из которых может характеризоваться определенными параметрами для передачи данных:

Web-сервис работает с помощью XML, соответственно ему необходимо указать схему разметки; для этого web-сервис ссылается на пакет XDTO :

Вопрос 08.42 экзамена 1С:Профессионал по платформе. Менеджер WEB сервисов решает задачу:

  1. управление пулом соединений с информационными базами
  2. поддержка WSDL описания сервиса, реализация протокола SOAP
  3. поддержка работы WEB приложения
  4. верны ответы 1,2
  5. верны ответы 2,3
  6. верны ответы 1,2,3

Правильный ответ четвертый, работу web-приложения web-сервис не обеспечивает (см. выше его функции).

Вопрос 08.43 экзамена 1С:Профессионал по платформе. Объект конфигурации "WEB сервис" используется для:

  1. организации обращения к web-сервисам по статической ссылке
  2. экспорта функциональности данной информационной базы

Правильный ответ третий - web-сервис специфицирует некоторую функциональность, которая может быть доступна из вне данной базы.

Вопрос 08.44 экзамена 1С:Профессионал по платформе. Объект конфигурации "WSСсылка" используется для:

  1. организации динамического обращения к web-сервисам
  2. организации обращения к web-сервисам по статической ссылке
  3. экспорта функциональности данной информационной базы

Правильный ответ второй. WS-ссылка - это общий объект конфигурации, предназнасенный для доступа к сторонним веб-сервисам по статической ссылке. Ссылка состоит из модели данных, по сути пакета XDTO, и web-сервиса, с которого опубликована ссылка:

Вопрос 08.45 экзамена 1С:Профессионал по платформе. В случае если функция, реализующая операцию WEB сервиса, возвращает какое-либо значение. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:

  1. Строка
  2. Число
  3. Булево
  4. элемент XML
  5. объект или значение XDTO
  6. верны ответы 1,2,3

Правильный ответ пятый.

Вопрос 08.48 экзамена 1С:Профессионал по платформе. В случае если функция, реализующая операцию WEB сервиса, принимает какое-либо значение в качестве параметра. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:

  1. Строка
  2. Число
  3. Булево
  4. элемент XML
  5. объект или значение XDTO
  6. верны ответы 1,2,3

Правильный ответ аналогично пятый.

Вопрос 08.46 экзамена 1С:Профессионал по платформе. При обращении к WEB сервису по статической ссылке последовательность действий следующая:

  1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса
  2. настройка подключения (создание прокси), обращение к операции сервиса
  3. обращение к операции сервиса

Правильный ответ второй - в случае статической ссылки, каждый раз получать wsdl описание не требуется.

Вопрос 08.47 экзамена 1С:Профессионал по платформе. При обращении к WEB сервису по динамической ссылке последовательность действий следующая:

  1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса
  2. настройка подключения (создание прокси), обращение к операции сервиса
  3. обращение к операции сервиса

Правильный ответ первый.

1. К простым типам
2. К сложным типам

С точки зрения представления в XML типы данных 1С:Предприятия 8 делятся на простые и сложные. К простым типам данных относятся типы, значения которых представляются подсистемой XML-сериализации в виде элементов XML только с текстовым содержимым:

  • Число;
  • Строка;
  • Дата;
  • Булево;
  • ДвоичныеДанные;
  • Null;
  • УникальныйИдентификатор;
  • ХранилищеЗначения;
  • все ссылки на объекты базы данных;
  • ссылки на перечисления, определяемые в метаданных.
Значения сложных типов представляются в виде элементов XML, содержащих вложенные элементы:
  • ОписаниеТипов;
  • КонстантаМенеджерЗначения.<Имя константы>;
  • все объекты базы данных;
  • наборы записей регистров, последовательностей, перерасчетов;
  • УдалениеОбъекта;

8.2 Одновременно с файлом формата dbf может быть открыто...

1. любое количество индексных файлов
2. количество индексных файлов, не превышающее количество полей в dbf файле
3. не более трех индексных файлов
4. не более одного индексного файла


8.3 При обращении к базе данных 1С:Предприятие 8 через OLE выполняется процедура - обработчик события «ПриНачалеРаботыСистемы» определенный...

1. в модуле приложения
2. в модуле внешнего соединения
3. в общем модуле
4. в OLE модуле

8.4 Данную топологию обмена между информационны (имеющими одинаковую конфигурацию) можно



2. Только при использовании возможностей универсального обмена
3. Как средствами универсального обмена, так и распределением информационной базы

8.5 При записи значения с использованием средств XML сериализации в XML документ:

1. Используются только методы, относящиеся к средствам XML сериалиации
2. Используются только возможности объекта "ЗаписьХМL"
3. Используются методы, относящиеся к средствам XML сериализации и объект "ЗаписьХМL"
4. Для записи преобразованного значения используется метод глобального контекста
"ЗаписатьВФайл(ИмяФайла)"

Запись = Новый ЗаписьXML;

Запись.ОткрытьФайл("E:\Temp\Data.xml");

Запись.ЗаписатьОбъявлениеXML();

Запись.ЗаписатьНачалоЭлемента("Root");

ЗаписатьXML(Запись, Документ.ПолучитьОбъект());

Запись.ЗаписатьКонецЭлемента();

Запись.Закрыть();

8.6 При обращении к базе данных 1С:Предприятие 8 через СОМ выполняется процедура -обработчик события "ПриНачалеРаботыСистемы" определенный...

1. в модуле приложения
2. в модуле внешнего соединения

3. в общем модуле
4. в СОМ модуле

8.7 Данную топологию обмена между информационными базами (имеющими одинаковую конфигурацию) можно реализовать:

1. Только при использовании возможности распределения информационной базы данных
2. Только при использовании возможностей универсального обмена
3. Как средствами универсального обмена, так и распределением информационной базы
4. Данную топологию реализовать невозможно

8.8 Событие "ПриПолученииДанныхОтПодчиненного", определенное в модуле плана обмена, возникает при получении данных от подчиненного узла:

1. При отмеченном у данного плана обмена флаге "Распределенная база данных"
2. При не отмеченном у данного плана обмена флаге "Распределенная база данных"
3. Состояние данного флага на вызов этого обработчика события не влияет

8.9 При последовательном чтении из текстового файла невозможно:

1. Построчное чтение текста
2. Посимвольное чтение текста
3. Возможно как построчное, так и посимвольное чтение


8.10 В процедуре, которая будет вызываться при подключении к базе данных через СОМ, нельзя использовать:

1. ДокОбъект=Док.СоздатьДокумент()
2. Форма.Открыть()
3. Запрос=Новый Запрос
4. Нет правильного ответа

8.11 При использовании механизма распределенных баз данных изменения в конфигурации:

1. Выполняются в каждой информационной базе самостоятельно
2. Передаются посредством файла формата cf
3. Изменения включаются в стандартные сообщения обмена
4. После распределения информационной базы изменение конфигурации запрещено

8.12 При использовании механизма распределенных информационных баз соответствующем объекте "План обмена" отдельно взятой информационной базы (входящей в распределенную) определяется:

1. Только подчиненные базы (входящие в распределенную)
2. Главная (но она может и отсутствовать) и подчиненные базы
3. Полная структура определяется в корневой базе, у отдельно взятого экземпляра
базы определены только те информационные базы, с которыми у нее идет непосредственный обмен

Каждый из узлов распределенной информационной базы, как и в случае использования универсальных механизмов обмена данными, «знает» только своих «соседей», то есть свой главный и свои подчиненные узлы. Таким образом, полная схема распределенной информационной базы при наличии более чем двух уровней неизвестна никакому из узлов.

8.13 Для создания объекта, с использованием которого из одной базы 1С:Предприятие 8 будет производиться обращение через OLE к другой информационной базе 1С:Предприятие 8, используется конструктор:

1. Новый Ваsе(СтрокаИнициализации)
2. Новый ОLЕОбъект
3. Новый СОМОбъект
4. Создание подобного объекта производится другими средствами

Пример:
Word = Новый COM Объект ("Word.Application" );
V8 = Новый COM Объект ("V8.Application" );


8.14 К простым с точки зрения XML сериализации относятся типы:

1. Только: Число, Строка, Дата, Булево
2. Только: Число, Строка, Дата, Булево, Неопределенно, Null
3. Все стандартные типы XML
4. Которые представляются в виде элементов XML только с текстовым содержимым
5. С точки зрения XML сериализации нет понятия "простые типы"

8.15 Экземпляр объекта XBase позволяет одновременно организовать работу:

1. Только с одним файлом формата dbf
2. С любым количеством файлов dbf
3. С любым количеством файлов dbf, но только в случае наличия файла описания связей
4. С любым количеством файлов dbf, но только в случае указания связей между полями с помощью специальных свойств объекта XBase

8.16 Для получения почты напрямую с почтового сервера (без использования установленного почтового клиента ) использует объект:

1. Объект "Почта"
2. Объект "ИнтернетПочта"
3. Объект "ИнтернетСервер"
4. Данная возможность платформой не предусмотрена

8.17 Элементы управления ActiveX могут использоваться в диалоге формы:

1. Без ограничения
2. Только в формах открываемых модально
3. Только в формах открываемых не модально
4. Не могут размещаться в диалогах форм

8.18 К сложным, с точки зрения XML сериализации, относятся типы:

1. Все кроме типов относящихся к примитивным
2. Все ссылочные типы
3. Типы, описанные на "http://www.w3.org/2001/XMLSchema-instance"
4. Типы, значения которых представляются в виде элементов XML, содержащих вложенные элементы
5. С точки зрения XML сериализации, нет понятия "сложные типы"

8.19 У плана обмена может быть следующее количество предопределенных узлов (которые нельзя удалить или пометить на удаление):

1. Ни одного
2. Всегда один
3. Любое количество

8.20 С точки зрения XML сериализации, значение типа "ХранилищеЗначения" относится:

1. К простым типам
2. К сложным типам
3. Применить средства XML сериализации к данному типу значения нельзя

8.21 Для обращения к свойствам элементов управления ActiveX из модуля формы используется:

1. Свойство ActiveX формы, содержащее коллекцию элементов управления ActiveX
2. Свойство "ЭлементыФормы"
3. Прямое указание имени элемента управления (без использования свойств формы)
4. Только реквизит формы, связанный с данным элементом управления ActiveX

8.22 При использовании универсальных механизмов обмена (в свою очередь использующих планы обмена) таблица регистрации изменений для объектов, изменение которых отправлено в сформированном сообщении:


2. Очищается после приема квитанции о приеме отправленного сообщения
3. Порядок определяется программистом


8.23 При использовании механизма распределенных баз данных таблица регистрации изменений для объектов, изменение которых отправлено в сформированном сообщении:

1. Очищается сразу после отправки сообщения
2. Очищается после приема квитанции о приеме отправленного сообщения
3. Порядок определяется программистом

8.24 С точки зрения XML сериализации, значение типа "КонстантаМенеджерЗначения.Имя константы" относится:

1. К простым типам
2. К сложным типам
3. Применить средства XML сериализации к данному типу значения нельзя

8.25 При работе с объектом "ИнтернетПочта" можно произвести выборку писем (либо заголовков):

1. За указанный период
2. Либо все, либо непрочитанные
3. Либо все, либо непрочитанные, либо прочитанные
4. За указанный период все, либо непрочитанные, либо прочитанные
5. Только все письма, находящиеся на сервере

ИнтернетПочта.ПолучитьЗаголовки (InternetMail.GetHeaders)

Описание: Формирует массив, содержащий объекты типа ИнтернетПочтовоеСообщение . Каждый объект содержит только заголовок сообщения. Выбираются заголовки всех сообщений, находящихся на сервере.

8.26 В качестве макета нельзя использовать:

1. Документ HTML
2. ActiveX элемент управления
3. Active документ
4. Можно использовать все из перечисленных
5. Файл программы Microsoft Word
6. Макет оформления компоновки данных

ActiveX не присутствует в списке типов макетов в редакторе макетов при создании нового макета, а файл программы Microsoft Word можно загрузить, как двоичные данные.

8.27 При использовании возможности организации универсального обмена данными процесс разрешения коллизий:

1. По умолчанию платформой не определяется
2. По умолчанию принимаются изменения, зарегистрированные в вышестоящей базе (по топологии)

3. По умолчанию принимаются изменения, зарегистрированные с более поздним временем
4. По умолчанию принимаются изменения, зарегистрированные в нижестоящей базе (по топологии)
5. По умолчанию принимаются изменения, зарегистрированные с более ранним временем

8.28 При работе с внешней компонентой (выберите наиболее правильное утверждение):

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

ЗагрузитьВнешнююКомпоненту (LoadAddIn) . Загружает внешний компонент и подключает ее объекты к 1С:Предприятию. Объекты этого компонента должны быть построены по технологии внешних компонентов COM.

8.29 При использовании планов обмена, управлять составом узлов, для которых производится регистрация изменений объектов:

1. Нельзя, регистрация производится для всех заведенных узлов
2. Нельзя, регистрация производится для всех заведенных узлов, не помеченных на удаление
3. Состав узлов, для которых идет регистрация изменений, может корректироваться при работе с объектом
4. Регистрация изменений производится без привязки к конкретному узлу плана обмена

8.30 Объект "ПреобразованиеXSL" предназначен...

1. для преобразования таблицы значения в файл программы Microsoft Excel
2. для преобразования табличного документа в файл программы Microsoft Excel
3. для преобразования XML документа в другой документ допустимого формата
4. для задания (и использования для перевода) соответствия между строковыми величинами и числовыми

Описание:
Предназначен для преобразования текстов XML . Технология преобразования основана на стандарте XSLT Version 1.0.

8.31 С помощью средств XML сериализации нельзя в XML документ сохранить значения, имеющие тип:

1. Хранилище значений
2. Картинка
3. Строка неограниченной длины
4. Верны 1 и 2 варианты
5. Нельзя сохранить все вышеуказанные типы значений
6. Можно сохранить значения всех вышеуказанных типов


8.32 Выберите правильное утверждение, касающееся элемента управления "поле HTML документа"

1. Позволяет просматривать только данные, полученные с помощью объекта HTTP-Соединение
2. Позволяет просматривать html документы, полученные любым способом, но расположенные только на локальной машине, с которой производится попытка просмотра
3. Позволяет просматривать html документы, полученные любым способом, но расположенные только в локальной сети, на которую распространяется область действия ключа защиты программного комплекса 1С:Предприятие 8.0
4. Позволяет просматривать html документы, как в локальной сети, так и в сети Интернет


8.33 Для отслеживания момента полной загрузки HTML документа в элементе управления "Поле HTML документа" можно использовать:

1. Флаг модифицированности формы
2. Обработчик события "Документ сформирован" данного элемента управления, в котором при этом производится проверка свойства URL на равенство заданному адресу ресурса
3. Проверку свойства "Значение" данного элемента управление на равенство "Неопределенно"
4. Проверку свойства "Значение" данного элемента управление на равенство "Null"
5. Проверку свойства "URL" данного элемента управление на равенство заданному адресу ресурса

8.34 Для получения почты посредством установленного на пользовательском компьютере почтового клиента используется объект:

1. Почта
2. ИнтернетПочта
3. ПочтовыйКлиент

8.35 При программном создании фабрики XDTO, типы в ней определенные:

1. могут расширяться за счет подключения программно создаваемых пакетов XDTO

3. не могут расширяться, определяются в полном объеме при создании

8.36 Типы определенные в глобальной фабрике XDTO :

1. могут расширяться за счет создания пакетов XDTO
2. могут расширяться за счет подключения дополнительных схем XML документов
3. не могут расширяться, определяются в полном объеме при создании информационной базы
4. могут расширяться за счет создания пакетов XDTO, изменения состава объектов конфигурации


8.37 Понятию "Фабрика XDTO" больше всего соответствует такое понятие XML как:

1. набор схем XML
2. схема XML документа
3. xml документ
4. пространство имен

Перечень возможных типов и их свойств фабрика берет из модели данных, которая в конечном итоге представляет собой просто набор схем XML.

Набор схем XML

8.38 Понятию "Пакет XDTO" больше всего соответствует такое понятие XML как:

1. набор схем XML
2. схема XML документа
3. xml документ
4. пространство имен

8.39 В рамках создаваемого пакета XDTO (без использования директивы импорта) можно использовать типы:

1. определенные только в данном пакете
2. определенные только в данном пакете и типы стандартные для XML
3. определенные только в данном пакете, типы стандартные для XML и типы производные от метаданных системы

8.40 В рамках модели XDTO понятие "Фасет" относится к:

1. тип объекта XDTO
2. тип значения XDTO
3. свойство XDTO
4. директива импорта

"Руководство разработчика 8.2" ст. 2-812.
ТИП ЗНАЧЕНИЯ XDTO в соответствии с правилами для simple type из схемы XML может определятся тремя способам:
- ограничением, когда задается базовый тип (свойство БазовыйТип) и набор ограничений на множество значений (свойство ФАСЕТЫ)…

8.41 При определении типа свойства объекта XDTO информация о типе включает:

1. только имя типа
2. имя типа и имя пространства имен
3. имя типа и имя пакета XDTO
4. имя типа и имя фабрики XDTO

8.42 Менеджер WEB сервисов решает задачу:

1. управление пулом соединений с информационными базами
2. поддержка WSDL описания сервиса, реализация протокола SOAP
3. поддержка работы WEB приложения
4. верны ответы 1,2
5. верны ответы 2,3
6. верны ответы 1,2,3

В основе сервисной архитектуры системы «1C:Предприятие 8» находится менеджер сервисов. Менеджер сервисов выполняет следующие функции: управление пулом соединений с информационными базами; поддержка WSDL описания сервиса; реализация протокола SOAP, сериализация сообщений, вызов соответствующего сервиса.

8.43 Объект конфигурации "WEB сервис" используется для:


2. организации обращения к web-сервисам по статической ссылке
3. экспорта функциональности данной информационной базы

1С:Предприятие - поставщик веб-сервисов.
В конфигурацию можно добавить специальный объект, - Web-сервис,- с помощью которого описать некоторую функциональность прикладного решения, например, получение списка имеющихся на некотором складе товаров, их количества и цен. После публикации на веб-сервере такой сервис будет доступен сторонним потребителям.

8.44 Объект конфигурации "WSСсылка" используется для:

1. организации динамического обращения к web-сервисам
2. организации обращения к web-сервисам по статической ссылке
3. экспорта функциональности данной информационной базы

8.45 В случае если функция, реализующая операцию WEB сервиса, возвращает какое-либо значение. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:

1. Строка
2. Число
3. Булево
4. элемент XML
5. объект или значение XDTO
6. верны ответы 1,2,3

Функция Получить(НомерДокумента) Экспорт // Получить объект расходной накладной по переданному номеру ДокументСсылка = Документы. РасходнаяНакладная. НайтиПоНомеру(НомерДокумента, ТекущаяДата() ) ; … РасходнаяНакладнаяТип = ФабрикаXDTO. Тип("http://www.MyCompany.ru/shipment" , "РасходнаяНакладная" ) ; … // Создать объект XDTO расходной накладной РасходнаяНакладная = ФабрикаXDTO. Создать(РасходнаяНакладнаяТип) ; … // Вернуть расходную накладную Возврат РасходнаяНакладная; КонецФункции

8.46 При обращении к WEB сервису по статической ссылке последовательность действий следующая:

1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса
2. настройка подключения (создание прокси), обращение к операции сервиса

8.47 При обращении к WEB сервису по динамической ссылке последовательность действий следующая:

1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса
2. настройка подключения (создание прокси), обращение к операции сервиса
3. обращение к операции сервиса

При использовании динамических ссылок описание веб - сервиса поставщика будет получаться системой «1С:Предприятие» каждый раз при вызове веб - сервиса, что, естественно, будет замедлять работу с данным веб - сервисом. Однако преимуществом такого подхода является возможность получения актуального описания веб - сервиса поставщика. При использовании же статических ссылок для получения актуального описания веб - сервиса следует выполнить повторный импорт WSDL - описания средствами конфигуратора и сохранение измененной конфигурации. См. также "Руководство разработчика 8.2" ст. 2-849, пункт 17.3.1

8.48 В случае если функция, реализующая операцию WEB сервиса, принимает какое-либо значение в качестве параметра. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:

1. Строка
2. Число
3. Булево
4. элемент XML
5. объект или значение XDTO
6. верны ответы 1,2,3

8.49 Каким образом можно определить в каких планах обмена для конкретного прикладного объекта указана авторегистрация?

1. В окне редактирования объекта, раздел "Обмен данными"
2. Посредством вызова окна "Палитра свойств" для данного объекта
3. Посредством вызова окна "Дополнительно" для данного объекта (закладка "Планы обмена")
4. Верно все вышеперечисленное
5. Верны ответы 1 и 3

В палитре свойств объекта нет информации об авторегистрации в планах обмена.

8.50 Для прикладных объектов в окне редактирования объекта конфигурации на закладке "Обмен данными" указываются...

1. объекты, при изменении которых в обмен должен попасть данный объект
2. объекты, которые должны попасть в обмен при изменении данного объекта
3. планы обмена, при выполнении обмена по которым будет происходить
изменение данного объекта
4. планы обмена, в которых будут учитываться изменения в данном объекте


8.51 Редактирование OLE-объектов осуществляется:

1. Встроенным в платформу редактором табличных документов
2. Встроенным в платформу редактором OLE-объектов
3. Приложением, связанным с OLE-объектом


8.52 Внешние файлы табличных документов:

1. Имеют расширение XML
2. Имеют расширение MXL
3. Могут иметь любое расширение
4. Не существуют. Все табличные документы встроены в Конфигурацию

8.53 Automation-сервер "1С:Предприятие 8"...

1. предоставляет доступ ко всем свойствам и методам своего глобального контекста
2. предоставляет доступ к дополнительным свойствам и методам для выполнения действий, специфичных для работы в режиме Automation
3. позволяет управлять приложением системы "1С:Предприятие 8" из других приложений, а также выполнять действия, аналогичные интерактивным
4. верны все указанные ответы

Описание: Система 1С:Предприятие может использоваться внешними приложениями в качестве Automation-сервера. При работе в качестве Automation-сервера 1С:Предприятие предоставляет доступ ко всем свойствам и методам своего глобального контекста, а также включение и выключение пользовательского интерфейса (главного окна 1С:Предприятия 8). Кроме того, Automation-сервер 1С:Предприятия имеет дополнительные свойства и методы для выполнения действий, специфичных для работы в режиме Automation. Основное назначение Automation-сервера 1С:Предприятие в управлении приложением 1С:Предприятия 8 из других приложений и выполнение действий аналогичных интерактивным действиям, например, построение отчетов.

8.54 Создание информационной системы с использованием нескольких информационных баз в системе 1С:Предприятие 8...

1. невозможно
2. реализуется полностью программным способом
3. реализуется с помощью объекта конфигурации "Планы обмена"
4. реализуется встроенным в платформу мастером обмена

Close