|
Каким методом выбрать нужное из выборки запроса. | ☑ | ||
---|---|---|---|---|
0
kyrgyz
05.11.12
✎
11:22
|
Запросом вытаскиваю предварительно штрихкода.
ЗапросШК = Новый Запрос; ЗапросШК.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | Штрихкоды.Владелец, | Штрихкоды.ЕдиницаИзмерения КАК ЕдиницаИзмеренияШК, | Штрихкоды.ТипШтрихкода, | Штрихкоды.Штрихкод |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды | ПО РеализацияТоваровУслугТовары.Номенклатура = Штрихкоды.Владелец | И РеализацияТоваровУслугТовары.ЕдиницаИзмерения = Штрихкоды.ЕдиницаИзмерения |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &СсылкаНаОбъект"; ЗапросШК.УстановитьПараметр("СсылкаНаОбъект", СсылкаНаОбъект); Результат = ЗапросШК.Выполнить(); ВыборкаДетальныеЗаписиШК = Результат.Выбрать(); Нужно ниже в цикле по номенклтуре вытыщит из запроса нужный штрих код как???? |
|||
1
Преднаименование
05.11.12
✎
11:23
|
найтиследующий
|
|||
2
Wobland
05.11.12
✎
11:24
|
ГДЕ Штрихкоды.Штрихкод=
не подходит? |
|||
3
kyrgyz
05.11.12
✎
11:32
|
(2) Печатаю накладную при печати надо вытащить штрихкод товара. Но У одного товара могут буть несколько штихкодов.
|
|||
4
Wobland
05.11.12
✎
11:33
|
(3) ага
|
|||
5
Wobland
05.11.12
✎
11:34
|
я б итоги сделал да обходил бы себе дерево спокойно..
|
|||
6
SachoZ
05.11.12
✎
11:35
|
(0) а как ты определяешь какой ШК "нужный"?
|
|||
7
kyrgyz
05.11.12
✎
11:36
|
(5) Обход ведь не оптимален.
|
|||
8
kyrgyz
05.11.12
✎
11:37
|
(6) В РС штрихкоды есть единица измерения в документе расх накладная тоже...
|
|||
9
kyrgyz
05.11.12
✎
11:38
|
Вот так не рабтает
Для каждого ТекСтрока Из ЗапросТовары Цикл ТекСтрока.Представление = ПреобразоватьНоменклатуру(ТекСтрока.Номенклатура); Попытка СтуктураПоиска = Новый Структура("Владелец"); СтуктураПоиска.Владелец = ТекСтрока.Номенклатура; Если ВыборкаДетальныеЗаписиШК.НайтиСледующий(СтуктураПоиска) Тогда ТекСтрока.Штрихкод = ВыборкаДетальныеЗаписиШК.Штрихкод; Иначе ТекСтрока.Штрихкод = "0000000000000"; КонецЕсли; //ТекСтрока.Штрихкод = ПолучитьШтрихКод(ТекСтрока.Номенклатура,ТекСтрока.ЕдиницаИзмеренияНаименование).Штрихкод; Исключение ТекСтрока.Штрихкод = "0000000000000"; КонецПопытки; ТекСтрока.КолПозиции = 1; КонецЦикла; |
|||
10
Wobland
05.11.12
✎
11:39
|
я против того, чтобы искать в цикле. ведь для этого боги дали нам запросы
|
|||
11
SachoZ
05.11.12
✎
11:39
|
(8) И что дальше? На одну ед. изм. только один шк?
|
|||
12
kyrgyz
05.11.12
✎
11:40
|
(11) Ну конечно же Или я ошибаюсь?
|
|||
13
BuHu
05.11.12
✎
11:41
|
(9) лучше в запросе по товарам сразу получить ШК, но если так не хочется править тот запрос , то результат своего выгружай в ТЗ и потом через найтистроки()
|
|||
14
kyrgyz
05.11.12
✎
11:42
|
(11) У меня Предварительно для печати есть некий большой запрос. Но для поиска ШК предыдыущий прогер ссылался на процедуру где каждый раз делала запрос.
Я хоть пытаюсь сделать один запрос и сохраняя ее в оперативе искать при обходе ТЧ. |
|||
15
SachoZ
05.11.12
✎
11:43
|
(12) так а в чем тогда вопрос?
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды | ПО РеализацияТоваровУслугТовары.Номенклатура = Штрихкоды.Владелец | И РеализацияТоваровУслугТовары.ЕдиницаИзмерения = Штрихкоды.ЕдиницаИзмерения Даст тебе только те записи из двух регистров где: Номенклатура = Штрихкоды.Владелец И ЕдиницаИзмерения = Штрихкоды.ЕдиницаИзмерения |
|||
16
SachoZ
05.11.12
✎
11:46
|
(14) При большой ТЧ имхо будет оптимальней даже мелкими запросами + может быть мелкие запросы именно и сделаны для оптимизации, не всякий может правильно составить большой запрос который будет оптимальней чем несколько мелких.
|
|||
17
Wobland
05.11.12
✎
11:49
|
(14) ух ты! незаполненность ЛК налицо?
|
|||
18
kyrgyz
05.11.12
✎
12:00
|
(16) Запросом вытащил но при обходе строк для вывода другим циклом не нахожу их
|
|||
19
SachoZ
05.11.12
✎
12:02
|
(18) телепаты в отпуске, код покажи.
|
|||
20
kyrgyz
05.11.12
✎
12:04
|
(16) Предыдцщий сообщение было для (15)
В доке в среднем по 70 строк ипредыдущий кодер делал столько раз запрос. А я хоть пытаюсь это все в один зарос засунуть. Запрос отбирает но при проходе по строке печати не могуи из запроса выудить нужное значение. |
|||
21
kyrgyz
05.11.12
✎
12:05
|
(19) Выше два кусочка кода этого разве не достаточно?
|
|||
22
zladenuw
05.11.12
✎
12:09
|
(20) да хоть 100500, правильный запрос. и ты получишь нужный ШК. тебе на печать нужно получить последний ШК или какой ?
|
|||
23
kyrgyz
05.11.12
✎
12:16
|
(22) Чуть-чуть предыстории.
У Т П, у всех товаров заненсены были штирхкода по штучным товарам. Заказчик попросил загрузить штрихкода по коробокам. Я их удачно загрузил. В итоге в регистре сведений по каждому товару появились дополнительные штрихкода с единицой измерения коробка. Но я не знал что предыдущий спец не учел что ШК могут быть нескольок у одного и того же товара и была у него функция Функция ПолучитьШтрихКод(Владелец) Экспорт Запрос = Новый Запрос(" |ВЫБРАТЬ ПЕРВЫЕ 1 | РегШтрихкоды.ТипШтрихкода, | РегШтрихкоды.Штрихкод, |ИЗ | РегистрСведений.Штрихкоды КАК РегШтрихкоды |ГДЕ | РегШтрихкоды.Владелец = &Владелец и |"); Запрос.УстановитьПараметр("Владелец" , Владелец); Выборка = Запрос.Выполнить().Выгрузить(); Если Выборка.Количество() > 0 Тогда ПолученныйШтрихкод = Выборка[0]; Иначе ПолученныйШтрихкод = Неопределено; КонецЕсли; Возврат ПолученныйШтрихкод; КонецФункции // ПолучитьШтрихКод() И ссылался к нему прямо в цикле. Ладно пусть в цикле. Но после ввода новых штрихкодов документ вытаскивает первый встречный ШК Вот я и хочу это дело подправить, внести филтр еще по ЕД имз.... |
|||
24
zladenuw
05.11.12
✎
12:17
|
(23) а добавить условие на ед в этом запросе ? была не судьба ?
|
|||
25
SachoZ
05.11.12
✎
12:18
|
В (0) результат запроса вернет нужный тебе шк:
ВыборкаДетальныеЗаписиШК.Штрихкод |
|||
26
kyrgyz
05.11.12
✎
12:21
|
(25) Так это все вытаскивает проблема в том что при песати не могу из запроса вытащить.
|
|||
27
kyrgyz
05.11.12
✎
12:21
|
тупо перебор работает :)
Для каждого ТекСтрока Из ЗапросТовары Цикл ТекСтрока.Представление = ПреобразоватьНоменклатуру(ТекСтрока.Номенклатура); ТекСтрока.Штрихкод = "0000000000000"; Попытка //СтуктураПоиска = Новый Структура("Владелец"); //СтуктураПоиска.Владелец = ТекСтрока.Номенклатура; //Если ВыборкаДетальныеЗаписиШК.НайтиСледующий(СтуктураПоиска) Тогда // ТекСтрока.Штрихкод = ВыборкаДетальныеЗаписиШК.Штрихкод; //Иначе // ТекСтрока.Штрихкод = "0000000000000"; //КонецЕсли; //ТекСтрока.Штрихкод = ПолучитьШтрихКод(ТекСтрока.Номенклатура).Штрихкод; Пока ВыборкаДетальныеЗаписиШК.Следующий() цикл Если ТекСтрока.Номенклатура = ВыборкаДетальныеЗаписиШК.Владелец Тогда ТекСтрока.Штрихкод = ВыборкаДетальныеЗаписиШК.Штрихкод; прервать КонецЕсли; КонецЦикла; Исключение ТекСтрока.Штрихкод = "0000000000000"; КонецПопытки; ТекСтрока.КолПозиции = 1; КонецЦикла; |
|||
28
zladenuw
05.11.12
✎
12:22
|
покажи запрос товары свой. а хотя не показывай. вот там сделай соединение с РС ШК с условием владелец и ед. и будет тебе счастье
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |