Имя: Пароль:
1C
1С v8
Удаление номенклатуры, которая давно не используется.
, ,
0 LastSoldier
 
30.10.14
22:01
Всем привет!
Ребят, выручить плиз нужна обработка для чистки базы от неиспользуемой номенклатуры.
УТ 11.1.9.44
1С Предприятие 8.3.5.1231
Нам перенесли из 1С 7.7 всю номенклатуру, ее там около 100 000, из этого всего мы используем всего 10-20к, остальное нам бы удалить, но просто так все удалить не получается обычным методом. При переносе на весь товар (100к) были созданы документы "установка цен".
Поделитесь обработкой плиз.
Или подскажите может можно как-то простым методом все это сделать?
1 Chameleon1980
 
30.10.14
22:13
остатки, движения на глубину.
как вам нужно?
2 Фокусник
 
30.10.14
22:16
(0) "Нам перенесли из 1С 7.7 всю номенклатуру"
Проще было НЕ переносить лишнюю номенклатуру. Теперь нужно формулировать признак "не нужности" и оплачивать дополнительные работы по очистке. Готовую обработку врядли найдёте. ИМХО.
3 marvak
 
30.10.14
22:21
(0)
Можно попробовать такой экстремальный метод. :))
Предварительно сделай копию базы!
Помечаешь на удаление всю номенклатуру и все документы Установка цен номенклатуры.
Потом делаешь Удаление помеченных объектов. Та номенклатура, которая есть еще где то кроме документов Установка цен, должны удалиться.
Вроде прокатит.
4 marvak
 
30.10.14
22:22
(3)+
Хотя нет, доки установки цен номенклатуры же не все должны удалиться..
:(
5 marvak
 
30.10.14
22:24
(3)++
"Та номенклатура, которая есть еще где то кроме документов Установка цен, НЕ должна удалиться"

Но все равно не прокатит.
6 КонецЦикла
 
30.10.14
22:26
Если есть она где-то кроме установки цен - не удалится, не сцать
7 H A D G E H O G s
 
30.10.14
22:26
(3) Он будет ждать до морковкиного заговения.
8 КонецЦикла
 
30.10.14
22:26
Потом вернуть движения установкам цен... но это если тупенько
9 H A D G E H O G s
 
30.10.14
22:26
(7) Ира ему не простит.
10 Chameleon1980
 
30.10.14
22:27
тут крутить нужно от того, что вам в оконцове нужно.
как-то так
11 marvak
 
30.10.14
22:27
(7)
Это да.
12 LastSoldier
 
30.10.14
22:31
мне нужен только тот товар который участвовал в доках продаж, перемещений, ОС, есть остатки. (3) по сути вы правы, мне примерно так и надо сделать, есть такое конечно прокатит )
13 marvak
 
30.10.14
22:33
(12)
Попробовать то можно. Только копию базы не забыть сделать.
14 LastSoldier
 
30.10.14
22:34
(6) установка цен не удалится, если там есть хотя бы один не удаленный товар?
А как тогда удалять товар который есть в установке цен, он же попросит удалить и установку цен, а так как там есть хоть один товар, он ее и не удалит, я прав?
15 LastSoldier
 
30.10.14
22:34
(13) обижаете )
16 marvak
 
30.10.14
22:36
(14)
Не удалит установку цен тогда.
Неизвестно же как там у вас она создана, по какому принципу.

Надежнее конечно обработку самому написать.
Так все моменты можно проконтролировать.
17 LastSoldier
 
30.10.14
22:40
(16) согласен, но я пока еще не постиг таких знаний )
Со временем обязательно напишу
18 Chameleon1980
 
30.10.14
22:42
последний из вояк :)
19 marvak
 
30.10.14
22:43
(17)
А установка цен по какому принципу создалась?
Для каждой номенклатуры своя или как?
20 КонецЦикла
 
30.10.14
22:43
(17) Тогда руками потиху удаляй, пока чай пьешь... за пару месяцев подчистишь
И пользователи спасибо скажут
21 Chameleon1980
 
30.10.14
22:51
чем/как переносили - не в курсе?
база уже в бою?
22 LastSoldier
 
30.10.14
23:01
(19) не, общие их всего при переносе создалось 10 штук
23 LastSoldier
 
30.10.14
23:02
(21) база новая уже с марта в бою.
Переносили они все у себя в офисе, как говори, все стандартными средствами делали
24 LastSoldier
 
30.10.14
23:11
Товар не удаляется, так как он есть в установке цен (
Получается что его надо сначала удалить из установки цен.
Я щас попробовал поставить на удаление группу товаров и установку цен по ним, но не получилось так просто
25 Chameleon1980
 
30.10.14
23:20
ну типа запрос состряпать по использованным за период боя товарам. далее по ним получить цены на определенные нужные периоды. для этих товаров с этими ценами на те даты создать новые доки установки цен. а старые доки установки цен - долой. самое простое решение. просто прямое
26 Otkr
 
30.10.14
23:33
(9) Так а ты на что, утешишь)))
27 H A D G E H O G s
 
30.10.14
23:48
(25)

1) Добавить в номенклатуру признак Булево "Рабочая".
2) Обойти метаданные регистров накопления, (измерения, реквизиты), найти ссылки на номенклатуру.
3) Для каждого регистра по данному полю номенклатуры сделать запрос, вытаскивающий содержащиеся в нем номенклатуры, не имеющие флага "Рабочая" по результату запроса - простановка флага.
4) Находим все Установки цен, в которых есть хоть одна нерабочая номенклатура, делаем их копии, копируем в них строки с нерабочими номенклатурами, из исходных - удаляем.

5) Копии Установки цен помечаем на удаление, нерабочую номенклатуру помечаем на удаление.
6) Для каждых 500 удаляемых номенклатур делаем УдалитьОбъекты() и смотрим интерактивный результат
28 Chameleon1980
 
30.10.14
23:54
ну типа того. ну только можно без доп реквищитов
29 КонецЦикла
 
30.10.14
23:57
(28) Поколение некст уже не мыслит существование без доп. реквизитов
И типовые тому подтверждение...
30 Chameleon1980
 
30.10.14
23:58
(29) ага. ну понял :)
31 H A D G E H O G s
 
31.10.14
00:27
(29) Поясни.
32 H A D G E H O G s
 
31.10.14
00:37
Поколение семерошников, переползших с баз в которых можно самому захерачить индекс на любую колонку (не задумываясь о последствиях), и табличек достаточно мало, не мыслит о том, что запросы могут выполняться достаточно долго и пользователю может понадобиться прервать выполнение и пофиксить результат.
33 Chameleon1980
 
31.10.14
00:44
дык реквизит то все равно не обязателен
внешнее
34 Chameleon1980
 
31.10.14
00:45
нах в структуру то лезть
35 Chameleon1980
 
31.10.14
00:47
в данной постановке для определенных конфиг можно, допустим использовать рс "ном. контров", с опред. контром. Не вариант как замена реквизита?
36 H A D G E H O G s
 
31.10.14
01:06
(35) РС - лучше (быстродействие), но не критично. Я идею подал.

Но только в конфе, там все на транзакциях делать надо.
37 Семинарист
 
31.10.14
01:51
Рекомендую за основу обработки удаления неиспользуемых взять с ИТС алгоритм обработки "Удаление помеченных объектов". В ней используется метод получения таблицы со всеми ссылками на подсунутый в функцию массив проверяемых объектов. Потом она анализируется на возможность удаления проверяемого объекта. В штатной обработке это помеченные на удаление, вместо них можно подсовывать порциями, например по 100 штук справочник Номенклатура. В полученной таблице смотрим ссылки на текущую номенклатуру и если есть только "Установка цен" и всякие регистры сведений грохаем программно номенклатуру непосредственно. Потом почистим доки установки цен от битых ссылок на удаленные. Или если аккуратно только помечаем номенклатуру на удаление и удаляем строки с ней в документах. Так я чистил базы от неиспользуемой номенклатуры, контрагентов и т.п.
38 Sasha_1CK
 
31.10.14
02:36
так как ссылок на на документы установки цен нет - то при удалении помеченных объектов 0 все документы установки цен удалятся вместе с ценами рабочей номенклатуры - это не есть хорошо - а вдруг у номенклатуры с марта не менялась цена или кто нить в старые документы полезет?


надо (3) довести до логического завершения.
1. Сделать копию базы.
2. В копии пометить на удаление документы устанвоки цен, созданные припереносе
3. В копии пометить на удаление все элементы справочника "Номенклатура"  (правда в УФ - это может занять немало времени если делать через выделение в динамическом списке)
4. Провести удаление помеченных объектов в копии базы.
5. Написать обработку
5.1. Подключиться через СОМ к копии базы и получить оттуда коды рабочей номенклатуры.
5.2 Обработать справочник номенклатуры в рабочей - если ее кода нет в списке рабочих кодов из копии - то пометить их на удаление.
5.3 обработать документы установки цен в рабочей базе - удалить из них помеченные на удаление элементы справочника Номенклатура.
6. Удалить помеченные объекты в рабочей базе.
39 alle68
 
31.10.14
04:04
(12) Если список объектов, где может присутствовать ссылка на номенклатуру известен, то запросом получить встречающиеся товары (кроме установки цен), а остальные удалить, вычистив установку цен.

Если лень запрос писать, то:
1. Копия базы
2. Сносим полностью установку цен.
3. Метим всю номенклатуру.
4. Удаляем помеченные (ждём денёк-другой).
5. Переносим установку цен из копии для оставшихся в живых.
40 Sasha_1CK
 
31.10.14
04:09
(39) узкий момент - если у номенклатуры не изменялась цена с момента ввода остатков - то может не очень хорошо получиться.
Все ж таки ИМХО лучше удалять в копии - и оттуда взять список рабочей номенклатуры
41 DrZombi
 
гуру
31.10.14
07:30
(0) Разрешаю вам создать обработку и удалить лишние позиции :)
...
А потом её заново создать ;)
42 DrZombi
 
гуру
31.10.14
07:33
(39) Шот народ какие то сложности придумывает :)

Просто анализируешь обороты и другие регистры на момент использования номенклатуры...
Если энто не используется, то находишь документ установка цен и удаляешь позицию. После помечаешь на удаление элемент Номенклатуры. И так далее.
Как только документ установки цен опустеет, то и его помечаешь на удаление.

Затем запускаешь контроль удаления объектов и смотришь, где что еще зацепилось и по обстоятельству допиливаешь свою обработку до "совершенства"... В итоге все удалено, обработку можно выложить на инфостарте в эту клоаку :)
43 Кай066
 
31.10.14
08:56
Вариант на любителя. Получаешь остатки. Далее групповой обработкой в Отбором не в Списке(ставишь список где есть остатки) меняешь наименование на "Старая номенклатура". Далее поиском и удалением дублей по наименованию удаляешь дублирующиеся Старая номенклатура
44 Мимохожий Однако
 
31.10.14
09:13
Обработкой удалить из документов Установка цен номенклатуру без остатков, одновременно помечая на удаление. Потом удалить. Час работы с перекурами.
45 Рэйв
 
31.10.14
09:23
(0)Перенеси неиспользуемые в отдельную папку и забудь про них. Нафиг себе проблемы искать на пустом месте?
46 mTema32
 
31.10.14
09:51
(44) Вот так и убиваются базы.
Час работы? Ну-ну...
В (27) нормальное решение. Без написания обработки думаю только проблем больше создашь. Чего-нить нужное грохнешь.
47 H A D G E H O G s
 
31.10.14
09:53
(46)
"Вот так и убиваются базы. "

Это они только потом понимают. Когда хлебнут гемморойчика по синхронизации копии и рабочей базы в которой наработали с момента начала пиздеца.
48 H A D G E H O G s
 
31.10.14
09:54
(47) Час работы с перекурами, хренли.

Че тут думать, прыгать надо.
49 vlandev
 
31.10.14
10:17
Если вдруг база на DBF то можно ускорить: удалить все регистры и удалить все документы "установка цен номенклатуры" , ну а потом удалять помеченные на удаление.
50 Chameleon1980
 
31.10.14
10:29
чет я не понял народ про удаление доков установки цен - а нам что цены актуальные не нужны на живые позиции?
51 Chameleon1980
 
31.10.14
10:29
или я че не догоняю или вы счас насоветуете поудалять доки установки цен
52 vlandev
 
31.10.14
10:35
(50) Это удаление будет в отдельной базе , а цены все равно там хранятся в периодике , при удалении документа они должны остаться.
53 H A D G E H O G s
 
31.10.14
10:49
Но не останутся. Хехехе.

Толпа самородков.
54 mTema32
 
31.10.14
10:57
(52) О_О РС ЦеныНоменклатуры как бы подчинен регистратору (в типовой УТ и Рознице точно). Грохнешь документы и записи в регистрах почистятся.

И чего все привязались к этим документам установки цен? Они вааще не нужны и не важны для процедуры, которую ТС хочет провернуть. Эти доки просто потом почистить нужно от битых ссылок на удаленные объекты.
55 anatoly
 
31.10.14
11:00
(27) (38) зачем фигней и гемороем страдать?
порциями скажем по 1000 номенклатур делать ПоискСсылок для них, если есть объекты тип НЕ док.УстановкаЦен - оставляем, иначе пометка удаления и удаляем их из УстановкиЦен.

потом удаляем все помеченые. ВСЕ.
56 vlandev
 
31.10.14
11:08
(54) Я предлагаю грохнуть документы в обход движка 1С удалением соотвествующих дбф-ок.
57 H A D G E H O G s
 
31.10.14
11:18
(55) Хорошая попытка.
58 magicSan
 
31.10.14
11:27
выгрузить доки установки цен, удалить номенклатуру, загрузить установку цен
59 mTema32
 
31.10.14
11:32
(58) Не читатель?
"При переносе на весь товар (100к) были созданы документы "установка цен"."
(56)"УТ 11.1.9.44 1С Предприятие 8.3.5.1231"
Какие дбф-ки? Или я что-то пропустил при изучении платформы 8.х??
60 magicSan
 
31.10.14
11:33
(59) выгрузи все документы и удали, затем удали номенклатуру а доки обратно загрузи
61 magicSan
 
31.10.14
11:33
(60) и почисти от леввых ссылок (^^)
62 stix2010
 
31.10.14
11:37
(0) не используется значит нет ссылок в базе на эту номенклатуру.

Перебираем справочник номенклатуры
используем НайтиПоСсылкам()
если ссылок на элемент нет помечаем на удаление

Удаляем средствами платформы помеченное, PROFIT!!!

все остальное от лукавого
63 vlandev
 
31.10.14
11:38
(59) ДБФ-ки потому как перенести надо из под платформы 77 , читайте внимательней (0)!
64 H A D G E H O G s
 
31.10.14
11:48
Хорошая ветка по выявлению клювожопых.

Надо этот вопрос запомнить, он идеален для тестирования кандидатов при приеме на работу.
65 mikecool
 
31.10.14
12:12
(64) какой?
66 magicSan
 
31.10.14
12:28
(64) ахахаха
67 mTema32
 
31.10.14
14:02
(62) Такой обработкой будет удалено 0 объектов) 146%
68 mTema32
 
31.10.14
14:04
+(62) Да. И можно будет состариться к тому времени как она отработает.
69 ssh2QQ6
 
31.10.14
14:08
(28) >  ну только можно без доп реквищитов

После обработки реквизит можно удалить за ненадобностью, или РС, если его использовать
70 Chameleon1980
 
31.10.14
14:16
(69) ну записи РС "Номенклатура контрагентов" потом и убить. вообще безболезненно. я уж думал решение давно есть. а то крутят тут фигню с разных сторон.
71 Domovoi
 
31.10.14
14:43
(0)Раз не получается удалить, значит нужная для удаления номенклатура уже помечена. Вычеркиваем помеченную номенклатуру из доков установки цен и перезаписываем(перепроводим) доки и спокойно удаляем ненужную номенклатуру.