bdd2

7.7 СуперЛист: Маленький Excel в вашей 1С!

Опубликовал Алексей Плутенко (Noy) в раздел Обработки - Универсальные обработки

Иногда так хочется в отчете получить автосумму или простенькое условие Если(А1>0;А1;0)...
Данная обработка позволит прямо в 1С получить некоторые преимущества, которыми нас балует Excel.

С помощью этой обработки можно редактировать электронные таблицы. Есть возможность сохранять/открывать таблицы (формат xml).

Если у вас установлен Microsoft Office то обработка позовляет делать импорт/экспорт с Excel-ем.

Поддерживается конвертация "на лету" из/в стандартный для 1С формат mxl.

 

Требования:

Внешние компоненты 1cpp.dll скачать можно: http://www.1cpp.ru

formex.dll скачать можно: http://www.dorex.ru/?projects&formex

и Веб-Компоненты Microsoft Office (Office 2003 Add-in: Office Web Components) скачать можно: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7287252c-402e-4f72-97a5-e0fd290d4b76

Если у вас установлен Microsoft Office, то Веб-Компоненты скорее всего качать не придется.

Наличие самого Microsoft Office не обязательно.

Так же прикладываю обработку, проверяющую наличие всех необходимых для обработки компонент.

 

Из недостатков: работает только с простыми типами данных (строка, число, дата...), нет возможности печати (только через mxl или xls), иногда немного криво переносится форматирование.

 

ЗЫ Для знающих: обработка является оболочкой для OWC11.spreadsheet

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

Наименование Файл Версия Размер
-
.1245854426 192,50Kb
10.10.14
311
.1245854426 192,50Kb 311 Скачать
Проверка совместимости
.1245854456 37,50Kb
10.10.14
104
.1245854456 37,50Kb 104 Скачать

См. также

Добавить вознаграждение
Комментарии
1. mdbm (mdbm) 187 24.06.09 22:02 Сейчас в теме
Давно уже подумывал как бы пользователям отрубить рабочий стол и все остальное, кроме 1С )))
И как раз такое нужно было ....
Завтра потрогаю
2. Александра (Alexandra) 25.06.09 04:33 Сейчас в теме
Присоединяюсь к предыдущему комменту :)
3. boks (boks) 1 25.06.09 08:26 Сейчас в теме
4. Алексей Плутенко (Noy) 1053 25.06.09 09:03 Сейчас в теме
(1,2) Могу порекомендовать еще посмотреть DSOFramer, но он без установленого офиса "не взлетит".
Вот тут есть пример использования: http://infostart.ru/projects/2378/
5. Brr (brr) 146 25.06.09 09:40 Сейчас в теме
6. Алексей Плутенко (Noy) 1053 25.06.09 09:44 Сейчас в теме
(5) только из xls или mxl (лишний раз кликнуть нужно:)
7. cs25 (cs25) 80 25.06.09 09:48 Сейчас в теме
8. Альтаир (Altair777) 633 25.06.09 11:12 Сейчас в теме
(0) Привел эту разработку в качестве примера :-)
http://infostart.ru/blogs/1134/?p=1#comm1
9. Алексей Плутенко (Noy) 1053 25.06.09 11:23 Сейчас в теме
10. steban (steban) 71 25.06.09 14:52 Сейчас в теме
когда-то делал генерацию таблиц в формате XMLSS из шаблонов:
http://www.1cpp.ru/forum/YaBB.pl?num=1206552116
Donat; JohnyDeath; +2 Ответить 1
11. Алексей Плутенко (Noy) 1053 25.06.09 15:49 Сейчас в теме
(10) У меня тоже была идея сделать все в виде КОП (заодно и научиться их делать)...
но к сожалению полной замены mxl все равно не получиться
12. Владимир Денисов (den_vladimir) 90 01.07.09 07:07 Сейчас в теме
добавь проверку загрузки внешних библиотек
13. Владимир Исаев (chessman) 7 01.07.09 10:34 Сейчас в теме
ОФФ: В ЗиКе использую DSOFramer для печати приказов из Word'a. Глюк с отрисовкой кнопок удалось побороть через Плавающую форму.
Чем хорош DSO, в нем можно открывать любые офисные доки.
14. Алексей Плутенко (Noy) 1053 01.07.09 10:52 Сейчас в теме
(13) а как борешься с глюком самой плавающей формы (слетает позиционирование в СписокЗначений.ВыбратьЗначение(...)) ?
15. Владимир Исаев (chessman) 7 01.07.09 11:01 Сейчас в теме
;-) особо не заморачиваюсь, просто способ выбора заменил на стандартный, т.е. в отдельном окне.
16. igor_gk (igor_gk) 44 01.07.09 17:07 Сейчас в теме
17. GIZmo (GIZmo) 270 04.07.09 14:53 Сейчас в теме
Вопрос: "А сколько колонок можно ввести в этот <Excel>??? т.к. в стандартном 2003 есть ограничение = 255"
18. Алексей Плутенко (Noy) 1053 06.07.09 10:28 Сейчас в теме
(17) Точно не скажу, но по-моему как в 2007 екселе (тоесть больше чем 255)
19. Olga (Джиневра) 10.07.09 13:58 Сейчас в теме
Два дня закачивала обработки :) Ох уж мне это нововведение с рейтингами!... Это я к тому, что лучше было бы одним архивом выложить. Просто ПроверкаСовместимости тоже понадобилась, без нее не могла понять - чего не хватает.
Сама обработка - просто супер :) Пока ничего не слетало и не выбивало. Жалко только, что Печати сразу нету.
20. Алексей Плутенко (Noy) 1053 10.07.09 15:24 Сейчас в теме
(19) Я вам открою маленький секрет - если нет возможно скачать из-за рейтинга - можно всегда написать письмо автору с просьбой выслать файлик. Во всяком случае я обычно не отказываю ;)
21. venik (vinogradov@brooms.com.ua) 13.07.09 15:08 Сейчас в теме
Ничего. Прикольно. Главное - при установке нифига думать не надо...
;)
Спасибо. Думаю, пригодится.
22. Владимир Исаев (chessman) 7 11.09.09 14:05 Сейчас в теме
(14) Глюк решил, через 1c++ и DynamicWrapperX
23. Алексей Плутенко (Noy) 1053 11.09.09 15:37 Сейчас в теме
(22) Владимир, можно чуть-чуть подробнее?
24. vip (vip) 11.09.09 16:29 Сейчас в теме
(22)(23) Если это про плавающую форму, то да, поподробней.
Основная неприятность это то, что окно плавающей формы продолжает жить после ее закрытия (хэндл не уничтожается).
25. Владимир Исаев (chessman) 7 12.09.09 22:14 Сейчас в теме
(24) vip, я имел в виду глюк с выбором из обычного списка значений (через сервис вообще перестает работать).
26. Владимир Исаев (chessman) 7 12.09.09 22:16 Сейчас в теме
(23) Может я не правильно выразился, речь про глюк обычного списка значений, который "уезжает" после открытия плавающей формы. Если это интересно, то готов поделиться мыслями.
27. Владимир Исаев (chessman) 7 12.09.09 22:18 Сейчас в теме
(24) vip, ты же сам пользуешься DestroyWindow, оно же убивает хендл.
28. vip (vip) 13.09.09 07:34 Сейчас в теме
(27) А...
Я думал, может ты чего другое придумал.
29. Алексей Плутенко (Noy) 1053 15.09.09 09:15 Сейчас в теме
(26)Да, именно средство борьбы с этим глюком и интересует! Ни разу с DynamicWrapperX не сталкивался - можно хоть саму идею озвучить?
30. Владимир Исаев (chessman) 7 15.09.09 11:24 Сейчас в теме
(29)
Про DynamicWrapperX - http://www.script-coding.info/dynwrapx.html
Посмотри, как я окно двигаю вот тут
http://www.1cpp.ru/forum/YaBB.pl?num=1241706959

со списком значений тоже самое делаю, единственное он будет "моргать"
31. Алексей Плутенко (Noy) 1053 15.09.09 11:27 Сейчас в теме
32. Владимир Исаев (chessman) 7 02.10.09 10:41 Сейчас в теме
33. Алексей Плутенко (Noy) 1053 02.10.09 11:11 Сейчас в теме
(32) Я чуть по другому обошел проблему:
подменил везде ВыбратьЗначение на функцию:

Функция глВыбратьЗначение(Список,Значение,Заголовок="",Позиция="",Таймаут=0,Способ=0) Экспорт
Если Способ=0 Тогда
Возврат Список.ВыбратьЗначение(Значение,Заголовок,Позиция,Таймаут,Способ);
КонецЕсли;
Сервис=СоздатьОбъект("Сервис");
Возврат(Сервис.ВыбратьЗначение(Список,Значение,Заголовок,,2));
КонецФункции

менюшка позиционируется под координаты мыши, единственный глюк - плавающая форма, в момент, когда видно меню выбора становится типа "активной"...

Владимир, я чуть понаглею: не поделитесь рабочим примером, как вы уничтожаете плавающую форму?
34. Владимир Исаев (chessman) 7 02.10.09 11:19 Сейчас в теме
(33) Так а эта конструкция будет работать, если ее вызвать 2-й раз? У меня после хотя бы одного открытия Плавающей формы Сервис::ВыбратьЗначение не работает, т.е. ничего не появляется.

По поводу примера - да мне что жалко что ли :)

Wrap = СоздатьОбъект("DynamicWrapperX");
Wrap.Register("user32.dll", "DestroyWindow", "i=h", "r=l");
Процедура Деструктор()     
	РасшФорма = СоздатьОбъект("РасширениеФормы");
	РасшФорма.УстановитьФорму(hWnd.Форма);
	Wrap.DestroyWindow(РасшФорма.Дескриптор);
КонецПроцедуры
...Показать Скрыть


Только учти, что форма уничтожается, если она встроена в конфу.
35. Алексей Плутенко (Noy) 1053 02.10.09 11:45 Сейчас в теме
(34) Спасибо. hWnd - это контекст? Можно этот код размещать в самой плавающей форме (типа призакрытии())?

у меня эта конструкция работает. из ВК загружены V7plus, dilamail, 1C++ (3.0.1.22), Formex (2.0.5.93). Работает стабильно, но у меня только одна плавающая форма, которая стартует и закрывается одновременно с 1С...
36. Владимир Исаев (chessman) 7 02.10.09 11:53 Сейчас в теме
Аааа....тогда понятно, а вот попробуй где-нить открыть хотя бы один раз плавающую форму, а потом попытайся сделать выбор -Сервис::ВыбратьЗначение.

hWnd - это контекст
37. Владимир Исаев (chessman) 7 02.10.09 11:58 Сейчас в теме
(35) Забыл номер поста проставить.
38. Алексей Плутенко (Noy) 1053 02.10.09 12:19 Сейчас в теме
(36) сорри, но мне не понятно.
У меня сейчас в 1С висит обработка, почти аналогичная http://infostart.ru/public/57767/ в режиме плавающей формы. Если я делаю список.Выбратьзначение - меню привязывается к активному элементу плавающей формы, а если делаю как в (34), то меню привязывается к координатам мыши - не совсем то, чего хотелось бы (пользователи-клавиатурщики жалуются немного), но лучше чем в первом случае.
тоесть выбор значения работает в обоих случаях, но с разными глюками.

P.S. я имею ввиду только случай с выбором значения ввиде меню (способ=0)
39. Владимир Исаев (chessman) 7 02.10.09 12:37 Сейчас в теме
(38) А если так сделать
Сервис=СоздатьОбъект("Сервис");
Возврат(Сервис.ВыбратьЗначение(Список,Значение,Заголовок,,0));
40. Алексей Плутенко (Noy) 1053 02.10.09 12:55 Сейчас в теме
(39) :) Так не пойдет конечно. Я имел ввиду, что я подменяю способ=0 на способ=2 из метода Сервиса...

в 38 посте опечатался: вместо "делаю как в (34)" нужно "делаю как в (33)".

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