| 
    
            
         
         | 
    
    
  | 
v7: Проблема при сохранении отчёта в ексель, высота строки | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        evgpinsk_    
     01.11.19 
            ✎
    12:42 
 | 
         
        сохраняем счёт-фактуру из 1с в формат xlc:
 
        Таб.Записать(ИмяФайла,"xls"); в счёт фактуре название товара длинное, не влазит в ячейку, соответственно в 1с название переносится на новую строчку, т.е. получается из двух строк. Проблема в том, что в екселевском файле высота строки получается только 8мм, и название товара видно только одна строка. Каким образом решить проблему?  | 
|||
| 
    1
    
        ДенисЧ    
     01.11.19 
            ✎
    12:51 
 | 
         
        После сохранения программно открыть документ, пробежать по строкам и установить     
         | 
|||
| 
    2
    
        Масянька    
     01.11.19 
            ✎
    12:52 
 | 
         
        (0) 1. Растянуть строку в Excel.
 
        2. Написать процедуру сохранения через Йоксель.  | 
|||
| 
    3
    
        dedmoroz777    
     01.11.19 
            ✎
    12:52 
 | 
||||
| 
    4
    
        Амулет    
     01.11.19 
            ✎
    12:54 
 | 
         
        Не пользоваться встроенным конвертором.
 
        В нем вообще непредсказуемое, и часто не управляемое форматирование. Использовать для сохранения в Excel, например, внешнюю компоненту Йоксель (Yoksel).  | 
|||
| 
    5
    
        Амулет    
     01.11.19 
            ✎
    13:00 
 | 
         
        (4)+ Пример кода
 
        <…> Таб.ВывестиСекцию("Подвал"); Таб.ТолькоПросмотр(1); Таб.Опции(0,0,0,0); ЗагрузитьВнешнююКомпоненту ("SpreadSheet.dll"); ВыбИмяФайла=КаталогПользователя()+"Выгрузка СчФ "+СокрП(Док.НомерДок); Документ = СоздатьОбъект ("ТабличныйДокумент"); Документ.ЗагрузитьИзТаблицы(Таб); ИмяЛиста = "Лист "; НомерЛиста = 1; Конвертер = СоздатьОбъект ("КонвертерExcel"); Книга = Конвертер.Создать (); Книга.Листы.Добавить (ИмяЛиста + НомерЛиста, Документ); Книга.ПараметрыКонвертера.РаспознаватьЧисловыеЗначения = 1; Книга.Записать(ВыбИмяФайла+".xls"); //Сообщить ("Файл сохранен по адресу "+ВыбИмяФайла+".xls"); ЗапуститьПриложение(ВыбИмяФайла+".xls"); Таб.Очистить();  | 
|||
| 
    6
    
        evgpinsk_    
     01.11.19 
            ✎
    13:01 
 | 
         
        (5) Спасибо, попробую     
         | 
|||
| 
    7
    
        evgpinsk_    
     01.11.19 
            ✎
    13:06 
 | 
         
        Параллельно вопрос, через Йоксель возможно "Прямое чтение файлов Excel"
 
        Как со скоростью? Сейчас я читаю через Connection.Open(СтрокаПодключения); rs = CreateObject("ADODB.Recordset"); и далее построчное чтение екселевского файла. Получается долго. 3000 строк - (10-15 секунд) Может Йоксель быстрее?  | 
|||
| 
    8
    
        Злопчинский    
     02.11.19 
            ✎
    02:50 
 | 
         
        а сделать автовысоту строки в печформе счетфактуры религия запрещает? или я что-то не понял?     
         | 
|||
| 
    9
    
        Злопчинский    
     02.11.19 
            ✎
    02:51 
 | 
         
        (7) ну, йоксель читает эксель.
 
        насколько быстро - я хз. то что читал - меня по скорости устраивает  | 
|||
| 
    10
    
        evgpinsk_    
     02.11.19 
            ✎
    11:03 
 | 
         
        (8) Автовысота в 1с есть. Но при выгрузке отчёта в XLS эта автовысота не сохраняется, при открытии файла в екселе все строки = 8мм.
 
        А вот если сохранять через йоксель - всё ок, и высота строк сохраняется и "По ширине листа" работает тоже. Клас  | 
|||
| 
    11
    
        Злопчинский    
     02.11.19 
            ✎
    14:59 
 | 
         
        (10) точно, у меня все на йокселе давно сохраняется.
 
        ступил  | 
|||
| 
    12
    
        evgpinsk_    
     02.11.19 
            ✎
    23:40 
 | 
         
        (9) Йоксель  читает из xls только в mxl?
 
        Или он может заполнить таблицу значений из xls ?  | 
|||
| 
    13
    
        Djelf    
     03.11.19 
            ✎
    09:34 
 | 
         
        (12) Может и в тз http://yoksel.net.ru/Ob'ektyVstroennogoJazyka/Jjoksel'KonverterVTablicuZnachenijj
 
        Но не всегда удачно получается.  | 
|||
| 
    14
    
        Провинциальный 1сник    
     03.11.19 
            ✎
    10:54 
 | 
         
        (8) Автовысоту в 7.7 лучше не включать, если предполагаемое количество строк с автовысотой больше сотни. Иначе дичайше тормозит сохранение в эксель. Там какая-то экспоненциальная зависимость.     
         | 
|||
| 
    15
    
        Злопчинский    
     03.11.19 
            ✎
    13:22 
 | 
         
        (14) это если использовать штатное сохрангение.
 
        но эту проблему устраняет мокселдоктор патч от ромикса ВК, или сохранять в эксель тем же самым йокселем  | 
|||
| 
    16
    
        Злопчинский    
     03.11.19 
            ✎
    13:22 
 | 
         
        (12) можно в тз, порядка 5 операторов     
         | 
|||
| 
    17
    
        evgpinsk_    
     03.11.19 
            ✎
    14:03 
 | 
         
        (16) Абалдеть. Файл XLS 6300 строк
 
        Через ADODB читает 36 секунд: СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(Путь)+";Extended Properties=""Excel 8.0;HDR=No; IMEX=1;"""; Connection = СоздатьОбъект("ADODB.Connection"); Connection.Open(СтрокаПодключения); Пока rs.Eof() = 0 Цикл ТаблПрихода.НоваяСтрока(); rs.MoveNext(); КонецЦикла; через Йоксель - 0,18 секунд  | 
|||
| 
    18
    
        evgpinsk_    
     04.11.19 
            ✎
    00:15 
 | 
         
        (16) ЧТото не нахожу, как через конвертер загружать конкретный Лист екселя, а не первый по умолчанию?     
         | 
|||
| 
    19
    
        Провинциальный 1сник    
     04.11.19 
            ✎
    07:18 
 | 
         
        (15) Это ты пользователю скажи, который формирует отчет по продажам на 20000 строк и пытается его сохранить в эксель штатными средствами. Суть в том, что нельзя в 7.7 вообще использовать автовысоту в макетах, кроме печатных форм документов. Иначе задолбают вопросы "у меня 1с зависла".     
         | 
|||
| 
    20
    
        ДенисЧ    
     04.11.19 
            ✎
    07:21 
 | 
         
        (19) Просто пользователю нужно сказать, что так делать нельзя. И всё, что он делает - остаётся на его совести. Можно сказать ему это в письменном виде под роспись.     
         | 
|||
| 
    21
    
        Провинциальный 1сник    
     04.11.19 
            ✎
    07:45 
 | 
         
        (20) Сказать можно. Но всё равно найдется "забыл". Проще переделать макеты и не иметь проблем с этим.     
         | 
|||
| 
    22
    
        ДенисЧ    
     04.11.19 
            ✎
    07:47 
 | 
         
        (21) Это проблемы забывца. Раз забудет, на другой раз вспомнит.     
         | 
|||
| 
    23
    
        Провинциальный 1сник    
     04.11.19 
            ✎
    08:02 
 | 
         
        (22) Их много. Кстати, был такой лозунг в своё время по охране труда "От техники безопасности - к безопасности техники!", смысл такой чтобы исключить несчастные случаи не правилами и нормами, а конструктивно.     
         | 
|||
| 
    24
    
        evgpinsk_    
     04.11.19 
            ✎
    11:04 
 | 
         
        (18) наверное детский вопрос, но не пойму, как через конвертор загружать определённый лист?     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |