Вход | Регистрация
    1  2  3  4  5  6  7  8   
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: 1С 7.7 ТИС ДБФ УРИБ 40 юзеров. Надо победить блокировки транзакций

v7: 1С 7.7 ТИС ДБФ УРИБ 40 юзеров. Надо победить блокировки транзакций
Я
   tgu82
 
28.10.20 - 13:18
1С 7.7 ТИС ДБФ УРИБ 40 юзеров.

В понедельник вообще с утра работать не могли. И так почти полтора часа.
Только когда я стал по очередности выгонять всех ввидимо отцепилась блокировка и
и все наконец заработали.

Заметил что 3 варианта блокировок:
1. при обмене урбд, попытка захвата доступа к 1SUPDTS
2. При попытке создать новый документ - попытка захвата 1SJOURN
3. При поытке создать элемент справочника - попытка заквата SC214 или 1SDNLOCK
3.1 Блокировка 1SDNLOCK возникает и при создании нового документа (видимо из-за нумерации что ли)

Ну с обменами не так часто и понятно потому что обмен я вижу.
С остальным все на так ясно.

Базы не малые, регистр RA328 подходит к 1.7 ГБ
Я так понимаю что многие проблемы из-за проведения документов задним числом ну и перепроведения если надо
Время ожидания захвата БД сброшено в ноль у всех вроде бы, но уточню. Может кого прозевал.
Заметил что в понедельник много потому что делают много приходов и в пятницу тоже.
Причем всем надо с утра.

На ПБ как-то особенно с этим всем проблем и нет а вот на ЦБ бывают, и неприятные
Мне бы хотя бы четко понимать из-за кого в любой конкретный момент времени возникает блокировка (за исключением обмена)
Тогда бы можно было его притормозить а другие бы работали дальше.
В ЦБ банк касса розница енвд перемещения поступления оптовые реализации комплектации и т.д.
Магазины для себя в ЦБ делают большие перемещения с Центрального склада.

Мне бы хотя бы четко понимать из-за кого в любой конкретный момент времени возникает блокировка (за исключением обмена)
Тогда бы можно было его притормозить а другие бы работали дальше !!!
   Злопчинский
 
501 - 04.11.20 - 20:59
НачатьТранзакцию();

Попытка
//всякое

Исключение
  Попытка ОтменитьТранзакцию();
  Исключение
  КонецПопытки;
  Возврат;
КонецПопытки;

ЗавершитьТранзакцию();

я типа так делаю.
проблем не наблюдал вроде.
   Злопчинский
 
502 - 04.11.20 - 21:00
(500) если у тебя разбухтовка - это генерация нескольких подчиненых документов ДокБухт - то без транзакции у тебя получиттся что зафиксирован аи проведена будет только половина например. правильно это допустимо или нет - сммотри сам.
   АгентБезопаснойНацио
 
503 - 04.11.20 - 21:05
(502)
Словарь:
разбухтовка - тайный процесс. см. забухтовка.
забухтовка - см. бухтовать.
бухтовать - см. разбухтовка.

зы. навеяно Сепульками С.Лема
   tgu82
 
504 - 04.11.20 - 21:14
(503) Ну и ладно). Добавлю в копилку - у меня есть процедура "Пришить бухту"
   tgu82
 
505 - 04.11.20 - 21:18
(501)    
Попытка
        
        НачатьТранзакцию();
        
        Если БП_ЕстьЗаявка = 1 Тогда
            ДокЗаявка = СоздатьОбъект("Документ.ЗаявкаПокупателя");
            ДокЗаявка.Новый();    
            ДокЗаявка.АвтоВремяТекущее();
            // идентичные реквизиты шапки

                           ..............
            Если ДокЗаявка.БанковскийСчет.Выбран()= 0 Тогда
                Сообщить("У выбранной фирмы не указан расчетный счет по умолчанию!
                |Оформление быстрой продажи невозможно!");
                ОтменитьТранзакцию();
                Возврат;
            КонецЕсли;
                         .........
            ДокЗаявка.ЗагрузитьТабличнуюЧасть(ТаблицаДокумента);
            
            ДокЗаявка.Записать();
            ДокЗаявка.Провести(1);
            Если ДокЗаявка.Проведен() = 0 Тогда
                ОтменитьТранзакцию();
                Возврат;
            КонецЕсли;
        КонецЕсли;
                .................
            Если ДокПКО.Проведен() = 0 Тогда
                ОтменитьТранзакцию();
                Возврат;
            КонецЕсли;
        КонецЕсли;
        
        // фиксируем все изменения

        ЗафиксироватьТранзакцию();
        
    Исключение
        
        // при возникновении ошибки отменяем все изменения

        // здесь можно выдать сообщение об ошибке

        ОтменитьТранзакцию();
        Сообщить(ОписаниеОшибки(),"!");
        Возврат;
        
    КонецПопытки;
                      
       Это в БыстройПродаже так
Сначала Попытка и только потом НачатьТранзакцию
А у тебя наоборот
   АгентБезопаснойНацио
 
506 - 04.11.20 - 21:22
(505) ээээ. а _до_ начала транзакции Если ДокЗаявка.БанковскийСчет.Выбран()= 0  -проверить низззя? совсем никак-никак-никак?
   tgu82
 
507 - 04.11.20 - 21:25
(506) Можно и еще тысяч 30000 строк одного только глобального модуля тоже )
   АгентБезопаснойНацио
 
508 - 04.11.20 - 21:30
(507) выдыхай, бобёр! ©
я ж тебе выше писал, что в транзакции должно быть минимальное число телодвижений. в идеале - только "записать - провести - откатиться". а создавать объект и заполнять - _до_ и снаружи транзакции.
   Злопчинский
 
509 - 04.11.20 - 21:39
Док.Провести() Возвращает: 1 - если проведение документа выполнено, 0 - иначе.
Док.Проеден()=0 - излишне.
причем если такую проверку делать например для ранее проведенного документ ан аперепроведении - то получишь трабл, так как документ не провелся, но при этом проведен
   Злопчинский
 
510 - 04.11.20 - 21:41
Сообщить("У выбранной фирмы не указан расчетный счет по...
.
стопудово можно не Докзаявка.банковский счет проверять, а еще до транзакции нужнаяФирма.основнойСчет
   tgu82
 
511 - 04.11.20 - 22:42
Значит так. Пересчет на 5-дневные иотги слетел в 2018 году с невосстановимой ошибкой базы данных
   tgu82
 
512 - 04.11.20 - 22:45
(510) Да я согласен со всеми, но это все лопатить заново. Ну может и придется
   tgu82
 
513 - 04.11.20 - 22:47
(511)+  наверное придется сделать тестирование и исправление на копии. что-то мне не нравится такая ошибка невосстановимая
   tgu82
 
514 - 04.11.20 - 22:49
(513)+ Дошло до 26 мая 2018 и срубилось на фиг
   tgu82
 
515 - 04.11.20 - 22:54
Мне бы сделать свертку и дальше тихо переползать на скуль а может и еще куда
   Sserj
 
516 - 05.11.20 - 03:17
(513) Процентов 90 что с 5-ти дневными файлик итогов до критической массы вырос.
   tgu82
 
517 - 05.11.20 - 07:32
(516) Наверняка так и есть.
Сделал ТИИ, ничего криминального. Мелочевка есть типа одного дубля уид в справочнике цен ну и еще немного по мелочам
   tgu82
 
518 - 05.11.20 - 07:34
(517) Значит вариант на 5 дней пока не прокатывает. Буду чистить модули проведения возможно перейду на прямые запросы для заднечисловых проведений
   tgu82
 
519 - 05.11.20 - 07:53
(518)+ Как небольшое резюме - база более-менее в порядке. Транзакции возникают из-за долгого проведения в других сеансах о чем свидетельствует блокировка исключительно 1sjournal. Кто первый начал - найти вряд ли возможно но обработать через попытку с озвратом по исключению как бы опять наверх вполне возможно тогда ошибка транзакции пользователи видеть может ине будут зато ко мне будет приходить информация нетранзакционным способом о том что у конкретного пользователя возникла проблема и он не может довести действие до конца.
   Андрей_Андреич
 
520 - 05.11.20 - 08:28
(all) Гуру - подскажите: для ДБФ по прямым запросам какие отличия?
Уже написали, что виртуальные таблицы не работают. А что взамен?
   АгентБезопаснойНацио
 
521 - 05.11.20 - 08:36
(520) руками (ибо без оптимизации это не сложно). или класс "ПрямойЗапрос", там сделано. Рекомендую последнее.
   АгентБезопаснойНацио
 
522 - 05.11.20 - 08:40
(518) ну попробуй "10 дней". Есть же вроде?
   tgu82
 
523 - 05.11.20 - 09:24
(522) есть, да. Пробую
   Mikeware
 
524 - 05.11.20 - 09:32
(523) сколько у тебя периодов получилось вообще, и влезло в RG?
   Mikeware
 
525 - 05.11.20 - 09:42
+(524) посчитай просто для начала.
ну и прикинь динамику записей в РГ по периодам.
если регистр закрывается, но с опозданием (ну типично - отгружаем сегодня, платят через неделю), то у тебя будет более-менее стабильное количество на период. Если не закрывается - будет расти
   tgu82
 
526 - 05.11.20 - 09:55
(525) Не закрывается регистр книга покупок и продаж но они невелики.
5 лет примерно *12 = 60*3 если по 10 дней - будет примерно 180 периодов
   Mikeware
 
527 - 05.11.20 - 10:08
(526) ту так упало - из-за ндсных книг? удали файлы движений к хренам, делов то
   tgu82
 
528 - 05.11.20 - 10:09
(527) Запусстил с 10 днями, проверю как получится
   tgu82
 
529 - 05.11.20 - 10:11
(527) Я удалил RG все и теперь он иотги по 10-дневкам пересчитывает. А если удалю регистры движений - мне всю базу заново проводить? или вы имеете в виду что потом я их вставлю обратно? Но не будет движений - с чего по 10-дневкам итоги будет формировать?
   tgu82
 
530 - 05.11.20 - 10:17
(527) Ксати после упаковки таблиц - индексный файл регистра движения движения партий уменьшился в два раза почти а вот сам регистр движения партий не уменьшился ни на копейку
 
 Рекламное место пустует
   Mikeware
 
531 - 05.11.20 - 10:18
(529) если у тебя упало и-за незакрытых регистров книги продаж и покупок - то удалить движения по ним.
   tgu82
 
532 - 05.11.20 - 10:22
(531) Смотрю теперь размеры регистров - мониторю
   tgu82
 
533 - 05.11.20 - 10:55
(532)+ Интересно регистр ra328.dbf в 10 раз больше чем ra328.cdx, а
регистр rg328.dbf в 10 раз больше чем rg328.cdx
   tgu82
 
534 - 05.11.20 - 10:56
(533)+ Сорри, в два раза
   tgu82
 
535 - 05.11.20 - 18:44
Сегодня за исключением мелочи ошибок транзакций не было
   Злопчинский
 
536 - 05.11.20 - 19:32
таблицы итогов и движений по книгам покупок и книгам продаж 4+4=8 файлов можно тупо грохнуть. все будет работать без проблем.
   Злопчинский
 
537 - 05.11.20 - 19:33
..если конечно вы книги продаж/покупок не используете.
.
там в последних печформах счф есть что-то СформироватьПоКнигеПродаж типа - может оно там надо.. хз...
у меня и без них все работает.
.
сегодня чуть кондратия не увидел. 77 перестала запускаться. не найден ключ защиты.
   Андрей_Андреич
 
538 - 06.11.20 - 05:34
Народ - поделитесь прямым запросом и 1sdqlite с документацией. Что-то форум на 1cpp.ru в безобразном состоянии
   Sserj
 
539 - 06.11.20 - 06:16
   Андрей_Андреич
 
540 - 06.11.20 - 06:39
(539) Спасибо
   tgu82
 
541 - 06.11.20 - 07:29
При пересчете на 10 дней - слетело,, вскочил за 2 ГБ регистр заявок. Ну с этим-то я разберуусь. Я его точно давно не закрывал. Как-то и не парился
   tgu82
 
542 - 06.11.20 - 07:40
(541)+ Именно по неподтвержденным заявкам в-основном незакрыто.
Теперь закрою. Только этот регистр распух остальные терпимо
   tgu82
 
543 - 06.11.20 - 07:48
(537) Мы наверное с тобой два могиканина - работаем с ключом и может оказаться что не найден ключ защиты )
   ДенисЧ
 
544 - 06.11.20 - 08:14
(543) Ага... А при этом ключи в сейфе лежат ))
   tgu82
 
545 - 06.11.20 - 08:23
(544) А вот и нет - ключ вставлен и работает )
   Mikeware
 
546 - 06.11.20 - 08:37
(541) вот так вот потихоньку заодно проблемы вычистишь, техдолг накопившийся...
   Андрей_Андреич
 
547 - 06.11.20 - 08:41
(546) Может и скуля и прямых запросов не понадобится...
   tgu82
 
548 - 06.11.20 - 08:43
(547) Скуль хоть как нужен - иначе сворачивать и сворачивать из-за регистра партий
   Mikeware
 
549 - 06.11.20 - 08:44
(547) "прямой запрос" и вообще вандаловский класс чем цеен - многие вещи "как в снеговике".
т.е. быстро и удобно как в клюшках, а "рюшечки" как в восьмерке
Привыкаешь нормально использовать нормальные запросы (я проработав с клюшками лет 16 - черные запросы не знаю вообще).
   Mikeware
 
550 - 06.11.20 - 08:46
(548) регистр партий можно и "архивировать"
сделать копию (при желании - и не одну), и перекидывать туда "очередные 2 гига"
   tgu82
 
551 - 06.11.20 - 08:46
(549) На 8.1 мне нравилось, такие замысловатые запросы строил а потом как отрезало: все на фиг позабыл, но хотя консоль есть же, ей когда-то и пользовался для отладки
   tgu82
 
552 - 06.11.20 - 08:48
(550) Конечно я делаю копии. Вы имеете в виду убить регистр движений на фиг но оставить регистр итогов?
   tgu82
 
553 - 06.11.20 - 08:50
(552)+ Злобчинский давал мне для этого прямой запрос
   Mikeware
 
554 - 06.11.20 - 08:50
+(550) у меня подобный прикол использовался:
пересчитанный ночью регистр себестоимости копировался в "копию регистра". и все работы по анализу продаж не зависели от того, лазили сегодня в заднее число, или нет - они работали с "копией".
   Mikeware
 
555 - 06.11.20 - 08:52
(552) я имею ввиду сделать регистры "партии до 2016", "партии до 2018", "партии до 2020", и перекидывать соотв. обороты туда.
   Mikeware
 
556 - 06.11.20 - 08:53
(552) чтобы "убить регистр движений" (на самом деле таблицу, файл) прямой запрос не нужен. достаточно кнопки del
   tgu82
 
557 - 06.11.20 - 08:55
(555) Несколько таких доп.регистров? А обмены как? А маржу как считать будут? Хотя последние же движения года за три останутся )
(556) Мне надо убить не все. А овт эти "Партии до 2016,2017 и т.д.) Вы именно как регистры делали? Или как справочники например?
   tgu82
 
558 - 06.11.20 - 09:09
Лень матушка и такое "легкое" отношение к заявкам. RG 100 МБ а RG 900 МБ. Вот отсюда видимо вся радость и прет
   Mikeware
 
559 - 06.11.20 - 09:12
(557) Что обмены? Обмены как обмены. что в обменах необменного? как настроишь, так и будет.
маржу можно хоть за все время считать,
имхо просто в черные запросы тупо регистры по перечню добавить.
в нормальные запросы чуть больше работы.
я регистры не делил - я делал копию для чисто утилитарной цели: чтоб сегодняшнее ковыряние кем-нибудь в заднице не сносило себестоимость у всех остальных.
я просто предлагаю _вам_ - поделить, если уж и на сиквел не пререходить, и резать лень...
   tgu82
 
560 - 06.11.20 - 09:18
(559) Резать не лень. Но надеюсь для жизнеспокойстия в конце ноября базу сверну как обычно и вот тут уже буду дальше экспериментировать.
А кстати вот сейчас у меня же многие итоги в ргеистре заявок обнулятся. Нет у вас скрипта чтоб их убить - которые нулевые имеенов регистре итогов?
 
 Рекламное место пустует
   Mikeware
 
561 - 06.11.20 - 09:22
(560) с дбфами прямым мне работал.
но вообще говно вопрос - написать прямо на 1с обработку файла. десяток строчек, и похрен, что будет пару часов шуршать...
   tgu82
 
562 - 06.11.20 - 09:25
(561) Просто все поубирал вроде но регистр иотгов по Заявкам не уменьшился ни на грамм. Хотя это наверное правильно. Так и должно быть просто они дальше не полезут
   Mikeware
 
563 - 06.11.20 - 09:29
(562) дык сжать надо
хотя вроде открытие месяца тем и отличается, что нулевые остатки не переносит
   tgu82
 
564 - 06.11.20 - 09:30
(563) Это так. Только я ж сделла в ноябре и теперь до 1 декабря надо ждать
   Ёпрст
 
565 - 06.11.20 - 09:33
(493) Посмотрел. Кучка непонятных самодельных регистров, в которых измерения числовые (занафига ?)
   Ёпрст
 
566 - 06.11.20 - 09:34
+ ни у одного регистра нет хотя бы галки быстрая обработка движения, которая бы в разы ускорила запросы..не надо в журнал бегать за регистратором
   Ёпрст
 
567 - 06.11.20 - 09:36
Ну и кучка самодельных регистров, скорее всего не закрывается с такими наборами измерений.
   tgu82
 
568 - 06.11.20 - 09:38
(566) Числовые измерения - это метраж для разбухтовки.
Он вроде никому не мешает. А больше не помню чтобы числовые измерения были
   tgu82
 
569 - 06.11.20 - 09:41
(567) Как раз не закрывались регистр заявок сейчас закрыл и регистр книга покупок и продаж но они вообще-то маленькие хотя я их просто удалю и заново пустые создадутся. Остальные закрываются. А так спасибо за анализ.
Сегодня как все дни кроме понедельника ошибок транзакций кроме очень мелких - нету. Только получается в понедельник дурдом
   Ёпрст
 
570 - 06.11.20 - 09:44
(520) взамен чего? Виртуальных таблиц ?..ну если 1sqlite пользовать, то cte можно) + уложитьТЗ суперметод.
Если нужна макс скорость, то vfpoledb использовать и писать запрос с учетом попадания в индекс.
   Ёпрст
 
571 - 06.11.20 - 09:47
(568) СерийныеНомера, ИсторияЧеков,ДвижениеБухт
   tgu82
 
572 - 06.11.20 - 09:49
(571) Историч чеков - это по номерам дисконтных карт, давно все не так но когда-то в 2000-х это было так.
Серийные номера вообще неиспользуется уже лет 20 )
Что касается движения бухт - я выше уточнил - метраж - число и ничего тут страшного нет тем более от него отрезы - и опять метраж числовой
   Ёпрст
 
573 - 06.11.20 - 09:50
(511) ну дык в момент слёта, отсортируй по убыванию размеров все файлы, там сразу видно, на каком регистре затык. и где RG много больше RA
   tgu82
 
574 - 06.11.20 - 09:51
(570) попадание в индекс это ужасное )). Это чтобы в условии where были все поля из индексного файла к аблице из 1С.ДД?
   Ёпрст
 
575 - 06.11.20 - 09:51
(572) Ага.. и прям приход с метражом 10 и расход с метражом 9 ? Или как ? :))
   tgu82
 
576 - 06.11.20 - 09:52
(575) Именно так.
товар кабель:
5 бухт по 100 м
3 бухты по 50 м
Поэтому метраж и выбран как измерение
   Ёпрст
 
577 - 06.11.20 - 09:56
(576) я не об этом.
У тя точно приход 50м и расход 50м всегда ?
   Ёпрст
 
578 - 06.11.20 - 09:57
И это, выкладывай уже базу целиком (*.dbf+md+dd) куда нить на файлопомойку на поглядеть
   Ёпрст
 
579 - 06.11.20 - 09:58
а то чую, еще до 2030 года не разберешься
   Mikeware
 
580 - 06.11.20 - 09:58
(577) ну вообще-то да. "хвосты"- то тоже куда-то деваются, хоть на утилизацию
но "числовые измерения" это оригинально, конечно
   tgu82
 
581 - 06.11.20 - 10:02
(577) Конечно нет, у меня же и розница и опт. Тот же кабель-канал приходит по 2м всегда
Все по разному.

Бывает что по 1м покупают и резать приходится скажем от 50
   tgu82
 
582 - 06.11.20 - 10:05
(579) Ну особо судя по всей ветке разбираться и не с чем. Ничего сверхужасного в базе и в алгоритмах нет. Ну а всякие лишние операторы - у кого их нет - начал убирать лишнее из транзакций и вообще явно транзакции кроме как из поступлений (там партии срздаются) вообще убрал уже.
   Ёпрст
 
583 - 06.11.20 - 10:06
(581) :))))))))))))))))))))))))

зачет ага, т.е у тебя всегда приход с одним набором измерений (Метраж твой), а расход с другим ?
   Ёпрст
 
584 - 06.11.20 - 10:06
Или ты не понимаешь, как это работает ?
   tgu82
 
585 - 06.11.20 - 10:07
(584) Это мое произведение искусства от начала до конца еще с 2003 года
   Ёпрст
 
586 - 06.11.20 - 10:07
Кто писал эту разбухтовку ?
там 3 дока за это отвечают, на сколько видно
   tgu82
 
587 - 06.11.20 - 10:08
(586) Я писал и уж это работает как часики много лет. И регистр бухт закрывается.
   Ёпрст
 
588 - 06.11.20 - 10:09
(587) каким образом ? Если ты утверждаешь обратное ?
   tgu82
 
589 - 06.11.20 - 10:10
(586) 4 документа или даже 5 но используются 
Дивжение бухт
Движение бухт по чеку (каждый день ууничтожаются с чеками при закрытии смены)
Разбиение бухт
Кореектировка бухт (можно ей и разбить и сшить)
   tgu82
 
590 - 06.11.20 - 10:12
(587) Да простым вроде.
есть на остатке 10 по 100
есть на остатке 5 по 50

продаю или перемещаю
2 по 100 остается 8 по 100
1 по 35 м (значит 50 в расход например а 15 в приход).
   Андрей_Андреич
 
591 - 06.11.20 - 10:13
То есть когда ты продал 3м из 100метровой бухты ты списал одны стометровую и оприходовал одну 97метровую?
   tgu82
 
592 - 06.11.20 - 10:14
(590)+ Имеется в виду метраж 15 - 1 бухта
метраж 100 - 2 бухты в расход и т.д.

Ресурсом у меня является не метры а количество бухт
А метражи - да измерение

Теперь понятно?
   tgu82
 
593 - 06.11.20 - 10:15
(591) Именно ток. Поэтому в документе разбутовки у меня есть реквизит тч - родительская бухта
   Ёпрст
 
594 - 06.11.20 - 10:16
(590) давай так:

у тя есть измерения ОснТов,Метраж,Склад1 и ресурс ОстБухт

Приход в регистр такой, например:

Валенки, 50,Основной, 10

Какой будет расход ?
   Андрей_Андреич
 
595 - 06.11.20 - 10:18
(594) Это ты принял 10 упаковок по 50 валенок. Пролдав 6 валенок ты спишешь одну упаковку по 50 и поставишь на приход одну упаковку по 44
   tgu82
 
596 - 06.11.20 - 10:19
(595) Валенок нет - метры есть мерный товар же. физически отрез делается
   Ёпрст
 
597 - 06.11.20 - 10:19
(595) ясно,тока нет уверенности, что у (0) оно работает :)
   tgu82
 
598 - 06.11.20 - 10:21
(595)+ Для лампочек - нет такого, это штучный.
(597) РАботает успешно с 2003 года, но конечно что-то дорабаывал, начала розницы вообще не было, ну и вообще до2008 года я просто подрабатывал но все включая первый терминальный сервер в 2005 году - настраивал и запускал я и первые маагазины тоже
   Mikeware
 
599 - 06.11.20 - 10:21
(596) валенки должны быть. ты бухаешь не просто "100-метровую бухту", а "100-метровую бухту ВВГнг3*2.5"
   tgu82
 
600 - 06.11.20 - 10:21
(597) Это только для мерного товара который можно резать
  1  2  3  4  5  6  7  8   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.