Имя: Пароль:
1C
 
Очищены все записи регистра сведений, внезапно. Ищу причину
,
0 oslokot
 
05.02.20
13:48
Всем привет!
КА2.4, платформа 8.3.15

Есть самописный регистр сведений непериодический, зависимый и без измерений. Регистратор РТиУ
Регистр имеет форму списка, на которой оператор производит различные действия - просмотр, отборы и прочее
В одно прекрасное утро из него исчезают все записи.

Записи в регистр добавляются в ПриЗаписи из формы РТиУ через обычный набор записей с отбором.
В самописке куча мест, где вызывается обновление записей этого регистра.
Если бы неправильно сработал отбор я бы понял, но без отбора зависимый регистр не дает записать.

Меня интересует только одно - как такое могло произойти?
1 ДенисЧ
 
05.02.20
13:52
В журнал регистрации смотрел?
2 oslokot
 
05.02.20
13:56
(1) смотрел, в промежуток времени данного инцидента никаких следов нет
Грубо говоря вчера 23:30 все записи были (и бэкап это подтвердил), а в 8 утра пришел оператор и позвонил "все пропало"
3 RomanYS
 
05.02.20
13:57
(0) Он точно зависимый и документ это не измерение? Тогда возможно при проведении очищается, если удаление записей стоит автоматическое
4 oslokot
 
05.02.20
13:59
(3) сейчас посмотрю
5 Deon
 
05.02.20
14:00
Сравнение объединение поменяло ID-шник регистра, удалив старый и добавив новый. И он стал новым и пустым
6 Волшебник
 
модератор
05.02.20
14:00
зачем нужен зависимый регистр без измерений? Что это за регистр?
7 ДенисЧ
 
05.02.20
14:04
(6) Измерение есть - регистратор. Этого достаточно
8 oslokot
 
05.02.20
14:07
(3) Регистр зависимый и измерений нет. Регистратор только один - РТиУ
В РТиУ режим удаления стоит "Не удалять автоматически"
При проведении, отмене проведения записи этого регистра не затираются, только что проверил.
9 oslokot
 
05.02.20
14:07
(6) да это какой-то логистический велосипед
10 oslokot
 
05.02.20
14:10
(5) в этот период конфа не менялась
11 Deon
 
05.02.20
14:12
(10) Напрямую очистили таблицу в БД
12 oslokot
 
05.02.20
14:19
(11) да ну, не) да и базка файловая
13 АнализДанных
 
05.02.20
14:53
(12) ctrl-A + Del
14 oslokot
 
05.02.20
15:01
(13) То есть возможная проблема в некорректном закрытии файловой БД?
Но что странно, ночью в базе никто не работал, а в бэкапе сделанном в 23:30 все записи на месте, а утром их уже нет
Бэкап делается простым копированием 1CD с помощью cobian backup
15 wayss
 
05.02.20
15:03
так не бывает.
ТИИ сделайте.
16 dka80
 
05.02.20
16:00
Набор = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
Набор.Записать();
17 dka80
 
05.02.20
16:02
И посмотри кто заходил в базу между 23:30 и утром
18 unbred
 
05.02.20
16:05
так и сделано, скорее всего. я бы прям через контрол эф поискал в самописке.
19 1Сергей
 
05.02.20
16:10
Не в расширении ли?
20 palsergeich
 
05.02.20
16:11
(16) в прдчиненном регистратору не прокатит.
Там надо будет циклом по каждому пройтись
21 oslokot
 
05.02.20
16:13
(16) Такие места есть,но там везде устанавливается отбор. И даже если предположить что отбор вдруг не сработал, то такая запись не прокатит, ибо (20)
Я даже проверил на всякий случай, без отбора не дает записать.
22 oslokot
 
05.02.20
16:14
(19) Расширений нет, уже смотрел
23 1Сергей
 
05.02.20
16:16
(22) Конфа не менялась в искомый период?
24 Deon
 
05.02.20
16:20
(22) А ТИИ чего-нибудь говорит? А то может там и правда всё порушилось внутре
25 oslokot
 
05.02.20
16:20
(23) нет
26 oslokot
 
05.02.20
16:21
(15) (24) ТиИ сделал, результатов не дало
27 dka80
 
05.02.20
16:21
(21)  Такие места есть,но там везде устанавливается отбор
Так и что?
Набор = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ТвойРегистратор);
Набор.Записать();
28 Deon
 
05.02.20
16:22
(27) Так это надо ещё в цикл завернуть по всем регистраторам
29 oslokot
 
05.02.20
16:26
(27) без отбора хрен оно запишется, у РС регистратор есть
30 1Сергей
 
05.02.20
16:30
(24) есть подозрение, что ТИИ и похерело всё
31 hhhh
 
05.02.20
16:31
(29) ну, покажите эту процедуру ПриЗаписи. где записываете регистр
32 vicof
 
05.02.20
16:31
Да мож кто-нить консоль кода запустил да поудалял все
33 oslokot
 
05.02.20
16:32
(30) так я ТиИ запустил только что на копии
34 oslokot
 
05.02.20
16:32
(32) терроризм?
35 oslokot
 
05.02.20
16:33
(31) ну выглядит примерно так (27)
36 Ёпрст
 
05.02.20
16:34
ну открой cd-ник через tool1cd да посмотри глазками, есть ли там чего в табличке рег сведений
37 oslokot
 
05.02.20
16:36
(36) а где ее взять
38 hhhh
 
05.02.20
16:36
(35) так как в (27) работать не будет. Там только очистка регистра
39 Deon
 
05.02.20
16:38
А в ЖР очистка по каждому регистратору пишется?
40 oslokot
 
05.02.20
16:38
(38) пардонте, там еще и НаборЗаписей.Добавить() конечно есть
41 hhhh
 
05.02.20
16:39
(40) а поле Регистратор присваивается?
42 dka80
 
05.02.20
16:39
(40) а НаборЗаписей.Прочитать() там есть?
43 kzot
 
05.02.20
16:42
в расписании фоновые задачи, итоги.
44 Ёпрст
 
05.02.20
16:44
45 Serg_1960
 
05.02.20
16:46
Теоретически рассуждая, если это сбой в базе (а в файловой базе вероятность выше), то могли "побиться" служебные данные. Например, индексы. Не исключено также, что сами данные регистра в базе присутствуют, но они недоступны.
46 Ёпрст
 
05.02.20
16:51
ну или на нимфостарте ищи, там Агеев выкладывал в коментах
47 oslokot
 
05.02.20
17:05
(41) (42) Код обновления записей регистра вот такой:


    НаборЗаписей = РегистрыСведений.ДокументыРеализации.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Значение = Основание;
    НаборЗаписей.Прочитать();
    Для каждого Запись Из НаборЗаписей Цикл
        Запись.СтатусАкта = Перечисления.СтатусыАкта.АктСформирован;        
    КонецЦикла;    
    НаборЗаписей.Записать();


И таких кусков встречается несколько. В принципе ничего военного, вроде норм
Если бы не сработал отбор то ругнулось бы и все.

И да, есть кусок кода удаляющий запись, вызываемый по спец.кнопке
Но не в цикле! Нужно былоб специально встать на каждую запись и жмакнуть


    НаборЗаписей = РегистрыСведений.ДокументыРеализации.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
    НаборЗаписей.Записать(Истина);

48 oslokot
 
05.02.20
17:06
(44) Спасибо!
49 oslokot
 
05.02.20
17:07
(42) да, во всех участках кода есть НаборЗаписей.Прочитать() прежде чем НаборЗаписей.Записать()
50 oslokot
 
06.02.20
15:49
Нашел причину. Все как всегда блин :)
При отмене проведения РТиУ из формы списка удаляются все записи движений, в т.ч. и этот самописный регистр

Извиняюсь за беспокойство, тему можно закрыть
51 dka80
 
07.02.20
14:04
(50) нет уж. Давай расскажи как они удаляются. Автоматически, вручную? У всех РТиУ отменили проведение?
52 Ёпрст
 
07.02.20
14:23
скорее всего, рег сведений не подчинен регисрацию и тупо пустой набор записали
53 Ёпрст
 
07.02.20
14:23
*регистратору
54 oslokot
 
12.02.20
13:14
(51) Рассказываю.

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

(53) РС подчинен регистратору
55 dka80
 
12.02.20
14:25
(54) ну круто, че
56 FIXXXL
 
12.02.20
14:29
(54) а формирование записей в форме документа что ли прописано?
57 Serg_1960
 
12.02.20
14:46
(56) Угу. Автор в самом начале сказал - "Записи в регистр добавляются в ПриЗаписи из формы РТиУ". Далее тему можно уже не обсуждать - достаточно воспользоваться типовой обработкой перепроведения документов и будут "очищены все записи регистра сведений, внезапно."(с)
58 FIXXXL
 
12.02.20
14:47
(57) смелое решение! :)
59 RomanYS
 
12.02.20
14:51
(57) Самое интересное, он всё проверил в (8)
60 Serg_1960
 
12.02.20
15:01
PS: не судите строго автора - он же уже извинился за неверную информацию в (50).
61 Cyberhawk
 
12.02.20
15:05
(60) Добавь в заголовок ветки инфу о том, что ответ найден, и номер сообщения в ветке
62 Ботаник Гарден Меран
 
12.02.20
15:09
(59)
Проверял из формы, нажимая кнопки
А надо было из списка или обработкой.
63 oslokot
 
12.02.20
15:15
(59) (62) да, я делал интерактивно, из формы поэтому и написал в (8) что все ок. А на самом деле было (50)
64 Конструктор1С
 
12.02.20
17:19
"куча мест, где вызывается обновление записей этого регистра"

Инкапсуляция? Не, не слышал
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.