Имя: Пароль:
1C
1С v8
1C8.1 Поиск Элемента в справочнике по 2 значениям
0 leftmails
 
06.09.12
10:26
Друзья! приветсвую...

Пожалуйста подскажите, а можно ли осуществить поиск по справочнику по  двум условиям?

Ищу по наименованиею, а хотелось бы добавтьб еще и по "Версия"

Данные = Справочники.Инт_Процессы.Выбрать();
   Данные =Справочники.Инт_Процессы.НайтиПоНаименованию(СтрПоиска);


Пожалуйста подскажите как найти по 2 параметрам?
1 ZanderZ
 
06.09.12
10:27
запросом
2 Smit1C
 
06.09.12
10:27
(0) запросом можешь искать хоть по 5 условиям
3 orefkov
 
06.09.12
10:28
(0) семерочник чтоле?
4 Skylark
 
06.09.12
10:39
"Иваааан!!! Семерошник штоле!?..."
:-)
5 leftmails
 
06.09.12
10:45
Не получается у меня что то запросом

{Справочник.Тест.Форма.Форма(98)}: Ошибка при вызове метода контекста (Выполнить): {(5, 1)}: Синтаксическая ошибка "ПО"
<<?>>ПО запросик.Наименование = Наименование
Запрос.Выполнить().Выбрать().Следующий();
по причине:
{(5, 1)}: Синтаксическая ошибка "ПО"
<<?>>ПО запросик.Наименование = Наименование



Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
|Инт_Процессы.Наименование,
|Инт_Процессы.Версия
|ИЗ Справочники.Инт_Процессы КАК  запросик
|ПО запросик.Наименование = Наименование";
Запрос.Выполнить().Выбрать().Следующий();
6 Maxus43
 
06.09.12
10:48
открой для себя конструктор запросов.
(3) однозначно)
7 leftmails
 
06.09.12
10:50
(6) , (3) Новичек))
8 leftmails
 
06.09.12
10:54
А как сделать конструктор запросов.. ?
9 Повелитель
 
06.09.12
10:59
Правой кнопкой по пустому месту - "Конструктор запросов"
10 leftmails
 
06.09.12
11:00
Да нашел , пасиб.. ща делаю:)
11 Maxus43
 
06.09.12
11:03
лучше шаблоны - прочее - запрос с параметром
12 leftmails
 
06.09.12
11:10
Сформировал

   Запрос.Текст = "ВЫБРАТЬ
   |    Инт_Процессы.Наименование,
   |    Инт_Процессы.Версия
   |ИЗ
   |    Справочник.Инт_Процессы КАК Инт_Процессы
   |ГДЕ
   |    Инт_Процессы.Версия = &Версия
   |    И Инт_Процессы.Наименование = &Наименование";
   
Запрос.Выполнить().Выбрать().Следующий()

Ругается

{Справочник.Тест.Форма.Форма(105)}: Ошибка при вызове метода контекста (Выполнить): {(7, 24)}: Не задано значение параметра "Версия"
Инт_Процессы.Версия = <<?>>&Версия
Запрос.Выполнить().Выбрать().Следующий();  
по причине:
{(7, 24)}: Не задано значение параметра "Версия"
Инт_Процессы.Версия = <<?>>&Версия
13 Maxus43
 
06.09.12
11:14
(12) как 1с догадается что такое &Версия и &Наименование? подумай просто
14 thezos
 
06.09.12
11:15
Запрос.УстановитьПараметр()
15 orefkov
 
06.09.12
11:15
"Не хватает маны для выполнения запроса"
Ищи, ищи, квест почти пройден.
16 leftmails
 
06.09.12
11:17
Я стваил

Инт_Процессы.Версия = 1
И Инт_Процессы.Наименование = 'письма'";

Ругается на письма, типа не найден
17 BICO
 
06.09.12
11:24
(15) ))


попробуй

Запрос.Текст = "ВЫБРАТЬ
   |    Инт_Процессы.Наименование,
   |    Инт_Процессы.Версия
   |ИЗ
   |    Справочник.Инт_Процессы КАК Инт_Процессы
   |ГДЕ
   |    Инт_Процессы.Версия = &Версия
   |    И Инт_Процессы.Наименование = &Наименование";
   
Запрос.УстановитьПараметр("Версия",ПеременнаяВерсия);
Запрос.УстановитьПараметр("Наименование",ПеременнаяНаименование);
18 leftmails
 
06.09.12
11:25
Сделал:

Запрос = Новый Запрос;
  Версия=1;
  Наименование="тест файла";
Запрос.УстановитьПараметр("письмо","письмо");

   Запрос.Текст = "ВЫБРАТЬ
   |    Инт_Процессы.Наименование,
   |    Инт_Процессы.Версия
   |ИЗ
   |    Справочник.Инт_Процессы КАК Инт_Процессы
   |ГДЕ
   |    Инт_Процессы.Версия = 1
   |    И Инт_Процессы.Наименование = &письмо";
   
Запрос.Выполнить().Выбрать().Следующий();  


Ниче не происходит, как воспользоваться условиеми
19 BICO
 
06.09.12
11:26
уже скоро будет происходить
20 leftmails
 
06.09.12
11:27
(17), (19) Ни в моем запросе не в вашем нет ошибок...
Как теперь воспользоваться поиском?
ну есть или нет..
Делаю Сообщить(запрос);
Пишет запрос
21 BICO
 
06.09.12
11:36
текст всей процедуры можно увидеть ??
22 Maxus43
 
06.09.12
11:37
(21) не стоит... там ужас
23 Serg_1960
 
06.09.12
11:37
(15) заигрался? в WoW? :)

(18) "Запрос.Выполнить().Выбрать().Следующий();" - так нельзя писать. Можно:

Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий(); // если, например, запрос возвращает только одну запись.
Пока Выборка.Следующий() Цикл // если запрос возвращает одну или несколько записей
  ...
КонецЦикла;
24 BICO
 
06.09.12
11:38
ну я видел этот ужас раньше .. сам начинал после 7.7, пока все в голове сложилось ..
25 BICO
 
06.09.12
11:39
(23) вот как пишет мы не видим, мб там все оформленно красиво.
26 leftmails
 
06.09.12
11:45
Вот я  без запроса на 1 параметр так:
Данные =Справочники.Инт_Процессы.НайтиПоНаименованию(СтрПоиска);
Сообщить(Данные.Ссылка);

 А здесь даже не знаю как получить данные
27 BICO
 
06.09.12
11:51
(26) ну вот и чудненько и распрекрасненько.
28 palpetrovich
 
06.09.12
11:52
(26) см (23) должно помочь, если Инт_Процессы.Версия - тип число конечно
29 leftmails
 
06.09.12
11:52
(27) А как получить после Запрос.Выполнить()?
30 BICO
 
06.09.12
11:53
(29) текст весь покажи.
31 leftmails
 
06.09.12
11:55
Запрос = Новый Запрос;

ПеременнаяВерсия="1";
ПеременнаяНаименование="тест файла";

Запрос.Текст = "ВЫБРАТЬ
   |    Инт_Процессы.Наименование,
   |    Инт_Процессы.Версия
   |ИЗ
   |    Справочник.Инт_Процессы КАК Инт_Процессы
   |ГДЕ
   |    Инт_Процессы.Версия = &Версия
   |    И Инт_Процессы.Наименование = &Наименование";
   
Запрос.УстановитьПараметр("Версия",ПеременнаяВерсия);
Запрос.УстановитьПараметр("Наименование",ПеременнаяНаименование);    
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();

 Надо вывести данные найденного, ссылку и т.д.
32 BICO
 
06.09.12
11:58
1) Выборка = Запрос.Выполнить().Выбрать();

замени на

ТЗ = Запрос.Выполнить().Выгрузить();

в ТЗ будет таблица значений, там уже разберешься.

1) если через выборку делать, то по именам обращайся

Пока Выборка.Следующий() Цикл

Перем1 = Выборка.Наименование;

КонецЦикла;
33 BICO
 
