#0
by ИС-2
В базе сделана куча проверок, где идет обращение к реквизитам через точку. Это съедает скорость работы. Одна проверка через такое обращение занимает 38%. Вопрос. Как это можно оптимизировать? Переводить на запросы - долго и не факт, что даст скорость работы. 1) Написание общей функции повторного использования, которая делает обращение к промежуточным данным (чтобы минимизировать вероятность получения устаревших данных). Примерно так: ПовтИсп.ЗначениеРеквизита(Заказ,"Договор.Владелец").ИНН есть еще какие-то варианты?
#3
by triviumfan
1) предварительно получить все необходимые реквизиты перед проверками; 2) перейти на табличную модель получения данных, т.к. у тебя наверняка обращения к составным типам присутствуют (вижу "Владелец" в примере), что влечёт за собой избыточные внутренние соединения; 3) 38% - это данные замера производительности? Может проблема в конкретной строчке кода, где идёт обращение к реквизитам составного поля?
#4
by Tateossian
Можно укоротить разыменование: :) Если все проверки примерно по такой схеме, как ты написал, можно предложить сделать универсальную функцию, что-то вроде СтруктураШапкиДокумента и там держать все необходимые реквизиты. Не думаю, что прямо особых случаев много. Есть еще вариант, но слегка костыльный - все проверяемые реквизиты прописать в объекте Критерии отбора - он очень быстро работает и лишних чтений не будет, но немножко станет толще база.
#5
by RomaH
"Переводить на запросы - долго и не факт, что даст скорость работы." скорость работы даст в любом случае чтобы минимизировать вероятность получения устаревших данных - хранить на время вызова - насколько я понимаю это аналогично запросу
#6
by triviumfan
Если предположить, что многие данные уже храняться в оперативной памяти, то с вероятностью 146% можно сделать вывод, что причина падения производительности в одной из строк рукоблудного кода :)
#9
by Kigo_Kigo
А я вот знаю про что ТС-говорить, это регистры покупатели и поставщики? туда не пишется контрагент, а только договор, оптимизировать получится только добавив контрагента в регистр, прописать его туда в модулях проведения доков, свернуть базу, оставшиеся доки перевровести, тугие отчеты переписать, точнее дописать выборки по контрагенты
#19
by Ботаник Гарден Меран
Определиться с составом реквизитов. При первом обращении к объекту получить запросом все нужные реквизиты. Кэшировать. Все последующие обращения по объекту брать из кэша.
#21
by Ботаник Гарден Меран
Есть такая проблема. Только вчера в УХ ответственных лиц через модуль повторного использования получал. Заполнил регистр и долго втыкал, почему пусто в отчете. Зависит от продолжительности проверки.
#23
by Dmitrii
Для таких целей в модуле ОбщегоНазначения есть целая кучка функций: >> Написание общей функции повторного использования Вряд ли даст результат, т.к. редко будет вызываться с одними и теми же входящими параметрами несколько раз подряд. А при каждом вызове с новыми входными параметрами повторно использоваться ранее сохраненные значения не будут. Таким образом выигрыша не будет. Только память забиваться будет на хранение повторно используемых значений. Если подходить глобально, то верно написано в . Но для этого надо значительно больше переписать кода.
#24
by ИТ директор
Если подходить глобально, то надо делать рефакторинг метаданных или денормализацию, например забубенивать всякие регистры сведений с нужными разрезами. Но это уже если исправления кривых запросов не поможет.
#26
by Dmitrii
Такой глобальный пересмотр методики учета для большинства типовых просто нереален. Или будет означать отказ от дальнейшего обновления от поставщика.
#27
by Ботаник Гарден Меран
Кэш через три точки? Ну может быть, у меня таких точных познаний нет. Будет тормозить на записи регистров сведений с нужными разрезами.
#29
by ИТ директор
Типовые от 1С и не нуждаются в подобной переделке, т.к. спроектированы по большей части хорошо. В отличие от отраслевых поделок франчей, вот уж где трэш и угар.
#30
by H A D G E H O G s
Я использую обертку повторновозвращаемых над ЗначениеРеквизитаОбъекта помогает не городить свой кэш при групповых массовых обработках
#38
by ИТ директор
для тех кто держит тестовые базы в продуктиве (да-да, я про тебя), наверно актуально
#40
by youalex
если это принципиально, то и результат проверки через точку может протухнуть. кэш объектов. Заказ.Договор.Владелец.ИНН = Заказ.ПолучитьОбъект.Договор.ПолучитьОбъект.Владелец.ПолучитьОбъект.ИНН. все полученные объекты будут закэшированы платформой.
#41
by Fragster
если совсем принципиально, можно управляемую блокировку на цепочку ссылок повесить...
#48
by youalex
тогда и транзакцию прицепом) А проверять реки на что-то там, скорее всего, можно полностью в запросе
#51
by Fragster
ты не поверишь, но на этом серваке еще есть и виртуалка с какой-то хуйней. Деть некуда, см , но хоть нагрузки не дает хоть как-то ощутимой.
#58
by ИС-2
вытащить все данные запросом может потребоваться еще больше времени т.к надо соединять все таблицы
#59
by D3O
если соединять с предварительно отобранными временными таблицами больше времени не потребуется. платформа при обращениях из языка через точно выбирает весь кортеж объекта, а не только требуемое поле. проблема быстродействия еще и в этом.
#61
by Fragster
а если объект содержит таб части, то (раньше - так точно) делает это в микротранзакциях
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Запрос по реквизитам и реквизитам табличной части документа с условием
- v8: 8.1.6.38 обращение к реквизиту через точку выдает ошибку доступа
- Оптимизация регистра
- Режим копирования объектов (не сохраняются внутренние идентификаторы объектов)
- v7: Доступ в прямом запросе через 2 точки - пишет ошибка, хочет только через 1 точку
- Документооборот. Удаление помеченных объектов. Дескрипторы доступа для объектов.
В этой группе 1С
- 1c 8.3 проблемы с интерфейсом
- Программно изменить динамический список на форме
- v7: DialMail и тело письма
- v7: Ошибка доступа к памяти (Приложение по адресу обратилось к памяти.....)
- 1С 8,3 не видит txt-файл
- 1с 8 Построитель отчета
- 1C Бухгалтерия Предприятия 3 КОПР Амортизация после модернизации не начисляется со следующ
- Онлайн ККМ Штрих-м-01ф. Касса перешла в режим (121) Замена ФП
- Преобразование значения к типу Число не может быть выполнено
- Тарифная ставка месячная ЗУП 3.1
- Подключить Атол 11Ф к УТ ё10.3 в режиме принтера чеков
- Начальная настройка структуры организации в 1С ERP 2.4
- v7: Подключить терминал сбербанка к тис 7.7. Есть вопросы
- Соответствие объектов ЗУП 2.5 3.0
- Конвертация данных, выгрузить по правилу
- ЗУП 3-1 Как посмотреть факт время и нору за год
- 1с Документооборот. Дубли-повторы бизнес-процессов
- Подружить Атол 55Ф и УТ 11
- ЗУП надпись [КОПИЯ]
- Как выгрузить картинки пользовательских справочников в Битрикс?