Имя: Пароль:
1C
1С v8
Параметр запроса Ссылка на справочник
0 Uchenica74
 
05.04.13
10:59
Добрый день! Подскажите пожалуйста как правильно передать параметр в запрос:
Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
                   |    ФизическиеЛица.Ссылка,
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид
                   |ИЗ
                   |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                   |        ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка
                   |ГДЕ
                   |    ФизическиеЛица.Ссылка В (&Ссылка)";
   Запрос.УстановитьПараметр("Ссылка",Справочники.ФизическиеЛица.НайтиПоНаименованию("Наименование"));
   Результат = Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
       Если Результат.ДокументВид = ""
           Тогда Сообщить ("В справочнике для сотрудника " + Результат.ФизЛицо + " не заполнено поле Удостоверение");
       КонецЕсли;
   КонецЦикла;
1 Wobland
 
05.04.13
10:59
а так и передавай
2 Uchenica74
 
05.04.13
11:00
не находит, результат запроса пустой
3 Wobland
 
05.04.13
11:00
(2) всё правильно сделала, молодец
4 Wobland
 
05.04.13
11:01
впрочем, тут бы правое соединение...
5 ObjectRelation Model
 
05.04.13
11:01
1. таблицы поменять местами
2. проверка на NULL паспортнвх данных
3. зачем В, если проверка на равенство?
4. Зачем ищите по наименованию то? у кого Наименование="Наименование"?
6 cw014
 
05.04.13
11:01
НайтиПоНаименованию("Наименование")

Вы уверенны, что у вас есть Физлицо с наименованием - "Наименование"?
7 Uchenica74
 
05.04.13
11:02
сейчас проверю этот момент с наименованием
8 Godofsin
 
05.04.13
11:02
Стоп, конфа какая? теряете хватку, Уважаемые =)
9 cw014
 
05.04.13
11:02
(8) А тут уже не важно
10 Uchenica74
 
05.04.13
11:02
8.1
11 cw014
 
05.04.13
11:03
(10) +100500 :))))))
12 salvator
 
05.04.13
11:04
(0) Искользуй НайтиПоНаименованию только в КРАЙНИХ случаях
13 Wobland
 
05.04.13
11:04
(8) хватку мы теряем в другом
(10) без фото не взлетит
14 Godofsin
 
05.04.13
11:04
(9) Это должно быть принципиально =)
15 Uchenica74
 
05.04.13
11:05
хорошо, тогда как мне параметр то правильно передать, если использовать НайтиПоНаименованию - использовать в крайних случаях
16 Wobland
 
05.04.13
11:05
(15) можно попросить юзера его ввести
17 cw014
 
05.04.13
11:06
Выведи поле на форму с типом СправочникСсылка.ФизическиеЛица и подставляй его
18 salvator
 
05.04.13
11:06
(15) Используй ссылку на элемент.
19 Godofsin
 
05.04.13
11:06
(15) наилучший вариант - передай через поле на форме. В запросе "В" замени на "=". Если конечно не в группе ищешь
20 Uchenica74
 
05.04.13
11:07
"В" замени на "=" - это уже сделала
21 Михаил 1С
 
05.04.13
11:08
(0) Даша, а зачем ты так сложно делаешь?
Прямо в запросе условие по Наименованию:

Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
                   |    ФизическиеЛица.Ссылка,
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид
                   |ИЗ
                   |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                   |        ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка
                   |ГДЕ
                   |    ФизическиеЛица.Ссылка В (&Ссылка)";
   Запрос.УстановитьПараметр("Наименование","Сидоров"));
   Результат = Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
       Если Результат.ДокументВид = ""
           Тогда Сообщить ("В справочнике для сотрудника " + Результат.ФизЛицо + " не заполнено поле Удостоверение");
       КонецЕсли;
   КонецЦикла;
22 Михаил 1С
 
05.04.13
11:08
Извини, поторопился.
23 Михаил 1С
 
05.04.13
11:09
Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
                   |    ФизическиеЛица.Ссылка,
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид
                   |ИЗ
                   |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                   |        ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка
                   |ГДЕ
                   |    ФизическиеЛица.Наименование = &Наименование";
   Запрос.УстановитьПараметр("Наименование","Сидоров"));
24 ObjectRelation Model
 
05.04.13
11:09
Даша, фоту!
25 Михаил 1С
 
05.04.13
11:10
Или сделай

|    ФизическиеЛица.Наименование Подобно &Наименование";
   Запрос.УстановитьПараметр("Наименование","Сидоров&"));
26 Uchenica74
 
05.04.13
11:10
сейчас попробую
27 Михаил 1С
 
05.04.13
11:10
Опять ошибся, надо процент поставить:

Запрос.УстановитьПараметр("Наименование","Сидоров%"));
28 cw014
 
05.04.13
11:11
(23)(25) Вообщето можно вот так сделать, причем смысл будет тот же:
Запрос.Текст = "ВЫБРАТЬ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
                   |    ФизическиеЛица.Ссылка,
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид
                   |ИЗ
                   |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних

                   |ГДЕ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Наименование ПОДОБНО &Наименование";
29 salvator
 
05.04.13
11:11
(23) Тогда уж без параметра вообще
|ГДЕ
                   |    ФизическиеЛица.Наименование = "Горбачев"
30 cw014
 
05.04.13
11:11
Упс
31 cw014
 
05.04.13
11:11
Запрос.Текст = "ВЫБРАТЬ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид
                   |ИЗ
                   |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних

                   |ГДЕ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Наименование ПОДОБНО &Наименование";
32 cw014
 
05.04.13
11:11
Вот так от вот
33 cw014
 
05.04.13
11:12
(26) Человек прав, без фото не взлетит
34 Uchenica74
 
05.04.13
11:12
странно, поле Наименование пустое, что то не так делаю значит
35 cw014
 
05.04.13
11:12
(34) Может потому что оно не заполнено?
36 Uchenica74
 
05.04.13
11:14
не, не, все правильно, не туда смотрела
37 Михаил 1С
 
05.04.13
11:14
(34) Эх, Даша, с красивой фотографией было бы гораздо приятнее, а то я вот - уже два раза ошибался. Хотя, и то приятно, что девушке помог, с вами приятнее.
38 Михаил 1С
 
05.04.13
11:15
(37) Красавица!
39 rutony
 
05.04.13
11:15
Ну теперь все сразу взлетит :D
40 salvator
 
05.04.13
11:15
(36) Элемент-то есть с таким наименованием?
41 Uchenica74
 
05.04.13
11:15
))))
42 salvator
 
05.04.13
11:16
+(40) ЛЕВОЕ на ПРАВОЕ соединение поменяла?
43 cw014
 
05.04.13
11:16
(41) Землячка... И где то я тебя уже видел
44 Uchenica74
 
05.04.13
11:18
блин, не меняет соединение((
45 Uchenica74
 
05.04.13
11:18
надо разобраться со всеми советами)))
46 salvator
 
05.04.13
11:19
(44) Что значит "не меняет"?
47 Uchenica74
 
05.04.13
11:21
с чем может быть связано: в результате запроса "ошибка чтения значения"?
48 Uchenica74
 
05.04.13
11:22
наверно с тем что снова не правильно передаю параметр((
49 salvator
 
05.04.13
11:23
Давай код сюда еще раз, исправленный.
50 rutony
 
05.04.13
11:24
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ФизическиеЛица.Ссылка КАК ФизЛицо,
|    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид
|ИЗ
|    Справочник.ФизическиеЛица КАК ФизическиеЛица
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
|        ПО (ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка)
|ГДЕ
|    ФизическиеЛица.Наименование ПОДОБНО &Наименование"
Запрос.УстановитьПараметр("Наименование","%Сидоров%"));
ЗапросВыполнить = Запрос.Выполнить();
Если Не ЗапросВыполнить.Пустой() Тогда
   Результат = ЗапросВыполнить.Выбрать();
   Пока Результат.Следующий() Цикл
       Если Не ЗначениеЗаполнено(Результат.ДокументВид) Тогда
           Сообщить("В справочнике для сотрудника " + Результат.ФизЛицо + " не заполнено поле Удостоверение");
       КонецЕсли;
   КонецЦикла;
КонецЕсли;
51 Uchenica74
 
05.04.13
11:25
Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
                 |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
                 |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
                 |    ФизическиеЛица.Наименование
                 |ИЗ
                 |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
                 |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                 |        ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Наименование
                 |ГДЕ
                 |    ФизическиеЛица.Наименование = &Наименование";
   Запрос.УстановитьПараметр("Наименование",Справочники.ФизическиеЛица.Наименование);
   Результат = Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
       Если Результат.ДокументВид = ""
           Тогда Сообщить ("В справочнике для сотрудника " + Результат.ФизЛицо + " не заполнено поле Удостоверение");
       КонецЕсли;
   КонецЦикла;
52 Галахад
 
гуру
05.04.13
11:29
Фотка пропала, вот и не получается.
53 salvator
 
05.04.13
11:29
(51) исправь
|ГДЕ
                 |    ФизическиеЛица.Наименование = "Иванов""
и убери УстановитьПараметр
ну и "Иванов" замени на нужную фамилию
54 Uchenica74
 
05.04.13
11:29
"Фотка пропала, вот и не получается." не может быть такого
55 salvator
 
05.04.13
11:29
сорри,  |ГДЕ
                 |    ФизическиеЛица.Наименование = ""Иванов""";
56 salvator
 
05.04.13
11:30
Ты поле "Наименование" пытаешься сравнивать со ссылкой, вот и не получается.
57 Uchenica74
 
05.04.13
11:31
это понятно, но суть в том что,  документ о приеме на работу не должен проводиться, если у сотрудника не заполнены паспотрные данные, поэтому я не могу сразу задавать параметр "иванов"
58 cw014
 
05.04.13
11:32
(57) А что ты пытаешься вообще найти?
59 Godofsin
 
05.04.13
11:34
(57) Ну так передавай ссылку из приемаНаРаботу! там же проверка идет
60 Uchenica74
 
05.04.13
11:34
теперь у меня вообще вопрос зачем я спрачоник соединяю с регистром
61 Uchenica74
 
05.04.13
11:35
справочник*
62 salvator
 
05.04.13
11:36
Вот держи


СсылкаНаФизЛицо = // определи тут проверяемого физика

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
             |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
             |    ЕСТЬNULL(ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,"""") КАК ДокументВид,
             |    ФизическиеЛица.Ссылка
             |ИЗ
             |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
             |        ПРАВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
             |        ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Наименование
             |ГДЕ
             |    ФизическиеЛица.Ссылка = &ФизЛицо";
Запрос.УстановитьПараметр("ФизЛицо",СсылкаНаФизЛицо);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
   Если Результат.ДокументВид = "" Тогда
       Сообщить ("В справочнике для сотрудника " + Результат.ФизЛицо + " не заполнено поле Удостоверение");
   КонецЕсли;
КонецЦикла;
63 Галахад
 
гуру
05.04.13
11:37
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид
|ИЗ
|    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
|ГДЕ
|    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";


Запрос.УстановитьПараметр("ФизЛицо",Справочники.ФизическиеЛица.НайтиПоНаименованию("Наименование"));
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Нету документов!!!
КонецЕсли;
64 Uchenica74
 
05.04.13
11:40
все поняла
65 Uchenica74
 
05.04.13
11:41
моя ошибка в том что  не было переменной с Физ лицом, сделала "СсылкаНаФизЛицо = // определи тут проверяемого физика" - все получилось, спасибо большое
66 rutony
 
05.04.13
11:44
Выборка = РегистрыСведений.ПаспортныеДанныеФизЛиц.Выбрать(,,Новый Структура("ФизЛицо", Справочники.ФизическиеЛица.НайтиПоНаименованию("Боброва Вера Владимировна")));
   Если Выборка.Следующий() = Ложь Тогда
       Сообщить("Нету ничего");
   КонецЕсли;
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn