Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
БП 2.0
Есть макет:
первые 4 колонки не изменны, а 5 колонка будет повторяться при проверке нового подразделения, т.е. новое подразделение - новая с колонка с параметрами выборки.
Подскажите пожалуйста как это реализовать ? Просто впервые сталкиваюсь с добавлением колонок...
Пытался вот так, но не получается ((
Есть макет:
первые 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;
Таблица.Вывести(ОбластьСтрока);
Таблица.Автомасштаб = Истина;
Таблица.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Таблица.ТолькоПросмотр = Истина;
Таблица.Показать("Макет", , Истина);
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов.
- Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы
- Программная корректировка при выводе отчета СКД
- Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)
- Модель СКД
Найденные решения
(5) hasan-rusel, Сделал бы так: Убрал подразделение из параметров, затем
Выборка = Запрос1.Выполнить().Выгрузить();
Если Выборка.Количество()>0 тогда
ПодрразделениеПредыдущее=Выборка[0].ПодразделениеКт;
Для й=0 по выборка.Количество()-1 цикл Цикл
Если й=0 тогда
//Выводим первый раз столбец с подразделением
Конецесли;
//*****
//Тут ваш код по заполнению строк
//***
Если ПодразделениеПредыдущее<>Выборка[й].ПодразделениеКт тогда
//Присоединяем столбец подразделение
Конецесли;
Конеццикла;
Выборка = Запрос1.Выполнить().Выгрузить();
Если Выборка.Количество()>0 тогда
ПодрразделениеПредыдущее=Выборка[0].ПодразделениеКт;
Для й=0 по выборка.Количество()-1 цикл Цикл
Если й=0 тогда
//Выводим первый раз столбец с подразделением
Конецесли;
//*****
//Тут ваш код по заполнению строк
//***
Если ПодразделениеПредыдущее<>Выборка[й].ПодразделениеКт тогда
//Присоединяем столбец подразделение
Конецесли;
Конеццикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Неужели никто не знает ?
Или может я не правильно написал, напишу иначе:
Как сделать так чтобы можно было присоединять 5 колонку в цикле ?
Как бы так:
Пока цикл **** если новое подразделение тогда
берем 5 колонку, присваиваем параметры такие-то (5 колонка.Параметры.ПД= ПД;)
выводим справа... и т.д.
?!??!
Или может я не правильно написал, напишу иначе:
Как сделать так чтобы можно было присоединять 5 колонку в цикле ?
Как бы так:
Пока цикл **** если новое подразделение тогда
берем 5 колонку, присваиваем параметры такие-то (5 колонка.Параметры.ПД= ПД;)
выводим справа... и т.д.
?!??!
Подскажите что не так с циклом, глаз уже дергается...
Запрос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;
Таблица.Присоединить(Секция);
КонецЦикла;
Показать
(5) hasan-rusel, Сделал бы так: Убрал подразделение из параметров, затем
Выборка = Запрос1.Выполнить().Выгрузить();
Если Выборка.Количество()>0 тогда
ПодрразделениеПредыдущее=Выборка[0].ПодразделениеКт;
Для й=0 по выборка.Количество()-1 цикл Цикл
Если й=0 тогда
//Выводим первый раз столбец с подразделением
Конецесли;
//*****
//Тут ваш код по заполнению строк
//***
Если ПодразделениеПредыдущее<>Выборка[й].ПодразделениеКт тогда
//Присоединяем столбец подразделение
Конецесли;
Конеццикла;
Выборка = Запрос1.Выполнить().Выгрузить();
Если Выборка.Количество()>0 тогда
ПодрразделениеПредыдущее=Выборка[0].ПодразделениеКт;
Для й=0 по выборка.Количество()-1 цикл Цикл
Если й=0 тогда
//Выводим первый раз столбец с подразделением
Конецесли;
//*****
//Тут ваш код по заполнению строк
//***
Если ПодразделениеПредыдущее<>Выборка[й].ПодразделениеКт тогда
//Присоединяем столбец подразделение
Конецесли;
Конеццикла;
Забыл добавить что в цикле
"Пока Выборка.Следующий() Цикл"
СубконтоДт2.Наименование идут в разной очередности, поэтому нужно заполнить столбец по 1 подразделению, потом вывести его через присоединть и заного по другому подразделению...
deniseek77 в том что вы мне написали это учитывается ?
Если можно кинь сразу с учетом моего кода плиз, у меня уже 18 часов, весь день сижу с этим отчетом, голова вообще не соображает уже ))
"Пока Выборка.Следующий() Цикл"
СубконтоДт2.Наименование идут в разной очередности, поэтому нужно заполнить столбец по 1 подразделению, потом вывести его через присоединть и заного по другому подразделению...
deniseek77 в том что вы мне написали это учитывается ?
Если можно кинь сразу с учетом моего кода плиз, у меня уже 18 часов, весь день сижу с этим отчетом, голова вообще не соображает уже ))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот