|
Параметры в запросе | ☑ | ||
---|---|---|---|---|
0
Ira_19
01.02.12
✎
00:47
|
Здравствуйте. Подскажите, пожалуйста, как правильно писать запрос с несколькими параметрами?
Пишу так: 1) Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ВременныйСправочник.Ссылка |ИЗ | Справочник.ВременныйСправочник КАК ВременныйСправочник |ГДЕ | (ВременныйСправочник.Ссылка.Наименование, ВременныйСправочник.Ссылка.ВедомостьТрудоемкости) В | (ВЫБРАТЬ | &Наименование, | &ВедомостьТрудоемкости)"; Запрос.УстановитьПараметр("Наименование", Наименование); Запрос.УстановитьПараметр("ВедомостьТрудоемкости",ВедомостьТрудоемкости); 2) Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Трудоемкость.СпецификацияВспомМатериалов, | Трудоемкость.Номенклатура, | Трудоемкость.ТехнологическаяОперация |ИЗ | РегистрСведений.Трудоемкость КАК Трудоемкость |ГДЕ | Трудоемкость.Регистратор = &Регистратор" | И Трудоемкость.Номенклатура = &Номенклатура; Запрос.УстановитьПараметр("Регистратор", Регистратор) Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Ни один из вариантов не возвращает результата (пишу в 1) случае Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); аналогично во 2) случае нужную колонку). Запросы с одним параметром работают хорошо. |
|||
1
Asmody
01.02.12
✎
00:58
|
Запрос=Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ | ВременныйСправочник.Ссылка |ИЗ | Справочник.ВременныйСправочник КАК ВременныйСправочник |ГДЕ | ВременныйСправочник.Ссылка.Наименование = &Наименование | И ВременныйСправочник.Ссылка.ВедомостьТрудоемкости = &ВедомостьТрудоемкости"; Запрос.УстановитьПараметр("Наименование", Наименование); Запрос.УстановитьПараметр("ВедомостьТрудоемкости",ВедомостьТрудоемкости); осталось понять, что такое Наименование и ВедомостьТрудоемкости и какие у них типы. на втором запросе синтаксическая ошибка вылетит |
|||
2
Ira_19
01.02.12
✎
01:01
|
(1) Это реквизиты справочника, Наименование - стандартный реквизит, ВедомостьТрудоемкости имеет тип ДокументСсылка.
Какая ошибка должна вылететь? Не вылетает, просто результат пустой, как и в первом случае. |
|||
3
Asmody
01.02.12
✎
01:06
|
(2) искать элемент справочника по наименованию — моветон, это раз. если Наименование и ВедомостьТрудоемкости реквизиты справочника ВременныйСправочник, то писать ВременныйСправочник.Ссылка.Наименование в запросе не надо, надо ВременныйСправочник.Наименование (с ВедомостьТрудоемкости также), это два. Тип ДокументСсылка имеет реквизит справочника ВедомостьТрудоемкости или переменная ВедомостьТрудоемкости?(это три)
А в четвёртых, во втором запросе не там стоит закрывающая кавычка. Если это копипаста, то выйдет синтаксическая ошибка. |
|||
4
Ira_19
01.02.12
✎
01:12
|
(3) Насчет поиска по наименованию понимаю, что не хорошо. Просто нужно отобрать элементы справочника не только по наименованию (используя НайтиПоНаименованию), но и по реквизиту ВедомостьТрудоемкости (в справочнике данный реквизит имеет тип ДокументСсылка, передаваемый параметр имеет такой же тип).
Насчет кавычки - это не копипаст (точнее исправленный вручную копипаст, кавычка не в том месте осталась). |
|||
5
Ira_19
01.02.12
✎
01:19
|
Этот запрос всё равно не работает, хотя записи, удовлетворяющие условиям поиска есть в справочнике.
Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ВременныйСправочник.Ссылка, | ВременныйСправочник.Наименование |ИЗ | Справочник.ВременныйСправочник КАК ВременныйСправочник |ГДЕ | ВременныйСправочник.ВедомостьТрудоемкости = &ВедомостьТрудоемкости | И ВременныйСправочник.Наименование = &Наименование"; Запрос.УстановитьПараметр("Наименование", Наименование); Запрос.УстановитьПараметр("ВедомостьТрудоемкости",ВедомостьТрудоемкости); |
|||
6
Asmody
01.02.12
✎
01:20
|
попробуй заменить на
ВременныйСправочник.Наименование ПОДОБНО &Наименование и Запрос.УстановитьПараметр("Наименование", Наименование+"%") |
|||
7
Ira_19
01.02.12
✎
01:27
|
На строке
Запрос.УстановитьПараметр("Наименование", Наименование+"%"); происходит выход (!) из функции и переход к событию ПриАктивацииСтроки (Заполнение справочника идёт по ходу заполнения табличной части документа, в документе используется событие ПриАктивацииСтроки. Вообще какое-то странное событие, часто срабатывает, когда не ждёшь). |
|||
8
Asmody
01.02.12
✎
01:30
|
(7) нормально оно срабатывает. А вот это [Заполнение справочника идёт по ходу заполнения табличной части документа, в документе используется событие ПриАктивацииСтроки] — это кто рассказал так делать?!
|
|||
9
Asmody
01.02.12
✎
01:34
|
для понимания рекомендую закомментировать весь код в обработчике события, оставить только Сообщить("ПриАктивацииСтроки"), а потом просто "побегать" по табличному полю. И посмотреть результат.
{это всё к параметрам запроса вообще не имеет никакого отношения} |
|||
10
Ira_19
01.02.12
✎
01:35
|
никто не сказал, сама придумала. У меня временный справочник, из него данные удаляются при проводке документа, используется просто для временного хранения данных перед записью в регистр.
|
|||
11
GROOVY
01.02.12
✎
01:35
|
(10) Вы понимаете что сейчас полную ерунду говорите?!
|
|||
12
Asmody
01.02.12
✎
01:39
|
(11) тщщ, не груби. Просто девушка не на тех язфках программировать училась
|
|||
13
GROOVY
01.02.12
✎
01:40
|
Ок, я просто в шоке был, не сдержался.
|
|||
14
Ira_19
01.02.12
✎
01:41
|
Может, и ерунда, но по-другому не знаю, как сделать в моем случае.
Далее к теме не имеетотношения: В документе есть 2 табличные части. При активации строки в одной из них, хочу, чтобы отображалась соответствующая информация в другой табличной части. Потом всё нужно записать в регистр. Для этого сделала временный справочник (можно было сделать что-то вроде массива, но справочником удобнее показалось). И так далее... А что такого? |
|||
15
Asmody
01.02.12
✎
01:43
|
(10) за изобретательность - 5, за идею - 2.
Нужно делать всё не так. Чтобы понять, как делать правильно, нужна задача, хотя бы кратко |
|||
16
Asmody
01.02.12
✎
01:49
|
(14) есть простое правило: в БД должно быть только то, что там должно быть. В 1С достаточно механизмов, чтобы не соваться лишний раз в БД.
То, что тебе нужно, делается другими путями, например, через отборы. |
|||
17
Ira_19
01.02.12
✎
01:52
|
Задача.
Нужно составить спецификацию, по которой мастер будет узнавать нужную информацию. Есть Номенклатура, состоящая из различных частей. Нужно описать, какие будут использоваться части (реквизит Ведомость норм расхода номенклатуры на номенклатуру), а также спецификации, по которым будут списываться материалы, указываться нормы времени и т.д.). Всё это - на рисунке http://imglink.ru/show-image.php?id=8e96f68af2557eaddac2879d03bc64d8 |
|||
18
Ira_19
01.02.12
✎
02:04
|
Через отборы не представляю, как сделать в данном случае.
У меня, ещё раз повторю, при активации строки первой ТЧ, выводится информация во второй ТЧ (если это создание документа, то выводятся только первые 2 поля, третье заполняется вручную). Когда я активирую другую строку в первой ТЧ, то данные во второй изменятся => предыдущее значение потеряется. Как в этом случае запомнить то, что было введено? (если моя придумка плоха) |
|||
19
Ira_19
01.02.12
✎
02:22
|
(9) сделала, работает, как я и понимала (срабатывает только при активации строки в первой ТЧ, для чего и описано это событие), если в запросе написать
|ГДЕ | ВременныйСправочник.Наименование = &Наименование и Запрос.УстановитьПараметр("Наименование", Наименование); а если через ПОДОБНО, как в (6), то срабатывает также при окончании заполнения второй ТЧ (вот это не понятно). |
|||
20
Asmody
01.02.12
✎
09:18
|
(17) еще и формы управляемые... случай тяжелый, но поправимый. Позже доберусь до стационарного компа, разберемся, как сделать правильно
|
|||
21
Ira_19
01.02.12
✎
11:36
|
(20) хорошо, спасибо. Я вечером доберусь до компа (с инетом).
|
|||
22
Ira_19
01.02.12
✎
20:20
|
(20) Asmody, я готова решать проблему))
|
|||
23
Asmody
01.02.12
✎
20:32
|
(22) давай начинать "от печки": какая у тебя структура данных и чего ты хочешь от неё добиться, т.е. какая должна быть логика
|
|||
24
Asmody
01.02.12
✎
20:35
|
Второй вопрос: как всё это должно выглядеть со стороны пользователя
|
|||
25
Ira_19
01.02.12
✎
20:44
|
(23) этот документ начался создаваться для того, чтобы можно было построить отчёт, в который попадут только актуальные на данный момент данные, т.к. существует множество спецификаций отходов, норм времени для производства номенклатуры, спецификаций списания вспомогательных материалов и ведомостей, в которых указана "вложенность" номенклатуры (на рис. видно, что некоторая деталь состоит из других деталей. Это и есть "вложенность"), то нужно знать, по какой из них работать.
|
|||
26
Ira_19
01.02.12
✎
20:46
|
(24) как это будет выглядеть со стороны пользователя, думаю, не сильно важно. Главное, чтобы можно было указать всё, что я перечислила и чтобы это было всё-таки удобно для использования. Думаю, мой вариант документа вполне подходит, разве не так?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |