Имя: Пароль:
1C
1С v8
Два вопроса по независимому непериодическому регистру сведений (удаление записей)
0 Dmitriy_
Kolesnikov
 
24.09.20
12:55
Прошу поделиться опытом.

1. Как в событии ПередЗаписью регистра сведений понять, что происходит: создание новой записи, изменение или удаление? Смотрел отладчиком - не вижу никакой разницы.
2. Регистр Сведений зарегистрирован в плане обмена, авторегистрация отключена. В событие ПередЗаписью, согласно документации БСП, прописано:
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюРегистра("<ИмяПланаОбмена>",   Источник, Отказ, Замещение);
При этом если мы создаем или изменяем запись - всё хорошо. Если удаляем - то запись из регистра удаляется, а в таблице изменений плана обмена она остается! Как следствие, при обмене возникает ошибка. Вопрос: как правильно удалить из таблицы изменений плана обмена информацию об удалённой записи регистра?
1 Ёпрст
 
24.09.20
12:57
(0) тупо запросом найти такие записи и привет
2 Ёпрст
 
24.09.20
12:58
достаточно сделать запрос к табличке изменений этого регистра и присоплить левым соединением реальную табличку регистра  и условие, что реальная табличка. измерение есть null, усё..
потом по наборам измерений регистра из этого запроса слепить набор записей и записать.
3 Ёпрст
 
24.09.20
12:59
И да.. они так то нужны, ибо признак удаленной записи должен лететь в стороннюю базу. чтоб и там удалилось, и только после обмена ..удаляются, это, если по-уму
4 Dmitriy_
Kolesnikov
 
24.09.20
15:05
(1)
Ни фига не понял!
Запросом-то я их вижу!
Но мне их надо снести напрочь из таблицы изменений! Они ещё не успели улететь в стороннюю базу! Обмен раз в сутки, а регистр этот меняют по 100500 раз на дню. И вот - создали запись, потом стерли. И всё - с концами, как будто ничего не было. А в таблице изменений плана обмена удаленные записи висят! А надо, чтоб не висели! Снести их с концами. Вот такая задача. Как это сделать?
5 Dmitriy_
Kolesnikov
 
24.09.20
18:49
Похоже, никто не удалял записи регистра из таблицы изменений.
6 RomanYS
 
24.09.20
19:33
(4) >> Как это сделать?
Найти запросом как написано в (1)
Удалить через ПланыОбмена.УдалитьРегистрациюИзменений(...
7 Ёпрст
 
24.09.20
20:05
(6) ага.. забыл дописать
:)
8 Ёпрст
 
24.09.20
20:05
слепить набор записей и подсунуть его  в УдалитьРегистрациюИзменений
9 Ёпрст
 
24.09.20
20:17
Тип того

                //это ежели непериодический, для периодического там свой набор и в отборе период или регистратор
        Запрос.Текст = "ВЫБРАТЬ
                       |    ТвойРегистрИзменения.Измерение1,
                               |           ///список всех измерений из таблички изменений
                       |    ТвойРегистрИзменения.ИзмерениеN
                       |ИЗ
                       |    РегистрСведений.ТвойРегистр.Изменения КАК ТвойРегистрИзменения
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТвойРегистр КАК ТвойРегистр
                       |        ПО ТвойРегистрИзменения.Измерение1= ТвойРегистр.Измерение1
                               |                          //тут по всем измерениям
                       |            И ТвойРегистрИзменения.ИзмерениеN= ТвойРегистр.ИзмерениеN
                       |ГДЕ
                       |    ТвойРегистрИзменения.Узел = &Узел
                       |    И ТвойРегистр.Измерение1 ЕСТЬ NULL ";
        Запрос.УстановитьПараметр("Узел", УзелОбмена);//тут для конкретного плана обмена, если не нужен узел, выкинь
        Выборка = Запрос.Выполнить().Выбрать();
                Пока Выборка.Следующий() Цикл
                        НаборЗаписей = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
                          НаборЗаписей.Отбор.Измерение1.Установить(Выборка.Измерение1);
                                                //тут все измерения
                          НаборЗаписей.Отбор.ИзмерениеN.Установить(Выборка.ИзмерениеN);
                        НаборЗаписей.Прочитать();
                        ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,НаборЗаписей);
                    КонецЦикла;

10 hhhh
 
24.09.20
22:07
(5) нельзя удалять из таблицы изменений. Тогда удаление не попадет в обмен и в базе приемника запись не удалится. Вы что, хотите базу угробить из-за ваших безумных хотелок?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn