![]() |
|
Как программно добавить колонки в макет? | ☑ | ||
---|---|---|---|---|
0
hasan-rusel
27.03.13
✎
06:15
|
БП 2.0
Есть макет: [IMG]http://i037.radikal.ru/1303/76/41a39d8e83e4.jpg[/IMG] первые 4 колонки не изменны, а 5 колонка будет повторяться при проверке нового подразделения, т.е. новое подразделение - новая с колонка с параметрами выборки. Подскажите пожалуйста как это реализовать ? Просто впервые сталкиваюсь с добавлением колонок... Пытался вот так, но не получается (( [CODE]Процедура КнопкаВыполнитьНажатие(Кнопка) Таблица = Новый ТабличныйДокумент ; Макет = ПолучитьМакет("Макет"); // ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); // Таблица.Вывести(ОбластьШапка); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); Секция = Таблица.ПолучитьОбласть("R1C5:R90C5"); Таблица.НачатьАвтогруппировкуКолонок(); Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ХозрасчетныйДвиженияССубконто.СубконтоДт2, | ХозрасчетныйДвиженияССубконто.Сумма, | ХозрасчетныйДвиженияССубконто.СчетКт КАК СчетКт, | ХозрасчетныйДвиженияССубконто.Период, | ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка КАК ПодразделениеКтСсылка, | ХозрасчетныйДвиженияССубконто.СуммаНУДт, | ХозрасчетныйДвиженияССубконто.СуммаНУКт, | ХозрасчетныйДвиженияССубконто.СуммаПРДт, | ХозрасчетныйДвиженияССубконто.СуммаПРКт, | ХозрасчетныйДвиженияССубконто.СуммаВРДт, | ХозрасчетныйДвиженияССубконто.СуммаВРКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто( | &НачПериода, | &КонПериода, | СчетДт = &Счет | И ПодразделениеДт.Ссылка = &Подразделение, | , | ) КАК ХозрасчетныйДвиженияССубконто | |УПОРЯДОЧИТЬ ПО | ПодразделениеКтСсылка, | СчетКт"; Запрос.УстановитьПараметр("Счет", Счет); Запрос.УстановитьПараметр("Подразделение", Подразделение); Запрос.УстановитьПараметр("НачПериода", НачалоДня(НачПериода)); Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода)); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.СубконтоДт2.Наименование = "Амортизация ОС и НМА" тогда АБУ1 = АБУ1 + Выборка.Сумма; Если не Выборка.СчетКт.Код = "20" и не Выборка.СчетКт.Код = "20.01" и не Выборка.СчетКт.Код = "20.02" и не Выборка.СчетКт.Код = "23" и не Выборка.СчетКт.Код = "23.01" и не Выборка.СчетКт.Код = "23.02" тогда АБУ2 = АБУ2 + Выборка.Сумма; КонецЕсли; КонецЕсли; Если Выборка.ПодразделениеКтСсылка <> NULL тогда Подр = Выборка.ПодразделениеКтСсылка; Если Подр <> ПД тогда ПД=Подр; // Секция = Таблица.ПолучитьОбласть("R7C5"); Секция.Область().Текст = ПД; Секция.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; Секция.Присоединить(Секция,5, ,Истина); //Таблица.Вывести(Секция,5, ,Истина); КонецЕсли; КонецЕсли; КонецЦикла; ОбластьСтрока.Параметры.АБУ1 = АБУ1; ОбластьСтрока.Параметры.АБУ2 = АБУ2; Таблица.Вывести(ОбластьСтрока); Таблица.Автомасштаб = Истина; Таблица.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; Таблица.ТолькоПросмотр = Истина; Таблица.Показать("Макет", , Истина); КонецПроцедуры [/CODE] |
|||
1
Wobland
27.03.13
✎
06:19
|
присоединить? картинку и код не глядел
|
|||
2
hasan-rusel
27.03.13
✎
06:40
|
(1) да, функцией присоединить, пытался ей, вот только не выходит, либо вообще "недостаточно памяти", либо хрень...
|
|||
3
Wobland
27.03.13
✎
06:43
|
то есть, сейчас вопрос звучит по-другому: "где у меня ошибка?"?
|
|||
4
Галахад
гуру
27.03.13
✎
06:45
|
Наверное, одинэска окуевает от того, что ее просят присоединить к таблице какой-то огрызок.
Просто понять не может. |
|||
5
Wobland
27.03.13
✎
06:47
|
Таблица.ПолучитьОбласть("R1C5:R90C5").Присоединить(Таблица.ПолучитьОбласть("R1C5:R90C5"),5, ,Истина);
я б тоже от такого прихренел |
|||
6
hasan-rusel
27.03.13
✎
06:49
|
(4) Как сделать так чтобы можно было присоединять 5 колонку в цикле ?
Как бы так: Пока цикл **** если новое подразделение тогда берем 5 колонку, параметры такие-то (5 колонка.Параметры.ПД= ПД;) выводим справа... и т.д. ?!??! |
|||
7
Wobland
27.03.13
✎
07:00
|
выводишь строку. если нужна пятая колонка, присоединяешь к ней пересечение областей (типа "ПятаяКолонка|Строка"). повторяешь итерацию...
|
|||
8
hasan-rusel
27.03.13
✎
07:00
|
(5)
Сколько сарказма... Переделал: ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); Секция = Таблица.ПолучитьОбласть("R1C5:R90C6"); Таблица.НачатьАвтогруппировкуКолонок(); Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ХозрасчетныйДвиженияССубконто.СубконтоДт2, | ХозрасчетныйДвиженияССубконто.Сумма, | ХозрасчетныйДвиженияССубконто.СчетКт КАК СчетКт, | ХозрасчетныйДвиженияССубконто.Период, | ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка КАК ПодразделениеКтСсылка, | ХозрасчетныйДвиженияССубконто.СуммаНУДт, | ХозрасчетныйДвиженияССубконто.СуммаНУКт, | ХозрасчетныйДвиженияССубконто.СуммаПРДт, | ХозрасчетныйДвиженияССубконто.СуммаПРКт, | ХозрасчетныйДвиженияССубконто.СуммаВРДт, | ХозрасчетныйДвиженияССубконто.СуммаВРКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто( | &НачПериода, | &КонПериода, | СчетДт = &Счет | И ПодразделениеДт.Ссылка = &Подразделение, | , | ) КАК ХозрасчетныйДвиженияССубконто | |УПОРЯДОЧИТЬ ПО | ПодразделениеКтСсылка, | СчетКт"; Запрос.УстановитьПараметр("Счет", Счет); Запрос.УстановитьПараметр("Подразделение", Подразделение); Запрос.УстановитьПараметр("НачПериода", НачалоДня(НачПериода)); Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода)); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.СубконтоДт2.Наименование = "Амортизация ОС и НМА" тогда АБУ1 = АБУ1 + Выборка.Сумма; Если не Выборка.СчетКт.Код = "20" и не Выборка.СчетКт.Код = "20.01" и не Выборка.СчетКт.Код = "20.02" и не Выборка.СчетКт.Код = "23" и не Выборка.СчетКт.Код = "23.01" и не Выборка.СчетКт.Код = "23.02" тогда АБУ2 = АБУ2 + Выборка.Сумма; КонецЕсли; КонецЕсли; Если Выборка.ПодразделениеКтСсылка <> NULL тогда Подр = Выборка.ПодразделениеКтСсылка; Если Подр <> ПД тогда ПД=Подр; // Секция = Таблица.ПолучитьОбласть("R7C5"); Секция.Область().Текст = ПД; Секция.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; Таблица.Присоединить(Секция,5,"Строка" ,Истина); //Таблица.Вывести(Секция,5, ,Истина); Теперь выводил с 1 по 90 строку значение Секция.Область().Текст = ПД; а только потом таблицу. PS) Не ругайте сильно, я только узичаю 1ску, с таким вопросом сталкиваюсь впервые... |
|||
9
hasan-rusel
27.03.13
✎
07:03
|
(7) Спасибо за помощь, а можно строкой кода ?
"присоединяешь к ней пересечение областей (типа "ПятаяКолонка|Строка")" это не "R1C5:R90C6" ? |
|||
10
Wobland
27.03.13
✎
07:04
|
(9) нет
ОбластьПятаяНога=Макет.ПолучитьОбласть("ПятаяНога|Строка"); Цикл ТабДок.Вывести(ОбластьСтрока); ТабДок.Присоединить(ОбластьПятаяНога); |
|||
11
1Сергей
27.03.13
✎
07:05
|
(9) у тебя типовой нет под рукой чтоли?
|
|||
12
Wobland
27.03.13
✎
07:05
|
здесь, похоже, человеку нужно ещё понять, что области можно именовать...
|
|||
13
hasan-rusel
27.03.13
✎
07:06
|
(11) нет, а как бы она мне помогла ?
|
|||
14
Wobland
27.03.13
✎
07:07
|
(13) в ней есть много строк кода
|
|||
15
hasan-rusel
27.03.13
✎
07:08
|
(14) представляю... если у меня нетиповая БП и строк тут %)
|
|||
16
hasan-rusel
27.03.13
✎
07:09
|
(10) Привет отличный !
А можно сразу учитывая мой код? |
|||
17
hasan-rusel
27.03.13
✎
07:09
|
(10) Пример*
|
|||
18
Wobland
27.03.13
✎
07:11
|
(16) лениво вникать, извини
|
|||
19
1Сергей
27.03.13
✎
07:12
|
можно именовать не только горизонтальные области, но и вертикальные
|
|||
20
hasan-rusel
27.03.13
✎
07:13
|
(19) Вот это до меня только что дошло !! Спасибо !!
Я и не знал об этом) |
|||
21
1Сергей
27.03.13
✎
07:14
|
(20) и вообще, читай ЖКК
|
|||
22
hasan-rusel
27.03.13
✎
07:18
|
(21) Было бы время, обязательно почитал бы ! А так посадили, вот тебе ТЗ делай!
Обязательно почитаю как только появиться время ! А я могу сделать вот так или как лучше ? ОбластьКолонка = Макет.ПолучитьОбласть("Колонка"); ОбластьКолонка.Параметры.ПД = Выборка.ХХХХХХХХ; Таблица.Вывести(ОбластьКолонка); Или не могу так ? Если нет, то как ? |
|||
23
hasan-rusel
27.03.13
✎
07:22
|
Вот так похоже надо ?
ОбластьКолонка = Макет.ПолучитьОбласть("Строка|Колонка"); ОбластьКолонка.Параметры.ПД = Выборка.ХХХХХХХХ; Таблица.Вывести(ОбластьКолонка); |
|||
24
Wobland
27.03.13
✎
07:25
|
получение области вон из цикла, Область.Параметры.Заполнить(Выборка) часто иногда выглядит интересней
|
|||
25
Wobland
27.03.13
✎
07:25
|
(23) и в этом месте логично было бы предположить Присоединить вместо Вывести
|
|||
26
1Сергей
27.03.13
✎
07:27
|
сначала выводишь одну область, потом 5 раз (или сколько тебе нужно) присоединяешь к ней справа ещё одну область, присоединяешь итоговую колонку.
(24)+1 когда будешь вносить изменения, меньше переписывать придётся, если используешь Заполнить() |
|||
27
hasan-rusel
27.03.13
✎
07:40
|
(25) Да, получение области не в цикле, это я просто...
Да, таблица сформировалась вроде как надо ! БОЛЬШОЕ СПАСИБО !!!!!!!!!!!!! ТОгда возникают вопросы по поводу Область.Параметры.Заполнить(Выборка) Как использовать ? Как в выборке назначитьт параметры макета ? |
|||
28
Wobland
27.03.13
✎
07:41
|
(27) лучше в пакете пропиши поля из выборки
|
|||
29
Wobland
27.03.13
✎
07:42
|
(28) *макете
|
|||
30
Wobland
27.03.13
✎
07:42
|
ну или КАК употребить...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |