﻿
&НаКлиенте
Процедура СформироватьОтчет(Команда)
	ТабДок = СформироватьОтчетНаСервере();
	РеквизитТабличныйДокумент = ТабДок;
	
	Элементы.РеквизитТабличныйДокумент.Доступность = Не СделатьМакетНедоступным;
	//ТабДок.Показать();
КонецПроцедуры

&НаСервереБезКонтекста
Функция СформироватьОтчетНаСервере(ДобавитьВертикальнуюЧерту = Ложь,ОбъеденитьЯчейки = Ложь, ДобавитьПереносСтроки = Ложь)
	
	Макет = Справочники.Справочник3.ПолучитьМакет("Макет");
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Справочник3.Ссылка КАК Ссылка,
		|	Справочник3.Представление КАК Представление,
		|	Справочник3.ВерсияДанных КАК ВерсияДанных,
		|	Справочник3.ПометкаУдаления КАК ПометкаУдаления,
		|	Справочник3.Код КАК Код,
		|	Справочник3.Наименование КАК Наименование,
		|	Справочник3.Предопределенный КАК Предопределенный,
		|	"""" КАК ИмяПредопределенныхДанных,
		|	1.2 КАК ПараметрЧисло
		|ИЗ
		|	Справочник.Справочник3 КАК Справочник3
		|
		|УПОРЯДОЧИТЬ ПО
		|	Наименование";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
	ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
	
	ТабДок = Новый ТабличныйДокумент;
	
	ТабДок.Очистить();
	ТабДок.Вывести(ОбластьЗаголовок);
	ТабДок.Вывести(ОбластьШапкаТаблицы);
	ТабДок.НачатьАвтогруппировкуСтрок();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
		Если ДобавитьВертикальнуюЧерту Тогда
			ОбластьДетальныхЗаписей.Параметры.Наименование =  ОбластьДетальныхЗаписей.Параметры.Наименование + "|ДопСтрока";
		ИначеЕсли ДобавитьПереносСтроки Тогда
			ОбластьДетальныхЗаписей.Параметры.Наименование =  ОбластьДетальныхЗаписей.Параметры.Наименование + Символы.ПС + "ДопСтрока";
		КонецЕсли;	 
		ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
	КонецЦикла;
	
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	
	
	Если ТабДок.ВысотаТаблицы >=5 Тогда
		Область = ТабДок.Область(5,2,5,2);
		Область.Имя = "ОбластьПерваяСтрокаОтчетаНаименование";
	КонецЕсли;	 
	
	Если ОбъеденитьЯчейки Тогда
		ТабДок.Область(1,1,2,2).Объединить();
	КонецЕсли;	 
	
	Возврат ТабДок;
КонецФункции

&НаКлиенте
Процедура ОткрытьФайл(Команда)
	ДиалогВыбораФайла =  Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогВыбораФайла.Заголовок="Открытие файла";	
	
	//ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтаФорма);
	
	//Ванесса.ЗапретитьВыполнениеШагов();
	
	//ДиалогВыбораФайла.Показать(ОписаниеОповещения);
	Если ДиалогВыбораФайла.Выбрать() Тогда
		Сообщить("Был выбран файл " + ДиалогВыбораФайла.ВыбранныеФайлы[0]);
	КонецЕсли;	 
КонецПроцедуры

&НаКлиенте
Процедура СформироватьОтчетСВертикальнойЧертой(Команда)
	ТабДок = СформироватьОтчетНаСервере(Истина);
	РеквизитТабличныйДокумент = ТабДок;
КонецПроцедуры

&НаКлиенте
Процедура СделатьСлужебноеСообщение(Команда)
	Сообщить("Служебное сообщение!");
	Сообщить("Служебное сообщение1!");
	Сообщить("Служебное сообщение2!");
	Сообщить("Служебное сообщение3!");
КонецПроцедуры

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

&НаКлиенте
Процедура ОповещениеКомандаПоказатьВопросСНестандартнымДиалогом(Ответ, Параметры) Экспорт
	Сообщить(""+Ответ);
КонецПроцедуры

&НаКлиенте
Процедура СформироватьОтчетОбъединенныеЯчейки(Команда)
	ТабДок = СформироватьОтчетНаСервере(,Истина);
	РеквизитТабличныйДокумент = ТабДок;
КонецПроцедуры

&НаКлиенте
Процедура РазрешитьРедактированиеТабличногоДокумента(Команда)
	Элементы.РеквизитТабличныйДокумент.Редактирование = Истина;
КонецПроцедуры

&НаКлиенте
Процедура СформироватьОтчетСЗадержкойОбработчикОжидания() Экспорт
	ТабДок = СформироватьОтчетНаСервере();
	РеквизитТабличныйДокумент = ТабДок;
	Элементы.РеквизитТабличныйДокумент.Доступность = Не СделатьМакетНедоступным;
КонецПроцедуры 

&НаКлиенте
Процедура СформироватьОтчетСЗадержкой(Команда)
	ПодключитьОбработчикОжидания("СформироватьОтчетСЗадержкойОбработчикОжидания",2,Истина);
КонецПроцедуры

&НаКлиенте
Процедура ОтчетСПереносомСтроки(Команда)
	ТабДок = СформироватьОтчетНаСервере(,,Истина);
	РеквизитТабличныйДокумент = ТабДок;
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьОтчетВНовомОкнеИСохранитьВФайл(Команда)
	ТабДок = СформироватьОтчетНаСервере();
	ТабДок.Показать("Отчет отдельным окном");
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьТабличныйДокументИзФайла(Двд)
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("mxl");
	Двд.Записать(ИмяВременногоФайла);
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.Прочитать(ИмяВременногоФайла);
	Возврат ТабДок; 
КонецФункции	 

&НаКлиенте
Процедура ОткрытьМакетЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт 
	
	Если ВыбранныеФайлы = Неопределено Тогда
		Возврат;
	КонецЕсли;	 
	
	ДвоичныеДанные = Новый ДвоичныеДанные(ВыбранныеФайлы[0]);
	РеквизитТабличныйДокумент = ПолучитьТабличныйДокументИзФайла(ДвоичныеДанные);

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

&НаКлиенте
Процедура ОткрытьМакет(Команда)
	ДиалогВыбораФайла =  Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогВыбораФайла.Заголовок="Открытие файла";	
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьМакетЗавершение", ЭтаФорма);
	ДиалогВыбораФайла.Показать(ОписаниеОповещения);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьМенюПривязанноеКФорме(Команда)
	
	Оповещение = Новый ОписаниеОповещения("ПослеВыбораИзМеню",ЭтаФорма);
	
	Спс = Новый СписокЗначений;
	Спс.Добавить("Пункт1");
	Спс.Добавить("Пункт2", "Пункт2");
	Спс.Добавить("Пункт3", "ПунктТри");
	Спс.Добавить("Пункт4" + Символы.ПС + "Пункт5");
	Спс.Добавить("Пункт67", "Пункт6" + Символы.ПС + "Пункт7");
	ПоказатьВыборИзМеню(Оповещение, Спс, Элементы.Код);
КонецПроцедуры    

&НаКлиенте
Процедура ПослеВыбораИзМеню(Результат, ДопПараметры) Экспорт
	Если Результат <> Неопределено Тогда
		Сообщить(Результат.Значение);
	КонецЕсли;	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьСписокПривязанныйКФорме(Команда)
	Список = Новый СписокЗначений;
	Список.Добавить("Значение списка",,Истина);
	Список.Добавить("Тест",,Ложь);
	Список.Добавить("Пункт1");
	Список.Добавить("Пункт2", "Пункт2");
	Список.Добавить("Пункт3", "ПунктТри");
	Список.Добавить("Пункт4" + Символы.ПС + "Пункт5");
	Список.Добавить("Пункт67", "Пункт6" + Символы.ПС + "Пункт7");
	
	Оповещение = Новый ОписаниеОповещения("ПослеВыбораИзСписка", ЭтаФорма, Параметры);
	ПоказатьВыборИзСписка(Оповещение, Список, Элементы.Код);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораИзСписка(ВыбранныйЭлемент, Параметры) Экспорт
	
	Если ВыбранныйЭлемент <> Неопределено Тогда
		Сообщить(ВыбранныйЭлемент.Значение);
	КонецЕсли;	

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

&НаКлиенте
Процедура ЭмуляцияОкнаПроверкаПравомерности(Команда)
	
	ОткрытьФорму("Справочник.Справочник3.Форма.ФормаПравомерности");
	
КонецПроцедуры
