Вход | Регистрация
    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 ГБ
Я так понимаю что многие проблемы из-за проведения документов задним числом ну и перепроведения если надо
Время ожидания захвата БД сброшено в ноль у всех вроде бы, но уточню. Может кого прозевал.
Заметил что в понедельник много потому что делают много приходов и в пятницу тоже.
Причем всем надо с утра.

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

Мне бы хотя бы четко понимать из-за кого в любой конкретный момент времени возникает блокировка (за исключением обмена)
Тогда бы можно было его притормозить а другие бы работали дальше !!!
   Mikeware
 
101 - 29.10.20 - 09:51
(96) 11*7 - это фигня. вот когда час в месяц допустимый простой...
(98) торговля торговле рознь. мы держали 3 года, и автообрезка ежемесячная.
   Андрей_Андреич
 
102 - 29.10.20 - 09:53
(99) Понавтыкай во все свои отчеты/обработки замеры времени выполнения и закинь в журнал регистрации. Через месяц-другой лучше будешь знать узкие места
   tgu82
 
103 - 29.10.20 - 09:53
Насчет тех же документов бухт - да, это выход. Хотя переделывать немало придется. Там обработка разбухтовки порядки 3000 строк кажись (давно писал - пашет)
   tgu82
 
104 - 29.10.20 - 09:55
(100) Ну пока что я свертку сделаю ЦБ и ПБ пересоздам. За ночь и день успею и останется в базе тогда 17,18,19,20 годы, 16 уйдет.
Я каждый год эту свертку делаю. Мне много работы плучаеется а базе хоть бы хны
   tgu82
 
105 - 29.10.20 - 09:58
(102) Да я их в-принципе конечно знаю. Правда это не касается отчетов и обработок а касается именно транзакций. Отчеты и обработки работают себе тихо-мирно и не так уж часто.
   tgu82
 
106 - 29.10.20 - 09:59
жр(102) И время работы отчетов да, вывожу. Ну теперь выведу в ЖР
   tgu82
 
107 - 29.10.20 - 10:01
Начну с того что по максимум всякие массовые обработки выведу в робота. Пусть работает железная пила )
   tgu82
 
108 - 29.10.20 - 10:03
(100) Переход на скуль связан с приобретением скуль-сервера. Вроде сначала загорелись а потмо все в рамках слабенького тестового. Но тоже копаюсь потихоньку. Ну блин заново мозги настраивать приходится. А они заскорузли малость.
   Злопчинский
 
109 - 29.10.20 - 10:14
(75) вот они и херачат эти перемещения перепроводя их по 20 раз задним числом. Приходы вообще нагрузки не создают.
   Злопчинский
 
110 - 29.10.20 - 10:17
(100) только пусть 3 конверта оставит
   tgu82
 
111 - 29.10.20 - 10:20
бухгалтер начала загружать клиент-банк массово в 7.45. Загрузилось без проблем и шустро. А вот потом в каждую заходит и меняет там движения денежных средств и проводит и вот тут засады с 1SJORN
   ДенисЧ
 
112 - 29.10.20 - 10:25
(111) А сразу статьи поставить? Аллах не велит?
   tgu82
 
113 - 29.10.20 - 10:26
(111)+ Чтобы загружать клиент-банк скажеи рано утром нужен же сам файл kl_to_1c.txt. Поэтому ту автомат не прокатывает
   Андрей_Андреич
 
114 - 29.10.20 - 10:26
(111) "В каждую" - это каждая строчка выписки отдельный документ?
   tgu82
 
115 - 29.10.20 - 10:28
(114) Нет, она в обработку выписки их вводит.
(112) ну кроме налогов - остальное можно и сразу делать. Брать из платежек. Согласен. Сам на эту тему думал недавно. Не так уж сложно реализовать.
   tgu82
 
116 - 29.10.20 - 10:30
(115)+ Это ускорит процесс наверняка. Записывать не придется только проводить. Там же еще чтоб выписки прихода были раньше, чтобы выписки расход потом провелись
   tgu82
 
117 - 29.10.20 - 10:32
с 8.48 ни одной ошибки транзакций не было. И уже сегодня вряд ли будут
   tgu82
 
118 - 29.10.20 - 10:40
В строках ввыписки приход движения дс сразу ставятся автоматом в расход нет, но на расход бухгалтер трати 5-7 минут, просто если она это делает до 9, то попадет на массовый ввод документов за вчерашний день еще. Ну установлю ей дс (кроме налогов) в выписках расход. Это мелочи
   Андрей_Андреич
 
119 - 29.10.20 - 10:42
(115) Бухгалтер после изменения каждой строчки документ записывает/проводит что ли? Плохо понимаю, как проведение одного документа может колом все встать.
   tgu82
 
120 - 29.10.20 - 10:45
(119) Да нет же
ОткрытьФорму("Документ.СтрокаВыписки" + ВидДвижения, Парам); : {Обработка.ВыпискаБанка.Форма.Модуль(253)}: Таблица: 1SJOURN Ошибка обращения к данным при транзакции, выполняемой другим пользователем.

Вот странная проблема.
Ну открыл из обработки выписка строку выписки приход или расход.
При чем тут 1SJOURN ???
   Sserj
 
121 - 29.10.20 - 10:46
(119) Да там походу обработка это ТЗ на форме которая при каждом чихе все документы что в ТЗ попали перепроводит :)
   Sserj
 
122 - 29.10.20 - 10:46
(120) Так покажи что там в этой строке 253.
   tgu82
 
123 - 29.10.20 - 10:47
(121) Вообще-то она стандартная. И ничего плохого не делает окромя хорошего )
   tgu82
 
124 - 29.10.20 - 10:47
ткрытьФорму("Документ.СтрокаВыписки" + ВидДвижения, Парам). Так вот же она 253
   Mikeware
 
125 - 29.10.20 - 10:48
(123) стандартные - они такие стандартные...
   tgu82
 
126 - 29.10.20 - 10:49
(125) Это да, ну ладно для строк расхода подсуну я ДС, в строках приход сразу стоит поступления от покупателей
   Sserj
 
127 - 29.10.20 - 10:52
(120) Ну дэк в 1SJOURN хранятся как минимум дата,время и номер документа. Больше их по сути взять неоткуда, поэтому при открытии и пытается читать. Но раз прочитать не может то значит в этот момент уже кто-то залочил 1SJOURN проведением.
   tgu82
 
128 - 29.10.20 - 10:53
(127) Ну да, отсюда и ошибки
   Sserj
 
129 - 29.10.20 - 10:53
(126) Надо не подсовывать а перенести то что там делается в обработку, чтобы не было открытия формы.
   tgu82
 
130 - 29.10.20 - 10:57
(129) Ага
 
 Рекламное место пустует
   Sserj
 
131 - 29.10.20 - 11:00
(126) Подожди :)
Я тут протормозил: ОткрытьФорму("Документ.СтрокаВыписки" + ВидДвижения, Парам)
Это же не открытие существующего, это создание нового документа. Так обработка у тебя не создает документы получается а только загружает данные в ТЗ и потом из него они уже создаются в ручную?
   Mikeware
 
132 - 29.10.20 - 11:03
(131) она пихает данные в ТЗ. а потом бежит по строкам ТЗ, отмеченых флажком, и для каждого отмеченного создает док открытием формы
   Sserj
 
133 - 29.10.20 - 11:10
Ну тады все просто. Для создания исключить открытие формы, создавать самому в обработке, потому как при открытии для каждого ссылочного реквизита на форме будет обращение к БД за его представлением. И после каждой итерации вставлять паузу чтобы дать возможность шевелиться.
Ну и конечно никаких НачатьТранзакцию, если нужна констистентность то вести список созданных документов, все действия с базой через Попытка/Исключение и в случае ошибки открытвать удалением всего что уже насоздавалось.
   tgu82
 
134 - 29.10.20 - 11:12
(133) Это первое чем озаботился на данный момент. Надо же хотя бы исключить то что можно исключить
   Вафель
 
135 - 29.10.20 - 11:25
разве в 77 можно победить блокировки? там же журнал на каждый чих блокируется монопольно
   Mikeware
 
136 - 29.10.20 - 11:27
(135) было бы желание...
вообще там не только журнал - там три узких места.
но вообще, клюшки пыхтели на 8000 документов (предновогодний декабрь)- упупырище легло и не встало на 2000 (самое начало января, новогодние каникулы)
   tgu82
 
137 - 29.10.20 - 11:29
(136)  А еще какие? Я ж вроде перечислял на каких таблицах блокировки возникают
   tgu82
 
138 - 29.10.20 - 11:29
(136) 8000 в день?
   Mikeware
 
139 - 29.10.20 - 11:33
(138) ну да. ну, чуть больше.
   tgu82
 
140 - 29.10.20 - 11:52
(139) Вот эти попытка исключение тоже не всегда понятно как их использовать особенно вместе с НачатьТранзакцию. Мне кажется я вот особенно при автосоздании и автопроведении доков при записи других доков - что-то вымудриваю с этим делом.
                            НачатьТранзакцию();    
                            ТЗПер.Выгрузить(ТЗПерФирм);
                            ТЗКол=СоздатьОбъект("ТаблицаЗначений");
                            ТЗПер.Выгрузить(ТЗКол);
                            ТЗКол.Свернуть("Номенклатура","Количество");  
                            ВыбратьСтроки();
                            Пока ПолучитьСтроку()=1 Цикл
                                Если СпВитр.Принадлежит(Номенклатура)=1 Тогда
                                    НомКол=0;                                       
                                    Если ТЗКол.НайтиЗначение(Номенклатура,НомКол,"Номенклатура")=1 Тогда
                                        Прим=""+"Витрина("+СокрЛП(Строка(ТЗКол.ПолучитьЗначение(НомКол,"Количество")))+")";    
                                    КонецЕсли;    
                                КонецЕсли;    
                            КонецЦикла;    
                            ТЗПерФирм.Свернуть("Фирма","");    
                            ТЗПер.Сортировать("Фирма");
                            ТЗПерФирм.ВыбратьСтроки();  
                            //СпВитр.ВыбратьЗначение(,"");

                            Пока ТЗПерФирм.ПолучитьСтроку()=1 Цикл                                                               
                                НомСтр=0;                                       
                                ТЗДок.УдалитьСтроки();
                                Если ТЗПер.НайтиЗначение(ТЗПерФирм.Фирма,НомСтр,"Фирма")=0 Тогда Продолжить;КонецЕсли;       
                                Пока 1=1 Цикл
                                    ТЗПер.ПолучитьСтрокуПоНомеру(НомСтр);    
                                    Если ТЗПер.Фирма<>ТЗПерФирм.Фирма Тогда Прервать;КонецЕсли;
                                    Если СпВитр.Принадлежит(ТЗПер.Номенклатура)=1 Тогда        
                                        ТЗДок.НоваяСтрока();
                                        ТЗДок.Номенклатура=ТЗПер.Номенклатура;
                                        ТЗДок.Количество=ТЗПер.Количество;
                                        ТЗДок.Единица=ТЗПер.Единица;
                                        ТЗДок.Коэффициент=ТЗПер.Коэффициент;              
                                    КонецЕсли;     
                                    Если НомСтр+1<=ТЗПер.КоличествоСтрок() Тогда
                                        НомСтр=НомСтр+1;
                                    Иначе
                                        Прервать;
                                    КонецЕсли;     
                                КонецЦикла;                   
                                Если ТЗДок.КоличествоСтрок()>0 Тогда
                                    ДокПерем.Новый();                      
                                    ДокПерем.Фирма=ТЗПерФирм.Фирма;
                                    ДокПерем.ФирмаПолучатель=ТЗПерФирм.Фирма;            
                                    //ДокПерем.УстановитьНовыйНомер(СокрЛП(ГлобПрефиксИБ) + СокрЛП(ДокПерем.Фирма.ЮрЛицо.ПрефиксНомеровДокументов));            

                                    ДокПерем.ДатаДок=ДатаДок;                          
                                    ДокПерем.Склад=Склад.ВитринаСклада;
                                    ДокПерем.СкладПолучатель=Склад;
                                    ДокПерем.Валюта=Константа.ВалютаУпрУчета;
                                    ДокПерем.Курс=1;
                                    Если СПП.НайтиПоРеквизиту("Сотрудник",Консультант,1)=1 Тогда
                                        ДокПерем.Автор=СПП.ТекущийЭлемент();
                                    Иначе                             
                                        Сообщить(""+"Не найден пользователь для консультанта "+ВРЕГ(""+Консультант));
                                        ДокПерем.Автор=глПользователь;
                                    КонецЕсли;  
                                    ДокПерем.ЗагрузитьТабличнуюЧасть(ТЗДок);      
                                    ДокПерем.АвтоВремяТекущее();
                                    ДокПерем.Записать();
                                    ДокПерем.Провести();
                                    Если ФС.СуществуетФайл(КаталогПользователя()+"ЧекиПеремещения")=0 Тогда
                                        ФС.СоздатьКаталог(КаталогПользователя()+"ЧекиПеремещения");
                                    КонецЕсли;                                                       
                                    ТекстЧекиПеремещения.ДобавитьСтроку(ДокПерем.НомерДок);     
                                КонецЕсли;     
                            КонецЦикла;                                                   
                            Если ТекстЧекиПеремещения.КоличествоСтрок()>0 Тогда
                                ТекстЧекиПеремещения.Записать(КаталогПользователя()+"ЧекиПеремещения\"+СокрЛП(НомерДок));    
                            КонецЕсли;    
                            //Сообщить("Перемещения с витрины на склад успешно сформированы!!!");

                            ЗафиксироватьТранзакцию();
   Mikeware
 
141 - 29.10.20 - 12:06
(140) пля. ну что тебе мешает все свернуть, отсортировать,СПП.НайтиПоРеквизиту("Сотрудник",Консультант,1), СоздатьКаталог(КаталогПользователя()+"ЧекиПеремещения"); и сделать прочую куйню _до_ начала транзакции? у тебя толпа документов стоит, кулаками в дверь стучится - а тут ты такой в шляпе, "щазз я кофэю попью, пользователя найду, тз сверну - а вы ждите, сцуки". Капитан гнездилов, мля
   tgu82
 
142 - 29.10.20 - 12:18
(141) ДА нет же главное это создание перемещений автоматом - вот для них и делал начало транзакции ну и не так часть автоперемещения создаются все-таки на продажном складе остаткков хватает. Знать бы все это раньше когда ваял
   Ёпрст
 
143 - 29.10.20 - 12:35
(140) ну как бэ.. выкинуть транзакцию к еб..ям, для начала
   Sserj
 
144 - 29.10.20 - 12:39
(135) В SQL можно. У нас уже почти юбилей :)
V7 SQL и гибкие блокировки.
Месяц назад запустили управляемые блокировки, после пары недель перелили в общую базу дочернюю организацию.
Итого сейчас в базе около 300 пользователей в режиме 29/7 (пользователи в 5 часовых поясах) :)
Сейчас идем дальше, начали тестировать свою запись регистров. Т.е. одним пакетом записываем все движения документа и обновляем итоги, получается симпотишно. Разница времени проведении оперативного документа и документа 10-ти летней давности в базе 180ГБ не больше 30%.
   Mikeware
 
145 - 29.10.20 - 12:40
(142) это как-то влияет на то, что в транзакции должны быть только необходимые для сохраненния консистентности действия?
   Mikeware
 
146 - 29.10.20 - 12:55
(144) круто!
а зачем вам 10-летняя задница? она реально нужна?  180Г/10 лет - объемы маленькие? (я имею ввиду "построчные" объемы)
"одним пакетом записываем все движения" - я так делал в первой "нагруженной" системе для в 1993, еще на клиппере.  потом как-то это все "рассосалось", в 1с в модулях клюшек, да и в ОФных клюшках - пишут как придется. а в УФной КА - глянул, тоже формируют все движения заранее и пишут пакетом. Вот она, диалектика, данная нам в ощущениях экзаменов по МЛФ, в действии....
   tgu82
 
147 - 29.10.20 - 13:01
(143) Ну выкину. Погляжу как жить станет
   Sserj
 
148 - 29.10.20 - 13:26
(146) Если честно то наверно и не нужна эта история, но есть-пить не просит, в работе особо не мешает. Вобщем базу никогда не обрезали, первый документ в ней от 2004 года. Я игрался с обрезанием но особого эффекта это не дает. Все что нужно все равно по своему проиндексировано. Вообще база до 2013 года была dbf-ная и тогда в целях оптимизации делались очень замудренные вещи :). Все длинные строки вытащены в отдельную sqlite-овую базу, т.е. сейчас в рабочей нет ни одного поля неограниченной длинны. Все важнейшие справочники разбиты на сам справочник (id,descr + крайне важные реквизиты но обязательно не больше 5 штук) и прочие реквизиты в отдельно справочнике иногда даже в нескольких.
Но и сама организация активно расти начала где-то с 2013-го года. Т.е. при переходе в SQL чистая база весила не больше 30ГБ, 150ГБ наросло за последние 7 лет.
А по поводу "УФной КА - глянул, тоже формируют все движения заранее и пишут пакетом" - так там только движения пишутся пакетом, а обновления итогов все равно построчно.
Я сейчас эксперементирую с MERGE. Тобишь на основе движений документов формируется кросс таблица по всем будущим периодам от момента документа и она мержится с итогами. Вычитается/Прибавляется к существующим, добавляются недостающие и удаляются то что по итогам становится нулевым. Пока вроде все хорошо получается, но как всегда пока страшновато это в прод пускать :)
   Mikeware
 
149 - 29.10.20 - 13:52
(148) ну да, обрезание на сиквеле особого эффекта не дает - все равно активные страницы в кэше.  Я обрезал, чтоб базу на SSD вместить, тогда они были маленькими и дорогими, а в производительность уже упирались. В принципе, сейчас я бы еще многое поправил, и поднял производительность минимум вдвое. Но задний ум - это штука такая... всегда "после".
с мерджем - очень интересно. Расскажи потом при случае, хотя бы в той своей ветке.
   ДенисЧ
 
150 - 29.10.20 - 14:34
Помнится, я игрался как-то с мержем для ускорения длинных запросов...
Так оно мне индекс скан в табле скан переделывало.... Я посмотрел и плюнул...
   tgu82
 
151 - 29.10.20 - 14:44
(150) Длинный запрос это что? Почему длинный?
   Mikeware
 
152 - 29.10.20 - 14:49
(151) потому, что не черный
   ДенисЧ
 
153 - 29.10.20 - 14:51
(151) Ну - во-первых, это была не 1с )))
Во-вторых - 10 экранов текста
В-третьих - выполнялся полторы минуты. А допустимо было не больше 15 секунд...
   tgu82
 
154 - 29.10.20 - 17:49
Конт.УстановитьНовыйНомер(СокрЛП(ГлобПрефиксИБ) + ПрефиксЮрЛицаФирмы); : {Глобальный модуль(5411)}: Таблица: 1SJOURN Ошибка обращения к данным при транзакции, выполняемой другим пользователем 

Вот тоже быывает при установке нового номера, при поступлении заказе поставщика наверное мне номер документа по фигу - в смысле его префикс хотя удобнее когда из-за многофирменного учета и префиксы документов разные
   tgu82
 
155 - 29.10.20 - 17:55
А кстати. Период опроса изменений БД - 10 сек.
Или этот параметр вообще без разницы какой?
   hogik
 
156 - 29.10.20 - 18:50
(0)(9)(15)
«И советуют время ожидания захвата таблицы БД в ноль установить.»(с)
И тогда ставить не Kernel37, а Kernel33.
   tgu82
 
157 - 29.10.20 - 21:57
(156) Почему?
   tgu82
 
158 - 29.10.20 - 21:59
(256) Кернел это же для файлов больше 1 ГБ - или я уже все подзабыл?
   Ёпрст
 
159 - 29.10.20 - 22:36
(256) один для выполнения запросов vfpoledb в монопольном режиме, второй для решения проблемы >1гига
   hogik
 
160 - 30.10.20 - 01:52
(158)
Да. Но...
Вот текст из файла Kernel3x.doc:
«В комплекте имеется файл Kernel37.dll. Эта библиотека решает (кроме проблемы 1 гигабайта) еще и проблему “100% загрузка процессора при ожидании блокировки”»(с).
И алгоритм пауз блокировок Kernel37 не отключится если «в ноль установить»(с).
 
 Рекламное место пустует
   hogik
 
161 - 30.10.20 - 01:52
(159)
Нет. «уже все подзабыл»(с). :-)
   tgu82
 
162 - 30.10.20 - 19:15
Вообще несколько причин блокировок вижу конкретно:
1. ГлВводСчетаФактуры - там где ОткрытьФорму("Документ."+ВидСФ,ФормаНакладной,Конт.ТекущийДокумент());
2. ДокБухт.Новый - при программном создании нового документа из формы родительского так сказать
3. В процедуре ПробитьЧекНаККМ. Уже чек пробит и надо дозаписать то что пришло от ККМ - ФПД и т.д.

То есть практически из-за этих трех вариантов основные ошибки по транзакциям.
Могу ли я программно скажем если не получается ввести счет фактуру по кнопке отловить это чере
Попытка Исключение КонецПопытки как-то и автоматом заново попробовать через 10 сек к примеру?

Или если ДокБухт.Новый() - то же самое, то есть Время ожидания захвата БД в ноль стоит, но сам обрабатываю ошибку блокировки
или не могу так отлавливать и всегда вылетает ошибка?
   tgu82
 
163 - 30.10.20 - 19:23
(162)+ Можно конечно создавать ДокБухт заранее штук 100 с утра и затем распихивать их под родитлеьские документы, но сильно алгоритм курочить придется в этом случае хотя может не очень сильно.
Но а другие два. Может позже записывать эти реквизиты чека, пробили куда-то в память записали а потом пытаемся записать
в процессе работы может по обрабтке ожидания глобальной или еще как-то?
Но вот с вводом счет-фактуры кнопкой из накладной - также насоздавать пустышек счетов-фактур

Может можно похитрее как-то просто реально менеджер начинает на эту кнопку до упора нажимать пока не попадет в паузу между другими документами ?
   Mikeware
 
165 - 31.10.20 - 12:00
(163)
Вместо Док.Новый  - Док.Найти - это "сильно курочить"?

глВводСчетаФактуры - ну возьми код прямо из заполнения, и все. Делов ровно на 5 минут.

Если дописываемые в чек реквизиты ни на что не влияют (не фигурируют в регистрах при проведении и т.п.) - можно писать их напрямую в документ.
   Ёпрст
 
166 - 31.10.20 - 12:39
(165) достаточно просто Записать() без проведения.. и усё.
   Mikeware
 
167 - 31.10.20 - 12:50
(166) вроде надо ПриЗаписиПерепроводить(0)?
ну и все равно запись блокирует
   Злопчинский
 
168 - 31.10.20 - 13:58
(162) если у тебя розница - при чем здесь СЧФ?
   tgu82
 
169 - 31.10.20 - 14:47
(168) Да ещ и опт имется в большом количестве.
Вот видишь получается что в лоб как-то и не решить эти три вроде мелких проблемки.
Но вот Попытка Исключение КонецПопытки - ошибку транзакций обрабатывает?
   tgu82
 
170 - 31.10.20 - 14:50
(165) Возьму нет проблем. И что с ним делать? Ну вставлю его и не буду вызывать через глобальный модуль. И что изменится. Может при проведении накладной автоматом создавть СЧФ как бы после проведения через формексовское внешнеесобытие?
   Фрэнки
 
171 - 31.10.20 - 15:06
(100) думаешь что у него еще не было 2 гб? :-)
   tgu82
 
172 - 31.10.20 - 15:10
(171) Ни разу не было. Когда стало подходить свертывал год
   tgu82
 
173 - 31.10.20 - 15:11
(172)+ вот мд-ник помнится пересобирал только забыл чем а то он глючить стал
   Злопчинский
 
174 - 31.10.20 - 15:15
(170) "Может при проведении накладной автоматом создавть СЧФ как бы после проведения через формексовское внешнеесобытие?"
- у меня так сделано
   Злопчинский
 
175 - 31.10.20 - 15:16
..а то народ регулярно забывал СЧФ создавать к реализациям и авансам. бухгалтерия адски истерила пр нумерацию, хронологию и прочую нихер ане значащую поебень
   tgu82
 
176 - 31.10.20 - 15:17
(174) Ну да я же для чека так пробитие делал по товему совету. но вот записать() тут куда деться?
   Фрэнки
 
177 - 31.10.20 - 15:18
(172) А я даже не сворачивал. Но это давно было и уже не помню всех подробностей.
Ставил жесткий запрет на работу до указанной даты - вносил изменения в конфу, чтоб работало очень жестко
Затем прямо скульным манагером из этого таблицы выкидывал строки устаревшей инфы. Просто оно и на скуле можно дойти до ограничения на размер таблицы.

Ну а если ДБФ, то у него его еще проще отломать кусок старых записей.
   Злопчинский
 
178 - 31.10.20 - 15:18
Если  ПустоеЗначение(глСервис) = 1 Тогда Возврат; КонецЕсли;  //нет обработки асинхронных событий

    Если Проведен()=0 Тогда
        глСервис.ВнешнееСобытие("FAKIR", "ГЕНЕРАЦИЯСЧФВЫДАННЫЙ", ЗначениеВСтрокуВнутр(ТекущийДокумент()));
    КонецЕсли;
КонецПроцедуры//ОбработкаПроведения()
   Фрэнки
 
179 - 31.10.20 - 15:19
Эдакий закат солнца вручную.
   Злопчинский
 
180 - 31.10.20 - 15:19
//******************************************************************************

// глОбработкаВнешнегоСобытия(Источник,Событие,Данные)
//

// Параметры: 
//  Источник,Событие,Данные

//
// Возвращаемое значение:

//  Нет
//

// Описание:
//  Вызов данной процедуры происходит из всех процедур ОбработкаВнешнегоСобытия(),

// располагающихся в формах справочников, документов, обработок и т.д., для 
// обработки независящих от активной в текущий момент формы сообщений.

// 
Процедура глОбработкаВнешнегоСобытия(Источник, Событие, Данные) Экспорт 
    
    Если (Источник = "A100Online") ИЛИ (Источник = "A200Online") Тогда
        
        глОбработкаСобытияОтККМ(Источник, Событие, Данные);    

//[+]progadmin, 22.08.2013, ДОБАВЛЕНО НЕТИПОВОЕ

    Иначе
        глОбработкаFAKIR(Источник, Событие, Данные);
//[+]_progadmin, 22.08.2013, ДОБАВЛЕНО НЕТИПОВОЕ


    КонецЕсли;
    
КонецПроцедуры// глОбработкаВнешнегоСобытия()
   tgu82
 
181 - 31.10.20 - 15:19
(175) Главное здесь насколько я могу обработать ощибку и куда заветвиться после нее. ну то если все записалось и хорошо если по попытке не записалось значит обрабатываю исключение - куда-то пишу в память а потом оттуда вычитываю и дозаполняю автоматом
   Злопчинский
 
182 - 31.10.20 - 15:21
//[+]progadmin, 11.10.2013, ДОБАВЛЕНО НЕТИПОВОЕ

//******************************************************************************
// глОбработкаFAKIR_ГЕНЕРАЦИЯСЧФВЫДАННЫЙ(Источник,Событие,Данные)

//
// Параметры: 

//  Источник,Событие,Данные
//

// Возвращаемое значение:
//  Нет

//
Процедура глОбработкаFAKIR_ГЕНЕРАЦИЯСЧФВЫДАННЫЙ(Источник, Событие, Данные)
    
    Если Источник <> "FAKIR" Тогда Возврат; КонецЕсли;//штатно

    ОткрытьФорму("Отчет",Данные,глКаталог+"ДОКУМЕНТ#СчетФактураВыданный#АВТОГЕНЕРАЦИЯ.ert");

    
КонецПроцедуры//глОбработкаFAKIR_ГЕНЕРАЦИЯСЧФВЫДАННЫЙ()    

//[+]_progadmin, 11.10.2013, ДОБАВЛЕНО НЕТИПОВОЕ
   Злопчинский
 
183 - 31.10.20 - 15:21
(181) какую ошибку?
   tgu82
 
184 - 31.10.20 - 15:23
(177) Прямым запросом в каждой базе откусить кусок регистра движения партий?
   tgu82
 
185 - 31.10.20 - 15:24
(183) Таблица: 1SJOURN Ошибка обращения к данным при транзакции, выполняемой другим пользователем.
   Злопчинский
 
186 - 31.10.20 - 15:27
(184) по идее словить такую ошибку можно попыткой. или без попытки - обработка создания дока не возвращает результат успешности, ставишь паузу на 0.2сек и крутишь в цикле до 100 попыток например.
   Злопчинский
 
187 - 31.10.20 - 15:28
и всю разбухтовку-дочерниедоки тоже делать не в проведении дока-родителя
   Злопчинский
 
188 - 31.10.20 - 15:29
мне вообще мутная идея что такое разбухтовка твоя.
   Mikeware
 
189 - 31.10.20 - 15:31
(177) "оно и на скуле можно дойти до ограничения на размер таблицы." ПОделись примером?
- насколько я помню из писькомерных веток конца нулевых, у чемпиона база была под 700 гектар, и до ограничений он так и не добрался...
   tgu82
 
190 - 31.10.20 - 15:32
(188) Пашет с 2003 года безсбойно ну конечно коче что за эти годы улучшил основательно.
Разбухтовка не в модуле проведения в процедуре ПриЗаписи() как бы родительского документа
   Mikeware
 
191 - 31.10.20 - 15:33
(177) дбф - не проще. переиндексация нужна.
а в сиквельной - да, автоподрезка прекрасно работала, оставляя 37 месяцев... Первые пару месяцев ссыкотно было обрезу роботу доверять, а после - привык.
   Злопчинский
 
192 - 31.10.20 - 15:34
(190) только транзакциями клинит....
   Mikeware
 
193 - 31.10.20 - 15:35
(186) ну было как-то типа долбежки раза три, не получилось - пауза, и опять. не прошло в течение 20 циклов - тогда считаем обломом.
   Mikeware
 
194 - 31.10.20 - 15:39
(192) "и коллектив прекрасный, и зарплата хорошая - но как пожар, то хоть увольняйся"©
   tgu82
 
195 - 31.10.20 - 15:39
(192) Заметь клинит нечасто и потом именно ДокБухт.Новый() - именно эта операция клинит  часто. Можно заранее правда насоздавать пустышки чтоб крайне редко выходил на эту операцию
   tgu82
 
196 - 31.10.20 - 15:41
(194) Да нет, просто хочется как-то улучшить ситуацию - понедельник и пятница и так последние 2-3 месяца до этого как-то болееменее спокойно было
   Mikeware
 
197 - 31.10.20 - 15:41
(195) млять. "можно" было бы уже это сделать за вчерашний день. исправить десять строк кода в одной обработке, и вторая в пару десятков строк.
   tgu82
 
198 - 31.10.20 - 15:43
(197) Вот занимался маломть другими делами весь день. Нет десятью строками не обойдешся. но задался такой мыслью всерьез
   tgu82
 
199 - 31.10.20 - 15:45
(197) А все-таки по поводу обрезания движений - было бы здорово. Какой-нибудь примерчик бы. На фоксе что ли написать. Когда то ж такие вещи как семечки щелкал
   Злопчинский
 
200 - 31.10.20 - 15:58
(199)
    Если флУдалитьРегистры = 1 Тогда
        Начало = _GetPerformanceCounter();

        Для ном = 1 по Метаданные.Регистр() Цикл
            Рег = Метаданные.Регистр(ном);
            Состояние("движуха регистра "+Рег.Идентификатор);
            Сообщить("движуха регистра "+Рег.Идентификатор,"i");
            
            Если Рег.БыстраяОбработкаДвижений =0 Тогда
                ТекстЗапроса ="
                |DELETE
                |FROM $Регистр."+Рег.Идентификатор+"
                |WHERE iddoc in (select Жур.iddoc from 1sjourn Жур where 
                |
                |dtos(Жур.date)+Жур.time+Жур.iddoc between (dtos(:НачДата~~)+'      '+'         ')  and  (dtos(:КонДата~~)+'ZZZZZZ' + 'ZZZZZZZZZ')
                |)
                |";
            Иначе
                ТекстЗапроса ="
                |DELETE
                |FROM $Регистр."+Рег.Идентификатор+"
                |    WHERE
                |        DTOS(date)+time+iddoc+STR(lineno,4)+STR(actno,6) BETWEEN
                |         DTOS(:НачДата~~)+'      '+'         '+'    '+'      '
                |     And DTOS(:КонДата~~)+'ZZZZZZ'+'ZZZZZZZZZ'+'ZZZZ'+'ZZZZZZ'    
                |
                |";
            КонецЕсли;            
            Запрос.УстановитьТекстовыйПараметр("НачДата", '01.01.80');
            Запрос.УстановитьТекстовыйПараметр("КонДата", ВыбДата);
            Если Запрос.ВыполнитьИнструкцию(ТекстЗапроса) = 0 Тогда
                Сообщить("что-то пошло не так движуха регистра "+Рег.Идентификатор,"!!!");
            КонецЕсли;
        КонецЦикла;
        Сообщить("Движения регистров затраченное время: "+(_GetPerformanceCounter()-начало));

    КонецЕсли;
  1  2  3  4  5  6  7  8   

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