Публикации

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

Печать из "вне" ссылки в файл

burovik86 1
ФорматыПечати = Новый Массив;
ФорматыПечати.Добавить(ТипФайлаТабличногоДокумента.DOCX);
КомандыПечати = УправлениеПечатью.КомандыПечатиФормы("Документ.Отпуск.Форма.ФормаДокумента").НайтиСтроки(Новый Структура("Представление", ПредставлениеПФ));	
НастройкиСохранения = УправлениеПечатью.НастройкиСохранения();
НастройкиСохранения.ФорматыСохранения = ФорматыПечати;
НастройкиСохранения.ПодписьИПечать = Истина;

СписокОбъектов = Новый Массив;
СписокОбъектов.Добавить(ДокументСсылка);
	
ТаблицаЗначенийПФ = УправлениеПечатью.НапечататьВФайл(КомандыПечати, СписокОбъектов, НастройкиСохранения);

Как правильно добавить контактную информацию (БСП)

Фрагмент программного добавления контактной информации
//вид контактной информации (адрес партнера, адрес контрагента, телефон партнера и т.д.)
ВидКИ = Справочники.ВидыКонтактнойИнформации.АдресПартнера;
//тип контактной информации (Адрес, Телефон, ЭлектроннаяПочта)
ТипКИ = ВидКИ.Тип;
			
//получение объекта XDTO по представлению контактной информации
ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению("г. Минск, ул. Пинская, 28А", ТипКИ);
ЗначенияПолей = 

//преобразование объекта XDTO в xml
УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);

//запись контактной информации в табличную часть объекта
//ПартнерОбъект - тип СправочникОбъект.ИмяСправочника
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ПартнерОбъект, ЗначенияПолей, ВидКИ, ТипКИ);			

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз Промо

Быстрое и надежное обновление файловых и серверных баз, защита от шифровальщиков, автоматическое обновление доработанных конфигураций и расширений, а также многое другое.
bolsun
950 руб.

Пример работы с OpenOffice/LibreOffice Calc

Нужно загрузить прайс поставщика в xls, но возможности использовать Excel нет. Кто-нибудь загружал данные через OpenOffice или LibreOffice, можете скинуть рабочий пример, откуда начать копать?
pkonev 1

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

ChOP 24 4
&НаКлиенте
Процедура Команда(Команда)

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

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

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

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

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

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

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

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

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

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

Как удалить префикс и лидирующие нули?

Подскажите универсальный способ как убрать из номера документа префикс и лидирующие нули.

Добавить элемент в обычную форму

Программное создание элемента в обычной форме
ПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), <НаименованиеЭлемента>, Истина, <Панель>);
ПолеВвода.Данные = <ПутьКДанным>;
ПолеВвода.Верх = <Верх>;
ПолеВвода.Высота = <Высота>;
ПолеВвода.Лево = <Лево>;
ПолеВвода.Ширина = <Ширина>;
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Лево, <КкомуПривязываемся>, <ККакойЕгоГранице>);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Право, <КкомуПривязываемся>, <ККакойЕгоГранице>);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Верх, <КкомуПривязываемся>, <ККакойЕгоГранице>);
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Низ, <КкомуПривязываемся>, <ККакойЕгоГранице>);

Имя перечисления по значению

Имя перечисления по значению
Артур 40 1 4
XMLСтрока(Перечисления.Виды.Вид1) 

Запись в регистр сведений (периодический, независимый)

Запись в регистр сведений (периодический, независимый)
ArturR 24 2
МенеджерЗаписи = РегистрыСведений.УчетНомернойНоменклатуры.СоздатьМенеджерЗаписи();
		Пока Выборка.Следующий() Цикл
			Если Выборка.Номенклатура.Номерная Тогда
				МенеджерЗаписи.Период 		= Дата;
				МенеджерЗаписи.Место 		= Склад;			
				МенеджерЗаписи.Номенклатура = Выборка.Номенклатура;
				МенеджерЗаписи.Номер 		= Выборка.НомерАгрегата;
				МенеджерЗаписи.Статус 		= Перечисления.СтатусНоменклатуры.НаСкладе;
				МенеджерЗаписи.Записать();
			КонецЕсли;
		КонецЦикла;

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

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

Конвертация даты из формата ISO8601 в дату 1С с учетом миллисекунд

Возвращает структуру с полями "Дата" и "Миллисекунды", стандартный способ преобразования даты округляет время, а в некоторых случаях важна особая точность
Функция КонвертироватьДатуISO8601ВДату(Дата) Экспорт

	КонвертированнаяДата = Новый Структура("Дата, Миллисекунды");
	
	АвтоконвертированнаяДата = XMLЗначение(Тип("Дата"), Дата);

	Миллисекунды = Сред(Дата, 21);
	Миллисекунды = СокрЛП(СтрЗаменить(Миллисекунды, "Z", ""));

	Если НЕ ПустаяСтрока(Миллисекунды) Тогда
		
		ЧислоМиллисекунд = Число(Миллисекунды);
		
		Если ЧислоМиллисекунд >= 500 Тогда
			
			АвтоконвертированнаяДата = АвтоконвертированнаяДата - 1;
			
		КонецЕсли;
		
	КонецЕсли;
	
	КонвертированнаяДата.Дата = АвтоконвертированнаяДата;
	
	КонвертированнаяДата.Миллисекунды = Миллисекунды;
	
	Возврат КонвертированнаяДата;

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

Как добавить свою разработку?

Добавить разработку очень просто! Этот урок демонстрирует как создать публикацию, используя HTML разметку или простой текст.
Бесплатно

Удалить дубли строк в таблице значений

Удаляет дубли строк таблицы по указанным колонкам, если не указано, то ищет дубли во всем.
prog1c 39 1 5
Функция УдалитьДублиСтрокТаблицыЗначений(Таблица, Колонки = "") Экспорт

	Если ПустаяСтрока(Колонки) Тогда
		
		// Просто свернем таблицу по всем колонкам
		
		Для каждого Колонка Из Таблица.Колонки Цикл
			Колонки = Колонки + ?(ПустаяСтрока(Колонки), "", ",") + Колонка.Имя;
		КонецЦикла;
		
		ТаблицаРезультат = Таблица.Скопировать();
		ТаблицаРезультат.Свернуть(Колонки);
		
	Иначе
		
		КолонкиЗапроса = "ТЗ." + СтрЗаменить(Колонки, ",", ",ТЗ.");
		
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ
					   |	" + КолонкиЗапроса + "
					   |ПОМЕСТИТЬ ВТ_ТЗ
					   |ИЗ
					   |	&ТЗ КАК ТЗ
					   |;
					   |
					   |////////////////////////////////////////////////////////////////////////////////
					   |ВЫБРАТЬ РАЗЛИЧНЫЕ
					   |	" + СтрЗаменить(КолонкиЗапроса, "ТЗ.", "ВТ_ТЗ.") + "
					   |ИЗ
					   |	ВТ_ТЗ КАК ВТ_ТЗ
					   |";

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

КонецФункции // УдалитьДублиСтрокТаблицыЗначений()

ЗаписьJSON

Формирует строку со структурой JSON без создания файла
Bezeus 14 1
	ЗаписьJSON = Новый ЗаписьJSON;
	
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	
	ЗаписьJSON.ЗаписатьНачалоОбъекта();
		ЗаписьJSON.ЗаписатьИмяСвойства("Выражение");
		ЗаписьJSON.ЗаписатьЗначение("Сумма 1 + 1");
		ЗаписьJSON.ЗаписатьИмяСвойства("Результат");
		ЗаписьJSON.ЗаписатьЗначение(2);
	ЗаписьJSON.ЗаписатьКонецОбъекта();

	ТелоЗапроса = ЗаписьJSON.Закрыть();

Заполнить реквизит "СуммаДокумента "на форме документа

buketoff 20 4
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	СуммаДокумента = Товары.Итог("Сумма");
КонецПроцедуры

расчет суммы в строке табличной части

расчет суммы в строке табличной части
buketoff 20 4
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
	РассчитатьСумму();
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьСумму()
	Стр = Элементы.Товары.ТекущиеДанные;
	Стр.Сумма = Стр.Цена * Стр.Количество;
КонецПроцедуры


ip адрес локального компьютера

узнать ip адрес локального компьютера
buketoff 20 4
&НаКлиенте
Процедура УзнатьIP(Команда)
	
	COMОбъект1 = Новый COMОбъект("WbemScripting.SWbemLocator");
	COMОбъект2 = COMОбъект1.ConnectServer(".","root\CIMV2");
	
	Результат = COMОбъект2.ExecQuery("SELECT IPAddress FROM 
	|Win32_NetworkAdapterConfiguration 
	|WHERE IPEnabled = TRUE");
	
	Для каждого Строка Из Результат Цикл
		Для каждого ПодСтрока Из Строка.IPAddress Цикл 
			Стр = Объект.IPAddress.Добавить();
			Стр.Адрес = ПодСтрока;
			//Сообщить(ПодСтрока);
		КонецЦикла;
	КонецЦикла;
	
КонецПроцедуры

Загрузка XML в 1С из FTP

КаталогВрФл = КаталогВременныхФайлов();
	
	ФТПСоединение = Новый FTPСоединение("адрес",, "логин", "пароль",, Истина);
	
	НайдемФайлаНаФТП = ФТПСоединение.НайтиФайлы("/", "*.xml");
	
	Если НайдемФайлаНаФТП.Количество() = 0 Тогда
		ФТПСоединение = Неопределено;
		Возврат;
	КонецЕсли;
	
	ДанныеИзФайлаТовары = Новый ТаблицаЗначений();
	ДанныеИзФайлаТовары.Колонки.Добавить("Артикул");
	ДанныеИзФайлаТовары.Колонки.Добавить("ИД");
	ДанныеИзФайлаТовары.Колонки.Добавить("Производитель");
	ДанныеИзФайлаТовары.Колонки.Добавить("Номенклатура");
	ДанныеИзФайлаТовары.Колонки.Добавить("Количество");
	ДанныеИзФайлаТовары.Колонки.Добавить("Цена");
	ДанныеИзФайлаТовары.Колонки.Добавить("Размер");
	ДанныеИзФайлаТовары.Колонки.Добавить("Цвет");
	ДанныеИзФайлаТовары.Колонки.Добавить("Серия");
	ДанныеИзФайлаТовары.Колонки.Добавить("ЦенаСоСкидкой");
	
	ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар");
	ЕдиницаИзмШТ = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду("796");
	ПриоритетСредний = Справочники.Приоритеты.НайтиПоНаименованию("Средний");
	СкладОсновной = Справочники.Склады.НайтиПоНаименованию("Основной склад");
	ТиповоеСоглашение = Справочники.СоглашенияСКлиентами.НайтиПоНаименованию("Основное");
	ВалютаДок = Константы.ВалютаРегламентированногоУчета.Получить(); 
		
	Для каждого ФайлФТП из НайдемФайлаНаФТП Цикл
		
		ДанныеИзФайлаТовары.Очистить();
		НомерКП = ФайлФТП.ИмяБезРасширения;
		ДатаКП = "";
		
		ПутьКФайлуОбъект = КаталогВрФл + ФайлФТП.Имя;
		
		Попытка
		
		ФТПСоединение.Получить(ФайлФТП.ПолноеИмя, ПутьКФайлуОбъект);		
		ФТПСоединение.Переместить(ФайлФТП.ПолноеИмя, "OldFiles" + "\" + ФайлФТП.Имя);
				
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.ОткрытьФайл(ПутьКФайлуОбъект);
		
		Пока ЧтениеXML.Прочитать() Цикл
			Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда Продолжить; КонецЕсли;
			ИмяУзла = ЧтениеXML.ЛокальноеИмя;	
			Если ИмяУзла = "PRODUCT" Тогда
				НоваяСтрока = ДанныеИзФайлаТовары.Добавить();
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "ID" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.ИД = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "ARTICLE" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Артикул = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "SIZE" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Размер = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "COLOR" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Цвет = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "NAME" И ЧтениеXML.КонтекстПространствИмен.Глубина = 5 Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Серия = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "PROPERTY_PROVIDER_NAME" И ЧтениеXML.КонтекстПространствИмен.Глубина = 5 Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Производитель = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "NAME" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Номенклатура = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "QUANTITY" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Количество = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "PRICE" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.Цена = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "PRICE_DISCOUNT" Тогда
				ЧтениеXML.Прочитать();
				НоваяСтрока.ЦенаСоСкидкой = СокрЛП(ЧтениеXML.Значение);
				Продолжить;
			КонецЕсли;
			Если ИмяУзла = "DATE" Тогда
				ЧтениеXML.Прочитать();
				ДатаСтр = СокрЛП(ЧтениеXML.Значение);
				ДатаКП = Дата(ДатаСтр);
				Продолжить;
			КонецЕсли;
		КонецЦикла;
		
		ЧтениеXML.Закрыть();
		УдалитьФайлы(ПутьКФайлуОбъект);

Пересчет сумм в табличной части документа

НА СЕРВЕРЕ:

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


НА КЛИЕНТЕ:

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



СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаСтрока.Склад, ПараметрыУказанияСерий));
				ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаСтрока, СтруктураДействий, Неопределено);

Программная обработка расшифровки отчета на СКД на обычных формах

Igozz 24 1 2
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
   Перем ВыполненноеДействие;

   // Запретим стандартную обработку расшифровки
 
    СтандартнаяОбработка = Ложь;

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

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


        Иначе
            
             // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней
 
            Отчет = Отчеты[Метаданные().Имя].Создать();
            Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
            Форма = Отчет.ПолучитьФорму();
            Форма.ОбновитьОтчет();
            Форма.Открыть();

        КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Пауза

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