Имя: Пароль:
1C
1C 7.7
v7: Перенос по строкам в объединенных ячейках
0 pofigos
 
21.10.13
11:02
Всем доброе утро...

Прошу помощи.. в 1С в печатных формах все работает красиво. Перенос по строкам переносит, форма выглядит прекрасно... как только сохраняешь в Excel, все.. трындец... перенос по строкам в объединенных ячейках не работает. При всем при этом, при создании в ручную таблицы Excel все в порядке. Есть ли решения данной проблемы?
1 Ёпрст
 
21.10.13
11:03
ячейки объеденены по горизонтали , или по вертикали ?
2 pofigos
 
21.10.13
11:04
(1) по горизонтали. Форма ТТН например. в строке Наименование объединено 4 ячейки.
3 ADirks
 
21.10.13
11:10
Лучше Йокселем сохранять
4 pofigos
 
21.10.13
11:12
(3) я так понимаю глТаб.Записать(ИмяФайла,0);

Минуту, проверю... но вроде проблема оставалась.
5 pofigos
 
21.10.13
11:12
(4)глТаб.Записать(ИмяФайла,1);
6 pofigos
 
21.10.13
11:16
(3) Не пошло. беда осталась та же.
7 Voronve
 
21.10.13
11:18
MS так открывает файлы клюшек. LO открывает корректно
8 pofigos
 
21.10.13
11:20
(7) LibreOffice я правильно понимаю?
9 Bigbro
 
21.10.13
11:21
сложно форматированные тблицы в эксель всегда криво сохранялись.
попробуйте в mxl сохранить и конвертнуть потом. с помощью той же 1с-кой работы с файлами например
10 Voronve
 
21.10.13
11:21
(8) Угу
11 Ёпрст
 
21.10.13
11:22
(2) выкини все объединения, замени на галку - "по выделенным столбцам", забудь о проблеме
12 KishMish
 
21.10.13
11:25
(0) в екселе не работает перенос строк в объединенных ячейках.
по наводке из инетов я писал такой код в макросе, но переделать его под ком-объект без проблем.
он сначала делает одну ячейку по размерам ОБЪЕДИНЕННОЙ ячейки, вставляет туда текст и WRAP - считает высоту полученной ячейки.
потом устанавливает ее принудительно строке, в которой эта ячейка есть.
не совсем то что тебе нужно. но может пригодится


Sub AcrAutoFitRows(ThusRange As Range)
    Dim MergedCellRgWidth As Long
    Dim OldRowHeight As Long

    If ThusRange.MergeCells Then
        OldRowHeight = ThusRange.Rows.RowHeight
        OldScreenUpdating = Application.ScreenUpdating
          Application.ScreenUpdating = False
          rngWidth = ThusRange.Item(1, 1).ColumnWidth
          MergedCellRgWidth = 0
          
          For Atom = 1 To ThusRange.Columns.Count
            MergedCellRgWidth = MergedCellRgWidth + Val(ThusRange.Item(1, Atom).ColumnWidth)
          Next Atom
         'MsgBox (MergedCellRgWidth)
          ThusRange.UnMerge
          ThusRange.Item(1, 1).ColumnWidth = MergedCellRgWidth
          ThusRange.Rows.AutoFit
          possNewRowHeight = ThusRange.Rows.RowHeight
          ThusRange.Item(1, 1).ColumnWidth = rngWidth
          ThusRange.Merge
          If possNewRowHeight >= OldRowHeight Then
            ThusRange.Rows.RowHeight = possNewRowHeight
          Else
            ThusRange.Rows.RowHeight = OldRowHeight
          End If
          Application.ScreenUpdating = OldScreenUpdating
    Else
        ThusRange.Rows.AutoFit
    End If
End Sub
13 pofigos
 
21.10.13
11:27
(11)Это хоть и запарный вариант, но вариант, который отрабатывает на 100%....
Опробую либру для начала, если не понравится, придется править все печатные формы.

Всем спасибо за помощь.
14 ADirks
 
21.10.13
11:42
(11) у меня не работает, правда релиз 025

(6) не, Йоксель это ВК такая. пример:

оСервис = СоздатьОбъект("Сервис");
Т = 0;
оСервис.АктивныйКонтекст(Т);

Если ТипЗначенияСтр(Т) <> "Таблица" Тогда
    Предупреждение("Не могу найти таблицу для сохранения", 30);
    Возврат;
КонецЕсли;

ИмяФайла = ""; ИмяКаталога = "";
Если ФС.ВыбратьФайл(1, ИмяФайла, ИмяКаталога, "Сохранить как ...", "(*.xls)|*.xls", "xls") <> 1 Тогда
    Возврат;
КонецЕсли;
ИмяФайла = СформироватьПутьКФайлу(ИмяКаталога, ИмяФайла);

Йоксель = СоздатьОбъект("ТабличныйДокумент");
Йоксель.ЗагрузитьИзТаблицы(Т);
Йоксель.Записать(ИмяФайла, 1);


тут правда ещё FormEx используется
15 Ёпрст
 
21.10.13
11:43
(14) всмысле "не работает" ?
16 Ёпрст
 
21.10.13
11:43
релиз тоже 25..
17 ADirks
 
21.10.13
11:47
(15) если ячейка одна - то в excel'е высота строки автоматом увеличивается, как только ставишь галку "по выделенным столбцам" - то высота не увеличивается.
ни одного объединения в табличке нет (да собственно, я просто пустую создал)
18 Ёпрст
 
21.10.13
11:49
(17) та не, в экселе усё работает, не работает только "высота строки авто" при переносе с 1с-ины..
19 pofigos
 
21.10.13
11:49
(14) 27 релиз. Отрабатывает на ура. Сохранение Йокселем
Если Сервис.АктивныйКонтекст (гТаблица) = 1 Тогда
            Если ТипЗначенияСтр (гТаблица) = "Таблица" Тогда
                ИмяФайла="C:\Bases1C\Print\"+Сервис.ПолучитьGUID()+".xls";
    //            гТаблица.Записать(ИмяФайла,1);
                Документ=СоздатьОбъект("ТабличныйДокумент");
                Документ.ЗагрузитьИзТаблицы(гТаблица);
                Документ.Записать(ИмяФайла,1);
------
КонецЕсли;
КонецЕсли;
20 Ёпрст
 
21.10.13
11:49
если ставишь фиксированную высоту - усё работает.
21 Ёпрст
 
21.10.13
11:50
(19) у йокселя тоже есть "грешки"
Хотя да, почти всё только им сохраняю обычно - так быстрее.
22 pofigos
 
21.10.13
11:51
(14) Спасибо на счет пояснения ВК, Использую:
СписокКомпонент = СоздатьОбъект("СписокЗначений");
СписокКомпонент.ДобавитьЗначение("1cpp.dll");
СписокКомпонент.ДобавитьЗначение("1sqlite.dll");        
СписокКомпонент.ДобавитьЗначение("FormEx.dll");      
СписокКомпонент.ДобавитьЗначение("SpreadSheet.dll");
СписокКомпонент.ДобавитьЗначение("TurboMD.dll");
23 ADirks
 
21.10.13
11:52
(18) так в этом то и засада
отправляют люди файло контрагенту, а он там не видит нифига, потом взаимные претензии. Ну его в баню, да и быстрее, опять же.
24 pofigos
 
21.10.13
11:54
(20) Можно с этого места подробнее? На данный момент стоит автовысота в 1с. Вроде как при программном сохранение (19) все работает. Где я не так понял?
25 Ёпрст
 
21.10.13
11:54
Только вот это еще воткни:


Если ТипЗначенияСтр (гТаблица) = "Таблица" Тогда
   Возврат гТаблица;
Иначе
   Попытка
    гТаблица = гТаблица.Таблица;
        Возврат  гТаблица;
   Исключение
        Возврат "";
   КонецПопытки;
КонецЕсли;
26 Ёпрст
 
21.10.13
11:56
+25 это позволит сохранять пустые Таблицы и РВД
27 Ёпрст
 
21.10.13
11:56
ну и в вопросе сохранения файла нужно дать на выбор - pdf или xls
28 Ёпрст
 
21.10.13
11:56
формат сохранения
29 pofigos
 
21.10.13
11:57
(25) Спасибо, но думаю не пригодится. Вся эта затея для перехвата печати и перенаправления на печать через Эксель (двусторонняя с разбором по копиям).

Процедура ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду)
    Перем Конт;
    Сервис = СоздатьОбъект("Сервис");
    Версия=Сервис.ВерсияОС();
          Если Найти(Версия,"Server40")>0 Тогда
            Если пКоманда=57607 Тогда //Отправка на печать
                пЗаблокироватьКоманду=1; //Блокируем стандартную обработку    
                Если Сервис.АктивныйКонтекст(Конт) = 1 Тогда
                    ОткрытьФормуМодально("Обработка.Печать",Конт);
                    Если Конт=1 Тогда
                        Флаг=1;
                    КонецЕсли;
                КонецЕсли;                    
            КонецЕсли;
        КонецЕсли;    
КонецПроцедуры
30 Ёпрст
 
21.10.13
12:03
(29) в панели струментов добавляешь кнопарь - сохранение в эксель и вешаешь примитивную поделку на йокселе - очегь удобно, любые формы сразу в экселе иметь.
Бухи те скажут спасибо.
31 Ёпрст
 
21.10.13
12:03
ну и картинку от значка экселя туда.. чтобы помнили
32 pofigos
 
21.10.13
12:05
(30) Спасибо. В свободное время заняться можно будет.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.