![]() |
|
как в обработке выбрать не конкретного кон-та, а группу? | ☑ | ||
---|---|---|---|---|
0
program345
19.12.14
✎
12:39
|
доброго дня!
в поле можно выбирать только контрагента. Выбрать со стрелочкой не проходит. вот код: Процедура КнопкаВыполнитьНажатие(Кнопка) КЧ = Новый КвалификаторыЧисла(15,2); Массив = Новый Массив; Массив.Добавить(Тип("Число")); ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); ТаблицаДолгов=Новый ТаблицаЗначений(); ТаблицаДолгов.Колонки.Добавить("Группировка"); ТаблицаДолгов.Колонки.Добавить("Организация"); ТаблицаДолгов.Колонки.Добавить("Менеджер"); ТаблицаДолгов.Колонки.Добавить("Контрагент"); ТаблицаДолгов.Колонки.Добавить("КредитныйДокумент"); Для Счетчик=0 по 13 цикл ТаблицаДолгов.Колонки.Добавить("Долг"+строка(Счетчик),ОписаниеТиповЧ); КонецЦикла; Запрос=Новый Запрос(); ТекстЗапроса="ВЫБРАТЬ | ОтгрузкиОплатыОстатки.Организация КАК Организация, | ОтгрузкиОплатыОстатки.ДоговорКонтрагента.Владелец КАК Контрагент, | ВЫБОР | КОГДА ОтгрузкиОплатыОстатки.КредитныйДокумент.Ответственный.Наименование <> """" | ТОГДА ОтгрузкиОплатыОстатки.КредитныйДокумент.Ответственный | ИНАЧЕ ОтгрузкиОплатыОстатки.КредитныйДокумент.Контрагент.ОсновнойМенеджерПокупателя | КОНЕЦ КАК Менеджер, | ВЫРАЗИТЬ(РАЗНОСТЬДАТ(&ДатаОтчета, ОтгрузкиОплатыОстатки.КредитныйДокумент.Дата, ДЕНЬ) / 30 * -1+1 КАК ЧИСЛО(10, 0)) КАК Отклонение, | ОтгрузкиОплатыОстатки.КредитныйДокумент КАК КредитныйДокумент, | ОтгрузкиОплатыОстатки.СуммаОстаток * -1 КАК СуммаОстаток |ИЗ | РегистрНакопления.ОтгрузкиОплаты.Остатки(&ДатаОтчета, ) КАК ОтгрузкиОплатыОстатки |ГДЕ | ОтгрузкиОплатыОстатки.КредитныйДокумент ССЫЛКА Документ.РеализацияТоваровУслуг | И ОтгрузкиОплатыОстатки.Организация = &Организация"; Если Не ЗначениеНеЗаполнено(Контрагент) тогда Если Не Контрагент.ЭтоГруппа тогда ТекстЗапроса=ТекстЗапроса+" И ОтгрузкиОплатыОстатки.ДоговорКонтрагента.Владелец=&Контрагент " ; Иначе ТекстЗапроса=ТекстЗапроса+" И ОтгрузкиОплатыОстатки.ДоговорКонтрагента.Владелец В ИЕРАРХИИ (&Контрагент) " ; КонецЕсли; запрос.УстановитьПараметр("Контрагент",Контрагент); КонецЕсли; Если Не ЗначениеНеЗаполнено(Менеджер) тогда Текстзапроса=" Выбрать Подзапрос.* ИЗ ("+ТекстЗапроса+") КАК Подзапрос Где Подзапрос.Менеджер=&Менеджер"; Запрос.УстановитьПараметр("Менеджер",Менеджер); КонецЕсли; ТекстЗапроса=ТекстЗапроса+" | |УПОРЯДОЧИТЬ ПО | Организация, | Менеджер,"; Если Не ЗначениеНеЗаполнено(Менеджер) тогда текстзапроса=ТекстЗапроса+"Подзапрос.Контрагент.Наименование, Подзапрос.КредитныйДокумент.Дата"; Иначе текстзапроса=ТекстЗапроса+"ОтгрузкиОплатыОстатки.ДоговорКонтрагента.Владелец.Наименование, ОтгрузкиОплатыОстатки.КредитныйДокумент.Дата"; КонецЕсли; Текстзапроса=ТекстЗапроса+" |ИТОГИ | СУММА(СуммаОстаток) |ПО | Организация, | Менеджер, | Контрагент, | Отклонение, | КредитныйДокумент"; Запрос.Текст=ТекстЗапроса; Запрос.УстановитьПараметр("ДатаОтчета",КонецДня(ДатаОтчета)); Запрос.УстановитьПараметр("Организация",Организация); Выборка=Запрос.Выполнить().Выбрать(); пока выборка.Следующий() цикл Если Выборка.ТипЗаписи()=ТипЗаписиЗапроса.ИтогПоГруппировке тогда Если Выборка.Уровень()=0 тогда //Организация СтрокаОрганизация=ТаблицаДолгов.Добавить(); СтрокаОрганизация.Группировка=Выборка.Группировка(); СтрокаОрганизация.Организация=Выборка.Организация; ИначеЕсли Выборка.Уровень()=1 тогда //Менагер СтрокаМенеджер=ТаблицаДолгов.Добавить(); СтрокаМенеджер.Группировка=Выборка.Группировка(); СтрокаМенеджер.Менеджер=Выборка.Менеджер; ИначеЕсли Выборка.Уровень()=2 тогда //Контрагент СтрокаКонтрагент=ТаблицаДолгов.Добавить(); СтрокаКонтрагент.Группировка=Выборка.Группировка(); СтрокаКонтрагент.Контрагент=Выборка.Контрагент; ИначеЕсли Выборка.Уровень()=4 тогда //Документ СтрокаТаблицы=ТаблицаДолгов.Добавить(); Если Выборка.Отклонение>12 Тогда СтрокаТаблицы.Долг13=Выборка.СуммаОстаток; СтрокаОрганизация.Долг13=СтрокаОрганизация.Долг13+Выборка.СуммаОстаток; СтрокаМенеджер.Долг13=СтрокаМенеджер.Долг13+Выборка.СуммаОстаток; СтрокаКонтрагент.Долг13=СтрокаКонтрагент.Долг13+Выборка.СуммаОстаток; Иначе СтрокаТаблицы["Долг"+строка(Выборка.Отклонение)]=Выборка.СуммаОстаток; СтрокаОрганизация["Долг"+строка(Выборка.Отклонение)]=СтрокаОрганизация["Долг"+строка(Выборка.Отклонение)]+Выборка.СуммаОстаток; СтрокаКонтрагент["Долг"+строка(Выборка.Отклонение)]=СтрокаКонтрагент["Долг"+строка(Выборка.Отклонение)]+Выборка.СуммаОстаток; СтрокаМенеджер["Долг"+строка(Выборка.Отклонение)]=СтрокаМенеджер["Долг"+строка(Выборка.Отклонение)]+Выборка.СуммаОстаток; КонецЕсли; СтрокаТаблицы.Группировка=Выборка.Группировка(); СтрокаТаблицы.Организация=Выборка.Организация; СтрокаТаблицы.Менеджер=Выборка.Менеджер; СтрокаТаблицы.Контрагент=Выборка.Контрагент; СтрокаТаблицы.Контрагент=Выборка.Контрагент; СтрокаТаблицы.КредитныйДокумент=Выборка.КредитныйДокумент; КонецЕсли; КонецЕсли; Конеццикла; Зеленый=новый цвет(224, 255, 224); Желтый=новый цвет(255, 255, 192); Красный=новый цвет(255, 224, 124); Отчет=Новый ТабличныйДокумент(); Макет=ПолучитьМакет("Макет"); Область=Макет.ПолучитьОбласть("Шапка"); Область.Параметры.ЗаголовокОтчета="Задолженность по менеджерам на "+Формат(ДатаОтчета,"ДЛФ=Д"); Область.Параметры.Организация="Фирма : "+Организация.Наименование; Область.Параметры.Организация="Контрагент : "+?(ЗначениеНеЗаполнено(Контрагент),"По всем",Контрагент.Наименование); Область.Параметры.Менеджер="Контрагент : "+?(ЗначениеНеЗаполнено(Менеджер),"По всем",Менеджер.Наименование); Отчет.Вывести(Область); НачатаОрганизация=Ложь; НачатаМенеджер=Ложь; НачатаКонтрагент=Ложь; Для каждого Строкатаблицы из ТаблицаДолгов цикл Область=Макет.ПолучитьОбласть("строка"); Область.Параметры.Заполнить(СтрокаТаблицы); Область.Параметры.Представление=ПолучитьсвойствоОбъекта(СтрокаТаблицы,Строкатаблицы.Группировка); Если Строкатаблицы.Группировка="Организация" тогда Область.области.Данные.ЦветФона=Красный; Область.Области.Представление.Отступ=0; Если НачатаКонтрагент тогда Отчет.ЗакончитьГруппуСтрок(); НачатаКонтрагент=Ложь; КонецЕсли; Если НачатаМенеджер тогда Отчет.ЗакончитьГруппуСтрок(); НачатаМенеджер=Ложь; КонецЕсли; Если НачатаОрганизация тогда Отчет.ЗакончитьГруппуСтрок(); НачатаОрганизация=Ложь; КонецЕсли; Отчет.Вывести(Область); Отчет.НачатьГруппуСтрок("Организация"); НачатаОрганизация=Истина; ИначеЕсли Строкатаблицы.Группировка="Менеджер" тогда Область.области.Данные.ЦветФона=Зеленый; Область.Области.Представление.Отступ=1; Если НачатаКонтрагент тогда Отчет.ЗакончитьГруппуСтрок(); НачатаКонтрагент=Ложь; КонецЕсли; Если НачатаМенеджер тогда Отчет.ЗакончитьГруппуСтрок(); НачатаМенеджер=Ложь; КонецЕсли; Отчет.Вывести(Область); Отчет.НачатьГруппуСтрок("Менеджер"); НачатаМенеджер=Истина; ИначеЕсли Строкатаблицы.Группировка="Контрагент" тогда Область.области.Данные.ЦветФона=Желтый; Область.Области.Представление.Отступ=2; Если НачатаКонтрагент тогда Отчет.ЗакончитьГруппуСтрок(); НачатаКонтрагент=Ложь; КонецЕсли; Отчет.Вывести(Область); Отчет.НачатьГруппуСтрок("Контрагент");; НачатаКонтрагент=Истина; Иначе Область.Области.Представление.Отступ=3; Область.Параметры.Представление=ПредставлениеДокумента(ПолучитьсвойствоОбъекта(СтрокаТаблицы,Строкатаблицы.Группировка),Истина); Область.Параметры.Расшифровка=ПолучитьсвойствоОбъекта(СтрокаТаблицы,Строкатаблицы.Группировка); Отчет.Вывести(Область); КонецЕсли; Конеццикла; Если НачатаКонтрагент тогда Отчет.ЗакончитьГруппуСтрок(); НачатаКонтрагент=Ложь; КонецЕсли; Если НачатаМенеджер тогда Отчет.ЗакончитьГруппуСтрок(); НачатаМенеджер=Ложь; КонецЕсли; Если НачатаОрганизация тогда Отчет.ЗакончитьГруппуСтрок(); НачатаОрганизация=Ложь; КонецЕсли; Отчет.АвтоМасштаб=Истина; Отчет.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; Отчет.ТолькоПросмотр=Истина; Отчет.ОтображатьСетку=Ложь; Отчет.ФиксацияСверху=8; Отчет.ФиксацияСлева=2; Отчет.Показать(); КонецПроцедуры ДатаОтчета=РабочаяДата; Организация=ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация"); Если Организация.ссылка=Справочники.Организации.ПустаяСсылка() тогда Выборка=Справочники.Организации.Выбрать(); Выборка.Следующий(); Организация=Выборка.Ссылка; КонецЕсли; ЭлементыФормы.НадписьВнимание.Заголовок="Внимание! Результаты отчета зависят от правильной последовательности документов"+символы.ПС+"Текущая последовательность : "+Строка(Последовательности.ПартионныйУчет.ПолучитьГраницу().Дата); |
|||
1
program345
19.12.14
✎
12:41
|
||||
2
program345
19.12.14
✎
12:42
|
Интересует поле Менеджер.
|
|||
3
antoneus
19.12.14
✎
12:43
|
ВыборГруппИЭлементов
|
|||
4
Жан Пердежон
19.12.14
✎
12:45
|
(0) зачем здесь этот код? это в свойствах реквизита настраивается
|
|||
5
program345
19.12.14
✎
12:55
|
ВыборГруппИЭлементов установлено значение Группы и элементы.
Не работает, ни одного ни выдает. Пустая таблица, А если выбераю менеджера - все ок. |
|||
6
antoneus
19.12.14
✎
12:58
|
Где Подзапрос.Менеджер=&Менеджер
Где Подзапрос.Менеджер в иерархии(&Менеджер) |
|||
7
program345
19.12.14
✎
13:02
|
(6) спасибо, работает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |