#14
by Лефмихалыч
откуда уверенность, что тормозит именно этот вызов? Замер производительности есть?
#19
by Бешеная Нога
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПолучитьЗначенияДляЗаполненияПослеПроведенияРСВЗаПоследнийГод);
#21
by Дтл
может и это тоже но я видел в ут11 место где там подряд два заполнения идут при формировании движений по партиям товаров и ндс. померять у меня ума хватило. там на интервале в несколько десятков минут это самые долгие операции. просто интересно если кто уже заменял на присвоение значения сколько это времени сократило и зависит ли от типов. сам это всё равно попробую позднее если только технически всё станет по двум месяцам и останутся вопросы скорости для остального периода.
#22
by Maxus43
Это операция ОЧЕНЬ лёгкая, значит проблема не в ней, а в получении данных для заполнения
#25
by Darth Anyan
может, вот эта функция время отъедает? Или есть возможность ее вообще выполнить 1 раз и закэшировать результат куда-нибудь?
#27
by Дтл
ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 405 ЗаполнитьЗначенияСвойств(ЗаписьНабора, СтрокаОстатка,, "Количество, Стоимость, СтоимостьБезНДС, СтоимостьРегл, НДСРегл"); 6 4,668468 62,69 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 406 ЗаполнитьЗначенияСвойств(ЗаписьНабора, Расход, "Период, Регистратор, СтатьяПотребления, АналитикаПотребления, ДокументРеализации, ЭтоВозврат"); 5 0,935035 12,56 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 399 Остаток.Стоимость = 0; 5 0,156804 2,11 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 402 Остаток.НДСРегл = 0; 5 0,155993 2,09 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 400 Остаток.СтоимостьБезНДС = 0; 5 0,155908 2,09 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 401 Остаток.СтоимостьРегл = 0; 5 0,155809 2,09 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 408 ЗаписьНабора.ВидДвижения = Расход.ВидДвижения; 5 0,136740 1,84 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 409 ЗаписьНабора.МоментВремени = Новый МоментВремени(Расход.Период, Расход.Регистратор); 5 0,109337 1,47 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 410 ЗаписьНабора.ИсходноеКоличество = РаспределенныйРасход.Количество; 5 0,109290 1,47 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 413 ЗаписьНабора.ИсходнаяСтоимостьРегл = РаспределенныйРасход.СтоимостьРегл; 5 0,109039 1,46 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 411 ЗаписьНабора.ИсходнаяСтоимость = РаспределенныйРасход.Стоимость; 5 0,108970 1,46 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 412 ЗаписьНабора.ИсходнаяСтоимостьБезНДС = РаспределенныйРасход.СтоимостьБезНДС; 5 0,108936 1,46 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 414 ЗаписьНабора.ИсходныйНДСРегл = РаспределенныйРасход.НДСРегл; 5 0,108907 1,46 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 416 ЗаписьНабора.ЗаписьВРегистр = Истина; 5 0,108587 1,46 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 398 Остаток.Количество = 0; 5 0,076558 1,03 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 326 Остатки.Индексы.Добавить("Номенклатура"); 6 0,022402 0,30
#30
by Дтл
ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 412 ЗаписьНабора.СтоимостьБезНДС = СтрокаОстатка.СтоимостьБезНДС; 5 0,885091 3,65 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 433 ЗаписьНабора.ИсходныйНДСРегл = РаспределенныйРасход.НДСРегл; 5 0,895292 3,69 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 432 ЗаписьНабора.ИсходнаяСтоимостьРегл = РаспределенныйРасход.СтоимостьРегл; 5 0,910266 3,75 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 431 ЗаписьНабора.ИсходнаяСтоимостьБезНДС = РаспределенныйРасход.СтоимостьБезНДС; 5 0,958894 3,95 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 430 ЗаписьНабора.ИсходнаяСтоимость = РаспределенныйРасход.Стоимость; 5 0,965688 3,98 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 412 Остаток.Количество = Остаток.Количество - РаспределяемоеКоличество; 4 1,389572 5,73 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 416 Остаток.НДСРегл = Остаток.НДСРегл - Расход.НДСРегл; 4 1,422046 5,86 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 415 Остаток.СтоимостьРегл = Остаток.СтоимостьРегл - Расход.СтоимостьРегл; 4 1,533459 6,32 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 413 Остаток.Стоимость = Остаток.Стоимость - Расход.Стоимость; 4 1,608745 6,63 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 414 Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС; 4 1,621341 6,68 как-то можно ускорить или может быть переписать сами расчеты? кто-нибудь делал?
#31
by Дтл
точнее вот это ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 414 Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС; 1 0,443816 6,32 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 415 Остаток.СтоимостьРегл = Остаток.СтоимостьРегл - Расход.СтоимостьРегл; 1 0,449871 6,41 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 412 Остаток.Количество = Остаток.Количество - РаспределяемоеКоличество; 1 0,459970 6,55 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 413 Остаток.Стоимость = Остаток.Стоимость - Расход.Стоимость; 1 0,507228 7,23
#32
by hhhh
что-то гоните. Ну не может Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС выполняться полсекунды.
#33
by H A D G E H O G s
Давай я подключусь к тебе, гляну на кот и вылечу разрыв шаблона у участников этого форума и тебя в частности.
#35
by Дтл
ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 414 Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС; 5 2,487962 7,31 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 415 Остаток.СтоимостьРегл = Остаток.СтоимостьРегл - Расход.СтоимостьРегл; 5 2,577914 7,57 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 416 Остаток.НДСРегл = Остаток.НДСРегл - Расход.НДСРегл; 5 2,606330 7,66
#40
by Дтл
а вот с птичкой типа галочка ))) ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 414 Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС; 1 0,504089 16,37 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 415 Остаток.СтоимостьРегл = Остаток.СтоимостьРегл - Расход.СтоимостьРегл; 1 0,549160 17,84 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 416 Остаток.НДСРегл = Остаток.НДСРегл - Расход.НДСРегл; 1 0,564748 18,34 ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 402 РаспределитьСуммы(СтрокаОстатка, РаспределенныйРасход, КоличествоКРаспределению); 1 2,285134 74,22
#44
by GANR
По логике вещей, если не указать процедуре заполняемые колонки - это будет по сути вложенный цикл по полям того и другого объекта с поиском одноименных. Возможно, не надо переписывать на присвоение, а просто в 3 параметре процедуры ЗаполнитьЗначенияСвойств указать колонки - и все.
#46
by Дтл
ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 402 РаспределитьСуммы(СтрокаОстатка, РаспределенныйРасход, КоличествоКРаспределению); 2 2,940640 28,39 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 416 Остаток.НДСРегл = Остаток.НДСРегл - Расход.НДСРегл; 1 0,664850 6,42 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 414 Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС; 1 0,591796 5,71
#49
by kiruha
Да, я переписывал Зависит от структуры источника/приемника Для 2 таблиц зн-й КолонкиИсточника=ТаблицаДанныхВрем.Колонки; Для Каждого Колонка Из ТаблицаКолонки Цикл далее удаляешь строки которые не подходят, заполняешь вычисляемые столбцы Загрузка в набор или еще куда нужно
#54
by hhhh
всё равно, даже если и ссылка, Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС; выполняется 0,44, объект загружается в память, затем вторая строка Остаток.СтоимостьРегл = Остаток.СтоимостьРегл - Расход.СтоимостьРегл; должна быть 0 секунд. Потому что объект уже в кеше.
#56
by Дтл
закончилось всё тем что вывалилась сессия по ошибке (забыл скопипастить но что-то там с POS ошибкой доступа к серверу) и на январе появилась зелёная галочка, есть подозрение что после расчета себестоимости сервер ушел в глюки которые я и ловил замером
#57
by kiruha
Примерно на 2 порядка быстрее для больших таблиц Но вот для "склейки" 2 таблиц значений методов не нашел
#60
by WildSery
А можно поинтересоваться, в какой задаче потребовалось объединять две ТЗ с большим объёмом данных?
#61
by Дтл
ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 416 Остаток.НДСРегл = Остаток.НДСРегл - Расход.НДСРегл; 2 3,592637 13,50 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 414 Остаток.СтоимостьБезНДС = Остаток.СтоимостьБезНДС - Расход.СтоимостьБезНДС; 1 1,829030 6,87 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 415 Остаток.СтоимостьРегл = Остаток.СтоимостьРегл - Расход.СтоимостьРегл; 1 1,812970 6,81 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 413 Остаток.Стоимость = Остаток.Стоимость - Расход.Стоимость; 1 1,746088 6,56 шоу продолжается... что вот в таком коде можно ещё местами переставить чтобы он заработал? сначала переменным присвоить значения полей а потом вычесть?
#62
by Дтл
ОбщийМодуль.ПартионныйУчетСервер.Модуль 8 430 ЗаписьНабора.ИсходнаяСтоимость = РаспределенныйРасход.Стоимость; 1 0,598319 6,01 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 398 Остаток.Количество = 0; 1 2,119650 21,30 ОбщийМодуль.ПартионныйУчетСервер.Модуль 3 399 Остаток.Стоимость = 0; 1 2,130822 21,41 может у нас учебная версия стоит?
#64
by Дтл
короче после 21 гига я остановил это безумие. кто-то может подсказать куда копать в расчете себестоимости чтобы как-то частями это сделать или принудительно память заставить освобождать если есть утечка? кстати последняя платформа стабильна?
#65
by kiruha
Ищи утечку памяти - циклические ссылки, созднание обработок, активные транзакции , экспортные переменные
#69
by Дтл
см. а "ЗаписьНабора" наверное можно и не смотреть ))) методологически верное предложение но практически такой совет малопригоден )))
#72
by Лефмихалыч
не слушать нытье клюшководов тут или ты что-то недоговариваешь, или проблема в конкретной конфе, конкретном сервере, конкретном чем-то еще, что у тебя там живет.
#73
by КонецЦикла
Какое еще нытье :) Если ты записывал какой-нить "набор записей", то должен быть в теме :)
#75
by КонецЦикла
Он плохо удаляется, плохо записывается и плохо работают отборы :) Я хочу раз в 100 быстрее... и это возможно если сделать работу с БД не через ЖПО (хотя бы не в файловом варианте)
#77
by КонецЦикла
Епать... ОК, будем копать глубже А есть пример для много-много записей, мне нужно проапдейтить тупо одно поле (поставить ложь где была истина)?
#78
by Дтл
а что недоговаривать... пример один приведу только. предшественники когда их попросили развернутое сальдо убрать написали обработку которая вводит корректировку регистров по товарам на складах. учет кое-как (несколько связанных с этим проблем уже решено) вели, а когда себестоимость посчитать понадобилось думали что достаточно кнопку нажать. оказалось нет. и те кто внедрение сопровождал тоже естественно не смогли. я вот теперь сразу все косяки разгребаю. т.е. это не внезапное что-то произошло. это жизнь как говорится )))
#81
by vvp91
> Up Скажи номер версии конфигурации. И, как обычно, обновись до последней вышедшей. В использовании ЗаполнитьЗначенияСвойств и присвоениях в этом коде проблемы нет. Проблемы там в куче других мест, например в множественном применении НайтиСтроки по таблицам значений. Или в том, что таблицы значений там по сотне колонок. Странно, что именно этих проблем ты не заметил, а зациклился на присвоениях.
#83
by vvp91
> я заметил то что показал замер Плохо заметил. Точнее - плохо замерял. Замерять надо от точки входа в модуль - ВыполнитьРегламентноеФормированиеДвиженийПоПартиямТоваров.
#84
by kiruha
Я искал утечки памяти и вполне успешно. Процесс трудоемкий но вполне есть практические методы. а) Поиск незакрытых транзакций В отладчике переодически наблюдаешь состояние функции ТранзакцияАктивна естественно в тех местах где транзакции не должно быть б) Там же наблюдаешь состояние экспортных переменных - количество элементов и вложенные уровни в) Поиск обработки создать и количество их вызовов г) Циклич ссылки самое сложное Отключаешь участки кода и отслеживаешь разрастание памяти Например партионное проведение
#87
by mikeA
судя по тому, что "rphost отожрал больше 11 гигов..." там уже 64 бита. на 32 битах он бы на 3 - 3.5 гигах свалился
#89
by kiruha
А как по простому не подскажешь ? Я искал по - выяснил что ЗапросРезультат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией) вызывал утечку. Не знаю что там нареализовали . Платформа 8.2.18
#91
by Дтл
вообще не удивительно. там сейчас кажется нет такого есть выполнить а потом обход выборок по группировкам
#92
by МихаилМ
kiruha "Но вот для "склейки" 2 таблиц значений методов не нашел" создайте пустую колонку тз с колвом строк равным 1тз+ 2 тз поколоночно перенесите данные первой таблицы удалите пустую колонку отсортируте по непустой колонке, чтобы первая таблица оказалась внизу поколоночно перенесите данные второй таблицы создать пустую колонку быстрей чем через добавить можно используя для построителя запросов область тч с нужным колвом строк
#94
by Steel_Wheel
1) Писать напрямую, в виде Объект[Свойство] = МоеЗначений должно быстрее быть -- никто не знает, как ЗаполнитьЗначенияСвойств отыскивает совпадающие свойства 2) Еще, у метода ЗаполнитьЗначенияСвойств есть параметры, в котором передается список заполняемых/пропускаемых свойств. Попробуй поиграться с ними
#95
by kiruha
Вообщем пока не взлетел каменный цветок. Основная проблема - сформировать ТЗ заданного размера. Например путсую ТЗ на 10 000 строк. Можно конечно к регистру запрос - ВЫБРАТЬ ПЕРВЫЕ 10000 0 КАК Столбец ИЗ ... но так не универсально ( При использовании Добавить или Вставить - на добавление уходит много времени и суммарные выигрыш только 30%
#97
by МихаилМ
я Вас возможно обманул: тк идею проверял в режиме отладки. без режима отладки добавить работает примерно с такой же скоротью. проверялось на 500000 строк
#98
by ASU_Diamond
заменяли ЗаполнитьЗначенияСвойств на непосредственное заполнение в колонки ТЗ. Количество колонок в таблицах было порядка 20, из них 3 числовых. Количество строк в ТЗ порядка 100 к. Прирост получился 30%
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- ЗаполнитьЗначенияСвойств() и построитель отчета
- Можно ли ускорить вывод таблицы на экран?
- Функция ЗаполнитьЗначенияСвойств() для заполнения проводки?
- Как ускорить запрос по регистру?
- Заполнение справочника... Ошибка ЗаполнитьЗначенияСвойств
- Не работает ЗаполнитьЗначенияСвойств из запроса
- Формирование движений по партиям товаров и НДС ускорить можно?
В этой группе 1С
- Перезапуск сеанса в 1С
- БП 3.0 Журнал кассовые документы
- Дерево значений управляемые формы. как скрыть строку ?
- v8: В запросе делаю 2 паралельных запроса - результат выводит в 2 строки в чем ошибка
- Автоматическая ширина колонок в макете
- Получить запись по ключу записи
- Как удобно отобразить содержимое массива?
- v8: как правильно выгрузить платежные поручения из УРМ в БГУ
- v7: Выгрузка данных из 77 в файл XML
- ИнтернетПочта.Послать не посылает, если один из ящиков не существует
- ЗУП 2.5 файлы блокировок в папке с базой, а Активных пользователей нет
- Актуальные данные, отображаемые в таблице на форме. Как сделать эффективно?
- Бухгалтерия+пообъектный учет+кадры и расчет зарплаты 8.2
- COM соединение время выполнение запроса.
- Как выгрузить значение SQL запроса к внешнему источнику?
- ЗУП Как прикрепить плановые начисления к должности.
- Регистр "Расчеты с контрагентами"
- v7: Поиск по штрихкодам в номенклатуре (вручную / сканером)
- Создать копию структуры справочника
- v7: Сохранение прайса со ссылками на сайт в Excel.