8.х Отчет: Отбор только количество рабочих дней

Тема в разделе "Система компоновки данных (СКД)", создана пользователем apx_egor, 15 сен 2015.

  1. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Добрый день Уважаемые. Возник вопрос, как в столбце Количество выкинуть выходные дни и оставить только рабочие, т.е. отпуск 24 дня, а сейчас считывает 28 вместе с выходными?

    Вложения:

  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну отпуск считается по календарным дням вот и пишет 28. как положено.
    Что бы исправить, надо запрос исправлять.
    Варинтов несколько - всезависит от того как у Вас запрос написан
  3. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Столбец Количество получает данные из это функции Описание
    Код:
    Функция ПолучитьТаблицуОписанияОтпусков()
       
        ТаблицаОписаний = Новый ТаблицаЗначений;
        ТаблицаОписаний.Колонки.Добавить("Сотрудник");
        ТаблицаОписаний.Колонки.Добавить("НачалоИнтервала");
        ТаблицаОписаний.Колонки.Добавить("КонецИнтервала");
        ТаблицаОписаний.Колонки.Добавить("Описание");
        ТаблицаОписаний.Колонки.Добавить("ДнейОтпуска");
        ТаблицаОписаний.Колонки.Добавить("ОтпускАвансом");
        ТаблицаОписаний.Колонки.Добавить("ВидЕжегодногоОтпуска");
        ТаблицаОписаний.Колонки.Добавить("Учет");
    
        ПараметрНачалоПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
        ПараметрКонецПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
       
        Если ПараметрНачалоПериода = Неопределено или ПараметрКонецПериода = Неопределено тогда
            Возврат ТаблицаОписаний;
        Иначе
            НачалоПериода = ПараметрНачалоПериода.Значение;
            КонецПериода  = ПараметрКонецПериода.Значение;
        КонецЕсли;
       
        Если НачалоПериода = '00010101' или КонецПериода = '00010101' или КонецПериода < НачалоПериода тогда
            Возврат ТаблицаОписаний;
        КонецЕсли;
    
        Запрос = Новый Запрос;
        Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
        Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
        Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
        Запрос.УстановитьПараметр("ДатаПослеНачала", КонецДня(НачалоПериода) + 1);
        Запрос.УстановитьПараметр("ТекущаяДата", ОбщегоНазначения.ПолучитьРабочуюДату());
        Запрос.УстановитьПараметр("ДатаСведений", КонецПериода);
       
        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |Данные.ФизЛицо КАК Сотрудник,
        |Данные.Сотрудник КАК Сотр,
        |Данные.Сотрудник.Наименование КАК Имя,
        |Данные.ВидЕжегодногоОтпуска Как ВидЕжегодногоОтпуска,
        |НАЧАЛОПЕРИОДА(Данные.НачалоИнтервала, ДЕНЬ) КАК ДатаНачала,
        |КОНЕЦПЕРИОДА(Данные.КонецИнтервала, ДЕНЬ) КАК ДатаОкончания,
        |Данные.Учет,
        |Данные.Серия
        |ИЗ ("+ПолучитьТекстЗапросПоОтпускам(Запрос)+") КАК Данные
        |ГДЕ Данные.Учет = ""ПоУпрУчету""";
       
        ТаблицаПериодов = Запрос.Выполнить().Выгрузить();
       
        Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
        //Запрос.МенеджерВременныхТаблиц.Закрыть();
        //ПостроительЗапросов = Новый ПостроительЗапроса;
        //ПостроительЗапросов.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначений);
        //
        //ПостроительЗапросов.Выполнить();
       
        //ТаблицаПериодов = ПостроительЗапросов.Результат.Выгрузить();
        СписокСотрудников = ТаблицаПериодов.Скопировать(,"Сотрудник, Сотр");
        СписокСотрудников.Свернуть("Сотрудник, Сотр");
        ТаблицаПериодов.Свернуть("сотрудник, ДатаНачала, ДатаОкончания");
       
        МассивТипов = Новый Массив;
        МассивТипов.Добавить(Тип("Число"));
        МассивТипов.Добавить(Тип("Null"));
        ОписаниеТипа = Новый ОписаниеТипов(Новый ОписаниеТипов(), МассивТипов);
        ТаблицаПериодов.Колонки.Добавить("НомерСтроки", ОписаниеТипа);
       
        Для сч = 0 по ТаблицаПериодов.Количество()-1 Цикл
            СтрокаТаблицыПериодов = ТаблицаПериодов[сч];
            СтрокаТаблицыПериодов.НомерСтроки = сч+1;
        КонецЦикла;
       
        ВыборкаПоОстаткам = ПроцедурыУправленияПерсоналомДополнительный.ПодготовитьДанныеПоУправленческимОтпускам(ТаблицаПериодов, Истина, , Истина);
       
        Пока ВыборкаПоОстаткам.Следующий() Цикл
            СтрокаТаблицыОписания                 = ТаблицаОписаний.Добавить();
            СтрокаТаблицыОписания.Сотрудник       = СписокСотрудников.Найти(ВыборкаПоОстаткам.ФизЛицо, "Сотрудник").Сотр;
            СтрокаТаблицыОписания.НачалоИнтервала = ВыборкаПоОстаткам.ДатаНачала;
            СтрокаТаблицыОписания.КонецИнтервала  = ВыборкаПоОстаткам.ДатаОкончания;
            СтрокаТаблицыОписания.Описание        = ПроцедурыУправленияПерсоналомПереопределяемый.ВернутьОписаниеОтпускаДляОтчетаОтпусков(ВыборкаПоОстаткам, Истина);
            СтрокаТаблицыОписания.ДнейОтпуска     = ВыборкаПоОстаткам.ДнейОтпуска;
            СтрокаТаблицыОписания.ОтпускАвансом   = ВыборкаПоОстаткам.ОтпускАвансом;
            СтрокаТаблицыОписания.ВидЕжегодногоОтпуска = "";
            СтрокаТаблицыОписания.Учет = "ПоУпрУчету";
        КонецЦикла;
       
        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |Данные.Сотрудник КАК Сотрудник,
        |Данные.Сотрудник.НАименование КАК Имя,
        |Данные.ВидЕжегодногоОтпуска Как ВидЕжегодногоОтпуска,
        |НАЧАЛОПЕРИОДА(Данные.НачалоИнтервала, ДЕНЬ) КАК ДатаНачала,
        |КОНЕЦПЕРИОДА(Данные.КонецИнтервала, ДЕНЬ) КАК ДатаОкончания,
        |Данные.Учет,
        |Данные.Серия
        |ИЗ ("+ПолучитьТекстЗапросПоОтпускам(Запрос)+") КАК Данные
        |ГДЕ Данные.Учет = ""ПоРеглУчету"" И Данные.Серия = ""Факт""";
       
        ТаблицаПериодов = Запрос.Выполнить().Выгрузить();
       
        ТаблицаПериодов.Свернуть("сотрудник, ВидЕжегодногоОтпуска, ДатаНачала, ДатаОкончания");
       
        МассивТипов = Новый Массив;
        МассивТипов.Добавить(Тип("Число"));
        МассивТипов.Добавить(Тип("Null"));
        ОписаниеТипа = Новый ОписаниеТипов(Новый ОписаниеТипов(), МассивТипов);
        ТаблицаПериодов.Колонки.Добавить("НомерСтроки", ОписаниеТипа);
       
        Для сч = 0 по ТаблицаПериодов.Количество()-1 Цикл
            СтрокаТаблицыПериодов = ТаблицаПериодов[сч];
            СтрокаТаблицыПериодов.НомерСтроки = сч+1;
        КонецЦикла;
       
        ВыборкаПоОстаткам = ПроцедурыУправленияПерсоналом.ПодготовитьДанныеПоРегламентированнымОтпускам(ТаблицаПериодов, , Ложь, );
       
        Пока ВыборкаПоОстаткам.Следующий() Цикл
            СтрокаТаблицыОписания                 = ТаблицаОписаний.Добавить();
            СтрокаТаблицыОписания.Сотрудник       = ВыборкаПоОстаткам.Сотрудник;
            СтрокаТаблицыОписания.НачалоИнтервала = ВыборкаПоОстаткам.ДатаНачала;
            СтрокаТаблицыОписания.КонецИнтервала  = ВыборкаПоОстаткам.ДатаОкончания;
            СтрокаТаблицыОписания.Описание        = ПроцедурыУправленияПерсоналомПереопределяемый.ВернутьОписаниеОтпускаДляОтчетаОтпусков(ВыборкаПоОстаткам, Ложь);
            СтрокаТаблицыОписания.ДнейОтпуска     = ВыборкаПоОстаткам.ДнейОтпуска;
            СтрокаТаблицыОписания.ОтпускАвансом   = ВыборкаПоОстаткам.ОтпускАвансом;
            СтрокаТаблицыОписания.ВидЕжегодногоОтпуска = ВыборкаПоОстаткам.ВидЕжегодногоОтпуска;
            СтрокаТаблицыОписания.Учет = "ПоРеглУчету";
        КонецЦикла;
       
        Возврат ТаблицаОписаний;
       
    КонецФункции
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Покажите функцию ПолучитьТекстЗапросПоОтпускам(Запрос)
  5. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Код:
    Функция ПолучитьТекстЗапросПоОтпускам(Запрос)
       
        СписокПолей = Новый СписокЗначений;
        СписокПолей.Добавить("Серия");
        СписокПолей.Добавить("Учет");
        СписокПолей.Добавить("ФизЛицо");
        СписокПолей.Добавить("Сотрудник");
        СписокПолей.Добавить("ВидЕжегодногоОтпуска");
       
        СтрокаУсловияПоля = ПолучитьСтрокуОтбора(СписокПолей, Запрос);
       
        ГрафикОтпусков = СхемаКомпоновкиДанных.НаборыДанных.Данные.Элементы.ГрафикОтпусков.Запрос;
        //ГрафикОтпусков = СтрЗаменить(ЗапросСКД, "РАЗРЕШЕННЫЕ", "");
        ГрафикОтпусков = ВставитьПоместить(ГрафикОтпусков, "ГрафикОтпусков");
        Запрос.Текст = ГрафикОтпусков + ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ГрафикОтпусков"), "");
        Запрос.Выполнить();
       
        //2.
        ФактическиеОтпуска = СхемаКомпоновкиДанных.НаборыДанных.Данные.Элементы.ФактическиеОтпуска.Запрос;
        ФактическиеОтпуска = ВставитьПоместить(ФактическиеОтпуска, "ФактическиеОтпуска");
        Запрос.Текст = ФактическиеОтпуска + ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ФактическиеОтпуска"), "");
    
        Запрос.Выполнить();
       
        //3.
        ГрафикОтпусковРаботниковОрганизаций = СхемаКомпоновкиДанных.НаборыДанных.Данные.Элементы.ГрафикОтпусковРаботниковОрганизаций.Запрос;
        ГрафикОтпусковРаботниковОрганизаций = ВставитьПоместить(ГрафикОтпусковРаботниковОрганизаций, "ГрафикОтпусковРаботниковОрганизаций");
        Запрос.Текст = ГрафикОтпусковРаботниковОрганизаций + ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ГрафикОтпусковРаботниковОрганизаций"), "");
        Запрос.Выполнить();
       
        //4.
        ФактическиеОтпускаРаботниковОрганизаций = СхемаКомпоновкиДанных.НаборыДанных.Данные.Элементы.ФактическиеОтпускаРаботниковОрганизаций.Запрос;
        ФактическиеОтпускаРаботниковОрганизаций = ВставитьПоместить(ФактическиеОтпускаРаботниковОрганизаций, "ФактическиеОтпускаРаботниковОрганизаций");
          Запрос.Текст = ФактическиеОтпускаРаботниковОрганизаций + ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ФактическиеОтпускаРаботниковОрганизаций"), "");
        Запрос.Выполнить();
    
        ТекстЗапрос =
        "ВЫБРАТЬ
        |    ГрафикОтпусков.Регистратор,
        |    ГрафикОтпусков.НачалоИнтервала,
        |    ГрафикОтпусков.КонецИнтервала,
        |    ГрафикОтпусков.Серия,
        |    ГрафикОтпусков.Учет,
        |    ГрафикОтпусков.ФизЛицо,
        |    ГрафикОтпусков.Сотрудник,
        |    ГрафикОтпусков.Состояние КАК Состояние,
        |    ГрафикОтпусков.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска
        |    ИЗ ГрафикОтпусков КАК ГрафикОтпусков " +  ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ГрафикОтпусков"), "") + "
       
        |    ОБЪЕДИНИТЬ ВСЕ        
        |       
        |    ВЫБРАТЬ
        |    ФактическиеОтпуска.Регистратор,
        |    ФактическиеОтпуска.НачалоИнтервала,
        |    ФактическиеОтпуска.КонецИнтервала,
        |    ФактическиеОтпуска.Серия,
        |    ФактическиеОтпуска.Учет,
        |    ФактическиеОтпуска.ФизЛицо,
        |    ФактическиеОтпуска.Сотрудник,
        |    """",
        |    ФактическиеОтпуска.ВидЕжегодногоОтпуска
        |    ИЗ ФактическиеОтпуска КАК ФактическиеОтпуска" +  ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ФактическиеОтпуска"), "") + "
        |
        |    ОБЪЕДИНИТЬ ВСЕ        
        |       
        |    ВЫБРАТЬ
        |    ГрафикОтпусковРаботниковОрганизаций.Регистратор,
        |    ГрафикОтпусковРаботниковОрганизаций.НачалоИнтервала,
        |    ГрафикОтпусковРаботниковОрганизаций.КонецИнтервала,
        |    ГрафикОтпусковРаботниковОрганизаций.Серия,
        |    ГрафикОтпусковРаботниковОрганизаций.Учет,
        |    ГрафикОтпусковРаботниковОрганизаций.ФизЛицо,
        |    ГрафикОтпусковРаботниковОрганизаций.Сотрудник,
        |    ГрафикОтпусковРаботниковОрганизаций.Состояние,
        |    ГрафикОтпусковРаботниковОрганизаций.ВидЕжегодногоОтпуска
        |    ИЗ ГрафикОтпусковРаботниковОрганизаций КАК ГрафикОтпусковРаботниковОрганизаций" + ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ГрафикОтпусковРаботниковОрганизаций"), "") + "
        |       
        |    ОБЪЕДИНИТЬ ВСЕ        
        |       
        |    ВЫБРАТЬ
        |    ФактическиеОтпускаРаботниковОрганизаций.Регистратор,
        |    ФактическиеОтпускаРаботниковОрганизаций.НачалоИнтервала,
        |    ФактическиеОтпускаРаботниковОрганизаций.КонецИнтервала,
        |    ФактическиеОтпускаРаботниковОрганизаций.Серия,
        |    ФактическиеОтпускаРаботниковОрганизаций.Учет,
        |    ФактическиеОтпускаРаботниковОрганизаций.ФизЛицо,
        |    ФактическиеОтпускаРаботниковОрганизаций.Сотрудник,
        |    """",
        |    ФактическиеОтпускаРаботниковОрганизаций.ВидЕжегодногоОтпуска
        |    ИЗ ФактическиеОтпускаРаботниковОрганизаций КАК ФактическиеОтпускаРаботниковОрганизаций" + ?(СтрокаУсловияПоля <> "" ,"
        |    ГДЕ " + СтрЗаменить(СтрокаУсловияПоля, "ИСТОЧНИКДАННЫХ", "ФактическиеОтпускаРаботниковОрганизаций"), "");   
       
        Возврат ТекстЗапрос;
       
    КонецФункции
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ок. понятно.
    теперь вопрос можно. Можете пояснить смысл этого отчета.
    Просто возьмем самого первого человека котрого вы указали По нему две строки, да отпуска одна и та же. Просто там документ разный, из чего можно предпроложить чт это один и тот же отпуск.
    чет я не понимаю смысл отчета
    --- Объединение сообщений, 15 сен 2015 ---
    или Группа транспорта и складской логистики - там вообще 3 строчки по одному человеку
  7. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Дело в том что работаю в организации и изучаю 1с только полтора месяца, дали отчет такой костыльный, надо довести до ума, поэтому и разбираюсь. Действительно вы правы на задвоения некоторых записей, но их я тяну из регистра накопления ФактическихОтпусковОрганизаций, а там хранятся несколько видов записей, с этим мне еще предстоит разбираться. Но сейчас необходимо сделать именно количество дней именно рабочих, а не календарных.

    А смысл отчета выводить отчет отпусков за определенный период.
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    ну варианта два.
    1. это по периоду отпуска брать из производственного календаря количество не выходных или выходных дней
    2. Это после начисления отпуска в основных начислениях там есть колонка количесво дней по пятидневке - можно оттуда взять.

    Более правильный вариант первый т.к. вам надо учитыватья так понимаю и праздники и т.д. А так же если фактические отпуска, (которые вы берете) двигнаются кадровым документом.
    то может быть кадровый оформлен, а расчетный еще нет. и тоггда при втором варианте он вам не подтянет данные т.к расчета не было.

    Первый вариант он либо запросом делается. либо можно сделать второй набор данных в СКД и через параметры связать два набора
  9. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Большое вам спасибо, буду пробовать. Вот только связывать как я понимаю мне придется с набором данных "Данные"?

    Вложения:

  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    да не обязательно. можно и даже нужно с запросмо к РС регламентированный производсвенный календарь
  11. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Запрос как я понимаю нужно делать именно в это поле? т.е. в
    Функция ПолучитьТаблицуОписанияОтпусков() ?
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    да зачем.
    У вас есть уже ваш набор данных. там есть поля которые вы в скд передаете - это ваш отчет .
    Вы создаете второй набор данных по Производсвенному каледарю и свзядывает по дате начла и кончания отпуска по параметрам
    apx_egor нравится это.
  13. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Связь необходимо делать во вкладке параметры?

    Вложения:

  14. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
  15. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Должно быть как то так? или мне нужно разделить на два отдельных запроса по Началу и Концу периода?

    простите за глупость) дай бог вам здоровья)

    Вложения:

  16. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    нет запрос один типа того только у Вас там параметров нет. посмотрите я вам ссылку дал - там пример есть
  17. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    пытаюсь делать как у вас, но что похоже не так)

    Вложения:

  18. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Покажите ваш запрос к календарю
  19. TopicStarter Overlay
    apx_egor
    Offline

    apx_egor

    Регистрация:
    15 сен 2015
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Код:
    ВЫБРАТЬ
        ДатыПериодов.ДатаПериода
    ИЗ
        (ВЫБРАТЬ
            КОНЕЦПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) КАК ДатаПериода
        ИЗ
            РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        ГДЕ
            РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ)) КАК ДатыПериодов

    Вложения:

  20. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Наверное все же так
    Код:
    ВЫБРАТЬ
        ДатыПериодов.Дней
    ИЗ
        (ВЫБРАТЬ
            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КОНЕЦПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ)) КАК Дней
        ИЗ
            РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        ГДЕ
            РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ)
            И РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)) КАК ДатыПериодов
    Вам же надо выбрать количество рабочих дней в этом периоде
    --- Объединение сообщений, 15 сен 2015 ---
    А что бы связывать добавляем поля связи
    Код:
    ВЫБРАТЬ
        &НачПериода КАК ДатаНачалаОтпуска,
        &КонПериода КАК ДатаОкончанияОтпуска,
        ДатыПериодов.Дней
    ИЗ
        (ВЫБРАТЬ
            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КОНЕЦПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ)) КАК Дней
        ИЗ
            РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        ГДЕ
            РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ)
            И РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)) КАК ДатыПериодов
    --- Объединение сообщений, 15 сен 2015 ---
    А потом связь

    Вложения:

    • 1111.jpg
      1111.jpg
      Размер файла:
      70,6 КБ
      Просмотров:
      4

Поделиться этой страницей