Удаление данных (определенных строк) из документа 1С 8.2 #600633


#0 by rs1c
Доброго времени суток. Есть большая база с учетными данными серийных номеров (за 400000 записей). Серийный номер вносится документом и дальше проходит процедуру обработки. Что нужно сделать: 1. Есть список серийных номеров (можем грузануть из экселя не вопрос) 2. Нужно по параметру (есть гарантия или нет) из этого списка сделать отбор и все что не попадает под гарантию (серийники)просто удалить из документов прошлых периодов. Все что с оставшимися делать я уже знаю. Прошу в общем то совета и мыслей как это реализовать на очень большом объеме данных. База SQl с оперативкой и процом проблем нет. Важно время исполнения, так как процедура не совсем разовая. Заранее спасибо!!!
#1 by Wobland
хм... с другого конца зайти не пробовал? не добавлять ненужные данные
#2 by rs1c
Требуется зачистить базу от доков, чтоб поменьше была, а то раздулась.
#3 by Ахиллес
И в чем трудность возникла? Что уже сделал, что не получилось?
#4 by rs1c
Сейчас есть механизм удаления данных, но скорость обработки 100 серийников за 5 часов, ну совсем что то не так я написал. Вот и прошу посоветовать гуру как лучше это все реализовать.
#5 by Wobland
>100 серийников за 5 часов мужик! я так не смогу
#6 by rs1c
Вот так вот удаляю. К = 0;    Для каждого Строки Из Номера Цикл
#7 by rs1c
Верю, что код просто ... без слов.
#8 by Wobland
так я и думал - записываешь после каждого удаления
#9 by rs1c
Суть то удаления верна? что нужно оптимизировать чтоб ускорить?
#10 by rbcvg
запись после цикла делать?
#11 by Wobland
на вот для примера. какашками не кидаться, написано на коленке для почти одного раза
#12 by Wobland
Найти, НайтиСтроки покури
#13 by Ахиллес
Чувак, если у тебя документы проводятся по регистрам, то нужно делать запрос к регистру. Это раз. Во вторых удалять только часть документа это... эээ... как бы не совсем методологически правильно. Ну и в третьих. Само по себе количество учётных данных ни на что по гамбургскому счёту не влияет. Если ты думаешь, что обрезка базы решит какие то твои проблемы, то скорее всего ошибаешься.
#14 by fisher
1) не нужно записывать документ после удаления каждой его строки 2) документы записывать в транзакции пачками по сотне (скажем). Вообще, оптимальное количество операций в транзакции подбирается экспериментально под производительность сервака.
#15 by rs1c
Спасибо Вам за советы. Буду оптимизировать, "Wobland" - спасибо за пример.
#16 by fisher
И цикл обхода мне сильно не нравится. Сейчас у тебя один док может обрабатываться неоднократно, а проведение - самая длительная операция. Я бы загнал все номера во временную таблицу и одним запросом получил все доки и строки, которые надо удалить. А потом быстренько пробежался с учетом уже вышесказанного.
#17 by spu79
А может разделить мух и котлеты? Сначала запросом (пусть даже по табл. частям) сделать выборку документов где встречаются "не нужные" номера, а потом уже обрабатывать их табл. части? p.s. номера не нужных строк этот же запрос тоже может вернуть и поиск не нужен.
#18 by rs1c
Я сейчас попробовал сделать: 1. Установил конкретный интервал обработки документов (дата начала и дата конца) 2. Сделал выборку доков и все что мне нужно чисто запросом. Как показал эксперемент эта процедура бежит за 2 минут 100 серийников. 3. Получается нужно теперь только удалить ненужные строки в известных и отобранных документах (обработать их табличную часть.)
#19 by spu79
Покажи запрос...все равно как-то долго получается
#20 by rs1c
Я уже нашел баг почему так долго выборка идет, поправил и все секунды пролетает. Сейчас мозгую удаление строк из табличных частей отобранных документов.
#21 by rs1c
Я помозгую, если не получится или будет долго то я выложу код на обсуждение.
#22 by Wobland
читал ?
#23 by Киборг
а почему нельзя найти сразу в таблице Документы.РеализацияТоваров.Товар только нужные ссылки и строки?
#24 by fisher
Зачем? Еще в запросе получить номера нужных строк и удалять их по номерам с конца.
#25 by Fragster
пц! получить запросом номера всех строк, сгруппированных по документу, удалить в документах по индексу с конца...
#26 by Fragster
ну чота я слоупок
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С