Имя: Пароль:
1C
1C 7.7
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" - Ошибка обращения к данным при транзакции выполняемой Другим пользователем. Но как-то вот нет этого другого пользователя
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.