Достаточно часто нам требуется получить от пользователя какую-либо информацию — имя файла или каталога, цвет или шрифт. Для всего этого в 1С существуют диалоги. Код, который требуется для вызова диалога, довольно стандартный и мало чем отличается из раза в раз. Собственно именно о том, как вызвать различные диалоги в 1С 8.2 и 8.3 и пойдет речь.
Отмечу, что приведенные ниже примеры подходят для любых конфигураций 1С 8.2, а также для конфигураций 1С 8.3 у которых свойство конфигурации «Режим использования модальности» установлено как «Использовать» либо «Использовать с предупреждениями». Если же Вы имеете дело с конфигурацией 1С 8.3 не использующей модальность, то рекомендую прочесть статью о модальности в 1С.
Выбор каталога в 1С
1 2 3 4 5 6 7 | &НаКлиенте Процедура ВыборКаталога(Команда) тДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); Если тДиалог.Выбрать() Тогда Сообщить(тДиалог.Каталог); КонецЕсли; КонецПроцедуры |
Выбор файла в 1С
1 2 3 4 5 6 7 8 9 10 | &НаКлиенте Процедура ВыборФайла(Команда) тДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); тДиалог.Фильтр = "MS Office|*.doc;*.docx;*.xls;*.xlsx|Все файлы (*.*)|*.*"; тДиалог.ИндексФильтра = 1; //укажем фильтр по умолчанию (нумерация с нуля) Если тДиалог.Выбрать() Тогда Сообщить(тДиалог.Каталог); Сообщить(тДиалог.ПолноеИмяФайла); КонецЕсли; КонецПроцедуры |
Обращаю Ваше внимание, что несколько масок расширений в одном фильтре должны разделяться знаком — точка с запятой (в синтаксис-помощнике об этом по-моему не написано).
Сохранение файла в 1С
1 2 3 4 5 6 7 8 9 10 11 | &НаКлиенте Процедура СохранитьФайл(Команда) тДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); тДиалог.Фильтр = "MS Office|*.doc;*.docx;*.xls;*.xlsx|Все файлы (*.*)|*.*"; тДиалог.ИндексФильтра = 1; //укажем фильтр по-умолчанию (нумерация с нуля) тДиалог.Расширение = "txt"; //расширение по-умолчанию для сохраняемого файла Если тДиалог.Выбрать() Тогда Сообщить(тДиалог.Каталог); Сообщить(тДиалог.ПолноеИмяФайла); КонецЕсли; КонецПроцедуры |
В этом диалоге свойство «фильтр» никак не влияет на расширение сохраняемого файла.
Выбор цвета в 1С
1 2 3 4 5 6 7 | &НаКлиенте Процедура ВыборЦвета(Команда) тДиалог = Новый ДиалогВыбораЦвета(); Если тДиалог.Выбрать() Тогда Сообщить(""+тДиалог.Цвет.Красный+" "+тДиалог.Цвет.Зеленый+" "+тДиалог.Цвет.Синий); КонецЕсли; КонецПроцедуры |
Никаких свойств кроме «цвет» (только чтение) у этого объекта больше нет.
Выбор шрифта в 1С
1 2 3 4 5 6 7 8 | &НаКлиенте Процедура ВыборШрифта(Команда) тДиалог = Новый ДиалогВыбораШрифта(); тДиалог.Шрифт = Элементы.ДекорацияТекст.Шрифт; //можно, например, изменить какой-то конкретный шрифт Если тДиалог.Выбрать() Тогда Элементы.ДекорацияТекст.Шрифт = тДиалог.Шрифт; КонецЕсли; КонецПроцедуры |
Единственное свойство этого объекта — «шрифт», доступно для записи.
Свойства объекта «ДиалогВыбораФайла» интуитивно понятный и, поэтому, отдельно описывать я их не буду (кроме тех, что уже описал).
Помимо метода «Выбрать», у всех перечисленных объектов существует метод «Показать», который позволяет передать обработку результатов выбора в какую-либо процедуру. Кроме этого, у объектов «ДиалогВыбораЦвета» и «ДиалогВыбораШрифта» метод «Показать» вызывает не модальную версию диалогового окна. Использование этого метода выглядит примерно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | &НаКлиенте Процедура ВыборФайлаПоказать(Команда) тДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); тДиалог.Фильтр = "MS Office|*.doc;*.docx;*.xls;*.xlsx|Все файлы (*.*)|*.*"; тДиалог.ИндексФильтра = 1; тДиалог.Показать(Новый ОписаниеОповещения("ВыборФайлаПоказатьОбработка", ЭтотОбъект)); КонецПроцедуры &НаКлиенте Процедура ВыборФайлаПоказатьОбработка(ВыбранныеФайлы, ДопПараметры) Экспорт Если ВыбранныеФайлы <> Неопределено Тогда Сообщить(ВыбранныеФайлы[0]); КонецЕсли; КонецПроцедуры |