Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Работа с производственным календарем

Работа с производственным календарем
Я
   shock3r
 
27.12.12 - 11:46
Добрый день, в отчет требуется реализовать надпись С x по y, где x=датадок, y = датадок + 3 (исключая выходные и праздники)...
Подскажите как функцию, которая возвращает является ли дата - выходным по производственному календарю
 
 
   Дядя Вова
 
1 - 27.12.12 - 11:52
// Функция возвращает дату отстоящую на заданное количество рабочих дней от начальной в соответствии с
 
//регламентированным производственным календарем
 //
 
//Параметры:
 // ДатаНач      - начальная дата
 
// ЧислоДней    - количество рабочих дней, на которое искомая дата должна отстоять от начальной
 //
 
Функция ОпределитьДату(ДатаНач, ЧислоДней) Экспорт
    
    Запрос = Новый  Запрос;
    Запрос.УстановитьПараметр("ДатаНач",             ДатаНач);
    Запрос.УстановитьПараметр("ЧислоДней",           ЧислоДней);
    Запрос.УстановитьПараметр("РабочийДень",         Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
    Запрос.УстановитьПараметр("ПредпраздничныйДень", Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);
    
    Если ЧислоДней > 0 Тогда
        Запрос.Текст = "
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " + ЧислоДней + "
        |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
        |ИЗ
        |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        |ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &ДатаНач
        |     И (РегламентированныйПроизводственныйКалендарь.ВидДня = &РабочийДень
        |      ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = &ПредпраздничныйДень)
        |";
        
    Иначе
        ЧислоДней = -ЧислоДней;
        
        Запрос.Текст = "
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " + ЧислоДней + "
        |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
        |ИЗ
        |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        |ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря < &ДатаНач
        |     И (РегламентированныйПроизводственныйКалендарь.ВидДня = &РабочийДень
        |      ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = &ПредпраздничныйДень)
        |УПОРЯДОЧИТЬ ПО
        |    ДатаКалендаря УБЫВ
        |";
        
    КонецЕсли;
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Количество() = ЧислоДней Тогда
        Пока Выборка.Следующий() Цикл
            ТекДата = Выборка.ДатаКалендаря;
        КонецЦикла;
        Возврат ТекДата;
    КонецЕсли;
    
    Возврат Неопределено;
    
КонецФункции
   shock3r
 
2 - 27.12.12 - 12:05
(1) Спасибо Дядя Вова))
   shock3r
 
3 - 27.12.12 - 17:39
Если Выборка.Количество() > 0 Тогда
        Пока Выборка.Следующий() Цикл
            ТекДата = Выборка.ДатаКалендаря;
        КонецЦикла;
        Возврат ТекДата;
    КонецЕсли;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует