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

24.12.12

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

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример
.zip 8,18Mb
121
121 Скачать (1 SM) Купить за 1 850 руб.

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

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! 20%

Загрузка и выгрузка в 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С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

6000 5100 руб.

09.11.2016    237777    1076    904    

1012

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

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

3600 руб.

12.08.2021    36463    368    68    

161

SALE! 30%

Загрузка и выгрузка в 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С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    108304    315    173    

327

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

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

11100 руб.

29.10.2014    217506    662    527    

457

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

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

4800 руб.

23.01.2022    11408    56    0    

38

Загрузка и выгрузка в 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 1С:Розница 3.0 Платные (руб)

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

16800 руб.

20.11.2015    157303    379    378    

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

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

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

Спасибо за проявленный интерес.
7. kereo 57 09.07.12 09:26 Сейчас в теме
(4) а почему не использовались таблицы 1С?
9. RustIG 1834 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 987 09.07.12 16:07 Сейчас в теме
(9),(10)
Если вы обсуждаете мое решение, о котором я вскользь упомянул в комментариях, то совершенно верно: ячейки екселя в шаблоне "типизировались" (справочник/перечисление/.../Число/Ячейка данных из 1С и т.п), задавались предопределенные значения справочников/перечислений.... прямо в шаблоне ексель. Соответственно на основании этого шаблона создавался документ с уже с частично заполненными данными и ожиданием заполнения оставшихся.

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

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

Если Вы готовы удовлетворить каждый "чих" пользователя можно использовать MXL. Я за универсальные решения.
Спасибо за вопрос
С уважением
Сергей Марченко
12. Stamper 43 10.07.12 17:38 Сейчас в теме
вмемориез! автору балловсколькохош
а ведь часто требуют "сделайте мне как в Excel"
13. SERJ_1CC 50 12.07.12 17:39 Сейчас в теме
Интересная вещь, однозначно пригодиться, спасибо за решение...
14. MarSeN 987 13.07.12 08:13 Сейчас в теме
(13)
Пожалуйста, SERJ_1CC
формой благодарности может послужить "+" к этой статье )
15. Sairys 16.07.12 15:49 Сейчас в теме
Хорошая статья, очень интересная и занимательная, автору спасибо.
16. KroVladS 35 21.02.13 19:14 Сейчас в теме
Разъясните плиз.
Могу ли я легально использовать OWC, без установленного/купленного MS Office?
18. MarSeN 987 21.02.13 21:47 Сейчас в теме
(16) как я понимаю - Да. Но я не юрист )
17. gavrikprog 118 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 75 04.03.13 03:32 Сейчас в теме
Как добавить возможность открыть и сохранить файл из 1С ?
21. MarSeN 987 04.03.13 09:42 Сейчас в теме
(19) Файл должен быть xml. Я точно не помню методы, но на вскидку можно прочитаьь и записать непосредсьвенно XMLData
20. bubu 04.03.13 06:33 Сейчас в теме
прям как в микроинвесте
22. MarSeN 987 04.03.13 09:44 Сейчас в теме
(20) конфа на УФ? если да, то какая фирма писала, кто аввтор?
23. sergbsv 75 04.03.13 14:08 Сейчас в теме
конфа самодельная на 100%,
автор я
26. MarSeN 987 05.03.13 11:48 Сейчас в теме
(23) sergbsv, вопрос "конфа на УФ? если да, то какая фирма писала, кто автор?" был адресован bubu(20) )
24. sergbsv 75 04.03.13 14:10 Сейчас в теме
25. MarSeN 987 05.03.13 00:02 Сейчас в теме
Кто пояснит, за что раздают мани в этом посте?
29. user1345957 21.04.20 00:15 Сейчас в теме
(25) Помогите мне пожалуйста, у меня проблемы с вашей обработкой.
30. MarSeN 987 21.04.20 10:57 Сейчас в теме
31. user1345957 21.04.20 17:07 Сейчас в теме
(30)1С не видит установленный OWC10 и OWC11.
32. MarSeN 987 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 49 12.05.14 00:09 Сейчас в теме
По-моему отличная вещь.
Если клиенты платят, то почему бы не сделать и Excel на форме.

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