Имя: Пароль:
1C
1С v8
выбрать всю номенклатуру по складу у которой не остатков
0 AlexToo
 
19.01.15
09:20
И так спасибо если заглянули в эту тему, вопрос такой, необходимо выбрать всю номенклатуру по складу у которой не остатков, пишу запрос:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
               |    РегПартии.Склад,
               |    РегПартии.Номенклатура,
               |    РегПартии.СерияНоменклатуры,
               |    РегПартии.КоличествоКонечныйОстаток
               |ИЗ
               |    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, &КонПер, Авто, , Склад = &склад) КАК РегПартии
               |ГДЕ
               |    РегПартии.КоличествоКонечныйОстаток <= 0";

Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("конпер", КонецДня(ТекущаяДата()));

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


И такой запрос возвращает мне 0 записей, хотя они должны быть, что делаю не так?
1 Масянька
 
19.01.15
09:22
(0) Встречный тупой вопрос: что хранится в регистре?
2 Сергиус
 
19.01.15
09:22
(0)Делай соединение Справочник.Номенклатура с Остатками, где КоличествоОстаток ЕСТЬ NULL
3 AlexToo
 
19.01.15
09:23
(1) Регистр ПартииТоваровНаСкладах в регистре движения товаров
4 AlexToo
 
19.01.15
09:24
(2) хм, идея ясна, попробую
5 Масянька
 
19.01.15
09:26
(4) Попробуй, попробуй...
6 Сергиус
 
19.01.15
09:26
(0) и да..зря так тему назвал)
7 AlexToo
 
19.01.15
09:27
(5) (2)  не-а тож не работает:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
               |    СерииНоменклатуры.Ссылка,
               |    РегПартии.Склад,
               |    РегПартии.КоличествоКонечныйОстаток,
               |    РегПартии.КоличествоШтКонечныйОстаток
               |ИЗ
               |    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, &КонПер, , , Склад = &склад) КАК РегПартии
               |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
               |        ПО РегПартии.СерияНоменклатуры = СерииНоменклатуры.Ссылка
               |ГДЕ
               |    РегПартии.КоличествоКонечныйОстаток ЕСТЬ NULL ";

Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("конпер", КонецДня(ТекущаяДата()));

Результат = Запрос.Выполнить();
8 AlexToo
 
19.01.15
09:27
(6) зря говоришь? зато сколько народу сразу посмотрело))))
9 Масянька
 
19.01.15
09:28
(7) Внимательно читай (1)... Думай... Долго думай...
10 igork1966
 
19.01.15
09:28
(7) Ты показывешь принципиальное непонимание SQL и принципов работы регистров 1С
11 Сергиус
 
19.01.15
09:28
(7)Остатки по складу лучше вообще из другого регистра дергать. Чего именно ты хочешь получить и для чего?
12 Peltzer
 
19.01.15
09:28
Наоборот соединение делай Справочник, к нему левым соединением регистр
13 igork1966
 
19.01.15
09:29
(10) + начать с изучения SQL и толстой книги.
Тогда не будешь задавать глупые вопросы.
14 palladyi
 
19.01.15
09:32
(12) Или в (7) поменять Левое на Правое
15 vicof
 
19.01.15
09:35
(10) +1
И таблица "остатки и обороты" тут явно лишняя
16 AlexToo
 
19.01.15
09:50
(11) мне нужно получить номенклатуру у которой по определенному складу нет остатков, что б  потом штрихкода очистить по ней.
17 AlexToo
 
19.01.15
09:51
(15) просто остатки лучше?
18 igork1966
 
19.01.15
09:52
(16) что означает "номенклатуру у которой по определенному складу нет остатков"?
Вся номенклатура или по которой есть обороты и нет остатков?
19 Масянька
 
19.01.15
09:53
(17) Когда ты сможешь ответить на вопрос: что хранится в регистре - тогда и поймешь.
20 AlexToo
 
19.01.15
10:05
(18) вся номенклатура
21 igork1966
 
19.01.15
10:11
(20) тогда тебе нужна виртуальная таблица остатков соединенная с номенклатурой. Только в запросе сделай правое соединение или поменяй таблицы местами в соединении, как тебе и сказали.

Но это (13) не отменяет
22 Krabobor
 
19.01.15
10:28
(2) поддерживаю.

ВЫБРАТЬ
    спрНоменклатура.Ссылка,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = спрНоменклатура.Ссылка)
ГДЕ
    НЕ спрНоменклатура.ЭтоГруппа
    И НЕ спрНоменклатура.ПометкаУдаления
    И ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) <= 0
23 an-korot
 
19.01.15
10:33
какой нул если по номенклатуре движений не было, то в регистрее записи не хранятся, просто выбрать список номеклатуры удалить оттуда все по которым есть движения.
тема для начальных курсов программирования исключить из 1 множества другое множество...

ВЫБРАТЬ
    ТаблицаА.ИзмерениеА
ИЗ
    РегистрСведений.ТаблицаА КАК ТаблицаА
ГДЕ
    (НЕ ТаблицаА.ИзмерениеА В
                (ВЫБРАТЬ
                    ТаблицаА.ИзмерениеА
                ИЗ
                    РегистрСведений.ТаблицаА КАК ТаблицаА ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТаблицаВ КАК ТаблицаВ
                        ПО
                            ТаблицаА.ИзмерениеА = ТаблицаВ.ИзмерениеВ))


ссылка на полный текст
http://www.1c-h.ru/?p=917

хватит заголятся.
24 an-korot
 
19.01.15
10:34
* изгалятся
25 Krabobor
 
19.01.15
10:40
(23) упоролся штоле с самого утра?
26 an-korot
 
19.01.15
10:56
(25) ты название темы читал, диагностик ссаный?
27 igork1966
 
19.01.15
10:59
(26) смотри (18),(20)
28 ssh2QQ6
 
19.01.15
11:00
(23) воу-воу
29 busy1
 
19.01.15
11:07
Считаю, что с регистра Партии, выбирать нулевые остатки не корректно.
30 Бледно Золотистый
 
19.01.15
11:08
(26) Кто ссаный это вопрос конечно, разницу между нет остатков и нет движений вообще чуешь?
31 DrZombi
 
гуру
19.01.15
11:13
(29) Скорей всего Пользователю нужно видеть товар, который Участвовал по партиям, но у которых нулевой остаток.

А у ТС, какой-то свой подход :)
32 DrZombi
 
гуру
19.01.15
11:15
(7) Запросом не получить Нулевые остатки "РегистрНакопления", их попросту нет. Да и при формировании Запроса 1С скорей всего отрезает такие данные на уровне запроса, типо "Остаток <> 0" :)
33 an-korot
 
19.01.15
11:26
(30) я больше не буду спорить решайте сами, оставлю пример почему вы думаете неправильно и комерсы вам за такой подход руки оторвут, если делать только по товару с  0 остатками то вы не зацепите новый товар который завели в базу но по которому небыло еще движений и сам товар поступит на склад только через неделю, а продавать его уже нужно, а с вашим запросом такой товар не попадет в запрос. и после этого на вас будут смотреть очень странными мордами... но так тренируйтесь, мне не жалко.
34 Zombi
 
19.01.15
11:30
(33) Ты точно упоролся. Запрос в 22 нормально все выберет. Там условие на NULL. Если движений не было, будет NULL, который преобразуется в 0.
35 an-korot
 
19.01.15
11:39
(34) я не читал запросы, челвек спросил я дал шаблон по которому можно хоть черта лысого слепить, у меня нет желания выдумывать какие то новые опусы, и тем более их обсуждать. челуу нужен был работающий вариант я дал, если ему он не нравится и бог бы с ним. че вы срач тут устраиваете чей вариант лучше я не понимаю.
36 an-korot
 
19.01.15
11:42
(34) мой вариант универсальный его легко можно в любой язык конвертнуть, ваши "естьнул"  не везде найдешь, читается сложнее, работает ? ну и хорошо, теперь автор сможет выбрать что больше нравится... что вы накинулись как бабуины, вот этого не понимаю.
37 Любопытная
 
19.01.15
11:44
(36) Ну и вы в той же стае, ибо ведете себя точно так же - обзываетесь и кичитесь верностью предложенного решения))
38 evorle145
 
19.01.15
11:45
(35) , в (22) как раз и есть самый работающий вариант)
39 Zombi
 
19.01.15
11:50
(35) (36) Сам же на грубость перешел, да еще начал доказывать что твой вариант единственно верный, а на нас будут смотреть со странными мордами.
Закон Брукера: Даже маленькая практика стоит большой теории.