|
v7: ТИС файловая и SQL-ная. Часто ли бывают зависания при транзакциях? | ☑ | ||
---|---|---|---|---|
0
tgu82
28.11.17
✎
16:58
|
ТИС Файловая. Терминальный режим. Работают около 50 пользователей. Иногда бывают зависания при транзакциях. Особенно в центральной базе при обменах с магазинами такое наблюдается. Редко но бывают.
происходит это так: какой-то пользователь (по журналу регистрации видно)лупит документы остальные ничего делать не могут. Тот кто лупит - делает бесполезную работу, потому что документы налезают друг на друга. После того как он закрывает 1С (по моему требованию) все нормализуется у остальных. Но руководство требует чтобы их не было вообще. Буквально с ножом к горлу уже !!! Как у форумчан - тех кто работает в 1С 7.7 обстоят с этим дела??? Может я один такой неграмотный ??? |
|||
127
Aleksey
01.12.17
✎
21:31
|
(126) Количество записей в таблице остатков есть величина конечна и равна количеству периодических реквизитов
"Пухнут" - это увеличение количество записей, а тут для этого нет основания. Сколько у тебя периодических реквизитов в конфе 100-200? Даже пусть 1000. Т.е. в таблице итогов будет максимум 1000 записей на каждый период хранения остатков. Как ты сейчас получаешь остаток товара на дату? |
|||
128
Злопчинский
01.12.17
✎
22:35
|
(127) сомневаюсь
В таблице остатков каждый незакрытый остаток будет порождать дополнительную запись на каждое открытие периода. В итоге если в январе повесили остаток как значение периодического реквизита то в конце года будет не одна запись а на порядок больше |
|||
129
Злопчинский
01.12.17
✎
22:37
|
(127) именно что тысяча записей на каждый период. За год будет не тысяча записей а 12 тысяч
|
|||
130
Aleksey
01.12.17
✎
22:46
|
(129) еще раз. сравни с остатками номенклатуры.
Представь себе что у тебя 1000 фиксированных позиций, 1 склад и 1 фирма (ну скажем прайс 1С с коробками), ассортимент у тебя не меняется, учет по срелдней. В день по некоторым из них может быть 1 документ прихода или расхода, не более того. При этом у тебя на складе всегда есть этот ассортимент (т.е. в 0 он не уходит) Сильно распухнет регистр остатков ТМЦ в такой базе? |
|||
131
Aleksey
01.12.17
✎
22:48
|
(129) и что такое 12 тысяч за год? У меня в месяц на остатки с учетом складов и фирм тысяч 60 записей наверное будет. А тут за год всего 12 тысяч записи. У тебя база лежит на дискетки, что для тебя каждый байт важен
|
|||
132
Злопчинский
01.12.17
✎
23:01
|
Может и так
|
|||
133
Злопчинский
01.12.17
✎
23:02
|
(131) если из этого исходить то на восьмёрке ваще тормозов быть не должно ;-)
|
|||
134
Z1
02.12.17
✎
10:37
|
(123) Для курса Валют
надо Валюта не в измерении хранить а в реквизите т.е Регистр будет : Реквизит Валюта Ресурс Курс еще на сайте дикого зайца статью об этом писал -------------------------- Если в измерении валюта, то что чуть чуть пухнет - все равно пухнет ( хоть даже не намного ) и регистр никогда не будет закрыт. |
|||
135
Aleksey
02.12.17
✎
10:45
|
(134) Не понял остаток чего тогда нам покажет курс?
Ты с прайсом не путаешь, когда цену хранят в реквизите, а номенклатуру в измерении? |
|||
136
Z1
02.12.17
✎
11:04
|
(135) ничего я не путаю
таблица движений индексирована. Находишь запись по таблице ra без всяких остатков. и гораздо быстрее чем использую какие то итоги. В 1999 году была так была решена задача по изменению цен на бензоколонках Регистр Реквизит Безоколонка Реквизит ВидТоплива Ресурс Цена Причем правильно все работало даже когда на одной колонке в день менялись цены несколько раз. Ну если мы о разном говорим то извини. Я только о том что бы незакрытый регистр он и есть незакрытый задача из 0 элементарная и решается совсем по другому. |
|||
137
Aleksey
02.12.17
✎
11:13
|
(136) опять не согласен. У тебя ресурс цена, а значит любое движение вызовет расчет и запись в таблицу остатки. И если каждый раз писать цену, то получается что остаток будет расти до бесконечности, и опять имеем незакрытый регистр. Поэтому
Бензокалонка и ВидТопливо - измерения, Цена - реквизит. И тогда запись в этот регистр не будет влиять на остатки от слово совсем, ну и поиск перебором Прайс.УстановитьФильтр(Безоколонка,ВидТоплива); Прайс.ОбратныйПорядок(1); Прайс.ВыбратьДвижения(,ДатаПрайса); Если Прайс.ПолучитьДвижение()=1 Тогда Результат=Прайс.Цена; Иначе Результат=0; КонецЕсли; |
|||
138
Z1
02.12.17
✎
11:21
|
(137) Да мы не занесение курса а про вытаскивания курса - эта операция гораздо чаще чем внесение,
да и тот запрос что ты написал на 1с на sql гораздо лучше и эффективней будет. |
|||
139
Владимир1С
04.12.17
✎
10:26
|
(136) Интересный подход, спасибо за подсказку. А поподробнее можно?
|
|||
140
Z1
05.12.17
✎
16:32
|
(140) Мщи сайт дикого зайца он по моему в кеше был
также наверняка кто то еще ту статью выкладывал по моему статья называлась @Регист свединий на 1cv77" автор я Z1 по подходу можешь тут спрашивать |
|||
141
tgu82
05.12.17
✎
16:37
|
(136) Задача из (0) элементарная ? И как же она элементарно решается? вот несколько дней вообще тишь и благодать по транзакциям
|
|||
142
Z1
05.12.17
✎
17:22
|
(141) Не работать в ЦБ
ЦБ только для обменов. |
|||
143
tgu82
05.12.17
✎
19:19
|
(142) так обмены все равно перекрестные. Те же отчеты ккм со всех магазинов есть в каждой базе. И где вести бухучетные операции кассу банк и т.д. Не получается так
|
|||
144
Z1
05.12.17
✎
19:46
|
(143) Ну попробуйте ответить почему так быстрее и тогда картинка сложиться.
Перенастроить из одной базы в другую не особо сложно. |
|||
145
Z1
05.12.17
✎
19:48
|
(143) Да и если в УРБД смесь sql баз и dbf баз
то бывают очень сложнообнаруживаемые ошибки на строках неограниченной длины ( из-за разной организации хранения их ) |
|||
146
tgu82
05.12.17
✎
20:10
|
(145) Пока все ДБФ. Спасибо за советы. Буду думать
|
|||
147
Изучаю1С8
05.12.17
✎
21:00
|
Перевод на скуль + оптимизация узких мест на прямой запрос.
|
|||
148
tgu82
05.12.17
✎
21:26
|
(147) Структуру РИБ надо конечно переделывать хотя на ЦБ столько бизнес-процессов завязано что переделать ее в периферийку не получится наверное. И что тогда вообще будет ЦБ? Место куда все будет сливаться? Насчет скуль думаем, вот только нет у меня сервера для проб и ошибок, вся работа боевая
|
|||
149
tesseract
05.12.17
✎
21:56
|
(148) Лет пять назад полностью переделывал выгрузку РИБ на 7.7 на sql, Разработки давно потеряны, но загрузка/выгрузка занимала секунд 300 максимум. Все в итоге было переписано на 1cpp.
(137) У меня были хранимые процедуры на T-SQL для переодических реквизитов, работали в сотни раз лучше стандартного кода. Но поддержка их связана с заметным геморроем. В переводе на прямые запросы есть один геморрой - надо все прямые запросы выполнять ДО первой записи в регистры, иначе словишь лок от 1С и все. В итоге пришлось переписать полбазы и все данные для расчетов для проведения выполнять при начале проведения. Прям как сейчас в конфах для 8.3. |
|||
150
tgu82
19.12.17
✎
12:06
|
Как говориится до Утки - на седьмые сутки.
Вот только сейчас дошло, что когда время ожидания захвата не ноль, то в эти 10 секунд фиг знает сколько еще косяков можно понатворить. А когда ноль - то отбрасывает и все |
|||
151
tgu82
22.12.17
✎
10:46
|
ЕПРСТ. На магазинх стало лучше намного а в центральной базе начался дурдом. Постоянные транзакции. Может с нуля вернутьь опять на 15??? 45 пользователей работают. Конец года, документов вал идет, включая кассовые чеки.
Или есть еще какие-то варианты ? |
|||
152
Ёпрст
22.12.17
✎
10:53
|
(151) ну, можешь поставить хрень от ромикса,vk_sleep
|
|||
153
Ёпрст
22.12.17
✎
10:53
|
но я её убрал, ибо были ошибки при её использовании
|
|||
154
Ёпрст
22.12.17
✎
10:54
|
А чего у тебя народ в ЦБ делает..? Справочники заводит, или что ?
|
|||
155
tgu82
22.12.17
✎
10:55
|
(152) Если попроббовать вернуть как было или например поставить не 15 а 10 секунд или 5 - подскажите код. На ноль то я всех выставил
|
|||
156
tgu82
22.12.17
✎
10:56
|
(154) Справочники, документы: поступление, чеки, строки выписки ПКО РКО перемещения реализации и счета-фактуры. В базе сейчас 45 пользователей
|
|||
157
tgu82
22.12.17
✎
10:57
|
(156)+ Заявки покупателя короче весь документооборот. А на магазинх стало хорошо на периферийных
|
|||
158
tgu82
22.12.17
✎
10:58
|
Вот код который все в ноль поставил
Процедура ПриНачалеРаботыСистемы() ЛокВэйт=0; Попытка МойТекст1С=СоздатьОбъект("Текст"); МойТекст1С.Открыть(КаталогПользователя()+"1Cv7.CFG"); НомерСтрокиТекста = 1; Пока НомерСтрокиТекста <= МойТекст1С.КоличествоСтрок() Цикл СтрокаТекста = МойТекст1С.ПолучитьСтроку(НомерСтрокиТекста); Если Найти(СтрокаТекста, "LockWaitTime")>0 Тогда Если Найти(СтрокаТекста,Симв(34)+"LockWaitTime"+Симв(34)+","+Симв(34)+"0"+Симв(34))=0 Тогда МойТекст1С.ЗаменитьСтроку(НомерСтрокиТекста, "{"+Симв(34)+"LockWaitTime"+Симв(34)+","+Симв(34)+"0"+Симв(34)+"}}"); ЛокВэйт=-1; Прервать; Иначе ЛокВэйт=1; КонецЕсли; КонецЕсли; НомерСтрокиТекста=НомерСтрокиТекста+1; КонецЦикла; Если ЛокВэйт=-1 Тогда МойТекст1С.Записать(КаталогПользователя()+"1Cv7.CFG"); Предупреждение("Пожалуйста, войдите в базу повторно",10); СтатусВозврата(0); Возврат; КонецЕсли; Исключение КонецПопытки; Если ЛокВэйт=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; |
|||
159
tgu82
22.12.17
✎
10:59
|
Ромиксову не использовал а вот кернел 33 и 37 использую
|
|||
160
tgu82
22.12.17
✎
11:06
|
(159)+ Утром дурдом из-за транзакций а потом как-то нормально пашет
|
|||
161
tgu82
22.12.17
✎
11:12
|
(154) ЕПРСТ. У нас очень много документов проводтся задним числом - и перемщения и постпуления и реализации. Получается что регистры же перерасчитываются. Вот может из-за этого все и происходит
|
|||
162
Ёпрст
22.12.17
✎
11:13
|
(161) если регистры норм закрываются, выстави период хранения останков 5 дней.
Всё полетит |
|||
163
Ёпрст
22.12.17
✎
11:13
|
единственное неудобство - открытие периода.
|
|||
164
tgu82
22.12.17
✎
11:17
|
(163) Ну а если все-таки вернуть время ожидания захвата не в ноль? Просто с кодом не врублючь как там сделать 10 или 15 секунд. Но именно с этого момента (как в ноль поставил) стало хуже на центральной базе
|
|||
165
tgu82
22.12.17
✎
11:18
|
(163) регистры в-основном закрываются нормаально хотя и не все, но партии, продажи,взаиморасчеты, остатки резервы - там вроде нормально
|
|||
166
Ёпрст
22.12.17
✎
11:19
|
(164) воткни проверку, что если это центр база, то cfg не трогать и код из (158) не выполнять. делов-то
|
|||
167
Ёпрст
22.12.17
✎
11:19
|
но от транзакций ты не избавишься, будет только хуже :)
|
|||
168
tgu82
22.12.17
✎
11:24
|
(166) Так он же уже в ноль всем поставил. Что толку-то если я проверку поставлю. Он же мне в 10 или 15 секунд сам не поставит
|
|||
169
tgu82
22.12.17
✎
11:26
|
(166) Записи книги продаж и покупок не закрыты (регистры). Чем-то их надо закрыть ибо в торговле я месяц не закрываю
|
|||
170
Ёпрст
22.12.17
✎
11:28
|
(168) воткнёшь проверку в модуль, один раз исправишь в параметрах в цб время захвата таблиц. Всё
|
|||
171
Ёпрст
22.12.17
✎
11:28
|
(169) Эти регистры вырезать за ненадобностью, ими в ТИСе никто и никогда не пользовался
|
|||
172
Ёпрст
22.12.17
✎
11:29
|
В модулях найти все строки, которые толкают этот регистр и заремить.
|
|||
173
Ёпрст
22.12.17
✎
11:29
|
это минут на 5 работы
|
|||
174
Aleksey
22.12.17
✎
11:30
|
(168) добавь константу ВремяОжиданияЗахватаБазы и немного модифицируй (158), а именно
Если Найти(СтрокаТекста,Симв(34)+"LockWaitTime"+Симв(34)+","+Симв(34)+""+Константа.ВремяОжиданияЗахватаБазы+""+Симв(34))=0 Тогда МойТекст1С.ЗаменитьСтроку(НомерСтрокиТекста, "{"+Симв(34)+"LockWaitTime"+Симв(34)+","+Симв(34)+""+Константа.ВремяОжиданияЗахватаБазы+""+Симв(34)+"}}"); ЛокВэйт=-1; И тогда в центре ставишь 15 и оно в центре у всех будет 15, а на филиале ставишь константу в 0 |
|||
175
tgu82
22.12.17
✎
11:31
|
(172) Но один раз закрыть-то надо по-любому а чем хз?
(174) Текстовая константа или числовая ? |
|||
176
Aleksey
22.12.17
✎
11:34
|
(175) число Длина 3 точность 0, неотрицательный
|
|||
177
tgu82
22.12.17
✎
11:35
|
(171) Вырезать регистры вообще из конфигурации? И сдлеать потом ТИИ с пересчетом итогов?
|
|||
178
Aleksey
22.12.17
✎
11:35
|
(177) Для начало просто отключи движение по ним
|
|||
179
tgu82
22.12.17
✎
11:36
|
(176) Спасибо. С утра дурдом а потом как-то все нормально
|
|||
180
tgu82
22.12.17
✎
11:37
|
(178) Отключу а потом как закрыть чтоб больще не лезть в них?
Типа документа ввода остатков? |
|||
181
Aleksey
22.12.17
✎
11:37
|
(180) грохни dbf физически
|
|||
182
Ёпрст
22.12.17
✎
11:39
|
(177) Можешь и оставить, на память, только сами таблички прибей потом. Чтоб файловое место не занимали и чтоб пересчету регистров не мешали
|
|||
183
tgu82
22.12.17
✎
11:44
|
(182) понял. спасибо. попробую
|
|||
184
Ёпрст
22.12.17
✎
11:47
|
+ можно повырезать лишнюю аналитику с регистров, можно поуменьшать размеры ресурсов регистров, всё это уменьшит размер дбф
|
|||
185
Ёпрст
22.12.17
✎
11:47
|
и увеличит производительность
|
|||
186
tgu82
22.12.17
✎
11:52
|
(184) А много там лишней аналитики? Где стоит вырезать? Ведь основные - это продажи, партии, остатки, резервы, банк, покупатели и поставщики, касса. Что там вырезать-то? Хотя да -ценапрод не нужна в остатках тмц
|
|||
187
tgu82
22.12.17
✎
11:59
|
(186)+ Есть еще дурной регистр - заявки покупателей, но у нас им весьма активно пользуются. Потом закрывать ежемесячно приходится
|
|||
188
Ёпрст
22.12.17
✎
12:00
|
ну смотри, если у вас однофирменный учет, то измерение фирма вырезаешь со всех регистров, если у вас не розница, то выкидываешь ценаПрод, если вы не ведёте учет в валюте, то выкидывается еще ресурсы с суммами.
в покупателях, всякие там ставкаНП выкинуть (налога с продаж нет уже лет 15) |
|||
189
Ёпрст
22.12.17
✎
12:03
|
Да там, много чего повырезать можно
|
|||
190
Ёпрст
22.12.17
✎
12:03
|
и переписать на норм алгоритмы.
|
|||
191
tgu82
22.12.17
✎
12:04
|
(189) Учет многофирменный. НП выкинуть - это полконфигурации менять. В валюте ничего не ведем
|
|||
192
Ёпрст
22.12.17
✎
12:04
|
Да, если учет по-средней, можно повырезать партии.
|
|||
193
Aleksey
22.12.17
✎
12:08
|
(187) мы тупо раз в 2 недели запускаем cmd файл
DEL R?4480.* Ну и помечаем на удаления заявки и закрытие резерва |
|||
194
tgu82
22.12.17
✎
12:20
|
(192) Учет по ФИФО
|
|||
195
Ёпрст
22.12.17
✎
12:24
|
(193) от вы ленивые. Проще в коде заремить, быстрее проводится будут, ибо нет записей, нет пересчета итогов
|
|||
196
tgu82
22.12.17
✎
13:36
|
(195) если раньше юзерам приходилось ждать и они нажимали "нет" и пробовали чере 10 сек, то теперь посколько врмя ожидания Ноль, то они пробую заново тут же. Из-за этого получается иногжа массовая блокировка транзацакций
|
|||
197
Ёпрст
22.12.17
✎
13:41
|
(196) в том то и дело, что блокировки нет, ибо пока кто-то не провёл документ, блокируется 1sjourn целиком. зато сразу оутлуп, и не надо ждать 10 секунд и создавать очередь на ожидания
|
|||
198
Ёпрст
22.12.17
✎
13:42
|
Теперь, нужно только ускорить время проведения доков и транзакций не будет совсем.
У нас, половина доков обработками перепроводилось массово, и ничего, никому не мешало. Ибо в этот перепровод запросто можно было впихнуть как новыйц документ, так и провести его |
|||
199
tgu82
22.12.17
✎
13:54
|
(198) Чем его ускорить (проведение)? У меня и так за секунду порой по 3-4 дока создаются
|
|||
200
tgu82
22.12.17
✎
14:01
|
(199)+ Самое фиговое что создана например громадная Заявка покупателю и из-за транзакции приходится порой создавать ее заново, вот как с этим быть. юзеры ругаются. Это нечасто бывает но бывает
|
|||
201
Ёпрст
22.12.17
✎
14:02
|
(199) уменьшить период хранения останков, желательно вынести проверки до обработки проведения, выкинуть запись лишних движений.
Проводить все документы в потоке. Для "заднего" числа, переписать получение останков на прямой запрос. Хотя, и с 5-ю днями будет гоооораздо быстрее делатся временный расчет регистров |
|||
202
tgu82
22.12.17
✎
14:02
|
(201) А как быть с открытием периода ?
|
|||
203
tgu82
22.12.17
✎
14:03
|
(201) А что значит в потоке? Ведь остатки же все начнут лететь
|
|||
204
Ёпрст
22.12.17
✎
14:04
|
(202) открывать
(203) проводить новые доки со сдвигом та |
|||
205
tgu82
22.12.17
✎
14:27
|
(203) Слова знакомые но сути не понял
|
|||
206
tgu82
22.12.17
✎
14:27
|
(205) Но новые документы и так проводятся же со сдвигом ТА
|
|||
207
Aleksey
22.12.17
✎
14:28
|
(195) Резервы? Так используем гиперактивно. Настолько что через месяц начинает всё тормозить. Поэтому раз в 2 недели тупо грохаем движение и документы
|
|||
208
tgu82
22.12.17
✎
14:44
|
(204) ЕПРСТ
У нас так: Новые документы записывать: С текущим временем - флажок пустой после ТА - флажок пустой Новые документы проводить: после ТА (в реальном времени) - флажок пустой при проведении после ТА заменять время на текущее - флажок непустой Может тут что-то не так? |
|||
209
tgu82
22.12.17
✎
14:45
|
(204) Это у каждого пользователя иожет быть по-разному установлено?
|
|||
210
Aleksey
22.12.17
✎
15:17
|
типа ПроводитьПослеТА(1,1);
|
|||
211
Aleksey
22.12.17
✎
15:17
|
только надо быть аккуратнее с приходами
|
|||
212
tgu82
22.12.17
✎
15:18
|
(210) Алексей.Это в каком месте вставлять?
|
|||
213
Aleksey
22.12.17
✎
15:19
|
Процедура ПриОткрытии()
|
|||
214
tgu82
22.12.17
✎
15:19
|
(213) А что это практически даст?
|
|||
215
Aleksey
22.12.17
✎
15:20
|
Для поступлений/возвратов я бы прописал бы
ПроводитьПослеТА(1,-1); |
|||
216
tgu82
22.12.17
✎
15:21
|
(215)Спасибо понял а что это все-таки даст на практике ?
|
|||
217
Aleksey
22.12.17
✎
15:22
|
(214) в течении дня документы будут проводиться на ТА, что исключит пересчет итогов при проведении, т.е. уменьшается время проведения и блокировки
|
|||
218
tgu82
22.12.17
✎
15:26
|
(217) А что делать в конце дня? И потом много документов создаются и проводятся обработками. Там нет ПриОткрытии :)
|
|||
219
Aleksey
22.12.17
✎
15:28
|
(218)
Провести(<?>,); Синтаксис: Провести(<Режим>,<Знач>) Назначение: Выполнить проведение документа. Возвращает: 1 - если проведение документа выполнено, 0 - иначе. Параметры: <Режим> - необязательный параметр. Число: 0 - проводить документ без сдвига ТА; 1 - проводить непроведенный документ реальным временем (со сдвигом ТА); 2 - перепроводить проведенный документ реальным временем (со сдвигом ТА); 3 - проводить любой (непроведенный, проведенный) документ реальным временем (со сдвигом ТА). Значение по умолчанию - 0. |
|||
220
tgu82
22.12.17
✎
15:29
|
(219) Так в конце дня как быть? Что-то надо будет перепроводить массово?
|
|||
221
Aleksey
22.12.17
✎
15:35
|
(220) ну ты когда обработкой созздаешь докуи там и пиши что проводить на ТА
Док = создатьОбъект( ... Док.Провести(3); |
|||
222
breezee
22.12.17
✎
15:37
|
(0) Выкинте, пожалуйста, семерку, меня от неё тошнит(
|
|||
223
tgu82
22.12.17
✎
15:39
|
(221) Я понял. То есть вечером или ночью ничего восстанавливать не надо
(222) Давно бы выкинул только в ней 45 пользвателей только на ЦБ и еще перифериек 5 |
|||
224
Aleksey
22.12.17
✎
15:40
|
(222) а сюда ты зачем зашел? Поблевать?
|
|||
225
Aleksey
22.12.17
✎
15:42
|
(223) Моя твоя не понимать зачем что-то восстанавливать.
Ночью вообще пофиг. там никого нет и блокировать некому, поэтому что задницей, что передницей проводить - все равно. Лишь бы укладывалось в регламентное время |
|||
226
tgu82
03.01.18
✎
15:42
|
Вообще странно:
Работает собственно только кассир. И вот в течении минут 15 при попытке создать автоматом дополнительный к чеку документ "Движение бухт по чеку" идет ошибка "обращение к таблице 1SJORN" - Ошибка обращения к данным при транзакции выполняемой Другим пользователем. Но как-то вот нет этого другого пользователя |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |