Функция НомерПиктограммы() сплошной тормоз

Новая тема
"Бухгалтерия 7.7
Заметно притормаживает функция НомерПиктограммы()на выборе подчиненных документов (передвижение по Журналу Платежные Документы)

Функция НомерПиктограммы()
Перем НомПикт;
Если ТекущийДокумент.Выбран() = 1 Тогда
 НомПикт = 2;
 ДатаВыписки = """";
 ПодчДок = СоздатьОбъект("Документ");
 Если ПодчДок.ВыбратьПодчиненныеДокументы(ТекущийДокумент.ДатаДок,ТекущийДокумент.ДатаДок+15,ТекущийДокумент) = 1 Тогда
  Пока ПодчДок.ПолучитьДокумент() = 1 Цикл
   Если ПодчДок.Вид() = "Выписка" Тогда
    НомПикт = 1;
    ДатаВыписки = ПодчДок.ДатаДок;
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;
Иначе
 НомПикт = 0;
КонецЕсли;
Возврат НомПикт;
КонецФункции // НомерПиктограммы()

Что можно предпринять? Точнее на что направить усилия и где покопаться? На саму машинку и ее возможности? сервер? или все-таки 1с?"
Ну а что делать? Алгоритм в таком виде придумала 1С. Что можно сказать, глядя на него? Во первых, авторы заставили компьютер выделять память под переменную НомПикт, а так же ПодчДок при каждом вызове функции. Если бы этот кусок делал я, то сделал бы эти переменные действующими в рамках модуля формы журнала документов. С точки зрения "красивости" программирования это некорректно, так как остальным процедурам и функциям модуля они не нужны, но с точки зрения оптимизации быстродействия это нормальный прием и я выбрал бы его. Кстати, в VB есть такое понятие области видимости переменной, как Static, очень напрашивается к применению в данном случае, к сожалению, в 1С такое не реализовано (и в v8 тоже). Тут все переменные либо Private, либо Public.
Ну, и несомненно, основной тормоз в алгоритме - ПодчДок.ВыбратьПодчиненныеДокументы(...). Он нужен для того, чтобы по тем платежкам, на основании которых сделана выписка появлялся значок об этом свидетельствующий... Тут уж малой кровью ничего не поделаешь, наверное. Опять же... С точки зрения оптимизации быстродействия работы программы в ущерб "красивости" применяемых программных приемов я бы сделал так: в Платежном поручении сделал бы 2 скрытых реквизита шапки: ЕстьВыписки, ДатаПоследнейВыписки. Учитывая то, что платежное поручение - док, который никак не влияет на бух. итоги, легко можно реализовать при проведении выписки перезапись этих реквизитов в платежных поручениях, ссылки на которые имеет выписка. А в этой функции расчета нужной пиктограммы не мучать базу, а воспользоваться уже готовыми вычисленными значениями, которые хранятся в платежке. Соответственно, при отмене проведения выписок нужен алгоритм, который будет пересчитывать эти же значения в платежках. Но это все переделки базы! Если вы допускаете возможность этих изменений и для вас потом не составит труда обновлять конфигурацию, меняйте, делайте. Если же вы согласны пользоваться только типовой конфигурацией, ищите выход в обновлении оборудования, наверное.
Огромное СПАСИБО!!!
Читают тему
(гостей: 1)

Быстрый переход