v82 управляемые формы: способ вывода excel листа на управляемую форму с перехватом некоторых событий экселя.

24.12.12

Интеграция - Загрузка и выгрузка в Excel

Еще на 256 релизе 8.2 передо мной была поставлена задача в тонком клиенте на форме документа разместить лист ексель, и не просто выложить, а еще и обрабатывать его события. Произведя исследования я с огорчением обнаружил отсутствие возможности в управляемой форме разместить ActiveX. Это обстоятельство натолкнуло меня на некоторые изыскания, результатом которого я решил поделиться в этой статье.  

Предлагаю вашему вниманию разработанный мною способ работы с экселем (OWC) в управляемой форме тонкого клиента с возможностью обработки основных событий экселя (MouseUp, MouseDown, EndEdit, DblClick, OnResize)

Скачать файлы

Наименование Файл Версия Размер
Пример
.zip 8,18Mb
121
.zip 8,18Mb 121 Скачать

Коротко о возникающих проблемах:

1. На тонкую форму нельзя выложить ActiveX, поэтому было решено работать с HTML документом. Для этого формируется текст HTML с выводом в нем OWC (в примере используется OWC10).

На этом этапе  нужно позаботиться чтоб OWC был установлен на клиенте и разрешен запуск активИкс "без вопросов". 

2. После того как мы поместили лист экселя на форму, к сожалению, обнаруживаем что события, генерируемые OWC никак не передаются в 1С. После некоторого мыслительного процесса было решено транслировать события эксель посредством Java скриптов, расположенных в теле HTML. Выглядит это так: 1) в теле HTML определяются "перехватчики" событий екселя; 2) в заголовке HTML определяются переменные для передачи параметров. 3) в перехватчике при наступлении события записываем в переменную имя события и необходимые параметры и генерируем клик на HTML. 

Далее уже в 1С в событии поля HTML "ПриНажатии" читаем значения наших переменных и сами вызываем одноименные процедуры уже в 1C.

//Эмуляция событий экселя
Если ДанныеСобытия.Document = Неопределено Тогда
event = Элемент.Документ.body.attributes.event.value;
Если event = "resize" Тогда
Excel_OnResize();
Возврат
ИначеЕсли event = "DblClick" Тогда
Excel_DblClick();
Возврат
ИначеЕсли event = "MouseUp" Тогда
Excel_MouseUp();
Возврат
ИначеЕсли event = "MouseDown" Тогда
Excel_MouseDown();
Возврат
ИначеЕсли event = "EndEdit" Тогда
Excel_EndEdit();
Возврат
КонецЕсли;
Сообщить("event:"+event+"
|command:"+Элемент.Документ.body.attributes.command.value);
КонецЕсли;

3. При изменении формы эксель не "подтягивается" по размеру HTML поля. Поэтому был произведен перехват onResize и написана процерура, которая правит этот баг

&НаКлиенте
Процедура Excel_OnResize()
Документ = Элементы.HTML.Документ;
Spreadsheet = Документ.all.Spreadsheet;
body = Документ.body;
Если Spreadsheet.Autofit <> Ложь Тогда
Spreadsheet.Autofit = Ложь;
КонецЕсли;
Если Spreadsheet.Height <> ""+body.clientHeight Тогда
Spreadsheet.Height = body.clientHeight
КонецЕсли;
Если Spreadsheet.Width <> ""+body.clientWidth Тогда
Spreadsheet.Width = body.clientWidth;
КонецЕсли;
КонецПроцедуры

Собственно наверное все.

В пикреплении архив с OCW10 и обработкой-примером.

Реализован перехват упомянутых выше событий екселя, проверка на установленный OWC10, интервейс для получения объекта эксель, заготовку процедур чтения XML данных екселя из базы.

PS: Тестировалось на Windows XP. На 7-й винде нужно использовать OWC11. Использование OWC10 приводит к падению. не забываем при этом поменять текст HTML

См. также

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210175    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150721    367    375    

501

Маркетплейсный загрузчик для 12-ти маркетплейсов в "БП 3", "УТ 11", "КА 2", ERP, УНФ

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", Казань-Экспресс, "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    31893    226    63    

117

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    214926    925    886    

939

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    15078    79    0    

60

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101378    296    173    

312
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Kuzja_R 170 05.07.12 12:11 Сейчас в теме
Плюс. Только хорошо бы пояснить вкратце, что такое OWC. Из текста не понятно ни что это такое, ни где его брать. То ли от экселя приблуда, то ли сторонняя разработка.
2. MarSeN 984 05.07.12 12:22 Сейчас в теме
OWC - Office Web Component. Это бесплатный пакет от MS Office который реализует вывод в частности екселя в HTML.
Берется из инета в свободном доступе. В прикрепленном архиве он есть.
Спасибо
3. RustIG 1351 07.07.12 11:23 Сейчас в теме
(0) сложновато для понимания для чего это нужно, и в части реализации много всего надо увязывать.
У меня вопрос: все ли возможности Эксель можно использовать при таком встраивании в 1С?
4. MarSeN 984 07.07.12 13:18 Сейчас в теме
to: Rustig
Согласен, понять сложно. Но в примере рабочий код который можно просто использовать. Наверное все мы начинали с того что анализировали примеры и использовали "чужие" подходы для решения своих задач.
В этой статье я попытался описать/показать на примере способ выложить на форму ActivX и работать с ним, в том числе и перехватывать/передавать события "актива" для обработки в 1С. Это может быть не не только ексель.

В моей практике использовал подход в бюджетировании. Сужествовала настройка щаблона (екселя: определение активных областей с привязкой к ним типов 1С) и последующее заполнение в доступные поля информацией с последующим проведением (данные помещались в регистры). Причем настройка была универсальная. Отмечалась область(ти) экселя и им присваивался тип/вид/предопределенное значение и т.п.

С объектом эексель листа доступные все необходимые методы и свойства (перебор, доступность ячейки, считывание/помещение данных и т.п.). Что касается событий - основные я выложил в примере и описал.

Спасибо за проявленный интерес.
7. kereo 57 09.07.12 09:26 Сейчас в теме
(4) а почему не использовались таблицы 1С?
9. RustIG 1351 09.07.12 14:54 Сейчас в теме
(4), (5), (7) конструкция to: Rustig не работает.
Если бы я не посмотрел новые комментарии, я бы не узнал, что вы ответили мне.
А если бы вы использовали конструкцию (3), мне пришло бы уведомление на эл. ящик.
В моей практике использовал подход в бюджетировании. Сужествовала настройка щаблона (екселя: определение активных областей с привязкой к ним типов 1С) и последующее заполнение в доступные поля информацией с последующим проведением (данные помещались в регистры). Причем настройка была универсальная. Отмечалась область(ти) экселя и им присваивался тип/вид/предопределенное значение и т.п.

Дело в том что для того чтобы организовать пересчет калькулируемых ячеек в MXL нужно серьезно поработать программисту и всегда это будет "фиксировано" алгоритмами. Используя лист экселя настроить калькулируемые колонки может любой пользователь мало-мальски знающий ексель. Далее его можно уже сохранять в шаблон/подгружать в документ, вводить нужные (статические данные) и считывать информацию из листа екселя на форме для постинга/сохранения этих данных в 1С.


А почему для этих целей такие продвинутые пользователи не открывают и не готовят шаблон непосредственно в приложении Эксель? Пока это загадка за семью печатями.
10. kereo 57 09.07.12 15:02 Сейчас в теме
(9) Rustig, я так подозреваю, что разгадка кроется вот в этой таинственной фразе
щаблона (екселя: определение активных областей с привязкой к ним типов 1С)


Только вот чтобы это значило? Ссылки на справочники в экселе?
11. MarSeN 984 09.07.12 16:07 Сейчас в теме
(9),(10)
Если вы обсуждаете мое решение, о котором я вскользь упомянул в комментариях, то совершенно верно: ячейки екселя в шаблоне "типизировались" (справочник/перечисление/.../Число/Ячейка данных из 1С и т.п), задавались предопределенные значения справочников/перечислений.... прямо в шаблоне ексель. Соответственно на основании этого шаблона создавался документ с уже с частично заполненными данными и ожиданием заполнения оставшихся.

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

Спасибо
5. deemaa 155 07.07.12 21:31 Сейчас в теме
статья хорошая, вот только как быть в случае использования 8.3 с линуксом на клиенте? activeX уже не канает...
6. MarSeN 984 08.07.12 00:21 Сейчас в теме
to: deemaa
Да, с Linux явно проблема...
Успокаивает то что в ближайшее время большинство будет работать под виндой, а там глядишь и 1С что-нить придумает )
8. MarSeN 984 09.07.12 10:01 Сейчас в теме
to: kereo
Дело в том что для того чтобы организовать пересчет калькулируемых ячеек в MXL нужно серьезно поработать программисту и всегда это будет "фиксировано" алгоритмами. Используя лист экселя настроить калькулируемые колонки может любой пользователь мало-мальски знающий ексель. Далее его можно уже сохранять в шаблон/подгружать в документ, вводить нужные (статические данные) и считывать информацию из листа екселя на форме для постинга/сохранения этих данных в 1С.

Если Вы готовы удовлетворить каждый "чих" пользователя можно использовать MXL. Я за универсальные решения.
Спасибо за вопрос
С уважением
Сергей Марченко
12. Stamper 43 10.07.12 17:38 Сейчас в теме
вмемориез! автору балловсколькохош
а ведь часто требуют "сделайте мне как в Excel"
13. SERJ_1CC 49 12.07.12 17:39 Сейчас в теме
Интересная вещь, однозначно пригодиться, спасибо за решение...
14. MarSeN 984 13.07.12 08:13 Сейчас в теме
(13)
Пожалуйста, SERJ_1CC
формой благодарности может послужить "+" к этой статье )
15. Sairys 16.07.12 15:49 Сейчас в теме
Хорошая статья, очень интересная и занимательная, автору спасибо.
16. KroVladS 34 21.02.13 19:14 Сейчас в теме
Разъясните плиз.
Могу ли я легально использовать OWC, без установленного/купленного MS Office?
18. MarSeN 984 21.02.13 21:47 Сейчас в теме
(16) как я понимаю - Да. Но я не юрист )
17. gavrikprog 117 21.02.13 21:13 Сейчас в теме
Помогите, кому скучно... :)
Есть вроде веб компонент для MS Project.
pjgrid11.ocx Отображает сведения о задаче, расписание и диаграмму Ганта.

Но пока что-то не осилил его.
Сам компонент
http://www.microsoft.com/ru-ru/download/details.aspx?id=20488
Дока
http://msdn.microsoft.com/ru-ru/library/ff407962(v=office.14).aspx
19. sergbsv 74 04.03.13 03:32 Сейчас в теме
Как добавить возможность открыть и сохранить файл из 1С ?
21. MarSeN 984 04.03.13 09:42 Сейчас в теме
(19) Файл должен быть xml. Я точно не помню методы, но на вскидку можно прочитаьь и записать непосредсьвенно XMLData
20. bubu 04.03.13 06:33 Сейчас в теме
прям как в микроинвесте
22. MarSeN 984 04.03.13 09:44 Сейчас в теме
(20) конфа на УФ? если да, то какая фирма писала, кто аввтор?
23. sergbsv 74 04.03.13 14:08 Сейчас в теме
конфа самодельная на 100%,
автор я
26. MarSeN 984 05.03.13 11:48 Сейчас в теме
(23) sergbsv, вопрос "конфа на УФ? если да, то какая фирма писала, кто автор?" был адресован bubu(20) )
24. sergbsv 74 04.03.13 14:10 Сейчас в теме
25. MarSeN 984 05.03.13 00:02 Сейчас в теме
Кто пояснит, за что раздают мани в этом посте?
29. user1345957 21.04.20 00:15 Сейчас в теме
(25) Помогите мне пожалуйста, у меня проблемы с вашей обработкой.
30. MarSeN 984 21.04.20 10:57 Сейчас в теме
31. user1345957 21.04.20 17:07 Сейчас в теме
(30)1С не видит установленный OWC10 и OWC11.
32. MarSeN 984 21.04.20 17:52 Сейчас в теме
(31)
Ну это дело такое...
OWC ставили на клиенте?
33. user1345957 21.04.20 18:01 Сейчас в теме
(32) да, но я пробую и без owc тоже. Сможете пожалуйста мне помочь в этой теме?
https://forum.infostart.ru/forum9/topic239766/#message2430999

вот отсюда я брал код:
https://craft1c.ru/1s-zagruzka-iz-excel-uf/?unapproved=379&moderation-hash=81d20299920a30507a49e2cc4ff1d3bb#comment-379
27. bayce 45 12.05.14 00:09 Сейчас в теме
По-моему отличная вещь.
Если клиенты платят, то почему бы не сделать и Excel на форме.

28. German_Tagil 42 11.08.19 08:06 Сейчас в теме
Оставьте свое сообщение