Вход | Регистрация

1С:Предприятие ::

Метки: 

Запрос работает не так, как я ожидал

Я
   Treaq
 
03.07.18 - 21:50
Приветствую. Суть: изучаю азы 1С, в частности сейчас запросы. Создал недобазу со справочником "Номенклатура", документами "Расходная/ПриходнаяНакладная" и регистром накопления "МатериалыНаСкладе". Идея такова: приходная накладная при проведении кидает в регистр единицу номенклатуры ("Молоток", 1 штука). Когда проводится РасходнаяНакладная, то с помощью запроса проверяется остаток в регистре номенклатуры и проводится или же не проводится, если остатка нет. Запрос написан в модуле документа, вызов идёт из формы. Сама проблема: запрос ничего не возвращает и проблема в условии, но не могу понять почему. Если подставить в правую часть условия параметр и присвоить ему что-то из формы - всё работает, но такой вариант, по-моему, не хорош, ибо нужно передать огромное количество параметров с формы. В руководстве разработчика не нашёл(или плохо искал), а в инете подобного не нашёл. Понимаю, что ошибка то у меня. Хэлп :с

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

     КонецЦикла;
КонецПроцедуры
 
  Рекламное место пустует
   jsmith82
 
1 - 03.07.18 - 22:07
Бугага
   jsmith82
 
2 - 03.07.18 - 22:15
Запрос = Новый Запрос();
Запрос.Текст = 
"ВЫБРАТЬ
|    РасходнаяНакладнаяСостав.Наименование КАК Номенклатура,
|    РасходнаяНакладнаяСостав.Количество КАК Количество
|ПОМЕСТИТЬ ВтСостав
|ИЗ
|    Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав
|ГДЕ
|    РасходнаяНакладнаяСостав.Ссылка = &Ссылка
| ;
|ВЫБРАТЬ
|    ВтСостав.Номенклатура КАК Номенклатура,
|    НоменклатураНаСкладеОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
|    ВтСостав КАК ВтСостав
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НоменклатураНаСкладе.Остатки КАК НоменклатураНаСкладеОстатки
|ПО ВтСостав.Номенклатура = НоменклатураНаСкладеОстатки.Номенклатура
|ГДЕ
|ЕСТЬNULL(НоменклатураНаСкладеОстатки.КоличествоОстаток, 0) - ВтСостав.Количество < 0";
   jsmith82
 
3 - 03.07.18 - 22:16
в ВЫБРАТЬ тоже ЕСТЬNULL(НоменклатураНаСкладеОстатки.КоличествоОстаток, 0)
   jsmith82
 
4 - 03.07.18 - 22:18
Вообще я не понял, что там у тебя происходит и откуда, но если предположить, что в момент запроса документ записан, то расклад будет такой
   jsmith82
 
5 - 03.07.18 - 22:19
Про кошерные способы проведения и контроля, предположим, ты не в курсе.
   Chameleon1980
 
6 - 04.07.18 - 05:08
проведение, а потом (затем) проверка (утверждение для (0), вопрос с иронией для (3) )
   Chameleon1980
 
7 - 04.07.18 - 05:09
тьфу - для (3) читать как для (5)
   VladZ
 
8 - 04.07.18 - 05:24
(0) Почитай букварь. Ты написал бред.
   SleepyHead
 
9 - 04.07.18 - 06:26
В дополнение к (8), букварь тут

http://v8.1c.ru/metod/books/book.jsp?id=436
   Treaq
 
10 - 04.07.18 - 09:43
(2) В условии, которое для ВТ, всё равно параметр. А без параматера никак? Я думал сделать, чтобы перед проведением, проверялся остаток всех позиций в табличной части документа
 
  Рекламное место пустует
   SleepyHead
 
11 - 04.07.18 - 09:53
(10) Когда запрос станет телепатом, ты станешь не нужен.
   Treaq
 
12 - 04.07.18 - 10:04
(11) Так я же указываю ему, чтобы он взял данные из ТЧ и сравнил их с регистром
   Мыш
 
13 - 04.07.18 - 10:06
(12) Ты источники данных перечислил через запятую. Это неправильно. Почитай про соединения в запросе.
   catena
 
14 - 04.07.18 - 10:07
(12)Если ты думаешь, что в базе для каждого документа отдельная таблица для его ТЧ, ты жестоко ошибаешься. Это одна таблица для всех документов этого вида, в каждой строке которого есть привязка к документу, которому она принадлежит.
   Остап Сулейманович
 
15 - 04.07.18 - 10:08
(0) Вот здесь : http://1c.chistov.pro/2010/06/1-82.html есть все.
   catena
 
16 - 04.07.18 - 10:08
+(14)Поэтому, если ты пишешь "Выбрать * из Документ.Док.ТЧ" - он выберет все данные этой таблицы, т.е. все ТЧ всех документов ДОК.


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует