Имя: Пароль:
1C
1С v8
Эмуляция "момента времени"
0 Ndochp
 
12.09.14
14:15
Господа, правильно ли я понимаю, что момент времени это пара из даты и ссылки. и условие в Поле1 эквивалентно Полю2 при условии, что все проводки делаются на дату документа?

ВЫБОР
КОГДА Проводка1.Регистратор.МоментВремени < Проводка2.Регистратор.МоментВремени
ТОГДА "Корр"
ИНАЧЕ "Распр"
КОНЕЦ КАК Поле1,
ВЫБОР
КОГДА Проводка1.Период < Проводка2.Период
  Или (Проводка1.Дата = Проводка2.Дата    
     И Проводка1.Регистратор < Проводка2.Регистратор)
ТОГДА "Корр2"
ИНАЧЕ "Распр2"
КОНЕЦ КАК Поле2


ЗЫ Достался в наследство запрос, который работает по схеме "Поле1". Епстественно дико тормозит при получении момента времени. Охота переписать слегка.
1 Ndochp
 
12.09.14
14:17
* Проводка1.Дата читать как Проводка1.Период
2 H A D G E H O G s
 
12.09.14
14:32
Или (Проводка1.Дата = Проводка2.Дата


почему Дата а не Период ??
3 nodrama
 
12.09.14
14:35
(2) хм не известно) написал выше читать как Период.. к чему это?? описался?
4 Defender aka LINN
 
12.09.14
14:39
(0) Думаешь сравнение 2х полей будет быстрее, чем сравнение одного?
5 H A D G E H O G s
 
12.09.14
14:40
(4) Думаю - на порядок.
6 H A D G E H O G s
 
12.09.14
14:41
(4) .МоментВремени получает из таблицы документа Дату.
7 H A D G E H O G s
 
12.09.14
14:42
(4) В УПП для популярного регистра это превращается в лютый звиздец.
8 mikecool
 
12.09.14
14:43
(7) от тебя ничего не утаишь...
9 Fragster
 
гуру
12.09.14
14:47
по логике - сначала сравниваем на период, потом на тип, потом на ссылку.
как оно напрямую при сравнении регистратора ведет себя - хз
10 H A D G E H O G s
 
12.09.14
14:50
(9) в МоментеВремени нет Типа ссылки.
11 Fragster
 
гуру
12.09.14
14:52
(10) почему-то думал, что есть. надо запомнить.
12 Fragster
 
гуру
12.09.14
14:52
а сравнение ссылок - это тупо сравнение УИДов?
13 H A D G E H O G s
 
12.09.14
14:54
(11) (12) Думаю - да.

Как ты выделишь "более меньший тип документа" ?
14 Fragster
 
гуру
12.09.14
15:01
(13) ну у метаданных же тоже есть гуиды :)
15 mikecool
 
12.09.14
15:02
(12) сравнение строк? дык дата в нем же где то в центре - насколько корректно такое сравнение?
16 H A D G E H O G s
 
12.09.14
15:05
(15) Сравнение 2-х 16 байтных чисел.
17 Defender aka LINN
 
12.09.14
15:11
(13) Тип это тоже GUID
18 H A D G E H O G s
 
12.09.14
15:12
(17) Без разницы, guid там или число.

Чем ТребованиеНакладная Больше РТУ?
19 Ndochp
 
12.09.14
15:14
(2) Копировал кусок из консоли, там был упрощенный пример с реальными документами, а не проводками. Не везде поменял на период.
Ну так будет то одно и тоже или нет?
20 Fragster
 
гуру
12.09.14
15:15
(19) проще всего заглянуть в профайлер для запроса с моментом времени, офигеть немного, сделать выводы...
21 Зойч
 
12.09.14
15:16
(18) а чем гуид тра-ля-ля16 больше чем тра-ля-ля15?
22 Зойч
 
12.09.14
15:17
Закладываться на сортировку в пределах секкнды не кошерно
23 Ndochp
 
12.09.14
15:21
(22) Кошерно или нет, но я сейчас рефакторингом/оптимизацией занимаюсь, а не разработкой механизма. Мне надо, чтобы работало как раньше, но быстрее.
В том числе чтобы перепроведение документов прошлых периодов дало те же движения.
24 H A D G E H O G s
 
12.09.14
15:22
(21) Тем же, чем 2 больше 1.
25 Fragster
 
гуру
12.09.14
16:34
Соединение по моменту времени превращается в

(Q_001_T_001.Период >= Q_001_T_002.Период AND (Q_001_T_001.Период > Q_001_T_002.Период OR (Q_001_T_001.Период = Q_001_T_002.Период AND (Q_001_T_001.Регистратор > Q_001_T_002.Регистратор))))
26 Fragster
 
гуру
12.09.14
16:35
условие Таб1.МоментВремени > Таб2.МоментВремени
27 Fragster
 
гуру
12.09.14
16:37
вполне неплохо, я бы сказал, при условии индекса по период + регистратор
28 Defender aka LINN
 
12.09.14
21:38
(24) Прочти это громко, четко и вслух для (18)
29 H A D G E H O G s
 
12.09.14
22:07
(28) Иногда ты меня поражаешь.
Я сказал про то, что не имеет логического смысла сравнивать тип документа на больше-меньше.