Экспорт "больших" ВО в Excel

Экспорт "больших" ВО в Excel

Отчет ~27000 строк ,17 колонок экспортируется 29 минут. Попробовал сделать экспорт программно, вышел на в общем-то приемлемые 2 минуты ( само формирование отчета - 15 сек). Правда, при таком программном экспорте есть принципиальное неудобство - пользователь еще не видя отчета должен решить, нужен ему этот экспорт или нет. Может быть можно как-то открыть доступ к ячейкам уже сформированного отчета - есть же он у штатной процедуры экспорта. Это и в других случаях может быть полезно.
 
Вот функция, мы ее когда-то давно использовали:

Код:
ФУНКЦИЯ ЭкспортВЭксель(СТРОКА: колонка;ЛОГИКА: вывод_яч)
  путь = ВЫБОР_ДИР("ВЫБЕРИТЕ ДИРЕКТОРИЮ") + "\"
  ЕСЛИ путь <> "\" ТО
    дбф = БД_СОЗДАТЬ(путь + "otchet")
    инд = "A"
    ЦИКЛ ЯЧЕЙКИВ (яч = "*")
      и = 1
      ЕСЛИ ЯЧЕЙКА_СУЩ("Название",яч) И ЯЧЕЙКА["Название",яч] = "" ТО
        ПРОДОЛЖИТЬ
      ИНАЧЕ
        ЕСЛИ вывод_яч ТО
          дбф.ЗАП_ПОЛЕ(инд + СТР(и),ЯЧЕЙКАВЕРТ[яч],10)
          и++
        КОНЕЦ_ЕСЛИ
        ЦИКЛ ЯЧЕЙКИ (яч1 = "*")
          ЕСЛИ ЯЧЕЙКАГОР[яч1] = колонка ТО
            ПРОДОЛЖИТЬ
          ИНАЧЕ
            ЕСЛИ ЗНАЧ_ТЕСТ(СТР(ЯЧЕЙКА[яч1,яч])) ИЛИ СТР(ЯЧЕЙКА[яч1,яч]) = "" ТО
              длина = 15
            ИНАЧЕ
              длина = 100
            КОНЕЦ_ЕСЛИ
            дбф.ЗАП_ПОЛЕ(инд + СТР(и),УБР_ПРОБ(СТР(ЯЧЕЙКА[яч1,яч],15,АТРИБУТЫ![яч1,яч,атТочность])
              + СТР(АТРИБУТЫ![яч1,яч,атЕдиницы])) + ?(ЯЧЕЙКА[яч1,яч,1] = ПУСТО,"",
              " \ " + УБР_ПРОБ(СТР(ЯЧЕЙКА[яч1,яч,1],15,АТРИБУТЫ![яч1,яч,1,атТочность]))),длина)
            и++
          КОНЕЦ_ЕСЛИ
        КОНЕЦ_ЦИКЛА
        дбф.ЗАПИСАТЬ
      КОНЕЦ_ЕСЛИ
    КОНЕЦ_ЦИКЛА
    ВЫПОЛНИТЬ(дбф.ФАЙЛ)
    дбф.ЗАКРЫТЬ
  КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ

Добавляете в отчет:

Код:
  ЕСЛИ ВОПРОС!("Вывод в Excel") ТО
    ЭкспортВЭксель("",НЕТ)
  КОНЕЦ_ЕСЛИ
 
Соответственно, сначала запускается отчет на просмотр. Если надо в Excel, выставляется переключатель и запускается выгрузка в Excel.
 
Я делал примерно то же самое, разве что в excel не dbf открывал, а заливал через CopyFromRecordset. Речь то о другом была, хотелось бы решать вопрос нужен экспорт в excel или нет после формирования отчета, а не установкой его входных параметров. Через контекстное меню - как при вызове стандартной процедуры экспорта или еще как нибудь, но в любом случае для этого надо иметь возможность обратиться к ячейкам уже сформированного отчета.
 
Соответственно, сначала запускается отчет на просмотр. Если надо в Excel, выставляется переключатель и запускается выгрузка в Excel.
Но ведь при этом отчет заново формироваться будет? Или как-то можно ранее сформированным воспользоваться?
 
По скорости теперь "супер" - тот же отчет теперь в Excel за 65 сек уходит. Нюанс, который был не особо важен при 29 минутном экспорте - текстовые ячейки с цифровой информацией при экспорте теряют ведущие нули. При программном экспорте я слева апостроф добавлял. А здесь этим можно как-то управлять?
И - уже безотносительно экспорта - все же доступ к ячейкам сформированного отчета был бы полезен, для "настройщиков ", по крайней мере :)
 
Последнее редактирование:
Нюанс, который был не особо важен при 29 минутном экспорте - текстовые ячейки с цифровой информацией при экспорте теряют ведущие нули. При программном экспорте я слева апостроф добавлял. А здесь этим можно как-то управлять?

Ок, сделали, выложили.
 
Еще мелочи всплыли, правда совсем уж непринципиальные:
1) Включенная опция "Выделение тысяч" из настроек форматов, не оказывая влияние на ячейки самого отчета, почему-то разбивает на триады ячейки Excel, ведущие нули при этом теряются
2) некоторые строки отчета, похоже при длинных строках в ячейках, но не только и не всегда, экспортируются в 2 объединенные строки Ехсеl. Это может несколько затруднить последующее использование данных, лучше бы увеличивалась высота строки


А доступ к ячейкам отчета при такой скорости экспорта и не нужен, пожалуй - все при желании можно и из xls достать. Если когда-нибуть дойдут руки, хорошо бы в СТАРТ_ОТЧЕТ добавить параметр принудительного экспорта и синхронизировать СТАРТ_ОТЧЕТ с вызывающим бланком/топ, тогда ВО можно бы с комфортом использовать шире их нынешнего прямого предназначения
 
Еще мелочи всплыли, правда совсем уж непринципиальные:
1) Включенная опция "Выделение тысяч" из настроек форматов, не оказывая влияние на ячейки самого отчета, почему-то разбивает на триады ячейки Excel, ведущие нули при этом теряются

А вы уверены? Опция влияет как на сам отчет, так и на вид отчета при переносе в Excel. Вы не путаете с выделением тысяч в документах? И ведущие нули сейчас должны сохраняться.

2) некоторые строки отчета, похоже при длинных строках в ячейках, но не только и не всегда, экспортируются в 2 объединенные строки Ехсеl. Это может несколько затруднить последующее использование данных, лучше бы увеличивалась высота строки

Только недавно переделывали с того, что вы хотите, на то как сейчас работает.

А доступ к ячейкам отчета при такой скорости экспорта и не нужен, пожалуй - все при желании можно и из xls достать. Если когда-нибуть дойдут руки, хорошо бы в СТАРТ_ОТЧЕТ добавить параметр принудительного экспорта и синхронизировать СТАРТ_ОТЧЕТ с вызывающим бланком/топ, тогда ВО можно бы с комфортом использовать шире их нынешнего прямого предназначения

Ок, подумаем над этим.
 
1) Уточнение - в отчете опция не влияет, да и не должна, на те самые "текстовые ячейки с цифровой информацией" ( ну как бы их покороче назвать?). При экспорте, при включенной опции, такие ячейки, видимо, ошибочно принимаются за число с соответствующими последствиями. Опция ".. в документах" в подобном не замечена.

2) По ссылкке речь идет об экспорте ячеек с подъячейками, в данном отчете я их не использую. Все же, при случае, можно бы где-то настройку добавить - старый/новый варианты.
 
Может я и не по теме, но все же...
А зачем вы хотите экспортировать бланк в эксель? Почему не можете полностью обработать и как надо сформировать отчет в ИП2, средствами ИП2? Честно говоря, у своих клиентов мы этот эксель выводим как класс вредоносных программ, который часто присутствует как обязательная отрыжка остатков от 1с. Я согласен, что 1с без экселя работать не может. А в ИП2 все дополнительные правки расчетов, ВО можно практически всегда дооформить, досчитать тут же в ИП2 и распечатать, как после экселя. Это всегда будет точнее, оперативнее, проще, удобнее. Кроме того, каждый такой отчет обычно нужен для последующего анализа. А 27000 строк отчета даже просто просмотреть сложно. А как его потом анализировать человеку? Почему бы тут ему не помочь средствами вычислительной техники, ип2 наконец?:)

PS Встречали только один патологический случай, когда удаленный "руководитель" умел смотреть присланные отчеты ТОЛЬКО через Excel.:eek:
 
Что касается конкретного клиента, для которого делалась настройка, то - так уж сложилось - его сотрудники настоящие виртуозы в использовании этого дела, зачем же людей радостей жизни лишать )). Но и в общем, говоря о "вредоносных программах", Вы чересчур категоричны, мне кажется. Не умаляя достоинств ИП, все же считаю, что иногда использование эл. таблиц - при обмене даными , долгосрочном их хранении предпочтительнее. Отчет ИП - это часть программы, книгу эл.таблицы благодаря широкому распространению и высокой степени совместимости разных версий и разных продуктов (Excel,Calc) можно считать независимыми от программы данными. Если сейчас в конце года расчетчица сложит в xls лицевые счета сотрудников, то ( если носитель доживет) через NN-ое к-во лет их без труда откроет и дочь ее, и ее внучка. А попробуйте какого-нибудь проку добиться от ИБ пятнадцатилетней давности! Никого не агитирую, тем более не оправдываюсь - но у каждого свои пристрастия и взгляды.
 
Назад
Сверху