Диалог выбора файла 1с ошибка
При установленном первом или втором режиме возникает подобная ошибка.
Решения:
1. Изменить свойство конфигурации
2. Отказаться от использования таких окон/меню/Предупреждений
3. Переписать на другие функции, например для ошибки из топика использовать функцию ПоказатьВыборИзСписка():
Пример кода:
Полный список проблемных методов
Модальный метод | Немодальный метод |
---|---|
Глобальный контекст | |
Вопрос | ПоказатьВопрос |
Предупреждение | ПоказатьПредупреждение |
ОткрытьЗначение | ПоказатьЗначение |
ВвестиДату | ПоказатьВводДаты |
ВвестиЗначение | ПоказатьВводЗначения |
ВвестиСтроку | ПоказатьВводСтроки |
ВвестиЧисло | ПоказатьВводЧисла |
УстановитьВнешнююКомпоненту | НачатьУстановкуВнешнейКомпоненты |
УстановитьРасширениеРаботыСФайлами | НачатьУстановкуРасширенияРаботыСФайлами |
УстановитьРасширениеРаботыСКриптографией | НачатьУстановкуРасширенияРаботыСКриптографией |
ПоместитьФайл | НачатьПомещениеФайла |
ОткрытьФормуМодально | ОткрытьФорму |
ДиалогРедактированияСтандартногоПериода | |
Редактировать | Показать |
КонструкторФорматнойСтроки | |
ОткрытьМодально | Показать |
ДиалогРасписанияРегламентногоЗадания | |
ОткрытьМодально | Показать |
ДиалогВыбораШрифта | |
Выбрать | Показать |
ДиалогВыбораЦвета | |
Выбрать | Показать |
ОбработкаРасшифровкиКомпоновкиДанных | |
ВыбратьДействие | ПоказатьВыборДействия |
СписокЗначений | |
ОтметитьЭлементы | ПоказатьОтметкуЭлементов |
ВыбратьЭлемент | ПоказатьВыборЭлемента |
УправляемаяФорма | |
ВыбратьИзМеню | ПоказатьВыборИзМеню |
ВыбратьИзСписка | ПоказатьВыборИзСписка |
ОткрытьМодально | Открыть |
С появлением управляемого приложения и веб-клиента некоторые задачи, которые решались в обычном приложением за несколько строчек, существенно усложнились. Казалось бы такая простая и часто используемая операция, как интерактивный выбор файла, которая в обычном приложении решалась в одном методе, теперь требует создания цепочки из нескольких процедур, которые вызываются одна за другой через ОписаниеОповещения. Вот как это было с использованием модальных вызовов:
Но как эту задачу решить на веб-клиенте? В поисковике не удалось найти готового универсального решения. Поискал в типовых, но там все разбросано по модулям и как-то запутано. Посмотрел пример в консоли СКД с диска ИТС для управляемых форм. Там тоже надо вычленять по кусочкам все шаги. Кроме того там применяется одна фича, которая позволяет открывать диалог выбора файла без установленного расширения работы с файлами. Но в общем случае эта хитрость не подойдет, так как она работает только для существующих файлов, насколько я понял. Поэтому написал процедуры, которые можно просто скопировать и использовать в будущем, не тратя время на то, чтобы вспоминать, как это работает.
Диалог выбора файла
Сразу приведу код, который получился после упрощения.
Я специально привел ранее вариант для обычных форм, чтобы проще было сравнивать. Код разбился на две примитивные процедуры и практически не изменился за счет метода ВыполнитьСценарийВыбораФайла(). Этот метод скрывает все рутинные асинхронные действия:
- подключает расширение по работе с файлами
- если расширение не подключено, то задает пользователю вопрос по его подключению
- начинает установку расширения, если пользователь подтвердит это действие
- открывает диалог выбора файла
- передает результаты выбора файла назад в прикладную процедуру КаталогНачалоВыбораЗавершение()
Далее приведу код этой служебной процедуры, написанной по принципу, из этой статьи.
То есть вместо того, чтобы писать несколько процедур с труднопонимаемыми названиями в стиле ЗагрузитьФайлКонсолиПослеПодключенияРасширенияПослеПомещенияФайла() , вся последовательность действий описана в одной. Кроме того, можно заметить, что она универсальная и не содержит зависимостей от контекста формы. То есть ее можно перенести в другую форму простым копированием
Загрузка файлов с клиента на сервер
Постановка задачи: пусть требуется метод, который умеет помещать на сервер выбранный на клиенте файл. Если выбранный файл является каталогом, то необходимо поместить на сервер все файлы, содержащиеся в этом каталоге (подчиненные каталоги игнорировать).
Последовательность асинхронных действий:
- определить является ли файл каталогом
- если не является, то добавить его в массив помещаемых файлов
- если является, то найти все файлы этого каталога
- каждый из найденных файлов проверить является ли он каталогом. Если не является то добавить в массив помещаемых файлов (каждая итерация цикла обхода файлов является асинхронной, потому что вместо синхронного Файл.ЭтоФайл() необходимо использовать его аналог Файл.НачатьПроверкуЭтоФайл())
- поместить файлы на сервер
- вернуть результат помещения в прикладную процедуру, которая будет выполнять обработку файлов по какому-то алгоритму
Данная задача снова решается за три простых шага
Все детали скрыты в процедуре ВыполнитьСценарийЗагрузкиФайлаНаСервер(), которая подходит как для файлов, так и для каталогов. При необходимости ее можно доработать, чтобы она покрывала больше случаев.
Файл для скачивания
К публикации прилагается пример, который можно использовать как шаблон для описанных операций. В нем реализованы несколько наиболее востребованных случаев: выбор существующего файла, выбор имени файла для сохранения, выбор каталога и множественный выбор. Для полноты картины приведены аналогичные операции для обычных форм. Тестировались процедуры на платфроме 8.3, на конфигурацях начиная с режима совместимости 8.2.13
Вернитесь в конфигуратор и выберите пункт меню "Конфигурация" -> "Открыть конфигурацию":
В открывшемся окне нажмите правой кнопкой на пункте "Конфигурация" и выберите из раскрывшегося меню пункт "Свойства":
Откроется окно со свойствами конфигурации (справа):
Пролистайте его в самый низ и найдите там пункт "Режим использования модальности":
Установите его значение в "Использовать":
Внимание! Обратите внимание, что если вы используете платформу 1С, отличную от той, что мы скачивали в первом уроке (более поздней версии), то у вас также будет присутствовать поле "Режим использования синхронных вызовов. ". Его также нужно установить в "Использовать".Наконец, выберите пункт меню "Конфигурация" -> "Сохранить конфигурацию":
Готово! Теперь ошибки больше не возникнет.
Пояснения ниже - для тех кому интересно, что мы сделали.
Мы включили режим использования модальности в нашей конфигурации. По умолчанию этот режим выключен и это не позволяет нам использовать такие команды как ВвестиЧисло, ВвестиСтроку, ВвестиДату, ОткрытьЗначение.
Дело в том, что эти команды относятся к модальным. Их вызов приводит к тому, что перед пользователем появляется окно (например, для ввода информации), которое блокирует возможность работы с программой, пока окно не закроется.
А так как наличие таких окон крайне нежелательно при работе с 1С через веб-браузер, то при разработке новых конфигураций режим модальности по умолчанию выключен.
Мы же можем смело включать его, так как пишем учебные примеры, не рассчитанные на работу в интернете.
Адаптировала обработку под интерфейс Такси Бухгалтерии 3, и получила ошибку:
Ошибка при вызове метода контекста (Выбрать)
Если ДиалогОткрытияФайла.Выбрать() Тогда
Использование синхронных методов на клиенте запрещено!
Нужно использовать создание объекта «ОписанияОповещения» и вызов другого метода диалога Показать()
Вот пример кода с ошибкой:
Исправленный код:
Разместил: escritor Версии: | 8.2 УП | 8.3 | Дата: 30.10.2016 Прочитано: 19421Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Автоматическая архивация баз 1С с использованием Cobian Backup и VBS скриптов 8
Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет - так хочет, делаем: Первым делом настроим автоматическую архивац Динамический список
отбор в динамическом списке программно 2
Для установки отбора в динамическом списке используется свойство Отбор. Добавление нового элемента отбора осуществляется следующим образом: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Для того чтобы новый Добавление дополнительных отчетов и обработок в управляемом приложении 5
Для добавления отчета или обработки нужно в модуле добавить Функцию СведенияОВнешнейОбработке() Функция СведенияОВнешнейОбработке() Экспорт // Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные ПараметрыРегистрации Посмотреть все результаты поиска похожих
1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц Автоматическая архивация баз 1С с использованием Cobian Backup и VBS скриптов 8
Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет - так хочет, делаем: Первым делом настроим автоматическую архивац Ввод по строке - поиск по первым символам или в любом месте наименования 6
При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Веб браузер в 1С используя поле HTML документа 2
Настраивал клиенту CRM, он захотел - чтобы панель управления сайтом была в 1С. Хочет - делаем: Обработка Веб браузер проста, состоит из поля HTML документа и 20 строчек кода: Код команд: НаКлиенте Процедура Команда1(Команда) Объект.HTML = Посмотреть все результаты поиска похожих
Еще в этой же категории
Обработка файлов в папке и запись дополнительной информации в них 4
Частенько при загрузке данных в 1С сталкиваешься с необходимостью дополнительной обработки загружаемых файлов. Возможно это добавление какой-либо информации или наоборот удаление, а может изменение. Ниже приведен код, который обрабатывает файлы в Функции для работы с ZIP-архивами 0
В работе часто приходится сжимать выгруженные данные в zip архив, отправлять по почте, и потом автоматически разархивировать полученный zip файл: // Распаковывает файл архива ZIP в указанный каталог; Извлекает все файлы архива // // Параметры: / Посмотреть все в категории Работа с Файлами и Каталогами
Читайте также: