#0
by vadymdymdym
Доброго времени суток, форумчане. Столкнулся с интересной проблемой. Имеется табличный документ и кнопка "Сохранить как". Задача: по нажатию кнопки вывести диалоговое окно сохранения файла со всеми возможными форматами, в какие только можно сохранить табличный документ и... собственно, сохранить. Казалось бы - задача элементарная. Загвоздка в том, что хочется сделать красиво. Чтобы это к тому же еще и в веб-клиенте работало. А там, как вы все прекрасно понимаете не работают синхронные методы (про подключение расширения работы с файлами молчу, т.к. это не проблема. Подключил). Т.е. метод Выбрать ДиалогаВыбораФайла не работает. Вместо него работает метод Показать. Ну и какая разница - спросите Вы? А разница вот в чем. Дело в том, что сохраняемые форматы табличного документа очень обширны. Так например, сохранить в формате html можно аж тремя способами (HTML3, 4 и 5), а расширение у всех одно. Т.е. когда я на выходе функции получу МассивИменФайлов (а я получу только его), то получив первый элемент массива (мой сохраняемый файл) я буду иметь ТОЛЬКО ЛИШЬ РАСШИРЕНИЕ файла (допустим, тот же htm), но я никак не смогу узнать какой же тип файла выбрал пользователь (HTML3, 4 или 5). Когда я использовал метод Выбрать я просто на выходе проверял индекс фильтра и по нем определял тип. Но сейчас на выходе я имею только лишь имена сохраняемых файлов. Вопрос - как решить эту головоломку. Я нашел частично решение. В дополнительные параметры обработки оповещения я передаю САМ ДИАЛОГВЫБОРАФАЙЛА. В обработке оповещения считываю индекс фильтра и вроде как все ОК. Так вот - ни хрена не работает это в веб-клиенте. ДиалогВыбораФайла считывается в обработке оповещения, но индекс фильтра ВСЕГДА РАВЕН НУЛЮ, ХОТЬ ТЫ ТРЕСНИ. Кто-нибудь сталкивался? Если нет - придется поступить как в БСП - самому рисовать форму сохранения файла
#1
by Сияющий в темноте
в веб клиенте код 1с транслируется в джаваскипт,и некоторые вещи могут теряться,т.к.реально показывается не диалог выбора файла,а его некоторое подобие,написанное в отдельной форме,и никто не заботился,чтобы передавать обратно параметры,используемые при вызове диалога
#2
by Cyberhawk
"В дополнительные параметры обработки оповещения я передаю САМ ДИАЛОГВЫБОРАФАЙЛА. В обработке оповещения считываю индекс фильтра" // Ну так в ДП передавай не ДВФ, а то, что ты из него потом планируешь использовать
#3
by vadymdymdym
Да понятно, что транслируется, однако, диалог выбора файла - это все-таки окно операционной системы, которое можно вызвать практически из любого языка программирования. Что собственно и делает метод Выбрать или Показать. А асинхронность метода заключается в том, что срабатывает некий триггер по окончании, куда можно передать любой параметр. Этот параметр даже никуда не транслируется, не переходит на сервер, а остается в памяти в виде некой объектной переменной, которая потом может быть считана в вышеуказанном триггере (ну как там в переводе на JavaScript будет не знаю. Я не спец. в веб-мастерстве). Может это глюк веб-клиента, или глюк браузера (испробовано в Google Chrome)
#4
by vadymdymdym
Я планирую использовать индекс фильтра. Вы предлагаете мне передать индекс фильтра из диалога выбора файла, который еще НЕ ПОКАЗАН ПОЛЬЗОВАТЕЛЮ? И что я получу на выходе? Тот же индекс фильтра, что и передал))
#7
by Сияющий в темноте
в веб клиенте диалог выбора файла реализован по-другому,и никто не обещал,что в асинхронном методе все будет сохраняться попробуй поменять индекс до открытия диалога очень похоже,что структура просто копируется и используется,а назад не возвращается
#8
by Сияющий в темноте
если взять windows структуру openfilename,то она кардинально отличается от того,что предлагает 1с,поэтому,обратно,в структуру 1с никто и ничего не транслирует а вызов функции выбора файла возвращается после того,как диалог закрыт,правда,там есть возможность получения данных через обратный вызов,но это уже сложнее,чем в 1с
#11
by vadymdymdym
Менял. На выходе получаю тот же индекс, что был и до открытия, как я предполагал. Похоже, что Вы правы. ДиалогВыбораФайла копируется, используется а назад не возвращается. Я получаю тот же ДВФ, что был и до открытия
#12
by vadymdymdym
Да это понятное дело, 1С сама использует openfilename, а нам сует несколько другой объект или тот же, но обернутый в свою одежку, так сказать. Но то, что это окно операционной системы а не 1С-ное не оставляет сомнений никаких))
#13
by Cyberhawk
Чтоб ты выложил обработку, а лучше ссылку на веб-базу, где будет видно, чего ты там хочешь
#15
by vadymdymdym
Хорошая идея. Однако, это первое, что мне пришло в голову и что, собственно говоря, я сделал)). 1С-ники просто обошли эту проблему тем, что они сами нарисовали диалоговую форму сохранения файла, где они предлагают разные расширения, которые даже подсвечены пиктограмками, а вместо выбора файла предлагают выбор каталога (там-то проблем с расширением нет). Эта сторона фокуса мне понятна. Если совсем приспичит - конечно я так и сделаю. Но дело в том, что во-первых, я уже настроился, нарисовал код, который мне предлагает диалог выбора файла, во-вторых, форму ради этого рисовать лень (признаюсь честно). Пока что я обошел проблему так: я предлагаю РАЗЛИЧНЫЕ варианты расширения, а когда пользователь выбирает спорное расширение (ну тот же самый htm допустим), я высвечиваю выбор из списка вариантов на это расширение (HTML3, 4 или 5). Не очень хорошее решение, и если закидаете камнями - пойму))
#16
by vadymdymdym
Я вроде бы описал мою проблему достаточно подробно. Описание не нуждается в коде)). Ну хорошо, я сейчас попробую воссоздать вам ситуацию кодом: Надеюсь, достаточно понятно теперь?))
#17
by patya
> ДВФ.ИндексФильтра="HTML3|*.htm|HTML4|*.htm|HTML5|*,htm"; ИндексФильтра - число. Неудивительно, что у тебя не работает.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Право всем пользователям программно удалить любой документ в УТ 11.3
- Суммирование с условием в отчете на СКД
- Библиотека интеграции ЕГАИС
- Установка параметра отбора при открытии отчета
- ККМ Атол. Служба EoU.
- Драйвер АТОЛ 9.х без цифровой подписи.
- v7: Разные наименования одной номенклатуры для разных документов
- ЗУП 2.5 Функция получения кадровых данных
- Помощь в переходе с 1С 7.7 на 1С8
- Не попадает сотрудник в начисление зп
- Перенос ЗиК 77 - ЗУП 3.1
- Постоянная неисправимая ошибка на сервере 1С
- СКД. Поля-периоды. Группировка одновременно по периоду и измерению.
- Не получается скомпилировать мобильное приложение для Андроид на 26 и 27 версии апи 8.3.11
- УТ 11 Закрытие месяца
- Зависает запрос при соединение по субконто
- Ошибка "Error loading component dhist" при использовании 64-битного сервера 1С 8.3
- Подписка на открытие/закрытие всех форм
- Телеграмм. Можно ли сделать закрытого бота?
- Ошибка подключения FTP