Допиливаю отчет по продажам в котором хочу привязать продажи и торг.агентов:
В документе РасходнаяНакладная реквизиты шапки добавляю ТорговыйАгент (спр.сотрудники) далее в отчете хочу вытянуть продажи которые сделал этот агент (в разрезе товаров, контрагентов, документов) выборочно по галочкам:
ОтчетПоПродажам:
В итоге не получается вывести в разрезе Торговых Агентов их продажи по документам, товарам, контрагентам. Подскажите где ошибся?
В документе РасходнаяНакладная реквизиты шапки добавляю ТорговыйАгент (спр.сотрудники) далее в отчете хочу вытянуть продажи которые сделал этот агент (в разрезе товаров, контрагентов, документов) выборочно по галочкам:
ОтчетПоПродажам:
Процедура ПриОткрытии()
Дата1 = РабочаяДата() - 1;
Дата2 = РабочаяДата();
РазвПоТов = 1;
РазвПоКонтр = 1;
РазвПоДок = 1;
РазвПоАгенту = 1;
КонецПроцедуры
//*******************************************
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Если Склады.Выбран()=1 Тогда
ВыбСклада = Склады.ТекущийЭлемент();
Иначе
ВыбСклада = "по всем складам";
КонецЕсли;
/////////////////
Таб.ВывестиСекцию("Шапка");
ТабБухИт = СоздатьОбъект ("ТаблицаЗначений");
ТабБухИт.НоваяКолонка("Товар","Справочник.Номенклатура");
ТабБухИт.НоваяКолонка("Склад","Справочник.МестаХранения");
ТабБухИт.НоваяКолонка("Контрагент","Справочник.Контрагенты");
///
ТабБухИт.НоваяКолонка("ТоргАгент","Справочник.Сотрудники");
ТабБухИт.НоваяКолонка("Документ","Документ");
ТабБухИт.НоваяКолонка("Сумма","Число",15,2);
ТабБухИт.НоваяКолонка("НДС","Число",15,2);
ТабБухИт.НоваяКолонка("СуммаПрод","Число",15,2);
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
Если ВыбТовар.Выбран()=1 Тогда
БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура,ВыбТовар,2);
Иначе
БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
КонецЕсли;
БухИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения);
БухИт.ВыполнитьЗапрос(Дата1,Дата2,"41.1,41.2,41.3,41.4,43",,,,"Проводка","СК");
БухИт.ВыбратьСубконто(1); //
Пока БухИт.ПолучитьСубконто()=1 Цикл
БухИт.ВыбратьПериоды();
Пока БухИт.ПолучитьПериод() = 1 Цикл
Знач41 = БухИт.КО("С");
Знач41_К = БухИт.КО("К");
Если (Знач41_К <> 0) или (Знач41 <> 0) Тогда
Если Склады.Выбран() = 1 Тогда
Если БухИт.ПолучитьСубконто(ВидыСубконто.МестаХранения,,Склады) = 1 Тогда
КоличествоНаСкладе = БухИт.КО("К");
СуммаНаСкладе = Знач41/Знач41_К*КоличествоНаСкладе;
Иначе
КоличествоНаСкладе = 0;
СуммаНаСкладе = 0;
КОнецЕсли;
Иначе
КоличествоНаСкладе = Знач41_К;
СуммаНаСкладе = Знач41;
КонецЕсли;
Если (КоличествоНаСкладе <> 0) или (СуммаНаСкладе <> 0) Тогда
ТабБухИт.НоваяСтрока();
ТабБухИт.Товар = БухИт.Субконто(1);
ТабБухИт.Документ = БухИт.Операция.Документ.ТекущийДокумент();
ТабБухИт.Склад = БухИт.Субконто(2);
Если (Метаданные.Документ(ТабБухИт.Документ.Вид()).РеквизитШапки("Контрагент").Выбран() = 1) Тогда
ТабБухИт.Контрагент = ТабБухИт.Документ.Контрагент;
КонецЕсли;
ТабБухИт.Сумма = СуммаНаСкладе;
////
Если (Метаданные.Документ(ТабБухИт.Документ.Вид()).РеквизитШапки("ТорговыйАгент").Выбран() = 1) Тогда
ТабБухИт.ТоргАгент = ТабБухИт.Документ.ТорговыйАгент;
КонецЕсли;
Итог1 = ТабБухИт.Итог("Сумма");
Док = ТабБухИт.Документ;
Если (Док.Вид()= "РасходнаяНакладная") или (Док.Вид()= "ПоступлениеТоваров") Тогда
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
Если ТабБухИт.Товар = Док.Товар Тогда
ТабБухИт.СуммаПрод = ТабБухИт.СуммаПрод + Док.Сумма;
ТабБухИт.НДС = ТабБухИт.НДС + Док.НДС;
Итог2 = ТабБухИт.Итог("СуммаПрод");
КонецЕсли;
КонецЦикла
КонецЕсли;
КонецЕсли;
Иначе
КонецЕсли;
КонецЦикла;
КонецЦикла;
\\\ тут начинаю тупить
Если РазвПоТов=1 Тогда
Если РазвПоКонтр=1 Тогда
Если РазвПоДок=1 Тогда
Если РазвПоАгенту=1 Тогда
ТабБухИт.Свернуть("Контрагент,Товар,ТоргАгент,Документ","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Контрагент,Документ,Товар");
ПечШапкаТаб = "Товар/Контрагент/Документ/ТоргАгент";
Иначе
ТабБухИт.Свернуть("Контрагент,Товар,Склад","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Контрагент,Товар");
ПечШапкаТаб = "Товар/Контрагент";
КонецЕсли;
КонецЕсли;
Иначе
Если РазвПоДок=1 Тогда
ТабБухИт.Свернуть("Товар,Склад,Документ","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Документ,Товар");
ПечШапкаТаб = "Товар/Документ";
Иначе
ТабБухИт.Свернуть("Товар,Склад","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Товар");
ПечШапкаТаб = "Товар";
КонецЕсли;
КонецЕсли;
Иначе
///////////// пробую свернуть тз по агенту
Если РазвПоАгенту=1 Тогда
ТабБухИт.Свернуть("ТоргАгент,Документ","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("ТоргАгент");
ПечШапкаТаб = "Агент";
Иначе
ТабБухИт.Свернуть("ТоргАгент,Контрагент","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Документ,Товар");
ПечШапкаТаб = "ТоргАгент/Контрагент";
КонецЕсли;
//////
Если РазвПоКонтр=1 Тогда
Если РазвПоДок=1 Тогда
ТабБухИт.Свернуть("Контрагент,Склад,Документ","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Контрагент,Документ");
ПечШапкаТаб = "Контрагент/Документ";
Иначе
ТабБухИт.Свернуть("Контрагент,Склад","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Контрагент");
ПечШапкаТаб = "Контрагент";
КонецЕсли;
Иначе
Если РазвПоДок=1 Тогда
ТабБухИт.Свернуть("Склад,Документ","Сумма,СуммаПрод,НДС");
ТабБухИт.Сортировать("Документ");
ПечШапкаТаб = "Документ";
Иначе
Предупреждение("Не выбрано ни одной группировки", 60);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Таб.ВывестиСекцию("ОбщаяШапка");
ТЗТов = СоздатьОбъект("ТаблицаЗначений");
ТЗКонтр = СоздатьОбъект("ТаблицаЗначений");
ТЗСклад = СоздатьОбъект("ТаблицаЗначений");
ТЗДок = СоздатьОбъект("ТаблицаЗначений");
////////////////////
ТЗАгент = СоздатьОбъект("ТаблицаЗначений");
////////// тут собираю по агентам
ТабБухИт.Выгрузить(ТЗАгент);
Если (РазвПоАгенту = 1) Тогда
ТЗАгент.Свернуть("ТоргАгент,Документ","Сумма,СуммаПрод,НДС");
ИначеЕсли (РазвПоАгенту=0) Тогда
ТЗАгент.Свернуть("ТоргАгент,Документ","Сумма,СуммаПрод,НДС");
КонецЕсли;
ТабБухИт.Выгрузить(ТЗКонтр);
Если (РазвПоКонтр=1) и (РазвПоТов=1) Тогда
ТЗКонтр.Свернуть("Контрагент","Сумма,СуммаПрод,НДС");
ИначеЕсли (РазвПоКонтр=1) Тогда
ТЗКонтр.Свернуть("Контрагент","Сумма,СуммаПрод,НДС");
КонецЕсли;
ТабБухИт.Выгрузить(ТЗДок);
Если (РазвПоДок = 1) Тогда
Если (РазвПоКонтр=1) Тогда
ТЗДок.Свернуть("Контрагент,Документ","Сумма,СуммаПрод,НДС");
ИначеЕсли (РазвПоКонтр=0) Тогда
ТЗДок.Свернуть("Документ","Сумма,СуммаПрод,НДС");
КонецЕсли;
КонецЕсли;
ТабБухИт.Выгрузить(ТЗТов);
Если (РазвПоКонтр=1) и (РазвПоДок=1) и (РазвПоТов=1) Тогда
ТЗТов.Свернуть("Контрагент,Документ,Товар","Сумма,СуммаПрод,НДС");
ИначеЕсли (РазвПоКонтр=0) и (РазвПоТов=1) и (РазвПоДок=1) Тогда
ТЗТов.Свернуть("Документ,Товар","Сумма,СуммаПрод,НДС");
КонецЕсли;
Товар = "";
Контрагент = "";
Склад = "";
Докум = "";
//////////
ТАгент = "";
ТЗТов.ВыбратьСтроки();
ТЗКонтр.ВыбратьСтроки();
ТЗСклад.ВыбратьСтроки();
/////////////
ТЗАгент.ВыбратьСтроки();
ТабБухИт.ВыбратьСтроки();
Пока ТабБухИт.ПолучитьСтроку()=1 Цикл
Если РазвПоКонтр=1 Тогда
Если Контрагент <> ТабБухИт.Контрагент Тогда
Стр = "";
ТЗКонтр.НайтиЗначение(ТабБухИт.Контрагент,Стр,"Контрагент");
ТЗКонтр.ПолучитьСтрокуПоНомеру(Стр);
Контрагент = ТабБухИт.Контрагент;
Таб.ВывестиСекцию("КонтрагТаб");
КонецЕсли;
КонецЕсли;
//////////////////
Если РазвПоАгенту=1 Тогда
Если ТАгент <> ТабБухИт.ТоргАгент Тогда
Стр = "";
ТЗАгент.НайтиЗначение(ТабБухИт.ТоргАгент,Стр,"ТоргАгент");
ТЗАгент.ПолучитьСтрокуПоНомеру(Стр);
ТАгент = ТабБухИт.ТоргАгент;
Таб.ВывестиСекцию("АгентТаб");
КонецЕсли;
КонецЕсли;
Если РазвПоДок=1 Тогда
Если Докум <> ТабБухИт.Документ Тогда
ТЗДок.ВыбратьСтроки();
Пока ТЗДок.ПолучитьСтроку()=1 Цикл
Если ТЗДок.Документ=ТабБухИт.Документ Тогда
Если РазвПоКонтр=1 Тогда
Если ТЗДок.Контрагент = ТабБухИт.Контрагент Тогда
Докум = ТабБухИт.Документ;
Таб.ВывестиСекцию("ДокумТаб");
Прервать;
КонецЕсли;
Иначе
Докум = ТабБухИт.Документ;
Таб.ВывестиСекцию("ДокумТаб");
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если РазвПоТов=1 Тогда
Товар = ТабБухИт.Товар;
Таб.ВывестиСекцию("ТоварТаб1");
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("ИтогТаб");
Таб.Опции(0, 0, 0, 0, "Список", "");
Таб.ТолькоПросмотр(1);
Таб.Показать("","");
КонецПроцедуры
ПоказатьВ итоге не получается вывести в разрезе Торговых Агентов их продажи по документам, товарам, контрагентам. Подскажите где ошибся?
По теме из базы знаний
- Анализ и контроль выполнения плана продаж
- Доходы и валовая прибыль от продаж по месяцам и годам
- Анализ продаж с расшифровкой по регистратору, менеджерам, партнерам (контрагентам), номенклатуре, с сальдо на конец периода для УТ 11.4
- Продажи по номенклатуре и контрагентам для БП 3.0
- Продажи по менеджерам в разрезе контрагентов и номенклатуры для БП 3.0
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот