Для вызова стандартного диалога выбора файла или папки Windows в 1С существует специальный объект ДиалогВыбораФайла. У него существует три режима работы:
- выбор каталога;
- открытие файла;
- сохранение файла.
Рассмотрим эти режимы.
Во всех режимах для того, чтобы определить, выбрал ли пользователь файл или каталог (не нажал ли он кнопку Отмена) используется функция Выбрать(). Если была нажата кнопка Отмена, эта функция возвращает Ложь. Эта же функция вызывает появление окна выбора у пользователя.
Диалог выбора каталога в 1С
Следует помнить, что путь к каталогу записывается без последнего слэша. Например, так: c:Папка1Папка2
Диалог открытия файла в 1С
В режиме открытия появляются дополнительные параметры работы диалога:
-
Фильтр состоит из двух частей, разделенных символом «|»: строки представления, которая отображается в окне выбора файла, и строки маски. В маске могу использоваться стандартные символы: ? — любой символ, * — любые символы. Можно последовательно перечислить несколько фильтров, разделенных символом «|». Например:
Итак, код вызова диалога открытия одного файла будет выглядеть так:
Код вызова диалога открытия нескольких файлов будет выглядеть так:
Диалог сохранения файла в 1С
Диалог сохранения отличается от диалога открытия тем, что если выбранный файл существует, при сохранении будет задан вопрос, хочет ли пользователь его перезаписать. Также при сохранении не работает возможность множественного выбора файлов. В остальном все работает точно так же:
Достаточно часто нам требуется получить от пользователя какую-либо информацию — имя файла или каталога, цвет или шрифт. Для всего этого в 1С существуют диалоги. Код, который требуется для вызова диалога, довольно стандартный и мало чем отличается из раза в раз. Собственно именно о том, как вызвать различные диалоги в 1С 8.2 и 8.3 и пойдет речь.
Отмечу, что приведенные ниже примеры подходят для любых конфигураций 1С 8.2, а также для конфигураций 1С 8.3 у которых свойство конфигурации «Режим использования модальности» установлено как «Использовать» либо «Использовать с предупреждениями». Если же Вы имеете дело с конфигурацией 1С 8.3 не использующей модальность, то рекомендую прочесть статью о модальности в 1С.
Выбор каталога в 1С
Выбор файла в 1С
Обращаю Ваше внимание, что несколько масок расширений в одном фильтре должны разделяться знаком — точка с запятой (в синтаксис-помощнике об этом по-моему не написано).
Фирма 1С решила отказаться от модальных форм в интерфейсах web и Такси, это значит, что попытка просто сохранить файл через диалог потребует больше усилий чем раньше. В примере ниже надо НА КЛИЕНТЕ просто создать текстовый файл и сохранить его куда укажет пользователь:
&НаКлиенте
Процедура НажатиеКнопкиСохранитьФайл ()
// создаем на клиенте текстовый файл
ИмяВременногоФайла = ПолучитьИмяВременногоФайла ( «txt» ) ;
// создаем документ который надо записать
ТД = новый ТекстовыйДокумент ;
ТД . ДобавитьСтроку ( «Некоторый текст» );
ТД . Записать ( ИмяВременногоФайла );
// помещаем файл в хранилище
Адрес = ПоместитьВоВременноеХранилище (новый ДвоичныеДанные ( ИмяВременногоФайла ));
// описание события после выбора файла пользователем
ОписаниеОповещения = Новый ОписаниеОповещения ( «ОбработкаСохраненияФайлов» , ЭтаФорма );
// место хранения файла в 1С
Файл = Новый ОписаниеПередаваемогоФайла (, Адрес );
// создаем перечень файлов
ПолучаемыеФайлы = Новый Массив ;
ПолучаемыеФайлы . Добавить ( Файл );
// создаем диалог сохранения файла
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла ( РежимДиалогаВыбораФайла . Сохранение );
ДиалогОткрытияФайла . МножественныйВыбор = Ложь;
// выводим диалог на экран, после выбора файла
// вызовется процедура ОбработкаСохраненияФайлов
НачатьПолучениеФайлов ( ОписаниеОповещения , ПолучаемыеФайлы , ДиалогОткрытияФайла , Истина);
&НаКлиенте
Процедура ОбработкаСохраненияФайлов ( ПомещенныеФайлы , ДополнительныеПараметры ) Экспорт
// какие-то действия
// …
КонецПроцедуры