Тип не определен диалог выбора файла
p.s. Просьба задавать вопросы только по программированию. На вопросы по типовым конфигурациям обычно не отвечаю по двум причинам
1. В последнее время редко с ними работаю.
2. Чтобы ответить на вопрос требуется: установить соответствующую базу нужного релиза, смоделировать ситуацию, и только после этого возможно залезть в конфигуратор и разобраться что не так (к сожалению, у меня нет столько времени).
Диалог выбора файла
cobra77777 » 06 июн 2014, 05:59
Что неправильно делаю ? Спасибо.
cobra77777 » 06 июн 2014, 06:20
cobra77777 » 06 июн 2014, 07:26
Возник вопрос. Есть код. Пытаюсь вывести в Список Значений, но он не показывает мне прочитанные строки в СЗ. Что не так делаю ?
&НаСервере
Процедура ЗагрузитьXML(Файлик)
ПутьКФайлу = Файлик [0];
//XML
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
СЗ = Новый СписокЗначений;
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ЧтениеXML.ПрочитатьАтрибут();
Атрибут = ЧтениеXML.Значение;
КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если Атрибут = "СтраховойНомер" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
КонецЕсли;
Если Атрибут = "Фамилия" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
Если Атрибут = "Имя" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
Если Атрибут = "Отчество" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
&НаКлиенте
Процедура ПрочитатьФайлXML(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
Фильтр = "Файл(*.xml)|*.xml";
ДиалогОткрытияФайла.Фильтр = Фильтр;
Если ДиалогОткрытияФайла.Выбрать() Тогда
Файлик = ДиалогОткрытияФайла.ВыбранныеФайлы;
ЗагрузитьXML(Файлик);
admin » 09 июн 2014, 16:30
Что такое СЗ? Реквизит формы? И как смотрите, что список пустой?
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
Атрибут = ЧтениеXML.Имя;
Если Атрибут = "СтраховойНомер" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
Если Атрибут = "Фамилия" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
Если Атрибут = "Имя" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
Если Атрибут = "Отчество" Тогда
СЗ.Добавить(ЧтениеXML.Значение);
КонецЕсли;
cobra77777 » 12 июн 2014, 20:11
Сергей а ещё вопрос никак не могу записать в Таблицу Значений (ТЗ) СтраховойНомер :
&НаКлиенте
Процедура ТаблицаЗначений(Команда)
ТЗ ()
КонецПроцедуры
Чтение = Новый ЧтениеXML;
ТЗНаФорме = Новый ТаблицаЗначений;
Чтение.ОткрытьФайл("c:\1.xml");
Спр="";
// чтение осуществляется по одному тегу
Пока Чтение.Прочитать() Цикл
// анализируем тип элемента и его имя
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяУзла = Чтение.Имя;
КонецЕсли;
Если ИмяУзла = "СтраховойНомер" и Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
Для Каждого СтрокаТЗ из ТЗНаФорме Цикл
НоваяСтрока.СтраховойНомер = СтраховойНомер; ----------------------------------- Вот здесь загвоздка
admin » 14 июн 2014, 20:08
Ваш программный код показывает, что вы вообще не понимаете что делаете. Так что здесь загвоздка не только в этом месте. Код полная чушь.cobra77777 » 15 июн 2014, 06:06
а можете показать в качестве примера как правильно прочитать 1-ую ветку Страх .номер в таблицу Значений?admin » 16 июн 2014, 08:25
Если задачу уточните, то покажу. Нужна структура вашего xml файла, а также что хотите сделать. Я так понял, что хотите в таблицу на экран загрузить стах.номера.cobra77777 » 18 июн 2014, 09:43
admin писал(а): Если задачу уточните, то покажу. Нужна структура вашего xml файла, а также что хотите сделать. Я так понял, что хотите в таблицу на экран загрузить стах.номера.Ну для начала да. Я подготовлю пример затем выложу. Спасибо.
cobra77777 » 18 июн 2014, 11:27
1. Необх-мо прочитать xml файлы;
2. Сформировать Xls файл след.структуры по колонкам (1 файл xls):
1.СтраховойНомер, фамилия, имя, отчество
2. СтраховойНомер, фамилия, имя, отчество
и т.д.
Здравствуйте, переделываю конфигурацию на упф, столкнулся с проблемой.
Был следующий рабочий код. Сейчас его нужно реализовать на упф, как это сделать? Знаю, что ДиалогВыбораФайла должны вызыватся на клиенте, подскажите как реализовать эту функцию. Код из общего модуля.
__________________Помощь в написании контрольных, курсовых и дипломных работ здесь
Перевод Обычного приложения Толстого Клиента в Управляемое
Подскажите пожалуйста возможно ли это? Пытались перевести- ни одна форма не открывается.
Из обычного приложеиня перенести код в управляемое приложение
Добрый день. Возникла такая проблемка. Есть обычное приложение и в нем код в общем модуле.
Ошибка при создании scripting.filesystemobject: Тип не определен (СОМОбъект). Учебная версия платформы.
Почему когда хочу создать обект scripting.filesystemobject выдает ошибку: Тип не определен.
GreenkA, эта функция лежит в общем модуле, я ее вызываю в модуле справочника.
Решение
вы ее видимо вызываете в модуле формы элемента справочника по команде ПТС1().Тогда в модуле формы элемента справочника меняем указанные выше процедуры на:
Вместо одного общего модуля ОбщегоНазначения - создаем два других(или доп. два других):
- ОбщегоНазначенияКлиент(в свойствах галочка Клиент)
- ОбщегоНазначенияСервер(галочки Сервер, ВызовСервера)
В общем модуле ОбщегоНазначенияКлиент:
GreenkA, спасибо гренка, получилось, в теории знал, как сделать но на практике реализовать не смог. Скажи, как реализовать механизм, чтобы выбранный файл сохранялся. В данный момент повторно открывается окно диалога.
Добавлено через 7 минут
GreenkA,
Но почемуто не срабатывает
Добавлено через 44 минуты
GreenkA, в регистр вроди бы записывает, файлик в нужной папке создает. Но при повторном открытии не срабатывает код, который поверяет есть ли в регистре эта ссылка. При повторном нажатии происходит не открытие созданного файла, а повторный вызов диалогового окна.
// Свойство КнопкаВыбора элемента формы установим в значение Да
// и будем обрабатывать событие НачалоВыбора этого элемента
СтандартнаяОбработка = Ложь; // Отказываемся от стандартной обработки процедуры
// Создаем диалог выбора файла и указываем для чего он будет использоваться
Диалог = Новый ДиалогВыбораФайла ( РежимДиалогаВыбораФайла . Открытие ); // или ВыборКаталога или Сохранение
Диалог . Фильтр = "Документ PDF (*.pdf)|*.pdf" ; // Строка с файловыми фильтрами
Диалог . Заголовок = "Выберите документ PDF" ; // Текст заголовка окна выбора
// Создаем объект ОписаниеОповещения, который будет передан в метод Показать
ОповещениеЗавершения = Новый ОписаниеОповещения ( "ПриВыбореФайла" , ЭтотОбъект );
// Также можно задать и третий параметр - Диалог. Тогда в процедуре ПриВыбореФайла из параметра ДополнительныеПараметры
// можно получить каталог (в котором хранится выбранный файл), и фильтр (которому соответствует файл)
// Пример: ОповещениеЗавершения = Новый ОписаниеОповещения("ПриВыбореФайла", ЭтотОбъект, Диалог);
Диалог . Показать ( ОповещениеЗавершения ); // Открываем окно выбора файла
// Эта процедура будет вызвана после закрытия окна выбора файла:
&НаКлиенте
Процедура ПриВыбореФайла ( ВыбФайлы , ДополнительныеПараметры ) Экспорт
Если ВыбФайлы <> Неопределено Тогда
ПутьКФайлу = ВыбФайлы [ 0 ];
КонецЕсли;
&НаКлиенте
Функция ПриВыбореФайла ()
Режим = РежимДиалогаВыбораФайла . Открытие ; //(ВыборКаталога, Открытие, Сохранение)
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла ( Режим );
ДиалогОткрытияФайла . ПолноеИмяФайла = "" ;
Текст = "ru = ""Текст""; en = ""Text""" ;
//Текст = "ru = ""Таблица""; en = ""Excel""";
//Текст = "ru = ""Документ PDF""; en = ""Adobe Acrobat PDF""";
Фильтр = НСтр ( Текст )+ "(*.txt)|*.txt" ; // Строка с файловыми фильтрами
//Фильтр = НСтр(Текст)+"(*.xlsx)|*.xlsx| (*.xls)|*.xls (*.xlsb)|*.xlsb|";
//Фильтр = НСтр(Текст)+"(*.pdf)|*.pdf";
ДиалогОткрытияФайла . Фильтр = Фильтр ;
ДиалогОткрытияФайла . МножественныйВыбор = Истина; // Ложь - Если нужен один фай
ДиалогОткрытияФайла . Заголовок = "Выберите файлы" ; // "Выберите файл"
Если ДиалогОткрытияФайла . Выбрать () Тогда
Текст = "ru = ""; Размер = ""; en = ""; Size = """ ;
// МножественныйВыбор = Истина:
МассивФайлов = ДиалогОткрытияФайла . ВыбранныеФайлы ;
Для Каждого ИмяФайла Из МассивФайлов Цикл
ВыбФайл = Новый Файл ( ИмяФайла );
Сообщить ( ИмяФайла + НСтр ( Текст )+ ВыбФайл . Размер ());
КонецЦикла;
// МножественныйВыбор = Ложь:
// ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
// Сообщить(ПутьКФайлу+ДиалогОткрытияФайла.Размер());
Иначе
Текст = "ru = ""Файл(ы) не выбран!""; en = ""File(s) not selected!""" ;
Предупреждение ( НСтр ( Текст ));
КонецЕсли;
Опишем обработчик события начала выбора самостоятельно, пример кода приведен ниже: В процедуре которая будет вызываться после закрытия диалога выбора, мы проверяем параметр МассивФайлов на Неопределено, т.к. пользователь может отказаться от выбора и мы должны это учитывать.
Если пользователь все же выбрал файл, то переменная МассивФайлов будет содержать массив строк, в которых будут перечислен полный путь к выбранным файлам:
Рассмотрим как асинхронно (а в управляемых формах необходимо только так) программно обработать выбор пользователем пути к файлу.
Постановка задачи
Предположим, что на форме создан реквизит ПутьКФайлу. Этот реквизит имеет тип Строка и выведен на форму. Пользователь должен указывать в этом поле путь к файлу Excel.
Решение
Для удобства свойство КнопкаВыбора элемента формы установим в значение Да и будем обрабатывать событие НачалоВыбора этого элемента.
В процедуре начала выбора элемента ПутьКФайлу необходимо написать код:
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )
// Отказываемся от стандартной обработки процедуры
СтандартнаяОбработка = Ложь;
Диалог . Показать ( ОповещениеЗавершения );
содержит описание процедуры, которая будет вызвана после закрытия диалога выбора. В этой процедуре должно быть два параметра:
- ВыбранныеФайлы — массив выбранных имен файлов. Если пользователь отказался от выбора файла, то в параметре будет содержаться Неопределено;
- ДополнительныеПараметры — произвольное значение, которое указано при создании объекта ОписаниеОповещения в третьем параметре (в нашем примере не задано).
Пример процедуры, которая будет вызвана после закрытия окна выбора файла:
&НаКлиенте
Процедура ВыборФайлаЗавершение ( ВыбранныеФайлы , ДополнительныеПараметры ) Экспорт
Если ВыбранныеФайлы <> Неопределено Тогда
ПутьКФайлу = ВыбранныеФайлы [ 0 ];
Внимание!
Процедура, указанная в объекте ОписаниеОповещения должна иметь ключевое слово Экспорт.
Приведенный пример можно немного усовершенствовать: передать в третий параметр конструктора ОписаниеОповещения переменную Диалог.
ОповещениеЗавершения = Новый ОписаниеОповещения ( «ВыборФайлаЗавершение» , ЭтотОбъект , Диалог );
Тогда в процедуре ВыборФайлаЗавершение будет доступно немного больше информации: из параметра ДополнительныеПараметры можно будет узнать каталог, в котором хранится выбранный файл, и фильтр, которому соответствует файл.
В конструкторе объекта ДиалогВыбораФайла в параметре указывается для чего будет открыт диалог. Возможные значения системного перечисления РежимДиалогаВыбораФайла:
Приведу еще несколько свойств объекта ДиалогВыбораФайла:
- Каталог — текущий каталог;
- ПолноеИмяФайла — начальное полное имя файла. После выбора файла содержит полное имя выбранного файла (кроме множественного выбора и выбора каталога);
- МножественныйВыбор — флаг возможности выбора нескольких файлов;
- ПредварительныйПросмотр — флаг необходимости показа окна предварительного просмотра файлов;
- ПроверятьСуществованиеФайла — флаг необходимости проверки существования выбираемого файла.
Решение средствами БСП
В конфигурациях со втроенной Библиотекой стандартных подсистем можно использовать процедуру
ОбработчикВыбораФайла ( Объект , Знач ИмяСвойства , СтандартнаяОбработка = Ложь, Знач ПараметрыДиалога = Неопределено, ОповещениеЗавершения = Неопределено ) Экспорт
общего модуля ОбменДаннымиКлиент. При помощи этого метода приведенную выше задачу можно решить так:
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )
ОбменДаннымиКлиент . ОбработчикВыбораФайла ( ЭтотОбъект , «ПутьКФайлу» , СтандартнаяОбработка , НастройкиДиалога );
Остались вопросы?
Спросите в комментариях к статье.
Платформа:
Конфигурация:
Кстати, и Предупреждение на сервере тоже нет.
А с какой целью вообще была создана серверная процедура?
Constantus --> ConstantusЭто не типовой справочник, который сохраняет ссылки на сканированный документ. Вот его код:
Что могла произойти? До сегодня всё работало и ничего не выскакивало изначально
logist @ Сегодня, 15:19 ,
Ничего не менялось. Утром 2-а обмена сделал, всё прошло на ура. И где всё это проверить, а главное с чем сравнить?
logist --> logistlogist @ Сегодня, 15:28 ,
Сравнил с последней моей конфигурацией "Сравнить и объединить"
Окно показало, что никаких изменений нет. Т.е. конфиг не менялся.
Petre --> PetreЧитайте также: