Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
jediAlex
4 / 4 / 4
Регистрация: 12.07.2011
Сообщений: 506
1

Расчет разности дат в запросе

13.05.2016, 16:22. Просмотров 1273. Ответов 6
Метки нет (Все метки)

Здравствуйте. Делаю собственную конфигурацию в 1с 8.3. Есть справочник "ЭтапыДоговоров", с реквизитами: НомерЭтапа,наименованиеЭтапа, Договор, ДатаНачалаРабот (Дата,состав - Дата),ДатаНачалаРаботФакт(Дата,состав - Дата) и т.д... Понадобилось сделать выборку элементов по такому условию: ДатаНачалаРабот<=ОтчетнаяДата и ГОД(ДатаНачалаРабот)=ГОД(ОтчетнаяДата), где ОтчетнаяДата - параметр, задаваемый пользователем. Необходимо посчитать отклонение дат: если ДатаНачалаРаботФакт заполнена, то Отклонение=ДатаНачалаРаботФакт-ДатаНачалаРабот ИНАЧЕ Отклонение=ОтчетнаяДата-ДатаНачалаРабот. Сделал обработку, в табличную часть которой вывожу результаты запроса. Ниже код запроса и вывода данных:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
&НаСервере
Процедура СформироватьОтчетНаСервере()
    // Вставить содержимое обработчика.
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ЭтапыДоговоров.НомерЭтапа,
                 |    ЭтапыДоговоров.НаименованиеЭтапа,
                 |    ЭтапыДоговоров.ДатаНачалаРабот,
                 |    ЭтапыДоговоров.ДатаНачалаРаботФакт,
                 |    ЭтапыДоговоров.Договор,
                 |    ВЫБОР
                 |        КОГДА ЭтапыДоговоров.ДатаНачалаРаботФакт ЕСТЬ NULL
                 |            ТОГДА РАЗНОСТЬДАТ(&ОтчетнаяДата, ЭтапыДоговоров.ДатаНачалаРабот, ДЕНЬ)
                 |        ИНАЧЕ РАЗНОСТЬДАТ(ЭтапыДоговоров.ДатаНачалаРаботФакт, ЭтапыДоговоров.ДатаНачалаРабот, ДЕНЬ)
                 |    КОНЕЦ КАК Отклонение
                 |ИЗ
                 |    Справочник.ЭтапыДоговоров КАК ЭтапыДоговоров
                 |ГДЕ
                 |    ЭтапыДоговоров.ДатаНачалаРабот <= &ОтчетнаяДата
                 |    И ГОД(ЭтапыДоговоров.ДатаНачалаРабот) = ГОД(&ОтчетнаяДата)";
                  Запрос.УстановитьПараметр("ОтчетнаяДата",Объект.ОтчетнаяДата);
                 Результат=Запрос.Выполнить().Выгрузить();
                 Объект.Этапы.Очистить();
                 Для каждого стр Из Результат Цикл
                НовСтр=Объект.Этапы.Добавить();
                ЗаполнитьЗначенияСвойств(НовСтр,стр);
                КонецЦикла;    
                
КонецПроцедуры
 
&НаКлиенте
Процедура СформироватьОтчет(Команда)
    СформироватьОтчетНаСервере();
КонецПроцедуры
Все работает правильно, если заполнена ДатаНачалаРаботФакт, а вот выражение РАЗНОСТЬДАТ(&ОтчетнаяДата, ЭтапыДоговоров.ДатаНачалаРабот, ДЕНЬ) если ДатаНачалаРаботФакт не заполнено, выдает непонятное число - 736099...Что не так делаю? помогите пожалуйста.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2016, 16:22
Ответы с готовыми решениями:

Функция разности дат
Вообщем есть дата например 16.02.2009 надо отнять от нее 13 дней, те получить дату 03.02.2009....

Разность рабочих дат в запросе
Всем привет!) Делаю запрос для вычисления разности между рабочими датами. ВЫБРАТЬ ...

В запросе проверить, что дата не входит в промежуток дат
Как в запросе в условие указать, что ДатаДок не входит в промежуток ДатаНачало и ДатаКонец?

Данные в отчете: расчет значения по формуле в запросе 1С.
Есть отчет &quot;по выработке&quot; ,в нем есть колонка результативность , как сделать так чтобы : Сумма...

Расчет периода разности дат
Здравствуйте! Кто может помочь? Не могу понять где ошибаюсь. Есть на форме четыре поля: ДатаНачала,...

6
Volexovich
203 / 178 / 30
Регистрация: 24.10.2011
Сообщений: 721
13.05.2016, 16:31 2
Когда ДатаНачалаРаботФакт незаполнено, то разность дат идет от &ОтчетнаяДата и рождества Христова, т.е. 01.01.0001
0
SpiRUS
10 / 10 / 5
Регистрация: 23.06.2015
Сообщений: 74
13.05.2016, 16:34 3
jediAlex, Ну видимо он считает &ОтчетнаяДата датой 00010101, потому как - 736099 в переводе на года выходит 2016 лет Объект.ОтчетнаяДата точно корректная дата?
0
jediAlex
4 / 4 / 4
Регистрация: 12.07.2011
Сообщений: 506
13.05.2016, 16:38  [ТС] 4
дата корректная...ставлю например 13.05.2016...если ДатаНачалаРабот и ДатаНачалаРаботФакт заполнены, то проблем нет, между ним разница рассчитывается, а от параметра почему то отнять не может...
0
alex1248
122 / 66 / 26
Регистрация: 08.03.2016
Сообщений: 173
13.05.2016, 17:42 5
Цитата Сообщение от jediAlex Посмотреть сообщение
от параметра почему то отнять не может
Значит, что-то не то передается в параметре. Отладчик в руки - и вперед!
0
jediAlex
4 / 4 / 4
Регистрация: 12.07.2011
Сообщений: 506
16.05.2016, 09:19  [ТС] 6
в отладчике на строке
1C
1
Запрос.УстановитьПараметр("ОтчетнаяДата",Объект.ОтчетнаяДата);
вышло сообщение:
1C
1
{(1,62)}: Ошибка в выражении.
В чем ошибка?
0
GreenkA
Форумчанин
Эксперт 1С
3003 / 1923 / 520
Регистрация: 25.06.2009
Сообщений: 6,817
16.05.2016, 09:59 7
jediAlex, какой тип у Объект.ОтчетнаяДата?
0
16.05.2016, 09:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2016, 09:59

Вычисление разности дат
Ребят, нужна помощь. Нужно, чтобы при вводе 1 даты и 2 даты показывалась их разность (с учётом...

Найти максимум по разности дат
Надо ввести дату (или взять текущую) и найти максимум по разности дат, сравнивая их в цикле. Как...

Вычисление разности двух дат
Нужен исходник программы либо помогите вы пожалуйста реализовать вычисление между двумя датами и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.