Имя: Пароль:
1C
1С v8
Отбор по предопределенному элементу справочника
,
0 NewbieMe
 
20.02.15
13:37
Хорошего дня, мистяне! Помогите, пожалуйста, с моим изысканием:
Нужно сделать выборку в табличную часть документа всех позиций номенклатуры, у которых введен определенный реквизит (тип Справочник.Ссылка.Бланк). В моем варианте ругается, что переменная КормДляМоржей не определена Как правильно сформулировать запрос? Спасибо!

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Бланк.ИмяПредопределенныхДанных
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ИмяПредопределенныхДанных = &КормДляМоржей";
    
    Запрос.УстановитьПараметр("КормДляМоржей", КормДляМоржей);
    
    РезультатЗапроса = Запрос.Выполнить();
1 zak555
 
20.02.15
13:39
1. а что в переменной КормДляМоржей ?
2. можри какие -- люди или звери ? =)
2 NewbieMe
 
20.02.15
13:40
(1)
моржи, это звери такие симпатичные.
3 fisher
 
20.02.15
13:41
Запрос.УстановитьПараметр("КормДляМоржей", "КормДляМоржей");
4 NewbieMe
 
20.02.15
13:41
(1) В справочнике номенклатуры есть реквизит Бланк, он ссылается на справочник ТипыБланков. В нем есть корм для моржей, корм для морских котиков, корм для дельфинов. Вот я хочу отобрать всю номенклатуру, у которой реквизит заполнен КормДляМоржей.
5 Любопытная
 
20.02.15
13:41
(2) тебе надо выбрать всю номенклатуру, в которой в реквизите Бланк стоит КормДляМоржей?
6 Любопытная
 
20.02.15
13:42
(4)КормДляМоржей - предопределенный?
7 fisher
 
20.02.15
13:42
|ГДЕ
        |    Номенклатура.ИмяПредопределенныхДанных = ""КормДляМоржей"""
8 NewbieMe
 
20.02.15
13:43
(5) (6) Да.
9 NewbieMe
 
20.02.15
13:46
(7) спасибо, попробую.
10 fisher
 
20.02.15
13:47
"ВЫБРАТЬ
|    Номенклатура.Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Бланк = ЗНАЧЕНИЕ(Справочник.Бланк.КормДляМоржей)
11 DrShust
 
20.02.15
13:47
(0)     |ГДЕ
        |    Номенклатура.Бланк = Значение(Справочник.ТипыБланков.КормДляМоржей);
12 DrShust
 
20.02.15
13:47
(10) +
13 Крошка Ру
 
20.02.15
13:48
(7) Ну если он предопределенный, тогда наверное

Запрос.УстановитьПараметр("КормДляМоржей", Справочники.Номенклатура.КормДляМоржей);

или как-то так?

А то ведь, переименуют "КормДляМоржей" на "КормДляЕжей" и всё..
14 NewbieMe
 
20.02.15
13:49
(11), (12), (13), спасибо ребята, пойду пробовать!
15 D_E_S_131
 
20.02.15
13:54
офф
Хорошим моржам - корм, плохим - ... моржевый.
16 fisher
 
20.02.15
13:56
(14) Пробуй сразу (10). Из сабжа я не сразу понял grade of newbie.
17 NewbieMe
 
20.02.15
14:01
(16) Ругается... Ожидается выражение
    Запрос.Текст =<<?>>  (Проверка: Сервер)
{Документ.БланкЗаказаКорма.Форма.ФормаДокумент
18 Любопытная
 
20.02.15
14:02
(17) дык и куда ты его дел?)
19 DrShust
 
20.02.15
14:02
(17) Ну так ты попробуй сначала запрос конструктором запроса открыть...
20 fisher
 
20.02.15
14:03
Вот же ж дернуло меня... Ладно, мы в ответе за тех, кого приручили. Показывай модуль.
21 NewbieMe
 
20.02.15
14:06
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
|    Номенклатура.Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Бланк = ЗНАЧЕНИЕ(Справочник.Бланк.КормДляМоржей);
    
Запрос.УстановитьПараметр("КормДляМоржей", Справочники.Номенклатура.КормДляМоржей);
РезультатЗапроса = Запрос.Выполнить();
Сообщить(РезультатЗапроса.Выгрузить().Количество());


    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

КонецПроцедуры
22 NewbieMe
 
20.02.15
14:08
в цикле будет заполнение табличной части.
23 NewbieMe
 
20.02.15
14:10
(21)

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


    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

КонецПроцедуры
24 vicof
 
20.02.15
14:11
Кавычки забыл
25 NewbieMe
 
20.02.15
14:13
(24)
ой
26 fisher
 
20.02.15
14:14
Забыл всю строчку
"ВЫБРАТЬ
27 NewbieMe
 
20.02.15
14:14
(24) а где?
28 NewbieMe
 
20.02.15
14:14
(26) уже заметил, вставил, спасибо.
29 vicof
 
20.02.15
14:17
(27) там же, где и Выбрать
30 DrShust
 
20.02.15
14:27
(23) Запрос.УстановитьПараметр("КормДляМоржей", Справочники.Номенклатура.КормДляМоржей);
Это теперь ни к чему...
31 DrShust
 
20.02.15
14:28
(23) Ещё раз: запрос открывается Конструктором запроса или ругается?
32 NewbieMe
 
20.02.15
14:31
(30) спасибо.
(31) Сейчас проверю.
33 kosts
 
20.02.15
14:33
Следуя рекомендациям справочники следует называть во множественном числе => Справочник.Бланки
34 NewbieMe
 
20.02.15
14:34
(33)
Спасибо
35 NewbieMe
 
20.02.15
14:34
(31) Не ругается. А можно в целях повышения образованности спросить: почему Запрос.УстановитьПараметр("КормДляМоржей", Справочники.Номенклатура.КормДляМоржей);  перестал быть нужным?
36 kosts
 
20.02.15
14:35
(33) Что-то я тавтологически написал...
37 NewbieMe
 
20.02.15
14:36
(36) совет я взял но вооружение.
38 DrShust
 
20.02.15
14:36
(35) :)) Ну у тебя же теперь нет в запросе &КормДляМоржей.
39 kosts
 
20.02.15
14:36
(35) Это как ключик от двери привязанный к самой двери веревочкой.
40 NewbieMe
 
20.02.15
14:37
(39) и еще раз спасибо!
41 kosts
 
20.02.15
14:37
(39) И даже вставленный в замок и припаянный тогда.
42 DrShust
 
20.02.15
14:39
(35) А в чём тогда трабла в итоге: на что программа ругается или табчасть не заполняется?
43 NewbieMe
 
20.02.15
14:43
(42) Трабла состояла из двух частей. Я для начала пытался простым путем: Сообщить(РезультатЗапроса.Выгрузить().Количество());

Посмотреть, будет ли находить что-либо. С вашей помощью теперь находит. Теперь буду пытаться заполнить этими данными Объект.ТабличнаяЧасть1Номенклатура пытаться заполнить в цикле.
44 DrShust
 
20.02.15
14:46
В запросе пиши: Номенклатура.Ссылка КАК Номенклатура.

Ниже: РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Объект.ТабличнаяЧасть1Номенклатура.Загрузить();
45 DrShust
 
20.02.15
14:47
(44) Если у тебя в ТабличнаяЧасть1Номенклатура есть реквизит Номенклатура, тогда заполнится выборкой. Без циклов.
46 NewbieMe
 
20.02.15
14:48
(45) Спасибо вам большое, ответили на вопрос, созревший моей голове!
47 NewbieMe
 
20.02.15
14:48
(45) про цикл.
48 DrShust
 
20.02.15
14:50
(47) Так и вопросы ещё есть (а то пятница и 10 минут до конца рабочего дня:)))?
49 fisher
 
20.02.15
14:52
(0) В целях повышения образованности рекомендую просмотреть видео-уроки Павла Чистова на ютюбе на его канале. Много всего полезного увидишь, в том числе и практические навыки работы в конфигураторе. Хотя, я подозреваю, ты даже учебник Радченко не читал?
50 NewbieMe
 
20.02.15
14:53
(49) Выборочно. Желтых книг много купил. Включая разработку прикладных решений и сложных отчетов на СКД.
51 kosts
 
20.02.15
14:54
(50) А толку с этих книг... Все примеры типовых и практика решают.
52 NewbieMe
 
20.02.15
14:55
(48) Последний ))) Если без цикла делать, то ошибку выдает Поле объъекта не обнаружено. Объект.ТабличнаяЧасть1Номенклатура.Загрузить(); Хотя имя копирую в конфигураторе из путя к данным: Объект.ТабличнаяЧасть1.Номенклатура
53 fisher
 
20.02.15
14:55
(50) Это зря. Почти все нужные книги входят в последнее издание "Профессиональной разработки".
54 DrShust
 
20.02.15
14:56
Объект.ТабличнаяЧасть1.Загрузить()
55 NewbieMe
 
20.02.15
14:56
(53) вы про это? http://www.vdgb-soft.ru/books/book27/
56 NewbieMe
 
20.02.15
14:57
(54) Недостаточно фактических параметров )))
57 fisher
 
20.02.15
14:58
(55) Ага. Вот православная ссылка: http://v8.1c.ru/metod/books/book.jsp?id=401
58 DrShust
 
20.02.15
14:59
(56) Недописал немного :))
Ниже: РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Объект.ТабличнаяЧасть1Номенклатура.Загрузить(РезультатЗапроса);
59 NewbieMe
 
20.02.15
14:59
(57) спасибо, приму во внимание.
60 DrShust
 
20.02.15
14:59
(58) РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Объект.ТабличнаяЧасть1.Загрузить(РезультатЗапроса);
61 NewbieMe
 
20.02.15
14:59
(58) DrShust, спасибо еще раз от всей души! Хороших вам выходных!
62 DrShust
 
20.02.15
15:00
(61) О, хоть одно хорошее дело сегодня сделал! Ушёл.
63 fisher
 
20.02.15
15:01
Я понимаю что ты новичок. Но хоть чуть-чуть голову включать всё-таки надо :) Хотя бы на уровне "если бы я был компьютером, то для выполнения этого действия мне бы понадобились вот эти данные".
64 NewbieMe
 
20.02.15
15:02
(63) хорошо, спасибо!
65 NewbieMe
 
20.02.15
15:02
(57) книга-таки орудие преступления ;-)
66 NewbieMe
 
20.02.15
15:02
(57) полторы тысячи страниц.
67 ejikbeznojek
 
20.02.15
15:04
Жёлтая пресса))
68 fisher
 
20.02.15
15:07
Физически это два тома сейчас вроде. Но в той части, которая унаследована от первого издания - это один из лучших образчиков методической литературы. Лучше у 1С я не видел. Но если образование непрофильное - может быть тяжеловато для старта.
69 fisher
 
20.02.15
15:10
Только это... Практических навыков проф-разработка никаких не дает. Она дает понимание работы внутренних механизмов.