К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Перерасчет Регистров

0 - 05.08.2019 - 14:43
Куплен новый сервак под переход на УТ11, пока учет ведется на Тис 7.7 местами переписанной. Пользователей до 30. Документов в день 400 - 500. По сути все предпосылки для перехода на SQL, но стабильно работающая связка 1с 7.7 + Win2008 64 +?? SQL не вытанцовывается. Узкое место в текущей сборке - подбор с перерасчетом 4 регистров (местная дописанная фишка, убить не вариант) на достаточно большом справочнике Номенклатуры. В остальном тормоза расшили. База живет в ТА. Как ускорить процесс или отказаться от пересчетов? Если отменить пересчет регистров и смотреть по ТА насколько будут плыть цифры от реальных?


1 - 05.08.2019 - 15:12
Если отменить пересчет регистров и смотреть по ТА насколько будут плыть цифры от реальных
НО учитывать что получение данных из этих регистров в отчетах, например, может вести себя "интересно" (эффект грязного чтения + отсутствие промежуточных итогов как "печки от которой плясать")
2 - 05.08.2019 - 15:42
Цитата:
Сообщение от roma n Посмотреть сообщение
Если отменить пересчет регистров и смотреть по ТА насколько будут плыть цифры от реальных НО учитывать что получение данных из этих регистров в отчетах, например, может вести себя "интересно" (эффект грязного чтения + отсутствие промежуточных итогов как "печки от которой плясать")
По сути "приблизительные цифры" не страшны. Они все равно не абсолютно актуальны - пока кто-то топчется в подборе другие уже могут и растащить остатки. Документ при проведении перепроверяет остаток.
3 - 05.08.2019 - 15:43
А реально работающей связки со Скулем нет? Статьи я читал, но там сильно не однозначные танцы с бубном.
4 - 05.08.2019 - 16:31
В чем вопрос ? База 7.7 в DBF какого размера ? Большой справочник номенклатуры это сколько ? 100 тыс элементов? Что за хитрый расчет и перерасчет? ТА - живет текущим днём ? И при чем тут SQL и УТ 11. 2005 SQL 32 бита можно ж к 77 прикрутить на win2008, пусть и с нарушением.
5 - 06.08.2019 - 09:24
(0) Не очень понял про подбор номенклатуры и перерасчет 4-х регистров одновременно. Вам надо одновременно смотреть остатки по 4-м регистрам? Вам надо снимать остатки не на ТА, а на произвольную дату?
Попробуйте реализовать "новую" методику списания из 8-ки. Сначала подбираете все и проводите документ, а потом делаете контроль отрицательных остатков.
6 - 06.08.2019 - 09:37
Цитата:
Сообщение от Jimbo Посмотреть сообщение
В чем вопрос ? База 7.7 в DBF какого размера ? Большой справочник номенклатуры это сколько ? 100 тыс элементов? Что за хитрый расчет и перерасчет? ТА - живет текущим днём ? И при чем тут SQL и УТ 11. 2005 SQL 32 бита можно ж к 77 прикрутить на win2008, пусть и с нарушением.
По пунктам:
База не большая (меньше 1 гб)
Номенклатура в районе 50 000 элементов
Перерасчет не хитрый, просто пришлось по структуре остатков добавить 2 дополнительных регистра остатков и резервов и при подборе идет временный расчет и получение остатков по 4 регистрам (правда пересчет идет при открытии, а тормозит и при выборе позиций)
ТА живет текущим днем
По Скулю - сервант новый, под систему Оптан стоит и 2008 может не встать, а под Вин2012 пляски с 7.7 и Скулем без шансов
7 - 06.08.2019 - 09:39
Есть ощущение, что тормозит не расчет а получение остатков из регистра.
8 - 06.08.2019 - 09:48
Регистры рассчитываются при открытии формы подбора номенклатуры. Получение остатков из стандартной функции ПолучитьОстатокЗаполнитьЦену(), измененный кусок

////////////////////////////////////////////////////////////////////////////////////
ОстатокБух = БухОстатки.СводныйОстаток(,ТекНоменклатура,"Количе ство");
Единица = ТекНоменклатура.ОсновнаяЕдиница;

Если Единица.Коэффициент > 0 Тогда
ОстатокБух = ОстатокБух / Единица.Коэффициент;
КонецЕсли;
ТекБухОстаток = ?(ПустоеЗначение(ОстатокБух) = 1, "", СокрЛП(Формат(ОстатокБух,"Ч014.1, ")));
///////////////////////////////////////////////////////////////////////

По сути все стандартно, но после включения пошли очень ощутимые тормоза, аналогичный кусок по резервам пока убрали.
9 - 06.08.2019 - 10:54
(6) Отключайте временный расчет (снимайте остатки на ТА) и будет Вам счастье.
10 - 06.08.2019 - 10:57
Ну это очевидный вариант. Правда не объясняющий тормоза ПОСЛЕ открытия формы (в этот момент итоги уже пересчитаны).
11 - 06.08.2019 - 10:58
Не помню уже в 7.7 отладчике есть ли время замеров ? Если нет, то надублировать строк Сообщить ТекущееВремя() и найти то, что тупит.
Переписать на черный запрос не в цикле и замерить.
Если ТА актуально - то зачем временный расчет ?
На 2012 можно виртуалку поставить 2008R2
12 - 06.08.2019 - 11:13
_GetPerformanceCounter() - поточнее время сечет, разности копим, сортируем
13 - 06.08.2019 - 11:15
Цитата:
Сообщение от Jimbo Посмотреть сообщение
Не помню уже в 7.7 отладчике есть ли время замеров ? Если нет, то надублировать строк Сообщить ТекущееВремя() и найти то, что тупит.
Время замеров есть - посмотрю, мой косяк

Цитата:
Сообщение от Jimbo Посмотреть сообщение
На 2012 можно виртуалку поставить 2008R2
Сервак терминальный под 40 пользунов, совать их в виртуалку так себе идея.
14 - 06.08.2019 - 12:29
Почти очевидно, что тормозит СводныйОстаток. Может у тебя добавленные регистры не в очень хорошем состоянии, например не закрываются. Что это за бухостатки в ТИС, зачем они ваще там нужны ?))
15 - 06.08.2019 - 14:54
Регистр закрывается на уровне измерений, но движения по реквизитам могут быть не закрыты. А назначение его простое - на всю контору есть бонусная продукция идентичная обычной с лимитами на всех. Соответственно списывается она в любом филиале из общего количества типа "кто первый успел". Но больше лимита строго нельзя. Причем ее еще и резервировать приходится под промоакции.
Про "почти очевидный СводныйОстаток" согласен, но вот варианты? И потом Резервы и Остатки не тормозят, а с чего тут такие тормоза?
16 - 06.08.2019 - 15:08
С того что регистры должны закрываться в 0 при правильной архитектуре. Копию базы сделайте загрузкой-выгрузкой. ТиИ, пересчетов итогов на копии, сжатие и реструктуризация. Интересно лёд тронется с метртвой точки? Отладчик и замер тормозов в живой и на копии.
17 - 06.08.2019 - 15:10
Завтра буду играться копией. Регистр на уровне измерений закрывается! Да и данных там не много. Больше действительно похоже на тормоза при получении остатка.
Завтра продолжим с цифрами.
18 - 06.08.2019 - 15:25
если захочется заморочиться и ускорить в разы работу с чтением итогов регистров в узких местах, то можно прикрутить 1sqlite предварительно тщательно его покурив))
19 - 06.08.2019 - 17:54
(10) С каждым телодвижением на форме отрабатывает функция получения остатков (размещенная в поле ТЗ) по каждой строке списка.
20 - 09.08.2019 - 14:42
Цитата:
Сообщение от US1C Посмотреть сообщение
(10) С каждым телодвижением на форме отрабатывает функция получения остатков (размещенная в поле ТЗ) по каждой строке списка.
Совершенно согласен! Вопрос решился банально - расчет доп. остатков и резервов снесли вниз в текстовые поля для текущей номенклатуры и все залетало. Ворчат пользуны про неудобства, но это как водится ...
21 - 10.08.2019 - 22:51
77 + win2008r2 + sql server 2008 -- никаких "танцев с бубном", поставили solution7 по инструкции - и вперед...
22 - 13.08.2019 - 10:26
Точно из "Бриллиантовой руки" - "на этом месте должен был быть Я" :).
1С 7.7. ТИС сильно переделанная. Win 2008-64 DBF порядка 45 пользователей. С великим интересом читаю что и как
23 - 13.08.2019 - 10:48
(22) Не актуально пока что. Хотя там же есть флаг "показывать остатки и цены в колонке". Я еще туда остатки витрин присобачил ).
24 - Вчера - 11:49
(20): есть промежуточный способ решения таких проблем.
очтавить в колонке вызов функции, но саму функцию перепилить следующим образом:
в переменной модуля держать кэш-ТЗ с остатками (опционально - с временем последнего расчета); функция - сначала ищет в этой ТЗ ТекущийЭлемент, если не нашла (или по опциональной колонке времени последнего расчета остаток уже "протух") - рассчитать его и добавить (или обновить); иначе - просто вернуть из кэша найденное.
и еще... никогда и нигде не использовать СводныйОстаток с пропуском значений изменений, гораздо быстрее тупо перебрать без пропусков измерений все остатки и выбрать при переборе нужные.
25 - Вчера - 11:55
прим.: и еще. есть такой нюанс, который иногда можно очень выгодно использовать. формулы нескольких вычисляемых колонок отрабатывают слева-направо. поэтому, например, если в двух выч.колонках используются врем.регистры (или одинаковый запрос) - то вместо вычисления всей этой беды в каждой формуле намного быстрее получится если положить регистры (или запрос) в переменную модуля, в формуле самой левой колонки выполнять врем.расчет регистров (или расчет запроса), а в тех формулах, что правее - тупо выдергивать из врем.регистров (или запроса) нужное и возвращать его...


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены