Получить полный путь к файлу. Помогите.

1. aleks-lit 28.03.17 12:05 Сейчас в теме
Помогите пожалуйста. Мне нужно поместить полный путь к экселевскому файлу в константу. Тип строка. Создал форму констант.

Пробовал так

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

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


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

Не соображу.
Найденные решения
3. japopov 68 28.03.17 12:11 Сейчас в теме
(1) В Конфигураторе жмякаете на Выбрать( правой кнопкой мыши. Выбираете Рефакторинг / Нерекомендуемые синхронные вызовы / Преобразовать вызов. Настраиваете по вкусу с использованием встроенной справки. Профит.
reap; aleks-lit; ЧерныйКот; herfis; +4 Ответить
2. Serega-artem 17 28.03.17 12:09 Сейчас в теме
Свойства конфигурации (в самом верху дерева, где название конфигурации пр. кл. мыши - свойства) - Режим синхронных вызовов. Установить: Использовать.

Это если обойти проблему. Если включать режим синхронности нельзя, то переписывать алгоритм на асинхронные методы. Примеров и на этом форму и в интернете много.
aleks-lit; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. japopov 68 28.03.17 12:11 Сейчас в теме
(1) В Конфигураторе жмякаете на Выбрать( правой кнопкой мыши. Выбираете Рефакторинг / Нерекомендуемые синхронные вызовы / Преобразовать вызов. Настраиваете по вкусу с использованием встроенной справки. Профит.
reap; aleks-lit; ЧерныйКот; herfis; +4 Ответить
2. Serega-artem 17 28.03.17 12:09 Сейчас в теме
Свойства конфигурации (в самом верху дерева, где название конфигурации пр. кл. мыши - свойства) - Режим синхронных вызовов. Установить: Использовать.

Это если обойти проблему. Если включать режим синхронности нельзя, то переписывать алгоритм на асинхронные методы. Примеров и на этом форму и в интернете много.
aleks-lit; +1 Ответить
5. japopov 68 28.03.17 12:13 Сейчас в теме
(2) Первый совет вредный. Из-за одной формы (может, и внешней?) менять настройку синхронности для всей базы? А где оно ещё может вылезти, поди потом, найди?
6. Serega-artem 17 28.03.17 12:16 Сейчас в теме
(5) Так, а кто предлагает менять? Автор задал вопрос почему ошибка, ему был дан ответ: ошибка вылетает т.к. в конфе не используются синхронные вызовы. Дальше уже дело автора включить их, или изменять алгоритм.
8. herfis 515 28.03.17 12:23 Сейчас в теме
(6) Перечитай свой первый абзац. А за ним чудесную формулировку "если включать режим синхронности нельзя", которая тоже подталкивает к неправильным выводам.
13. Serega-artem 17 28.03.17 12:31 Сейчас в теме
(8) К каким неправильным выводам она должна подтолкнуть? Еще раз, есть два пути решения проблемы:

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

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

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

Автор ведь не дурак, он свою ситуацию знает куда как лучше нас.
aleks-lit; +1 Ответить
15. herfis 515 28.03.17 12:34 Сейчас в теме
(13) Считаешь свою формулировку в (2) адекватной - и ладно. Два человека не считает. Ну да не суть. Проехали.
17. Serega-artem 17 28.03.17 12:39 Сейчас в теме
(15) Два человека - это как бы неоспоримый показатель? Впрочем, ладно, не вижу смысла разводить тут дискуссию на эту тему.
18. корум 288 28.03.17 12:42 Сейчас в теме
(17)
(15)
Какой интересный у вас бокс по переписке.
16. aleks-lit 28.03.17 12:36 Сейчас в теме
(13) да. конфа небольшая. на 1 пользователя. вряд ли и за 10 лет разрастется сильно. можно включить, но мы не ищем легких путей))). и знания лишними не бывают.
корум; Serega-artem; ЧерныйКот; +3 Ответить
4. ЧерныйКот 28.03.17 12:11 Сейчас в теме
(0) Диалог.Показать(...)
aleks-lit; herfis; +2 Ответить
7. herfis 515 28.03.17 12:16 Сейчас в теме
К уже сказанному добавлю только, что запрет использования синхронных методов установлен в свойствах конфы как раз для того, чтобы вовремя бить по рукам в сабжевых ситуациях. Т.е. только что он выполнил свое прямое предназначение :)
aleks-lit; ipoloskov; +2 Ответить
9. aleks-lit 28.03.17 12:25 Сейчас в теме
теперь так.
что дальше сделать? что значит "Вызов преобразован не полностью";//Присвоение cсылочного параметра: Элемент

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

&НаКлиенте
Процедура ШаблонВыгрузкиВзаиморасчетовНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Диалог = ДополнительныеПараметры.Диалог;
	
	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		Элемент=Строка(Диалог.ПолноеИмяФайла);
	КонецЕсли;
	
КонецПроцедуры
 
Показать
10. ЧерныйКот 28.03.17 12:28 Сейчас в теме
(9) Зачем диалог в доп параметры запихивать???? в обработке оповещения - которое вызывается после закрытия диалога - уже есть всё , что нужно, а именно выбранное имя файла, либо неопределено если диалог закрыли без выбора.

ВыбранныеФайлы - работай с этой переменной
11. herfis 515 28.03.17 12:29 Сейчас в теме
Да вроде на первый взгляд нормально преобразовал. Ну как нормально. Рабоче :)
Попробуй просто прибить вызов исключения.
(10) Это результат авторефакторинга
aleks-lit; +1 Ответить
14. ЧерныйКот 28.03.17 12:32 Сейчас в теме
(11) ясно, спасибо) я рефакторинг использовал только чтобы он нужные обработчики создал, а далее руками)
19. aleks-lit 28.03.17 12:43 Сейчас в теме
(11)отрабатывает все, но в поле формы не попадает. нужно "элемент" на что-то изменить. или передавать на сервер
&НаКлиенте
Процедура ШаблонВыгрузкиВзаиморасчетовНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Диалог = ДополнительныеПараметры.Диалог;
	
	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		Элемент=Строка(Диалог.ПолноеИмяФайла);
	КонецЕсли;
	
КонецПроцедуры
Показать
20. herfis 515 28.03.17 12:50 Сейчас в теме
(19) Хм... Первый раз на УФ?
Конечно "Элемент" надо изменить, если это у тебя непонятно что.
Например на "Объект.ИмяМоегоРеквизитаФормыОтображаемогоВПолеФормы"
21. aleks-lit 28.03.17 12:51 Сейчас в теме
(20) объект не работает((. это форма констант
24. herfis 515 28.03.17 12:53 Сейчас в теме
(21) Тогда на "НаборКонстант.ИмяМоейКонстанты".
Если вы, конечно, не меняли имя основного реквизита формы. Он в списке реквизитов формы жирным светится :)
aleks-lit; +1 Ответить
22. Serega-artem 17 28.03.17 12:52 Сейчас в теме
(19) Если правильно понял, что вы хотите. Вам нужно файл на клиенте отправлять во временное хранилище, а на сервере его оттуда доставать. Задача какая вообще? Файл подгрузить в справочник? Или вам просто путь к файлу нужен?
aleks-lit; +1 Ответить
23. aleks-lit 28.03.17 12:53 Сейчас в теме
(22)это всё потом. пока мне нужно создать форму констант, где будут пути к шаблонам.

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

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

2. Прописываете путь к файлу на сервере.
12. aleks-lit 28.03.17 12:30 Сейчас в теме
(10) это не я. это рефакторинг преобразовал
26. aleks-lit 28.03.17 12:57 Сейчас в теме
О! Взлетело)). Всем спасибо.

Еще вопрос в догонку. На будущее. как 1с реагирует на пробелы и русские символы в пути к файлу?
27. Serega-artem 17 28.03.17 13:00 Сейчас в теме
(26) Особо не встречал проблем.
28. herfis 515 28.03.17 13:01 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот