Погода: -12°C
  • Есть функция. В обработчике
    Как ее оптимизировать?

    // ВыбПоставщика - список значений.

    Функция ПроверкаТранзита(Товар,КолТовараТранзита)

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

    Quod principi placuit, legis habet vigorem

  • сам уже придумал
    не в доке количество брать а в регистре. цикла не будет.
    может еще как?

    Quod principi placuit, legis habet vigorem

  • 1. Вместо цикла по списку значений использовать функцию Принадлежит() - для этого переделать состав списка вместо справочников - СокрЛП(наименованиями)
    2. Не совсем понятен смысл Таблицы ТаблЗн - но возможно это какая то глобальность используемая в других процедурах.

  • А запрос к регистру забабахать слабо?

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

Записей на странице:

Перейти в форум

Модератор: