Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 08:50

Функция расчета дней

Автор Denka, 16 апр 2015, 15:22

0 Пользователей и 1 гость просматривают эту тему.

Denka

Здравствуйте. Есть функция которая должна рассчитывать количество дней отпуска. Задаю условие Период начало и конец. Но в Результат=КалендарныеДни прописывается 1, а не кол дней.
Производственный календарь заполнен. Подскажите, где я допустил ошибку. Спасибо.ЗУП
Запрос.Текст =
       "ВЫБРАТЬ
       |    ДатыКалендаря.ДатаКалендаря КАК ДатаОкончания,
       |    СУММА(Календарь.КалендарныеДни) КАК КалендарныеДни
       |ИЗ
       |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК ДатыКалендаря
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
       |        ПО (Календарь.ДатаКалендаря МЕЖДУ &ДатаНачала И ДатыКалендаря.ДатаКалендаря)
       |ГДЕ
       |    ДатыКалендаря.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания
       |    И ДатыКалендаря.КалендарныеДни > 0
       |
       |СГРУППИРОВАТЬ ПО
       |    ДатыКалендаря.ДатаКалендаря";
       
       Запрос.УстановитьПараметр("ДатаНачала",     ДатаНачала);
       Запрос.УстановитьПараметр("ДатаОкончания",     ДатаОкончания);
       
       Выборка = Запрос.Выполнить().Выбрать();
       Если Выборка.Следующий() Тогда
           Результат  = Выборка.КалендарныеДни;
       Иначе
           ОбщегоНазначенияЗК.СообщитьОбОшибке("Проверьте заполнение производственного календаря!");
           ДатаОкончания = Неопределено;
       КонецЕсли;

Дмитрий@

Изменения ВЫБРАТЬ ПЕРВЫЕ 1


Запрос.Текст =
       "ВЫБРАТЬ ПЕРВЫЕ 1
       |    ДатыКалендаря.ДатаКалендаря КАК ДатаОкончания,
       |    СУММА(Календарь.КалендарныеДни) КАК КалендарныеДни
       |ИЗ
       |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК ДатыКалендаря
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
       |        ПО (Календарь.ДатаКалендаря МЕЖДУ &ДатаНачала И ДатыКалендаря.ДатаКалендаря)
       |ГДЕ
       |    ДатыКалендаря.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания
       |    И ДатыКалендаря.КалендарныеДни > 0
       |
       |СГРУППИРОВАТЬ ПО
       |    ДатыКалендаря.ДатаКалендаря";
       
       Запрос.УстановитьПараметр("ДатаНачала",     ДатаНачала);
       Запрос.УстановитьПараметр("ДатаОкончания",     ДатаОкончания);
       
       Выборка = Запрос.Выполнить().Выбрать();
       Если Выборка.Следующий() Тогда
           Результат  = Выборка.КалендарныеДни;
       Иначе
           ОбщегоНазначенияЗК.СообщитьОбОшибке("Проверьте заполнение производственного календаря!");
           ДатаОкончания = Неопределено;
       КонецЕсли;

Denka


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск