Имя: Пароль:
1C
1С v8
Как очистить не битые а пустые записи в регистре накопления ?
,
0 antgrom
 
11.12.13
10:17
V8
Розница
Бывает битые ссылки.
Вместо регистратора <Объект не найден ...>
А у меня в одной из баз  - пустые ссылки  в Регистре накопления.

просто несколько строк пустые.

как их удалить ?
код типа :

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

не работает , т.к. невозможно установить отбор , т.к. регистратора "Выборка.Регистратор" нет.

ТиИ ?
с проверкой( логическую и ссылочную  ) и удалением ?
1 mikecool
 
11.12.13
10:20
в кач регистратора - пустую ссылку, не?
2 Wobland
 
11.12.13
10:21
>("ПустаяСсылкаДокумента",Неопределено)
за что ты её так?
3 Рэйв
 
11.12.13
10:24
Где
Ссылка Есть NULL
И Ссылка <>&ПараметрПустаяСсылка
4 Рэйв
 
11.12.13
10:24
хотя в 0 вроде атк и есть:-)
5 antgrom
 
11.12.13
10:26
если получится сделать программно  , без ТиИ - это лучше.
6 НЕА123
 
11.12.13
10:45
(5)
как вариант.
прочитать в наборы все правильные записи. грохнуть регистр (записать без отбора пустой набор).
7 Maxus43
 
11.12.13
10:50
Набор = ТипРегистра[ИмяРегистра].СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Установить(Документы.ТвойДок.ПустаяСсылка());
набор.Прочитать();
Сообщить(набор.Количество());

типы твой док - цикл по метаданным из регистратора регистра, зачем запрос вобще не понятно
8 Maxus43
 
11.12.13
10:52
точно бы понять ещё пустая ссылка там или неопределено
9 Адинэснег
 
11.12.13
11:10
10 antgrom
 
11.12.13
11:10
(6) не вариант , база большая. и не хочу.

(8) отладчик показывает что Выборка.Регистратор = неопределено
11 antgrom
 
11.12.13
11:14
(9) вопрос не как получить данные запросом , а как удалить запись в РН , в которой нет данных. Ни данных  , ни битых ссылок.
12 antgrom
 
11.12.13
11:29
у регистратора тип Неопределено , у видов оплат - тип оплат Чека ККМ , т.е. раньше записи принадлежали документам ЧекККМ
13 antgrom
 
11.12.13
11:48
Идея грохнуть все записи в регистре нравится мне всё больше - это регистр оборотов. Данные о продажах по платежным картам. Они уже на фиг никому не нужны. Нужное взять запросом , остальное грохнуть ...
14 hhhh
 
11.12.13
11:53
(13) всё-таки ТИИ лучше. Чего вы его боитесь?
15 antgrom
 
11.12.13
12:05
(14) на копии базы оно сейчас идёт уже несколько часов.
Мне же нужно , чтобы при ненахождении ссылки запись удалялась ?
это переферийная база , там не делалось никогда ТиИ , там сейчас тысячи строк сообщений про удаление.
Мне ну нужно чтобы эта инфа об изменениях попала в центральную базу. И вообще изменения не нужны.
Просто удалить несколько строк только в одном регистре.
А выборочно ТиИ не сделать ...
16 antgrom
 
11.12.13
15:30
Решил сделать удалением регистра.
И потом его восстановлением.
Данные не уверен что нужны , их можно сохранить в таблицу и потом перезаписать. Или перепровести документы.
17 George Wheels
 
11.12.13
15:55
Процедура КнопкаВыполнитьНажатие(Кнопка)
    //Удаление данных из регистра сведений
    
    НаборЗаписей = РегистрыСведений.Регистр1.СоздатьНаборЗаписей();
    НаборЗаписей.Прочитать();
    
    Парам = 0;
    
    Пока Истина Цикл
        Если Парам = НаборЗаписей.Количество() Тогда
            Прервать;
        КонецЕсли;
        
        Запись = НаборЗаписей[Парам];
        Если Запись.Объект = Неопределено Тогда
            НаборЗаписей.Удалить(Парам);
        Иначе
            Парам = Парам + 1;
        КонецЕсли;
    КонецЦикла;
    НаборЗаписей.Записать();
КонецПроцедуры
18 Леха Дум
 
11.12.13
16:00
(17) для РН это работать не будет
19 George Wheels
 
11.12.13
16:01
(18) Да. Не обратил внимания, что это РН.
20 antgrom
 
16.12.13
08:57
отписываюсь.
отвязал этот узел
удалил РН
обновил
загрузил конфу с центр базы
привязал этот узел

Данные по платежным картам были не нужны , поэтому не восстанавливал.
Но еслиб были нужны , сделал бы так : п.1 выгрузил данные в файл в т.з. , а потом п. последний записал бы данные из файла.