Имя: Пароль:
1C
1С v8
Как быстро пометить на удаление порядка 250000 документов УТ 11?
0 tomsv
 
01.03.16
23:12
Собственно в этом и весь вопрос, естесственно ctrl-a пробовал, система походу сутки только выделением объектов будет заниматься. Есть ли какие-то обработки, которые сделают это быстро по отбору за период? Сам я админ, сильно не пинайте, но не понимаю, почему такие тормоза в управляемых формах? Вариант клиент-серверный, сервак курит....
1 Tateossian
 
01.03.16
23:34
Открой конфигуратор. Нажми Файл -> Новый -> Внешняя обработка
Ткни в кнопку лупы поле "Форма обработки". Если у тебя управляемые формы, тогда выбери тип формы "Управляемая". Найди событие "ПриСозданииНаСервере" в менюшке. Жми на лупу. Сгенерится шаблон функции, туда поставь вот это:

//&НаСервере
//Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ВыборкаДокументов = Документы.ИмяДокументаВКофигураторе.Выбрать(Дата("01.01.2016 00:00:00"), Дата("01.04.2015 00:00:00"), , "Дата");
    Пока ВыборкаДокументов.Следующий() Цикл
        ВыборкаДокументов.Ссылка.ПолучитьОбъект().УстановитьПометкуУдаления();
    КонецЦикла;

//КонецПроцедуры
2 Vladal
 
01.03.16
23:36
Не зная всей картины, можно такого насоветовать...
Если база клиент-серверная, то самый быстрый, но неверный способ, сделать update таблицы с документами средствами движка БД.

Если "не программируя", то возьми обработку "Универсальный подбор и обработка объектов". В ней можно отобрать документы по нескольким фильтрам и потом проставить пометку удаления, просто кликая мышкой. Но она работает по принципу 1 объект, 1 транзакция.

Ну и самому наваять обработку по поселке на удаление. Не забывай фиксировать транзакции, потому что если все делать в одной транзакции, то на таких объёмах будут дикие тормоза.
3 Tateossian
 
01.03.16
23:36
(1) Разумеется, дату поставь какую надо. И ИмяДокументаВКофигураторе на нужный тип документа. После этого открой обработку в режиме предприятия и наслаждайся. Ах да - сделай бекап))
4 Diman000
 
01.03.16
23:37
Следующий вопрос будет как быстро удалить 250 тыс помеченных объектов...
5 Tateossian
 
01.03.16
23:37
(2) В этой обработке можно поставить флаг "Выполнять в одной транзакции".
6 Vladal
 
01.03.16
23:38
(3) Я добавлю - сначала все эксперименты делай на копии базы.
Только потом на боевой, когда убедишься в правильности результата.
7 Vladal
 
01.03.16
23:39
(5) может в новых релизах и добавилась, а может я и не видел его. Больше пользуюсь "произвольным алгоритмом" для быстрой обработки и не писать каждый раз лисапет.
8 Tateossian
 
01.03.16
23:42
(7) Мне для таких нужд больше нравятся инструменты разработчика, там есть волшебная кнопка "Консоль кода".
9 Vladal
 
01.03.16
23:48
(8) есть и такая консоль с выполнением кода. Но это для более тонкой работы.
10 Tateossian
 
01.03.16
23:49
(9) Мне кажется, если в одной транзакции помечать на удаление 250000 документов - можно положить сервак.
11 tomsv
 
02.03.16
00:08
(1) спасибо, завтречка на копии базы поппробую прогнать это дело. А первая дата больше, чем вторая, так и должно быть? Сначала конец периода указывать?
12 Garykom
 
гуру
02.03.16
00:23
по уму универсальная обработка для быстрого удаления объектов (пометки на удаление) с регулировкой кол-ва элементов в транзакции уже должна быть на Инфостарте

поискать там, если нету то скажи наваяет кто нить, да хотя бы я и скачаешь с ИСа
13 Garykom
 
гуру
02.03.16
00:25
(12)+ недоделка какая то http://catalog.mista.ru/public/396017/ нет возможности вид документа выбирать

а вот оно http://catalog.mista.ru/public/175028/ но не бесплатно
14 tomsv
 
02.03.16
00:28
(12) Наваяй, плиз, а то тут столько делов предстоит с большими базами.... Вот только абонемента на ИСе у меня нет....
15 tomsv
 
02.03.16
00:31
(13) и на этом спасибо)) \m/
16 Garykom
 
гуру
02.03.16
00:38
(14) там биржа есть... сча 10.71 рубля за 1SM
17 alle68
 
02.03.16
01:49
(11) Даты, конечно, наоборот.
Желательно отключить итоги тех регистров, которые двигают эти документы.
18 Мэс33
 
02.03.16
06:55
(1) 250 тыс - долго же будет.
Допустим 2-3 документа в секунду (что маловероятно) - пусть 3.
250 000 / 3 / 60 / 60 = 23 часа.
19 ИС-2
 
naïve
02.03.16
09:23
(1) еще можно чуть модифицировать
  ВыборкаДокументов = Документы.ИмяДокументаВКофигураторе.Выбрать(Дата("01.01.2016 00:00:00"), Дата("01.04.2015 00:00:00"), , "Дата");
    Пока ВыборкаДокументов.Следующий() Цикл
        Об = ВыборкаДокументов.Ссылка.ПолучитьОбъект();
Об.ОбменДанными.Загрузка = истина;
Об.УстановитьПометкуУдаления();
    КонецЦикла;

чтобы минимум проверок выполнялось.

хм, а в этом варианте движения очистятся?

А еще можно запустить УТ11 в обычном приложение, найти в инете ГрупповаяОбработкаСправочниковИДокументов.epf и пометить через нее
20 Serginio1
 
02.03.16
09:32
21 rs_trade
 
02.03.16
09:41
(0) Про ctr-a повеселил. Напиши обработину где запусти 2-3 фоновых задания поделив доки между ними. За ночь должно пометиться.

Потом удаляй так-же фоновыми параллельно.
22 Tateossian
 
02.03.16
09:44
(21) Ключевой момент "Сам я админ, сильно не пинайте,"
23 Лефмихалыч
 
02.03.16
09:46
групповая обработка документов - типовая обработка такая
24 Лефмихалыч
 
02.03.16
09:46
или "Универсальный подбор и обработка объектов" с ИТС
25 Лефмихалыч
 
02.03.16
09:46
или самопиль какую напилить в три строки
26 rs_trade
 
02.03.16
09:55
В инструментах разработчика хорошие обработины. Там вроде как раз в фоновых заданиях все происходит.
27 Ranger_83
 
02.03.16
09:59
(0) Может тебе их просто спрятать?
28 Юрий Лазаренко
 
02.03.16
10:22
(0) ОбменДанными.Загрузка = истина
Плюс помечать порциями в транзакции, например, по 1000 штук за один раз.
29 tomsv
 
02.03.16
10:57
(27) Про "спрятать" можно поподробнее и в красках? Мож ссыль есть, где подробно почитать?
30 Широкий
 
02.03.16
12:04
31 Necessitudo
 
02.03.16
12:18
Так UPDATE в сиквеле. Только больной будет пользовать для этого средства 1С.
32 Сильф
 
02.03.16
12:21
(1) (19) > Дата("01.01.2016 00:00:00")

Я извиняюсь, а '20160101' уже отменили?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.