Прошу помочь с запросом. Необходимо выводить в табличное поле остатки номенклатуры, остаток которой меньше-равно 1. Сформировал запрос, прописал в запросе
ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
а выводятся записи только с остатком 1 и минусовые - номенклатура с остатком ноль - не выводится. А меня как-раз больше всего интересует номенклатура с отстатком ноль. Подскажите что в запросе не так? Спасибо.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
//Запрос.УстановитьПараметр("КоличествоОстаток", ЭтотОбъект.ОстатокМеньше);
Результат = Запрос.Выполнить();
ЭтотОбъект.Товары.Загрузить(Результат.Выгрузить());
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1
|ВЫБРАТЬ| СпрНоменклатура.Ссылка КАК Номенклатура,| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток|ИЗ| Справочник.Номенклатура КАК СпрНоменклатура| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки| ПО (ТоварыНаСкладахОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура.Ссылка)|ГДЕ| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) = 0
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1
Ну надо ж хотя бы смотреть на те буковки, которые вам показывают. Опечатка там. Надо так:
|ВЫБРАТЬ| СпрНоменклатура.Ссылка КАК Номенклатура,| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток|ИЗ| Справочник.Номенклатура КАК СпрНоменклатура| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки| ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)|ГДЕ| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) = 0
Ну надо ж хотя бы смотреть на те буковки, которые вам показывают. Опечатка там. Надо так:
|ВЫБРАТЬ| СпрНоменклатура.Ссылка КАК Номенклатура,| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток|ИЗ| Справочник.Номенклатура КАК СпрНоменклатура| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки| ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)|ГДЕ| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) = 0
Дело не в буковках. И данный запрос не дает нужный результат, выводит 8300 элементов номеклатуры, поле остаток - пустое. Хотя по запросу все как-бы правильно. Буду пробовать дальше, результат сообщу.
Если открыть регистр накопления ТоварыНаСкладах, то там нет записей с количеством 0. Т.е. впечетление что при реализации 1 шт. товара остаток которго 1 шт., он тупо удаляется из регистра, а не меняется его ресурс Количество как по логике должно быть.
Хотя нет, это я туплю, в регистре накопления остаток рассчитывается разицой между записями приход и расход.
Почему из регистра накопления ТоварыНаСкладах не выводятся записи с количеством 0. Левое соединение и т.д. это уже лишнее, тем более что у меня к примеру 2 склада, на одном из них небыло и 5 части всей номенклатуры. Тут правильней выводить только то что поступало и продавалось из конкретного склада, эта инфа в регистре накопления ТоварыНаСкладах, а он ..... не выводит номенклатуру с нулевым остатком...
И данный запрос не дает нужный результат, выводит 8300 элементов номеклатуры, поле остаток - пустое. Пустое - это 0, если что. Короче, я пойду отсюда, т.к. вижу, что разговор как-то не клеится.
Тут правильней выводить только то что поступало и продавалось из конкретного склада, эта инфа в регистре накопления ТоварыНаСкладах, а он ..... не выводит номенклатуру с нулевым остатком...
Склад неделю назад создался. Оприходованно около 2500 товаров. Как может быть 8300? Зачем мне весь справочник номенклатура в запросе?
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1
Цитата(Fabri @ 29.03.13, 14:51)
Зачем мне весь справочник номенклатура в запросе?
А зачем писать
Цитата(Fabri @ 29.03.13, 12:38)
Необходимо выводить в табличное поле остатки номенклатуры, остаток которой меньше-равно 1.
и
Цитата(Fabri @ 29.03.13, 12:38)
меня как-раз больше всего интересует номенклатура с отстатком ноль
? Покажите из этих 8300 позиций хоть одну, остаток по которой больше 0. А то что к 10 посту мы находимся на пол пути к разгадке задания - так лично мне уже не интересно телепатировать.
Живет на форуме
Группа: Местный
Сообщений: 2920
Из: Київ, Україна
Спасибо сказали: 1239 раз
Рейтинг: 1345.6
Вы определитесь с условиями задачи. Если все ресурсы нулевые - остатки не выводятся. Здесь необходимо соединять остатки с номенклатурой оборотов по регистру.
Вернее объединять...
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Ок, начнем сначала, может я неправильно все разьяснил. Расскажу подробней. В нашем предприятии есть склад и магазин. Для кажого в 1С есть свой склад. Необходимо чтобы при запуске 1С в магазине выскакивало окошко с номенклатурой остаток которой = 0. Потом там же создам кнопочку для передачи этого списка в документ Внутренний заказ, тем самым облегчив контроль остатков товаров в магазине. Выводить нужо только ту номенклатуру, которая поступала на склад магазина. Написал запрос, но он не выводит номенклатуру с остатком 0, все остальные выводятся. Прошу помочь, спасибо.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
//Запрос.УстановитьПараметр("КоличествоОстаток", ЭтотОбъект.ОстатокМеньше);
Результат = Запрос.Выполнить();
ЭтотОбъект.Товары.Загрузить(Результат.Выгрузить());
Живет на форуме
Группа: Местный
Сообщений: 2920
Из: Київ, Україна
Спасибо сказали: 1239 раз
Рейтинг: 1345.6
В таблицу остатков РН не попадают записи с нулевыми ресурсами. По этому вижу два варианта: 1. выборку из таблицы оборотов РН объединить с выборкой из таблицы остатков РН. 2. выборку из таблицы оборотов РН слева соединить в выборкой из таблицы остатков РН. Для этой задачи необходимо формализировать Ваше условие "только ту номенклатуру, которая поступала на склад магазина" для выборки из таблицы оборотов.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Старейшина
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0
ВЫБРАТЬ Различные
ТоварыНаСкладах.Номенклатура
поместить ТоварыМагазина
ИЗ
РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
Где РегистрНакопления.ТоварыНаСкладах.Склад=&Склад;
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура,
ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
где
ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) = 0И
ТоварыНаСкладахОстатки.Номенклатура в (Выбрать Номенклатура из ТоварыМагазина)
Но в Вашей постановке задачи заложена серьёзная логическая ошибка. И выльется это в кучу неприятностей через годик-другой...
Правильно поставленный вопрос содержит до 90% ответа.
Но в Вашей постановке задачи заложена серьёзная логическая ошибка. И выльется это в кучу неприятностей через годик-другой...
Вы про то что через годик уже 30-40% номенклатуры уже не будет покупатся, но в список она будет попадать? Тут тоже планируется сделать отбор товаров, поступивших на склад с даты, которую будут устанавливать работники магазина.
Живет на форуме
Группа: Местный
Сообщений: 2752
Из: Проскуров
Спасибо сказали: 709 раз
Рейтинг: 688.5
Цитата(Petre @ 29.03.13, 15:27)
выборку из таблицы оборотов РН объединить с выборкой из таблицы остатков РН.
И что получиться?
1. Выбираем из таблицы ОстаткиОбороты все, что имеет остаток 0 и приход Не равный 0 - и все
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&Дата1, &Дата2, Период, ДвиженияИГраницыПериода, Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход <> 0И ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток = 0
Живет на форуме
Группа: Местный
Сообщений: 2920
Из: Київ, Україна
Спасибо сказали: 1239 раз
Рейтинг: 1345.6
Если дата остатков совпадает с конечной датой периода анализа поступлений - можно и так. Но я предполагаю кучу вариантов, т. к. условия не исчерпывающие...
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!