06.09.12
12:01
и в запросе ты не получаешь ссылку, т.е. по твоему запросу ответом будет таблица из "Наименование" и "версия" с типом данных строка.
34 BICO
 
06.09.12
12:09
Процедура ВывестиЧтото()

Запрос = Новый Запрос;

ПеременнаяВерсия="1";
ПеременнаяНаименование="тест файла";

Запрос.Текст = "ВЫБРАТЬ
   |    Инт_Процессы.Наименование,
   |    Инт_Процессы.Ссылка КАК Ссылка,
   |    Инт_Процессы.Версия КАК Версия
   |ИЗ
   |    Справочник.Инт_Процессы КАК Инт_Процессы
   |ГДЕ
   |    Инт_Процессы.Версия = &Версия
   |    И Инт_Процессы.Наименование = &Наименование";
   
Запрос.УстановитьПараметр("Версия",ПеременнаяВерсия);
Запрос.УстановитьПараметр("Наименование",ПеременнаяНаименование);    
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество()>0 Тогда
   Для Каждого СтрТЗ ИЗ ТЗ Цикл
        Сообщить("Наименование: "+СтрТЗ.Наименование+", версия: "+СтрТЗ.Версия);
   КонецЦикла;
КонецЕсли;
35 BICO
 
06.09.12
12:13
Сообщить("Наименование: "+СтрТЗ.Наименование+", версия: "+СтрТЗ.Версия);

можно было сделать как

Сообщить("Наименование: "+СтрТЗ.Ссылка.Наименование+", версия: "+СтрТЗ.Ссылка.Версия);

ведь в СтрТЗ.Ссылка находится ссылка на объект БД, но т.к. мы получили эти данные в запросе, выводим их из результата (ТЗ).
36 leftmails
 
06.09.12
12:14
Спасибо, но  странно, ни чего не выводит.. пусто..
37 BICO
 
06.09.12
12:15
потому как ты задал неверные отборы ..
38 BICO
 
06.09.12
12:15
ПеременнаяВерсия="1";
ПеременнаяНаименование="тест файла";

уверен что в справочнике они без лишних пробелов ??
39 BICO
 
06.09.12
12:17
ПеременнаяВерсия="1";
в справочнике например "00001"
40 del123
 
06.09.12
12:21
BICO разошелся))
41 BICO
 
06.09.12
12:22
да учетка давно(полоска длинная), а ничего не пишу, а тут вопрос, думаю справлюсь, не по космическим кораблям
42 leftmails
 
06.09.12
12:22
Да не, я же делал так:

СтрПоиска = "тест файла";  
Данные =Справочники.Инт_Процессы.НайтиПоНаименованию(СтрПоиска);
Сообщить(Данные.Ссылка);

Решил вывести Количество перед условием, но получил ошибку

Сообщить(Строка(ТЗ.Количество));
Если ТЗ.Количество()>0..

{Справочник.Тест.Форма.Форма(110)}: Поле объекта не обнаружено (Количество)
Сообщить(Строка(ТЗ.Количество));

 Ничего не понимаю:)
43 BICO
 
06.09.12
12:25
может ..
Сообщить(Строка(ТЗ.Количество()));
после Количество () ??
44 BICO
 
06.09.12
12:27
пока каша в голове, но думаю утрамбуется со временем.
45 leftmails
 
06.09.12
12:31
А ну да, возвращает 0:(
Попробую по одному...
Действительно по наименованию ищет... буду думать что с версией..
Хотя версию возвращает 0, 1
46 BICO
 
06.09.12
12:32
ПеременнаяВерсия="1";
замени на
ПеременнаяВерсия=1;
47 leftmails
 
06.09.12
12:32
Сделал ПеременнаяВерсия=1;
И все норм стало:)

Огромное спасибо всем! Особенно BICO:_)
48 leftmails
 
06.09.12
12:33
(46) ага:)
49 BICO
 
06.09.12
12:33
до 100 не догнал ..
50 leftmails
 
06.09.12
13:03
:) пойду в другую тему, по изменению реквизитов формы, меняет, но при сохранении  нет..