Имя: Пароль:
1C
 
Как указать в запросе КонецДня() ?
0 ПетяПетькин
 
07.05.09
15:28
Если указываю параметр, например, 31.03.09 23:59:59
то результат выдает все-равно не самые последние остатки,
как можно в запросе указать, чтобы бралось значение параметра соответствующее последнему моменту времени дня???
что-то вроде функции КонецДня(ДатаКон)
1 Просто Лёха
 
07.05.09
15:29
А сразу в параметр КонецДня(ДатаКон)?
2 Широкий
 
07.05.09
15:30
смотри Момент времени
3 ПетяПетькин
 
07.05.09
15:31
я в консоли делаю запрос
мне не нужен отчет
щас надо быстро сделать одну выборку
а там в параметрах просто дату указываешь и время
4 Serg_1960
 
07.05.09
15:31
Можно КОНЕЦПЕРИОДА(ДатаКон, ДЕНЬ) но лучше сразу в момент
5 ПетяПетькин
 
07.05.09
15:31
если бы все происходило в отчете - вопросов нет

но мне это надо именно в запросе, т.к. я в консоли делаю выборку
6 ПетяПетькин
 
07.05.09
15:32
КОНЕЦПЕРИОДА(ДатаКон, ДЕНЬ)
тоже выдает не самые последние остатки
7 Salvador Limones
 
07.05.09
15:32
(6) Новый Граница(...., ....Включая)
8 Serg_1960
 
07.05.09
15:33
граница включая
9 ПетяПетькин
 
07.05.09
15:33
(7) не, не то
10 tsr
 
07.05.09
15:33
(6) Это косяк 8-кин, хотя 1С не желает признавать данного факта. Выхода два. Перепроводить все доки на начало дня и на конец дня меняя им время, или использовать границу
11 ПетяПетькин
 
07.05.09
15:33
(8) это в теле запроса так можно написать?
12 Salvador Limones
 
07.05.09
15:34
(9) Почему?
13 ПетяПетькин
 
07.05.09
15:34
ВЫБРАТЬ
   ХозрасчетныйОстатки.Субконто1,
   ХозрасчетныйОстатки.Счет,
   0 КАК ПервоначСтоимостьБУ,
   ХозрасчетныйОстатки.СуммаОстатокКт КАК Аморт
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(КонецПериода(&Кон, День), Счет = &Сч02, , Организация = &Орг) КАК ХозрасчетныйОстатки



вот запрос
14 Serg_1960
 
07.05.09
15:34
Имхо, все уже перечислили - а Вам все "не то". Теперь Вы нам скажите что у Вас там "не то" :(
15 Salvador Limones
 
07.05.09
15:34
(13) В параметр Кон передай Границу.
16 ПетяПетькин
 
07.05.09
15:35
(12) я могу эту строку включить в тело запроса, написанного выше?
17 ПетяПетькин
 
07.05.09
15:35
(15) как в параметр консоли запросов передать Границу?
18 Salvador Limones
 
07.05.09
15:35
(16) Нет.
Выкинь наркотики, открой СП.
19 ПетяПетькин
 
07.05.09
15:36
(18) так и я про то же!
20 Salvador Limones
 
07.05.09
15:37
(17) Я дописал консоль.
21 ПетяПетькин
 
07.05.09
15:38
у меня маленькое срочное заданьице, я не могу щас дописывать консоль

вобщем,  вариантов нету, кроме как сделать отчет и передать параметр
22 Serg_1960
 
07.05.09
15:40
У автора есть документы "...23:59:59"? :( Если срочно надо - возьми началопериода следующего дня. Если есть документы "...00:00:00" - вешайся :))
23 AHgpuXa
 
07.05.09
15:40
С чего ты взял что выдаются не самые последние остатки?
Попробуй сравнить остатки при
НачалоПериода(&Дата2,День) и КонецПериода(&Дата1,День)
где Дата2 это Дата1 + 1день
24 artbear
 
07.05.09
15:42
(0) C чего взял, что не самые последние остатки?
Чем проверяешь?
25 Широкий
 
07.05.09
15:44
(22) если есть 00:00:00 - вешаться не надо.. остатки будут на начало момента
26 ПетяПетькин
 
07.05.09
15:45
(23, 24)с того взял, что сравниваю результат запроса с ОСВ
(22) конечно есть такие документы, сколько угодно
например, Амортизация ОС
27 mikecool
 
07.05.09
15:46
в семерке помнится в журнале не отображались документы со временем в течение первой секунды дня...
28 artbear
 
07.05.09
15:57
(26) А вот теперь подумай:
почему же ОСВ, построенное также на запросах, выдает результаты, отличные от твоего запроса?
Как говорится, найди 10 различий между ОСВ и своим запросом.
29 ПетяПетькин
 
07.05.09
15:59
(28) потому что в ОСВ задан параметр КонецДня(&Дата)
а я в консоли запросов не могу задать таким образом параметр
я могу тока указать дату с часами

вопрос закрыт, всем спасибо
30 AHgpuXa
 
07.05.09
16:03
(29)Ты читать умеешь? Ясно ж написали КонецПериода(&Дата1,День).
31 ПетяПетькин
 
07.05.09
16:14
(30)
как выяснилось, это не дает самую последнюю границу времени, как ее дает например КонецДня(&ДатаКон)
32 ShoGUN
 
07.05.09
16:20
(31) Нагло гонишь, по-моему.
(29) Можно в параметре задать выражение, галку там поставь во второй колонке.
33 ПетяПетькин
 
07.05.09
16:26
(32) тогда пребывай в неведении и далее
34 ShoGUN
 
07.05.09
16:29
(33) Ты вторую строчку прочитал? Кто из нас в неведении пребывает?
35 PR
 
07.05.09
16:32
(9) То
36 PR
 
07.05.09
16:32
(10) Первое гон. Второе бред.
37 hhhh
 
07.05.09
16:40
(33) сам то пойми, что это бред. Ты хочешь чтобы остатки на время 23:59:59 и на 00:00:00 следующего дня совпадали.
38 hhhh
 
07.05.09
16:43
(29) используй ОстаткиИОбороты - ОСВ именно ее использует.
39 ПетяПетькин
 
07.05.09
16:45
Тема зажила своей жизнью??

Отчет я себе написал.

Сам для себя выяснил, что КонецПериода(&ДатаКон, День) не дает последнюю границу времени дня, как это дает, например, КонецДня(&ДатаКон)

Кто в этом сомневается - да пожалста, не буду переубеждать
40 PR
 
07.05.09
16:52
(39) Ты не прав. Проблема в другом.
41 Salvador Limones
 
07.05.09
16:54
(35) Не спорь! Не то, всё тут!
42 AHgpuXa
 
07.05.09
17:55
(39)Неправильно выяснил, а я даже сомневаться начал. Поэтому полез в профайлер.
запрос простенький:
ВЫБРАТЬ
   ОстаткиОстатки.Товар,
   ОстаткиОстатки.КвоОстаток
ИЗ
   РегистрНакопления.Остатки.Остатки(&ДатаКон, Товар = &Товар) КАК ОстаткиОстатки

Так вот при КонецПериода(&ДатаКон, День), как и при КонецДня(&ДатаКон) профайлер показал один и тот же запрос, в качестве параметров куда передаются даты:
{ts '5999-11-01 00:00:00'} и {ts '4009-05-07 23:59:59'}.
43 mikecool
 
07.05.09
18:03
(42) интересно, а куда деваются милисекунды с 4009-05-07 23:59:59 по 4009-05-08 00:00:00? там же их 10000...
44 Aprobator
 
07.05.09
18:06
Может дело в составе даты ДатаКон? (Дата, а не ДатаВремя).
45 ShoGUN
 
07.05.09
18:11
(44) Дата с совставом "Дата" - это дата с временем "00:00:00"
46 Aprobator
 
07.05.09
18:18
(45) о чем и речь. Потому конец дня и не виден.
47 AHgpuXa
 
07.05.09
18:19
Описание типа данных datetime:
Диапазон даты
1 января 1753 года — 31 декабря 9999 года
Диапазон времени
От 00:00:00 до 23:59:590,997
Откуда 10000 ?
48 AHgpuXa
 
07.05.09
18:23
(47) к (43)
49 ShoGUN
 
07.05.09
18:26
(46) КонецДня() от такой даты будет все равно с каким положено временем, потому что состав можно указывать только у реквизита, но не у переменной. Переменная всегда будет со временем.
50 Funny
 
07.05.09
18:27
(0) Напугал реально. Померещелось КонецСвета()!
51 ShoGUN
 
07.05.09
18:29
(50) Глянь, что у 1С в календаре после 31.12.9999 :)))
52 ПетяПетькин
 
08.05.09
10:07
(42) да, дата и время возвращаемые этими двумя функциями могут быть одинаковыми.
Но на одну и ту же дату и время, например, 31.03.09 23:59:59
может быть записано 50 документов, один за другим.
И в рамках последовательности, возможно, функция запроса КонецПериода(&ДатаКон), берет просто дату 31.03.09 23:59:59, а функция КонецДня(&датаКон) конец последовательности на эту дату.

у кого есть УПП, и начисляется амортизация по бух. учету, по-пробуйте построить простой
53 ПетяПетькин
 
08.05.09
10:08
.. запрос по остаткам 02.01 счета в консоли запросов и укажите там дату со временем , например, 31.01.09 23:59:59

и сравните полученные остатки с ОСВ по этому же счету
54 Serg_1960
 
08.05.09
10:39
Блин, даже на ИТС есть статья, где упоминают особо время "23:59:59" как нежелательное... а вопросы остаются... v8: Почему у витуальных таблиц Остатки и ОстаткиИОбороты тип периода разный
55 ПетяПетькин
 
08.05.09
10:41
ну дык...
а народ-то спорил :)
56 hhhh
 
08.05.09
10:44
(53) ну для примера возьми ОСВ, где дата начала и дата конца - одна и та же: с временем - 23:59:59. У тебя в ОСВ получатся разные остатки на начало и на конец.
57 ПетяПетькин
 
08.05.09
10:46
(56) да мне ниче уже объяснять не надо

я сам запарился объяснять в этой ветке народу, который спорил что КонецПериода(&ДатаКон) и КонецДня(&ДатаКон) по одинаковому возвращают остатки на конец дня
58 tsr
 
08.05.09
10:46
(54) Про время 00:00:00 там не упоминается?
59 AHgpuXa
 
08.05.09
10:48
(52)при чем здесь результаты функций? Я в (42) привел цифры которые передаются в конечный запрос к SQL. И где последовательность? Или тебе может весь конечный запрос привести и рассказать как в сиквеле хранятся остатки и движения?
60 Serg_1960
 
08.05.09
10:49
(55) Можно и дальше плодить документы со временем "23:59:59". Лично я считаю что документы _должны_ оформляться в рабочее время по рабочим дням! Исключение - для регламентных(служебных) документов.
61 ПетяПетькин
 
08.05.09
10:51
(55) так речь именно о регламентных документах и идет!
АмортизацияОС пишет сама себя на последнее время после последнего документа, хотя время в документе может быть 12:00
62 ПетяПетькин
 
08.05.09
10:53
это к относилось (60)

(59) при том, что разговор я лично в этой ветке веду о разном результате по выборке остатков с использованием этих двух функций
а ты о чем - не знаю
63 hhhh
 
08.05.09
11:00
(62) просто всё правильно сделано. По другому не может быть. Другое дело, что неудобно, но с этим ничего не поделаешь.

Просто ты хочешь чтобы 1С читала твои мысли, как ты хочешь получить остатки. Если задаешь время 23:59:59, то ты хочешь чтобы остатки были на конец этой секунды, а если ты напишешь время 00:00:00, то тебе уже нужны остатки на начало секунды. Фирма 1С в такие игрушки не играет.
64 tsr
 
08.05.09
11:04
(63) Он о другом грезит. Чтобы КонецПериода был концом периода, а не чем-то около конца, или приблизительно конца. А Начало было именно началом и ничем более. Вроде нормальная и вполне трезвая хотелка.
65 AHgpuXa
 
08.05.09
11:04
(62)А я о том, что при использовании этих функция мы получаем в результате один и тот-же запрос к СКЛ.
Что делает запрос.
1. Он получает конечные остатки
WHERE _AccumRegTotals6976._Period = @P1 AND _AccumRegTotals6976._Fld6969RRef = @P2
Где @P2 это товар, а @P1 это {ts '5999-11-01 00:00:00'}
2. Объеденияется с +- движениями, при условии
WHERE
_AccumReg6966._Period >= @P4 AND _AccumReg6966._Period < @P1 AND _AccumReg6966._Active = @P5 AND _AccumReg6966._Fld6969RRef = @P2
Где @P4 это {ts '4009-05-07 23:59:59'}, причем при использовании 2-ух функций, параметры ничем не отличаются.
66 Sammo
 
08.05.09
11:08
(64) Позиция 1с, насколько я помню, следующая - когда получаешь остатки из виртуальной таблицы остатки, то ты по умолчанию получаешь остатки на, а не по. И для примера приводили ситуацию, когда хочешь получить остатки НА 01.01
67 Serg_1960
 
08.05.09
11:10
Блин, ситуация типа "Минздрав предупреждает" :))  - 1С предупреждает, что для вычисления остатков по умолчанию задан момент времени исключительно.
Источник: статья ИТС "Особенности использования периодов и моментов времени".

PS: И хватит опять Америку открывать :((
68 Sammo
 
08.05.09
11:12
(67) причем это так еще с 8.0
Так что это скорее из серии "Минздрав устал предпреждать"
69 Serg_1960
 
08.05.09
11:20
(68) Ага... Я - вышел из темы, пошел курить :))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший