Имя: Пароль:
1C
1С v8
ОСВ по счету ошибка детализации по субконто
0 Benevalete
 
19.09.17
04:58
Бухгалтерия 1.6.8.3 сконвертированная под платформой 8.3.5.1231

В план счетов к счету 91 добавлен субсчет 91.08, с субконто 1 - Подразделения, субконто 2 - Прочие доходы и расходы. скрин - http://prntscr.com/gmuq5o

При формировании ОСВ по счету 91 отчет формируется с детализацией по подразделениям и ПрочимДиР, заходим в настройки и убираем детализацию по подразделениям - детализация для 91.08 отображается некорректно(вместо прочих доходов и расходов выводится детализация по подразделению) скрин - http://prntscr.com/gmuqiz

Та же проблема в демо базе бухгалтерия 2.0 (для счета 10.07 номенклатура - субконто 2, для остальных - субконто 1) скрин -http://prntscr.com/gmurbv

При этом ОСВ отдельно по 91.08 при указанной детализации отображается корректно http://prntscr.com/gmuqsp

Стоит задача исправить эту ошибку, т.к. требуется именно в осв по 91 счету видеть детализацию по "Прочим доходам и расходам", без лишней аналитики.

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

Формируется детализация для ОСВ следующим образом(если кратко):
   При выборе счета вызывается процедура для формирования настроек для построителя отчета

  Процедура СформироватьПервоначальныйОтборПостроителяПоСубконто(ПостроительОтчета, Знач Счет) Экспорт
    
    ПостроительОтчета.ИзмеренияСтроки.Очистить();
    
    Сч = 0;

    Для Каждого СтрокаВидаСубконто Из Счет.ВидыСубконто Цикл

        Сч = Сч + 1;
        ИмяСубконто = "Субконто" + Сч;
        
        ЭлементОтбора = ПостроительОтчета.Отбор.Найти(ИмяСубконто);
        Если ЭлементОтбора = Неопределено Тогда
            ЭлементОтбора = ПостроительОтчета.Отбор.Добавить(ИмяСубконто);
            ЭлементОтбора.Использование = Ложь;
        КонецЕсли;
                    
        ТипИзмерения = ПолучитьТипИзмеренияПоУмолчанию(СтрокаВидаСубконто.ВидСубконто.ТипЗначения);

        ПостроительОтчета.ИзмеренияСтроки.Добавить(ИмяСубконто, , ТипИзмерения);

    КонецЦикла;
    
   КонецПроцедуры

Процедура ЗаполнитьНачальныеНастройки() Экспорт

  ...
  ...
    Сч = 0;

    Для Каждого ВидСубконто Из Счет.ВидыСубконто Цикл
    
        Сч = Сч+1;
        
        ТекстПоля = ТекстПоля + ", " + " ОстаткиИОбороты.Субконто" + Сч + " КАК Субконто"+Сч;
        ТекстПоля = ТекстПоля + ", " + " ПРЕДСТАВЛЕНИЕ(ОстаткиИОбороты.Субконто" + Сч + ") КАК Субконто"+Сч+"Представление";
    
        ТекстОтбор = ТекстОтбор + ", Субконто"+Сч+".*";
        ТекстИтоги = ТекстИтоги + ", Субконто"+Сч+".*";
        ТекстПорядок = ТекстПорядок + ", Субконто"+Сч+".*";
        
        МассивСубконто.Добавить(ВидСубконто.ВидСубконто);  
        
    КонецЦикла;
  ...
  ...

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

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

Далее при нажатии на "Сформировать отчет" берутся данные из построителя отчета и на их основании формируется массив группировок:

//Функция возвращает массив группировок для отчета
Функция СформироватьМассивГруппировок() Экспорт
    
    МассивГруппировок = Новый Массив;

    Если ПоСубСчетам Тогда
        МассивГруппировок.Добавить("Счет");
    КонецЕсли;
    
    Для Сч = 0 По ПостроительОтчета.ИзмеренияСтроки.Количество() - 1  Цикл
        
        МассивГруппировок.Добавить(ПостроительОтчета.ИзмеренияСтроки[Сч].Имя);  //первоначально при выборе счета в постороитель отчета добавлены субконто из главного счета
        
    КонецЦикла;

    Возврат МассивГруппировок;
        
КонецФункции

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

    Для каждого Измерение Из ПостроительОтчета.ИзмеренияСтроки Цикл
    
        ТекстПоля = ТекстПоля + ", " + Измерение.ПутьКДанным + " КАК " + Измерение.Имя;  
        ТекстПоля = ТекстПоля + ", ПРЕДСТАВЛЕНИЕ(" + Измерение.ПутьКДанным + ") КАК " + Измерение.Имя + "Представление";
        
        ТекстИтоги = ТекстИтоги + ", " + Измерение.Имя + БухгалтерскиеОтчеты.ПолучитьПоТипуИзмеренияПостроителяОтчетаСтрокуЗапроса(Измерение.ТипИзмерения);
    
    КонецЦикла;