Шаблоны кода 1С


Добавить новый Назад

Программное открытие отчета или обработки из справочника "ВнешниеОбработки"

Функция открывает внешний отчет или обработку из справочника "ВнешниеОбработки", нужно передать только имя обработки.

отчет обработка внешний программно

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

Запрет выгрузки в КД по дате запрета редактирования

ПередКонвертациейОбъекта, глобальное событие

КД Дата запрета

Добавил: acsent
// Выгружаем документы только по списку организаций.
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Источник));
Если МетаданныеОбъекта <> Неопределено
	И Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
	
	Если МетаданныеОбъекта.Реквизиты.Найти("Организация") <> Неопределено Тогда	 
		
		ДатаЗапретаРедактирования = Параметры.ДатыЗапретаРедактирования[Источник.Организация.Код];
		Если ЗначениеЗаполнено(ДатаЗапретаРедактирования) Тогда
			
			Если Источник.Дата <= ДатаЗапретаРедактирования Тогда
				НеЗамещатьОбъектПриЗагрузке = Истина;
				ТолькоПолучитьУзелСсылки    = Истина;
			КонецЕсли;	
			
		КонецЕсли;	
		
	КонецЕсли;
	
КонецЕсли;

Добавить отбор в списке, в пользовательских настройках

СКД УФ

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

Поиск кириллицы в строке

Ищет кириллицу в строке.

кириллица

Добавил: Dmitry Zhurbenko
Функция ПоискКириллицы(Текст) Экспорт;
Для i=1040 по 1103 цикл
	Результат = Найти (Текст, Символ(i));
	Если Результат>0 Тогда
		Возврат Истина;
	КонецЕсли; 
КонецЦикла;
Возврат Ложь;

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

транслитерация

транслитерация

Добавил: Dmitry Zhurbenko
Функция ЗаменитьСимволы (Источник,Текст,Замена) Экспорт
Результат = Текст;
Для Сч = 1 По СтрДлина(Источник) Цикл
Результат = СтрЗаменить(Результат,Сред(Источник,Сч,1),Сред(Замена,Сч,1));
КонецЦикла;
Возврат Результат;    
КонецФункции 

Функция Транслитерация(Знач Слово) Экспорт
Слово = НРег(Слово);
Слово=СтрЗаменить(Слово,"ш","sh");
Слово=СтрЗаменить(Слово,"щ","shh");
Слово=СтрЗаменить(Слово,"ж","zh");
Слово=СтрЗаменить(Слово,"ц","ts");
Слово=СтрЗаменить(Слово,"ь","'");
Слово=СтрЗаменить(Слово,"ъ", Символ(34)); //двойная кавычка
Слово=СтрЗаменить(Слово,"ч","ch");
Слово=СтрЗаменить(Слово,"её","yeyo");
Слово=СтрЗаменить(Слово,"ёе","yoye");
Слово=СтрЗаменить(Слово,"я","ya");
Слово=СтрЗаменить(Слово,"ю","yu");
Слово=СтрЗаменить(Слово," - ","-");
Слово=СтрЗаменить(Слово," -","-");
Слово=СтрЗаменить(Слово,"- ","-");
Слово=СтрЗаменить(Слово," ","-");
Слово=ЗаменитьСимволы("абвгдезийклмнопрстуфыэ",Слово,"abvgdezijklmnoprstufye");
Возврат Слово;
КонецФункции

Изменение формы справочника в зависимости от папки

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

Установка границы

Установка границы

Граница

Добавил: Александр
ПоследовательностьДляРегистрации = Последовательности.РасчетыПоПриобретениюОрганизации;
ПоследовательностьДляРегистрации.УстановитьГраницу(Новый МоментВремени(НачалоМесяца(НаДату)),Новый Структура("Организация",Организация));
ПоследовательностьДляРегистрации = Последовательности.РасчетыПоРеализацииОрганизации;
ПоследовательностьДляРегистрации.УстановитьГраницу(Новый МоментВремени(НачалоМесяца(НаДату)),Новый Структура("Организация",Организация));

Запись в Журнал

Журнал регистрации

Проверка

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

Дополнительные свойства

Изменение дополнительных свойств

8.2 ДопСвойства УТ 10.3

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

Значение полей в расшифровке СКД

Значение полей в расшифровке СКД

СКД расшифровка

Добавил: acsent
&НаСервереБезКонтекста 
Функция ПолучитьЗначениеПоляРасшифровкиНаСервере(ИдентификаторРасшифровки, АдресДанныхРасшифровки)
	
    ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресДанныхРасшифровки);
	ЭлементРасшифровки = ДанныеРасшифровки.Элементы[ИдентификаторРасшифровки];
	
	МассивРодителей = Новый Массив;
	МассивРодителей.Добавить(ЭлементРасшифровки.ПолучитьПоля());
	
	Родители = ЭлементРасшифровки.ПолучитьРодителей();
	ЗаполнитьМассивРодителей(МассивРодителей, Родители);
	
	Результат = Новый Соответствие;
	Для Счетчик = 1 по МассивРодителей.Количество() Цикл 
		
		// Обойдем в обратном порядке, чтобы поставить условия в порядке группировок			
		ПоляКомпоновки = МассивРодителей[МассивРодителей.Количество() - Счетчик];
		Для каждого ПолеКомпоновки из ПоляКомпоновки Цикл
			
			//Если ПолеКомпоновки.Иерархия Тогда
			//	Продолжить;
			//КонецЕсли;	
			
			Результат.Вставить(ПолеКомпоновки.Поле, ПолеКомпоновки.Значение);
			
		КонецЦикла;	
		
	КонецЦикла;	
	
	Возврат Результат;
	
КонецФункции

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

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

TurboConf

Удобный поиск шаблонов кода

прямо в Конфигураторе

Узнать подробнее