Сколько одновременных подключений поддерживает v77s application
Перейти к содержимому

Сколько одновременных подключений поддерживает v77s application

  • автор:

Сколько одновременных подключений поддерживает v77s application

Загрузка. Пожалуйста, подождите.

X

Сообщение сайта

(Сообщение закроется через 2 секунды)

Vofka —> Vofka

Просмотр профиля

Найти сообщения пользователя

20.07.11, 19:47

Решил серьезно заняться изучением OLE. Конечно OLE это не КД, но все же.

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

При установке 1С на компьютер в реестре регистрируется ряд компонент. Это
V81.Application
V81.COMConnector
V81.InfoBaseList
V81.InfoBaseListLink
V81.ServerAbout
V81.ServerAdminScope

Данная статья рассматривает два из этих объектов V81.Application, V81.COMConnector, служащих для подключения с использованием COM-технологий к базе 1С 8.1 не зависимо от того находится ли данная база на сервере или представлена в виде файлового варианта.

Так же мы рассмотрим нюансы подключения к базе из 1C v7.7.

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

Создание каркасной базы

Создадим новую конфигурацию

В ней мы создадим ПараметрСеанса МиниЛогЗапуска и глобальный модуль с атрибутами
Глобальный
Клиент
Сервер

Приведу код глобального модуля

#Если Клиент Тогда
Функция ВернутьТипПодключения() Экспорт
Возврат("Клиент");
КонецФункции
#Иначе
Функция ВернутьТипПодключения() Экспорт
Возврат("Сервер");
КонецФункции
#КонецЕсли


Функция ВернутьНеопределено() Экспорт
Возврат Неопределено;
КонецФункции

Функция ВернутьNULL() Экспорт
Возврат Null;
КонецФункции

Функция ВернутьИстину() Экспорт
Возврат Истина;
КонецФункции

Функция ВернутьЛожь() Экспорт
Возврат Ложь;
КонецФункции

Функция ВернутьСистемноеПеречисление()Экспорт
Возврат(ВидДвиженияНакопления.Расход);
КонецФункции

Функция ВернутьПараметр(ИмяПараметра)Экспорт
Попытка
Зн=ПараметрыСеанса[ИмяПараметра];
Исключение
Возврат Неопределено;
КонецПопытки;
Возврат Зн;
КонецФункции
//Кроме этих функций добавим функцию возвращающую по имени справочнк в виде ТаблицыЗначений
Функция ЗапросКСправочнику(ИмяСправочника) Экспорт
Попытка
МетСпр=Метаданные.Справочники[ИмяСправочника];
Исключение
Возврат Неопределено
КонецПопытки;
Запрос=Новый Запрос;
ТекстЗапроса="";
ТекстЗапроса="Выбрать Спр.Ссылка,Спр.ПометкаУдаления,Спр.Предопределенный,";
Если МетСпр.Иерархический Тогда
ТекстЗапроса=ТекстЗапроса+"Спр.Родитель,Спр.ЭтоГруппа,";
КонецЕсли;
Если МетСпр.ДлинаКода<>0 Тогда
ТекстЗапроса=ТекстЗапроса+"Спр.Код,";
КонецЕсли;
Если МетСпр.ДлинаНаименования<>0 Тогда
ТекстЗапроса=ТекстЗапроса+"Спр.Наименование,";
КонецЕсли;
Для Каждого Рекв из МетСпр.Реквизиты Цикл
ТекстЗапроса=ТекстЗапроса+"Спр."+Рекв.Имя+",";
КонецЦикла;
ТекстЗапроса=ТекстЗапроса+"Спр.Представление
|ИЗ Справочник."+ИмяСправочника+" КАК Спр";
Запрос.Текст=ТекстЗапроса;
Возврат(Запрос.Выполнить().Выгрузить());
КонецФункции

Так же определим процедуру в модуле внешнего соединения

Процедура ПриНачалеРаботыСистемы()
Попытка
ПараметрыСеанса.ПараметрСеанса1=СокрЛП(ПараметрыСеанса.ПараметрСеанса1)+"
|Внешнее Соединение";
Исключение
ПараметрыСеанса.ПараметрСеанса1="Внешнее Соединение";
КонецПопытки;
КонецПроцедуры
//И процедуру в модуле приложения
Процедура ПриНачалеРаботыСистемы()
Попытка
ПараметрыСеанса.ПараметрСеанса1=СокрЛП(ПараметрыСеанса.ПараметрСеанса1)+"
|Приложение";
Исключение
ПараметрыСеанса.ПараметрСеанса1="Приложение";
КонецПопытки;
КонецПроцедуры

Так же добавим ещё один не глобальный модуль с атрибутами
Клиент
Сервер

И с единственной функцией

Функция ВозвратСтроки() Экспорт
Возврат("ОбщийМодуль1");
КонецФункции

Application и ComConnector сравнение соединение из 1С 8

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

Для целого ряда методов в синтаксис помощнике указанно «Не используется в модуле внешнего соединения». Это упоминание не даёт полной картины.

Объект V81.Application соответствует объекту V77.Aplication, а именно происходит загрузка сервера с интерфейсными библиотеками в режиме клиент, объект же V81.COMConnector при загрузке не имеет ничего из того что отвечает за интерфейс с пользователем, что повышает производительность при работе с внешним соединением.

Создаём обработку в нашей конфигурации, для проверки вызова наших методов.

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

Перем cntr,connection;
Функция ОткрытиеБазы(ТипОткрытия)
cntr = Новый COMObject(ТипОткрытия);
connection=Истина;
Попытка
Если ЭлементыФормы.Панель1.ТекущаяСтраница.Заголовок="Файловая версия" Тогда
connection = cntr.Connect("File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
Иначе
connection = cntr.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
КонецЕсли;
Исключение
Предупреждение(ОписаниеОшибки());
connection=Ложь;
КонецПопытки;
Возврат connection;
КонецФункции

В переменной открытия мы передаём либо строку «V81.Application», либо строку «V81.ComConnector»

При этом для V81.Application возвращается Истина в connection, а cntr является нашим объектом через который мы обращаемся к базе

Для ComConnector в connection возвращается объект для обращения к базе, а cntr является объектом описанным в синтаксис помощнике как COM-соединитель.

Свойства и методы COM-соединителя.

HighBoundDefault Свойство, только чтение, Тип: Число. Содержит верхнюю границу диапазона IP портов сервера кластера по умолчанию.
LowBoundDefault Свойство, только чтение, Тип: Число. Содержит нижнюю границу диапазона IP портов сервера кластера по умолчанию.
MaxConnections
Свойство, только чтение, Тип: Число.

Определяет максимальное число одновременно существующих объектов COM-соединение, созданных через данный COM-соединитель.

Число одновременно существующих соединений включает также число соединений, находящихся в пуле COM-соединений. Значением по умолчанию 0 (число одновременно существующих объектов COM-соединение не ограничено).

Устанавливать свойству не нулевое значение можно только в том случае, если сам объект COM-соединитель был создан в Multithreaded Apartment (MTA), что обеспечивает реальное функционирование самого COM-соединителя и созданных им объектов COM-соединение в многопотоковой (multithreaded) среде. Это условие соблюдается в частности, если COM-соединитель был создан в приложении ASP.NET.

Если же объект COM-соединитель был создан в Singlethreaded Apartment (STA), то реально все действия с COM-соединителем и созданными им объектами COM-соединение будут выполняться в одном потоке. В этом случае, если метод Connect не сможет на первом проходе найти подходящее или создать новое COM-соединение, то выполнение этого метода зациклится, так как освободить уже, возможно, ненужное другое COM-соединение будет нельзя по той причине, что операция освобождения объекта COM-соединение должна быть выполнена в том же потоке, в котором уже выполняется метод Connect.

Следует помнить, что создание COM-объектов из приложения 1C:Предприятие 8.1 выполняется из STA. Это же справедливо для большинства GUI-приложений Windows.
PoolCapacity Свойство, только чтение, Тип: Число. Максимальное количество соединений с информационной базой, которые могут одновременно находиться в пуле.
PoolTimeout Свойство, только чтение, Тип: Число. Максимальное время нахождения в пуле неиспользуемого соединения с информационной базой. После истечения этого времени неиспользуемое соединение освобождается.
RAgentPortDefault Свойство, только чтение, Тип: Число. Содержит номер IP порта агента сервера по умолчанию.
RMngrPortDefault Свойство, только чтение, Тип: Число. Содержит номер IP порта менеджера кластера по умолчанию.
Connect (Connect)
Синтаксис:
Connect()

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

Строка соединения представляет собой набор параметров, каждый из которых является фрагментом вида: , где Имя параметра — имя параметра, а Значение — его значение. Фрагменты отделяются друг от друга символами ‘;’. Если значение содержит пробельные символы, то оно должно быть заключено в двойные кавычки («).

Для файлового варианта определен параметр: File — каталог информационной базы (файловый режим);

Для клиент-серверного варианта определены параметры: Srvr — имя сервера 1С:Предприятия; Ref — имя информационной базы на сервере;

Для всех вариантов определены параметры: Usr — имя пользователя; Pwd — пароль и UC позволяет выполнить установку соединения с информационной базой, на которую установлена блокировка установки соединений.

Если при установке блокировки задан непустой код доступа, то для установки соединения необходимо в параметре /UC указать этот код доступа.

Возвращаемое значение:
Тип: COM-соединение.

Создает соединение с информационной базой 1С:Предприятия 8.1.

Устанавливает соединение с информационной базой 1С:Предприятия 8.1 и возвращает ссылку на объект COM-соединение.

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

Параметры:
(обязательный)
Тип: Строка. Идентификатор протокола (по умолчанию tcp), имя компьютера или IP адрес агента сервера (обязательно), номер IP порта агента сервера (по умолчанию 1540). Например, значением параметра могут быть следующие строки: «server1», «tcp://server1», «tcp://server1:1540», «server1:1540».

Возвращаемое значение:
Тип: Соединение с агентом сервера.

Выполняет подсоединение к агенту сервера 1С:Предприятия 8.1, работающему на указанном серверном компьютере.

Если подсоединение невозможно, то вызывается исключение.
ConnectWorkingProcess (ConnectWorkingProcess)
Синтаксис:
ConnectWorkingProcess()

Параметры:
(обязательный)
Тип: Строка. Имя или IP адрес рабочего процесса, с которым должно быть установлено соединение, в формате: ://: Например:
testcomp
tcp://testcomp
tcp://testcomp:2354
tcp://43.73.34.11:5342.

Возвращаемое значение:
Тип: Соединение с рабочим процессом.

Создает административное соединение с рабочим процессом кластера серверов 1С:Предприятия 8.1.

Для установки соединения с базой надо методу Connect нашего объекта передать строку соединения Для файловой версии данная строка содержит параметры:
File с указанием пути к папке с файлом базы
Usr с указанием имени прользователя
Pwd с указанием пароля прользователя

Для соединения с сервером Usr и Pwd прежние параметры, а вот вместо File два параметра Srvr с указанием имени сервера и Ref с указанием имени Базы

Вызовы из восьмёрки через Application и ComConnector

Пробуем организовать вызов функций нашей конфигурации из обработки на 8.1

Пишем процедуру вызова функций с определением, что возвращается при вызове

Процедура ОсновныеДействияФормыВызовФункции(Кнопка)
Если Не ОткрытиеБазы("V81.Application") Тогда Возврат; КонецЕсли;
Сообщить("Вернули неопределено? "+(cntr.ВернутьНеопределено()=Неопределено));
Сообщить("Вернули NULL? "+(cntr.ВернутьNULL()=NULL));
Сообщить("Вернули Истину? "+(cntr.ВернутьИстину()=Истина));
Сообщить("Вернули Ложь? "+(cntr.ВернутьЛожь()=Ложь));
Сообщить("Вернули параметр "+cntr.ВернутьПараметр("ПараметрСеанса1"));
Сообщить("Не глобальный модуль "+cntr.ОбщийМодуль1.ВозвратСтроки());
Сообщить("ТипПодключения="+cntr.ВернутьТипПодключения());
cntr = "";
КонецПроцедуры

Рассмотрим лог сообщений:
Вернули неопределено? истина
Вернули NULL? истина
Вернули Истину? истина
Вернули Ложь? истина
Вернули параметр Приложение
Не глобальный модуль ОбщийМодуль1
ТипПодключения=Клиент

Что это нам даёт?

Значения типа неопределено,NULL,Истина,Ложь передаются в соединение с базой корректно.

Модуль внешнего соединения при подключении через V81.Application не отрабатывает.

Модуль приложения при подключении через V81.Application отрабатывает.

Тип подключения, в котором мы подключаемся к базе, соответствует типу подключения клиент

Пишем аналогичную процедуру, но уже с использованием ComConnector

Процедура ОсновныеДействияФормыВызовФункции2(Кнопка)
Если ОткрытиеБазы("V81.ComConnector")<>Ложь Тогда
Сообщить("Вернули неопределено? "+(connection.ВернутьНеопределено()=Неопределено));
Сообщить("Вернули NULL? "+(connection.ВернутьNULL()=NULL));
Сообщить("Вернули Истину? "+(connection.ВернутьИстину()=Истина));
Сообщить("Вернули Ложь? "+(connection.ВернутьЛожь()=Ложь));
Сообщить("Вернули параметр "+connection.ВернутьПараметр("ПараметрСеанса1"));
Сообщить("Не глобальный модуль "+connection.ОбщийМодуль1.ВозвратСтроки());
Сообщить("ТипПодключения="+connection.ВернутьТипПодключения());
cntr = "";connection="";
КонецЕсли;
КонецПроцедуры

Лог сообщений у нас отличается в строчках
Вернули Параметр Внешнее Соединение
ТипПодключения=Сервер

То есть при обращении через объект V81.ComConnector подключение осуществляется в режиме север, даже если мы подключаемся к локальной файловой базе.

Теперь попробуем обратиться к нашим объектам, ну хотя бы к V81.Application из 1С 7.7

Пишем примерно тот же код

Перем НомерЗакладки;
Перем connection,cntr;
Перем Истина,Ложь;
Функция ОткрытиеБазы(ТипОткрытия)
cntr = СоздатьОбъект(ТипОткрытия);
Попытка
Если НомерЗакладки=1 Тогда
connection = cntr.Connect("File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
Иначе
connection = cntr.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
КонецЕсли;
Исключение
Предупреждение(ОписаниеОшибки());
КонецПопытки;
КонецФункции
Функция ВызовФункций()
ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
Сообщить("Вернули неопределено= "+cntr.ВернутьНеопределено());
Сообщить("Вернули NULL= "+cntr.ВернутьNULL());
Сообщить("Вернули Истину= "+cntr.ВернутьИстину());
Сообщить("Вернули Ложь= "+cntr.ВернутьЛожь());

КонецЕсли;
cntr = "";
КонецФункции

Истина=-1;Ложь=0;

Лог сообщений выглядит так
Вернули неопределено=
Вернули NULL=
Вернули Истину= -1
Вернули Ложь= 0

Так мы убеждаемся что Ложь соответствует 0, Истина -1, а NULL и неопределено ничего в стандартах 1Cv7.7 не возвращают

Как же отличить NULL от неопределено?

Для этого у объекта cntr в случае V81.Application и у connection в случае V81.ComConnector есть метод String

В описание данного метода сказано «Получает строковое представление значения произвольного типа».

Пробуем использовать этот метод из 7.7

Добавив в нашу Функцию ВызовФункций() несколько строк кода

Сообщить("ВернулиНеопределено="+cntr.String(cntr.ВернутьНеопределено()));
Сообщить("ВернулиNULL="+cntr.String(cntr.ВернутьNULL()));
Сообщить("ВернулиСистемноеПеречисление="+cntr.String(cntr.ВернутьСистемноеПеречисление()));

Результат в логе сообщений
ВернулиНеопределено=Неопределено
ВернулиNULL=
ВернулиСистемноеПеречисление=Расход

Так мы отмечаем что NULL возвращается пустой строкой, неопределено строкой «Неопределено» и системное перечислени своим представлением

Итак, у нас есть конфигурация с модулем, но у неё нет метаданных.

Добавим перечисление, справочник, и три константы одну типа строка, одну типа перечисления и одну составного типа

Разбор метаданных через ОЛЕ

Добавим в обработку на 1С 7.7 и 8.1 функцию работы с метаданными

Функция РаботаСметаданными()
ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
Сообщить("Версия "+cntr.Метаданные.Версия);
Сообщить("==================Константы==================");
Для Инд=0 по cntr.Метаданные.Константы.Количество()-1 Цикл
Конст=cntr.Метаданные.Константы.Получить(Инд);
Сообщить(Конст.Имя);
Сообщить("Тип:");
Массив = Конст.Тип.Типы();
Типов = Массив.Количество() - 1;
для а = 0 по Типов цикл
сообщить(cntr.String(Массив.Получить(а)));
конеццикла;
КонецЦикла;
cntr = "";
КонецЕсли;
КонецФункции

Сохраним обработки и запустив просмотрим лог сообщений
Версия V81.Application
==================Константы==================
Константа1
Тип:
Строка
Константа2
Тип:
Справочник ссылка: Справочник1
Константа3
Тип:
Справочник ссылка: Справочник1
Перечисление ссылка: Перечисление1

Мы можем получить тип любых метаданных используя этот пример и описание работы с метаданными

Использование менеджеров для работы с данными через ОЛЕ

Мы прояснили процесс работы с метаданными, а теперь обратимся к работе с данными

Функция РаботаСБазой()
ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
Стр="";
Если ВвестиСтроку(Стр,"Наименование",40)=1 Тогда
Эл=cntr.Справочники.Справочник1.НайтиПоНаименованию(СокрЛП(Стр));
Если Эл.Пустая()=Истина Тогда
Эл=cntr.Справочники.Справочник1.СоздатьЭлемент();
Эл.Наименование=СокрЛП(Стр);
Эл.Записать();
Сообщить("ЗначениеВСтрокуВнутр="+cntr.ЗначениеВСтрокуВнутр(Эл.Ссылка));
Сообщить("XMLСтрока="+cntr.XMLСтрока(Эл.Ссылка));
Сообщить("=======XMLТипЗнч======");
XMLРез=cntr.XMLТипЗнч(Эл.Ссылка);
Сообщить("URIПространстваИмен="+XMLРез.URIПространстваИмен);
Сообщить("ИмяТипа="+XMLРез.ИмяТипа);
КонецЕсли;
cntr.Константы.Константа3.Установить(Эл.Ссылка);
КонецЕсли;
КонецЕсли;
cntr = "";
КонецФункции

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

Создадим элемент и просмотрим лог сообщений

Запросы,Конструкторы запросов и произвольные объекты 8.* через ОЛЕ

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

Функция РаботаСЗапросами()
ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
Констр=cntr.NewObject("КонструкторЗапроса");
Если Констр.ОткрытьМодально()=Истина Тогда
ТекстЗапроса=Констр.Текст;
cntr = "";
ОткрытиеБазы("V81.ComConnector");
Запрос=connection.NewObject("Запрос");
Запрос.Текст=ТекстЗапроса;
Рез=Запрос.Выполнить().Выгрузить();
Таб=СоздатьОбъект("Таблица");
Для Инд=0 по Рез.Колонки.Количество()-1 Цикл
Кол=Рез.Колонки.Получить(Инд);
Обл=Таб.Область("R1C"+Строка(Инд+1));
Обл.Текст=Кол.Имя;
Конеццикла;
Для Инд=0 по Рез.Количество()-1 Цикл
Стр=Рез.Получить(Инд);
Кол=0;
Для Кол=0 по Рез.Колонки.Количество()-1 Цикл
Обл=Таб.Область("R"+Строка(Инд+2)+"C"+Строка(Кол+1));
Обл.Текст=connection.String(Стр.Получить(Кол));
КонецЦикла;
КонецЦикла;
Таб.Показать();
Иначе
Сообщить("!Запрос не создан");
КонецЕсли;
КонецЕсли;
cntr = "";
connection = "";
КонецФункции

В данном примере мы сначала пользуемся V81.Application, у которого есть интерфейсные библиотеки и методом NewObject (являющимся конструкцией языка 1С 8.* Новый) для вызова конструктора запроса.

Потом мы закрываем базу, и подключившись через V81.ComConnector создаём сам запрос и результат запроса в линейном порядке выводим в объект 7.7 таблица.

В принципе такой порядок использования запроса необязателен, но из ComConnector мы не сможем вызвать метод ОткрытьМодально() по причине отсутствия интерфейсных библиотек.

Проблема булева типа из 7.7 (можем передать, но не можем вернуть)

Изменим структуру нашей базы, а именно. Для Константы Константа1 изменим тип с простого типа Строка на составной Булево,Число

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

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

Функция РаботаСЗапросами()
ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
Констр=cntr.NewObject("КонструкторЗапроса");
Если Констр.ОткрытьМодально()=Истина Тогда
ТекстЗапроса=Констр.Текст;
cntr = "";
ОткрытиеБазы("V81.ComConnector");
Запрос=connection.NewObject("Запрос");
Запрос.Текст=ТекстЗапроса;
Рез=Запрос.Выполнить().Выгрузить();
Таб=СоздатьОбъект("Таблица");
Для Инд=0 по Рез.Колонки.Количество()-1 Цикл
Кол=Рез.Колонки.Получить(Инд);
Обл=Таб.Область("R1C"+Строка(Инд+1));
Обл.Текст=Кол.Имя;
Конеццикла;
Для Инд=0 по Рез.Количество()-1 Цикл
Стр=Рез.Получить(Инд);
Кол=0;
Для Кол=0 по Рез.Колонки.Количество()-1 Цикл
Обл=Таб.Область("R"+Строка(Инд+2)+"C"+Строка(Кол+1));
Обл.Текст=connection.String(Стр.Получить(Кол));
КонецЦикла;
КонецЦикла;
Таб.Показать();
Иначе
Сообщить("!Запрос не создан");
КонецЕсли;
КонецЕсли;
cntr = "";
connection = "";
КонецФункции

Вызов из 77 я описывать не буду, он уже для вас довольно тривиален.

В принципе вместо напсиания данного кода мы можем, запустив восьмёрку, вычислить выражение в табло и убедиться, что ЗначениеВстрокуВнутр(Истина)= ЗначениеВстрокуВнутр(Ложь)=

Определим функцию работы с нашей константой в обработке вызываемой из 7.7

Функция УстановитьИстина()

ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
cntr.Константы.Константа1.Установить(cntr.ЗначениеИзСтрокиВнутр(""));
Сообщить(cntr.Константы.Константа1.Получить());
Сообщить(cntr.ЗначениеВстрокуВнутр(cntr.Константы.Константа1.Получить()));
cntr = "";
КонецЕсли;
КонецФункции

Функция УстановитьЛожь()
ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
cntr.Константы.Константа1.Установить(cntr.ЗначениеИзСтрокиВнутр(""));
Сообщить(cntr.Константы.Константа1.Получить());
Сообщить(cntr.ЗначениеВстрокуВнутр(cntr.Константы.Константа1.Получить()));
cntr = "";
КонецЕсли;
КонецФункции

Функция УстановитьЧисло()
ОткрытиеБазы("V81.Application");
Если connection=Истина Тогда
Чис=0;
Если ВвестиЧисло(Чис,"Константа1",12,2)=1 Тогда
cntr.Константы.Константа1.Установить(Чис);
Сообщить(cntr.Константы.Константа1.Получить());
Сообщить(cntr.ЗначениеВстрокуВнутр(cntr.Константы.Константа1.Получить()));
cntr = "";
КонецЕсли;
КонецЕсли;
КонецФункции

Функция РаботаСконстантой()
Меню=СоздатьОбъект("СписокЗначений");
Меню.ДобавитьЗначение("УстановитьИстина()","Установить Истина");
Меню.ДобавитьЗначение("УстановитьЛожь()","Установить Ложь");
Меню.ДобавитьЗначение("УстановитьЧисло()","Установить Число");
Зн="";
Поз=0;
Если Меню.ВыбратьЗначение(Зн,,Поз,,1)=1 Тогда
Шаблон("["+Зн+"]");
КонецЕсли;
КонецФункции

Рассмотрим лог сообщений после вызова всех трех вариантов функций и просмотра базы в режиме предпрития
-1

0

56

Какой вывод мы можем сделать из этого лога

Что тип булево возвращается стороннему приложению как число.

Мы можем установить значение булева и любого неизвестного 7.7 типа через ЗначениеИзСтрокиВнутр, но как минимум в случае с булевым типом мы не сможем его прочитать обратно иначе чем число.

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

Проблема времени из 7.7 (не можем передать)

Добавляем в нашу базу регистр накопления и документ регистратор и пишем в 7.7 простую функцию, формирующую движения данного документа

Функция ТипаПереносОстатков()
Попытка
ОткрытиеБазы("V81.ComConnector");
Исключение
Сообщить("Не удалось открыть базу с заданными параметрами");
Возврат "";
КонецПопытки;
Стр="";
Если ВвестиСтроку(Стр,"Справочник",50)=1 Тогда
Спр=connection.Справочники.Справочник1.НайтиПоНаименованию(Стр);
Если Спр.Ссылка=connection.Справочники.Справочник1.ПустаяСсылка() Тогда
Спр=connection.Справочники.Справочник1.СоздатьЭлемент();
Спр.Наименование=Стр;
Спр.Записать();
КонецЕсли;
Док=connection.Документы.Документ1.СоздатьДокумент();
Док.Дата=connection.ЗначениеИзСтрокиВнутр("");
Док.Реквизит1=Спр.Ссылка;
Док.Записать();
Движение=Док.Движения.РегистрНакопления1.ДобавитьПриход();
Движение.Период=connection.ЗначениеИзСтрокиВнутр("");
Движение.Измерение1=Спр.Ссылка;
Движение.Ресурс1=15;
Док.Движения.РегистрНакопления1.Записать();
Сообщить(connection.String(Док.Ссылка));
КонецЕсли;
connection = "";
cntr = "";
КонецФункции

Рассмотрим лог сообщений
Документ1 000000001 от 31.12.2008 0:00:00

Вывод из этого лога прост. Время даже при передаче через ЗначениеИзСтрокиВнутр теряется.

Класс не существует

И в заключении. Если выскакивает ошибка с «Класс не существует», значит, что не зарегистрирован COM-объект 1С:Предприятия.

Для регистрации V81.COMConnector необходимо выполнить:
regsvr32 «C:\Program Files\1cv81\bin\comcntr.dll»

Для регистрации V81.Application необходимо выполнить:
«C:\Program Files\1cv81\bin\1cv8.exe» /regserver

[необходимо зарегистрироваться для просмотра ссылки]

От себя добавлю: статья оригинал для 8.1, поэтому и разместил её в разделе для 8.1. Для 8.2 всё, если не совсем так, то очень близко

ipsclass->input[‘t’] тема —>

Сколько одновременных подключений поддерживает v77s application

Добро пожаловать, Гость. Пожалуйста Войдите или Регистрация
Новости:

Наверх

1С++ users forum › 1С++ и прочие расширения v7 › Курилка › Сервер приложений для v7

(Группа Модераторов: 1c++ moderator)

Переключение на Главную СтраницуСтраницы: [1] Отправить Печать
Сервер приложений для v7 (число прочтений — 22102 )

Вопросы и ответы

Дистрибутив последней версии программы TimeControl можно скачать по ссылкам из следующих документов:

Системы учета рабочего времени:

  • Дистрибутив TimeControl Office Lite Card
  • Дистрибутив TimeControl Office Lite BIO
  • Дистрибутив TimeControl Office Medium
  • Дистрибутив TimeControl Factory #2
  • Дистрибутив TimeControl Factory #3
  • Дистрибутив TimeControl Factory Face

Системы учета рабочего времени и контроля доступа:

  • Дистрибутив TimeControl Office Pass Card
  • Дистрибутив TimeControl Factory Pass Card
  • Дистрибутив TimeControl Factory Pass (TCP\IP терминал учета по отпечаткам пальцев и бесконтактным картам)

Посмотрите в файле: «Технические требования к оборудованию для работы TimeControl»

1. Сетевые терминалы (TCP\IP) по умолчанию используют порт 5010. На некоторых версиях он может быть перенастроен. Сетевые карточные конвертеры используют порт 1000. Он может быть перенастроен.

2. Для работы с базой данных программа использует порт 3053 (может быть изменен в настройках).

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

4. WEB аналитика использует порт 5053. Если необходимо, чтобы доступ через браузер или с мобильного телефона был доступен из сети интернет, то у Вашей сети должен быть внешний статический IP адрес и настроена проброска порта 5053 на компьютер с программой TimeControl.

Везде используется TCP\IP подключение.

Прочитайте статью «Варианты подключения TCP\IP терминалов в TimeControl».

Если Вашей камеры нет в списке, напишите нам и мы проверим, возможно использовать модуль фотофиксации с Вашей моделью или нет. Как правило, практически все модели IP камер работают с нашими системами учета рабочего времени и контроля доступа. В списке представлены лишь те камеры, к котором уже осуществляли подключение наши клиенты.

  • DCS-1100, DCS-1130,
  • DCS-2102, DCS-2121,
  • DCS-2103, DCS-2130,
  • DCS-3110, DCS-3410, DCS-3411, DCS-3415, DCS-3430, DCS-3710
  • DCS-5230,DCS-5605, DCS-5635
  • DCS-6111, DCS-6410, DCS-6510, DCS-6511, DCS-6817, DCS-6818
  • DCS-7110, DCS-7410, DCS-7510, DCS-7510
  • DVS-210-1, DVS-310-1

D-Link

D-Link

  • DCS-3110, DCS-5610, DCS-6110

D-Link

  • DCS-900

D-Link

  • DCS-2000+, DCS-2100, DCS-2120, DCS-3230, DCS-5220, DCS-5300, DCS-6620(G)

Panasonic

  • WV-NP244, WV-NF284, WV-NW484, WV-NS202, WV-NS202A, WV-NS954, WV-NW964, WV-NF302, WV-NP304, WV-NP1004, WJ-NT304, WJ-NT314, WV-NP502, WV-NW502, WJ-GXE500, WV-SP30X Series, WV-SF33X Series, WV-SC385, WV-SP10XSeries

Panasonic

  • BL-C1, BL-C10, BL-C111, BL-C131, BL-C20, BL-C210, BL-C230, BL-C30, BL-C140, BL-C160, BL-C121
  • KX-HCM10, KX-HCM8
  • WV-NP502, WV-NW502,
    WV-SP305, WV-SP306, WV-SP302, WV-SF336, WV-SF335, WV-SF332, DG-SP306, DG-SF335 (все с прошивкой >= v1.30),
    WV-SF342, WV-SF346 (все с прошивкой >= v1.30),
    DG-SP304V, DG-SF334 (все с прошивкой >= v1.30),
    WV-SP105, WV-SP102, DG-SP102 (все с прошивкой >= v1.30),
    WV-SC385, DG-SC385,
    WV-SW395, DG-SW395,
    WV-SC384, BB-SC384,
    WV-SW355, WV-SW352, DG-SW355,
    WV-SW155, WV-SW152, DG-SW155, DG-SW152,
    WV-SF135, WV-SF132, DG-SF135,
    BB-HCM715, BB-HCM735, BB-HCM705,
    BB-HCM701,
    BB-HCM515, BB-HCM511, BB-HCM531,
    BB-HCM580, BB-HCM581, BB-HCM527, BB-HCM547

Beward

Beward

Planet

  • ICA-HM101
  • DS-I102, DS-I103
  • DS-I202(C)

ACTi

  • ACM-4201

Dahua

  • DH-IPC-HDBW1120EP-W-0280B (купольная, уличная)
  • DH-IPC-K35P

Dahua

  • DH-IPC-HDW1020SP-W-0280B (купольная)

TP-LINK

  • NC220 , NC250

TP-LINK

  • NC220 (c обновленной прошивкой 1.3.0)

HTVision

  • HTVision D2018

1-й Способ (рекомендуется):

На диске с программой есть клиентская версия. Находится в папке utils. Устанавливаем ее на клиентской машине и при установке указываем IP компьютера, на котором стоит основная версия программы.

2-й Способ:

Система учета рабочего времени сотрудников TimeControl позволяет работать с единой базой данных в рамках локальной сети. Для запуска программы на другом компьютере (далее КЛИЕНТ) в локальной сети необходимо открыть доступ к папке TimeControl на компьютере с установленной программой (далее СЕРВЕР) и создать ярлык на компьютере КЛИЕНТ на файл TimeControl.exe с компьютера СЕРВЕР.

Для этого откройте папку TimeControl с КЛИЕНТА через сетевое окружение. Выберите файл TimeControl.exe и в контекстном меню выберите пункт «Отправить->Рабочий стол (создать ярлык)».

Далее откройте свойства ярлыка и добавьте параметры port=3053 и server=IP или ИМЯ компьютера СЕРВЕР.

К примеру, «192.168.10.151:C:\Program Files\TimeControl\TimeControl.exe» port=3053 server=192.168.10.151

После этого программа учета рабочего времени сотрудников TimeControl станет доступной на компьютере КЛИЕНТ.

Обращаем Ваше внимание, что на основном компьютере должны быть открыты порты: 3053 и 4053. Так же, клиентскую версию необходимо зарегистрировать. Делается это бесплатно. Про регистрацию смотрите в вопросах и ответах.

Система учета рабочего времени TimeControl использует журнал событий Windows для протоколирования изменений и ошибок. Переполнение журнала событий может приводить к некорректной работе программы.

Для корректной настройки журнала войдите в «Панель управления» Windows в раздел «Администрирование». Откройте «Просмотр событий» и выберите журнал «Приложение». Нажмите правой кнопкой мыши и выберите «Свойства» и укажите настройку очистки журнала «Переписывать события при необходимости (сначала старые события)».

Повторите эти действия для остальных журналов («Безопасность», «Установка», «Система»).

1-й Способ (рекомендуется):

На диске с программой есть клиентская версия. Находится в папке utils. Устанавливаем ее на клиентской машине и при установке указываем IP компьютера, на котором стоит основная версия программы.

2-й Способ:

Система учета рабочего времени сотрудников TimeControl позволяет работать с единой базой данных в рамках локальной сети. Для запуска программы на другом компьютере (далее КЛИЕНТ) в локальной сети необходимо открыть доступ к папке TimeControl на компьютере с установленой программой (далее СЕРВЕР) и создать ярлык на компьтере КЛИЕНТ на файл TimeControl.exe с компьютера СЕРВЕР.

Для этого откройте папку TimeControl с КЛИЕНТА через сетевое окружение. Выберите файл TimeControl.exe и в контекстном меню выберите пункт «Отправить->Рабочий стол (создать ярлык)».

Далее откройте свойства ярлыка и добавте параметры port=3053 и server=IP или ИМЯ компьютера СЕРВЕР.

К примеру, «192.168.10.151:C:\Program Files\TimeControl\EventMonitor.exe» port=3053 server=192.168.10.151

После этого монитор событий TimeControl станет доступной на компьютере КЛИЕНТ.

Обращаем Ваше внимание, что на основном компьютере должны быть открыты порты: 3053 и 4053. Так же, клиентскую версию необходимо зарегистрировать. Делается это бесплатно. Про регистрацию смотрите в вопросах и ответах.

Монтаж

Ниже представлена схема подключения.

1. Ниже представлена схема подключения для FP30 модели выпуска до 2015 г.

2. Ниже представлена схема подключения для FP30 модели выпуска с 2015 г.

Внимание: Обязательно обратите внимание на положение джамперов на платах терминала. Они отвечают за наличие или отсутствие 12 В на клемме COM по умолчанию. При неправильном положении джамперов, к примеру когда на COM 12 В и Вы подключаете к COM GND, можно вывести из строя терминал коротким замыканием.

Ниже представлена схема подключения. В этом случае, контроллер Z-5R служит как реле с задержкой для управления замком. Считыватель ПРК-COM подключается к кнопке выхода Z-5R. На ПРК-COM перемычка должна быть НЕ перерезана. Карты, как и в обычном режиме, добавляются в память ПРК-COM (а не Z-5R).

Ниже представлена схема подключения двух считывателей-контроллеров бесконтактных карт M2 Net (Matrix 2 Net) к турникету Ростов-Дон.

Считыватели должны быть в режиме управления электромеханической защелкой (на контакт Lock подается земля в момент прикладывания карты).

1. Схема подключения магнитного замка к двум FP30 по принципу кольца (управление по минусу/GND) (приоритетная).

Внимание: Обязательно обратите внимание на положение джамперов на платах терминала. Они отвечают за наличие или отсутствие 12 В на клемме COM по умолчанию. При неправильном положении джамперов, к примеру когда на COM 12 В и Вы подключаете к COM GND, можно вывести из строя терминал коротким замыканием.

2. Схема подключения магнитного замка к двум FP30 по принципу кольца (управление +/плюсом).

Внимание: Обязательно обратите внимание на положение джамперов на платах терминала. Они отвечают за наличие или отсутствие 12 В на клемме COM по умолчанию. При неправильном положении джамперов, к примеру когда на COM 12 В и Вы подключаете к COM GND, можно вывести из строя терминал коротким замыканием.

3. Ниже представлена схема подключения магнитного и электромеханического замка для моделей FP30 выпуска c 2015 г.

Внимание: Обязательно обратите внимание на положение джамперов на платах терминала. Они отвечают за наличие или отсутствие 12 В на клемме COM по умолчанию. При неправильном положении джамперов, к примеру когда на COM 12 В и Вы подключаете к COM GND, можно вывести из строя терминал коротким замыканием.

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

Вызывная панель практически любого домофона управляет открытием\закрытием замка с помощью замыкания цепи (сухого контакта). Подключение к контроллерам M2 Net \ Z Net происходит к клеммам, отвечающим за кнопку выхода.

Инструкция по подключению по ссылке: Подключение контроллера Z Web к турникету STR-02
Инструкция по подключению по ссылке: Подключение контроллера Z Web к турникету Ростов-Дон Т9М1

Ниже представлена схема подключения для модификаций биометрических терминалов FP20 / FP10

Схема подключения магнитного замка к двум FP20 / FP10 по принципу кольца (управление по минусу/GND).

Настройка

  • Для настройки почтовых сервисов посмотрите инструкцию: https://time-control.ru/setup/docs/SetupMail.pdf
  • Для настройки заданий на формирование отчетов прочитайте статью: «Настройка автоматического формирования отчетов с отправкой по электронной почте».

Прочитайте статью «Ручное редактирование приходов\уходов. Добавление пропущенной регистрации.».
Прочитайте статью «Как правильно использовать отпечатки пальцев в TimeControl».
Прочитайте статью: «Настройки формирования табеля Т-13 для учета рабочего времени сотрудников».
Прочитайте статью «Учет обеденного перерыва».

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

Бесконтактная карта

Система учета рабочего времени TimeControl позволяет добавлять новые отчеты без обновления версии программы. Если Вам не хватает отчетов, включенных в базовую комплектацию, мы можем создать отчет по Вашему описанию и добавить его в Вашу базу данных.

Прочитайте статью «Загрузка на терминал сотрудников только выбранного филиала в TimeControl».

По умолчанию программа учета рабочего времени сотрудников сохраняет отчеты в папку установки TimeControl\Results. Вы можете изменить путь сохранения отчетов. Для этого нажмите на надпись с указанным путем в правом нижнем углу формы «Отчетность».

Базовая комплектация системы учета рабочего времени сотрудников TimeControl содержит более 60 отчетов. Большая часть из этих отчетов строится с помощью универсального механизма по ранее подготовленным шаблонам. Шаблоны хранятся в формате Excel 97-2003 и могут быть отредактированы с помощью Microsoft Office, либо с помощью бесплатного приложения OpenOffice (https://ru.openoffice.org/about-downloads.html). Все шаблоны программы учета рабочего времени хранятся в папке TimeControl\Reports.

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

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

Загрузка должностей из Excel.

  1. Открываем справочник должностей. «Справочники-Персонал-Справочник должностей».
  2. Выбираем «Сервис-Импорт данных. -Импорт должностей из Excel».
  3. Выбираем файл Excel со списком должностей. В файле должно быть два столбца: Код должности и Наименование. Пример файла можно скачать по ссылке: time-control.ru/setup/examp/dolj.xls

Загрузка подразделений из Excel.

  1. Открываем справочник подразделений. «Справочники-Подразделения».
  2. Выбираем «Сервис-Импорт подразделений. -Импорт подразделений из Excel».
  3. Выбираем файл Excel со списком подразделений. В файле должно быть три столбца: Код подразделения, Наименование и Код родительского подразделения (если нужно создать вложенную структуру подразделений). Пример файла можно скачать по ссылке: time-control.ru/setup/examp/depart.xls

Загрузка сотрудников из Excel.

  1. Открываем справочник персонала. «Справочники-Персонал-Список сотрудников».
  2. Выбираем «Сервис-Импорт сотрудников. -Импорт сотрудников из Excel».
  3. Выбираем файл Excel со списком сотрудников. Пример файла можно скачать по ссылке: time-control.ru/setup/examp/personsadd.xls. В файле указываются, ФИО, табельный номер, пол, дата рождения, адрес, а так же, код должности и подразделения.

Загрузка сотрудников из Excel (только ФИО и табельный номер).

Вариант загрузки сотрудников с минимальными данными: ФИО и табельный номер.

  1. Открываем справочник персонала. «Справочники-Персонал-Список сотрудников».
  2. Выбираем «Сервис-Импорт сотрудников. -Импорт сотрудников из Excel (только ФИО и табельный номер)».
  3. Выбираем файл Excel со списком сотрудников. Пример файла можно скачать по ссылке: time-control.ru/setup/examp/persons.xls.

В списке сотрудников выбираем нужного сотрудника и открываем закладку «Доступ».

Ставим галку «Пользователь программы» и нажимаем кнопку «Задать пароль», указав пароль сотрудника для доступа к программе.

Если сотрудник должен видеть и редактировать только сотрудников определенного подразделения, то выбираем нужное подразделение в поле «Редакт. подразделение».

Нажимаем кнопку «Применить» или «Сохранить» в списке сотрудников.

Прочитайте статью: «Организация временного доступа. Пропуск со сроком действия.».

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

В системах учета рабочего времени и контроля доступа TimeControl Factory Pass Card этот механизм реализован на аппаратном уровне.

Для включения режима «Свободный проход» выполните следующее:

  1. Вам нужно в справочник пропусков добавить карту с типом «Блокирующая» и оповестить устройства об изменениях.
  2. Для работы функции «Свободный проход» к контроллеру должен быть подключен датчик двери.
  3. Режим «Свободный проход» замок всегда обесточен. Устанавливается режим ПРИ ОТКРЫТОЙ ДВЕРИ с помощью блокирующей карты. Для перехода в режим «Свободный проход» открыть дверь и удерживать блокирующую карту у считывателя около 3-х секунд до появления двух длинных сигналов, что соответствует включению режима «Свободный проход».

По умолчанию файлы фотофиксации сохраняются в папку TimeControl\FotoFix и, когда Вы работаете с журналом фотофиксации на основном компьютере (сервере), фото подгружаются из этой папки.
Для того чтобы изображения с камеры фотофиксации стали доступны с клиентских рабочих мест, необходимо:

  1. Открыть общий доступ к папке с фотофиксацией (в свойствах папки «Закладка доступ» — «Общий доступ»).
  2. В настройках TimeControl («Сервис» — «Настройки» — «Регистрация прихода\ухода» — «Путь к фотофиксации») указать сетевой путь к папке фотофиксации. К примеру, \\192.168.0.10\FotoFix. Где 192.168.0.10, IP адрес компьютера с папкой фотофиксации.

Прочитайте статью:»Настройка автоматического закрытия для ночных смен».

  • Инструкция настройки SMS уведомлений по ссылке: Инструкция по настройке SMS информирования
  • Инструкция настройки Telegram уведомлений по ссылке: Инструкция по настройке Telegram-бота

Прочитайте статью:»Перенос данных с терминала F2 с помощью USB флешки.».
Прочитайте статью:»Работа со статусами рабочего времени в TimeControl.».

  • Процесс добавления расписан в статье : Добавление новых сотрудников\ отпечатков пальцев для разных моделей терминалов
  • Для сетевых терминалов с 2019 г. появилась возможность удаленного задания отпечатков: Удаленное задание отпечатков для сетевых терминалов

Можно импортировать график работ сотрудника из Excel по настроенному шаблону.

Для этого откройте График работ и нажмите кнопку «Сервис» — «Импорт графика. «.
Настройки импорта задаются в профиле импорта в «Настройка импорта данных». Пример шаблона можно скачать по ссылке: https://www.time-control.ru/setup/examp/Graph.xls

Можно импортировать отсутствия сотрудников по причинам из Excel по настроенному шаблону.

Для этого откройте справочник отсутствий и нажмите кнопку «Сервис» — «Импорт отсутствий. «.
Настройки импорта задаются в профиле импорта в «Настройка импорта данных». Пример шаблона можно скачать по ссылке: https://www.time-control.ru/setup/examp/Absence.xlsx

Загрузка кодов карт по табельному номеру из Excel.

  1. Открываем справочник сотрудников. «Справочники-Персонал-Список сотрудников».
  2. Выбираем «Сервис-Импорт сотрудников. -Загрузка кодов карт по табельному номеру из Excel (ФИО, табельный №, Карта)».
  3. Выбираем файл Excel со списком сотрудников. В файле должно быть три столбца: Табельный номер, ФИО и Код карты в десятеричном формате. Пример файла можно скачать по ссылке: time-control.ru/setup/examp/cards.xlsx
  • Название профиля: PersonExcelImportCard
  • Тип источника: Excel
  • Заголовок загрузки: Загрузка кодов карт по табельному номеру из Excel (ФИО, табельный №, Карта)
  • Идентификатор группы: PERSON
  • Запрос SELECT: SELECT U.* FROM USERS U WHERE(U.USER_TYPE IS NULL OR U.USER_TYPE=0) AND (U.TABNUM = TRIM(:TABNUM))
  • Запрос INSERT: INSERT INTO USERS (UID,FIRSTNAME,SNAME,MIDNAME,FULLNAME,TABNUM,DEVICE_UID,SHEDCARDKEY) VALUES (GEN_ID(USERS_GEN,1),:FIRSTNAME,:SNAME,:MIDNAME,TRIM(TRIM(:FIRSTNAME)||’ ‘||TRIM(:SNAME)||’ ‘||TRIM(:MIDNAME)),:TABNUM,GEN_ID(USERS_DEVICE_UID_GEN,1),TRIM(:SHEDCARDKEY))
  • Запрос UPDATE: UPDATE USERS SET FIRSTNAME = :FIRSTNAME, SNAME = :SNAME, MIDNAME = :MIDNAME, FULLNAME = TRIM(TRIM(:FIRSTNAME)||’ ‘||TRIM(:SNAME)||’ ‘||TRIM(:MIDNAME)), SHEDCARDKEY = TRIM(:SHEDCARDKEY) WHERE (TABNUM = :TABNUM)

И добавляем загружаемые поля, как на картинке ниже.

Прочитайте статью: Web-аналитика на мобильном телефоне
Прочитайте статью: Настройка интервального доступа на проходной IronLogic

Загрузка фотографий из Excel (фотографии из файлов).

  1. Открываем список сотрудников. «Справочники-Персонал-Список сотрудников».
  2. Выбираем «Сервис-Импорт сотрудников. — Загрузка фото сотрудников из файлов по табельному номеру из Excel».
  3. Выбираем файл Excel со списком табельных номеров сотрудников и их фотографий. В файле должно быть 3 столбца: Табельный номер, ФИО и имя файла. Файлы с фотографиями должны лежать в той же папке, что и Excel файл загрузки. Обращаем внимание, что сотрудники с такими табельными номерами должны присутствовать в TimeControl. То есть если это новые сотрудники, то сначала загружаются\добавляются сами сотрудника, а только потом их фотографии. Пример файла и фотографий можно скачать по ссылке: test_photo_file.xlsx , test.jpeg, test2.jpg

Загрузка фотографий из Excel (фотографии в ячейка Excel документа).

  1. Открываем список сотрудников. «Справочники-Персонал-Список сотрудников».
  2. Выбираем «Сервис-Импорт сотрудников. — Загрузка фото сотрудников по табельному номеру из Excel».
  3. Выбираем файл Excel со списком табельных номеров сотрудников и их фотографий. В файле должно быть 3 столбца: Табельный номер, ФИО и изображение сотрудника. Обращаем внимание, что сотрудники с такими табельными номерами должны присутствовать в TimeControl. То есть если это новые сотрудники, то сначала загружаются\добавляются сами сотрудника, а только потом их фотографии. Пример файла загрузки можно скачать по ссылке: load_photo.xlsx

Загрузка фото сотрудников из Excel для терминалов FACEDEEP.

Если необходимо чтобы фотографии, загружаемые способами описанными выше, использовались терминалами распознавания лиц FaceDeep, необходимо в «Сервис-Настройка импорта данных. » скорректировать запрос UPDATE:
UPDATE OR INSERT INTO USERS_PHOTO (PHOTOID, USERID, PHOTO, NUM, FACEDEEP, PHOTO_SMALL) VALUES (GEN_ID(USERS_PHOTO_GEN,1), (SELECT UID FROM USERS WHERE TABNUM = :TABNUM), :PHOTO, 1, 1, null) MATCHING (USERID,NUM)

Прочитайте статью: Запрет повторного прохода (Antipassback) для терминалов VF30 Pro

С версии TimeControl 5.5 появилась расширенная интеграция с 1С 8.3 ЗУП. Обработка позволяет импортировать организации, подразделения, должности, сотрудников, фотографии сотрудников, отсутствия такие как, больничные, командировки, отпуска, отгулы и прогулы. Производит экспорт табеля как по организации, так и по каждому подразделению. Обмен данными может происходить как в ручном, так и автоматическом режиме. Более подробно можно посмотреть по ссылке: https://time-control.ru/vozmojnosti/biometricheskie-sistemy/integratsiya-s-1s/

Демонстрацию работы базовой интеграции TimeControl с 1С можно посмотреть в разделе видео уроки.

Интеграция с 1С 7.7, 8.1, 8.2, 8.3

  • Загрузка должностей, подразделений и сотрудников из 1С 8
  • Выгрузка табеля учета рабочего времени в 1С 8

Строка примера подключения к серверу 1С 8.2.

В настройка подключения («Сервис»->»Настройки»->»1C экспрот\импорт») укажите следующие значения:

Имя 1С Com Connector (OLE Automation): V82.COMConnector (для версий 8.1 и 8.3 нужно указать V81.COMConnector и V83.COMConnector соответственно )

Имя 1С сервера: V82.Application (для версий 8.1 и 8.3 нужно указать V81.Application и V83.Application соответственно )

Имя 1С сервера может меняться в зависимости от версии клиента 1С:

  • V82.Application — толстый клиент:
  • V82C.Application — тонкий клиент;

Строка инициализации: Srvr=»SERVERNAME»; Ref=»BASENAME»; usr=»USERNAME»; pwd=»USERPASSWORD»;

SERVERNAME — IP адрес или имя сервера.

BASENAME — имя базы данных.

USERNAME — имя пользователя 1С.

USERPASSWORD — пароль пользователя 1С.

В настройка подключения («Сервис»->»Настройки»->»1C экспрот\импорт») укажите следующие значения:

Имя 1С сервера: V77.Application

Так же имя 1С сервера может принимать следующие значения в зависимости от версии 1С:

  • V1CEnterprise.Application — версия независимый ключ;
  • V77.Application — версия зависимый ключ;
  • V77S.Application — версия зависимый ключ, SQL версия;
  • V77L.Application — версия зависимый ключ, локальная версия;
  • V77M.Application — версия зависимый ключ, сетевая версия.

Строка инициализации: /DC:\BASE\1C\ /NADMIN /P12345

Где путь C:\BASE\1C\ к папке с базой 1С.

ADMIN — пользователь.

12345 — пароль.

Параметры /N и /P могут не указываться.

В настройках подключения («Сервис»->»Настройки»->»1C экспорт\импорт») укажите следующие значения:

Имя 1С Com Connector (OLE Automation): V81.COMConnector (Для версии 1С 8.2 нужно указать V82.COMConnector и V83.COMConnector для версии 8.3)

Имя 1С сервера: V81.Application (Для версии 1С 8.2 нужно указать V82.Application и V83.Application для версии 8.3)

Имя 1С сервера может меняться в зависимости от версии клиента 1С:

  • V81.Application — толстый клиент:
  • V81C.Application — тонкий клиент;

Строка инициализации: File=»FILEPATH»; usr=»USERNAME»; pwd=»USERPASSWORD»;

FILEPATH — путь к папке с базой данный 1С. К примеру, File=»C:\Users\Admin\Documents\1C\DemoHRM»;

USERNAME — имя пользователя 1С.

USERPASSWORD — пароль пользователя 1С.

Для возможности экспорта\импорта данных из TimeControl в 1С должны быть установлены COM-компоненты. При переустановке платформы 1С на компьютере COM-компоненты устанавливаются обычно автоматически. Но иногда это не происходит автоматически. Также при установке новой версии платформы поверх уже установленной может понадобиться зарегистрировать comcntr.dll из каталога установленной версии. Проверить, что компоненты установлены, можно, зайдя в «Панель Управления — Администрирование — Службы компонентов» в разделе «Приложения COM+«.

Файл внешней компоненты располагается в каталоге: C:\Program Files (x86)\1cv8\[версия платформы]\bin\comcntr.dll

Для регистрации компонент в операционной системе вручную проделайте следующие шаги:

Выполнить действия вручную можно с помощью командой строки, запущенной от имени администратора, следующим образом: regsvr32 comcntr.dll запущенной в вышеуказанном каталоге.

Если команда выполнена успешно, то Вы увидите вот такое окно.

Для обработки выгрузки данных из TimeControl в 1C используется промежуточный Excel файл. Для его загрузки на компьютере должен быть установлен провайдер ODBC: Microsoft Access Database Engine 2010 Redistributable 32/64 bit, который позволяет производить обработку данных без установленного Microsoft Office.

Если драйвер у Вас не установлен, то скачать его можно по ссылке: https://www.microsoft.com/en-us/download/details.aspx?id=13255

Если у Вас 32-разрядная версия 1С, то устанавливаете 32-разрядный драйвер Microsoft Access Database Engine 2010 и 64-разрядный для 64-разрядной версии 1С.

По ссылке запросы для импорта сотрудников, должностей и подразделений из 1С-Камин 5.0. : TimeControl1CKamin.zip

ВЫБРАТЬ
КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо,
КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия КАК Поле1,
ФИОФизическихЛицСрезПоследних.Фамилия КАК FAMIL,
ФИОФизическихЛицСрезПоследних.Имя КАК IMY,
ФИОФизическихЛицСрезПоследних.Отчество КАК OTCHESTVO,
КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.ДатаРождения КАК BDATE,
ВЫБОР
КОГДА КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Мужской)
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ КАК POL,
КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.МестоРождения КАК ADRES,
КадроваяИсторияСотрудниковСрезПоследних.Должность.Наименование КАК DOLJNOST,
КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Код КАК DEPARTMENT,
КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Код КАК TABNUM,
ВЫБОР
КОГДА КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
ТОГДА КадроваяИсторияСотрудниковСрезПоследних.Период
ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
КОНЕЦ КАК DateOfFired,
ВЫБОР
КОГДА КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК Fired
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
,
ВЫБОР
КОГДА &INN = «0»
ТОГДА ИСТИНА
ИНАЧЕ ГоловнаяОрганизация.ИНН = &INN
КОНЕЦ) КАК КадроваяИсторияСотрудниковСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизическихЛиц.СрезПоследних КАК ФИОФизическихЛицСрезПоследних
ПО (КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо = ФИОФизическихЛицСрезПоследних.ФизическоеЛицо)
ГДЕ
ВЫБОР
КОГДА &ISLOCKED = 0
ТОГДА ИСТИНА
ИНАЧЕ КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия <> ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
КОНЕЦ

Web-расширение. Часть 2.

Эта глава посвящена установке и настройке используемых при работе с Web-расширением программных продуктов.

Microsoft Internet Information Server

Microsoft Internet Information Server (US) — Web-сервер, позволяющий как программно расширять возможности сервера CGI-и ISAPI-компонентами, так и использовать ASP-страницы, содержащие фрагменты кода на скриптовых языках и обрабатываемые сервером перед отправкой клиенту. Последняя технология и используется для интеграции IIS и 1С Предприятия 7.7.

Установка IIS

Порядок установки IIS на Windows NT 4.0 отличается от порядка установки на Windows 2000, поэтому они описаны раздельно.

Windows NT 4.0

IIS с поддержкой ASP не входит в поставку Windows NT 4.0, поэтому его необходимо устанавливать отдельно. В качестве источника рекомендуется использовать NT Option Pack 4.0, доступный для загрузки с сайта Microsoft по адресу http://www.microsoft.com/ntserver/nts/downloads/. В этот пакет входят несколько программных продуктов, образующих комплекс, необходимый для функционирования Web-сервера. Из списка компонент необходимо обязательно установить следующие компоненты:

· Microsoft Data Access Components 1.5

· Microsoft Management Console

· NT Option Pack Common Files

· Internet Information Server (Personal Web Server при установке на Windows NT Workstation)

· Internet Service Manager о World Wide Web Server

· Transaction Server Core Components

· Windows Scripting Host

Если подкомпоненты для какого-то из компонентов не указаны, то можно устанавливать компонент, не изменяя предложенного по умолчанию выбора. Основным инструментом для управления IIS служит Microsoft Management Console (далее ММС). ММС запускается из меню Start/Programs/Windows NT 4.0 Option Pack/Microsoft Internet Information Server/Internet Service Manager для Windows NT 4.0. Все используемые сервисы организованы в ММС в виде дерева каталогов с корнем Console Root. Управление Web-сервером находится в подкаталоге дерева с именем Internet Information Server/servername/Default Web Site.

Windows 2000

В поставку Windows 2000 уже включен IIS, поэтому для установки IIS достаточно выбрать соответстующий пункт в процессе установки операционной системы. Как и IIS, Microsoft Management Console (далее ММС) встроена в Windows 2000. Управление Web-сервером запускается по пункту меню Start/Programs/Administrative Tools/Internet Information Services.

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

Web-приложения

Описание Web-приложения дано ранее в главе «Глава 3 Технология ASP» в пункте «Приложение» стр. 25, поэтому здесь рассматриваются только вопросы, связанные с исполнением Web-приложений на U.S.

Создание приложения

Для создания приложения выберите необходимый подкаталог и, нажав правую кнопку мыши, выберите пункт Properties. На закладке Directory найдите Application Settings и нажмите кнопку Create. Созданному приложению можно дать произвольное имя.

Существует два варианта (в Windows 2000 — три) запуска Web-приложения: в текущем процессе самого Web-сервера или в отдельном приложении. Далее эти варианты рассматриваются отдельно.

Запуск приложения в процессе Web-сервера повышает быстродействие Web-приложения, так как запросы на обработку страниц не передаются между процессами, однако уменьшает надежность системы, так как в случае возникновения ошибки в Web-приложении необходимо перезапустить и Web-сервер. Этот вариант запуска установливается при создании приложения по умолчанию.

Запуск приложения в отдельном процессе позволяет повысить устойчивость WWW-сервера к сбоям в приложении и дает возможность остановки приложения без остановки всего WWW-сервера, однако требует дополнительных ресурсов компьютера. Для запуска приложения в отдельном процессе выберите подкаталог приложения и, нажав правую кнопку мыши, выберите пункт Properties. На закладке Directory найдите Application Settings и включите флаг Run in separate memory space (isolated process) -приложение будет запускаться в отдельном процессе.

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

Остановка приложения

Для остановки приложения выберите подкаталог приложения и, нажав правую кнопку мыши, выберите пункт Properties. На закладке Directory найдите Application Settings и нажмите кнопку Unload -приложение будет выгружено. Такая возможность остановки существует только при запуске приложения в отдельном процессе -все Web-приложения, запущенные в процессе US, останавливаются только при остановке самого Web-сервера.

Пользовательский контекст

При работе Web-приложения все вызовы, связанные с объектами операционой системы, исполняются в некотором пользовательском контексте. Исходя из набора прав этого пользователя доступ к объектам системы может быть разрешен или запрещен. При установке IIS на компьютере создается два дополнительных пользователя, локальных для компьютера — IUSR_servername и IWAM_servername, обладающих очень ограниченным набором прав.

IUSR_servername по умолчанию используется для проверки прав доступа, которыми обладает IIS при выполнении пользовательских запросов, т.е. все пользовательские запросы выполняются как исходящие от этого пользователя. Установку этого контекста можно изменить — на закладке Directory Security свойств приложения нажмите кнопку Edit, затем нажмите Edit напротив Allow Anonymous Access и выберите нужного пользователя из списка.

Следует различать пользовательский контекст всего Web-приложения и контекст выполнения отдельных пользовательских запросов, поскольку различные системные вызовы (в частности, вызовы OLE) могут использовать не только контекст запроса (например, IUSR_servername), но и контекст приложения. Web-приложения, исполняющиеся в процессе IIS, используют контект SYSTEM — встроенный системный контекст, обладающий практически неограниченными правами на локальном компьютере, но не имеющий доступа к сетевым ресурсам. Web-приложения, запускающиеся в отдельном процессе, по умолчанию используют контект IWAM_servername.

Такое различение пользовательских контекстов необходимо по следующей причине: если 1С:Предприятие 7.7 и Web-приложение выполняются на разных компьютерах, то для корректного завершения сессии необходимо, чтобы пользователь, в контексте которого исполняется процесс, обладал правом Act as part of the operating system (Работа в режиме операционной системы). Пользователь SYSTEM имеет такое право, поэтому Web-приложения, исполняющиеся в процессе Web-сервера, не требуют дополнительной настройки. Пользователь IWAM_servername таким правом не обладает, поэтому следует либо дать это право IWAM_servername, либо изменить пользовательский контекст Web-приложения на контекст пользователя, обладающего таким правом. Для этого в Windows NT 4.0 нужно найти соответствующий пакет (package) в каталоге ММС Console Root/Microsoft Transaction Server/Packages Installed и на странице Identity свойств пакета выбрать необходимого пользователя. В Windows 2000 нужно запустить управление Component Services (пункт меню Start/Programs/Administrative Tools/Component Services) и аналогичным образом изменить пользователя для пакета IIS Out-Of-Process Pooled Applications.

Следует принимать во внимание, что указанное право представляет большие полномочия по выполнению системных вызовов (непосредственно после установки операционной системы право Act as part of the operating system предоставлено только пользователю SYSTEM), поэтому предоставление такого права пользователям понижает общий уровень безопасности Web-сервера. Исходя из этого рекомендуется использовать только Web-приложения, исполняющиеся в процессе IIS.

Если же Web-приложение исполняется на одном компьютере с 1 (^Предприятием, то вышеприведенные требования могут не выполняться.

Остановка и перезапуск IIS

Для этого можно использовать как ММС (Microsoft Managment Console), так и командную строку. В ММС нужно просто выбрать корень сайта (с наименованием по умолчанию Default Web Site) и нажать соответствующую кнопку на панели инструментов. Из командной строки это сделать несколько сложнее — нужно ввести следующие команды:

· для остановки net stop iisadmin /у

· для запуска net start w3svc

Управление «устареванием» страниц

Время «устаревания» (expiry time) страниц используется для определения временной границы, после которой браузер при запросе страницы должен заново получив требуемую страницу с WWW-сервера, возможно обновив сохраненный на компьютере пользователя образ страницы. Для установки времени «устаревания» выберите подкаталог приложения и, нажав правую кнопку мыши, выберите пункт Properties. На закладке HTTP Headers включите флаг Enable Content Expiration и выберите необходимое время «устаревания». Можно установить один из трех возможных вариантов:

· Expire immediately — страница не кэшируется в браузере

· Expire after — страница обновляется через некоторое время после загрузки

· Expire on — страница обновляется после наступления указанной даты.

Страницы, содержащие критичные для приложения и часто обновляемые данные, должны иметь признак Expire immediately -тогда страница будет обновляться при каждом запросе пользователя. Заметим, что существует также программный аналог данной установки, использованный в примере «Портал регистратора».

Frontpage

Microsoft Frontpage — один из популярных программных продуктов для создания Web-сайтов, обладающий широким набором функций. В состав Frontpage входят редактор Web-сайта, позволяющий строить структуру сайта, и WYSIWYG-редактор HTML-страниц сайта. Кроме функций редактирования Frontpage предоставляет сервисные функции проверки ссылок на сайте, информации о страницах сайта и др. Сам Frontpage поставляется как в виде отдельного продукта, так и в составе Microsoft Office. В версиях Frontpage 97 и 98 редакторы сайта и страниц представляют разные приложения, в Frontpage 2000 приложение одно. Далее все описания ориентируются на Frontpage 2000 из русскоязычного Microsoft Office, различные названия для других версий и языков могут отличаться от приведенных.

Установка Frontpage выполняется с CD-ROM из поставки Microsoft Office и не представляет сложностей. Однако кроме установки самой программы необходимо установить также так называемые серверные расширения (server extensions) – компоненты Web-сервера, необходимые для выполнения различных действий в Frontpage. Эти компоненты должны быть установлены на компьютер, на котором установлен Web-сервер. После установки компоненты необходимо сконфигурировать для работы с Web-сервером.

Windows NT 4.0

Для конфигурирования расширений запустите Microsoft Management Console (MMC) и из меню Console выберите Add/Remove Snap-In. На закладке Extensions для snap-in Internet Information Server включите флаг «Серверные расширения Frontpage». Щелкните ОК и затем щелкните правой кнопкой мыши в название Web-сервера. Выберите Task->Conngure Extensions. Далее следуйте указаниям мастера конфигурирования. После завершения серверные расширения Frontpage будут установлены.

Windows 2000

Серверные расширения Frontpage входят в поставку Windows 2000, поэтому для их установки достаточно выбрать соответстующий пункт в процессе установки операционной системы.

Для работы с сайтом «Портал реализатора» необходимо проделать следующие действия. Запустите Frontpage и выберите пункт Open Web. из меню File. В диалоге выбора каталога найдите каталог, содержащий файлы сайта, и нажмите Open. На вопрос «Add Frontpage Information to the Folder» нажмите Yes. Frontpage сконвертирует указанный каталог в сайт, добавив специальную информацию (в том числе создав подкаталоги в указанном каталоге), и откроет сайт.

Для того чтобы содержание сайта было доступно с Web-сервера, сайт необходимо опубликовать (publish) на сервер. Для этого из меню File выберите пункт Publish Web. и в поле ввода наберите адрес, на который требуется опубликовать сайт. Имя Web-сервера обычно совпадает с именем компьютера, на котором сервер установлен. В качестве имени каталога рекомендуется выбрать Trade — далее описание использует именно это название каталога. Нажмите Publish — сайт будет опубликован на сервере. После публикации можно проверить правильность произведенных действий, набрав в браузере адрес http://servername/trade /help.htm — эта HTML-страница не требует обработки 1С:Предприятием.

После публикации в каталоге сайта необходимо создать приложение, используя MMC (см. выше). Создание приложения обязательно, так как в противном случае обработчики событий, находящиеся в файле global.asa, вызываться не будут.

Web-расширение

Web-расширение состоит из трех основных частей -Web-компоненты 1С:Предприятия, библиотеки V7 Scripting Engine и примера «Портал реализатора». Все три компоненты можно установить с CD-ROM, входящего в поставку. Web-расширение обязательно должно быть установлено в каталог с исполняемыми файлами 1 С: Предприятия 7.7 (например, C:\Program Files\lCv77). Библиотека V7 Scripting Engine может располагаться в произвольном каталоге на компьютере Web-сервера, однако не рекомендуется иметь более одной установленной библиотеки в связи с тем, что использоваться будет библиотека, зарегистрированная последней. Для файлов примера местонахождение произвольно.

Входящий в Web-расширение V7 Scripting Engine (V7Script.dll) использует СОМ (Component Object Model, ранее OLE) для связи с 1 С:Предприятием. Настройка этой связи довольно сложна (по крайней мере для неподготовленного пользователя), поэтому рекомендуется внимательно прочитать нижеприведенные описания, так как от этих настроек зависит работоспособность всего механизма в целом. V7 Scripting Engine в основном использует подсистему CUM, называемую DCOM (Distributed СОМ, распределенный СОМ). DCOM используется в тех случаях, когда вызовы СОМ нужно передавать между процессами (interprocess calls, across process boundaries). Это очень упрощенное описание предназначения DCOM, однако оно помогает понять суть дела. Очевидно, на вызовы между процессами накладываются ограничения, порождаемые системой безопасности, так как потенциально такие вызовы можно использовать для деструктивных действий (например, скопировав на сервер «нехорошую» программу, можно удаленно запустить ее, так DCOM не ограничивает область вызовов одним компьютером). В случае Web-приложения DCOM-вызовы возникают при обработке ASP-страницы в момент передачи текста скрипта из V7 Scripting Engine в lC-.Предприятие 7.7. Для того чтобы разрешить такие вызовы, необходимо специально настроить DCOM. Для настройки DCOM в состав операционной системы входит утилита настройки dcomcnfg-exe, запустить ее можно как из командной строки, так и из меню Start/Run.

1С:Предприятие 7.7

Использование Web-компоненты регулируется специальным правом «Использование Web-расширения». Это право появляется в наборе доступных прав при установленной Web-компоненте в

Для запуска 1С:Предприятия 7.7 с использованием Web-расширения необходимо следующее:

· пользователю, использующему Web-расширение, дать право на использование Web-расширения;

· запустить ЮПредприятие с ключом /W или ^«имя файла». При использовании ключа /W V7 Scripting Engine соединяется с ЮПредприятием, не используя дополнительные файлы, поэтому 1С:Предприятие должно быть запущено на одном компьютере с Web-сервером. Если используется ключ с указанием файла, то 1С:Предприятие может быть запущено на любом компьютере, однако на имя файла накладываются следующие требования:

· путь к файлу может быть полным или частичным. В последнем случае путь считается от каталога, содержащего исполняемые файлы 1С:Предприятия;

· каталог должен существовать и быть доступен из 1С:Предприятия.

Если файл с указанным именем не существует, то он будет создан.

Настройка DCOM

Для запуска Web-компоненты эта настройка должна быть проведена обязательно.

На первой закладке окна dcomcnfg.exe представлен список всех OLE-серверов, зарегистрированных на компьютере, и среди них указан сервер V77.GeneralPropPage.

Для настройки дважды щелкните по нему мышкой и в появившемся диалоге выберите закладку Identity. Выберите вариант The interactive user (обычно вместо The launching user). Дважды нажмите OK для сохранения изменений и выхода из программы. Правильность совершенных действий можно проконтролировать по содержимому Registry, запустив утилиту regedit.exe. В Registry должны присутствовать следующие ключи:

· HKEY_CLASSES_ROOT\AppID\ о RunAs == «Interactive User»

где вместо присутствует реальный GUID (например, ), во обоих случаях одинаковый. Эту проверку следует выполнять обязательно, если на компьютере запускаются несколько 1С:Предприятий с различными названиями ЕХЕ-файлов (например, lcv7.exe и lcv7s.exe).

После указанной настройки Web-расширение 1 С: Предприятия будет работать в контексте пользователя, указанного при входе в операционную систему. Для работы Web-расширения необходимо, что бы этот пользователь обладал правом Log on as a batch job. Для этого из меню Start/Programs/Adminstrative Tools (Common) запустите User Manager (User Manager for Domains на NT Server) и из меню Policies выберите пункт User Rights. Включите флаг Show advanced user rights и из выпадающего списка выберите пункт Log on as a batch job. Если нужного пользователя в списке Grant To нет, нажмите кнопку Add и выберите этого пользователя. Дважды нажмите О К для сохранения результатов выбора.

Если указание The interactive user по каким-то причинам нежелательно, то вышеприведенные действия можно проделать, указав в закладке Identity точное имя пользователя. Указанный пользователь также должен обладать правом Log on as a batch job.

Активацию Web-расширения можно проверить по содержанию диалога «О программе. ». Если в этом диалоге присутствует строка «Web-расширение», то это означает, что модуль Web-расширения загружен (т.е. ключ к нему найден). Если появляется строка «Web-расширение (!)», то это означает, что модуль Web-расширения загружен и активен (т.е. ключ к нему найден, и все системные настройки выполнены правильно). Если же ни той, ни другой строки нет, то это означает, что Web-расширение не загружено по одной из следующих причин:

· релиз 1 С: Пред приятия ниже 7.70.011;

· v7web.dll отсутствует в каталоге с исполняемыми файлами 1 (^Предприятия;

· ключ для Web-расширения не найден.

Соединение с 1C Предприятием

Для установки соединения V7 Scripting Engine использует два метода: «прямой» метод и с использованием промежуточного файла. Прямой метод позволяет подключаться только к одному 1 С:Предприятию, запущенному на компьютере с Web-сервером, при этом файл параметров (см. далее) не используется. Метод, использующий промежуточные файлы, позволяет распределять нагрузку по нескольким 1С:Предприятиям, запущенным на компьютере с Web-сервером или на других компьютерах в локальной сети. Более того, используемые 1 (^Предприятия могут работать с различными информационными базами, что дает возможность на одном Web-сервере запускать несколько различных Web-приложений для выполнения различных задач.

Для работы V7 Scripting Engine необходимо, чтобы 1 (^Предприятие было запущено заранее. Если при запуске 1 (^Предприятия было указано соединение через файл, то указанный файл создается автоматически.

Настройка DCOM

Эта настройка должна быть проведена для установки соединения между библиотекой V7 Scripting Engine и 1 (^Предприятием.

Для настройки запустите dcomcnfg.exe и в списке OLE-серверов дважды щелкните по вышеупомянутому серверу V77.GeneralPropPage. В появившемся диалоге выберите закладку Security. Выберите переключатель Use custom access permissions и нажмите Edit. В списке пользователей, обладающих правом доступа, могут присутствовать следующие пользователи:

· IUSR_servername (или пользователь, в контексте которого IIS исполняет запросы). Этот пользователь должен присутствовать всегда. В случае, если различные Web-приложения используют разных пользователей, то все эти пользователи должны присутствовать в списке;

· IWAM_servername (или пользователь, в контексте которого IIS исполняет отдельное (isolated) Web-приложение). Этот пользователь должен присутствовать, если Web-приложение запускается как отдельный от сервера процесс;

· NETWORK. Этот пользователь должен присутствовать, если 1С:Предприятие и Web-сервер расположены на разных компьютерах, и доступ к 1 С: Предприятию идет по сети.

Если эти пользователи отсутствуют в списке, то необходимо добавить их, нажав кнопку Add.

Аналогичные действия нужно проделать, выбрав переключатель Use custom launch permission.

Права пользователей рекомендуется редактировать именно для конкретного сервера V77.GeneralPropPage, так эти действия влияют на общую безопасность системы.

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

Файл параметров

Для указания запущенных 1С:Предприятий, которые V7 Scripting Engine может использовать при передаче скрипта на выполнение, используется файл конфигурации V7Script.cfg. Этот файл имеет обычный текстовый формат INI файла со следующими секциями:

[Application 1] Path=

В секции Common указывается единственный параметр Version, который для этой версии Web-расширения должен содержать 1000.

Секции Connection предназначены для определения 1 С:Предприятий, используемых V7 Scripting Engine. Секции Connection нумеруются по возрастанию, начиная с 1. Параметр Computer содержит наименование компьютера в сети, на котором запущено 1С:Предприятие. Если этот параметр в секции Connection отсутствует, то предполагается компьютер, на котором установлено V7 Scripting Engine. Параметр File содержит имя файла, который используется для установки соединения.

Секции Application предназначены для определения списка 1 С:Предприятий, используемых различными Web-приложениями. Секции Application нумеруются по возрастанию, начиная с 1. В параметре Path необходимо указать путь от корня Web-сервера к корневому виртуальному каталогу приложения, включая завершающий символ ‘/’. В качестве разделителя каталога также используется символ ‘/’. Параметры 0, 1 и т.д. используются для указания списка номеров соединений. Номера соединений соответствуют номерам, указанным в заголовках секций Connection.

V7 Scripting Engine использует следующий набор правил при соединении с 1С:Предприятием:

· Если секции Connection отсутствуют, то используется единственное прямое соединение;

· Если секции Connection присутствуют, то используются только указанные соединения с 1 С: Предприятием;

· Если секции Application отсутствуют, то предполагается, что все Web-приложения используют любое из указанных соединений (или единственное прямое соединение);

· Если секции Application присутствуют, то для обработки запросов в этих приложениях используются только перечисленные в них соединения. В этом случае все содинения необходимо указывать явно в секциях Connection;

· все остальные запросы ASP-файлов, использующих V7Script, не обрабатываются нигде.

Одно соединение может быть указано в нескольких приложениях, однако рекомендуется для различных Web-приложений задавать полностью различные либо полностью совпадающие списки соединений. Если один экземпляр 1 (^Предприятия используется несколькими Web-приложениями, то эти Web-приложения должны исполняться в процессе IIS.

Файл параметров должен иметь имя V7Script.cfg и находится в одном каталоге с файлом V7Script.dll.

Пример файла V7Script.cfg:

File=\\comp\connect\web 1 .pt

File= c d:\connect\web2.pt

Согласно этому файлу Web-расширение будет передавать страницы из Web-приложения Webl в 1 С:Предприятие, запущенное с параметром /^ на компьютере СОМР1, и страницы из Web-приложения Web2 в 1 С:Предприятие, запущенное на том же компьютере, где установлен Web-сервер.

Файл соединения

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

· был доступен для пользователя IUSR_servername;

· располагался на том же компьютере, что и запущенное 1С:Предприятие.

Нужно учесть, что имя IUSR_servername является для Web-сервера локальным (напомним, что этот пользователь был создан при установке IIS), и недоступно с другого компьютера. Более того, пароль этого пользователя назначается при установке IIS и администратору сервера неизвестен. Для решения этой проблемы необходимо на сервере запустить административную утилиту из меню Start/Programs/Administrative Tools (Common)/User Manager for Domains (User Manager на Windows NT Workstation). В ней откройте свойства пользователя IUSR_servemame и введите новый пароль в строках Password и Confirm Password. Нажмите ОК. На компьютере, на котором запускается 1С:Предприятие, необходимо создать пользователя с такими же именем и паролем, и сделать каталог с файлом соединения доступным в локальной сети для этого пользователя.

Настройка DCOM

Далее требуется также настроить DCOM для файла соединения. Для этого запустите 1С:Предприятие с ключом /W’uwi файла соединения», и после этого запустите утилиту dcomcnfg. Утилита автоматически добавит необходимые данные в Registry, поэтому сразу после запуска dcomcnfg можно закрыть. Правильность совершенных действий можно проконтролировать по содержимому Registry, запустив утилиту regeditexe. В Registry должны присутствовать следующие ключи:

· HKEY_CLASSES_ROOT\AppID\ о RunAs = «Interactive User»

где вместо присутствует реальный GUID (например, ), во обоих случаях одинаковый. Этот GUID должен совпадать с использованным при настройке запуска Web-компоненты 1 С: Предприятия.

И последнее — настройка Web-приложения. Для настройки Web-приложения запустите ММС, вызовите диалог свойств приложения и в закладке Directory Security нажмите кнопку Edit. Затем нажмите Edit напротив Allow Anonymous Access и отключите флаг Enable Automatic Password Synchronization. Наберите пароль для пользователя IUSR_servername, введенный ранее в утилите User Manager, и трижды нажмите кнопку ОК-

Интеграция ASP и 1C:Предприятия 7.7

ASP-технология «в чистом виде» не содержит никаких встроенных средств для выполнения скриптов, внедренных в ASP-страницы. Для этого в IIS используется технология Active Scripting, также разработанная Microsoft. Эта технология замечательна своей расширяемостью, т.ак как она основана на открытых интерфейсах, что позволяет разрабатывать для нее компоненты (так называемые script engines) для произвольных скриптовых языков. Кроме JavaScript и VB Script, разработанных и поставляемых Microsoft, сторонними фирмами разработаны компоненты для скриптовых языков Peri, Python и Haskell. Такое использование модульной технологии работы с скриптами фактически порождает независимость ASP-технологии от используемого скриптового языка. Этот факт и используется при создании ASP-приложений, использующих встроенный язык 1 С:Предприятия.

Возможности Web-расширения

Для интеграции 1 С: Пред приятия и ASP используется библиотека V7 Scripting Engine, построенная в соответствии со спецификацией Active Scripting. Следование спецификации позволяет ей встраиваться в различные системы, требующие обработки скриптов, и, в частности, в технологию ASP. Реально эта библиотека является лишь стыковкой между IIS и 1 (^Предприятием 7.7, передавая скрипты для исполнения в 1 С: Пред приятие и возвращая результат.

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

Создание ASP-страниц

При обработке страницы IIS передает в V7 Scripting Engine уже сформированный скрипт, причем различные сегменты скрипта складываются в порядке появления их в странице. Такой сформированный скрипт должен представлять собой модуль для исполнения в 1С:Предприятии. Кроме текста скрипта IIS передает контекст страницы в виде набора доступных объектов, которые V7 Scripting Engine также передает в 1С:Предприятие. Эти объекты доступны в 1 С: Пред приятии через встроенный объект «ASP», кроме объектов Request, Response, Application, Session, Server — эти объекты доступны из скрипта напрямую. Через объект ASP можно также вызывать процедуры и функции, реализованные на других скриптовых языках. Следует учитывать, что каждое обращение через объекты ASP-страницы требует обмена данными с IIS, поэтому рекомендуется минимизировать количество таких вызовов и объем передаваемых через них данных.

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

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

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

Контекст ASP-страницы доступен в модуле страницы через объект «ASP». Через его свойства и методы доступны, в частности, все глобальные объекты и функции, реализованные на других языках (например, JavaScript). Это не относится к встроенным объектам IIS (Response, Request и т.д.) — они доступны напрямую через указание имени объекта.

Передать фрагмент HTML при формировании страницы можно двумя способами: Response.Write(CmjK>oKa.HTMZ,) или CmpoKaHTML%> (между символами % и = не должно быть пробелов). Оба способа эквивалентны, однако второй вариант обычно используется при динамической генерации HTML-строки в окружении статического HTML-кода:

а первый — при генерации HTML в коде скрипта:

Ниже приведен пример правильной ASP-страницы:

Процедура ВывестиСообщение() Сообщить(стрСообщение) ;

Сессия и модуль сессии

Модуль сессии предназначен для сохранения контекста работы конкретного пользователя на время сессии и является для сессии в некоторой степени аналогом глобального модуля. Как и в глобальном модуле, в модуле сессии не доступен контекст исполняемого в данный момент модуля страницы. Для работы с объектами страницы следует передавать необходимые объекты через параметры вызываемой процедуры или функции. Текст модуля сессии берется из модуля обработки, указываемой в функции \УеЬНачатьСессию. Эта обработка создается и включается в конфигурацию на этапе конфигурирования 1С:Предприятия.

Для начала и завершения сессии используются встроенные процедуры 1 С:Предприятия WebНачатьСессию и WebЗавершитьСессию.

WebНачатьСессию

Начинает новую сессию в 1С:Предприятии.

Англоязычный синоним:

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

Процедура WebНачатьСессию начинает новую пользовательскую сессию в 1С: Предприятии с идентификатором Session.SessionID и модулем сессии обработки с указанным наименованием. Эту процедуру следует вызывать при вызове предопределенной процедуры Session_OnStart.

Пример:

WebЗавершитьСессию

Завершает сессию в 1С:Предприятии.

WebЗавершитьСесию(Идентификатор сессии>)

Англоязычный синоним:

Идентификатор Идентификатор сессии. Всегда передается Session.SessionID

Процедура WebЗавершитьСессию завершает пользовательскую сессию в 1 (^Предприятии с идентификатором Session.SessionID. Эту процедуру следует вызывать при вызове предопределенной процедуры Session_OnEnd.

Использование табличных документов 1C:Предприятия 7.7

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *