Публикации

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

Проверка, есть ли ключ у соответствия

Проверка, есть ли ключ у соответствия
Функция ЕстьКлючСоответствия(Объект, Ключ) Экспорт
  Если Объект[Ключ] <> Неопределено Тогда
    Возврат Истина;
  КонецЕсли;
  До = Объект.Количество();
  Объект.Вставить(Ключ);
  После = Объект.Количество();
  Если До <> После Тогда
    Объект.Удалить(Ключ);
  КонецЕсли;
  Возврат До = После;
КонецФункции

Таблица значений в табличный документ

Преобразование таблицы значений в табличный документ без использования построителя.
// Получить табличный документ на основании таблицы значений
//
// Параметры:
//  Таблица - ТаблицаЗначений 
// 
// Возвращаемое значение:
//  ТабличныйДокумент 
//
&НаСервере
Функция ПолучитьТабличныйДокумент(Таблица)
    ТабДокумент = Новый ТабличныйДокумент;
            
    // Выводим заголовок таблицы
    КолонкаИндекс = 0;
    Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
        Колонка = Таблица.Колонки[КолонкаИндекс];
        ТабДокумент.Область(1, КолонкаИндекс + 1, 1, КолонкаИндекс + 1).Текст = Колонка.Имя;  
        КолонкаИндекс = КолонкаИндекс + 1;
    КонецЦикла;
    
    // Выводим строки таблицы
    СтрокаИндекс = 0;
    Пока СтрокаИндекс < Таблица.Количество() Цикл
        Таблица_Строка = Таблица[СтрокаИндекс];
        КолонкаИндекс = 0;
        Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
            Колонка = Таблица.Колонки[КолонкаИндекс];
            ТабДокумент.Область(СтрокаИндекс + 2, КолонкаИндекс + 1, СтрокаИндекс + 2, КолонкаИндекс + 1).Текст = Таблица_Строка[Колонка.Имя];  // + 2, т.к. в первой строке выведен заголовок
            КолонкаИндекс = КолонкаИндекс + 1;
        КонецЦикла;        
        СтрокаИндекс = СтрокаИндекс + 1;
    КонецЦикла;
    
    Возврат ТабДокумент;
КонецФункции

FastCode Professional - быстрый поиск кода 1С Промо

Удобный поиск по базе шаблонов кода, БСП, общим модулям конфигурации и локальным файлам, ответы на вопросы, помощь сообщества программистов 1С. Клиент для поиска прямо в Конфигураторе!
-10%

Выгрузка Таблицы значений в Объект Таблица Значений на форме обработки (для передачи сервер - клиент)

Передача данных из Таблицы значений на сервере в объект Таблица значений на обработке.
&НаСервере
Процедура ЗаполнитьНаСервере()
	// Вставить содержимое обработчика.
	Запрос= новый запрос;
	Запрос.Текст="ВЫБРАТЬ
	             |	ОстаткиНоменклатурыОстатки.Номеклатура КАК Номеклатура,
	             |	ОстаткиНоменклатурыОстатки.КоличестовОстаток КАК КоличестовОстаток,
	             |	ОстаткиНоменклатурыОстатки.СуммаОстаток КАК СуммаОстаток
	             |ИЗ
	             |	РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки";
	//выборка=запрос.Выполнить().Выбрать();
	
	//создаем ТаблицуЗначений ТЗ
	ТЗ=новый ТаблицаЗначений;
	//Выгружаем Результат Запроса в Таблицу Значений ТЗ 
	ТЗ=запрос.Выполнить().Выгрузить();
	//создаем ТаблицуЗначений ТЗрез
	ТЗрез=новый ТаблицаЗначений;
	//в ТаблицуЗначений ТЗрез выгружаем данные с формы
	ТЗрез=данныеформывзначение(Объект.Результат,Тип("ТаблицаЗначений"));
	//В ТаблицуЗначений ТЗрез сохраняем ТЗ 
	ТЗрез=ТЗ;
	//Записываем значения Таблицы ТЗрез в объект на форме.
	ЗначениеВданныеФормы(ТЗрез,объект.Результат);
	
	//данныевреквизитформы(Тзрез,"Результат0");

КонецПроцедуры

Telegram 1C. Полный разбор API. Курс

Разберись со всеми возможностями API Telegram при работе из 1С
FastCode 51 7
-10%

Заполнить параметры запроса из структуры

Кусок кода с заполнением параметров запроса из структуры с именами полей равных именам параметров. Позволяет заполнять запроса с неизвестным составом параметров из структуры, где добавлены все возможные параметры
//пПараметрыЗапроса - структура с данными для запроса
ПараметрыЗапроса=Запрос.НайтиПараметры();
Для Каждого ПараметрЗапроса Из пПараметрыЗапроса Цикл
	Если ПараметрыЗапроса.Найти(ПараметрЗапроса.Ключ)<>Неопределено Тогда
		Запрос.УстановитьПараметр(ПараметрЗапроса.Ключ, ПараметрЗапроса.Значение)
	КонецЕсли
КонецЦикла;

Проверка заполненности полей объекта и возврат статуса + незаполненных полей

Проверяет поля объекта через ЗначениеЗаполнено(), возвращает структуру с полями: Результат - Булево - = Истина, когда заполнены все поля, = Ложь когда есть не заполненные поля. НеЗаполненныеПоля - Строка - не заполненные поля через запятую #Область П...

Реквизиты Объекта в Структуру

Вернуть реквизиты объекта в виде структуры Ключ (Имя) - Значение
&НаСервере
Функция РеквизитыОбъектаВСтруктуру()
	Результат=Новый Структура;
	ДанныеОбъекта=РеквизитФормыВЗначение("Объект");
	МДОбъекта=ДанныеОбъекта.Метаданные();
	Для Каждого ТекРеквизит Из МДОбъекта.Реквизиты Цикл
		Результат.Вставить(ТекРеквизит.Имя,ДанныеОбъекта[ТекРеквизит.Имя])
	КонецЦикла;
	Возврат Результат
КонецФункции

Проверка типа данных на принадлежность к ссылочным типам

Проверяет тип (ОписаниеТипов) на принадлежность к ссылочным - может понадобиться при Сериализации/Десериализации данных для ИБ с различной структурой
Функция ЭтоТипСсылка(ТипДанных, ВсеТипыСсылок = Неопределено) Экспорт
    Результат = Ложь;
    
    Если ВсеТипыСсылок = Неопределено Тогда
        ВсеТипыСсылок = ОписаниеТипаВсеСсылки();
    КонецЕсли;
    
    Если ТипЗнч(ТипДанных) = Тип("ОписаниеТипов") Тогда
        ТипыВнутри = ТипДанных.Типы();
        Для каждого Тип Из ТипыВнутри Цикл
            Если ВсеТипыСсылок.СодержитТип(Тип) Тогда
                Результат = Истина;
            КонецЕсли;
        КонецЦикла;
    Иначе 
        Если ВсеТипыСсылок.СодержитТип(ТипДанных) Тогда
            Результат = Истина;
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

Создать Таблицу значений со структурой по данным источника

Создает таблицу значений со структурой колонок по данным источника. Есть возможность исключить ссылочные типы из обработки. Может обрабатывать типы РезультатЗапроса, ТаблицаЗначений, ВременнаяТаблицаЗапроса
Функция ПустаяТаблицаЗначенийПоКолонкамИсточника(Данные, ДобавлятьСсылочныеТипы = Истина) Экспорт 
    Перем ВсеТипыСсылок; //для кэширования
    
    Если ТипЗнч(Данные) = Тип("РезультатЗапроса") Или ТипЗнч(Данные) = Тип("ТаблицаЗначений") Или ТипЗнч(Данные) = Тип("ВременнаяТаблицаЗапроса") Тогда
        КолонкиЗапроса = Данные.Колонки;
    Иначе
        Возврат Неопределено;
    КонецЕсли;
    
    Результат = Новый ТаблицаЗначений;
    КолонкиТЗ = Результат.Колонки;
    
    Для Каждого ТекущаяКолонкаЗапроса Из КолонкиЗапроса Цикл
        Если ДобавлятьСсылочныеТипы = Ложь Тогда
            Если ЭтоТипСсылка(ТекущаяКолонкаЗапроса.ТипЗначения, ВсеТипыСсылок) Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
            
        НоваяКолонкаТЗ = КолонкиТЗ.Добавить(ТекущаяКолонкаЗапроса.Имя, ТекущаяКолонкаЗапроса.ТипЗначения);
        ЗаполнитьЗначенияСвойств(НоваяКолонкаТЗ, ТекущаяКолонкаЗапроса);
    КонецЦикла; 
    
    Возврат Результат;
КонецФункции

Функция ЭтоТипСсылка(ТипДанных, ВсеТипыСсылок = Неопределено) Экспорт
    Результат = Ложь;
    
    Если ВсеТипыСсылок = Неопределено Тогда
        ВсеТипыСсылок = ОписаниеТипаВсеСсылки();
    КонецЕсли;
    
    Если ТипЗнч(ТипДанных) = Тип("ОписаниеТипов") Тогда
        ТипыВнутри = ТипДанных.Типы();
        Для каждого Тип Из ТипыВнутри Цикл
            Если ВсеТипыСсылок.СодержитТип(Тип) Тогда
                Результат = Истина;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции 

Универсальные процедуры для работы с логами

Эти процедуры требуются для безболезненных изменений в коде при переходах от строк к массивам строк и обратно и поддержки старых реализаций. Кроме того позволяет изменять вывод лога добавляя в него строки дат, префиксы и др. оформление добавляет к логу данные, действуя в зависимости от типа (строка или массив). оформляет добавляемые строки лога как заголовок
#Область Логирование
// Процедура - Добавляет к логу данные действуя в зависимости от типа (строка или массив)
//
// Параметры:
//  Лог         - Массив, Строка - Лог
//  Данные     - Строка - Данные для добавления
//
Процедура ДобавитьВЛог(Лог, Данные) Экспорт
    Если ТипЗнч(Лог) = Тип("Строка") Тогда
        Лог = Лог + ?(Лог = "", "", Символы.ПС) + Данные;
    ИначеЕсли ТипЗнч(Лог) = Тип("Массив") Тогда
        Лог.Добавить(Данные);
    ИначеЕсли ТипЗнч(Лог) = Тип("ТекстовыйДокумент") Тогда        
        лог.ДобавитьСтроку(Данные);
    ИначеЕсли ТипЗнч(Лог) = Тип("Неопределено") Тогда //по умолчанию лог это массив
        Лог = Новый Массив;
        Лог.Добавить(Данные);
    КонецЕсли;
КонецПроцедуры

Процедура ДобавитьВЛогЗаголовок(Лог, Данные) Экспорт
    
    РазделительЛога = "--------------------------------------------------------------------------";
    Если ТипЗнч(Лог) = Тип("Массив")  Тогда
        СтрокВЛоге = Лог.Количество();
        
        Если СтрокВЛоге > 0 Тогда
            ПоследняяСтрокаЛога = Лог.Получить(СтрокВЛоге - 1);
            Если РазделительЛога <> ПоследняяСтрокаЛога Тогда
                ДобавитьВЛог(Лог, РазделительЛога);
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
    ДобавитьВЛог(Лог, Данные);
    ДобавитьВЛог(Лог, РазделительЛога);
КонецПроцедуры
#КонецОбласти

//быстрая запись в строку из массива для большого объема строк
Функция МассивСтрокВСтроку(Строки) Экспорт 
    
    Запись = Новый ЗаписьXML;
    Запись.УстановитьСтроку();
    Для Каждого ТекущаяСтрока Из Строки Цикл
        Запись.ЗаписатьБезОбработки(ТекущаяСтрока + Символы.ПС);
        
    КонецЦикла;
    
    Возврат Запись.Закрыть();
КонецФункции

Добавить вертикальную черту к началу каждой строчки в тексте

Полезно, если надо перенести SQL запрос в код 1С и для прочих подобных ситуаций. В обработку добавить реквизиты "ТекстИсходный", "ТекстФорматированный". Вид полей формы "Поле текстового документа".
ChOP 24 4
&НаКлиенте
Процедура Форматировать(Команда)
	
	ТекстИсходный = СокрЛП(ТекстИсходный);
	ТекстФорматированный = "";
	
	Для Индекс = 1 По СтрЧислоСтрок(ТекстИсходный) Цикл
		
		ТекстФорматированный = ТекстФорматированный + "|" + СтрПолучитьСтроку(ТекстИсходный,Индекс) + Символы.ПС;
		
	КонецЦикла;
	
	ТекстФорматированный = СокрЛП(ТекстФорматированный);
	
КонецПроцедуры

WooCommerce 1C. Интеграция 1C с интернет магазином на WordPress. Курс

WooCommerce 1с. Научись интегрировать 1С с популярным интернет магазином на WordPress
bolsun 33 4
-10%

Запрос в SQL базу

Получение результата запроса из SQL в таблицу значений
ChOP 24 4
// Возвращает результат запроса в таблице значений.
//
// Параметры:
//  Connection	 - COMОбъект("ADODB.Connection"), коннект к бд (необязательный).
//  SQLText      - текст, текст запроса.
//  ДанныеДляПодключения - структура, формируется в СоздатьДанныеДляПодключения() (необязательный).
//
Функция ПолучитьРезультатЗапроса(SQLText, ДанныеДляПодключения = Неопределено, Connection = Неопределено) Экспорт
	
	Если Connection = Неопределено Тогда
		Connection = НовоеСоединениеССУБД(ДанныеДляПодключения);
	КонецЕсли;
	
	RecordSet                = Новый ComObject("ADODB.RecordSet");
	RecordSet.CursorLocation = 3;
	RecordSet.LockType       = 3;
	
	Попытка
		
		RecordSet.Open(SQLText, Connection);
		
		ТЗ = Новый ТаблицаЗначений;
		КоличествоПолей = RecordSet.Fields.Count;
		
		Для НомерСтолбца = 0 По КоличествоПолей - 1 Цикл // Создание и добавление колонок во временную таблицу
			
			ИмяСтолбца = RecordSet.Fields.Item(НомерСтолбца).Name;
			ТЗ.Колонки.Добавить(RecordSet.Fields.Item(НомерСтолбца).Name, SQLТипВ1СТип(RecordSet.Fields.Item(НомерСтолбца).Type, RecordSet.Fields.Item(НомерСтолбца).DefinedSize));
			
		КонецЦикла;
		
		Пока НЕ RecordSet.EOF Цикл // Заполнение созданной таблицы
			
			НоваяСтрока = ТЗ.Добавить();
			
			Для ПолеСч = 0 По КоличествоПолей - 1 Цикл
				
				Поле = RecordSet.Fields.item(ПолеСч);
				НоваяСтрока[Поле.name] = Поле.Value;
				
			КонецЦикла;
			
			RecordSet.MoveNext();
			
		КонецЦикла;
		
		RecordSet.Close();
		
	Исключение
		
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Запрос в SQL базу " + ДанныеДляПодключения.ИмяБД + "'"), УровеньЖурналаРегистрации.Ошибка, , , "Ошибка выполнения запроса: " + SQLText + Символы.ПС + ОписаниеОшибки());
		ТЗ = Неопределено; 
		
	КонецПопытки;
	
	Возврат ТЗ;
	
КонецФункции

Функция НовоеСоединениеССУБД(ДанныеДляПодключения) Экспорт 
	
	Con = Новый COMОбъект("ADODB.Connection");
	СтрокаПодключения = "Provider=SQLOLEDB; Data Source=" + ДанныеДляПодключения.АдресСервера + ";Initial Catalog=" 
	+ ДанныеДляПодключения.ИмяБД + ";Persist Security Info=True;User ID=" + ДанныеДляПодключения.Логин + ";Password=" + ДанныеДляПодключения.Пароль;
	
	Попытка
		
		Con.ConnectionTimeOut = 15;
		Con.CommandTimeout = 220;
		Con.Open(СтрокаПодключения);
		
	Исключение
		
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Соединение с SQL базой " + ДанныеДляПодключения.ИмяБД + "'"), УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
		Con = Неопределено;
		
	КонецПопытки;
	Возврат Con;
	
КонецФункции

Функция SQLТипВ1СТип(Num, size)
	
	ПараметрыСтроки = Новый КвалификаторыСтроки(size);
	
	Если
		Num = 20 Тогда
		Возврат Новый ОписаниеТипов("Число");
	ИначеЕсли
		Num = 128 Тогда
		Возврат Новый ОписаниеТипов("Булево");
	ИначеЕсли
		Num = 8 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	ИначеЕсли
		Num = 136 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	ИначеЕсли
		Num = 129 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	ИначеЕсли
		Num = 7 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 133 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 134 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 135 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 14 Тогда
		Возврат Новый ОписаниеТипов("Число");
	ИначеЕсли
		Num = 0 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adEmpty 0 no value
	ИначеЕсли
		Num = 3 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adInteger 3 4 - byte signed integer
	ИначеЕсли
		Num = 205 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adLongVarBinary 205 Long binary value
	ИначеЕсли
		Num = 201 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adLongVarChar 201 Long string value
	ИначеЕсли
		Num = 203 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adLongVarWChar 203 Long Null - terminates string value
	ИначеЕсли
		Num = 131 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adNumeric 131 Number with fixed precision and scale
	ИначеЕсли
		Num = 5 Тогда
		Возврат Новый ОписаниеТипов("Число");
	ИначеЕсли
		Num = 4 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adSingle 4 Single - precision floating - point value
	ИначеЕсли
		Num = 2 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adSmallInt 2 2 - byte signed integer
	ИначеЕсли
		Num = 16 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adTinyInt 16 1 - byte signed integer
	ИначеЕсли
		Num = 21 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedBigInt 21 8 - byte unsigned integer
	ИначеЕсли
		Num = 19 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedInt 19 4 - byte unsigned integer
	ИначеЕсли
		Num = 18 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedSmallInt 18 2 - byte unsigned integer
	ИначеЕсли
		Num = 17 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedTinyInt 17 1 - byte unsigned integer
	ИначеЕсли
		Num = 132 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUserDefined 132 User - defined variable
	ИначеЕсли
		Num = 204 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки); // adVarBinary 204 Binary value
	ИначеЕсли
		Num = 12 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adVariant 12 Automation variant
	ИначеЕсли
		Num = 139 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adVarNumeric 139 Variable width exact numeric with signed scale
	ИначеЕсли
		Num = 202 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки); // adVarWChar 202 Null - terminated Unicode character string
	ИначеЕсли
		Num = 130 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки); // adWChar 130
	ИначеЕсли
		Num = 200 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	Иначе
		Возврат Новый ОписаниеТипов("Строка");
	КонецЕсли;
	
КонецФункции

// Возвращает структуру с данными для НовоеСоединениеССУБД().
//
// Параметры:
//  АдресСервера	 - текст, адрес сервера.
//  ИмяБД      - текст, текст имя базы данных.
//  Логин - текст, логин.
//  Пароль - текст, пароль.
//
Функция СоздатьДанныеДляПодключения(АдресСервера, ИмяБД, Логин, Пароль) Экспорт
	
	ДанныеДляПодключения = Новый Структура("АдресСервера, ИмяБД, Логин, Пароль", АдресСервера, ИмяБД, Логин, Пароль);
	Возврат ДанныеДляПодключения;
	
КонецФункции

Очистка номера телефона от "мусора" (нецифровых символов)

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

Автор: ildarovich

FastCode 51 7
СтрСоединить(СтрРазделить(СтрокаСЦифрами, СтрСоединить(СтрРазделить(СтрокаСЦифрами, "0123456789"))))

// Если список ненужных символов известен, например, "(", ")" и "-", то выражение может быть еще короче:

СтрСоединить(СтрРазделить(СтрокаСЦифрами, "()-"))

BSL Language Server

Мощный open-source инструмент для анализа и обработки кода на языке 1С.
FastCode 51 7
Бесплатно

Python + 1C. Защищенный OAuth 2 сервер. Курс

Разработай защищенный OAuth 2 сервер на Python для 1С за одно занятие.
FastCode 51 7
-10%

MAGAZKA - лучшая программа для магазина

Фирменная конфигурация для Платформы 1С 8.2/8.3 На рынке 11 лет, представлена в 14 странах, более 4500 довольных клиентов
-25%

Игра : Самоцветы для 1С

Bejeweled for 1C
Бесплатно

Удалить пространство имен из готового файла xml

также 1C 8 при работе XDTO может добавить атрибут type фильтр на атрибут выглядит так @*[name(.)!='type'] и добавлен перенос строки, иначе весь XML будет в одну строку |<xsl:text> |</xsl:text>
Функция УдалитьПространство(хмл)	//хмл - полное имя файла
	Х =  Новый COMОбъект("Msxml2.DOMDocument.6.0");
	х.async = 0;
	х.validateOnParse = 0;
	х.resolveExternals=0;
	х.load(хмл);
	xslDoc= Новый COMОбъект("MSXML2.DOMDocument.6.0");
	xslDoc.async = 0;
		
	xslDoc.loadXML("<?xml version=""1.0"" encoding=""utf-8""?>
	|<xsl:stylesheet version=""1.0""
	|  xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">
	|  <xsl:output method=""xml""  encoding=""UTF-8"" indent=""no""/>	
	|  <xsl:template match=""/|comment()|processing-instruction()"">
	|    <xsl:copy>
	|<!-- go process children (applies to root node only) -->
	|      <xsl:apply-templates/>
	|    </xsl:copy>
	|  </xsl:template>	
	|  <xsl:template match=""*"">
	|    <xsl:element name=""{local-name()}"">
	|      <!-- go process attributes and children -->
	|      <xsl:apply-templates select=""@*[name(.)!='type']|node()""/>
	|    </xsl:element>
	|<xsl:text>
	|</xsl:text>
	|  </xsl:template>
	|   	
	|  <xsl:template match=""@*"">
	|    <xsl:attribute name=""{local-name()}"">
	|      <xsl:value-of select="".""/>
	|    </xsl:attribute>
	|  </xsl:template>	
	|</xsl:stylesheet>
	|");
		
	xmlDoc= Новый COMОбъект("MSXML2.DOMDocument.6.0");
	// XML = xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""");  	
	х.transformNodeToObject(xslDoc, xmlDoc);
	//xmlDoc.insertBefore(XML,);
	
	xslDoc=0;
	х=0;
	xmlDoc.save(хмл);
	xmlDoc=0;
	Возврат 1;
КонецФункции // УдалитьПространство()

Скрипт установки модели восстановления Simple для всех баз

код выполняется в SQL MS на сервере или в его агенте по расписанию
DECLARE @SqlText VARCHAR(max)  = ''


SELECT @SqlText += 'alter database ['+name+'] set recovery simple' + ';' + CHAR(10) + CHAR(13)
from master.sys.databases
where database_id > 4 and state_desc = 'online' AND recovery_model_desc <> 'SIMPLE'

PRINT @SqlText
EXEC (@SqlText)