Имя: Пароль:
1C
1С v8
Туплю с удалением движений УТ 10.3.
0 Гений 1С
 
гуру
09.01.13
17:29
У документов стоит удаление движений "Не удалять движения автоматически".

Смотрю код, типовая вначале очищает регистры прямой записью в регистр и еще и коллекции движений ДокументОбъект.Движения очищает.

Вопрос - а пишутся ли данные из .Движения в базу или нет?
Судя по коду УТ сама пишет во все движения регистров, а как она добивается того, чтобы из .Движения в базу не писалось?

У меня 81.
1 Гений 1С
 
гуру
09.01.13
17:40
2 MrStomak
 
09.01.13
17:42
Движения.Записывать
3 acsent
 
09.01.13
17:42
(2) это в 8.2
4 gosn1ck
 
09.01.13
17:46
я один прочитал 3 раза и ничего не понял?
5 MrStomak
 
09.01.13
17:48
(3) а в 8.1 разве не всегда принудительная запись?
6 Гений 1С
 
гуру
09.01.13
17:48
(2) в 81 нету.
(4) а че непонятного.
Судя по коду УТ коллекция Движения автоматом не записывается. Как этого добиться?
7 Гений 1С
 
гуру
09.01.13
17:48
(5) там можно поставить у документов признак удаление движений "Не удалять движения автоматически"
8 Гений 1С
 
гуру
09.01.13
17:49
вообще проблема связана с тем, что замер производительности показывает, что 1С тупит, ибо дважды пишет в регистр партий - сначала его чистит, потом пишет новые данные.
Причем на чистку тратит до фига времени.
Вот хотелось бы оставить только одну запись, но я запутался, как не накосячить, пришлось понять, когда записывается коллекция Движения, понять не могу.
9 MrStomak
 
09.01.13
17:56
(8) 1)Для контроля остатков в любом случае надо чистить.
   2)Типовой код в любом случае тоже два раза пишет - очистка  и новые движения
То, что всё это длительное время происходит, скорее всего связано с большой таблицей остатков, надо проверять вывод в 0.
10 MrStomak
 
09.01.13
17:58
//Судя по коду УТ сама пишет во все движения регистров, а как она добивается того, чтобы из .Движения в базу не писалось?

Тут надо отметить, что платформа автоматически анализирует модифицированность таблицы движений. Если движения не менялись, записи не происходит.
11 Гений 1С
 
гуру
09.01.13
17:58
(9) Да это понятно, но просто уж любопытно стало, как защититься от записи коллекции Движения
12 Гений 1С
 
гуру
09.01.13
17:59
(10) че, реально? но ведь она же вначале ее чистит, значит вносит модифицированность. Тогда по логике, записанные в базу данные движения должны перетереться вручную.
13 Гений 1С
 
гуру
09.01.13
17:59
(10) хотя удаление движений вызывается передЗаписью, а не в ОбработкаПроведения, так что может быть и логично.

Но зачем они в ПередЗаписью коллекцию Движения чистян, непонятно
14 Гений 1С
 
гуру
09.01.13
18:00
хотя нет же, из обработки проведения таки вызвают очистку движений
15 MrStomak
 
09.01.13
18:02
(13) Немного неясно - ты пишешь и про прямую запись в регистр, и про модификацию Движений. Так что происходит? Важно понимать, что если напрямую чистить регистр и не перечитать свойство Движения, то модифицированности не будет
16 Гений 1С
 
гуру
09.01.13
18:09
(15) я это уже понял, посмотрел отладчиком - реально регистр партий на выходе имеет пустую коллекцию Движения и Модифицированность = ложь

а вот регистр Продажи на выходе имеет заполненные Движения и Модифицированность = истина.

Но зачем они в процедуре УдалитьДвиженияРегистратора, вызываемой в начале ОбработкаПровдеения, еще и очищают коллекцию всех элементов коллекции Движения:

// Процедура очищает коллекцию движений документа
//
Процедура ОчисткаКоллекцииДвиженийДокумента(ДокументОбъект) Экспорт
       
   Для Каждого Движение ИЗ ДокументОбъект.Движения Цикл
       Если Движение.Количество() > 0 Тогда
           Движение.Очистить();
       КонецЕсли;
   КонецЦикла;
   
КонецПроцедуры
17 Гений 1С
 
гуру
09.01.13
18:18
В общем тупо сделал затычку, чтобы по партиям регистр не чистился.

ну и спасибо (9) напишу обработку по закрытию регистра партий для зависших сумм при нулевом количестве.
18 Гений 1С
 
гуру
09.01.13
18:32
Хотя по ходу, чтобы почистить регистр партий, обработку писать не нужно. Нашлась тут:
http://forum.infostart.ru/forum24/topic28982/

Спасибо автору.
19 hhhh
 
09.01.13
20:14
(17) регистр надо чистить обязательно, потому что юзер может поменять дату на более позднюю и документ будет свои собственные движения видеть в остатках.