|
Запрос работает не так, как я ожидал | ☑ | ||
---|---|---|---|---|
0
Treaq
03.07.18
✎
21:50
|
Приветствую. Суть: изучаю азы 1С, в частности сейчас запросы. Создал недобазу со справочником "Номенклатура", документами "Расходная/ПриходнаяНакладная" и регистром накопления "МатериалыНаСкладе". Идея такова: приходная накладная при проведении кидает в регистр единицу номенклатуры ("Молоток", 1 штука). Когда проводится РасходнаяНакладная, то с помощью запроса проверяется остаток в регистре номенклатуры и проводится или же не проводится, если остатка нет. Запрос написан в модуле документа, вызов идёт из формы. Сама проблема: запрос ничего не возвращает и проблема в условии, но не могу понять почему. Если подставить в правую часть условия параметр и присвоить ему что-то из формы - всё работает, но такой вариант, по-моему, не хорош, ибо нужно передать огромное количество параметров с формы. В руководстве разработчика не нашёл(или плохо искал), а в инете подобного не нашёл. Понимаю, что ошибка то у меня. Хэлп :с
Процедура ПроверкаКоличества() Экспорт ЗапросНаОстатки = Новый Запрос(); ЗапросНаОстатки.Текст = "ВЫБРАТЬ |НоменклатураНаСкладеОстатки.КоличествоОстаток, |РасходнаяНакладнаяСостав.Наименование.Ссылка |ИЗ |РегистрНакопления.НоменклатураНаСкладе.Остатки КАК НоменклатураНаСкладеОстатки, |Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав |ГДЕ |НоменклатураНаСкладеОстатки.Номенклатура.Ссылка = |РасходнаяНакладнаяСостав.Наименование.Ссылка"; РезультатЗапроса = ЗапросНаОстатки.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // КонецЦикла; КонецПроцедуры |
|||
1
jsmith82
03.07.18
✎
22:07
|
Бугага
|
|||
2
jsmith82
03.07.18
✎
22:15
|
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСостав.Наименование КАК Номенклатура, | РасходнаяНакладнаяСостав.Количество КАК Количество |ПОМЕСТИТЬ ВтСостав |ИЗ | Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав |ГДЕ | РасходнаяНакладнаяСостав.Ссылка = &Ссылка | ; |ВЫБРАТЬ | ВтСостав.Номенклатура КАК Номенклатура, | НоменклатураНаСкладеОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | ВтСостав КАК ВтСостав |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НоменклатураНаСкладе.Остатки КАК НоменклатураНаСкладеОстатки |ПО ВтСостав.Номенклатура = НоменклатураНаСкладеОстатки.Номенклатура |ГДЕ |ЕСТЬNULL(НоменклатураНаСкладеОстатки.КоличествоОстаток, 0) - ВтСостав.Количество < 0"; |
|||
3
jsmith82
03.07.18
✎
22:16
|
в ВЫБРАТЬ тоже ЕСТЬNULL(НоменклатураНаСкладеОстатки.КоличествоОстаток, 0)
|
|||
4
jsmith82
03.07.18
✎
22:18
|
Вообще я не понял, что там у тебя происходит и откуда, но если предположить, что в момент запроса документ записан, то расклад будет такой
|
|||
5
jsmith82
03.07.18
✎
22:19
|
Про кошерные способы проведения и контроля, предположим, ты не в курсе.
|
|||
6
Chameleon1980
04.07.18
✎
05:08
|
проведение, а потом (затем) проверка (утверждение для (0), вопрос с иронией для (3) )
|
|||
7
Chameleon1980
04.07.18
✎
05:09
|
тьфу - для (3) читать как для (5)
|
|||
8
VladZ
04.07.18
✎
05:24
|
(0) Почитай букварь. Ты написал бред.
|
|||
9
SleepyHead
гуру
04.07.18
✎
06:26
|
||||
10
Treaq
04.07.18
✎
09:43
|
(2) В условии, которое для ВТ, всё равно параметр. А без параматера никак? Я думал сделать, чтобы перед проведением, проверялся остаток всех позиций в табличной части документа
|
|||
11
SleepyHead
гуру
04.07.18
✎
09:53
|
(10) Когда запрос станет телепатом, ты станешь не нужен.
|
|||
12
Treaq
04.07.18
✎
10:04
|
(11) Так я же указываю ему, чтобы он взял данные из ТЧ и сравнил их с регистром
|
|||
13
Мыш
04.07.18
✎
10:06
|
(12) Ты источники данных перечислил через запятую. Это неправильно. Почитай про соединения в запросе.
|
|||
14
catena
04.07.18
✎
10:07
|
(12)Если ты думаешь, что в базе для каждого документа отдельная таблица для его ТЧ, ты жестоко ошибаешься. Это одна таблица для всех документов этого вида, в каждой строке которого есть привязка к документу, которому она принадлежит.
|
|||
15
Остап Сулейманович
04.07.18
✎
10:08
|
(0) Вот здесь : http://1c.chistov.pro/2010/06/1-82.html есть все.
|
|||
16
catena
04.07.18
✎
10:08
|
+(14)Поэтому, если ты пишешь "Выбрать * из Документ.Док.ТЧ" - он выберет все данные этой таблицы, т.е. все ТЧ всех документов ДОК.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |