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

Привет Хабравчанам!

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

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


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

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

Когда-то в организации стояла программа, написанная на Дельфи и использующая в качестве БД MSSQL/Firebird. В те славные времена можно было подключиться к базе с помощью любого языка и совершить множество действий - выбрать абонентов-должников, разнести поступившие оплаты, зафиксировать показания приборов. Неудивительно, что коллекция скриптов, автоматизирующих рутину, постоянно росла. Программисты могли выполнять любые действия, не открывая саму программу.

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

Основные задачи, стоявшие передо мной - это возможность быстрого получения данных по конкретному лицевому счету - ФИО, адрес, приборы учета, показания приборов, платежи, начисления. Плюс формирование документов - акта сверки, платежной квитанции. Итак, возможность прямого соединения с БД отсутствует - каждый, кто просматривал базу 1С на SQL-сервере, видел, что в массе таблиц вида aaa1, aaa2 разобраться трудно. А строить запросы с такими названиями таблиц и полей просто нереально. К тому же, многие таблицы 1С (особенно самые важные, вроде среза последних, остатков и оборотов) являются виртуальными и разбросаны по разным физическим таблицам, собираясь множественными джоинами. Это способ не подходит.

Платфома 1С предоставляет возможность соединяться с ней через COM-соединение. Подобно многим windows-программам, во время установки 1С в системе регистрируются два COM-объекта - Automation Server и COM Connector. С обоими объектами можно работать, используя язык, в котором предусмотрена поддержка COM-технологии.

Объект Automation Server - это приложение 1С, почти ничем не отличающееся от обычного клиентского приложения. Разница в том, что дополнительно появляется возможность программного управления экземпляром приложения. При работе с объектом COM Connector запускается облегченный вариант 1С-приложения, в котором недоступны формы, а так же функции и методы, имеющие отношение к интерфейсу и визуальным эффектам. Само приложение запускается в режиме «Внешнее соединение». Инициализация глобальных переменных (например, определение текущего пользователя и его настроек) должна выполняться в модуле внешнего соединения 1С. Если в режиме внешнего соединения в коде будет вызвана функция, не доступная в этом режиме, то будет вызвано исключение (которое будет передано в наш питон-скрипт). Вызов небезопасных функций следует обрамлять конструкциями вида

#Если НЕ ВнешнееСоединение Тогда Предупреждение("Привет!"); #КонецЕсли

Поскольку работа с COM-объектами - технология исключительно windows-only, то не удивительно, что в стандартной поставке Питона она отсутствует. Потребуется установить расширение - набор модулей, предоставляющих весь нужный функционал для программирования под Windows на Питоне. Его можно скачать в виде уже собранного exe-установщика. Само расширение предоставляет доступ к реестру, службам, ODBC, COM-объектам и т.д. В качестве альтернативы можно сразу поставить дистрибутив ActiveState Python , в котором расширение Win32 поставляется из коробки.

Некоторое время я экспериментировал с COM-соединением в разработке веб-приложений, в частности, личного кабинета. Были выявлены следующие минусы:

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

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

Стратегия действий состоит в следующем: питон-скрипт соединяется с 1С, выполняет нужные запросы и выгружает данные в SQLite базу. К этой базе можно подключиться из Питона, PHP, Джавы. Большинство наших проектов работает на питоне, и так как я не выношу писать сырые SQL-запросы руками, то вся работа с базой SQLite выполняется через ORM SQLAlchemy. Потребовалось лишь описать структуру данных базы декларативном стиле:

From sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, Numeric, DateTime, Unicode, Boolean, LargeBinary, ForeignKey Base = declarative_base() class Abonent(Base): __tablename__ = "abonents" id = Column(Integer, primary_key=True) account = Column(Unicode(32), index=True) code = Column(Unicode(32)) address = Column(Unicode(512)) fio = Column(Unicode(256)) source = Column(Unicode(16)) psu = Column(Unicode(256)) tso = Column(Unicode(256)) np = Column(Unicode(256)) street = Column(Unicode(256)) house = Column(Integer) flat = Column(Integer) mro = Column(Unicode(256)) class Payment(Base): __tablename__ = "payments" # и так далее...

Теперь достаточно импортировать этот модуль в любой питон-проект, и можно работать с данными.

Предвижу ваш вопрос - «а почему SQLite»? Главная причина - база нужна только для чтения, поэтому проблемы с записью в SQLite нас волновать не должны. Во-вторых, формат этой этой СУБД удобен - ее удобнее просматривать (существуем множество бесплатных утилит, в том числе супер-расширение для FireFox). В-третьих, в некоторых случаях требовалось получить доступ к абонентам с тех машин, на которых нет соединения с MySQL-сервером. В таком случае достаточно скопировать файл SQLite-базы, и на этой машине будет доступ ко всей информации.

Выгрузка происходит раз в сутки ночью. Занесение данных в 1С можно автоматизировать таким же образом. Например, требуется фиксировать показания, оставленные абонентами на сайте личного кабинета. В этом случае опять соединяемся с 1С и программным методом создаем и проводим документ «Акт снятия показаний». Код я приведу чуть ниже.

Работа с COM-объектами в Питоне немного необычна. Во-первых, утрачивается «питоничность» кода - правила именования переменных и функций в 1С, мягко говоря, не соответствуют Дзену Питона. Во-вторых, всем известно, что объекты 1С зачастую именуются кириллическими символами, что вызовет проблемы при разработке на Питоне… но они решаемы. Предлагаю ознакомиться с кодом:

Import pythoncom import win32com.client V82_CONN_STRING = "Srvr=v8_server;Ref=v8_db;Usr=username;Pwd=megapass;" pythoncom.CoInitialize() V82 = win32com.client.Dispatch("V82.COMConnector").Connect(V82_CONN_STRING)

Как видно из кода, инициализируется клиент для работы с 1С. Определение COM-объекта происходит по имени «V82.COMConnector». Обратите внимание, что это название справедливо для платформы V8.2, если у вас версия 8.1, то имя будет «V81.COMConnector».

У инициализированного клиента мы вызываем метод Сonnect(), передавая ему строку подключения. Строка складывается из имени сервера, базы, пользователя и пароля. Полученный объект V82 хранит в себе соединение с приложением 1С. У него нет метода Disconnect() или чего-то в этом роде. Чтобы отключиться о базы, достаточно удалить объект из памяти функцией del() или присвоить переменной None.

Имея объект, можно обращаться к любым полям и методам глобального контекста 1С, оперировать универсальными объеками типа ТабличныйДокумент, ТаблицаЗначений и тд. Важно учесть, что при работе через COM-соединение 1С работает в режиме «Внешнее соединение». В нем недоступны любые функции для интерактивной работы, например, всплывающие диалоги, уведомления, и, что самое главное, формы. Уверен, что вы не раз проклянете разработчиков конфигурации, которые заключают самый важный функционал в процедуру Кнопка1Нажатие() в модуле формы документа.

Давайте поговорим о такой важдной вещи, как киррилические атрибуты. Не смотря на то, что 1С - двуязычная среда и для каждого русского метода есть англоязычный аналог, рано или поздно потребуется обратиться к киррилическому атрибуту. Если на языках PHP или VBSCript это не вызовет никаких проблем,

Set Con = CreateObject("v81.COMConnector") Set v8 =Con.Connect("строкаПодключения") Set СчетаМенеджер = v8.Документы.Счета.... Set СчетаЗапись= СчетаМенеджер.СоздатьЭлемент() СчетаЗапись.Контрагент = .... .... СчетаЗапись.Записать()

То код на питоне просто вылетит с ошибкой Syntax Error. Что же делать? Править конфигурацию? Нет, достаточно воспользоваться методами getattr и setattr. Передавая в эти функции COM-объект и кириллическое имя аттрибута, можно соответственно получать и устанавливать значения:

#coding=cp1251 catalog = getattr(V82.Catalogs, "ЛицевыеСчета")

Важно следующее: имена реквизитов, а так же параметры функций и методов должны передаваться в кодировке cp1251. Поэтому, чтобы заранее избежать путиницы с кодировками, имеет смысл объявить ее в начале файла: #coding=cp1251. После этого можно передавать строки, не волнуясь об их кодировке. Но! Все строки, полученные из 1С (результаты вызова функций, запросов), будут в кодировке UTF-8.

Пример кода, который выполняет в среде 1С запрос, перебирает результат и сохраняет в SQLite базу:

#coding=cp1251 q = """ ВЫБРАТЬ ЛицевыеСчета.Код КАК code, ЛицевыеСчета.Строение.НаселенныйПункт.Наименование + ", " + ЛицевыеСчета.КраткийАдрес КАК address, ЛицевыеСчета.Абонент.Наименование КАК fio, ЛицевыеСчета.Дивизион.Наименование КАК psu, ВЫРАЗИТЬ(ХарактеристикиЛицевыеСчетаСрезПоследних.Значение КАК Справочник.ТерриториальноСетевыеОрганизации).Наименование КАК tso, ЛицевыеСчета.Строение.НаселенныйПункт.Наименование КАК np, ЛицевыеСчета.Строение.Улица.Наименование КАК street, ЛицевыеСчета.Строение.Дом КАК house, ЛицевыеСчета.ОсновноеПомещение.НомерПомещения КАК flat, ЛицевыеСчета.Дивизион.Родитель.Наименование КАК mro ИЗ Справочник.ЛицевыеСчета КАК ЛицевыеСчета ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиЛицевыеСчета.СрезПоследних(, ВидХарактеристики = ЗНАЧЕНИЕ(Справочник.ВидыХарактеристик.ТерриториальноСетеваяОрганизация)) КАК ХарактеристикиЛицевыеСчетаСрезПоследних ПО ЛицевыеСчета.Ссылка = ХарактеристикиЛицевыеСчетаСрезПоследних.Объект """ query = V82.NewObject("Query", q) selection = query.Execute().Choose() CONN = db.connect() CONN.query(models.Abonent).delete() while selection.Next(): abonent = models.Abonent() abonent.account = selection.code.strip() abonent.code = selection.code abonent.fio = selection.fio abonent.address = selection.address abonent.psu = selection.psu abonent.tso = selection.tso abonent.source = u"ASRN" abonent.np = selection.np abonent.street = selection.street abonent.house = selection.house abonent.flat = selection.flat abonent.mro = selection.mro CONN.add(abonent) CONN.commit()

Здесь CONN - это сессия соединения с SQLite-базой. Создается объект запроса query, заполняется его текст. Как было замечено выше, текст запроса должен быть в cp1251, для чего вначале объявлена кодировка. После выполнения запроса в базе удаляются все абоненты, чтобы не добавить дубли, затем добавляются в цикле и следует финальный комит.

При работе с запросами я выявил следующие правила.

Выбирая поля, назначайте им названия латиницей, будет гораздо удобнее обращаться к ним через селектор (точку), вместо getattr().
- Выбирайте только примитиные типы данных: строки, числа, дату и булево. Никогда не выбирайте ссылки на объект (документ, справочник)! В данном контексте ссылки вам абсолютно не нужны и даже вредны, потому что любое обращение к реквизиту или методу ссылки приведет к запросу через COM-соединение. Если обращаться к атрибутам ссылки в цикле, то это будет крайне медленно.
- Если вы выбираете поле типа Дата, то оно буде возвращено как объект PyTime. Это специальный тип данных для передачи даты-времени в COM-соединении. С ним не так удобно работать, как с привычным datetime. Если передать этот объект в int(), то вернется timestamp, из которого потом можно получить datetime методом fromtimestamp().

Теперь рассмотрим, как формируются печатные документы. Дело в том, что потребителю нужно предоставлять возможность скачивать заранее подготовленные документы, например, платежную квитанцию или акт сверки. Эти документы формируются в 1С в соответствии установленным требованиям, их реализация на Питоне займет много времени. Поэтому лучше сгенерировать документы в 1С и сохранять их в формат Excel.

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

Link = getattr(V82.Catalogs, "ОтчетыСистемы").FindByDescription("Акт Сверки Элэн") nav_url = V82.GetURL(link, "Отчет") name = V82.ExternalReports.Connect(nav_url) ExternalReport = V82.ExternalReports.Create(name) setattr(ExternalReport, "ЛицевойСчет", reference) table_doc = ExternalReport.GetDoc() path = V82.GetTempFileName("xls") table_doc.Write(path, V82 .SpreadsheetDocumentFileType.XLS) report = models.Report() report.account = reference.Code.strip() report.type = u"act" report.document = open(path, "rb").read() CONN.add(report)

В приведенном фрагменте выполняется следующее. Подключается обработка, формирующая документ. Обработка может быть встроена в конфигурацию, храниться на диске или в базе данных 1С (в каком-то справочнике). Поскольку обработки часто меняются, то, чтобы каждый раз не обновлять конфигурацию, самые часто меняющиеся обработки хранятся в справочнике «ОтчетыСистемы», в реквизите типа «хранилище значения» с именем Отчет. Обработку можно инициализировать, выгрузив ее из базы на диск и подгрузив, либо методом GetURL(), в который нужно передать ссылку на элемент справочника и имя реквизита. Полученному объекту обработки мы назначаем значения реквизитов, вызываем экспортируемую функцию GetDoc(), получаем табличный документ, который сохраняется во временный Excel-файл. Содержимое этого файла записывается в SQlite-базу.

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

#coding=cp1251 acts = getattr(V82.Documents, "АктСнятияПоказаний") act = acts.CreateDocument() setattr(act, "Показание", 1024.23) setattr(act, "Абонент", "Иванов") # Заполнение прочих реквизитов... act.Write()
Теперь занесение данных автоматизированно.

Итак, я изложил способ, который основан на программной выгрузке и загрузке даных с использованием COM-соединния. Этот метод успешно функционирует в моей организации почти год. База, формируемая из 1С, обслуживает 3 платежные системы, интернет-эквайринг (оплата картами через интернет), а так же личный кабинет. Помимо этого, к базе подключаются различные скрипты для автоматизации рутины.

Несмотря на недостатки метода (медленная скорость COM-соединения), в целом он функционирует стабильно. У нас есть данные в платформонезависимом виде (SQLite), с которыми можно работать из любого языка. И основная часть кода написана на Питоне, а значит, доступны множество средств и приемов, о которых даже нельзя мечтать в 1С.

Это один из возможных способов взаимодейстия с 1С. Я уверен, что он не нов и наверняка уже был кем-то опробован, оптимизирован. Однако, я постарался изложить максимум деталей процесса, чтобы уберечь вас от подводных камней, на которые сам наступал.

Желаю всем удачи, и помните, что не так страшен 1С, как его малюют!

Во внешней программе, созданой на.NET Framework 4.x, необходимо просматривать список выбранных документов. Пользователь выбирает тип документа, затем формируется список документов в базе данных. В качестве отображаемых данных используется представление ссылки на документ.

На следующем скриншоте представлено главное окно программы.

Используя возможности Automation Client/Server мы можем подключиться к информационной базе 1С:Предприятия 8.x из любого приложения и получить необходимые данные. Более того, используя возможности платформы.NET Framework, мы можем использовать синтаксис языка программирования платформы для работы через COM-объект соединения.

Прежде чем перейти непосредственно к реализации программы, рассмотрим некоторые полезные возможности.NET 4.x, которые позволяют облегчить процесс работы с Automation Client/Serve r.

.NET 4.x и тип "dynamic"

В версии платформы.NET 4.x появилась возможность использования динамического типа данных "dynamic". Подробнее об особенностях использования этого типа данных Вы можете прочитать по следующей ссылке .

В общих чертах, тип "dynamic" позволяет работать с объектами типа "COM" в упрощенном виде. С его помощью обращение к свойствам и методам объекта осуществляется "через точку".

Ничего не напоминает? Код содержит кириллицу и очень схож с синтаксисом языка программирования платформы.

Реализация

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

Для установки соединения используется метод "GetConnection()", сохраняющий в глобальную переменную созданной COM-соединение. Программный код метода приведен на следующем скриншоте:

Перед разворачиванием списка срабатывает событие "DropDown", которое формирует список выбора по коллекции метаданных документов:

После выбора пользователем значения из выпадающего списка срабатывает событие "SelectedIndexChanged". Программный код обработчика следующий:


На этом все! Если строка подключения правильная и на машине установлен COM-объект "v82connector", то при выборе документа из списка метаданных мы увидим полный список документов выбранного типа.

Итоги

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

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

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

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

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

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

1. организации динамического обращения к web-сервисам

2. организации обращения к web -сервисам но статической ссылке

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

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

4. элемент XML

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

6. верны ответы 1, 2, 3

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

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

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

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

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

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

3. обращение к операции сервиса

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

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. невозможно

2. реализуется полностью программным способом

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

4. реализуется встроенным в платформу мастером обмена

9. Обслуживание прикладного решения

9.1 В каком порядке происходит установка платформы и конфигурации?

1. Необходимо сначала установить платформу, затем установить конфигурацию на основе шаблона

2. Необходимо сначала установить конфигурацию, а после платформу

3. Порядок установки не имеет значения

9.2 Обычная установка платформы "1С:Предприятие 8"...

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

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

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

4. предполагает установку локальной версии на одного пользователя

9.3 Что необходимо сделать для обновления технологической платформы при обычной установке 1С:Предприятия?

1. В режиме конфигуратора указать файл обновлений

2. Запустить программу установки, входящую в состав дистрибутива

3. В режиме конфигуратора указать файл поставки

9.4 Административная установка...

1. предполагает установку платформы на каждом отдельном пользовательском компьютере

2. предполагает установку платформы Администратором на одном компьютере, с дальнейшим копированием с него исполняемых файлов на рабочие места пользователей локальной сети

3. предполагает установку конфигурации на сервер 1С:Предприятие, с определением пользователя с правами доступа Администратора

9.5 При обновлении технологической платформы при административной установке 1С:Предприятия...

1. администратору достаточно обновить платформу только в месте административной установки, обновление платформы на локальных компьютерах смогут произвести сами пользователи

2. администратор должен обновить платформу в месте административной установки и на всех компьютерах локальной сети, пользователи не имеют права на обновление

3. администратор должен обновить платформу только па компьютерах локальной сети, пользователи имеют ту же возможность

4. администратор должен обновить платформу только на компьютерах локальной сети, пользователи не имеют такой возможности

9.6 Допускается ли при обычной установке 1С:Предприятия в клиент-серверном варианте, работа клиентского и серверного приложений разных релизов технологической платформы?

1. Допускается

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

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

9.7 Использование режима пакетного запуска...

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

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

3. позволяет выполнить синтаксический контроль и проверку конфигурации

4. правильный ответ I и 2

5. правильный ответ 1,2 и 3

9.8 Параметры запуска из командной строки 1С:Предприятие...

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

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

3. верпы ответы I и 2

4. пет правильного ответа

9.9 Что позволяет использование командной строки?

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

Для запуска системы 1С:Предприятие в качестве OLE Automation сервера из внешнего приложения, выполняется следующая последовательность действий:

  • создается объект с OLE идентификатором:
    • V1СEnterprise.Application - версия независимый ключ;
    • V77.Application - версия зависимый ключ;
    • V77S.Application - версия зависимый ключ, SQL версия;
    • V77L.Application - версия зависимый ключ, локальная версия;
    • V77M.Application - версия зависимый ключ, сетевая версия.
  • выполняется инициализация системы 1С:Предприятие методом Initialize.
  • вызываются атрибуты и методы системы 1С:Предприятие как OLE Automation сервера

Замечание
Поскольку программа 1С:Предприятие является одновременно OLE Automation сервером и OLE Automation клиентом, то возможно из 1С:Предприятие обращаться к другой копии 1С:Предприятие (например, к другой конфигурации) для обмена данными. В основном все современные программные продукты поддерживают механизм OLE Automation, это касается в частности MS Office, MS FoxPro и приложений на них написанных, DAO и т. п., поэтому программа 1С:Предприятие может полностью интегрироваться с ними
.

Замечание
Не локализованные версии внешних программ, обращающихся к программе 1С:Предприятие посредством OLE Automation, могут неправильно интерпретировать русские идентификаторы объектов агрегатных типов данных, например, реквизитов справочников. Данное замечание не относится к продуктам MS Office и к программам, использующим в качестве языка обращения к OLE объектам Microsoft Visual Basic. Рекомендуется использовать локализованные версии программных продуктов, либо в конфигурации использовать идентификаторы без символов кириллицы. Для обращения к атрибутам и методам агрегатных типов данных системы 1С:Предприятие из внешних приложений рекомендуется использовать их англоязычные синонимы
.

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

Атрибуты системы 1С:Предприятие как OLE Automation сервера

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

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

  1. Новый Base(СтрокаИнициализации)
  2. Новый OLEОбъект
  3. Новый COMОбъект
  4. Создание подобного объекта производится другими средствами
Правильный вариант синтаксиса - третий

Вопрос 08.51 экзамена 1С:Профессионал по платформе. Редактирование OLE-объектов осуществляется:
  1. Встроенным в платформу редактором табличных документов
  2. Встроенным в платформу редактором OLE-объектов
  3. Приложением, связанным с OLE-объектом
Правильный ответ третий, см. определение OLE-объекта.
Вопрос 08.53 экзамена 1С:Профессионал по платформе. Automation-сервер "1С:Предприятие 8"...
  1. предоставляет доступ ко всем свойствам и методам своего глобального контекста
  2. предоставляет доступ к дополнительным свойствам и методам для выполнения действий, специфичных для работы в режиме Automation
  3. позволяет управлять приложением системы "1С:Предприятие 8" из других приложений, а также выполнять действия, аналогичные интерактивным
  4. верны все указанные ответы
Правильный ответ четвертый - Automation дает практически полный доступ к приложению.
Вопрос 08.10 экзамена 1С:Профессионал по платформе. В процедуре, которая будет вызываться при подключении к базе данных через СОМ, нельзя использовать:
  1. ДокОбъект=Док.СоздатьДокумент()
  2. Форма.Открыть()
  3. Запрос=Новый Запрос
  4. Нет правильного ответа
Правильный ответ второй.

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

  1. в модуле приложения
  2. в модуле внешнего соединения
  3. в общем модуле
  4. в OLE модуле
Правильный ответ первый, Automation видит модуль приложения.
Вопрос 08.06 экзамена 1С:Профессионал по платформе. При обращении к базе данных 1С:Предприятие 8 через COMConnector выполняется процедура - обработчик события "ПриНачалеРаботыСистемы" определенный...
  1. в модуле приложения
  2. в модуле внешнего соединения
  3. в общем модуле
  4. в СОМ модуле
Правильный ответ второй, для COM доступны только модули с признаком "Внешнее соединение".

Загрузка...
Top