Выгрузка в OpenOffice Calc. Платформа 7.7. Формирование прайса и формы заказа

Программирование - Практика программирования

Выгрузка в OpenOffice Calc (форматирование, формулы, гиперссылки, закрепление областей, добавление листов, удаление сетки).

Сохранение табличных документов в формате XLS штатными средствами 1С приводит к частичной потере форматирования. Правильные программеры и их нежно любимые подруги используют для этого внешнюю компоненту Yoksel
http://yoksel.net.ru/HomePage
Кроме того, Yoksel позволяет добавлять листы в файл XLS.

Прочие вкусности и полезности можно произвести, используя психоделический синтаксис, которому правильного названия не знаю. 
Но слова MSScriptControl, language = "javascript" и даже com.sun.star.ServiceManager там точно были. 

К публикации приаттачен архив каталога информационной базы с демонстрационной конфигурацией 1С:Торговля.
Вход Администратором без пароля.
Через меню «Сервис – Дополнительные возможности» пытливому взгляду доступны две внешних обработки.

  • Первая демонстрирует возможности выгрузки в простенькую таблицу (скриншот). В процессе работы на короткое время показывается временный файл. Если его делать visible(0), формулы и гиперссылки не выгружаются.  
  • Вторая обработка – выгрузка в XLS файл нескольких вариантов прайс-листа и проформ заказа товара. 

Для корректной работы второй обработки в конфигурацию внесены микроскопические изменения:

  • Справочник Номенклатура
    •   Реквизит ВебСсылкаОписание (строка неограниченной длины)
  • Новый справочник УсловияСкидок (меню «Справочники – Цены и налоги – Условия скидок»)
    •   Реквизиты СуммаОтгрузки, ПроцентСкидки


Итак, варианты прайса:

  1. Обычный прайс по выбранному типу цен.
  2. Прайс по скидками – цена товара изменяется в зависимости от объема заказа. (скриншот)
  3. Проформа заказа товара (скриншот). Клиент указывает желаемое количество товара, программа считает общую сумму заказа и находит на втором листе колонку цен, соответствующую этой сумме. Заказ пересчитывается по новым ценам. Повторный пересчет не делается, т.е. зацикливания не будет.
    Одновременно вычисляется объем (в куб.м) заказа, логисты любят эту цифру. Для хранения объема единицы товара используется поле «Вес» единицы измерения.
    Маленькая хитрость. Второй лист, 7 строка, колонки 5 и далее – белый фон, белый шрифт. Но там живут цифры, нужные для расчетов.
  4. Специальный прайс для конкретного клиента. Цена берется по последней отгрузке этому клиенту. Если отгрузки не было – то базовая цена без скидки.


Несколько общих замечаний. 

Файлы внешней компоненты Yoksel надо поместить в каталог информационной базы (SpreadSheet.dll и файл Синтакс-Помощника yoksel.als). Внешняя компонента не требует регистрации в реестре Windows, но первый запуск 1С с ее загрузкой надо сделать с правами администратора.

Форматирование шрифта гиперссылок не обязательно, но это красиво. Лучше манной каши с винегретом.
Удалить сетку (SheetGrid) не всегда удается. На одних компьютерах работает, на других не очень. 
При повторном формировании отчетов указывайте новое имя или закрывайте ранее открытый файл XLS.
Офис 2007 иногда ругается на ошибку DDE при открытии файла, однако сам файл создается корректно, можно его посмотреть руками.

Ресурсы по теме

http://www.citforum.ru/programming/delphi/openoffice/

http://articles.org.ru/cn/showdetail.php?cid=6064

http://api.openoffice.org/docs/common/ref/com/sun/star/i18n/NumberFormatIndex.html#SYSTEM

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

Наименование Файл Версия Размер
Архив каталога информационной базы
.zip 4,27Mb
28.10.09
146
.zip 4,27Mb 146 Скачать бесплатно
Внешняя компонента Yoksel
.zip 1,04Mb
28.10.09
113
.zip 1,04Mb 113 Скачать бесплатно

См. также

Комментарии
1. Артур Аюханов (artbear) 865 30.10.09 17:19 Сейчас в теме
Непонятно, при чем здесь OpenOffice Calc ? в описании ни слова о нем не сказано, только в названии!
2. Александр Шпак (a_shpak) 44 30.10.09 17:54 Сейчас в теме
Технология работает, если выгруженный файл открывать OpenOffice'ом.
MS Office не требуется, хотя файл откроется и под ним.
Синтаксис, характерный для MS, не будет фунциклировать под ОО.
В тексте модуля выгрузки есть закомментаренный фрагмент (копировал из записанных макросов). Ощутите разницу.

=LOOKUP ($J$5;$'прайс со скидками '.$E$7:$V$7;$'прайс со скидками '.E10:V10) //OOO

=ПРОСМОТР($J$5;'прайс со скидками '!$E$7:$V$7;'прайс со скидками '!E10:V10) //MSO

В остальном формат скриптов, наверное, одинаков.
А вообще... Если честно, рожал методом научного тыка. Есть результат, он дышит. Нужны ваши поправки и комментарии. Реально нужны.
3. Владислав Миронов (gremlin1978) 18.01.10 05:38 Сейчас в теме
Поставь ООО и всё сразу встанет на свои места временный файл точно по опенофис рисует
Оставьте свое сообщение