Публикации

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

Найдено публикаций: 8


Открытие активизация формы

    ПутьКФорме = "ПланОбмена.ИмяПланаОбмена.Форма.ФормаВыгрузкиНоменклатуры";
    
    ОткрываемаяФорма = ПолучитьФорму(ПутьКФорме,,,ПутьКФорме);
    Если ОткрываемаяФорма.Открыта() Тогда
        ОткрываемаяФорма.Активизировать();
    Иначе
        ОткрываемаяФорма.Открыть();
    КонецЕсли;

Отключение (DETACH) баз MS SQL с отбором по вхождению в имя

/******************************************************* Отключение (DETACH) баз MS SQL с отбором по вхождению в имя *******************************************************/ DECLARE @SQL VARCHAR(max) = '' DECLARE @StrNewLine CHAR SET @StrNewLine = CHAR...

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

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

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

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

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

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

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

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

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

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

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

Скрипт установки модели восстановления 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)

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

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