|
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) Спасибо. В свободное время заняться можно будет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |