Войти

Login to your account

Username *
Password *
Remember Me

Вызов диалога выбора каталога

Функция вызова диалога выбора каталога (Режим использования модальности: Не использовать)


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

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

Процедура ВыбратьКаталогЗавершениеОтображенияДиалогаВыбораФайла(Каталог, ДополнительныеПараметры) Экспорт
	
	Если Каталог <> Неопределено Тогда
		
		ДополнительныеПараметры.Форма[ДополнительныеПараметры.ПутьКДанным] = Каталог[0];
		
		Если ДополнительныеПараметры.ОповещениеЗавершения <> Неопределено Тогда
			ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеЗавершения, Каталог[0]);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

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


Функция вызова диалога выбора каталога (Режим использования модальности: Использовать)


// Позволяет пользователю выбрать каталог на диске.
//
// Параметры
//  ИмяКаталога  – Строка, содержащая начальный путь к каталогу на диске.
//	ЗаголовокДиалога - Строка, содержащая заголовок диалога
//
// Возвращаемое значение:
//   Булево – Истина, если каталог выбран, Ложь, если нет.
//
Функция ВыбратьКаталог(ИмяКаталога, Знач ЗаголовокДиалога = "Укажите каталог") Экспорт

	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
	Диалог.Заголовок = ЗаголовокДиалога;
	Диалог.МножественныйВыбор = Ложь;
	Диалог.Каталог = ИмяКаталога;

	Если Диалог.Выбрать() Тогда
		ИмяКаталога = Диалог.Каталог;
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли;

КонецФункции // ВыбатьКаталог()

Метки: Управляемые формы, Обычные формы