Имя: Пароль:
1C
1С v8
Аккуратная подчистка регистра сведений.
0 Molinor
 
28.08.12
06:28
Есть РС. Раз в день этот регистр обновляется. Есть некий файл с набором данных, эти данные загружаются в РС, в файле могут добавляться строки, могут исчезать, существующие могут изменяться. Надо сделать так, чтобы ни в какой момент времени РС не был пустым, но старые данные из РС удалять надо (строки, которые исчезли).

Как я решил сделать:
Добавить реквизит с типом дата. В этот реквизит мы пишем дату начала загрузки. После чего ищем все записи с отличающимся временем загрузки (прошлый день). Делаем отбор по этой дате и записываем на его место пустой набор. Но это как-то коряво, как мне кажется.
Если же просто делать отбор по текущей дате обработки, и писать этот набор записей, то как я понимаю в некоторый момент времени РС полностью очистится, что недопустимо, т.к. он постоянно нужен.
Есть какие-то другие более красивые способы? Буду благодарен.
1 Lokli
 
28.08.12
06:33
А просто заполнить набор записей данными из файла, а потом записать с замещением? Или тебе история нужна? Тогда сделай этот РС периодическим.
2 Molinor
 
28.08.12
06:36
История не нужна. Так в тот момент, когда я буду записывать с замещением, разве РС не очистится предварительно?
3 Lokli
 
28.08.12
06:38
В рамках одной транзакции ни думаю что это кто-то заметит.
4 Molinor
 
28.08.12
06:40
Даже полсекунды могут оказаться критичными. Оттуда данные программно берутся для проверок, а если РС будет пустым, то результат проверки может оказаться неверным.
5 Lokli
 
28.08.12
06:43
Волшебное слово транзакция тебе о чем-нибудь говорит? :)
Если кто-то обратиться к таблице на чтение во время транзакции на запись, то он вынужден будет подождать, ибо таблица этого РС будет заблокирована.
6 Molinor
 
28.08.12
06:45
Кстати да, не подумал, спасибо!