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


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

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

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

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

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

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

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

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

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

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

КонецПроцедуры	
Добавить комментарий

Значение из буфера обмена

Возвращает текстовое значение буфера обмена

8.2

Добавил: Dmitry Zhurbenko
Функция ПолучитьТекстИзБуфераОбмена() Экспорт
  #Если Клиент Тогда
    Объект = Новый COMОбъект("htmlfile");
    Возврат Объект.ParentWindow.ClipboardData.Getdata("Text");
  #КонецЕсли
КонецФункции
Комментарии: 2

Создать отбор в скд

создает отбор в схеме компоновки данных

8.2

//очистка тек. отбора
КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();

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

//очистим таб поле
ЭлементыФормы.Результат.Очистить();
//перекомпонуем результат
СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки);
Добавить комментарий

Запрос с нумерацией строк

хитрый запрос с нумерацией строк

запрос

ВЫБРАТЬ
	                 |	ШтрихкодыНоменклатуры.Штрихкод,
	                 |	ШтрихкодыНоменклатуры.Номенклатура,
	                 |	ШтрихкодыНоменклатуры.Характеристика,
	                 |	ШтрихкодыНоменклатуры.Упаковка
	                 |ПОМЕСТИТЬ Нач
	                 |ИЗ
	                 |	РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
	                 |;
	                 |
	                 |////////////////////////////////////////////////////////////////////////////////
	                 |ВЫБРАТЬ
	                 |	Нач.Штрихкод,
	                 |	КОЛИЧЕСТВО(Нач1.Штрихкод) КАК ПорядковыйНомер
	                 |ИЗ
	                 |	Нач КАК Нач
	                 |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Нач КАК Нач1
	                 |		ПО Нач.Штрихкод >= Нач1.Штрихкод
	                 |
	                 |СГРУППИРОВАТЬ ПО
	                 |	Нач.Штрихкод
	                 |
	                 |УПОРЯДОЧИТЬ ПО
	                 |	ПорядковыйНомер
Добавить комментарий

Средневзвешенный курс валюты за указанный период

Средневзвешенный курс валюты за указанный период (запрос для 8.0)

8.0 Средневзвешенный курс

Добавил: Dmitry Zhurbenko
////////////////////////////////////////////////////////////////////////////////
//
// Функция ПолучитьСреднийКурсВалюты
//
// Описание: Возвращает средневзвешенный курс за период
//
//
// Параметры (название, тип, дифференцированное значение)
//
// Возвращаемое значение: 
//
Функция ПолучитьСреднийКурсВалюты(НачПериода, КонПериода, Валюта) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("НачалоПериода", НачПериода);
	Запрос.УстановитьПараметр("КонецПериода", КонПериода);
	Запрос.УстановитьПараметр("Валюта", Валюта);
	Запрос.Текст = "ВЫБРАТЬ
	               |	ЕСТЬNULL(ВЫРАЗИТЬ(СУММА(ВложенныйЗапрос.Курс) / КОЛИЧЕСТВО(ВложенныйЗапрос.Период) КАК ЧИСЛО(15, 4)), 0) КАК СреднийКурс
	               |ИЗ
	               |	(ВЫБРАТЬ
	               |		ВложенныйЗапрос.Период КАК Период,
	               |		КурсыВалют.Курс КАК Курс
	               |	ИЗ
	               |		(ВЫБРАТЬ
	               |			МАКСИМУМ(КурсыВалют.Период) КАК ПериодКурса,
	               |			ВложенныйЗапрос.Период КАК Период
	               |		ИЗ
	               |			(ВЫБРАТЬ
	               |				ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период
	               |			ИЗ
	               |				(ВЫБРАТЬ
	               |					0 КАК a
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					1
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					2
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					3
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					4
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					5
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					6
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					7
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					8
	               |				
	               |				ОБЪЕДИНИТЬ
	               |				
	               |				ВЫБРАТЬ
	               |					9) КАК aa
	               |					ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |						0 КАК b
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						1
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						2
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						3
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						4
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						5
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						6
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						7
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						8
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						9) КАК bb
	               |					ПО (ИСТИНА)
	               |					ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |						0 КАК c
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						1
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						2
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						3
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						4
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						5
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						6
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						7
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						8
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						9) КАК cc
	               |					ПО (ИСТИНА)
	               |					ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	               |						0 КАК d
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						1
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						2
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						3
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						4
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						5
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						6
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						7
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						8
	               |					
	               |					ОБЪЕДИНИТЬ
	               |					
	               |					ВЫБРАТЬ
	               |						9) КАК dd
	               |					ПО (ИСТИНА)
	               |			ГДЕ
	               |				aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК ВложенныйЗапрос
	               |				ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
	               |				ПО КурсыВалют.Период <= ВложенныйЗапрос.Период
	               |					И (КурсыВалют.Валюта = &Валюта)
	               |		
	               |		СГРУППИРОВАТЬ ПО
	               |			ВложенныйЗапрос.Период) КАК ВложенныйЗапрос
	               |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
	               |			ПО ВложенныйЗапрос.ПериодКурса = КурсыВалют.Период
	               |				И (КурсыВалют.Валюта = &Валюта)) КАК ВложенныйЗапрос";
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Возврат 0;
	Иначе
		Выборка = Результат.Выбрать();
		Выборка.Следующий();
		Возврат Выборка.СреднийКурс ;		
	КонецЕсли; 
    
КонецФункции //ПолучитьСреднийКурсВалюты
Добавить комментарий

ТаблицаЗначенийВМассив

Преобразует таблицу значений в массив.

Коллекции

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

КонецФункции
Добавить комментарий

Перенести отбор СКД

Перенести отбор СКД из одного компоновщика в другой

СКД

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

Програмное создание схемы СКД

Пример прогрманого создания схемы СКД

СКД

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

Изменение событий в отборе СКД

Изменение событий в отборе СКД (обычные формы)

СКД

ЭлементыФормы.Отбор.Колонки.ПравоеЗначениеДляКраткогоОтображенияЭлемента.ЭлементУправления.УстановитьДействие("НачалоВыбора", Новый Действие("ОтборНачалоВыбора"));

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

TurboConf

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

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

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