Имя: Пароль:
1C
1С v8
Арифметические операции в условии запроса возможны?
0 Shur1cIT
 
19.06.13
16:05
пытаюсь изобразить условие запроса
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ) И НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ) + 7-ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ)))*86400

в результате запрос ругается похелпите как сделать?
1 Shur1cIT
 
19.06.13
16:07
то есть имеем на входе произвольную дату месяца, необходимо получить первую дату месяца и последнею дату первой недели месяца
2 Trainee
 
19.06.13
16:08
1)РАЗНОСТЬДАТ

Первая дата месяца - это что?
3 Shur1cIT
 
19.06.13
16:12
(2) на входе 19 июня 2013 г
с помощью НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ) получаем 1 июня 2013 г

с помощью НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ) + 7-ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ)))*86400
получаем 2 июня 2013 г
4 Shur1cIT
 
19.06.13
16:13
(3) в мае конец первой недели например 5 мая 2013 г

в дальнейшим я определяю рабочая эта неделя или нет
5 ale-sarin
 
19.06.13
16:13
ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>)
6 Trainee
 
19.06.13
16:15
А передать в запрос уже даты никак?
7 Wobland
 
19.06.13
16:15
(0) первое мая плюс двадцать - это что за арифтемтика?
8 Shur1cIT
 
19.06.13
16:22
(5) ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ), ДЕНЬ, 7 - ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ)) * 86400) сработало, спасибо но почему с плюсом не захотел?
9 Wobland
 
19.06.13
16:24
(8) ответь на (7) - поймёшь
10 Shur1cIT
 
19.06.13
16:27
(7) это значит первое мая 00 часов 00 минут 20 секунд
11 Aprobator
 
19.06.13
16:27
(0) а нефиг дату с числом в запросе складывать.
12 ale-sarin
 
19.06.13
16:27
(8) Че-то я не пойму, а нахрена *86400?
13 Shur1cIT
 
19.06.13
16:28
(11) ок понял спасибо не ожидал что в запросе преобразование типов автоматом не работают
14 Wobland
 
19.06.13
16:28
(10) почему именно секунд?
15 Shur1cIT
 
19.06.13
16:28
(12) секунд в сутках 24*60*60
16 acsent
 
19.06.13
16:29
в запросах нельзя разные типы складывать
17 ale-sarin
 
19.06.13
16:30
(15) Ого. Америку мне открыл?
Я имею ввиду, зачем  этом случае это надо?
ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(&ДатаПроверки, МЕСЯЦ)) - что вернет?
18 Shur1cIT
 
19.06.13
16:32
вот полная картина запроса

ВЫБРАТЬ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
   РегламентированныйПроизводственныйКалендарь.ВидДня
ИЗ
   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ НАЧАЛОПЕРИОДА(ДвиженияДенежныхСредств.Период, МЕСЯЦ) И ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДвиженияДенежныхСредств.Период, МЕСЯЦ), ДЕНЬ, 7 - ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ДвиженияДенежныхСредств.Период, МЕСЯЦ)) * 86400)
   И (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
           ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
19 mikecool
 
19.06.13
16:34
не занимайся ерундой, все уже написано для тебя - сходи в поиск
20 ale-sarin
 
19.06.13
16:37
(18) Вот смотри. Ты пишешь:
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДвиженияДенежныхСредств.Период, МЕСЯЦ), ДЕНЬ, 7 - ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ДвиженияДенежныхСредств.Период, МЕСЯЦ)) * 86400)

Давай расшифруем. Пусть ДвиженияДенежныхСредств.Период = 01.06.2013.
И получается
ДОБАВИТЬКДАТЕ(01.06.2013, ДЕНЬ, 7 - 6 * 86400).
Интересно, что это?
Или я туплю по-черному?
21 Aprobator
 
19.06.13
16:46
да конец недели ему нужен имхо. Запутался просто в трех соснах.
22 ale-sarin
 
19.06.13
16:49
(21) Это тоже понятно. Нафига *86400?
Вот запрос, где &Дата = 01.06.2013.
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ), ДЕНЬ, 7 - ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ)) * 86400) КАК Поле1

Результат: 07.02.0594 0:00:00
23 Shur1cIT
 
19.06.13
16:51
(22) точно 86400 лишнее
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс