Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Два вопроса по независимому непериодическому регистру сведений (удаление записей)

Два вопроса по независимому непериодическому регистру сведений (удаление записей)
Я
   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
И да.. они так то нужны, ибо признак удаленной записи должен лететь в стороннюю базу. чтоб и там удалилось, и только после обмена ..удаляются, это, если по-уму
   Dmitriy_ Kolesnikov
 
4 - 24.09.20 - 15:05
(1)
Ни фига не понял!
Запросом-то я их вижу!
Но мне их надо снести напрочь из таблицы изменений! Они ещё не успели улететь в стороннюю базу! Обмен раз в сутки, а регистр этот меняют по 100500 раз на дню. И вот - создали запись, потом стерли. И всё - с концами, как будто ничего не было. А в таблице изменений плана обмена удаленные записи висят! А надо, чтоб не висели! Снести их с концами. Вот такая задача. Как это сделать?
   Dmitriy_ Kolesnikov
 
5 - 24.09.20 - 18:49
Похоже, никто не удалял записи регистра из таблицы изменений.
   RomanYS
 
6 - 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);
                        НаборЗаписей.Прочитать();
                        ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,НаборЗаписей);
                    КонецЦикла;


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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.