|
Удаление записей из регистра сведений | ☑ | ||
---|---|---|---|---|
0
Gossar1C
05.08.13
✎
12:47
|
Здравствуйте. Появилась задача удалять неиспользуемую номенклатуру за 2012 год. Не получается с номенклатурой удалить и записи в регистре ЦеныНоменклатуры, пишет поле объекта не обнаружено Номенклатура, подскажите пожалуйста в чем дело?
&НаСервере Процедура УдалитьНеиспользуемые() Для Каждого Элем из Объект.НайденнаяНоменклатура Цикл Если Элем.Используется = Ложь Тогда УдалитьЦенуНоменклатуры(Элем.Номенклатура); ОбъектДляУдаления = Элем.Номенклатура.ПолучитьОбъект(); ОбъектДляУдаления.Удалить(); КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Процедура УдалитьЦенуНоменклатуры(НомЦена) Цены = Неопределено; Цены = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); Цены.Отбор.Номенклатура.Установить(НомЦена); Цены.Прочитать(); Для Каждого ЦеныУд ИЗ Цены Цикл Цены.Удалить(ЦеныУд); КонецЦикла; Цены.Записать(); КонецПроцедуры |
|||
1
Godofsin
05.08.13
✎
12:55
|
на какую строчку ошибка?
|
|||
2
Gossar1C
05.08.13
✎
12:57
|
(1) Цены.Отбор.Номенклатура.Установить(НомЦена);
|
|||
3
salvator
05.08.13
✎
13:02
|
(2) А по ней отбор включен?
|
|||
4
Gossar1C
05.08.13
✎
13:03
|
(2) тоесть?
|
|||
5
Gossar1C
05.08.13
✎
13:04
|
регистр переодический, подчинение регистратору
|
|||
6
Gossar1C
05.08.13
✎
13:12
|
=\
|
|||
7
Maxus43
05.08.13
✎
13:13
|
(5) ну если подчинён регистратору - то отбор возможен только по регистратору
|
|||
8
Gossar1C
05.08.13
✎
13:14
|
(7) стоп стоп стоп) отбор по регистратору, а по номенклатуре потом как отобрать?
|
|||
9
Maxus43
05.08.13
✎
13:15
|
(8) выгружай набор в ТЗ, там меняй как надо и загружай в набор обратно
|
|||
10
Gossar1C
05.08.13
✎
13:17
|
(9) мне по сути этот набор нафиг надо удалить, потому что если я удаляю номенклатуру мне бы и желательно все что связано с этой номенклатурой в регистре тоже удалить
|
|||
11
Михаил Козлов
05.08.13
✎
13:18
|
(0) Удаление записей из набора не вполне коррктно: нужно удалять строки в документе УстановкаЦенНоменклатуры. Иначе при перепроведении возникнут снова. Да и полностью удалить номенклатуру не удастся, пока есть ссылка в документе установки цен.
|
|||
12
Vitamax3
05.08.13
✎
13:20
|
А к "Ссылка не найдена" в строках документа как относишься?
(11) Кто сказал что не удастся? |
|||
13
m-serg74
05.08.13
✎
13:20
|
(10) распроведи документы УстановкаЦенНоменклатуры за 2012 год и все
|
|||
14
Maxus43
05.08.13
✎
13:21
|
(10) откуда вобще идея удалить записи из регистра родилась? это ж неправильно, удали из ТЧ документа просто, потом опять его проведи
|
|||
15
Gossar1C
05.08.13
✎
13:22
|
(13) некоторая номенклатура 2012г использовалась в недавних документах 2013г, следовательно распроводить не вариант
|
|||
16
m-serg74
05.08.13
✎
13:24
|
(15) на номенклатуру наверное есть не только УстановкаЦенНоменклатуры, но и еще куча всяких документов, поэтому лучший вариант, сделать Папочку типа Неиспользуемая номенклатура и просто перекидывать туда чтоб при набивке документов не мешалась
|
|||
17
Godofsin
05.08.13
✎
13:30
|
(15) Почему не вариант? Распровел, удалил нужные позиции, провел. В чем проблема?
|
|||
18
Gossar1C
05.08.13
✎
13:32
|
(16) вариант уже превысел более 50000 позиций)
|
|||
19
George Wheels
05.08.13
✎
13:32
|
(17) А что делать со средней ценой (если она используется конечно)?
|
|||
20
Gossar1C
05.08.13
✎
13:33
|
(17) буду пробовать сейчас так делать, просто когда мы по прайсу заливали номенклатуру то почему то установка цен не проводилась хотя программно установлена
|
|||
21
Maxus43
05.08.13
✎
13:33
|
(18) документ надо менять всё равно, зачем тебе там в итоге битые ссылки? удаляй записи из документа сначала
|
|||
22
Godofsin
05.08.13
✎
13:35
|
(19) хз, ни о какой средней цене автор не упоминал. Даже конфы не знаем, но предполагаю, что УТ. А чо там за средняя цена?
|
|||
23
Godofsin
05.08.13
✎
13:36
|
(18) Да и пох... Можно ваще сделать эту папку не видимой
|
|||
24
Gossar1C
05.08.13
✎
13:39
|
(23) у нас стал очень сильно зависать полнотекстовый поиск, даже обновление индекса каждый 5 минут по регламентному не очень помогает
|
|||
25
George Wheels
05.08.13
✎
13:45
|
(22) Туплю. Был в другой теме про регистр бухгалтерии.
|
|||
26
m-serg74
05.08.13
✎
13:50
|
(24) а зачем вам полнотекстовый поиск?
|
|||
27
Godofsin
05.08.13
✎
13:50
|
(24) Короче, самый верный способ - удалять позиции из документов и проводить доки.
|
|||
28
Сти
05.08.13
✎
13:50
|
(8) а потом только проверку...
Кстати, в "для каждого" удалять нельзя - куча строк может быть пропущена.
Но напрямую удалять записи из регистра, подчиненного регистратору все же как-то не так как-то... |
|||
29
m-serg74
05.08.13
✎
13:50
|
(27) из всех видов доков, закрытом периоде, супер)))
|
|||
30
Gossar1C
05.08.13
✎
13:56
|
кароч делаю так)
&НаСервере Процедура УдалитьНеиспользуемые() Для Каждого Элем из Объект.НайденнаяНоменклатура Цикл Если Элем.Используется = Ложь Тогда УдалитьЦенуНоменклатуры(Элем.Номенклатура); ОбъектДляУдаления = Элем.Номенклатура.ПолучитьОбъект(); ОбъектДляУдаления.Удалить(); КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Процедура УдалитьЦенуНоменклатуры(НомЦена) Результат = Неопределено; ЗапросЦена = Новый Запрос; ЗапросЦена.УстановитьПараметр("Номенклатура",НомЦена); ЗапросЦена.Текст = "ВЫБРАТЬ | УстановкаЦенНоменклатуры.Ссылка |ИЗ | Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры |ГДЕ | &Номенклатура В (УстановкаЦенНоменклатуры.Товары.Номенклатура)"; Результат = ЗапросЦена.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл ДокументУстановкиЦен = Результат.Ссылка.ПолучитьОбъект(); Для Каждого Элем ИЗ ДокументУстановкиЦен.Товары Цикл Если Элем.Номенклатура = НомЦена Тогда ДокументУстановкиЦен.Товары.Удалить(Элем); КонецЕсли; КонецЦикла; ДокументУстановкиЦен.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; КонецПроцедуры незнаю что получится =\ |
|||
31
Сти
05.08.13
✎
13:56
|
(24) Если так уж надо почистить справочник номенклатуры, без мульона "объект не найден", лучше создать справочник НенужнаяНоменклатура, куда скопировать данные ненужных позиций из Номенклатуры, выкрутить из древней обработки с ИТС "Поиск и замена значений" куски кода в свою обработку, которая тихо и мирно (но медленно) перепропишет все ненужное на новый справочник и удалит номенклатуру из живого справочника.
|
|||
32
Godofsin
05.08.13
✎
13:59
|
(29) Сомневаюсь, что они там чо то закрывают в УТ
|
|||
33
Godofsin
05.08.13
✎
13:59
|
(30) Главное не забудь, что тестировать надо на рабочей базе
|
|||
34
m-serg74
05.08.13
✎
14:01
|
(32) т.е. долги с покупателями не нужно считать?
|
|||
35
Godofsin
05.08.13
✎
14:03
|
(34) Если только задеты будут торговые операции. Но тогда и удалять нельзя элемент. А установка цен номенклатуры как влияет на взаиморасчеты?
|
|||
36
m-serg74
05.08.13
✎
14:04
|
(35) а что 50000 номенклатуры в справочнике и по ней ни одной реализации, поступления, перемещения???
|
|||
37
m-serg74
05.08.13
✎
14:05
|
(33) [Главное не забудь, что тестировать надо на рабочей базе]
))) Это злая шутка? или хотел сказать на копии? |
|||
38
Сти
05.08.13
✎
14:07
|
(30) Еще раз: внутри "Для каждого" удалять нельзя - меняются индексы, и следующая после удаленной строка будет пропущена при обходе цикла. Хорошо, в этом документе удаляемая номенклатура будет встречаться скорее всего один раз, так что это будет незаметно, но вообще - это неправильно.
Кстати, согласно приведенному коду один и тот же документ может открывать и перепроводиться хз сколько раз, раз бежим по номенклатуре, а не по докам... Время некритично, наверное? |
|||
39
m-serg74
05.08.13
✎
14:08
|
(38) а ху.и думать прыгать надо)))
|
|||
40
Gossar1C
05.08.13
✎
14:14
|
(38) в течении недели успею) да таки так неправильно, но это я по быстрому накатал код =\
|
|||
41
Vitamax3
05.08.13
✎
14:16
|
(0) Есть такой древний обряд - обрезание.
Используем периодически для больших баз. |
|||
42
m-serg74
05.08.13
✎
14:17
|
(40) так что кроме установки цен, других доков по этой номенклатуре нету?
|
|||
43
m-serg74
05.08.13
✎
14:17
|
(41) каждый год что ли?
|
|||
44
Gossar1C
05.08.13
✎
14:18
|
(41) свертку не разрешили)
|
|||
45
Gossar1C
05.08.13
✎
14:19
|
(42) насколько знаю нету, ну кроме индивидуального набора упаковок
|
|||
46
m-serg74
05.08.13
✎
14:20
|
а ну тогда никаких трудностей, установки почистить и перепровести, а потом грохнуть номенклатуру, только с проверкой на существование ссылок все таки лучше
|
|||
47
Vitamax3
05.08.13
✎
14:26
|
(43) Как только >"22".
Примерно раз в три года. (46) Лучше сначала проверить: есть ли доки кроме установки цены, а то всё будет зря (( |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |