#Если Клиент Тогда Функция ВернутьТипПодключения() Экспорт Возврат("Клиент"); КонецФункции #Иначе Функция ВернутьТипПодключения() Экспорт Возврат("Сервер"); КонецФункции #КонецЕсли Функция ВернутьНеопределено() Экспорт Возврат Неопределено; КонецФункции Функция ВернутьNULL() Экспорт Возврат Null; КонецФункции Функция ВернутьИстину() Экспорт Возврат Истина; КонецФункции Функция ВернутьЛожь() Экспорт Возврат Ложь; КонецФункции Функция ВернутьСистемноеПеречисление()Экспорт Возврат(ВидДвиженияНакопления.Расход); КонецФункции Функция ВернутьПараметр(ИмяПараметра)Экспорт Попытка Зн=ПараметрыСеанса[ИмяПараметра]; Исключение Возврат Неопределено; КонецПопытки; Возврат Зн; КонецФункции |
Функция ЗапросКСправочнику(ИмяСправочника) Экспорт Попытка МетСпр=Метаданные.Справочники[ИмяСправочника]; Исключение Возврат Неопределено КонецПопытки; Запрос=Новый Запрос; ТекстЗапроса=""; ТекстЗапроса="Выбрать Спр.Ссылка,Спр.ПометкаУдаления,Спр.Предопределенный,"; Если МетСпр.Иерархический Тогда ТекстЗапроса=ТекстЗапроса+"Спр.Родитель,Спр.ЭтоГруппа,"; КонецЕсли; Если МетСпр.ДлинаКода<>0 Тогда ТекстЗапроса=ТекстЗапроса+"Спр.Код,"; КонецЕсли; Если МетСпр.ДлинаНаименования<>0 Тогда ТекстЗапроса=ТекстЗапроса+"Спр.Наименование,"; КонецЕсли; Для Каждого Рекв из МетСпр.Реквизиты Цикл ТекстЗапроса=ТекстЗапроса+"Спр."+Рекв.Имя+","; КонецЦикла; ТекстЗапроса=ТекстЗапроса+"Спр.Представление |ИЗ Справочник."+ИмяСправочника+" КАК Спр"; Запрос.Текст=ТекстЗапроса; Возврат(Запрос.Выполнить().Выгрузить()); КонецФункции |
Процедура ПриНачалеРаботыСистемы() Попытка ПараметрыСеанса.ПараметрСеанса1=СокрЛП(ПараметрыСеанса.ПараметрСеанса1)+" |Внешнее Соединение"; Исключение ПараметрыСеанса.ПараметрСеанса1="Внешнее Соединение"; КонецПопытки; КонецПроцедуры |
Процедура ПриНачалеРаботыСистемы() Попытка ПараметрыСеанса.ПараметрСеанса1=СокрЛП(ПараметрыСеанса.ПараметрСеанса1)+" |Приложение"; Исключение ПараметрыСеанса.ПараметрСеанса1="Приложение"; КонецПопытки; КонецПроцедуры |
Функция ВозвратСтроки() Экспорт Возврат("ОбщийМодуль1"); КонецФункции |
Перем cntr,connection; Функция ОткрытиеБазы(ТипОткрытия) cntr = Новый COMObject(ТипОткрытия); connection=Истина; Попытка Если ЭлементыФормы.Панель1.ТекущаяСтраница.Заголовок="Файловая версия" Тогда connection = cntr.Connect("File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;"); Иначе connection = cntr.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;"); КонецЕсли; Исключение Предупреждение(ОписаниеОшибки()); connection=Ложь; КонецПопытки; Возврат connection; КонецФункции |
Свойства и методы 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-соединение. Установка соединения выполняется по следующему алгоритму:
|
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. |
Процедура ОсновныеДействияФормыВызовФункции(Кнопка) Если Не ОткрытиеБазы("V81.Application") Тогда Возврат; КонецЕсли; Сообщить("Вернули неопределено? "+(cntr.ВернутьНеопределено()=Неопределено)); Сообщить("Вернули NULL? "+(cntr.ВернутьNULL()=NULL)); Сообщить("Вернули Истину? "+(cntr.ВернутьИстину()=Истина)); Сообщить("Вернули Ложь? "+(cntr.ВернутьЛожь()=Ложь)); Сообщить("Вернули параметр "+cntr.ВернутьПараметр("ПараметрСеанса1")); Сообщить("Не глобальный модуль "+cntr.ОбщийМодуль1.ВозвратСтроки()); Сообщить("ТипПодключения="+cntr.ВернутьТипПодключения()); cntr = ""; КонецПроцедуры |
|
Процедура ОсновныеДействияФормыВызовФункции2(Кнопка) Если ОткрытиеБазы("V81.ComConnector")<>Ложь Тогда Сообщить("Вернули неопределено? "+(connection.ВернутьНеопределено()=Неопределено)); Сообщить("Вернули NULL? "+(connection.ВернутьNULL()=NULL)); Сообщить("Вернули Истину? "+(connection.ВернутьИстину()=Истина)); Сообщить("Вернули Ложь? "+(connection.ВернутьЛожь()=Ложь)); Сообщить("Вернули параметр "+connection.ВернутьПараметр("ПараметрСеанса1")); Сообщить("Не глобальный модуль "+connection.ОбщийМодуль1.ВозвратСтроки()); Сообщить("ТипПодключения="+connection.ВернутьТипПодключения()); cntr = "";connection=""; КонецЕсли; КонецПроцедуры |
|
Перем НомерЗакладки; Перем 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; |
|
Сообщить("ВернулиНеопределено="+cntr.String(cntr.ВернутьНеопределено())); Сообщить("ВернулиNULL="+cntr.String(cntr.ВернутьNULL())); Сообщить("ВернулиСистемноеПеречисление="+cntr.String(cntr.ВернутьСистемноеПеречисление())); |
|
Функция РаботаСметаданными() ОткрытиеБазы("V81.Application"); Если connection=Истина Тогда Сообщить("Версия "+cntr.Метаданные.Версия); Сообщить("==================Константы=================="); Для Инд=0 по cntr.Метаданные.Константы.Количество()-1 Цикл Конст=cntr.Метаданные.Константы.Получить(Инд); Сообщить(Конст.Имя); Сообщить("Тип:"); Массив = Конст.Тип.Типы(); Типов = Массив.Количество() - 1; для а = 0 по Типов цикл сообщить(cntr.String(Массив.Получить(а))); конеццикла; КонецЦикла; cntr = ""; КонецЕсли; КонецФункции |
|
Функция РаботаСБазой() ОткрытиеБазы("V81.Application"); Если connection=Истина Тогда Стр=""; Если ВвестиСтроку(Стр,"Наименование",40)=1 Тогда Эл=cntr.Справочники.Справочник1.НайтиПоНаименованию(СокрЛП(Стр)); Если Эл.Пустая()=Истина Тогда Эл=cntr.Справочники.Справочник1.СоздатьЭлемент(); Эл.Наименование=СокрЛП(Стр); Эл.Записать(); Сообщить("ЗначениеВСтрокуВнутр="+cntr.ЗначениеВСтрокуВнутр(Эл.Ссылка)); Сообщить("XMLСтрока="+cntr.XMLСтрока(Эл.Ссылка)); Сообщить("=======XMLТипЗнч======"); XMLРез=cntr.XMLТипЗнч(Эл.Ссылка); Сообщить("URIПространстваИмен="+XMLРез.URIПространстваИмен); Сообщить("ИмяТипа="+XMLРез.ИмяТипа); КонецЕсли; cntr.Константы.Константа3.Установить(Эл.Ссылка); КонецЕсли; КонецЕсли; cntr = ""; КонецФункции |
|
Функция РаботаСЗапросами() ОткрытиеБазы("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 = ""; КонецФункции |
#Если ВнешнееСоединение Тогда Функция ВернутьВнутреннююСтроку(Парам) Экспорт Если Парам=0 Тогда Возврат(ЗначениеВстрокуВнутр(Ложь)); Иначе Возврат(ЗначениеВстрокуВнутр(Истина)); КонецЕсли; КонецФункции #КонецЕсли |
|
Функция УстановитьИстина() ОткрытиеБазы("V81.Application"); Если connection=Истина Тогда cntr.Константы.Константа1.Установить(cntr.ЗначениеИзСтрокиВнутр("{""B"",1}")); Сообщить(cntr.Константы.Константа1.Получить()); Сообщить(cntr.ЗначениеВстрокуВнутр(cntr.Константы.Константа1.Получить())); cntr = ""; КонецЕсли; КонецФункции Функция УстановитьЛожь() ОткрытиеБазы("V81.Application"); Если connection=Истина Тогда cntr.Константы.Константа1.Установить(cntr.ЗначениеИзСтрокиВнутр("{""B"",0}")); Сообщить(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 Тогда Шаблон("["+Зн+"]"); КонецЕсли; КонецФункции |
|
Функция ТипаПереносОстатков() Попытка ОткрытиеБазы("V81.ComConnector"); Исключение Сообщить("Не удалось открыть базу с заданными параметрами"); Возврат ""; КонецПопытки; Стр=""; Если ВвестиСтроку(Стр,"Справочник",50)=1 Тогда Спр=connection.Справочники.Справочник1.НайтиПоНаименованию(Стр); Если Спр.Ссылка=connection.Справочники.Справочник1.ПустаяСсылка() Тогда Спр=connection.Справочники.Справочник1.СоздатьЭлемент(); Спр.Наименование=Стр; Спр.Записать(); КонецЕсли; Док=connection.Документы.Документ1.СоздатьДокумент(); Док.Дата=connection.ЗначениеИзСтрокиВнутр("{""D"",20081231235959}"); Док.Реквизит1=Спр.Ссылка; Док.Записать(); Движение=Док.Движения.РегистрНакопления1.ДобавитьПриход(); Движение.Период=connection.ЗначениеИзСтрокиВнутр("{""D"",20081231235959}"); Движение.Измерение1=Спр.Ссылка; Движение.Ресурс1=15; Док.Движения.РегистрНакопления1.Записать(); Сообщить(connection.String(Док.Ссылка)); КонецЕсли; connection = ""; cntr = ""; КонецФункции |
|