Имя: Пароль:
1C
 
как в обработке выбрать не конкретного кон-та, а группу?
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
http://hkar.ru/xi0W

форма
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) спасибо, работает