Инфо-Предприятие - Форум
ПрограммыПоддержкаКупитьПартнерам

Вернуться   Инфо-Предприятие - Форум > Платформа разработки > Общий
Регистрация Обмен опытом Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Внимание! Этой ветке форума больше трех лет. Возможно, обсуждаемые здесь вопросы уже не актуальны. Тем не менее, Вы можете отвечать в этой теме, если при ответе поставите флажок.
  #1  
Старый 03.10.2008, 15:18
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 3,629
По умолчанию Экспорт "больших" ВО в Excel

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

Вот функция, мы ее когда-то давно использовали:

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

Код:
  ЕСЛИ ВОПРОС!("Вывод в Excel") ТО
    ЭкспортВЭксель("",НЕТ)
  КОНЕЦ_ЕСЛИ
Ответить с цитированием
  #3  
Старый 03.10.2008, 16:28
Аватар для Григорий
Григорий Григорий вне форума
Отвечатель автоматический
 
Регистрация: 08.12.2007
Адрес: Москва
Сообщений: 17,154
По умолчанию

Соответственно, сначала запускается отчет на просмотр. Если надо в Excel, выставляется переключатель и запускается выгрузка в Excel.
Ответить с цитированием
  #4  
Старый 03.10.2008, 16:35
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 3,629
По умолчанию

Цитата:
Сообщение от Григорий Посмотреть сообщение
Соответственно, сначала запускается отчет на просмотр. Если надо в Excel, выставляется переключатель и запускается выгрузка в Excel.
Но ведь при этом отчет заново формироваться будет? Или как-то можно ранее сформированным воспользоваться?
Ответить с цитированием
  #5  
Старый 03.10.2008, 22:12
Аватар для Григорий
Григорий Григорий вне форума
Отвечатель автоматический
 
Регистрация: 08.12.2007
Адрес: Москва
Сообщений: 17,154
По умолчанию

Хорошо, мы подумаем над оптимизацией экспорта.
Ответить с цитированием
  #6  
Старый 03.10.2008, 23:03
Аватар для Григорий
Григорий Григорий вне форума
Отвечатель автоматический
 
Регистрация: 08.12.2007
Адрес: Москва
Сообщений: 17,154
По умолчанию

Оптимизировали. Версию выложили. Проверяйте!
Ответить с цитированием
  #7  
Старый 04.10.2008, 00:28
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 3,629
По умолчанию

По скорости теперь "супер" - тот же отчет теперь в Excel за 65 сек уходит. Нюанс, который был не особо важен при 29 минутном экспорте - текстовые ячейки с цифровой информацией при экспорте теряют ведущие нули. При программном экспорте я слева апостроф добавлял. А здесь этим можно как-то управлять?
И - уже безотносительно экспорта - все же доступ к ячейкам сформированного отчета был бы полезен, для "настройщиков ", по крайней мере

Последний раз редактировалось Михаил,Тверь, 05.10.2008 в 15:40. Причина: уточнение
Ответить с цитированием
  #8  
Старый 05.10.2008, 16:04
Аватар для Григорий
Григорий Григорий вне форума
Отвечатель автоматический
 
Регистрация: 08.12.2007
Адрес: Москва
Сообщений: 17,154
По умолчанию

Цитата:
Сообщение от М.Рабинович Посмотреть сообщение
Нюанс, который был не особо важен при 29 минутном экспорте - текстовые ячейки с цифровой информацией при экспорте теряют ведущие нули. При программном экспорте я слева апостроф добавлял. А здесь этим можно как-то управлять?
Ок, сделали, выложили.
Ответить с цитированием
  #9  
Старый 05.10.2008, 18:14
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 3,629
По умолчанию

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


А доступ к ячейкам отчета при такой скорости экспорта и не нужен, пожалуй - все при желании можно и из xls достать. Если когда-нибуть дойдут руки, хорошо бы в СТАРТ_ОТЧЕТ добавить параметр принудительного экспорта и синхронизировать СТАРТ_ОТЧЕТ с вызывающим бланком/топ, тогда ВО можно бы с комфортом использовать шире их нынешнего прямого предназначения
Ответить с цитированием
  #10  
Старый 06.10.2008, 03:27
Аватар для Григорий
Григорий Григорий вне форума
Отвечатель автоматический
 
Регистрация: 08.12.2007
Адрес: Москва
Сообщений: 17,154
По умолчанию

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

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

Цитата:
А доступ к ячейкам отчета при такой скорости экспорта и не нужен, пожалуй - все при желании можно и из xls достать. Если когда-нибуть дойдут руки, хорошо бы в СТАРТ_ОТЧЕТ добавить параметр принудительного экспорта и синхронизировать СТАРТ_ОТЧЕТ с вызывающим бланком/топ, тогда ВО можно бы с комфортом использовать шире их нынешнего прямого предназначения
Ок, подумаем над этим.
Ответить с цитированием
  #11  
Старый 06.10.2008, 15:06
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 3,629
По умолчанию

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

2) По ссылкке речь идет об экспорте ячеек с подъячейками, в данном отчете я их не использую. Все же, при случае, можно бы где-то настройку добавить - старый/новый варианты.
Ответить с цитированием
  #12  
Старый 18.12.2008, 09:49
Аватар для Виктор
Виктор Виктор вне форума
Завсегдатай
 
Регистрация: 13.12.2007
Адрес: Из Советского Союза
Сообщений: 2,259
По умолчанию

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

PS Встречали только один патологический случай, когда удаленный "руководитель" умел смотреть присланные отчеты ТОЛЬКО через Excel.
__________________
С уважением, Виктор
Ответить с цитированием
  #13  
Старый 18.12.2008, 22:42
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 3,629
По умолчанию

Что касается конкретного клиента, для которого делалась настройка, то - так уж сложилось - его сотрудники настоящие виртуозы в использовании этого дела, зачем же людей радостей жизни лишать )). Но и в общем, говоря о "вредоносных программах", Вы чересчур категоричны, мне кажется. Не умаляя достоинств ИП, все же считаю, что иногда использование эл. таблиц - при обмене даными , долгосрочном их хранении предпочтительнее. Отчет ИП - это часть программы, книгу эл.таблицы благодаря широкому распространению и высокой степени совместимости разных версий и разных продуктов (Excel,Calc) можно считать независимыми от программы данными. Если сейчас в конце года расчетчица сложит в xls лицевые счета сотрудников, то ( если носитель доживет) через NN-ое к-во лет их без труда откроет и дочь ее, и ее внучка. А попробуйте какого-нибудь проку добиться от ИБ пятнадцатилетней давности! Никого не агитирую, тем более не оправдываюсь - но у каждого свои пристрастия и взгляды.
Ответить с цитированием
  #14  
Старый 03.10.2008, 16:28
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 3,629
По умолчанию

Я делал примерно то же самое, разве что в excel не dbf открывал, а заливал через CopyFromRecordset. Речь то о другом была, хотелось бы решать вопрос нужен экспорт в excel или нет после формирования отчета, а не установкой его входных параметров. Через контекстное меню - как при вызове стандартной процедуры экспорта или еще как нибудь, но в любом случае для этого надо иметь возможность обратиться к ячейкам уже сформированного отчета.
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:04.


vBulletin® Version 3.6.8.
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Перевод: zCarot
© 1999 Новасофт