По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)1-й запрос - Выбрать товары по которым были приходы на склад 2-й запрос - выбрать товары из регистра накопления где регистратор списание с фильтром по списку из первого запроса, свернуть по регистратору, если нужен текст запроса указывайте конфигурацию в которой работаете
(2)
получается мы вибираем все приходы за период из регистра Товары на складах, далее вторым запросом выбираем из регистра "Товары на складах" все списания по товарам из прихода?
А если не было прихода, или был а потом отменили.
Вот такие ситуации надо показать, когда прихода небыло, а сделали списание.
получается мы вибираем все приходы за период из регистра Товары на складах, далее вторым запросом выбираем из регистра "Товары на складах" все списания по товарам из прихода?
А если не было прихода, или был а потом отменили.
Вот такие ситуации надо показать, когда прихода небыло, а сделали списание.
(4)Возможно я не совсем уловил суть задачи, но попробуйте так
Приложил обработку которой тестировал
ВЫБРАТЬ
ТоварыНаСкладах.Номенклатура
ПОМЕСТИТЬ ВтПриход
ИЗ
РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
ТоварыНаСкладах.Склад = &Склад
И ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
И ТоварыНаСкладах.Период >= &ДатаНачала
И ТоварыНаСкладах.Период <= &ДатаОкончания
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТоварыНаСкладах.Регистратор
ИЗ
РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ЛЕВОЕ СОЕДИНЕНИЕ ВтПриход КАК ВтПриход
ПО ТоварыНаСкладах.Номенклатура <> ВтПриход.Номенклатура
ГДЕ
ТоварыНаСкладах.Регистратор ССЫЛКА Документ.СписаниеТоваров
И ТоварыНаСкладах.Период >= &ДатаНачала
И ТоварыНаСкладах.Период <= &ДатаОкончания
И ТоварыНаСкладах.Склад = &Склад
ПоказатьПриложил обработку которой тестировал
Прикрепленные файлы:
ЗапросСФильтромПоСписанию.epf
(5)
так тут не видно даты прихода товара на склад.
просто вся номенклатура которая приходила на склад за выбранный период.
а нужно именно показать ту ситуацию, где в день списания товара (именно в тот день когда был документ "Списание товара"), не было прихода (не было документа "Поступления товаров и услуг")
так тут не видно даты прихода товара на склад.
просто вся номенклатура которая приходила на склад за выбранный период.
а нужно именно показать ту ситуацию, где в день списания товара (именно в тот день когда был документ "Списание товара"), не было прихода (не было документа "Поступления товаров и услуг")
(6)Давайте попробуем дубово - для понимания задачи
Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладах.Номенклатура,
| ТоварыНаСкладах.Регистратор,
| ТоварыНаСкладах.Регистратор.Дата Как Дата
|ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
|ГДЕ
| ТоварыНаСкладах.Регистратор ССЫЛКА Документ.СписаниеТоваров
| И ТоварыНаСкладах.Период >= &ДатаНачала
| И ТоварыНаСкладах.Период <= &ДатаОкончания
| И ТоварыНаСкладах.Склад = &Склад";
Склад = Справочники.Склады.НайтиПоКоду("000000001");
Запрос.УстановитьПараметр("ДатаНачала",Дата("20180101"));
Запрос.УстановитьПараметр("ДатаОкончания",Дата("20180501"));
Запрос.УстановитьПараметр("Склад",Склад);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Если ПроверитьПриход(Результат.Номенклатура,Результат.Дата,Склад) = Ложь Тогда
Сообщить(Результат.Регистратор);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ПроверитьПриход(Номенклатура,Дата,Склад)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладах.Номенклатура
|ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
|ГДЕ
| ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
| И ТоварыНаСкладах.Период >= &ДатаНачала
| И ТоварыНаСкладах.Период <= &ДатаОкончания
| И ТоварыНаСкладах.Склад = &Склад
| И ТоварыНаСкладах.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(Дата));
Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(Дата));
Запрос.УстановитьПараметр("Склад",Склад);
Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Показать
1. Делаем выборку "дни/номенклатура", по которым были списания за период во временную таблицу.
2. Левым соединением к ней цепляем приходы по день/номенклатура с условием в ГДЕ приход ЕСТЬ NULL, выбирая различные день/номенклатура (это будет табличка комбинаций день/номенклатура, по которым списания были, а приходов не было)
3. Фильтруем списания за период полученной табличкой.
2. Левым соединением к ней цепляем приходы по день/номенклатура с условием в ГДЕ приход ЕСТЬ NULL, выбирая различные день/номенклатура (это будет табличка комбинаций день/номенклатура, по которым списания были, а приходов не было)
3. Фильтруем списания за период полученной табличкой.
(8) запрос такой ?
ВЫБРАТЬ РАЗЛИЧНЫЕ
ТаблицаСписаний.Номенклатура,
ТаблицаСписаний.ДатаСписания,
ТоварыНаСкладах.Период КАК ДатаПрихода
ИЗ
(ВЫБРАТЬ
СписаниеТоваровТовары.Номенклатура КАК Номенклатура,
СписаниеТоваровТовары.Ссылка.Дата КАК ДатаСписания,
СписаниеТоваровТовары.Ссылка.Склад КАК Склад
ИЗ
Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
ГДЕ
СписаниеТоваровТовары.Ссылка.Проведен
И СписаниеТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон) КАК ТаблицаСписаний
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ПО ТаблицаСписаний.Номенклатура = ТоварыНаСкладах.Номенклатура
И (НАЧАЛОПЕРИОДА(ТаблицаСписаний.ДатаСписания, ДЕНЬ) = НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ))
И ТаблицаСписаний.Склад = ТоварыНаСкладах.Склад
ГДЕ
ТоварыНаСкладах.ВидДвижения = &ВидДвижения
И ТоварыНаСкладах.Период МЕЖДУ &ДатаНач И &ДатаКон
И ТоварыНаСкладах.Количество ЕСТЬ NULL
Показать
ВЫБРАТЬ
ТоварыНаСкладахОбороты.Номенклатура,
ТоварыНаСкладахОбороты.Регистратор,
ТоварыНаСкладахОбороты.КоличествоПриход,
ТоварыНаСкладахОбороты.КоличествоРасход,
НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ) КАК День
ПОМЕСТИТЬ табТоварыНаСкладах
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ТоварыНаСкладахОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
табТоварыНаСкладах.Номенклатура,
табТоварыНаСкладах.День
ПОМЕСТИТЬ табПриходы
ИЗ
табТоварыНаСкладах КАК табТоварыНаСкладах
ГДЕ
табТоварыНаСкладах.КоличествоПриход > 0
СГРУППИРОВАТЬ ПО
табТоварыНаСкладах.Номенклатура,
табТоварыНаСкладах.День
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
табТоварыНаСкладах.Номенклатура,
табТоварыНаСкладах.Регистратор,
табТоварыНаСкладах.КоличествоРасход,
табТоварыНаСкладах.День
ИЗ
табТоварыНаСкладах КАК табТоварыНаСкладах
ЛЕВОЕ СОЕДИНЕНИЕ табПриходы КАК табПриходы
ПО (табПриходы.Номенклатура = табТоварыНаСкладах.Номенклатура)
И (табПриходы.День = табТоварыНаСкладах.День)
ГДЕ
табПриходы.Номенклатура ЕСТЬ NULL
ТоварыНаСкладахОбороты.Номенклатура,
ТоварыНаСкладахОбороты.Регистратор,
ТоварыНаСкладахОбороты.КоличествоПриход,
ТоварыНаСкладахОбороты.КоличествоРасход,
НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ) КАК День
ПОМЕСТИТЬ табТоварыНаСкладах
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ТоварыНаСкладахОбороты
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
табТоварыНаСкладах.Номенклатура,
табТоварыНаСкладах.День
ПОМЕСТИТЬ табПриходы
ИЗ
табТоварыНаСкладах КАК табТоварыНаСкладах
ГДЕ
табТоварыНаСкладах.КоличествоПриход > 0
СГРУППИРОВАТЬ ПО
табТоварыНаСкладах.Номенклатура,
табТоварыНаСкладах.День
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
табТоварыНаСкладах.Номенклатура,
табТоварыНаСкладах.Регистратор,
табТоварыНаСкладах.КоличествоРасход,
табТоварыНаСкладах.День
ИЗ
табТоварыНаСкладах КАК табТоварыНаСкладах
ЛЕВОЕ СОЕДИНЕНИЕ табПриходы КАК табПриходы
ПО (табПриходы.Номенклатура = табТоварыНаСкладах.Номенклатура)
И (табПриходы.День = табТоварыНаСкладах.День)
ГДЕ
табПриходы.Номенклатура ЕСТЬ NULL
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот