Публикации

БСП
Разработки

Найдено результатов: 81


Поиск по ГУИД в COM

acsent 82 15
Функция НайтиСсылкуНаСправочникПоУИД(СсылкаВБазе, ИмяСправочника, Соединение)
	
	Если НЕ ЗначениеЗаполнено(СсылкаВБазе) Тогда
		Возврат Соединение.Справочники[ИмяСправочника].ПустаяСсылка();
	КонецЕсли;	
	
	УИДСтрокой = Строка(СсылкаВБазе.УникальныйИдентификатор());
	УИД = Соединение.NewObject("УникальныйИдентификатор", УИДСтрокой);
	
	СсылкаНаСправочник = Соединение.Справочники[ИмяСправочника].ПолучитьСсылку(УИД);
	Если Соединение.ОбщегоНазначения.СсылкаСуществует(СсылкаНаСправочник) = Ложь тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Возврат СсылкаНаСправочник; 
	
КонецФункции

Запрос через COM из .NET

Создает и выполняет запрос 1С через COM соединение
bolsun 37 4
class Program
    {
        static void Main(string[] args)
        {
            var v8comConnector = Type.GetTypeFromProgID("V83.ComConnector");
            var v8 = Activator.CreateInstance(v8comConnector);
            Object[] arguments = { @"File=""C:\Users\user\Documents\InfoBase2\"";" };
            var x = v8comConnector.InvokeMember("Connect", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v8, arguments);
            var query = InvokeObjectMethod(v8, x, "NewObject", new Object[] { "Запрос" });
            SetObjectProperty(v8, query, "Текст", new Object[] { "ВЫБРАТЬ Справочник1.Наименование ИЗ Справочник.Справочник1 КАК Справочник1" });
            var result = InvokeObjectMethod(v8, query, "Выполнить", new Object[] { });
            var selection = InvokeObjectMethod(v8, result, "Выбрать", new Object[] { });
            while ((bool)InvokeObjectMethod(v8, selection, "Следующий", new Object[] { }))
            {
                var name = GetObjectProperty(v8, selection, "Наименование");
                Console.WriteLine("Наименование: " + name);
            }
        }

        public static object GetObjectProperty(object v8, object refObject, string propertyName)
        {
            return v8.GetType().InvokeMember(propertyName, BindingFlags.GetProperty, null, refObject, null);
        }

        public static object SetObjectProperty(object v8, object refObject, string propertyName, Object[] value)
        {
            return v8.GetType().InvokeMember(propertyName, BindingFlags.SetProperty, null, refObject, value);
        }

        public static object InvokeObjectMethod(object v8, object refObject, string methodName, Object[] parameters)
        {
            return v8.GetType().InvokeMember(methodName, BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, refObject, parameters);
        }
    }

ПолучитьМакетMSWord

Создает COM соединение с COM объектом Word.Application и открывает
ОбщийМодуль.УправлениеПечатьюMSWordКлиент
Автор: 1С
// Создает COM соединение с COM объектом Word.Application и открывает
// в нем макет. Файл макета сохраняется на основе двоичных данных
// переданных в параметрах функции.
//
// Параметры:
// ДвоичныеДанныеМакета - ДвоичныеДанные - двоичные данные макета.
// Возвращаемое значение:
// структура - ссылка макет.
//
Функция ПолучитьМакетMSWord(Знач ДвоичныеДанныеМакета, Знач ИмяВременногоФайла) Экспорт
	
	Handler = Новый Структура("Тип", "DOC");
#Если Не МобильныйКлиент Тогда
	Попытка
		COMОбъект = Новый COMОбъект("Word.Application");
	Исключение
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Ошибка",
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),,Истина);
		НеУдалосьСформироватьПечатнуюФорму(ИнформацияОбОшибке());
	КонецПопытки;
	
#Если ВебКлиент Тогда
	ОписанияФайлов = Новый Массив;
	ОписанияФайлов.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяВременногоФайла, ПоместитьВоВременноеХранилище(ДвоичныеДанныеМакета)));
	ВременныйКаталог = УправлениеПечатьюСлужебныйКлиент.СоздатьВременныйКаталог("MSWord");
	Если НЕ ПолучитьФайлы(ОписанияФайлов, , ВременныйКаталог, Ложь) Тогда
		Возврат Неопределено;
	КонецЕсли;
	ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ВременныйКаталог) + ИмяВременногоФайла;
#Иначе
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("DOC");
	ДвоичныеДанныеМакета.Записать(ИмяВременногоФайла);
#КонецЕсли
	
	Попытка
		COMОбъект.WordBasic.DisableAutoMacros(1);
		COMОбъект.Documents.Open(ИмяВременногоФайла);
	Исключение
		COMОбъект.Quit(0);
		COMОбъект = 0;
		УдалитьФайлы(ИмяВременногоФайла);
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Ошибка",
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),,Истина);
		ВызватьИсключение(НСтр("ru = 'Ошибка при открытии файла шаблона.'") + Символы.ПС 
			+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
	КонецПопытки;
	
	Handler.Вставить("COMСоединение", COMОбъект);
	Handler.Вставить("ИмяФайла", ИмяВременногоФайла);
	Handler.Вставить("ЭтоМакет", Истина);
	
	Handler.Вставить("НастройкиСтраницыМакета", Новый Соответствие);
	
	Для Каждого ИмяНастройки Из НастройкиПараметровСтраницы() Цикл
		Попытка
			Handler.НастройкиСтраницыМакета.Вставить(ИмяНастройки, COMОбъект.ActiveDocument.PageSetup[ИмяНастройки]);
		Исключение
			// Пропустить, если настройка не поддерживается данной версией программы.
		КонецПопытки;
	КонецЦикла;
#КонецЕсли
	
	Возврат Handler;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Обращение к имени субконто по COM

Субконто.PredefinedDataName

ИмяCOMСоединителя

Возвращает имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение.
ОбщийМодуль.ОбщегоНазначенияКлиентСервер
Автор: 1С
// Возвращает имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение.
//
// Возвращаемое значение:
//  Строка - имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение.
//
Функция ИмяCOMСоединителя() Экспорт
	
	СистемнаяИнфо = Новый СистемнаяИнформация;
	ПодстрокиВерсии = СтрРазделить(СистемнаяИнфо.ВерсияПриложения, ".");
	Возврат "v" + ПодстрокиВерсии[0] + ПодстрокиВерсии[1] + ".COMConnector";
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ИдентификаторCOMСоединителя

Возвращает CLSID COM-класса для работы с "1С:Предприятием 8" через COM-соединение.
ОбщийМодуль.ОбщегоНазначения
Автор: 1С
// Возвращает CLSID COM-класса для работы с "1С:Предприятием 8" через COM-соединение.
//
// Параметры:
//  ИмяCOMСоединителя - Строка - имя COM-класса для работы с "1С:Предприятием 8" через COM-соединение.
//
// Возвращаемое значение:
//  Строка - строковое представление CLSID.
//
Функция ИдентификаторCOMСоединителя(Знач ИмяCOMСоединителя) Экспорт
	
	Если ИмяCOMСоединителя = "v83.COMConnector" Тогда
		Возврат "181E893D-73A4-4722-B61D-D604B3D67D47";
	КонецЕсли;
	
	ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'На задан CLSID для класса %1'"), ИмяCOMСоединителя);
	ВызватьИсключение ТекстИсключения;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ИнициализироватьПечатнуюФормуMSWord

Создает COM соединение с COM объектом Word.Application, создает в нем
ОбщийМодуль.УправлениеПечатьюMSWordКлиент
Автор: 1С
// Создает COM соединение с COM объектом Word.Application, создает в нем
// единственный документ.
//
Функция ИнициализироватьПечатнуюФормуMSWord(Макет) Экспорт
	
	Handler = Новый Структура("Тип", "DOC");
	
#Если Не МобильныйКлиент Тогда
	Попытка
		COMОбъект = Новый COMОбъект("Word.Application");
	Исключение
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Ошибка",
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),,Истина);
		НеУдалосьСформироватьПечатнуюФорму(ИнформацияОбОшибке());
	КонецПопытки;
	
	Handler.Вставить("COMСоединение", COMОбъект);
	Попытка
		COMОбъект.Documents.Add();
	Исключение
		COMОбъект.Quit(0);
		COMОбъект = 0;
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Ошибка",
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),,Истина);
		НеУдалосьСформироватьПечатнуюФорму(ИнформацияОбОшибке());
	КонецПопытки;
	
	НастройкиСтраницыМакета = Макет; // Для обратной совместимости (изменен тип входного параметра функции).
	Если ТипЗнч(Макет) = Тип("Структура") Тогда
		НастройкиСтраницыМакета = Макет.НастройкиСтраницыМакета;
		// Копирование стилей из макета.
		Макет.COMСоединение.ActiveDocument.Close();
		Handler.COMСоединение.ActiveDocument.CopyStylesFromTemplate(Макет.ИмяФайла);
		
		Макет.COMСоединение.WordBasic.DisableAutoMacros(1);
		Макет.COMСоединение.Documents.Open(Макет.ИмяФайла);
	КонецЕсли;
	
	// Копирование настроек страницы.
	Если НастройкиСтраницыМакета <> Неопределено Тогда
		Для Каждого Настройка Из НастройкиСтраницыМакета Цикл
			Попытка
				COMОбъект.ActiveDocument.PageSetup[Настройка.Ключ] = Настройка.Значение;
			Исключение
				// Пропустить, если настройка не поддерживается данной версией программы.
			КонецПопытки;
		КонецЦикла;
	КонецЕсли;
	// Запомнить вид просмотра документа.
	Handler.Вставить("ViewType", COMОбъект.Application.ActiveWindow.View.Type);
	
#КонецЕсли

	Возврат Handler;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Подключение к базе через com соединение и создание нового документа

buketoff 32 6
//выбираем сотрудника

ЗапросВ = КомСоединение.NewObject("Запрос");
ЗапросВ.Текст = "
|ВЫБРАТЬ первые 1 
|Сотрудники.Ссылка КАК Сотрудник
|ИЗ
|Справочник.Сотрудники КАК Сотрудники
|ГДЕ
|НЕ Сотрудники.СтруктураКомпании = ЗНАЧЕНИЕ(Справочник.СтруктураКомпании.ПустаяСсылка)
|И Сотрудники.ФизическоеЛицо.Наименование = &ФизическоеЛицо
|И Сотрудники.ПометкаУдаления = ЛОЖЬ
|";

ЗапросВ.УстановитьПараметр("ФизическоеЛицо", СтруктураДанных.Сотрудник.Наименование);

com_Результат     = ЗапросВ.Выполнить().Выбрать();// COM объект    

Если com_Результат.следующий() Тогда
	//нашли сотрудника
	
	com_ТЗ_Сотрудники = com_Результат.Сотрудник;// COM объект
	
	// Получаем таблицу значений из COM-объекта
	// COMОбъект в -> строку
	// Запишем COMОбъект в строку на стороне базы-источника
	
	стр_ТЗ_Сотрудники = КомСоединение.ЗначениеВСтрокуВнутр(com_ТЗ_Сотрудники);
	
	// получим таблицу значений из строки
	ТЗ_Сотрудники = ЗначениеИзСтрокиВнутр(стр_ТЗ_Сотрудники);
	
	МенеджерДокумента = КомСоединение.Документы.ЗаписьВРНФактическиеОтпуска;
	КомСоединение.УстановитьБезопасныйРежим(Ложь);
	КомСоединение.УстановитьПривилегированныйРежим(Истина);
	
	НовДок      = МенеджерДокумента.СоздатьДокумент();
	НовДок.Дата = СтруктураДанных.Период;
	НовДок.Сотрудник...
	
Иначе
	//соответственно не нашли
	
	com_ТЗ_Сотрудники = Неопределено;
КонецЕсли;

СвойстваCOMКласса

Конструктор структуры, описывающей свойства COM-класса.
ОбщийМодуль.АдминистрированиеКластера
Автор: 1С
// Конструктор структуры, описывающей свойства COM-класса.
//
// Возвращаемое значение: 
//    Структура - структура с полями:
//     * Имя - Строка - имя COM-класса, используется в качестве ключа при поиске.
//     * Описание - Строка - описание COM-класса.
//     * ФайлМоникер - Строка - имя файла, по которому создается объект методом глобального контекста 
//                  ПолучитьCOMОбъект() с пустым значением второго параметра.
//     * CLSID - Строка - представление идентификатора COM-класса в формате системного реестра MS Windows
//                  без фигурных скобок, по которому он может быть создан операционной системой.
//     * Компьютер - Строка - имя компьютера, на котором может быть создан COM-объект.
//
Функция СвойстваCOMКласса() Экспорт
	
	Результат = Новый Структура();
	
	Результат.Вставить("Имя");
	Результат.Вставить("Описание");
	
	Результат.Вставить("ФайлМоникер");
	Результат.Вставить("CLSID");
	Результат.Вставить("Компьютер");
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЗавершитьВосстановление

Вызывается из скрипта через com-соединение для
ОбщийМодуль.РезервноеКопированиеИБСервер
Автор: 1С
// Вызывается из скрипта через com-соединение для
// записи результата проведенного восстановления ИБ в настройки.
//
// Параметры:
//	Результат - Булево - результат восстановления.
//
Процедура ЗавершитьВосстановление(Результат) Экспорт
	
	Настройки = НастройкиРезервногоКопирования();
	Настройки.ПроведеноВосстановление = Истина;
	УстановитьНастройкиРезервногоКопирования(Настройки);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЗакрытьСоединение

Закрывает соединение с COM объектом Word.Application.
ОбщийМодуль.УправлениеПечатьюMSWordКлиент
Автор: 1С
// Закрывает соединение с COM объектом Word.Application.
// Параметры:
// Handler - ссылка на печатную форму или макет.
// ЗакрытьПриложение - булево - требуется ли закрыть приложение.
//
Процедура ЗакрытьСоединение(Handler, Знач ЗакрытьПриложение) Экспорт
	
	Если ЗакрытьПриложение Тогда
		Handler.COMСоединение.Quit(0);
	КонецЕсли;
	
	Handler.COMСоединение = 0;
	
	#Если Не ВебКлиент Тогда
	Если Handler.Свойство("ИмяФайла") Тогда
		УдалитьФайлы(Handler.ИмяФайла);
	КонецЕсли;
	#КонецЕсли
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ИнициализироватьПечатнуюФормуOOWriter

Инициализация печатной формы: создается COM - объект,
ОбщийМодуль.УправлениеПечатьюOOWriterКлиент
Автор: 1С
// Инициализация печатной формы: создается COM - объект,
// ему устанавливаются свойства.
Функция ИнициализироватьПечатнуюФормуOOWriter(Знач Шаблон = Неопределено) Экспорт
	
	Handler = Новый Структура("ServiceManager,Desktop,Document,Тип");
	
#Если Не МобильныйКлиент Тогда
	
	Попытка
		ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
	Исключение
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Ошибка",
			НСтр("ru = 'Ошибка при связи с сервис менеджером (com.sun.star.ServiceManager).'")
			+ Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),,Истина);
		НеУдалосьСформироватьПечатнуюФорму(ИнформацияОбОшибке());
	КонецПопытки;
	
	Попытка
		Desktop = ServiceManager.CreateInstance("com.sun.star.frame.Desktop");
	Исключение
		ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Ошибка",
			НСтр("ru = 'Ошибка при запуске сервиса Desktop (com.sun.star.frame.Desktop).'")
			+ Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),,Истина);
		НеУдалосьСформироватьПечатнуюФорму(ИнформацияОбОшибке());
	КонецПопытки;
	
	Параметры = ПолучитьComSafeArray();
	
#Если Не ВебКлиент Тогда
	Параметры.SetValue(0, СвойствоЗначение(ServiceManager, "Hidden", Истина));
#КонецЕсли
	
	Document = Desktop.LoadComponentFromURL("private:factory/swriter", "_blank", 0, Параметры);
	
#Если ВебКлиент Тогда
	Document.getCurrentController().getFrame().getContainerWindow().setVisible(Ложь);
#КонецЕсли
	
	Если Шаблон <> Неопределено Тогда
		TemplateStyleName = Шаблон.Document.CurrentController.getViewCursor().PageStyleName;
		TemplateStyle = Шаблон.Document.StyleFamilies.getByName("PageStyles").getByName(TemplateStyleName);
			
		StyleName = Document.CurrentController.getViewCursor().PageStyleName;
		Style = Document.StyleFamilies.getByName("PageStyles").getByName(StyleName);
		
		Style.TopMargin = TemplateStyle.TopMargin;
		Style.LeftMargin = TemplateStyle.LeftMargin;
		Style.RightMargin = TemplateStyle.RightMargin;
		Style.BottomMargin = TemplateStyle.BottomMargin;
	КонецЕсли;
	
	Handler.ServiceManager = ServiceManager;
	Handler.Desktop = Desktop;
	Handler.Document = Document;
	
#КонецЕсли

	Возврат Handler;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЗавершитьРезервноеКопирование

Процедура, вызываемая из скрипта через com-соединение.
ОбщийМодуль.РезервноеКопированиеИБСервер
Автор: 1С
// Процедура, вызываемая из скрипта через com-соединение.
// Записывает результат проведенного копирования в настройки.
// 
// Параметры:
//	Результат - Булево - результат копирования.
//	ИмяФайлаРезервнойКопии - Строка - имя файла резервной копии.
//
Процедура ЗавершитьРезервноеКопирование(Результат, ИмяФайлаРезервнойКопии =  "") Экспорт
	
	Настройки = НастройкиРезервногоКопирования();
	Настройки.ПроведеноКопирование = Истина;
	Настройки.РезультатКопирования = Результат;
	Настройки.ИмяФайлаРезервнойКопии = ИмяФайлаРезервнойКопии;
	УстановитьНастройкиРезервногоКопирования(Настройки);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЗакрытьСоединение

Закрывает макет печатной формы и затирает ссылки на COM объект.
ОбщийМодуль.УправлениеПечатьюOOWriterКлиент
Автор: 1С
// Закрывает макет печатной формы и затирает ссылки на COM объект.
//
Процедура ЗакрытьСоединение(Handler, Знач ЗакрытьПриложение) Экспорт
	
	Если ЗакрытьПриложение Тогда
		Handler.Document.Close(0);
	КонецЕсли;
	
	Handler.Document = Неопределено;
	Handler.Desktop = Неопределено;
	Handler.ServiceManager = Неопределено;
	
	Если Handler.Свойство("ИмяФайла") Тогда
		УдалитьФайлы(Handler.ИмяФайла);
	КонецЕсли;
	
	Handler = Неопределено;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

РазрешениеНаСозданиеCOMКласса

Возвращает внутреннее описание разрешения на использование COM-класса.
ОбщийМодуль.РаботаВБезопасномРежиме
Автор: 1С
// Возвращает внутреннее описание разрешения на использование COM-класса.
//
// Параметры:
//  ProgID - Строка - ProgID класса COM, с которым он зарегистрирован в системе.
//    Например, "Excel.Application",
//  CLSID - Строка - CLSID класса COM, с которым он зарегистрирован в системе.
//  ИмяКомпьютера - Строка - имя компьютера, на котором надо создать указанный объект.
//    Если параметр опущен - объект будет создан на компьютере, на котором выполняется
//    текущий рабочий процесс,
//  Описание - Строка - описание причины, по которой требуется предоставление разрешения.
//
// Возвращаемое значение:
//  ОбъектXDTO - внутреннее описание запрашиваемого разрешения.
//  Предназначен только для передачи в качестве параметра в функции.
//  РаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(),
//  РаботаВБезопасномРежиме.ЗапросНаОтменуРазрешенийИспользованияВнешнихРесурсов() и
//  РаботаВБезопасномРежиме.ЗапросНаОчисткуРазрешенийИспользованияВнешнихРесурсов().
//
Функция РазрешениеНаСозданиеCOMКласса(Знач ProgID, Знач CLSID, Знач ИмяКомпьютера = "", Знач Описание = "") Экспорт
	
	Пакет = РаботаВБезопасномРежимеСлужебный.Пакет();
	Результат = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(Пакет, "CreateComObject"));
	Результат.Description = Описание;
	
	Результат.ProgId = ProgID;
	Результат.CLSID = Строка(CLSID);
	Результат.ComputerName = ИмяКомпьютера;
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ЗавершитьОбновление

Вызывается при завершении обновления конфигурации через COM-соединение.
ОбщийМодуль.ОбновлениеКонфигурации
Автор: 1С
// Вызывается при завершении обновления конфигурации через COM-соединение.
//
// Параметры:
//  РезультатОбновления  - Булево - Результат обновления.
//
Процедура ЗавершитьОбновление(Знач РезультатОбновления, Знач ЭлектроннаяПочта, Знач ИмяАдминистратораОбновления, Знач КаталогСкрипта = Неопределено) Экспорт

	ТекстСообщения = НСтр("ru = 'Завершение обновления из внешнего скрипта.'");
	ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,,ТекстСообщения);
	
	Если Не ЕстьПраваНаУстановкуОбновления() Тогда
		ТекстСообщения = НСтр("ru = 'Недостаточно прав для завершения обновления конфигурации.'");
		ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,,ТекстСообщения);
		ВызватьИсключение ТекстСообщения;
	КонецЕсли;
	
	Если КаталогСкрипта = Неопределено Тогда 
		КаталогСкрипта = КаталогСкрипта();
	КонецЕсли;
	
	ЗаписатьСтатусОбновления(ИмяАдминистратораОбновления, Ложь, Истина, РезультатОбновления, КаталогСкрипта);
	
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями")
		И Не ПустаяСтрока(ЭлектроннаяПочта) Тогда
		Попытка
			ОтправитьУведомлениеОбОбновлении(ИмяАдминистратораОбновления, ЭлектроннаяПочта, РезультатОбновления);
			ТекстСообщения = НСтр("ru = 'Уведомление об обновлении успешно отправлено на адрес электронной почты:'")
				+ " " + ЭлектроннаяПочта;
			ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,,ТекстСообщения);
		Исключение
			ТекстСообщения = НСтр("ru = 'Ошибка при отправке письма электронной почты:'")
				+ " " + ЭлектроннаяПочта + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
			ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,,ТекстСообщения);
		КонецПопытки;
	КонецЕсли;
	
	Если РезультатОбновления Тогда
		ОбновлениеИнформационнойБазыСлужебный.ПослеЗавершенияОбновления();
	КонецЕсли;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПодключитьКомпонентуИзМакета

Подключает компоненту, выполненную по технологии Native API и COM.
ОбщийМодуль.ОбщегоНазначения
Автор: 1С
// Подключает компоненту, выполненную по технологии Native API и COM.
// Компонента должна храниться в макете конфигурации в виде ZIP-архива.
//
// Параметры:
//  Идентификатор   - Строка - идентификатор объекта внешней компоненты.
//  ПолноеИмяМакета - Строка - полное имя макета конфигурации, хранящего ZIP-архив.
//
// Возвращаемое значение:
//  AddIn, Неопределено - экземпляр объекта внешней компоненты или Неопределено, если не удалось создать.
//
// Пример:
//
//  ПодключаемыйМодуль = ОбщегоНазначения.ПодключитьКомпонентуИзМакета(
//      "QRCodeExtension",
//      "ОбщийМакет.КомпонентаПечатиQRКода");
//
//  Если ПодключаемыйМодуль <> Неопределено Тогда 
//      // ПодключаемыйМодуль содержит созданный экземпляр подключенной компоненты.
//  КонецЕсли;
//
//  ПодключаемыйМодуль = Неопределено;
//
Функция ПодключитьКомпонентуИзМакета(Идентификатор, ПолноеИмяМакета) Экспорт

	ПодключаемыйМодуль = Неопределено;
	
	Если Не МакетСуществует(ПолноеИмяМакета) Тогда 
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере
			           |из %2
			           |по причине:
			           |Подключение на сервере не из макета запрещено'"),
			Идентификатор,
			ПолноеИмяМакета);
	КонецЕсли;
	
	Местоположение = ПолноеИмяМакета;
	СимволическоеИмя = Идентификатор + "SymbolicName";
	
	Если ПодключитьВнешнююКомпоненту(Местоположение, СимволическоеИмя) Тогда
		
		Попытка
			ПодключаемыйМодуль = Новый("AddIn." + СимволическоеИмя + "." + Идентификатор);
			Если ПодключаемыйМодуль = Неопределено Тогда 
				ВызватьИсключение НСтр("ru = 'Оператор Новый вернул Неопределено'");
			КонецЕсли;
		Исключение
			ПодключаемыйМодуль = Неопределено;
			ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
		КонецПопытки;
		
		Если ПодключаемыйМодуль = Неопределено Тогда
			
			ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Не удалось создать объект внешней компоненты ""%1"", подключенной на сервере
				           |из макета ""%2"",
				           |по причине:
				           |%3'"),
				Идентификатор,
				Местоположение,
				ТекстОшибки);
			
			ЗаписьЖурналаРегистрации(
				НСтр("ru = 'Подключение внешней компоненты на сервере'",
					КодОсновногоЯзыка()),
				УровеньЖурналаРегистрации.Ошибка,,,
				ТекстОшибки);
			
		КонецЕсли;
		
	Иначе
		
		ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере
			           |из макета ""%2""
			           |по причине:
			           |Метод ПодключитьВнешнююКомпоненту вернул Ложь.'"),
			Идентификатор,
			Местоположение);
		
		ЗаписьЖурналаРегистрации(
			НСтр("ru = 'Подключение внешней компоненты на сервере'",
				КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Ошибка,,,
			ТекстОшибки);
		
	КонецЕсли;
	
	Возврат ПодключаемыйМодуль;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

АдресВОблачномСервисе

Синхронизация файлов
ОбщийМодуль.РаботаСФайламиСлужебныйКлиентСервер
Автор: 1С
////////////////////////////////////////////////////////////////////////////////
// Синхронизация файлов

Функция АдресВОблачномСервисе(Сервис, Href) Экспорт
	
	АдресОбъекта = Href;
	
	Если Не ПустаяСтрока(Сервис) Тогда
		Если Сервис = "https://webdav.yandex.ru" Тогда
			АдресОбъекта = СтрЗаменить(Href, "https://webdav.yandex.ru", "https://disk.yandex.ru/client/disk");
		ИначеЕсли Сервис = "https://webdav.4shared.com" Тогда
			АдресОбъекта = "http://www.4shared.com/folder";
		ИначеЕсли Сервис = "https://dav.box.com/dav" Тогда
			АдресОбъекта = "https://app.box.com/files/0/";
		ИначеЕсли Сервис = "https://dav.dropdav.com" Тогда
			АдресОбъекта = "https://www.dropbox.com/home/";
		КонецЕсли;
	КонецЕсли;
	
	Возврат АдресОбъекта;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

СвойстваCOMКласса

Устарела. Следует использовать АдминистрированиеКластера.СвойстваCOMКласса.
ОбщийМодуль.АдминистрированиеКластераКлиентСервер
Автор: 1С
// Устарела. Следует использовать АдминистрированиеКластера.СвойстваCOMКласса.
// Конструктор структуры, описывающей свойства COM-класса.
//
// Возвращаемое значение:
//   Структура - структура с полями:
//     * Имя - Строка - имя COM-класса, используется в качестве ключа при поиске,
//     * Описание - Строка - описание COM-класса,
//     * ФайлМоникер - Строка - имя файла, по которому создается объект методом глобального 
//       контекста ПолучитьCOMОбъект() с пустым значением второго параметра,
//     * CLSID - Строка - представление идентификатора COM-класса в формате системного реестра MS Windows 
//       без фигурных скобок, по которому он может быть создан операционной системой,
//     * Компьютер - Строка - имя компьютера, на котором может быть создан COM-объект.
//
Функция СвойстваCOMКласса() Экспорт
	
	Результат = Новый Структура();
	
	Результат.Вставить("Имя");
	Результат.Вставить("Описание");
	
	Результат.Вставить("ФайлМоникер");
	Результат.Вставить("CLSID");
	Результат.Вставить("Компьютер");
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ПараметрыАдминистрированияКластера

Конструктор структуры, описывающей параметры подключения к администрируемому кластеру серверов.
ОбщийМодуль.АдминистрированиеКластера
Автор: 1С
// Конструктор структуры, описывающей параметры подключения к администрируемому кластеру серверов.
//
// Возвращаемое значение:
//   Структура - где:
//     * ТипПодключения - Строка - возможные значения:
//                  "COM" - при подключении к агенту сервера с использованием COM-объекта V8*.ComConnector;
//                  "RAS" - при подключении к серверу администрирования (ras) с использованием консольного
//                  клиента сервера администрирования (rac);
//     * АдресАгентаСервера - Строка - сетевой адрес агента сервера (только при ТипПодключения = "COM");
//     * ПортАгентаСервера - Число - сетевой порт агента сервера (только при ТипПодключения = "COM"),
//                  типичное значение 1540;
//     * АдресСервераАдминистрирования - Строка - сетевой адрес сервера администрирования ras (только.
//                  При ТипПодключения = "RAS");
//     * ПортСервераАдминистрирования - Число - сетевой порт сервера администрирования ras (только при.
//                  ТипПодключения = "RAS"), типичное значение 1545;
//     * ПортКластера - Число - сетевой порт менеджера администрируемого кластера, типичное значение 1541;
//     * ИмяАдминистратораКластера - Строка - имя учетной записи администратора кластера (если для кластера
//                  не задан список администраторов - используется пустая строка);
//     * ПарольАдминистратораКластера - Строка - пароль учетной записи администратора кластера (если
//                  для кластера не задан список администраторов или для учетной записи не установлен пароль -
//                  используется пустая строка).
//
Функция ПараметрыАдминистрированияКластера() Экспорт
	
	Результат = Новый Структура();
	
	Результат.Вставить("ТипПодключения", "COM"); // "COM" или "RAS"
	
	// Только для "COM"
	Результат.Вставить("АдресАгентаСервера", "");
	Результат.Вставить("ПортАгентаСервера", 1540);
	
	// Только для "RAS"
	Результат.Вставить("АдресСервераАдминистрирования", "");
	Результат.Вставить("ПортСервераАдминистрирования", 1545);
	
	Результат.Вставить("ПортКластера", 1541);
	Результат.Вставить("ИмяАдминистратораКластера", "");
	Результат.Вставить("ПарольАдминистратораКластера", "");
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////