Имя: Пароль:
1C
1С v8
Вывод табличного документа
,
0 Bot002
 
11.09.17
15:43
Здравствуйте.

Подскажите, пожалуйста, как оформить макет и организовать его вывод в табличный документ, чтобы получить следующую табличку:

https://hkar.ru/QL0v

Может пример у кого ни будь есть?
1 lodger
 
11.09.17
16:11
есть вариации.
например, самый глупый:
0) узнать полный перечень работ (их кол-во будет максимальным числом подстрок)
1) налепить областей с количеством подстрок от 1 до числа из 0)
2) при печати определять кол-во различных работ и выбирать область с нужным количеством подстрок.
2 Bot002
 
11.09.17
16:13
(1) А склеить их как?
3 lodger
 
11.09.17
16:14
(2) ТабДок.Вывести(ВыбраннаяОбласть);
4 Bot002
 
11.09.17
16:16
(3) ? Нужно будет вывести большую область (с услугой) и прилепить к ней остальные (с работой). Смутно представляю как это можно сделать.
5 Bot002
 
11.09.17
16:17
(3) А. Может имелось в виду - заготовить их все вместе заранее...
6 lodger
 
11.09.17
16:17
(4) внимательно перечитай (1)
7 Bot002
 
11.09.17
16:19
(6) А программно "1) налепить областей с количеством подстрок от 1 до числа из 0)" можно?
8 lodger
 
11.09.17
16:20
(7) это делается в макете вручную.
а вообще кури синтакс помощник:
ТабличныйДокумент (SpreadsheetDocument)
Присоединить (Join)
там даже пример есть.
9 Bot002
 
11.09.17
16:23
(8) Смотрю. Спасибо.
10 lodger
 
11.09.17
16:25
а если включить голову, то можно совместить (8) и (1) =>
нарисовать 2 строчки:
1) с обводкой по верху и вертикалям и местом для "услуга"
2) с обводкой по вертикался, с пустым полем вместо "услуга"
3) пустые поля с обводкой по верху для закрытия таблицы.

алгоритм вывода такой:

выводим область 1, заполнить услуга работы цифры
потом область 2, заполнить работы цифры
потом область 2, заполнить работы цифры
выводим область 1, заполнить услуга работы цифры
потом область 2, заполнить работы цифры
выводим область 3
11 lodger
 
11.09.17
16:25
(10) 3 конечно же. обозвать областями.
12 Bot002
 
11.09.17
16:27
(10) Если название услуги длинное - область 1 будет растянута по вертикали.
13 Bot002
 
11.09.17
16:32
(10) Я реализовал что то подобное + разбивал услугу на куски, которые выводил в "область 2" - но подумал, что должно быть решение лучше.
14 lodger
 
11.09.17
16:41
в (10) оказывается присоединить то и не использовано
можно:
1) нарисовать в макете несколько областей разной высоты с объединенными ячейками.
2) перед выводом определять сколько строчек надо.
3) выбрать область нужной высоты.
4) вывести большую область слева.
самый важный 5) создать дополнительный табдок, в него циклично вывести подстроки
не менее важный 6) присоединить кусочек из 5) к 4)
15 Bot002
 
11.09.17
16:45
(14) "6) присоединить кусочек из 5) к 4)" - вот это то и вызывает больше всего вопросов. Сижу. Думаю)
16 breezee
 
11.09.17
17:09
(0) СКД не предлагать?
17 Bot002
 
11.09.17
17:10
(16) Спасибо, нет.
18 kubik_live
 
11.09.17
17:21
(17) А зря, СКД поможет
19 Bot002
 
11.09.17
17:22
Толком ещё не разобрался, на кажется, что то получается:

&НаКлиенте
Процедура Команда1(Команда)
    ТабДок = Новый ТабличныйДокумент;
    Команда1НаСервере(ТабДок);
    ТабДок.ИтогиСправа = Истина;
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать();
КонецПроцедуры

&НаСервере
Процедура Команда1НаСервере(ТабДок)
Секция = ТабДок.ПолучитьОбласть("R1C1:R5C1");
ТабДок.НачатьАвтогруппировкуКолонок();
Область = Секция.Область("R1C1:R5C1");
Область.Объединить();
Область.ВертикальноеПоложение = ВертикальноеПоложение.Верх;
Секция.Область("R1C1:R2C1").Текст = "Параметр";
ТабДок.Вывести(Секция);    

ТабДок1 = Новый ТабличныйДокумент;
ТабДок1.НачатьАвтогруппировкуКолонок();
Секция1 = ТабДок1.ПолучитьОбласть("R1C1");
Секция1.Область().Текст = "А1";
ТабДок1.Вывести(Секция1);
Секция1 = ТабДок1.ПолучитьОбласть("R1C1");
Секция1.Область().Текст = "А2";
ТабДок1.Вывести(Секция1) ;
Секция1 = ТабДок1.ПолучитьОбласть("R1C1");
Секция1.Область().Текст = "А3";
ТабДок1.Вывести(Секция1);

ТабДок.Присоединить(ТабДок1);
КонецПроцедуры
20 Bot002
 
11.09.17
17:24
(8) Спасибо ещё раз.