gifts2017

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

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

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

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

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

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


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

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

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

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

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

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