Публикации

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

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

ChOP 16 2

Генератор случайных символов

В данном примере показано, как можно сгенерировать строку длинной в 6 символов, состоящие из цифр, маленьких и больших букв латиницы. !Особенность.Если ТекущаяУниверсальнаяДатаВМиллисекундах() вернет 2 и более одинаковых числа (т.е. сервер настолько быстрый, что 2 и более операции произошли в рамках 1 миллисекунды), будут сгенерированы 2 и более одинаковых "случайных числа".
1 ChOP 16 2
Процедура КнопкаСгенерировать()    
    Для Сч = 1 по 100 Цикл
        Сообщить(ГенерацияСлучайногоСимвола(ТекущаяУниверсальнаяДатаВМиллисекундах()));
    КонецЦикла;   
КонецПроцедуры

Функция ГенерацияСлучайногоСимвола(Счетчик)
    ГСЧ = Новый ГенераторСлучайныхЧисел(Счетчик);    
    СлучайнаяСтрока = "";
    // генерируем случайное число из 6-ти символов, например "d0c8Yf"
    Для Сч = 1 по 6 Цикл        
        Набор = ГСЧ.СлучайноеЧисло(1,3);    
        Если Набор = 1 Тогда
            // это число
            СлучайныйСимвол = ГСЧ.СлучайноеЧисло(0,9);    
        ИначеЕсли Набор = 2 Тогда
            // это Большая буква латиницы
            СлучайныйСимвол = Символ(ГСЧ.СлучайноеЧисло(65,90));
        ИначеЕсли Набор = 3 Тогда
            // это маленькая буква латиницы
            СлучайныйСимвол = Символ(ГСЧ.СлучайноеЧисло(97,122));
        КонецЕсли;
        СлучайнаяСтрока = СлучайнаяСтрока + СлучайныйСимвол;
    КонецЦикла;      
    Возврат(СлучайнаяСтрока);    
КонецФункции

Дополнительная расшифровка отчета БСП

Добавление своих вариантов расшифровки в ОбщиеФормы.ФормаОтчета
ChOP 16 2
// Общий модуль ОтчетыКлиентПереопределяемый

Процедура ОбработкаРасшифровки(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка) Экспорт
	
	ОбработкаРасшифровкиПереопределение(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка);
	
КонецПроцедуры

Процедура ОбработкаДополнительнойРасшифровки(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка) Экспорт
	
	ОбработкаРасшифровкиПереопределение(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

		ПараметрыФормыХ = Новый Структура("СформироватьПриОткрытии, Отбор, КлючВарианта", Истина, ОтборХ, "ДляРасшифровки"); 
		
		ОткрытьФорму("Отчет.ЗаявкиНаПлатежПоДоговоруКонтрагента.Форма.ФормаОтчета", ПараметрыФормыХ, ДополнительныеПараметры.ФормаОтчета, ДополнительныеПараметры.Договор);		
		
	КонецЕсли;
	
КонецПроцедуры

//Общий модуль ОтчетыВызовСервера установлены галочки: сервер, вызов сервера

Функция ЗначениеДанныхВПолеРасшифровки(ОтчетДанныеРасшифровки, Расшифровка) Экспорт
	
	ДанныеРасшифровки = ПолучитьИзВременногоХранилища(ОтчетДанныеРасшифровки);
	Возврат ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля()[0].Значение;	
	
КонецФункции

Убрать итоги из готового текста запроса

Позволяет убрать итоги из текста запроса, на пример, перед передачей его в СКД
ChOP 16 2
СхемаЗапроса = новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).ВыраженияИтогов.Очистить();
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).КонтрольныеТочкиИтогов.Очистить();
Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();

Открыть форму незаписанного документа

Источник https://infostart.ru/public/118784/
3 ChOP 16 2
&НаКлиенте
Процедура Команда(Команда)

Форма = ПолучитьФорму("Документ.НашДокумент.ФормаОбъекта");
ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
Форма.Открыть();

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

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

&НаСервереБезКонтекста

Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.НашДокумент")); // Получаем объект из данных формы ИЛИ

Док = Документы.НашДокумент.СоздатьДокумент();

// Заполняем реквизиты объекта или другие действия ********

ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции

Проверка Модифицированности объекта

1 ChOP 16 2
Функция ОбъектМодифицирован(Объект, ПроверятьТабличныеЧасти = Истина, ПроверятьСтандартные = Истина) Экспорт
    
    Ссылка = Объект.Ссылка;
    МетаданныеОбъекта = Ссылка.Метаданные();
    
    Для каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
    Если Объект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда
            Возврат Истина;
        КонецЕсли;
    КонецЦикла;
    
    Если ПроверятьСтандартные Тогда
        Для каждого Реквизит Из МетаданныеОбъекта.СтандартныеРеквизиты Цикл
            Если Объект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда
                Возврат Истина;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
     
    Если ПроверятьТабличныеЧасти Тогда
        Для каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл
            
            Если Объект[ТЧ.Имя].Количество() <> Ссылка[ТЧ.Имя].Количество() Тогда
        Возврат Истина;
            КонецЕсли;
                        
            Для Индекс = 0 По Объект[ТЧ.Имя].Количество()-1 Цикл
                ОбъектСтрокаТЧ = Объект[ТЧ.Имя][Индекс];
                СсылкаСтрокаТЧ = Ссылка[ТЧ.Имя][Индекс];
                Для каждого РеквизитТЧ Из ТЧ.Реквизиты Цикл
                    Если ОбъектСтрокаТЧ[РеквизитТЧ.Имя] <> СсылкаСтрокаТЧ[РеквизитТЧ.Имя] Тогда
                        Возврат Истина;
                    КонецЕсли;
                КонецЦикла;
            КонецЦикла;
            
        КонецЦикла;        
    КонецЕсли;
    
    Возврат Ложь;
    
КонецФункции

Сократить лидирующие нули

Убирает лидирующие нули в строке без пробелов
2 ChOP 16 2
Функция УбратьЛидирующиеНули(СокращаемаяСтрока)

		Возврат СтрЗаменить(СокрЛ(СтрЗаменить(СокращаемаяСтрока,"0"," "))," ","0");

КонецФункции

Генератор случайных чисел для диапазона с дробными и отрицательными числами

4 ChOP 16 2
Функция Генератор(КоличествоСимволовПослеЗапятой = 0, НижняяГраница, ВерхняяГраница )
	
		Множитель = 1;
		
		Пока КоличествоСимволовПослеЗапятой <> 0 Цикл
			
			КоличествоСимволовПослеЗапятой = КоличествоСимволовПослеЗапятой - 1;
			
			Множитель = Множитель*10;
			
		КонецЦикла;
		
		Генератор = Новый ГенераторСлучайныхЧисел();
		
		НижняяГраница = НижняяГраница * Множитель;
		ВерхняяГраница = ВерхняяГраница * Множитель;
		
		Если НижняяГраница > ВерхняяГраница Тогда
			
			Возврат Неопределено;
		
		ИначеЕсли НижняяГраница < 0 Тогда
			
			НижняяГраница = 0;
			ВерхняяГраница = ВерхняяГраница - НижняяГраница;
			
			РезультатГенератора = Генератор.СлучайноеЧисло(НижняяГраница, ВерхняяГраница)/Множитель - НижняяГраница;
							
		ИначеЕсли НижняяГраница >= 0 Тогда
			
			РезультатГенератора = Генератор.СлучайноеЧисло(НижняяГраница, ВерхняяГраница)/Множитель;
									
		КонецЕсли;

		Возврат РезультатГенератора ;

КонецФункции