Программно добавить колонки в макет

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. hasan-rusel 11 27.03.13 05:45 Сейчас в теме
БП 2.0
Есть макет:


первые 4 колонки не изменны, а 5 колонка будет повторяться при проверке нового подразделения, т.е. новое подразделение - новая с колонка с параметрами выборки.

Подскажите пожалуйста как это реализовать ? Просто впервые сталкиваюсь с добавлением колонок...
Пытался вот так, но не получается ((

Процедура КнопкаВыполнитьНажатие(Кнопка)
	Таблица = Новый ТабличныйДокумент ;

	Макет = ПолучитьМакет("Макет");

//	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
//	Таблица.Вывести(ОбластьШапка);
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	Секция = Таблица.ПолучитьОбласть("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;

	Таблица.Вывести(ОбластьСтрока);
	

			   
				   
	Таблица.Автомасштаб 			= 	Истина;
	Таблица.ОриентацияСтраницы 	= 	ОриентацияСтраницы.Ландшафт;
	Таблица.ТолькоПросмотр		= 	Истина;
	Таблица.Показать("Макет", , Истина);		   
	
КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. deniseek77 86 27.03.13 14:05 Сейчас в теме
(5) hasan-rusel, Сделал бы так: Убрал подразделение из параметров, затем

Выборка = Запрос1.Выполнить().Выгрузить();
Если Выборка.Количество()>0 тогда
ПодрразделениеПредыдущее=Выборка[0].ПодразделениеКт;

Для й=0 по выборка.Количество()-1 цикл Цикл
Если й=0 тогда
//Выводим первый раз столбец с подразделением
Конецесли;
//*****
//Тут ваш код по заполнению строк
//***
Если ПодразделениеПредыдущее<>Выборка[й].ПодразделениеКт тогда
//Присоединяем столбец подразделение
Конецесли;
Конеццикла;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. AnryMc 849 27.03.13 07:50 Сейчас в теме
(1) А что мешает при выводе макет использовать "горизонтальные и вертикальные имена" областей и по мере неоюходимости выводить или нет 4 колонку?
4. hasan-rusel 11 27.03.13 07:52 Сейчас в теме
(3) AnryMc, Да, так и сделал...
2. hasan-rusel 11 27.03.13 07:05 Сейчас в теме
Неужели никто не знает ?
Или может я не правильно написал, напишу иначе:

Как сделать так чтобы можно было присоединять 5 колонку в цикле ?

Как бы так:
Пока цикл **** если новое подразделение тогда
берем 5 колонку, присваиваем параметры такие-то (5 колонка.Параметры.ПД= ПД;)
выводим справа... и т.д.
?!??!
5. hasan-rusel 11 27.03.13 13:49 Сейчас в теме
Подскажите что не так с циклом, глаз уже дергается...

Запрос1 = Новый Запрос;
	Запрос1.Текст ="ВЫБРАТЬ
	               |	ХозрасчетныйДвиженияССубконто.СубконтоДт2,
	               |	ХозрасчетныйДвиженияССубконто.Сумма,
	               |	ХозрасчетныйДвиженияССубконто.СчетКт КАК СчетКт,
	               |	ХозрасчетныйДвиженияССубконто.Период,
	               |	ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка КАК ПодразделениеКтСсылка,
	               |	ХозрасчетныйДвиженияССубконто.СуммаНУДт,
	               |	ХозрасчетныйДвиженияССубконто.СуммаНУКт,
	               |	ХозрасчетныйДвиженияССубконто.СуммаПРДт,
	               |	ХозрасчетныйДвиженияССубконто.СуммаПРКт,
	               |	ХозрасчетныйДвиженияССубконто.СуммаВРДт,
	               |	ХозрасчетныйДвиженияССубконто.СуммаВРКт
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
	               |			&НачПериода,
	               |			&КонПериода,
	               |			СчетДт = &Счет
	               |				И ПодразделениеДт.Ссылка = &Подразделение,
	               |			,
	               |			) КАК ХозрасчетныйДвиженияССубконто
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	ПодразделениеКтСсылка";
				   
	Запрос1.УстановитьПараметр("Счет", Счет);
	Запрос1.УстановитьПараметр("Подразделение", Подразделение);
	Запрос1.УстановитьПараметр("НачПериода", НачалоДня(НачПериода));
    Запрос1.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
	
	Выборка = Запрос1.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
    ПриОткрытии();	
		
//				ПД=Подр;
				Если Выборка.СчетКт.Код = "20" или Выборка.СчетКт.Код = "20.01" или Выборка.СчетКт.Код = "20.02" тогда
			         Подр = Выборка.ПодразделениеКтСсылка;
					Если Подр <> ПД тогда
		 			    ПД=Подр;
	
			
			
	Если Выборка.СубконтоДт2.Наименование = "Амортизация ОС и НМА" тогда
			
			АБУ3 = АБУ3 + Выборка.Сумма;
			АНУ3 = АНУ3 + Выборка.СуммаНУДт;
			АПР3=АПР3+Выборка.СуммаПРДт;
			АВР3=АВР3+Выборка.СуммаВРДт;
			АК3=АБУ3-(АНУ3+АПР3+АВР3);
	 КонецЕсли;
		
		Если Выборка.СубконтоДт2.Наименование = "материалы и комплектующие на содержание, ремонт и эксплуатацию машин и оборудования" тогда
			МБУ3=МБУ3+ Выборка.Сумма;
			МНУ3=МНУ3 + Выборка.СуммаНУДт;
			МПР3=МПР3+Выборка.СуммаПРДт;
			МВР3=МВР3+Выборка.СуммаВРДт;
            МК3=МБУ3-(МНУ3+МПР3+МВР3);
		КонецЕсли;
		
      	Если Выборка.СубконтоДт2.Наименование = "Общецеховые расходы" тогда
			ОБУ3=ОБУ3+ Выборка.Сумма;
			ОНУ3=ОНУ3 + Выборка.СуммаНУДт;
			ОПР3=ОПР3+Выборка.СуммаПРДт;
			ОВР3=ОВР3+Выборка.СуммаВРДт;
            ОК3=ОБУ3-(ОНУ3+ОПР3+ОВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Основная и дополнительная заработная плата работников" тогда
			ОДБУ3=ОДБУ3+ Выборка.Сумма;
			ОДНУ3=ОДНУ3 + Выборка.СуммаНУДт;
			ОДПР3=ОДПР3+Выборка.СуммаПРДт;
			ОДВР3=ОДВР3+Выборка.СуммаВРДт;
            ОДК3=ОДБУ3-(ОДНУ3+ОДПР3+ОДВР3);

		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "проживание в командировочных расходах" тогда
			ПБУ3=ПБУ3+ Выборка.Сумма;
			ПНУ3=ПНУ3 + Выборка.СуммаНУДт;
			ППР3=ППР3+Выборка.СуммаПРДт;
			ПВР3=ПВР3+Выборка.СуммаВРДт;
            ПК3=ПБУ3-(ПНУ3+ППР3+ПВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Прочие расходы не поименованные в справочнике" тогда
			ПРБУ3=ПРБУ3+ Выборка.Сумма;
			ПРНУ3=ПРНУ3 + Выборка.СуммаНУДт;
			ПРПР3=ПРПР3+Выборка.СуммаПРДт;
			ПРВР3=ПРВР3+Выборка.СуммаВРДт;
            ПРК3=ПРБУ3-(ПРНУ3+ПРПР3+ПРВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Прочие транспортные расходы не поименованные в группе" тогда
			ПТБУ3=ПТБУ3+ Выборка.Сумма;
			ПТНУ3=ПТНУ3 + Выборка.СуммаНУДт;
			ПТПР3=ПТПР3+Выборка.СуммаПРДт;
			ПТВР3=ПТВР3+Выборка.СуммаВРДт;
            ПТК3=ПТБУ3-(ПТНУ3+ПТПР3+ПТВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Расход воды" тогда
			РБУ3=РБУ3+ Выборка.Сумма;
			РНУ3=РНУ3 + Выборка.СуммаНУДт;
			РПР3=РПР3+Выборка.СуммаПРДт;
			РВР3=РВР3+Выборка.СуммаВРДт;
            РК3=РБУ3-(РНУ3+РПР3+РВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Расход электроэнергии" тогда
			РЭБУ3=РЭБУ3+ Выборка.Сумма;
			РЭНУ3=РЭНУ3 + Выборка.СуммаНУДт;
			РЭПР3=РЭПР3+Выборка.СуммаПРДт;
			РЭВР3=РЭВР3+Выборка.СуммаВРДт;
            РЭК3=РЭБУ3-(РЭНУ3+РЭПР3+РЭВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Содержание и текущий ремонт машин, оборудования, зданий и сооружений" тогда
			СБУ3=СБУ3+ Выборка.Сумма;
			СНУ3=СНУ3 + Выборка.СуммаНУДт;
			СПР3=СПР3+Выборка.СуммаПРДт;
			СВР1=СВР3+Выборка.СуммаВРДт;
            СК3=СБУ3-(СНУ3+СПР3+СВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Страховые взносы в Пенсионный фонд, ФСС, ФФМС, ТФМС " тогда
			СВБУ3=СВБУ3+ Выборка.Сумма;
			СВНУ3=СВНУ3+Выборка.СуммаНУДт;
			СВПР3=СВПР3+Выборка.СуммаПРДт;
			СВВР3=СВВР3+Выборка.СуммаВРДт;
            СВК3=СВБУ3-(СВНУ3+СВПР3+СВВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "суточные в командировочных расходах" тогда
			СКБУ3=СКБУ3+ Выборка.Сумма;
			СКНУ3=СКНУ3 + Выборка.СуммаНУДт;
			СКПР3=СКПР3+Выборка.СуммаПРДт;
			СКВР3=СКВР3+Выборка.СуммаВРДт;
            СКК3=СКБУ3-(СКНУ3+СКПР3+СКВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "сырье, материалы и покупные полуфабрикаты на технологические цели" тогда
			СЫРБУ3=СЫРБУ3+ Выборка.Сумма;
			СЫРНУ3=СЫРНУ3 + Выборка.СуммаНУДт;
			СЫРПР3=СЫРПР3+Выборка.СуммаПРДт;
			СЫРВР3=СЫРВР3+Выборка.СуммаВРДт;
            СЫРК3=СЫРБУ3-(СЫРНУ3+СЫРПР3+СЫРВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "топливо на технологические цели" тогда
			ТБУ3=ТБУ3+ Выборка.Сумма;
			ТНУ3=ТНУ3 + Выборка.СуммаНУДт;
			ТПР3=ТПР3+Выборка.СуммаПРДт;
			ТВР3=ТВР3+Выборка.СуммаВРДт;
            ТК3=ТБУ3-(ТНУ3+ТПР3+ТВР3);
		КонецЕсли;
      	Если Выборка.СубконтоДт2.Наименование = "Услуги вспомогательных цехов" тогда
			УБУ3=УБУ3+ Выборка.Сумма;
			УНУ3=УНУ3 + Выборка.СуммаНУДт;
			УПР3=УПР3+Выборка.СуммаПРДт;
			УВР3=УВР3+Выборка.СуммаВРДт;
            УК3=УБУ3-(УНУ3+УПР3+УВР3);
		КонецЕсли;
        ИБУ3=АБУ3+МБУ3+ОБУ3+ОДБУ3+ПБУ3+ПРБУ3+ПТБУ3+РБУ3+РЭБУ3+СБУ3+С­ВБУ3+СКБУ3+СЫРБУ3+ТБУ3+УБУ3;
	    ИНУ3=АНУ3+МНУ3+ОНУ3+ОДНУ3+ПНУ3+ПРНУ3+ПТНУ3+РНУ3+РЭНУ3+СНУ3+С­ВНУ3+СКНУ3+СЫРНУ3+ТНУ3+УНУ3;
		ИПР3=АПР3+МПР3+ОПР3+ОДПР3+ППР3+ПРПР3+ПТПР3+РПР3+РЭПР3+СПР3+С­ВПР3+СКПР3+СЫРПР3+ТПР3+УПР3;
		ИВР3=АВР3+МВР3+ОВР3+ОДВР3+ПВР3+ПРВР3+ПТВР3+РВР3+РЭВР3+СВР3+С­ВВР3+СКВР3+СЫРВР3+ТВР3+УВР3;
        ИК3=АК3+МК3+ОК3+ОДК3+ПК3+ПРК3+ПТК3+РК3+РЭК3+СК3+СВК3+СКК3+СЫ­РК3+ТК3+УК3;
	КонецЕсли;
КонецЕсли;
	
//   КонецЦикла;


	



    Секция.Параметры.ПД = ПД;
	
	Секция.Параметры.АБУ3=АБУ3;
	Секция.Параметры.АНУ3=АНУ3;
	Секция.Параметры.АПР3=АПР3;
	Секция.Параметры.АВР3=АВР3;
	Секция.Параметры.АК3=АК3;
//
	Секция.Параметры.МБУ3=МБУ3;
	Секция.Параметры.МНУ3=МНУ3;
	Секция.Параметры.МПР3=МПР3;
	Секция.Параметры.МВР3=МВР3;
	Секция.Параметры.МК3=МК3;
//
	Секция.Параметры.ОБУ3=ОБУ3;
	Секция.Параметры.ОНУ3=ОНУ3;
	Секция.Параметры.ОПР3=ОПР3;
	Секция.Параметры.ОВР3=ОВР3;
	Секция.Параметры.ОК3=ОК3;
//
	Секция.Параметры.ОДБУ3=ОДБУ3;
	Секция.Параметры.ОДНУ3=ОДНУ3;
	Секция.Параметры.ОДПР3=ОДПР3;
	Секция.Параметры.ОДВР3=ОДВР3;
	Секция.Параметры.ОДК3=ОДК3;
//
	Секция.Параметры.ПБУ3=ПБУ3;
	Секция.Параметры.ПНУ3=ПНУ3;
	Секция.Параметры.ППР3=ППР3;
	Секция.Параметры.ПВР3=ПВР3;
	Секция.Параметры.ПК3=ПК3;
//
	Секция.Параметры.ПРБУ3=ПРБУ3;
	Секция.Параметры.ПРНУ3=ПРНУ3;
	Секция.Параметры.ПРПР3=ПРПР3;
	Секция.Параметры.ПРВР3=ПРВР3;
	Секция.Параметры.ПРК3=ПРК3;
//
	Секция.Параметры.ПТБУ3=ПТБУ3;
	Секция.Параметры.ПТНУ3=ПТНУ3;
	Секция.Параметры.ПТПР3=ПТПР3;
	Секция.Параметры.ПТВР3=ПТВР3;
	Секция.Параметры.ПТК3=ПТК3;
//
	Секция.Параметры.РБУ3=РБУ3;
	Секция.Параметры.РНУ3=РНУ3;
	Секция.Параметры.РПР3=РПР3;
	Секция.Параметры.РВР3=РВР3;
	Секция.Параметры.РК3=РК3;
//
	Секция.Параметры.РЭБУ3=РЭБУ3;
	Секция.Параметры.РЭНУ3=РЭНУ3;
	Секция.Параметры.РЭПР3=РЭПР3;
	Секция.Параметры.РЭВР3=РЭВР3;
	Секция.Параметры.РЭК3=РЭК3;
//
	Секция.Параметры.СБУ3=СБУ3;
	Секция.Параметры.СНУ3=СНУ3;
	Секция.Параметры.СПР3=СПР3;
	Секция.Параметры.СВР3=СВР3;
	Секция.Параметры.СК3=СК3;
//
	Секция.Параметры.СВБУ3=СВБУ3;
	Секция.Параметры.СВНУ3=СВНУ3;
	Секция.Параметры.СВПР3=СВПР3;
	Секция.Параметры.СВВР3=СВВР3;
	Секция.Параметры.СВК3=СВК3;
//
	Секция.Параметры.СКБУ3=СКБУ3;
	Секция.Параметры.СКНУ3=СКНУ3;
	Секция.Параметры.СКПР3=СКПР3;
	Секция.Параметры.СКВР3=СКВР3;
	Секция.Параметры.СКК3=СКК3;
//
	Секция.Параметры.СЫРБУ3=СЫРБУ3;
	Секция.Параметры.СЫРНУ3=СЫРНУ3;
	Секция.Параметры.СЫРПР3=СЫРПР3;
	Секция.Параметры.СЫРВР3=СЫРВР3;
	Секция.Параметры.СЫРК3=СЫРК3;
//
	Секция.Параметры.ТБУ3=ТБУ3;
	Секция.Параметры.ТНУ3=ТНУ3;
	Секция.Параметры.ТПР3=ТПР3;
	Секция.Параметры.ТВР3=ТВР3;
	Секция.Параметры.ТК3=ТК3;
//
	Секция.Параметры.УБУ3=УБУ3;
	Секция.Параметры.УНУ3=УНУ3;
	Секция.Параметры.УПР3=УПР3;
	Секция.Параметры.УВР3=УВР3;
	Секция.Параметры.УК3=УК3;
//
	Секция.Параметры.ИБУ3=ИБУ3;
	Секция.Параметры.ИНУ3=ИНУ3;
	Секция.Параметры.ИПР3=ИПР3;
	Секция.Параметры.ИВР3=ИВР3;
	Секция.Параметры.ИК3=ИК3;

Таблица.Присоединить(Секция);

КонецЦикла;
Показать
6. deniseek77 86 27.03.13 14:05 Сейчас в теме
(5) hasan-rusel, Сделал бы так: Убрал подразделение из параметров, затем

Выборка = Запрос1.Выполнить().Выгрузить();
Если Выборка.Количество()>0 тогда
ПодрразделениеПредыдущее=Выборка[0].ПодразделениеКт;

Для й=0 по выборка.Количество()-1 цикл Цикл
Если й=0 тогда
//Выводим первый раз столбец с подразделением
Конецесли;
//*****
//Тут ваш код по заполнению строк
//***
Если ПодразделениеПредыдущее<>Выборка[й].ПодразделениеКт тогда
//Присоединяем столбец подразделение
Конецесли;
Конеццикла;
7. hasan-rusel 11 27.03.13 14:10 Сейчас в теме
Забыл добавить что в цикле
"Пока Выборка.Следующий() Цикл"
СубконтоДт2.Наименование идут в разной очередности, поэтому нужно заполнить столбец по 1 подразделению, потом вывести его через присоединть и заного по другому подразделению...

deniseek77 в том что вы мне написали это учитывается ?

Если можно кинь сразу с учетом моего кода плиз, у меня уже 18 часов, весь день сижу с этим отчетом, голова вообще не соображает уже ))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот