Имя: Пароль:
1C
1С v8
Вывод счетов по иерархии 8.3
0 Murano
 
07.03.18
14:24
Добрый день. Я сделал отчет "Отклонение в оборотно-сальдовой ведомости", где в отдельной форме галочкой надо выбирать счета и их выводит. А нужно сделать, чтобы если например: выбраны счета, которые относятся к 20(281, 231...), то выводило не только их, а и сам 20. Я вообще не понимаю как это переделать. Помогите пожалуйста
1 tesseract
 
07.03.18
14:31
Мы не знаем,  на чем ты отчет сделал.

Может достаточно

ИТОГИ ПО
    Счет ИЕРАРХИЯ

Добавить.
2 Гипервизор
 
07.03.18
14:35
Что за счета такие интересные? Украина чтоль?
И разве счета верхнего уровня используются в проводках?
3 Murano
 
07.03.18
14:37
В модуле объекта я функцией возвращаю результат запроса, в который передаются номера счетов, дальше прорисовываю колонки.
Я не очень понимаю, какую часть кода лучше бы кинуть, чтобы была ясна суть проблемы
4 Murano
 
07.03.18
14:38
(2) Украина. Это для бух. расчетов нужны. Я в них вообще не разбирабюсь :)
5 tesseract
 
07.03.18
14:40
(3) Если сам решил рисовать - тогда итоги по иерархии и обходи выборку из запроса по группировкам.
6 Murano
 
07.03.18
14:44
(5)
Прошу прощения, я не очень всё понимаю. Итоги по иерархии в запросе? Вот так у меня модуль выглядит, я просто не знаю что именно лучше показать, поэтому покажу всё:

Перем мПериодичность Экспорт;
Перем мСпСчетов Экспорт;

Функция ИнициализацияЗапроса() Экспорт
    
мСпСчетов = мСписокСчетов;    

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

    Возврат РезультатЗапроса;
    
КонецФункции

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ТаблицаСчетов = Новый ТаблицаЗначений;
    
    ТаблицаСчетов.Колонки.Добавить("Организация",                       Новый ОписаниеТипов("СправочникСсылка.Организации"));
    ТаблицаСчетов.Колонки.Добавить("Счет",                                 Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный")); //план счетов
    ТаблицаСчетов.Колонки.Добавить("ОтклонениеДт",                      Новый ОписаниеТипов("Число"));
    ТаблицаСчетов.Колонки.Добавить("ОтклонениеКт",                      Новый ОписаниеТипов("Число"));
    ТаблицаСчетов.Колонки.Добавить("ПериодПредыдущий",                Новый ОписаниеТипов("Дата"));
    ТаблицаСчетов.Колонки.Добавить("ПериодТекущий",                   Новый ОписаниеТипов("Дата"));
    ТаблицаСчетов.Колонки.Добавить("КонечныйОстатокДтПредыдущий",      Новый ОписаниеТипов("Число"));
    ТаблицаСчетов.Колонки.Добавить("КонечныйОстатокДтТекущий",           Новый ОписаниеТипов("Число"));
    ТаблицаСчетов.Колонки.Добавить("КонечныйОстатокКтПредыдущий",    Новый ОписаниеТипов("Число"));
    ТаблицаСчетов.Колонки.Добавить("КонечныйОстатокКтТекущий",           Новый ОписаниеТипов("Число"));
         
    ТаблицаСчетов = ИнициализацияЗапроса();
            
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
        
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    ВнешнийНаборДанных = Новый Структура("ТаблицаЗначений", ТаблицаСчетов);
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
    
    ДокументРезультат.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.ОтображатьПроцентВывода = Истина;
    
    ПроцессорВывода.НачатьВывод();
      
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
        
    ПроцессорВывода.ЗакончитьВывод();
       
    ДокументРезультат.ОтображатьСетку=Ложь;
    ДокументРезультат.ОтображатьЗаголовки=Ложь;
    ДокументРезультат.ТолькоПросмотр = Истина;
    ДокументРезультат.Показать();

КонецПроцедуры