![]() |
![]() |
![]() |
|
v7: Поиск элемента справочника по нескольким реквизитам | ☑ | ||
---|---|---|---|---|
0
bonusik
11.07.16
✎
03:04
|
Здравствуйте!
Помогите пожалуйста. До этого сталкивался только с 1С 8.2, там аналогичные задачи решал. На днях залез в базу 7.7. Никак не могу разобраться. Задача такая. Есть справочник Серии. Как можно выполнить поиск по справочнику сразу по двум Реквизитам? Наименование и цена? Желательно так, чтобы можно было передавать параметры в запрос при помощи переменных. Заранее спасибо. |
|||
1
impulse9
11.07.16
✎
03:15
|
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Серии.Ссылка Из Справочник.Серии Где Серии.Реквизит1 = &реквизит1 И Серии.Реквизит2 = &реквизит2"; Запрос.УстановитьПараметр("Реквизит1", Рекизит1); Запрос.УстановитьПараметр("Реквизит2", Рекизит2); ТЗ = Запрос.Выполнить().Вырузить(); Получаешь ТЗ с выбранными сериями. По идее правильнее было бы получать выборку из результата запроса, но так как ты новичок, разберись вначале с ТЗ |
|||
2
impulse9
11.07.16
✎
03:16
|
Лучше будет, если ты почитаешь про запросы 1С.
|
|||
3
impulse9
11.07.16
✎
03:18
|
Я ступил ))) Утро ранее.
|
|||
4
SleepyHead
гуру
11.07.16
✎
05:39
|
Ты будешь смеяться, но в 1с77 поиск в справочнике часто быстрее делать перебором, чем запросом. Хотя можно сделать и запросом.
Я когда программировал в 1с77, делал так - включал сортировку по одному из реквизитов (различных значений которого минимальное количество), в твоем случае это серии. Потом организовывал выборку справочника по значению этого реквизита, работало очень быстро. Если еще надо было сравнить с наименованием, в цикле дополнительное условие на наименовние. Язык 1с77 намного беднее, чем 1с8, приходлось вот так извращаться, но работало очень быстро! Вот пример такого поиска: Найден = ПолучитьПустоеЗначение("Справочник.Серии"); Спр = СоздатьОбъект("Справочник.Серии"); Спр.ВыбратьЭлементыПоРеквизиту("Реквизит1", Реквизит1, 0,0); Пока Спр.ПолучитьЭлемент()=1 Цикл Если ВРег(СокрЛП(Спр.Наименование))=НужноеНаименование Тогда Найден = Спр.ТекущийЭлемент(); Прервать КонецЕсли; КонецЦикла; |
|||
5
mehfk
11.07.16
✎
06:09
|
(0) 1c++ в помощь.
|
|||
6
Это_mike
11.07.16
✎
06:46
|
(3) тем не менее, совет (2) вполне в тему.
(4) речь пока не о скорости (5)из пушки по воробьям. |
|||
7
mehfk
11.07.16
✎
07:21
|
(6) >> из пушки по воробьям.
из погреба виднее. |
|||
8
SleepyHead
гуру
11.07.16
✎
07:38
|
(6) Ну и что, что не о скорости? Рано или поздно автор к этому придет, когда попытается раз сто найти серию запросом языка 1с77.
|
|||
9
Это_mike
11.07.16
✎
08:11
|
(8) тогда (5).
|
|||
10
ADirks
11.07.16
✎
08:35
|
Поддержу (5). Лучше с 1С++ разобраться, чем с мозговыносящим языком семёрошных запросов.
помнится, когда я с этим делом столкнулся, уже более-менее SQL знал - и такой дичью семёрошные запросы казались... |
|||
11
Это_mike
11.07.16
✎
08:38
|
(10) для разовой задачи?
|
|||
12
Bigbro
11.07.16
✎
08:45
|
для разовой решение в (4) идеально.
|
|||
13
Это_mike
11.07.16
✎
08:46
|
(12) для разовой - тупо запросом, и все. никаких проблем (кроме возможной периодики)
|
|||
14
bonusik
11.07.16
✎
10:02
|
Спасибо всем за советы. Такая обработка будет проводиться несколько раз в день.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |