Неоптимальная работа УстановитьНомерОрдера() в ПКО конфы УТП?
☑
0
DeZol
23.09.11
✎
16:39
Столкнулся со следующим интересным алгоритмом работы этой процедуры в ПКО.
Зачем такие "развраты" при вычислении НомерОрдера, если реквизит числовой. Кто-то может объяснить?
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| НомерОрдера КАК НомерОрдера
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|
|ГДЕ
| ПриходныйКассовыйОрдер.Организация = &Организация
| //самого себя не учитываем
| И ПриходныйКассовыйОрдер.Ссылка <> &Ссылка
| И ПриходныйКассовыйОрдер.СчетКасса = &СчетКасса
| И ПриходныйКассовыйОрдер.ВалютаДокумента = &ВалютаДокумента
|";
Если ЕстьАналитикаПоОбособленнымПодразделениям Тогда
ТекстЗапроса = ТекстЗапроса + "
| И ПриходныйКассовыйОрдер.Касса.ОбособленноеПодразделение = &ОбособленноеПодразделение";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
| И ПриходныйКассовыйОрдер.Дата >= &ДатаНачалаГода
| И ПриходныйКассовыйОрдер.Дата <= &ДатаКонцаГода";
Запрос.Текст = ТекстЗапроса;
СписокОрдеров = Запрос.Выполнить().Выбрать();
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Номер");
ТаблицаЗначений.Колонки.Добавить("Длина");
Пока СписокОрдеров.Следующий() Цикл
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Номер = СписокОрдеров.НомерОрдера;
НоваяСтрока.Длина = СтрДлина(СписокОрдеров.НомерОрдера);
КонецЦикла;
ТаблицаЗначений.Сортировать("Длина Убыв, Номер Убыв");
Если ТаблицаЗначений.Количество() > 0 Тогда
Попытка
НомерОрдера = Формат(Число(ТаблицаЗначений[0].Номер) + 1, "ЧГ=0");
Исключение
НомерОрдера = 1;
КонецПопытки;
Иначе
НомерОрдера = 1;
КонецЕсли;
1
rutony
23.09.11
✎
16:45
(0) Слишком много условий, разрезы Подразделения, Организации, да еще и в пределах года... Впринципе, ничего не оптимального, разве что сортировка...
2
DeZol
23.09.11
✎
16:49
Я про то, что можно было просто получить МАКСИМУМ(НомерОрдера) и все дела. Зачем сортировать по длине номера? В чем смысл?
3
shuhard
23.09.11
✎
16:52
(2) префиксы
4
DeZol
23.09.11
✎
17:00
(3) В НомерОрдера префиксы не включаются!
5
pumbaEO
23.09.11
✎
17:50
Такое впечатление, что этот код для строкового типа НомерОрдера ...
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший