Имя: Пароль:
1C
 
Как это сделать в СКД?
0 Масянька
 
07.12.23
08:49
Доброе утро!
Простой запрос:
ВЫБРАТЬ
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период КАК Период,
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник КАК Сотрудник,
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени КАК ВидУчетаВремени,
    ВЫБОР
        КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&СписокЧасовогоВремени)
            ТОГДА 0
        ИНАЧЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Дни
    КОНЕЦ КАК Дни,
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Часы КАК Часы,
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Регистратор КАК Регистратор,
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени.ОсновноеВремя КАК ВидУчетаВремениОсновноеВремя,
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени.БуквенныйКод КАК ВидУчетаВремениБуквенныйКод
ИЗ
    РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК ДанныеТабельногоУчетаРабочегоВремениСотрудников
ГДЕ
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    И НЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&ЯвкиИВыходные)

УПОРЯДОЧИТЬ ПО
    ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник

Второе условие: И НЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&ЯвкиИВыходные) - хочу сделать через флажки на форме отчета: установлен флажок "Выводить явки" в параметр ЯвкиИВыходные добавляется вид времени "Явки". Аналогично с выходными.
Как?
Спасибо.
1 SleepyHead
 
гуру
07.12.23
08:52
Ну, как вариант - сделай параметр "ПорядокУчетаЯвокИВыходных" в режиме выбора из списка

Для пользователя это будет наглядно
Значением может быть число, представлением - что угодно.

0 - Явки и выходные
1 - Только явки
2 - Только выходные

и в зависимости от его значения строй условие в запросе, например так

ВЫБОР КОГДА &порядокУчетаЯвокВыходных=0
ТОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (Значение(Справочник.ВидыУчераРабочегоВремени.Явка),Значение(Справочник.ВидыУчераРабочегоВремени.Выходной)
)
...
2 toypaul
 
гуру
07.12.23
09:05
Добавить параметры, отображать их на форме, в при компоновке их анализировать и формировать список. С отображением будет конечно отдельная проблема ... просто так параметр флажком не сделать
3 Масянька
 
07.12.23
09:28
(1) Получается так:
    Если (ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&СписокЧасовогоВремени)) Тогда 0
    ИначеЕсли (ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени = Справочники.ВидыИспользованияРабочегоВремени.Явка И &Явки = Ложь) Тогда 0
    ИначеЕсли (ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени = Справочники.ВидыИспользованияРабочегоВремени.ВыходныеДни И &Выходные = Ложь) Тогда 0
    Иначе
        ДанныеТабельногоУчетаРабочегоВремениСотрудников.Дни
    КонецЕсли;

Как в запрос правильно воткнуть?
4 SleepyHead
 
гуру
07.12.23
09:58
Если надо заменить на ВЫБОР КОГДА

Выбор КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&СписокЧасовогоВремени) Тогда 0
КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени = Значение(Справочник.ВидыИспользованияРабочегоВремени.Явка) И &Явки = Ложь Тогда 0
КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени = Значение(Справочник.ВидыИспользованияРабочегоВремени.ВыходныеДни И &Выходные = Ложь Тогда 0
    Иначе
        ДанныеТабельногоУчетаРабочегоВремениСотрудников.Дни
    Конец
5 Масянька
 
07.12.23
10:01
(4) Вельми понеже ©
Огромное человеческое спасибо!
6 toypaul
 
гуру
07.12.23
11:16
(3),(4) что за ужос вы тут пишете. был же нормальный запрос в (0)
7 SleepyHead
 
гуру
07.12.23
11:25
(6)

Конечно,  можно сделать список значений в качестве параметра и туда вносить лишние виды времени

Но я представляю лицо марьиванны, когда ей такое предложишь.

А перехват события ПриКомпоновке ТС (видимо) не хочет)
8 Масянька
 
07.12.23
11:41
(2) Как добавить параметры на форму?
9 SleepyHead
 
гуру
07.12.23
11:42
(8) так в УФ они сами добавляются. А у тебя что?
10 Масянька
 
07.12.23
11:45
По-моему, получается каменный цветок 🤨
11 АгентБезопасной Нацио
 
07.12.23
12:00
а почему не  добавить еще условие?
  И НЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&ЯвкиИВыходные) // тут всё, без явок и выходных
И НЕ (ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени = &Явки  И &ФлагЯвки)
И НЕ (ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени = &Выходные  И &ФлагВыходные)
Параметры СКД &Явки и &Выходные - заполнить и сделать недоступными. а параметры &ФлагЯвки и &ФлагВыходные - сделать доступными и в пользовательских настройках?
12 Масянька
 
07.12.23
15:44
Не совсем...
На форме появились явки и выходные, а вот изменение (да/нет ан форме) не срабатывает.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СписокВидовЧасовогоВремени = Новый СписокЗначений;
    
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Вечерние часы"));
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Вечерние часы ВРО"));
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Вечерние часы РВ"));
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Ночные часы"));
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Ночные часы НРО"));
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Ночные часы РВ"));
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Праздники"));
    СписокВидовЧасовогоВремени.Добавить(Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Простой, не зависящий от работодателя и работника"));

    ПараметрВыходные = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Выходные"));    
    ПараметрЯвки      = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Явки"));    
сообщить("" + ПараметрВыходные.Значение + " / " + ПараметрЯвки.Значение);    

    СписокЯвокИВыходных = Новый СписокЗначений;
    
    Если (ПараметрВыходные.Значение = ЛОЖЬ) Тогда
        СписокЯвокИВыходных.Добавить(Справочники.ВидыИспользованияРабочегоВремени.ВыходныеДни);
    КонецЕсли;
    
    если (ПараметрЯвки.Значение = ЛОЖЬ) Тогда
        СписокЯвокИВыходных.Добавить(Справочники.ВидыИспользованияРабочегоВремени.Явка);
    КонецЕсли;
    
    Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных;
    Параметры.УстановитьЗначениеПараметра("СписокЧасовогоВремени",     СписокВидовЧасовогоВремени);
    Параметры.УстановитьЗначениеПараметра("ЯвкиИВыходные",             СписокЯвокИВыходных);

    ЗарплатаКадрыОтчеты.ПриКомпоновкеРезультатаВТабличныйДокумент(ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка, Ложь);
    
КонецПроцедуры

В независимости от того, что выбрано на форме (да или нет) - всегда Нет.
13 Масянька
 
07.12.23
15:45
+(12) Форма - https://postimg.cc/Jsy171ZH
14 Масянька
 
07.12.23
15:52
Вообще фигня какая-то получается...всё, что в списке часового времени тоже не выводится...
15 toypaul
 
гуру
07.12.23
15:53
КомпоновщикНастроек.ПолучитьНастройки() - и отсюда затем берем все что нужно
16 lEvGl
 
гуру
07.12.23
16:04
(15) как бы да, в интерфейсе как хочется получить список/массив и при каком нибудь событии назначить его параметру
+ по-моему получитьнастройки - копирует настройки в переменную, а можно Настройки.УстановитьЗначениеПараметра(Список), как то так было
17 Масянька
 
07.12.23
16:12
(15) Спасибо! 😘
18 Масянька
 
07.12.23
16:18
А вариант упорядочить параметры на форме?
Основная теорема систематики: Новые системы плодят новые проблемы.