Не открывается Диалог выбора файла из программно созданного элемента

1. NadyaB 16.11.24 10:39 Сейчас в теме
Добрый день! В УНФ в расширении след. код в форме документа:


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	ДобавляемыеРеквизиты = Новый Массив;
	НовыйЭлементРеквизитСтрокаВыбораФайла = Новый РеквизитФормы("СтрокаВыбораФайла",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(500)));
	НовыйЭлементРеквизитАдресВХ = Новый РеквизитФормы("РеквизитАдресВХ",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(500)));
	ДобавляемыеРеквизиты.Добавить(НовыйЭлементРеквизитСтрокаВыбораФайла);
	ДобавляемыеРеквизиты.Добавить(НовыйЭлементРеквизитАдресВХ);
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	
	НовыйЭлементПолеСтрокаВыбораФайла = ЭтаФорма.Элементы.Добавить("СтрокаВыбораФайла", Тип("ПолеФормы"),ЭтаФорма.Элементы.ПраваяКолонка);
	НовыйЭлементПолеСтрокаВыбораФайла.Вид = ВидПоляФормы.ПолеВвода; 
	НовыйЭлементПолеСтрокаВыбораФайла.Заголовок = "Файл";
	НовыйЭлементПолеСтрокаВыбораФайла.КнопкаВыбора = Истина;
	НовыйЭлементПолеСтрокаВыбораФайла.ПутьКДанным = "СтрокаВыбораФайла";
	
	
	НоваяКоманда = ЭтаФорма.Команды.Добавить("Расш1_ЗагрузитьФайл");
	НоваяКоманда.Действие  = "Расш1_ЗагрузитьФайл";
	НоваяКоманда.Заголовок = "Загрузить файл";

	НовыйЭлементКомандаЗагрузитьФайл = ЭтаФорма.Элементы.Добавить("ЗагрузитьФайл", Тип("КнопкаФормы"),ЭтаФорма.Элементы.ПраваяКолонка);
    НовыйЭлементКомандаЗагрузитьФайл.ИмяКоманды = "Расш1_ЗагрузитьФайл";  
	
КонецПроцедуры

&НаКлиенте
Процедура Расш1_СтрокаВыбораФайлаНачалоВыбора(ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;


Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл";
Если ДиалогОткрытияФайла.Выбрать() Тогда
        СтрокаВыбораФайла = ДиалогОткрытияФайла.ПолноеИмяФайла;
	Иначе
    Предупреждение(НСтр("ru = 'Файл не выбран!'"));
КонецЕсли;	
КонецПроцедуры


&НаСервере
Процедура Расш1_ЗагрузитьФайлНаСервере()
Файл = ПолучитьИзВременногоХранилища(ЭтаФорма.Элементы.АдресВХ);
ИмяВФ = ПолучитьИмяВременногоФайла("xlsx");
Файл.Записать();

Элементы.Продукция.Очистить();
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяВФ,СпособЧтенияЗначенийТабличногоДокумента.Значение);
высстрок = табдок.ВысотаСтраницы;

Для Стр = 2 По высстрок Цикл
СтрТЗ = Элементы.Продукция.ДобавитьСтроку();
СтрТЗ.Номенклатура = ТабДок.Область(стр,1);
СтрТЗ.Ед = ТабДок.Область(стр,2);       
СтрТЗ.Количество = ТабДок.Область(стр,3);

КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ЗагрузитьФайл(Команда)
Файл =	Новый ДвоичныеДанные(ЭтаФорма.Элементы.СтрокаВыбораФайла);
ЭтаФорма.АдресВХ = ПоместитьВоВременноеХранилище(Файл,ЭтаФорма.УникальныйИдентификатор);	
	
	
Расш1_ЗагрузитьФайлНаСервере();	
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
8. starjevschik 16.11.24 20:32 Сейчас в теме
(6) очевидно нет. Надо, чтобы где-то в описании элемента формы (строки этой) было написано, что эту процедуру надо вызвать по кнопке выбора. Это в 7.7 достаточно было наличия в модуле процедуры с нужным именем, но где те времена...
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1863362 16.11.24 11:54 Сейчас в теме
(1)
след. код
Накопипастила из интернета, не понимая что оно делает, и оно не работает? Есть решение! Сходи на курсы: https://www.1c-uc3.ru/our-courses/all-courses/dlya-programmistov/osnovnye-kursy/up82/
7. NadyaB 16.11.24 19:49 Сейчас в теме
(2)
Спасибо за ссылку, запишусь на курсы. Но данное задание мне нужно выполнить в ближайшее время.
3. starjevschik 16.11.24 14:04 Сейчас в теме
Я бы предположил, что этой строке еще надо как-то прилепить обработку выбора. В приведенном коде этого не видно. Кнопка выбора есть, а обработка этой кнопки где?
4. user2107184 16.11.24 14:44 Сейчас в теме
(3) Да там до обработки выбора еще далеко, ибо отсутствует привязка события для поля выбора файла
5. user1863362 16.11.24 15:24 Сейчас в теме
(4) И это мы еще до значений свойства конфигурации УНФ, отвечающим за модальность, не дошли.
6. NadyaB 16.11.24 19:47 Сейчас в теме
(4)
(3)
Спасибо за ответ,
Процедура
Расш1_СтрокаВыбораФайлаНачалоВыбора(ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
не является привязкой к кнопке выбора?
8. starjevschik 16.11.24 20:32 Сейчас в теме
(6) очевидно нет. Надо, чтобы где-то в описании элемента формы (строки этой) было написано, что эту процедуру надо вызвать по кнопке выбора. Это в 7.7 достаточно было наличия в модуле процедуры с нужным именем, но где те времена...
Оставьте свое сообщение

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