|
v7: Вывод сообщений при массовой обработке документов | ☑ | ||
---|---|---|---|---|
0
vadim777
13.12.16
✎
11:42
|
Обработка "Обработка документов", выводит в окно сообщений сообщение о каждом действии над каждым документов. Сильно-ли замедляется процесс обработки документов (конкретно - отмена проведения, пометка на удаление) вывод этой информации?
PS: обработка работает уже третьи сутки, помечаются на удаление документы за последние 5 лет. |
|||
1
nordbox
13.12.16
✎
11:43
|
Из практики: На 7.7 есть замедление, не сильное но есть, но... тогда ты не увидишь что он делает ))
|
|||
2
Жан Пердежон
13.12.16
✎
11:44
|
>>3 сутки
продолжайте наблюдения |
|||
3
nordbox
13.12.16
✎
11:45
|
(0) Сколько лет уже удалил за трое суток? ))
|
|||
4
Ёпрст
13.12.16
✎
11:47
|
(0) замедляет и на много. Но, самый тормоз - ЖР.
Тормозните поделку, отключите ЖР в пофигураторе, отключите вывод в сообщении, максимум, каждые 300 доков, например. Усё. Но лучше, пометить всё и удалить прямым запросом. Займёт минуты 3 на всё. |
|||
5
nordbox
13.12.16
✎
11:47
|
А теперь представь что он еще кроме пометки удалять их будет .....
|
|||
6
Ёпрст
13.12.16
✎
11:48
|
+ ТА сдвинь назад, на самый первый док. Удалять штатно будет в разы быстрее.
|
|||
7
Ёпрст
13.12.16
✎
11:48
|
Это, если мозгов не хватает написать запрос на простейший delete
|
|||
8
vadim777
13.12.16
✎
12:08
|
(4)(7) Угу, не хватает :(
|
|||
9
trdm
13.12.16
✎
12:17
|
(0) Лучше писать в тестовый лог, а сообщения заменить на Состояние("Удаляется документ такой-то").
А Важные сообщения уже выводить на экран. |
|||
10
trdm
13.12.16
✎
12:20
|
(9) Для лога:
//****************************************************************************** // глЗаписатьВЛогФайл(ИмяЛога, ЧтоЗаписать = "Тест") // <<© ТрДм 2005>> // Просто пишет в текстовый файл в каталоге БД строку с текущим временем и датой. Функция глЗаписатьВЛогФайлУпрощенно(псИмяЛога, псСтрокаЗаписи, псДобавитьВремя = 0, псСтрокаЗаголовкаЛога = "") Экспорт ЗначВозврата = 0; Если ПустоеЗначение(псСтрокаЗаписи) = 1 Тогда Возврат 0; КонецЕсли; глКаталогЛогов = КаталогИБ() + "Logs\"; Если ФС.СуществуетФайл(глКаталогЛогов) = 0 Тогда ФС.СоздатьКаталог(глКаталогЛогов); КонецЕсли; вИмяФайлаЛога = глКаталогЛогов + псИмяЛога + ".log"; fso=СоздатьОбъект("Scripting.FileSystemObject"); вБылаОшибка = Нет; Попытка вТекстСтрим=fso.OpenTextFile(вИмяФайлаЛога, 8, 1, 0); //Открываем файл в режиме "дозаписи" Исключение вБылаОшибка = Да; глСообщитьОбОшибке("Ошибка при создании файла "+вИмяФайлаЛога,"!"); КонецПопытки; Если вБылаОшибка = Да Тогда Попытка вТекстСтрим=fso.OpenTextFile(вИмяФайлаЛога, 8, 1, 0); //Открываем файл в режиме "дозаписи" Исключение Возврат 0; КонецПопытки; КонецЕсли; вFileSizeCheck = FSO.GetFile(вИмяФайлаЛога); Если вFileSizeCheck.Size() = 0 Тогда вКоммент2 = псСтрокаЗаголовкаЛога + РазделительСтрок; вТекстСтрим.Write(вКоммент2); КонецЕсли; вСтрокаДатыВремени = "" + глДатаФормат(ТекущаяДата(),"ГГГГ-ММ-ДД_ЧЧ:WW"); Если ТипЗначенияСтр(псСтрокаЗаписи) = "Строка" Тогда вТекстСтрим.Write(вСтрокаДатыВремени + " " + псСтрокаЗаписи+ РазделительСтрок ); ИначеЕсли ТипЗначенияСтр(псСтрокаЗаписи) = "СписокЗначений" Тогда СЦ = 0; Для СЦ = 1 По псСтрокаЗаписи.РазмерСписка() Цикл вТекстСтрим.Write(вСтрокаДатыВремени + " " + псСтрокаЗаписи.ПолучитьЗначение(СЦ)+ РазделительСтрок ); КонецЦикла; КонецЕсли; вТекстСтрим.Close(); Возврат 1; КонецФункции // глЗаписатьВЛогФайл() |
|||
11
trdm
13.12.16
✎
12:22
|
(8) А база хоть на скуле?
|
|||
12
Вафель
13.12.16
✎
12:24
|
(10) а вызов СоздатьОбъект("Scripting.FileSystemObject") каждый раз не медленно ли?
|
|||
13
trdm
13.12.16
✎
12:25
|
(12) Да, можно оптимизировать. Чет не думал об этом, спасибо!
|
|||
14
trdm
13.12.16
✎
12:27
|
Хотя думаю разумнее сделать кешь таких объектов со временем создания и прибивать их если пару минут не используются.
|
|||
15
Ёпрст
13.12.16
✎
12:28
|
(8) ну, если не хватает, тогда тормози и делай следующее
1. Открываешь монопольно общий журнал, встаешь на первый документ, ПКМ-установить ТА на него 2.из обработки поделки ремишь все Сообщить 3.Открываешь пофигуратор, администрирование-ЖР - сымаешь все галки. 4. Можно еще и файло итогов прибить, но лишнее. 5.Запускаешь, радуешься. |
|||
16
trdm
13.12.16
✎
12:30
|
(15) эх когда то возился в 2003 году. мне б твои советы )))
|
|||
17
vadim777
13.12.16
✎
12:34
|
(6) Можно-ли программно изменить ТА в немонопольном режиме.
Дело в том, что какого-то #$% SQL 2008 не дает войти в монопольном режиме. |
|||
18
Вафель
13.12.16
✎
12:35
|
(17) kill
|
|||
19
Ёпрст
13.12.16
✎
12:39
|
(17) можно, прямым запросом
|
|||
20
Ёпрст
13.12.16
✎
12:39
|
но лучше, отстрели все активные соединения к базе.
|
|||
21
Ёпрст
13.12.16
✎
12:40
|
на корне в остнастке скуля, пкм - монитор активности, там прибей все обращения к нужной базе
|
|||
22
vadim777
13.12.16
✎
12:46
|
(21) Это в Data File I/O ?
|
|||
23
vadim777
13.12.16
✎
12:47
|
Кста, только что был сбой питания, думал после этого можно будет войти монопольно - не, не пускает.
|
|||
24
Ёпрст
13.12.16
✎
13:10
|
(23) ну, если не найдешь, то тупо рестартани скуль и прибей все lck в каталоге с базой
|
|||
25
Ёпрст
13.12.16
✎
13:10
|
службу скуля рестартани.
|
|||
26
Ёпрст
13.12.16
✎
13:10
|
хотя проще, все соединения грохнуть
|
|||
27
vadim777
13.12.16
✎
13:33
|
||||
28
vadim777
13.12.16
✎
13:34
|
(25) Вот так лучше:
http://s001.radikal.ru/i193/1612/db/b1060339f50f.jpg |
|||
29
vadim777
13.12.16
✎
13:48
|
После сбоя питания сбойнулф и база.
Как сделать rebuild log-файлу? |
|||
30
Ёпрст
13.12.16
✎
13:51
|
(28) а че ты хочешь от него, если он остановлен ?
|
|||
31
Ёпрст
13.12.16
✎
13:51
|
службу то подыми
|
|||
32
vadim777
13.12.16
✎
13:59
|
(31) Та запустил уже, копию базы также запустил - работает.
А на той, что была в работе во время сбоя - выдает, что нарушен log-файл, и предлагает его или достать из архива, или перестроить. Как его перестроить? |
|||
33
Это_mike
13.12.16
✎
14:00
|
(32) а читать инструкции уже не популярно?
|
|||
34
vadim777
13.12.16
✎
14:04
|
(33) что сейчас усиленно и делаю...
|
|||
35
trdm
13.12.16
✎
14:28
|
(32) Сделай сохранение документов при их записи в xml-файлы.
Потом можно будет их восстановить за потерянное время. |
|||
36
Ёпрст
13.12.16
✎
14:28
|
(32)
DBCC REBUILD_LOG('db_name', 'Полный путь к новому файлу ldf') GO |
|||
37
trdm
13.12.16
✎
14:29
|
+(35) это на случай креша БД.
|
|||
38
vadim777
13.12.16
✎
14:48
|
(35) Мне не нужно восстанавливать документы. Нужно продолжить работать с базой - помечать на удаление старые документы. С базой никто не работает.
|
|||
39
trdm
13.12.16
✎
15:21
|
(38) Забей.
|
|||
40
Это_mike
13.12.16
✎
15:32
|
(39) "коси и забивай"™
|
|||
41
linoblack
13.12.16
✎
16:55
|
(15) там перенос ТА может затянуться )))
|
|||
42
Ёпрст
13.12.16
✎
16:56
|
(41) назад ? Нет, сделается мгновенно
|
|||
43
Ёпрст
13.12.16
✎
16:57
|
А так то у него скуль, и вообще непонятны все эти потуги со штатным удалением, когда всё через qa удаляется за секунды.
|
|||
44
vadim777
13.12.16
✎
18:26
|
(43) Как? Попробовал УдалениеДокументовСредствамиSQL.ert, Generatsiya_SQL-skripta_dlya_udaleniya_dokumentov_pri_svertke_bazy.ert -
что-то лишнее задело, остатки полетели. Почитал на форуме, кто как удаляет доки в SQL базе, некоторые были за использование штатных средств 1С. |
|||
45
Злопчинский
13.12.16
✎
18:27
|
И Сообщить и Состояние - очень сильно замедляют процесс.
|
|||
46
Ёпрст
13.12.16
✎
18:31
|
(44) че как ? Примитивный запрос который удалит записи в _1sjourn (если надо насовсем) или апдейт _1sjourn по полю closed + флаги с регистров (если надо оставить помеченным на удаление)
+ в табличках движений регистров delete записей по условию , ну и в проводках и операциях. + если насовсем, то еще и в _1scrdoc , в _1sconst. + пересчёт итогов прямым запросом. Усё |
|||
47
vadim777
13.12.16
✎
18:39
|
(36) Это для SQL 2000
|
|||
48
uno-group
13.12.16
✎
19:00
|
(46) НУ дык на десяток одинесников которые это смогут сделать, наберется сотня которые вообще не смогут и два десятка которые при этом, что то напортачат.
|
|||
49
Ёпрст
13.12.16
✎
19:34
|
(47) ну тогда DBCC CHECKDB.
+ смотри там параметры в справке |
|||
50
vadim777
13.12.16
✎
19:52
|
(49) Да уже понял. Только сделал detach базы, теперь attach не получается - log-файл нарушен.
|
|||
51
vadim777
13.12.16
✎
19:59
|
(50) По совету товарища Галиева с http://blog.galievr.ru/?p=382:
Для всех версий SQL Server подойдет следующий вариант: делаем Detach database(отсоединить базу данных), удаляем журнал транзакций(файл с расширением ldf) и делаем Attach database(присоединить базу данных). В мастере выбираем наш mdf файл и жмем ОК. Никакого мастера не появилось, attach сделать не могу. Таким советчикам .... |
|||
52
Ёпрст
13.12.16
✎
20:05
|
(51) ну а сам лог то удалил ?
|
|||
53
Ёпрст
13.12.16
✎
20:06
|
перед атачем ?
|
|||
54
vadim777
13.12.16
✎
20:13
|
(52) Нет, переименовывал. Потом возвращал взад,пытался снова attach, выводилось сообщение, что требуется rebuild log. Замкнутый круг.
|
|||
55
Ёпрст
13.12.16
✎
20:36
|
(54) вообще оставь только мдф и делай атач
|
|||
56
Ёпрст
13.12.16
✎
20:37
|
после атача - чекдб, можешь с параметром репеарлос
|
|||
57
Ёпрст
13.12.16
✎
20:42
|
и вот так, аттачится у тебя ?
alter database mydatabase set EMERGENCY |
|||
58
Ёпрст
13.12.16
✎
20:46
|
Ну и вот еще, пробуй..
https://web.archive.org/web/20120827060529/http://dev.by/blog/7414 про архивы тока не забывай лепить |
|||
59
vadim777
14.12.16
✎
03:50
|
(57) Конечно нет, ошибка:
Msg 5011, Level 14, State 5, Line 1 User does not have permission to alter database 'DB_20161207', the database does not exist, or the database is not in a state that allows access checks. Msg 5069, Level 16, State 1, Line 1 ALTER DATABASE statement failed. |
|||
60
vadim777
14.12.16
✎
06:44
|
(58) Кажись сработало.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |