Имя: Пароль:
1C
1С v8
Как обойти циклом по каждой колонке по отдельности
,
0 Nepredumal
 
13.05.20
10:29
добрый день ,помогите пжлста как как обойти циклом по каждой колонке по отдельности,и в каждой колонке выделять мин и макс
1 Fish
 
13.05.20
10:33
Изложите более подробно задачу: что за колонки, что означает выделять мин и макс? УФ или ОФ и т.д.
2 Nepredumal
 
13.05.20
10:38
Есть тз,в ней есть числа,я выделяю для всех колонок максимальное и минимальное значение ,а мне нужно чтобы по каждой колонке выделить мин и макс,это отчет оф
3 Fish
 
13.05.20
10:42
(2) "это отчет оф" - Отчет на СКД?
4 Nepredumal
 
13.05.20
10:42
нет,обычный
5 Михаил Козлов
 
13.05.20
10:45
Опять непонятно: если отчет, то это табличный документ - при чем здесь таблица значений.
Как формируете отчет: сами выводите по макету или штатный, скажем Универсальный отчет. Очевидное, что приходит в голову: найдите и запомните мин/макс в каждой колонке (в тз) и при выводе отчета выделите их.
Если речь о том, как найти мин/макс в каждой колонке ТЗ, то циклом по колонкам и в нем циклом по строкам.
6 Ненавижу 1С
 
гуру
13.05.20
10:51
(5) отчет это НЕ табличный документ
7 Nepredumal
 
13.05.20
10:54
(5) Да именно это меня и интересовало ,как найти и запомнить макс и мин
8 WhiteDragon93
 
13.05.20
11:05
(7) написать запрос к ТЗ с функциями МИНИМУМ и МАКСИМУМ для каждой колонки.
9 WhiteDragon93
 
13.05.20
11:08
+ (8)

ВЫБРАТЬ
    МИНИМУМ(ТЗДляОбработки.Колонка1) КАК МинимумКолонка1,
    МАКСИМУМ(ТЗДляОбработки.Колонка1) КАК МаксимумКолонка1,
    МИНИМУМ(ТЗДляОбработки.Колонка2) КАК МинимумКолонка2,
    МАКСИМУМ(ТЗДляОбработки.Колонка2) КАК МаксимумКолонка2
ИЗ
    &ТЗДляОбработки КАК ТЗДляОбработки
10 Nepredumal
 
13.05.20
11:10
Колонки динамически создаются
11 Nepredumal
 
13.05.20
11:17
ДанныеСотрудниковЗапериод = Новый Структура ;
    
    СписокСотрудников = Новый Массив ;
    Для Каждого Стр Из Сотрудники Цикл
        Если Стр.Выбран Тогда
            СписокСотрудников.Добавить(Стр.Сотрудник) ;
        КонецЕсли;
    КонецЦикла;
    
    СоотПоказателейКИменамВЗапросе = Новый Соответствие ;
    СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.ОбщиеВремяЗвонка,            "ВремяЗвонков") ;
    СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.КоличествоВходящихЗвонков,    "Входящее") ;
    СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.КоличествоИсходящихЗвонков,    "Исходящее") ;
    СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.КоличествоЗаказов,            "КоличествоЗаказов") ;
    СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.ОбщаяСуммаЗаказа,            "СуммаЗаказов") ;
    СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.НизкаяАктивность,            "СлабаяАктивность") ;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Пользователи.Ссылка КАК Пользователь,
        |    ЕСТЬNULL(Званки.ВремяЗвонков, 0) КАК ВремяЗвонков,
        |    ЕСТЬNULL(Званки.Входящее, 0) КАК Входящее,
        |    ЕСТЬNULL(Званки.Исходящее, 0) КАК Исходящее,
        |    ЕСТЬNULL(Заказы.КоличествоЗаказов, 0) КАК КоличествоЗаказов,
        |    ЕСТЬNULL(Заказы.СуммаЗаказов, 0) КАК СуммаЗаказов,
        |    ЕСТЬNULL(Активность.СлабаяАктивность, 0) КАК СлабаяАктивность,
        |    МАКСИМУМ(ЕСТЬNULL(Званки.ВремяЗвонков, 0) + ЕСТЬNULL(Званки.Входящее, 0) + ЕСТЬNULL(Званки.Исходящее, 0) + ЕСТЬNULL(Заказы.КоличествоЗаказов, 0) + ЕСТЬNULL(Заказы.СуммаЗаказов, 0) + ЕСТЬNULL(Активность.СлабаяАктивность, 0)) КАК Поле1,
        |    МИНИМУМ(ЕСТЬNULL(Званки.ВремяЗвонков, 0) + ЕСТЬNULL(Званки.Входящее, 0) + ЕСТЬNULL(Званки.Исходящее, 0) + ЕСТЬNULL(Заказы.КоличествоЗаказов, 0) + ЕСТЬNULL(Заказы.СуммаЗаказов, 0) + ЕСТЬNULL(Активность.СлабаяАктивность, 0)) КАК Поле2
        |ИЗ
        |    Справочник.Пользователи КАК Пользователи
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            Событие.Ответственный КАК Пользователь,
        |            СУММА(РАЗНОСТЬДАТ(Событие.НачалоСобытия, Событие.ОкончаниеСобытия, СЕКУНДА)) КАК ВремяЗвонков,
        |            СУММА(ВЫБОР
        |                    КОГДА Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Входящее)
        |                        ТОГДА 1
        |                    ИНАЧЕ 0
        |                КОНЕЦ) КАК Входящее,
        |            СУММА(ВЫБОР
        |                    КОГДА Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Исходящее)
        |                        ТОГДА 1
        |                    ИНАЧЕ 0
        |                КОНЕЦ) КАК Исходящее
        |        ИЗ
        |            Документ.Событие КАК Событие
        |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияЗвонков КАК ИсторияЗвонков
        |                ПО Событие.ИдЗвонка = ИсторияЗвонков.ИДЗвонка
        |                    И (ИсторияЗвонков.ВидНеобработаногоЗвонка = ЗНАЧЕНИЕ(Перечисление.ВидыНеобработаныхЗвонков.Недозвон))
        |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИзбранныеКонтрагентыДляКнигиТелефонии КАК ИзбранныеКонтрагентыДляКнигиТелефонии
        |                ПО Событие.Контрагент = ИзбранныеКонтрагентыДляКнигиТелефонии.Контрагент
        |        ГДЕ
        |            Событие.Дата МЕЖДУ &НачалоПериода И &КонецПериода
        |            И Событие.Ответственный В(&Сотрудник)
        |            И РАЗНОСТЬДАТ(Событие.НачалоСобытия, Событие.ОкончаниеСобытия, МИНУТА) <= 70
        |            И Событие.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыСобытий.ТелефонныйЗвонок)
        |            И НЕ Событие.НачалоСобытия = ДАТАВРЕМЯ(1, 1, 1)
        |            И НЕ Событие.ОкончаниеСобытия = ДАТАВРЕМЯ(1, 1, 1)
        |            И Событие.НачалоСобытия < Событие.ОкончаниеСобытия
        |            И ИсторияЗвонков.ВидНеобработаногоЗвонка ЕСТЬ NULL
        |            И ИзбранныеКонтрагентыДляКнигиТелефонии.Контрагент ЕСТЬ NULL
        |        
        |        СГРУППИРОВАТЬ ПО
        |            Событие.Ответственный) КАК Званки
        |        ПО (Званки.Пользователь = Пользователи.Ссылка)
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            ЗаказПокупателя.Ответственный КАК Пользователь,
        |            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказПокупателя.Ссылка) КАК КоличествоЗаказов,
        |            СУММА(ЗаказПокупателя.СуммаДокумента) КАК СуммаЗаказов
        |        ИЗ
        |            Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |        ГДЕ
        |            ЗаказПокупателя.Ответственный В(&Сотрудник)
        |            И ЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода
        |            И НЕ ЗаказПокупателя.ПометкаУдаления
        |            И НЕ ЗаказПокупателя.СтатусЗаказа.СтатусОтмена
        |        
        |        СГРУППИРОВАТЬ ПО
        |            ЗаказПокупателя.Ответственный) КАК Заказы
        |        ПО (Заказы.Пользователь = Пользователи.Ссылка)
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            СлабаяАктивностьМенеджеров.Менеджер КАК Пользователь,
        |            КОЛИЧЕСТВО(СлабаяАктивностьМенеджеров.ВидСобытия) КАК СлабаяАктивность
        |        ИЗ
        |            РегистрСведений.СлабаяАктивностьМенеджеров КАК СлабаяАктивностьМенеджеров
        |        ГДЕ
        |            СлабаяАктивностьМенеджеров.Период МЕЖДУ &НачалоПериода И &КонецПериода
        |            И СлабаяАктивностьМенеджеров.Менеджер В(&Сотрудник)
        |        
        |        СГРУППИРОВАТЬ ПО
        |            СлабаяАктивностьМенеджеров.Менеджер) КАК Активность
        |        ПО Пользователи.Ссылка = Активность.Пользователь
        |ГДЕ
        |    Пользователи.Ссылка В(&Сотрудник)
        |
        |СГРУППИРОВАТЬ ПО
        |    Пользователи.Ссылка,
        |    ЕСТЬNULL(Званки.ВремяЗвонков, 0),
        |    ЕСТЬNULL(Званки.Входящее, 0),
        |    ЕСТЬNULL(Званки.Исходящее, 0),
        |    ЕСТЬNULL(Заказы.КоличествоЗаказов, 0),
        |    ЕСТЬNULL(Заказы.СуммаЗаказов, 0),
        |    ЕСТЬNULL(Активность.СлабаяАктивность, 0)";
    
    Запрос.УстановитьПараметр("Сотрудник",        СписокСотрудников);
    Запрос.УстановитьПараметр("НачалоПериода",    НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода",    КонецПериода);    
    
    
    СоотвествиеМин= новый Соответствие ;
    СоотвествиеМакс= новый Соответствие ;

    РезультатЗапроса = Запрос.Выполнить();
    Выб = РезультатЗапроса.Выбрать();
    Пока Выб.Следующий() Цикл
        
        ТекущийПоказательПользователя = 0 ;
        ИмяКолонкиСотрудникаВРасшифровке = НумерацияСотрудников.Получить(Выб.Пользователь) ;        
        
        Для Каждого Стр Из Показатели Цикл
            Если Стр.Выбран Тогда
                
                Если Стр.Показатель = Перечисления.ПоказателиСотрудников.НизкаяАктивность Тогда
                    ТекущийПоказательПользователя = ТекущийПоказательПользователя + Выб[СоотПоказателейКИменамВЗапросе.Получить(Стр.Показатель)] * Стр.Коэффициент * -1;                
                Иначе
                    ТекущийПоказательПользователя = ТекущийПоказательПользователя + Выб[СоотПоказателейКИменамВЗапросе.Получить(Стр.Показатель)] * Стр.Коэффициент ;                
                КонецЕсли;
                
            КонецЕсли;
        КонецЦикла;
        
        ДанныеСотрудниковЗапериод.Вставить(ИмяКолонкиСотрудникаВРасшифровке, ТекущийПоказательПользователя) ;
        
        МинимальныйПоказательПоСотруднику = Мин(МинимальныйПоказательПоСотруднику, ?(ТекущийПоказательПользователя = 0, МинимальныйПоказательПоСотруднику, ТекущийПоказательПользователя)) ;
        МаксимальныйПоказательПоСотруднику = Макс(МаксимальныйПоказательПоСотруднику, ?(ТекущийПоказательПользователя = 0, МаксимальныйПоказательПоСотруднику, ТекущийПоказательПользователя)) ;

    КонецЦикла;
    
    
    
    
    Возврат ДанныеСотрудниковЗапериод ;
12 Lexey_
 
13.05.20
11:57
(11) Званки..
13 Йохохо
 
13.05.20
12:09
(12) Званки это ЛИДы
14 kda26
 
13.05.20
12:14
Воронка продаж о_О
15 mistеr
 
13.05.20
13:22
(7) Создать два массива длиной по количеству колонок. Пройти циклом по ТЗ, считать мин и макс, сохранять в массивах.
16 Chameleon1980
 
13.05.20
14:08
{10) запрос тоже можно динамически собрать
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший