Запустить excel в веб клиенте 1с
Долгое время 1с у меня работало просто в режиме "толстого клиента" на терминальном сервере (база - файловая, максимально работает 5 человек).
Но - чем дальше, тем больше падает скорость работы (проблема скорее всего - в медленных дисках).
В общем, поднял на том же сервере IIS, опубликовал базы на нём, и перестроил работу с "толстого клиента" на "тонкого". Помогло (первый запуск 1с - 45 секунд, последующие - 10 секунд; в режиме "толстого клиента" - запуск не быстрее 2 минут).
- под пользователем с правами администратора - отчёт запускается, файл формируется, доступен пользователю для просмотра, изменения, но - не для сохранения;
- под пользователем с обычными правами - говорит о невозможности сформировать файл.
Всё, проблема ушла (проверил как под администратором, так и под обычным пользователем).
P.S. Скорее всего - надо переделать вывод информации в ТаблицуЗначений, которую заполню на сервере, и передам её на клиента, где уже и формировать форму в Excel.
1. Проблема скорее всего в том что ты строки в жксель заполняешь через OLE.
2. Эксель не поддерживает заполнение по OLE в несколько потоков (не вашно под одним пользователем или под несколькими в терминале. )
3. мы долго былись с негоативными результатами. и в итоге ушли на формирование файла средствами OO и LibreOffice.
чуток медленнее зато можно не закрывать Exel и формировать в несколько потоков под разными пользователями.
Не пробовал, но как-то не вижу смысла, если честно.
Хотя вечером попробую и так - что получится. Отпишусь.
baggio ➤ 1. Проблема скорее всего в том что ты строки в жксель заполняешь через OLE.
2. Эксель не поддерживает заполнение по OLE в несколько потоков (не вашно под одним пользователем или под несколькими в терминале. )
3. мы долго былись с негоативными результатами. и в итоге ушли на формирование файла средствами OO и LibreOffice.
чуток медленнее зато можно не закрывать Exel и формировать в несколько потоков под разными пользователями.
Но почему у меня работает под несколькими пользователями?
Я, конечно, вечером проверю ещё раз (благо, из-за красивостей оформления отчёт работает не 5 секунд, а минуты три).
Всё же, как мне кажется, основная проблема была именно в том, что Excel я вызываю &НаСервере, соответственно, он пытался запустится под тем же пользователем, что "ответственен" за запуск сервера (в моём случае - Web-сервере IIS - это группа IIS_IUSRS (Встроенная группа, которую используют службы IIS)).
Люди, помогите, уже запарилась.
Надо из excel загрузить данные в табличную часть документа. Из формы дока пользователь выбирает файл у себя на клиенте и оттуда надо вытащить данные в ТЧ дока. Что не так делаю. Вылетает исключение - Ошибка записи данных файла.
Вот мой код после выбора файла пользователем
(2) dj_serega, если б я знала. В тонком клиенте отрабатывает нормально, все загружает. Исключение в первой процедуре ВебКлиентЗавершениеВыбораФайлаЗагрузки
Ошибка видимо где-то в ВебКлиентЗавершениеПомещенияФайла
Возможно надо файл на сервере читать и обрабатывать. Но так тоже не работает.
(3) alljoke, а каталог временных файлов находится на сервере? Извиняюсь за такие тупые вопросы, я первый раз пишу такую штуку
Попробуйте там в Исключение это.
Исключение
// Обработка ошибок экспорта данных из 1С в Excel
Сообщить(СообщитьОписаниеОшибки());
КонецПопытки;
в данном случае на сервере.
(9) alljoke, Была ошибка в НачатьПомещениеФайла(. ) только интерактивный режим в веб-клиенте. Я исправила. Теперь пишет, что Com-Объекты поддерживаются только Microsoft Internet Explorer. Хм, я на нем и проверяю. IE 11 на клиенте.
Посоветуйте, может надо все-таки на сервере файл обрабатывать? Тогда придётся устанавливать excel на сервере. Может кто-то писал, как лучше?
Основное применение функции ПолучитьCOMОбъект - это получение COM-объекта, соответствующего файлу. Для этого следует в качестве первого параметра функции задать имя файла, который будет определять COM-объект. Например, фрагмент кода:
Таб = ПолучитьCOMОбъект("C:\DATA\DATA.XLS");
создает объект Excel.Application и открывает с его помощью файл документа "C:\DATA\DATA.XLS". Если указанный файл во время выполнения данного фрагмента уже открыт с помощью MS Excel, то будет получена ссылка на уже существующий объект.
Для файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.
Если в качестве имени файла указана пустая строка, то будет создан новый экземпляр объекта. В этом случае необходимо указать имя класса COM.
Например, фрагмент кода:
Таб = ПолучитьCOMОбъект("", "Excel.Application");
создает новый документ Excel. В дальнейшем этот документ может быть программно заполнен и сохранен в файл.
Если первый параметр функции пропущен, то будет произведена попытка получить активный объект указанного типа. Если активного объекта указанного типа в настоящий момент не существует, то будет вызвано исключение. Например, в результате выполнения оператора:
П = ПолучитьCOMОбъект( , "Excel.Application");
Переменная П получит значение типа COMОбъект, соответствующее активному приложению MS Excel, если таковое имелось, или будет вызвано исключение, если активных экземпляров MS Excel не было.
"
Второе - все большие работы лучше производить на сервере.
(12) alljoke, Спасибо большое за помощь! Решила на сервере юзать My Webpage так как excel отказались админы устанавливать
Во время реализации задачи по регистрации продаж дистрибьюторов на основании Excel документов столкнулся с интересной задачей. Необходимо реализовать загрузку файла и на стороне сервера обработать его, заполнив табличную часть документа.
Решение состоит из двух функций: клиентской и серверной.
Клиентская часть инициирует выбор файла, передачу выбранного файла на сервер и передача управления серверной процедуре.
Код 1C v 8.2 УП
Серверная процедура перебирает полученные на сервер файлы. Получает COM-объекты и импортирует данные.
Код 1C v 8.2 УП
Источник
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П Посмотреть все результаты поиска похожих
Еще в этой же категории
Как в excel сохраненный из 1С вставить новый лист? 15
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно - их просто скрыли или, что чаще всего - даже не отображали (обусловлено созданием файла из стороннего прил Как сформировать документ в Word из 1С? (Active Document) 14
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Wordа. 2. Путем вставки текста с помощью закладок в Wo Преобразование XLS в MXL 10
Конвертация таблиц из Excel в MXL - скачать Converter Excel v MXL: Для 8.х - Для 7.7 - // Выбор файла Microsoft Excel Procedure FileNameStartChoice(Element, StdProcessing) StdProcessing = False; DialogFile = New FileDialog(FileDialogMode. Универсальная функция для чтения данных из Excel в 1С 3
Иногда требуется разобрать данные из Excel в 1С. Я считаю что легче и быстрей поместить все данные в ТаблицуЗначений и уже там ими манипулировать. Пример 2-х функций которые я использую: ИзExcelВТаблицу – Читает Excel в ТаблицуЗначений ЭлементСп Пример работы с общим макетом типа ActiveDocument в клиент-серверном варианте 3
//********************************************************************************** //получаем макет на сервере, сохраняем в файл и передаем на клиента НаСервере Функция ПолучитьДанныеМакета() АдресХранилища = Новый УникальныйИдентификатор Посмотреть все в категории Работа с Microsoft Office и OpenOffice
Да в 1С8 есть отладка web-сервисов и она работает для внешних не 1с систем. Это очень здорово.
Для локального web-сервиса необходимо:
1. Положить на клиент где запускаю конфигуратор и предприятие файлик webservicecfg.xml:
3. Выбрать в конфигураторе подключать Web-сервисы автоматически
Для серверного варианта надо еще сервер 1с запускать в режим отладки с ключом /debug
Для внешней отладки пользуюсь хорошим дополнением для Firefox:
Похожие FAQ
Еще в этой же категории
Обмен 1С c клиентом используя web сервисы 1С 19
Все чаще и чаще встречаются обмены, используя технологию Web-Сервисов. Это удобно, т.к для хостовой базы данных достаточно установить расширение Web-Сервиса и обработчик данных, а для клинтского решения подключиться к Web-Сервису. Технология является Использование Web-сервисов для синхронизации баз данных в режиме online 1с 8.х 12
Часто при ведении учета в различных конфигурациях 1с возникает необходимость выполнения обмена данных. Для решения этой задачи принято использовать Универсальный обмен данными XML или другие внешние обработки, общим у которых является использование Управляем 1С со стороны используя web-сервис 6
Передача команд 1С на выполнение через ссылки в письме. web-сервисы помогают интегрировать 1С с различными программами, делая ее более гибкой. Статей в интеренете достаточно можно, но в основном там описывается выгрузка из 1С, обмен между двумя 1 Мобильное приложение в 1С: Двусторонний обмен 6
Сделаем двусторонний обмен документами между мобильным приложением и центральной базой 1С: Автор: Кухар Богдан Обмен между базами через XML (создается ФабрикаXDTO) 5
В процедурах выгрузки/загрузки создается ФабрикаXDTO из схемы, которая хранится в макете как файл. Файл настроек схемы надо использовать один и тот же в обработках Загрузки/Выгрузки Из Фабрики создается объект, его заполняю выгружаемыми данными Фаб Посмотреть все в категории WEB-сервисы, WS-ссылки, XDTO-пакеты
После манипуляции с файлом необходимо его закрыть. В противном случае он останется захваченным в системе, и мы не сможем его использовать в других приложениях.
Клиент-Серверный вариант в управляемых формах.
1. Считываем данные из файла в массив из структур и затем этот массив передаем на сервер для дальнейших манипуляций с данными.
2-ой способ - это передать файл Excel на сервер через хранилище данных и далее работать с ним уже на сервере.
Очень часто приходится работать с очень большими файлами Excel, и его обработка путем перебора строк занимает огромное количество времени.
В таких случаех удобно в одно действие загрузить всю таблицу в массив и в потом работать уже непосредственно с массивом.
На выходе получаем двумерный массив, который содержит все данные указанного листа Excel
Полезные функции при работе с Excel:
Устанавливает видимость Excel при работе |
Добавление новой книги в файл Excel |
Сохранение книги Excel |
Добавление нового листа к книге |
Переименование листа |
Изменение маштаба листа |
Изменение ориентации листа |
Отступы листа |
Обращение к ячейки чтение/запись |
Обращение к области ячеек |
Очень часто при чтении или записи значений в Excel ставятся лишние пробелы в числе, например, вместо 1502 он читает как 1 502 и в дальнейшем это значение не приводится к числу. Эту проблему можно решить заменой. |
Объединение ячеек |
Работа с именованными ячейками в Excel |
Удаление ячейки |
Удаление области ячеек |
Обращение к строке |
Изменение ширины колонки |
Обращение к колонке |
Удаление Строки |
Фон ячейки / области / Строки / |
Функция переводит цвет из формата RGB в формат Excel |
Управление шрифтом в ячейки/строке/области |
Р азрешает переносить по словам в ячейке |
Управление рамкой ячейки |
Устанавливаем формат ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Функция для получения ширины колонки Excel Спасибо пользователю goodwill |
Разрешить перенос слов в ячейке Спасибо пользователю roofless |
Группировки данных на листе Спасибо пользователю dr-wit, ignor |
При работе с Excel мы оперируем столбцами как числом (Например, 1 столбец), а у Excel адресация столбцов производится с помощью символов. И когда нам нужно отредактировать формулу, то нам нужно номер столбца преобразовать в символ. В таких случаях вам пригодится эта функция.
2. Работа с Excel через ТабличныйДокумент 1С
С помощью данного метода можно и загружать из Excel и выгружать в Excel. Но на мой взгляд этот метод идепально подходит когда вам необходимо посто сохранить информацию в Excel без дальнейшей манипуляции.
Итак, приступим: загрузка из Excel:
1. Загружаем файл Excel в табличный документ
2. Производим манипуляции уже с ТабличнымДокументом
Давайте теперь разберем сохранение в Excel с помощью данного метода:
Тут все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel
2. Работа с Excel ADODB
Выражаю особую благодарность коллеги Fragster за хороший комментарий
Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:
- Не требует установки самой Excel, необходима лишь установить ODBC. Но как правило он уже установлен. Это особенность позволяет работать на стороне сервера без дополнительных установок Excel.
- Позволяет работать с таблицой Excel как с БД и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает Т-SQL. Что на мой взгляд огромный плюс.
Подключение к ADO
Отключение от ADO
Выполнение запроса
Пример запроса:
Запись в Excel тоже производится в виде запроса:
Хочу отметить что наименование полей производится по первой строке в таблице
ADODB предоставляет ряд объектов, с которыми мы работаем
ADODB.Recordset
В файле продемонстрированны оба варианта работы с запросами.
На этом пока все. По возможности буду дополнять статью :)
В архиве находится обработка, которая демонстрирует все описанные и другие возможности при работе с Excel.
Читайте также: