Помогите пожалуйста. Мне нужно поместить полный путь к экселевскому файлу в константу. Тип строка. Создал форму констант.

Пробовал так

ПриНачалеВыбора

```1c
    &НаКлиенте
    Процедура ШаблонВыгрузкиВзаиморасчетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка=ложь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл";
    Диалог.ПолноеИмяФайла = ";
    Фильтр = ";
    Диалог.Фильтр = Фильтр;
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Каталог = "F:\";
    Если Диалог.Выбрать() Тогда
    Элемент=Строка(Диалог.ПолноеИмяФайла);
    КонецЕсли;
    КонецПроцедуры
```

выдает ошибку
{ОбщаяФорма.Шаблоны.Форма(22)}: Ошибка при вызове метода контекста (Выбрать)
 Если Диалог.Выбрать() Тогда
по причине:
Использование синхронных методов на клиенте запрещено!

Не соображу.
---
В Конфигураторе жмякаете на Выбрать( правой кнопкой мыши. Выбираете Рефакторинг / Нерекомендуемые синхронные вызовы / Преобразовать вызов. Настраиваете по вкусу с использованием встроенной справки. Профит.
---
Свойства конфигурации (в самом верху дерева, где название конфигурации пр. кл. мыши - свойства) - Режим синхронных вызовов. Установить: Использовать.

Это если обойти проблему. Если включать режим синхронности нельзя, то переписывать алгоритм на асинхронные методы. Примеров и на этом форму и в интернете много.
---
В Конфигураторе жмякаете на Выбрать( правой кнопкой мыши. Выбираете Рефакторинг / Нерекомендуемые синхронные вызовы / Преобразовать вызов. Настраиваете по вкусу с использованием встроенной справки. Профит.
---
Свойства конфигурации (в самом верху дерева, где название конфигурации пр. кл. мыши - свойства) - Режим синхронных вызовов. Установить: Использовать.

Это если обойти проблему. Если включать режим синхронности нельзя, то переписывать алгоритм на асинхронные методы. Примеров и на этом форму и в интернете много.
---
Первый совет вредный. Из-за одной формы (может, и внешней?) менять настройку синхронности для всей базы? А где оно ещё может вылезти, поди потом, найди?
---
Так, а кто предлагает менять? Автор задал вопрос почему ошибка, ему был дан ответ: ошибка вылетает т.к. в конфе не используются синхронные вызовы. Дальше уже дело автора включить их, или изменять алгоритм.
---
Перечитай свой первый абзац. А за ним чудесную формулировку "если включать режим синхронности нельзя", которая тоже подталкивает к неправильным выводам.
---
К каким неправильным выводам она должна подтолкнуть? Еще раз, есть два пути решения проблемы:

1. Включить в конфе использование синхронных вызовов.

2. Переписать алгоритм так, чтобы он был асинхронным.

Об этом честно и прямо сказано автору. Какое решение правильное? Так тут надо хотя-бы знать, что за конфигурацию автор редактирует. Если самописку на два справочника - реально проще режим синхронности включить. Если внешнюю обработку для БП, которая на поддержке - первый вариант сам собой отпадает.

Автор ведь не дурак, он свою ситуацию знает куда как лучше нас.
---
Считаешь свою формулировку в (2) адекватной - и ладно. Два человека не считает. Ну да не суть. Проехали.
---
Два человека - это как бы неоспоримый показатель? Впрочем, ладно, не вижу смысла разводить тут дискуссию на эту тему.
---
(15)
Какой интересный у вас бокс по переписке.
---
да. конфа небольшая. на 1 пользователя. вряд ли и за 10 лет разрастется сильно. можно включить, но мы не ищем легких путей))). и знания лишними не бывают.
---
Диалог.Показать(...)
---
К уже сказанному добавлю только, что запрет использования синхронных методов установлен в свойствах конфы как раз для того, чтобы вовремя бить по рукам в сабжевых ситуациях. Т.е. только что он выполнил свое прямое предназначение :)
---
теперь так.
что дальше сделать? что значит "Вызов преобразован не полностью";//Присвоение cсылочного параметра: Элемент

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

    &НаКлиенте
    Процедура ШаблонВыгрузкиВзаиморасчетовНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

    Диалог = ДополнительныеПараметры.Диалог;

    Если (ВыбранныеФайлы <> Неопределено) Тогда
    Элемент=Строка(Диалог.ПолноеИмяФайла);
    КонецЕсли;

    КонецПроцедуры
```
---
Зачем диалог в доп параметры запихивать???? в обработке оповещения - которое вызывается после закрытия диалога - уже есть всё , что нужно, а именно выбранное имя файла, либо неопределено если диалог закрыли без выбора.

ВыбранныеФайлы - работай с этой переменной
---
Да вроде на первый взгляд нормально преобразовал. Ну как нормально. Рабоче :)
Попробуй просто прибить вызов исключения.
(10) Это результат авторефакторинга
---
ясно, спасибо) я рефакторинг использовал только чтобы он нужные обработчики создал, а далее руками)
---
отрабатывает все, но в поле формы не попадает. нужно "элемент" на что-то изменить. или передавать на сервер

```1c
    &НаКлиенте
    Процедура ШаблонВыгрузкиВзаиморасчетовНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

    Диалог = ДополнительныеПараметры.Диалог;

    Если (ВыбранныеФайлы <> Неопределено) Тогда
    Элемент=Строка(Диалог.ПолноеИмяФайла);
    КонецЕсли;

    КонецПроцедуры
```
---
Хм... Первый раз на УФ?
Конечно "Элемент" надо изменить, если это у тебя непонятно что.
Например на "Объект.ИмяМоегоРеквизитаФормыОтображаемогоВПолеФормы"
---
объект не работает((. это форма констант
---
Тогда на "НаборКонстант.ИмяМоейКонстанты".
Если вы, конечно, не меняли имя основного реквизита формы. Он в списке реквизитов формы жирным светится :)
---
Если правильно понял, что вы хотите. Вам нужно файл на клиенте отправлять во временное хранилище, а на сервере его оттуда доставать. Задача какая вообще? Файл подгрузить в справочник? Или вам просто путь к файлу нужен?
---
это всё потом. пока мне нужно создать форму констант, где будут пути к шаблонам.

да. просто путь.
---
Смотрите какой момент. Есть клиент, есть сервер. Путь к файлу вы получаете на клиенте. т.е. на том компьютере, на котором пользователь работает в данный момент. Иными словами другой пользователь, который работает на своем компьютере, доступ к файлу не получит (он на другой машине). Алгоритм такой:

1. Переносите файл на сервер.

2. Прописываете путь к файлу на сервере.
---
это не я. это рефакторинг преобразовал
---
О! Взлетело)). Всем спасибо.

Еще вопрос в догонку. На будущее. как 1с реагирует на пробелы и русские символы в пути к файлу?
---
Особо не встречал проблем.
---
Как надо.