Имя: Пароль:
1C
1C 7.7
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
Спасибо всем за советы. Такая обработка будет проводиться несколько раз в день.