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

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