|
отбор результата запроса | ☑ | ||
---|---|---|---|---|
0
88g88
12.10.18
✎
11:04
|
Приветствую форумчане!
В базе УПП был создан запрос выполняющийся достаточно долго для включения его в цикл. Результат запроса выгружается в ексель. Но не просто выгружается, а находит значение кода номенклатуры в ексель после чего ищет строку в результате запроса и вставляет результаты значений запроса в определенные столбцы ексель. Проблема возникла в том что порядок сортировки ексель отличается от базы 1с. И может меняться когда угодно и как угодно по настроению заказчика. Соответственно в результате запроса надо искать каждую строку отдельно. пробовал так... РезультатЗароса.Сбросить(); Пока РезультатЗароса.Следующий() цикл//РезультатЗароса.НайтиСледующий(Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0")) = Истина цикл Если РезультатЗароса.код = Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0") тогда лист.Cells(Ячейка,5).Value = РезультатЗароса.КолВоНаСклдахНачалоПериода; лист.Cells(Ячейка,6).Value = РезультатЗароса.КолВоНаПроизводствеНачалоПериода; лист.Cells(Ячейка,10).Value = РезультатЗароса.КоличествоПриход; лист.Cells(Ячейка,11).Value = РезультатЗароса.СреднийРасходТриМесяца; лист.Cells(Ячейка,12).Value = РезультатЗароса.ПоПланупПродаж; лист.Cells(Ячейка,14).Value = РезультатЗароса.РасходНаПроизводство; лист.Cells(Ячейка,19).Value = РезультатЗароса.ТекущийОстатокНаСкладахХранения; лист.Cells(Ячейка,20).Value = РезультатЗароса.ТекущийОстатокНаОстальныхСкладах; колво = Колво + 1; Прервать; КонецЕсли; КонецЦикла; Но это долго. пробовал вариант "найти следующий" (строка с коментом //) но не всегда в результате соответствия показывает истину не смотря на соответствие полей. с чем причина не понятно в отладчики и поля одинаковые и тип одинаковый но выдает "лож". может в форматной строке не то что-то. В общем, находит запрос 400 значений а выгружается по итогу 256 строк. остальные пролетают по несоответствию. Вопроса 2 по сути. 1) как быстро обработать результат запроса с поиском (Есть ли другие варианты) 2) что не так с строкой форматной может быть Значение получаемое в строке - код номенклатуры, 11 знаков, тип строка. Соответствует результату запроса. |
|||
1
Buster007
12.10.18
✎
11:06
|
выгрузи в тз, проиндексируй колонку
|
|||
2
88g88
12.10.18
✎
11:08
|
(1) после искать в ТЗ?
|
|||
3
88g88
12.10.18
✎
11:09
|
И там таблица и там. вроде.
Может я не прав конечно и запарился окончательно. |
|||
4
Buster007
12.10.18
✎
11:13
|
(3) "проиндексируй колонку"
|
|||
5
88g88
12.10.18
✎
11:13
|
Вот более быстрый вариант.
но несоответствие полей срезает. хотя и при простом обходе срезает тоже. РезультатЗароса.Сбросить(); Пока РезультатЗароса.НайтиСледующий(Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0")) = Истина цикл лист.Cells(Ячейка,5).Value = РезультатЗароса.КолВоНаСклдахНачалоПериода; лист.Cells(Ячейка,6).Value = РезультатЗароса.КолВоНаПроизводствеНачалоПериода; лист.Cells(Ячейка,10).Value = РезультатЗароса.КоличествоПриход; лист.Cells(Ячейка,11).Value = РезультатЗароса.СреднийРасходТриМесяца; лист.Cells(Ячейка,12).Value = РезультатЗароса.ПоПланупПродаж; лист.Cells(Ячейка,14).Value = РезультатЗароса.РасходНаПроизводство; лист.Cells(Ячейка,19).Value = РезультатЗароса.ТекущийОстатокНаСкладахХранения; лист.Cells(Ячейка,20).Value = РезультатЗароса.ТекущийОстатокНаОстальныхСкладах; колво = Колво + 1; КонецЦикла; |
|||
6
catena
12.10.18
✎
11:17
|
(5)Выгрузи в таблицу результат запроса, проиндексируй по полю поиска и делай поиск в таблице. Вместо постоянного перебора всего результата.
По несоответствию, хоть покажи значения, которые не находит. Только не из екселя, а из отладчика значения полей Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0") и РезультатЗароса.код |
|||
7
88g88
12.10.18
✎
11:22
|
(6)
Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0") "00000050592" Строка РезультатЗароса.НайтиСледующий(Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0")) Ложь Булево РезультатЗароса.код "00000050592" Строка |
|||
8
88g88
12.10.18
✎
11:24
|
(5) В этом примере обход результата с поиском. Обходит очень быстро. но соответствие не всегда срабатывает. (В обоих вариантах)
|
|||
9
88g88
12.10.18
✎
11:26
|
При копии результата запроса в ексель проходит 100 % найденных строк и заполняет все.
может тонкости в екселе какие то... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |