Имя: Пароль:
1C
1С v8
Почему в типовых при проведении практикуется принудительная запись регистров
,
0 asady
 
13.02.12
14:23
Сразу уточню для некоторых регистров.


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

Но с другой стороны это заставляет нас записывать пустые наборы записей, а потом уже заполнять и записывать реальные наборы
про оптимизацию записи этих регистров можно забыть :((
1 DrShad
 
13.02.12
14:26
что значит принудительная запись?
2 asady
 
13.02.12
14:37
(1) НЗ.Записать()
3 Naumov
 
13.02.12
14:39
Результат промежуточной обработки может понадобится в дальнейшем алогритме
4 vde69
 
13.02.12
14:41
в последних версия порядок записи регистров определяется на уровне платформы, этим все и объясняется. (сделано это для исключения дедлогов)

если не делать обнуление регистров, то где-то в середине проведения будет логически не понятно что еще лежит в регистрах а что нет.
5 Defender aka LINN
 
13.02.12
14:43
(0) "это заставляет нас записывать пустые наборы записей, а потом уже заполнять и записывать реальные наборы" О_О
6 asady
 
13.02.12
14:44
(3) почему его не хранить во временных таблицах??

(4) вот именно - ведь если не записывать регистры принудительно, то и до окончания транзакции об этом заботиться и не надо.
7 asady
 
13.02.12
14:44
(5) что не так?
8 vde69
 
13.02.12
14:46
(6) такой код

// в регистре лежит "1"
рег1.записать() // записываем "2"

рег.прочитать()

// тут можно получить и "1" и "2"
9 ИС-2
 
naïve
13.02.12
14:48
В УТ движение по регистру ПартииТоваровНаСкладах идут через регистр списанные товары.
В РАУЗе движения в рег. бух идут через учетЗатрат
10 Maxus43
 
13.02.12
14:48
например чтоб в подписках не потереть уже сделанные движения - записывается принудительно... да много причин может быть
11 Defender aka LINN
 
13.02.12
14:49
(7) А что мешает сразу записать набор с нужными движениями?
12 hhhh
 
13.02.12
14:51
(7) там есть засада, при перепроведении, если поменяли дату документа на большую, а движения не чистить, они попадают в остатки. Потому что получается, они были раньше, чем момент документа.
13 asady
 
13.02.12
14:53
(11) а ты попробуй - убери в типовых УдалитьДвиженияРегистратор() в процедуре проведения

и сразу почувствуешь ответ на свой вопрос
14 asady
 
13.02.12
14:54
(12) с этим согласен - но это как раз обходится - тупо проверяем дату - если изменилась в большую сторону то так и быть очистим движения...
15 asady
 
13.02.12
14:55
(10) подписки на события это другая песня - там всё понятно.
16 hhhh
 
13.02.12
14:56
(14) ну в БП 2.0 так и делается.
17 asady
 
13.02.12
14:57
(8) почему не делать так:

// в регистре лежит "1"

ВремТабл.записать() // записываем "2"


рег.прочитать()
ВремТабл.Прочитать()

// тут можно получить и "1" и "2"
18 vde69
 
13.02.12
15:01
(17) хз, делать можно по всякому....

лично я-бы вообще в модуле проведения запретил оператор записи регистров, а делал-бы автоматом перед фиксацией транзакции
19 Sammo
 
13.02.12
15:06
Возможно еще в связи со схемой работы с ОбменДанными.Загрузка = Истина.
В этом случае нет возможности записывать с режимом записи документа Проведение.
А значит в случае необходимости нужно записывать документ, а затем отдельно вызвать запись движений регистров
20 asady
 
13.02.12
15:13
(19) при Записи объекта с ОбменДанными.Загрузка = Истина
вообще движения не при чем.  - они остаются без изменений и уже на совести программиста лежит обработка движений (очистка и/или перепроведение)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.