Спасибо большое Илья!!! Я так понял что столько много запросов нужно для объяснения логики решения. Необходимо в результат запроса вывести Деталь с нулевым остатком и имеющим поле Склад. Сделал немного лаконичней: СоставСтелажей соединяем со Складами помещаем в втСтелажиСоСкладами. Далее втСтелажиСоСкладами лев.соединение с ОстаткиНоменклатуры По Деталь и Склад оставляем нужные поля: Стелаж, Склад ( от вт), МИНИМУМ(ЕстьNULL(ОстаткиНом...... и т.д. , Группируем по Стелаж , Склад. Получается по логике все тоже самое (может конечно менее понятно) Целое получал в Выражении, нулевое количество Стелажей убрал из отчета через Отбор по условию (Режим отображения: Недоступный ). Можно как в Уроке, кому как нравится . Для характеристик - второй запрос помещаем в ВТ и все как в занятии Еще раз большое Спасибо Илья, за твой труд и действительно классный курс!!!
ВЫБРАТЬ СоставСтеллажей.Комплектующая КАК Комплектующая, СоставСтеллажей.Стеллаж КАК Стеллаж, СоставСтеллажей.Количество КАК Количество, Склады.Ссылка КАК Ссылка ПОМЕСТИТЬ втСтелажиСоСкладами ИЗ РегистрСведений.СоставСтеллажей КАК СоставСтеллажей, Справочник.Склады КАК Склады ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втСтелажиСоСкладами.Стеллаж КАК Стеллаж, втСтелажиСоСкладами.Ссылка КАК Ссылка, МИНИМУМ(ЦЕЛ(ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток / втСтелажиСоСкладами.Количество, 0))) КАК Количество ПОМЕСТИТЬ втСтелажиВНаличии ИЗ втСтелажиСоСкладами КАК втСтелажиСоСкладами ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки ПО втСтелажиСоСкладами.Комплектующая = ОстаткиНоменклатурыОстатки.Номенклатура И втСтелажиСоСкладами.Ссылка = ОстаткиНоменклатурыОстатки.Склад СГРУППИРОВАТЬ ПО втСтелажиСоСкладами.Ссылка, втСтелажиСоСкладами.Стеллаж ИМЕЮЩИЕ МИНИМУМ(ЦЕЛ(ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток / втСтелажиСоСкладами.Количество, 0))) > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втСтелажиВНаличии.Стеллаж КАК Стеллаж, втСтелажиВНаличии.Ссылка КАК Ссылка, втСтелажиВНаличии.Количество КАК Количество, ЗначенияХарактеристикСтеллажей.Значение КАК Значение ИЗ втСтелажиВНаличии КАК втСтелажиВНаличии ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияХарактеристикСтеллажей КАК ЗначенияХарактеристикСтеллажей ПО втСтелажиВНаличии.Стеллаж = ЗначенияХарактеристикСтеллажей.Стеллаж И (ЗначенияХарактеристикСтеллажей.Характеристика = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ХарактеристикиОбъектов.Страна))
Я учу 1С всего два месяца, но у меня с первого раза получилось сделать этот отчет и без стольких заморочек. Вроде все правильно работает. ВЫБРАТЬ ОстаткиНоменклатурыОстатки.Склад КАК Склад, СоставСтеллажей.Стеллаж КАК Стеллаж, ЕСТЬNULL(ЦЕЛ(МИНИМУМ(ОстаткиНоменклатурыОстатки.КоличествоОстаток / СоставСтеллажей.Количество)), 0) КАК КоличествоСтеллажей ИЗ РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставСтеллажей КАК СоставСтеллажей ПО ОстаткиНоменклатурыОстатки.Номенклатура = СоставСтеллажей.Комплектующая СГРУППИРОВАТЬ ПО ОстаткиНоменклатурыОстатки.Склад, СоставСтеллажей.Стеллаж
Во втором запросе пакета не стоит ли прописать условие: "Склады.Ссылка В (ВЫБРАТЬ втОстаткиДеталей.Склад.Ссылка КАК СкладСсылка ИЗ втОстаткиДеталей КАК втОстаткиДеталей)"?
если кто-то еще будет рассказывать что "итальянскую мебель привозят из италии" и прочий бред покажите им это видео -- 1с на своем официальном экзамене проверяет что мы умеем собирать из деталей с одного склада стеллажи из разных стран.
Вообще опытным путем выяснил, что можно не морочиться на округление в неправильную сторону количества стеллажей. Наоборот надо выразить как число (12,2), а потом в поле Выражение представления в наборе данных просто Цел(Количество) написать и получить целую часть простым отбросом дробной без округления. Ну и конечно я долго разбирался, сделав не ту таблицу левой в соединении, в попытках понять как я из нуля деталей делаю стеллажи.
Спасибо
Илья, спасибо за видео, отличное объяснение темы.... Слова профессионала - "...не долго, но пришлось подумать..."
Спасибо большое Илья!!! Я так понял что столько много запросов нужно для объяснения логики решения. Необходимо в результат запроса вывести Деталь с нулевым остатком и имеющим поле Склад.
Сделал немного лаконичней: СоставСтелажей соединяем со Складами помещаем в втСтелажиСоСкладами. Далее втСтелажиСоСкладами лев.соединение с ОстаткиНоменклатуры По Деталь и Склад оставляем нужные поля: Стелаж, Склад ( от вт), МИНИМУМ(ЕстьNULL(ОстаткиНом...... и т.д. , Группируем по Стелаж , Склад.
Получается по логике все тоже самое (может конечно менее понятно)
Целое получал в Выражении, нулевое количество Стелажей убрал из отчета через Отбор по условию (Режим отображения: Недоступный ). Можно как в Уроке, кому как нравится .
Для характеристик - второй запрос помещаем в ВТ и все как в занятии
Еще раз большое Спасибо Илья, за твой труд и действительно классный курс!!!
ВЫБРАТЬ
СоставСтеллажей.Комплектующая КАК Комплектующая,
СоставСтеллажей.Стеллаж КАК Стеллаж,
СоставСтеллажей.Количество КАК Количество,
Склады.Ссылка КАК Ссылка
ПОМЕСТИТЬ втСтелажиСоСкладами
ИЗ
РегистрСведений.СоставСтеллажей КАК СоставСтеллажей,
Справочник.Склады КАК Склады
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втСтелажиСоСкладами.Стеллаж КАК Стеллаж,
втСтелажиСоСкладами.Ссылка КАК Ссылка,
МИНИМУМ(ЦЕЛ(ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток / втСтелажиСоСкладами.Количество, 0))) КАК Количество
ПОМЕСТИТЬ втСтелажиВНаличии
ИЗ
втСтелажиСоСкладами КАК втСтелажиСоСкладами
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
ПО втСтелажиСоСкладами.Комплектующая = ОстаткиНоменклатурыОстатки.Номенклатура
И втСтелажиСоСкладами.Ссылка = ОстаткиНоменклатурыОстатки.Склад
СГРУППИРОВАТЬ ПО
втСтелажиСоСкладами.Ссылка,
втСтелажиСоСкладами.Стеллаж
ИМЕЮЩИЕ
МИНИМУМ(ЦЕЛ(ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток / втСтелажиСоСкладами.Количество, 0))) > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втСтелажиВНаличии.Стеллаж КАК Стеллаж,
втСтелажиВНаличии.Ссылка КАК Ссылка,
втСтелажиВНаличии.Количество КАК Количество,
ЗначенияХарактеристикСтеллажей.Значение КАК Значение
ИЗ
втСтелажиВНаличии КАК втСтелажиВНаличии
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияХарактеристикСтеллажей КАК ЗначенияХарактеристикСтеллажей
ПО втСтелажиВНаличии.Стеллаж = ЗначенияХарактеристикСтеллажей.Стеллаж
И (ЗначенияХарактеристикСтеллажей.Характеристика = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ХарактеристикиОбъектов.Страна))
Другой вопрос насколько правильно указывать в секции имеющие поле к которому применяется несколько функции?
про добавление склада в состав стеллажей - супер!!! 23:30. Да, сложновато для экзамена, наверное...
Илья, спасибо за это решение. Интересно, а кто-нибудь придумал как можно сделать запрос в отчете проще, не создавая новый РН? 😊
Я учу 1С всего два месяца, но у меня с первого раза получилось сделать этот отчет и без стольких заморочек. Вроде все правильно работает.
ВЫБРАТЬ
ОстаткиНоменклатурыОстатки.Склад КАК Склад,
СоставСтеллажей.Стеллаж КАК Стеллаж,
ЕСТЬNULL(ЦЕЛ(МИНИМУМ(ОстаткиНоменклатурыОстатки.КоличествоОстаток / СоставСтеллажей.Количество)), 0) КАК КоличествоСтеллажей
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставСтеллажей КАК СоставСтеллажей
ПО ОстаткиНоменклатурыОстатки.Номенклатура = СоставСтеллажей.Комплектующая
СГРУППИРОВАТЬ ПО
ОстаткиНоменклатурыОстатки.Склад,
СоставСтеллажей.Стеллаж
Во втором запросе пакета не стоит ли прописать условие: "Склады.Ссылка В
(ВЫБРАТЬ
втОстаткиДеталей.Склад.Ссылка КАК СкладСсылка
ИЗ
втОстаткиДеталей КАК втОстаткиДеталей)"?
я Ахирел просто 2
Цел() при округлении не сработает?
если кто-то еще будет рассказывать что "итальянскую мебель привозят из италии" и прочий бред покажите им это видео -- 1с на своем официальном экзамене проверяет что мы умеем собирать из деталей с одного склада стеллажи из разных стран.
)))
Очень сложно (((
Вообще опытным путем выяснил, что можно не морочиться на округление в неправильную сторону количества стеллажей. Наоборот надо выразить как число (12,2), а потом в поле Выражение представления в наборе данных просто Цел(Количество) написать и получить целую часть простым отбросом дробной без округления.
Ну и конечно я долго разбирался, сделав не ту таблицу левой в соединении, в попытках понять как я из нуля деталей делаю стеллажи.
Морочиться на округление в неправильную сторону? Это про то место, где мы отнимаем 0.5?
Не находишь, что твой способ несколько замороченней?