Вход | Регистрация
 

Нужен совет по восстановлению справочника номенклатуры

Нужен совет по восстановлению справочника номенклатуры
Я
   evgpinsk_
 
08.08.21 - 20:46
Программно была запущена отлаженная процедура по переносу элементов справочника из одной папки в другую
код простой:
            Спр.Родитель = ПапкаПриёмник;
            Спр.Записать();
Но процедура подвисла, процесс пришлось убить.
И после этого и подпапки и элементы видны только если справочник просматривать одноуровнево.
Если же в разрезе групп, то эти элементы не видны

Делаем вывод, что поле ParentID у них забилось не верной инфой.

Октрываю DBF файл справочника напрямую.
Вижу, что все мои "перенесённые" товары в поле ParentID имеют верное значение "   GA7"
https://prnt.sc/1l65ndd
на скрине таких элементов 623

у элемента с ID="   GA7" его  CODE="     20886"
https://prnt.sc/1l67btl

т.е. по логике, когда в 1с я зайду в папку с кодом 20886, я должен там увидеть 623 элемента.
Но по факту происходят какието глюки, когда я захожу в эту папку.
Если опускаться стрелкой вниз, то увижу только 20 папок и всё.
По клавише END  я увижу свои "потерянные" элементы номенклатуры
https://prnt.sc/1l7530a

копия есть только 2хдневной давности, сложно просто перекинуть сам файл.

Как варианты лечения?
   ДенисЧ
 
1 - 08.08.21 - 20:47
Индексы пробовал перестроить?
   nodrama
 
2 - 08.08.21 - 20:53
Очень интересно. Но почему-то картинки не открываются.
Для начала я бы наладил копии, что бы делались каждый день.
Сделал бы копию текущей базы и сделал бы там полное ТИИ.
Почистил кеш, потому что на всякий случай. для профилактики.
Потом бы смотрел дальше)
   МихаилМ
 
3 - 08.08.21 - 21:08
(0)
в белорусии впн запрещены
   acanta
 
4 - 08.08.21 - 21:33
Такое бывает, когда группа подчиненного элемента не совпадает с группой его родителя. Чтобы исправить глюк достаточно очистить поле родитель у всех и записать. А затем восстановить правильные данные о родителях из копии, например по оле.
   evgpinsk_
 
5 - 08.08.21 - 22:37
(1) Да, те что перестраиваются при старте 1с, когда она ругается. Процедура длится примерно 5 минут. Не помогло.
Затем запустил в конфигураторе ТиИ ИБ:
https://prnt.sc/1l8urhg
и уже 4 часа идёт и не завершилось
   evgpinsk_
 
6 - 08.08.21 - 22:39
(2) Копии делаются каждый день, но как назло вчера не сделалась изза сбоя сети )
   evgpinsk_
 
7 - 08.08.21 - 22:39
(4) Это не понял
   Злопчинский
 
8 - 08.08.21 - 23:26
Возможно ПапкаПриёмник подсунулось значение не папки, а элемента
   evgpinsk_
 
9 - 09.08.21 - 00:15
(8) Я разобрался в проблеме.
Мой алгоритм переноса всех элементов из "ПапкаОткуда" в "ПапкаПриёмник" не до конца верен. Вот он полностью:

Процедура Выполнить()
    Спр1=СоздатьОбъект("Справочник.ТМЦ");
    Список = СоздатьОбъект("СписокЗначений");
    Спр1.ИспользоватьРодителя(ПапкаОткуда);
    Спр1.ВыбратьЭлементы();
    Пока Спр1.ПолучитьЭлемент() = 1 Цикл
        Список.ДобавитьЗначение(Спр1.ТекущийЭлемент());
    КонецЦикла;
    Для к=1 По Список.РазмерСписка() Цикл
        ТекЭл = Список.ПолучитьЗначение(к);
        Если Спр1.НайтиЭлемент(ТекЭл) = 1 Тогда
            Спр1.Родитель = ПапкаПриёмник;
            Спр1.Записать();
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
   evgpinsk_
 
10 - 09.08.21 - 00:25
Он практически всегда работает правильно, кроме случая когда пользователь захочет перенести данные из "папки А" в любую подчинённую "папке А" папку.
В таком случае (согласно алгоритму) родителем подчинённой папки становится сама эта подчинённая папка.
1с технически пропускает такое действие.
Но изза этого естественно "ломается" справочник.
   Злопчинский
 
11 - 09.08.21 - 00:32
все как всегда ;-) кривые руки ;-)
разобрался - и хорошо!
   evgpinsk_
 
12 - 09.08.21 - 00:32
Ну а глюки, которые я наблюдал, были изза плохого индексного файла справочника. Он поломался, когда сеанс 1с был убит, т.к. алгоритм естественно подвис.
А переиндексация, которая сама попросилась при следующем запуске 1с, не переиндексировала справочник номенклатуры (кстати я не знаю почему).
И нужно было этот cdx файлик просто убить, чтобы он создался заново.
Предварительно конечно сначала нужно было откорректировать в bdf файле поле ParentID "подчинённой папки". Изза неправильного алгоритма у этого элемента ID равнялся ParentID
   hhhh
 
13 - 09.08.21 - 01:10
(10) а писал "отлаженная процедура" ?
   d_monah
 
14 - 09.08.21 - 01:20
Мдя,логика конечно у ТС своеобразная,если ветка сегодня не уйдет в туман,расжуем.
   evgpinsk_
 
15 - 09.08.21 - 01:26
(13) Ну как оказалось "почти отлаженная" )
   evgpinsk_
 
16 - 09.08.21 - 01:27
(14) интересно

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