1с открыть файл управляемые формы

Выбор файла в 1С в асинхронном режиме

Рассмотрим как асинхронно (а в управляемых формах необходимо только так) программно обработать выбор пользователем пути к файлу.

Постановка задачи

Предположим, что на форме создан реквизит ПутьКФайлу. Этот реквизит имеет тип Строка и выведен на форму. Пользователь должен указывать в этом поле путь к файлу Excel.

Решение

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

В процедуре начала выбора элемента ПутьКФайлу необходимо написать код:

// Отказываемся от стандартной обработки процедуры
СтандартнаяОбработка = Ложь;

содержит описание процедуры, которая будет вызвана после закрытия диалога выбора. В этой процедуре должно быть два параметра:

Пример процедуры, которая будет вызвана после закрытия окна выбора файла:

Если ВыбранныеФайлы <> Неопределено Тогда

ПутьКФайлу = ВыбранныеФайлы [ 0 ];

Внимание!

Процедура, указанная в объекте ОписаниеОповещения должна иметь ключевое слово Экспорт.

Приведенный пример можно немного усовершенствовать: передать в третий параметр конструктора ОписаниеОповещения переменную Диалог.

Тогда в процедуре ВыборФайлаЗавершение будет доступно немного больше информации: из параметра ДополнительныеПараметры можно будет узнать каталог, в котором хранится выбранный файл, и фильтр, которому соответствует файл.

В конструкторе объекта ДиалогВыбораФайла в параметре указывается для чего будет открыт диалог. Возможные значения системного перечисления РежимДиалогаВыбораФайла:

Приведу еще несколько свойств объекта ДиалогВыбораФайла:

Решение средствами БСП

В конфигурациях со втроенной Библиотекой стандартных подсистем можно использовать процедуру

общего модуля ОбменДаннымиКлиент. При помощи этого метода приведенную выше задачу можно решить так:

Остались вопросы?
Спросите в комментариях к статье.

Источник

Работа с файлами в управляемых формах клиент серверной версии 8.3 и выше

Для работы с файлами требуется понимание работы платформы и некоторых новшеств.

При необходимости сохранять файлы на сервере, у пользователя, под которыми запущена служба сервера 1С, должен быть доступ на соответствующие каталоги.

Файлы будем хранить в конфигурации в клиент серверной версии 8.3.
Для хранения файлов будем использовать реквизит с типом «ХранилищеЗначения».
Особенностью данного реквизита является его недоступность на клиенте, поэтому работу с ним необходимо проводить только на сервере.

Концепция загрузки с клиента на сервер следующая:
1. Загружаем файлы от клиента на сервер помещая их во временное хранилище
2. На клиенте сохраняем адрес
3. При записи объекта на сервере сохраняем файл в базу данных

Пройдем более детально:
Загрузка файла происходит во временное хранилище на сервере и не передается с контекстом на клиент.
Для передачи адреса файла создадим отдельную переменную формы типа строка, назовем ее «АдресЗагруженногоФайла».

Перед загрузкой нужно получить от пользователя разрешение на работу с его файловой системой.

У нас есть адрес файла на сервере но нет доступа к реквизиту с типом «ХранилищеЗначений» на клиенте.
Для записи в этот реквизит перед записью на сервере получим файл из временного хранилище и положим в реквизит.

Загрузка файла в базу данных готова.

Концепция выгрузки с сервера на клиента следующая:
1. Файл достаем с реквизита и ложим во временное хранилище
2. Передаем с сервера на клиент адрес
3. Сохраняем файл на клиенте

Для работы с файлами на клиенте нужно получить от пользователя разрешение на работу с его файловой системой.

На сервере готовим метод который вытащит файл из реквизита и положит во временное хранилще

Используем типовой метод «НачатьПолучениеФайлов» для передачи файла с сервера на клиента.
В него необходимо передать массив получаемых файлов.
В этом массиве необходимо указать адреса нахождения файлов на сервере или адреса временных хранилищ файлов.
Во время работы файлы будут загружены по этим адресам и положены в массиве «ПолученныеФайлы» во временные хранилища.
На клиенте из этих хранилищ достаем файлы и сохраняем.

Источник

Работа с файлами в 1С 8.3 (8.2)

В 1С 8.3 (8.2) для работы с файлами существует два объекта: Файл и ДиалогВыбораФайла.

Рассмотрим каждый по отдельности.

Объект 1С — файл

Объект Файл служит для управления параметрами файлов.

Сразу стоит заметить, что данный объект не предназначен для чтения и записи из файлов.

Например, прочитаем параметры некоторого файла, находящегося на диске C:

В результате мы получим следующую информацию (если файл найден):

Запись в файл

Теперь, когда мы выбрали и открыли файл, можно с ним работать, т.е. прочитать его содержимое или записать в него что-нибудь.
Рассмотрим пример:

Чтение файла в 1С

Часто бывает необходимо прочитать текст файла построчно, например, для анализа каждой строки. Для этого используем объект ЧтениеТекста.

Запись текста из 1С в файл

Заметим, что при записи текстового файла можно установить кодировку.

Копирование файла

Здесь все очень просто

Перемещение

Удаление

Диалог выбора файла

В указанных выше примерах есть одно неудобство. Путь к файлу прописан жестко в коде. Чтобы выбрать файл интерактивно, существует объект ДиалогВыбораФайла, о котором речь пойдет ниже.

Объект ДиалогВыбораФайла служит для открытия файла (файлов), сохранения файла или выбора каталога в диалоге специального вида.

Например, выберем и откроем некоторый файл с расширением txt:
Задаем режим диалога выбора. Доступны три варианта: ВыборКаталога, Открытие, Сохранение

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Для начинающих: как выбрать файл в 1С?

Добавим новую форму с кнопкой, нажав на которую будет открываться окно выбора файла. Дальнейшая обработка файла в данном примере не рассматривается. Рекомендуется тренироваться на копии базы или пустой конфигурации. Пример создан на конфигурации 1С:CRM 3.0.

Сначала подготовим конфигуратор.

Заходим в конфигуратор 1С. Если конфигурация не открыта, открываем ее и снимаем с поддержки. В меню «Конфигурация» нажимаем «Открыть конфигурацию». Далее в меню «Конфигурация» нажимаем «Поддержка» и выбираем «Настройка поддержки». В окне нажимаем кнопку «Включить возможность изменения» и устанавливаем переключатели как на картинке. Нажимаем «Ок».

741c21bc37ce7cd566be375d46929dd6

Теперь создадим простую обработку.

Находим в левой таблице объектов объект «Обработки», нажимаем на ней правой кнопкой мыши и выбираем «Добавить». Далее потребуется заполнить Имя обработки, указать, в какой подсистеме 1С хотите вызвать обработку, и добавить новую форму в разделе «Формы».

06a133e8efb05fa0ff0f23a7418b24e9

После создания формы появится окно как представлено ниже.

Теперь создадим команду формы «Загрузить» нажав на плюс в верхнем правом окне. Обязательно укажите свойство «Действие». Это будет название процедуры 1С.

784b124f96d69ffc5b523ea4f4ac6e45

Далее добавляем на форму кнопку «Загрузить», нажав на плюс в левом верхнем окне. Обязательно укажите свойство «ИмяКоманды». Здесь укажем название команды, которую создали на предыдущем шаге «Загрузить». В результате на форме появится кнопка «Загрузить».

a1d2e4c32ea4c7f8be5b706d8e0f8828

Далее напишем небольшой код.

Внизу окна нажимаем на закладку «Модуль». У нас здесь уже есть пустая процедура. Добавляем в нее код.

ДиалогВыбора = новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбора.Заголовок = «Выберите файл»;

ДиалогВыбора.Фильтр = «Excel документ, .xls|.xls»;

Если ДиалогВыбора.Выбрать() Тогда

В результате получится так как на рисунке ниже.

4a34e77bc1d75410966d4dc70ce6ffc1

И в конце остается проверить в пользовательском режиме. Для этого нажимаем «Начать отладку» или F5. Конфигуратор спросит обновить ли конфигурацию базы данных. Отвечаем «Да» и у нас открывается 1С (режим пользователя). Далее находим подсистему, куда добавили обработку (в нашем случае это «Маркетинг») и проверяем.

cf298a3fa308892ca7aec6cd697e98bb

На простейшем примере было показано как написать код, прикрепить его на форму и вызвать в пользовательском режиме 1С.

Источник

Выбор файла и загрузка его на сервер в асинхронном режиме

Введение

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

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

Диалог выбора файла

Сразу приведу код, который получился после упрощения.

Я специально привел ранее вариант для обычных форм, чтобы проще было сравнивать. Код разбился на две примитивные процедуры и практически не изменился за счет метода ВыполнитьСценарийВыбораФайла(). Этот метод скрывает все рутинные асинхронные действия:
— подключает расширение по работе с файлами
— если расширение не подключено, то задает пользователю вопрос по его подключению
— начинает установку расширения, если пользователь подтвердит это действие
— открывает диалог выбора файла
— передает результаты выбора файла назад в прикладную процедуру КаталогНачалоВыбораЗавершение()

Далее приведу код этой служебной процедуры, написанной по принципу, из этой статьи.

Загрузка файлов с клиента на сервер

Постановка задачи: пусть требуется метод, который умеет помещать на сервер выбранный на клиенте файл. Если выбранный файл является каталогом, то необходимо поместить на сервер все файлы, содержащиеся в этом каталоге (подчиненные каталоги игнорировать).
Последовательность асинхронных действий:
— определить является ли файл каталогом
— если не является, то добавить его в массив помещаемых файлов
— если является, то найти все файлы этого каталога
— каждый из найденных файлов проверить является ли он каталогом. Если не является то добавить в массив помещаемых файлов (каждая итерация цикла обхода файлов является асинхронной, потому что вместо синхронного Файл.ЭтоФайл() необходимо использовать его аналог Файл.НачатьПроверкуЭтоФайл())
— поместить файлы на сервер
— вернуть результат помещения в прикладную процедуру, которая будет выполнять обработку файлов по какому-то алгоритму

Данная задача снова решается за три простых шага

Все детали скрыты в процедуре ВыполнитьСценарийЗагрузкиФайлаНаСервер(), которая подходит как для файлов, так и для каталогов. При необходимости ее можно доработать, чтобы она покрывала больше случаев.

Файл для скачивания

К публикации прилагается пример, который можно использовать как шаблон для описанных операций. В нем реализованы несколько наиболее востребованных случаев: выбор существующего файла, выбор имени файла для сохранения, выбор каталога и множественный выбор. Для полноты картины приведены аналогичные операции для обычных форм. Тестировались процедуры на платфроме 8.3, на конфигурацях начиная с режима совместимости 8.2.13

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с открыть страницу формы программно
  • 1с открыть произвольную форму документа программно