Запрос по остаткам в разрезе серий и характеристик
Всем привет и с Новым Годом! :)
Имеется запрос по остаткам ТМЦ в разрезе серий. Необходимо дописать его, чтобы учитывались еще и характеристики. Научите, плз) Спасибо.
Имеется запрос по остаткам ТМЦ в разрезе серий. Необходимо дописать его, чтобы учитывались еще и характеристики. Научите, плз) Спасибо.
ТекстЗапроса = "
|ВЫБРАТЬ
| ИСТИНА КАК Печать,
| СпрНоменклатура.Номенклатура КАК Номенклатура,
| СпрНоменклатура.СерияНоменклатуры КАК СерияНоменклатуры,
| СпрНоменклатура.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
| 0 КАК Цена,
| 1 КАК Количество
|ИЗ
| (ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Номенклатура,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК СерияНоменклатуры
| ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ГДЕ НЕ СпрНоменклатура.ЭтоГруппа
| {ГДЕ
| СпрНоменклатура.Ссылка.* КАК Номенклатура}
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| СпрСерии.Владелец,
| СпрСерии.Ссылка
| ИЗ
| Справочник.СерииНоменклатуры КАК СпрСерии
| {ГДЕ
| СпрСерии.Владелец.* КАК Номенклатура,
| СпрСерии.Ссылка.* КАК СерияНоменклатуры}
| ) КАК СпрНоменклатура
|";
Если ТолькоИмеющиесяВНаличии Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| НаСкладе.Номенклатура,
| НаСкладе.СерияНоменклатуры,
| СУММА(НаСкладе.Количество) КАК Количество
| ИЗ
| (ВЫБРАТЬ
| НаСкладе.Номенклатура,
| НаСкладе.СерияНоменклатуры,
| НаСкладе.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, {Номенклатура.* КАК Номенклатура,
| СерияНоменклатуры.* КАК СерияНоменклатуры,
| Склад.* КАК Склад}) КАК НаСкладе
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| ВРознице.Номенклатура,
| ВРознице.СерияНоменклатуры,
| ВРознице.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыВРознице.Остатки(, {Номенклатура.* КАК Номенклатура,
| СерияНоменклатуры.* КАК СерияНоменклатуры,
| Склад.* КАК Склад}) КАК ВРознице
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| ВНТТ.Номенклатура,
| ВНТТ.СерияНоменклатуры,
| ВНТТ.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыВНТТ.Остатки(, {Номенклатура.* КАК Номенклатура,
| СерияНоменклатуры.* КАК СерияНоменклатуры,
| Склад.* КАК Склад}) КАК ВНТТ
| ) КАК НаСкладе
| СГРУППИРОВАТЬ ПО
| НаСкладе.Номенклатура,
| НаСкладе.СерияНоменклатуры
| ) КАК НаСкладе
|ПО
| СпрНоменклатура.Номенклатура = НаСкладе.Номенклатура
| И СпрНоменклатура.СерияНоменклатуры = НаСкладе.СерияНоменклатуры
|ГДЕ
| ЕСТЬNULL(НаСкладе.Количество, 0) > 0
|";
КонецЕсли;
ПоказатьПо теме из базы знаний
- Алгоритмы с решениями для экзамена Специалист УТ 11.1
- История развития 1С:Торговли, что изменилось в архитектуре учета торговых и складских операций за 15 лет
- Исправление отрицательных остатков по организациям в УТ 11.4, КА 2.4, ЕРП 2.4. Интеркампани, механизм формирования резервов
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Внедрение крупного проекта на ERP 2.5 с применением методических решений из УПП 1.3 и обеспечением товаров с разных складов с учетом серий
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ТекстЗапроса = "
|ВЫБРАТЬ
| ИСТИНА КАК Печать,
| СпрНоменклатура.Номенклатура КАК Номенклатура,
// {
| СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
// }
| СпрНоменклатура.СерияНоменклатуры КАК СерияНоменклатуры,
| СпрНоменклатура.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
| 0 КАК Цена,
| 1 КАК Количество
|ИЗ
| (ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Номенклатура,
// {
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры,
// }
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК СерияНоменклатуры
| ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ГДЕ НЕ СпрНоменклатура.ЭтоГруппа
| {ГДЕ
| СпрНоменклатура.Ссылка.* КАК Номенклатура}
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| СпрСерии.Владелец,
// {
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
// }
| СпрСерии.Ссылка
| ИЗ
| Справочник.СерииНоменклатуры КАК СпрСерии
| {ГДЕ
| СпрСерии.Владелец.* КАК Номенклатура,
| СпрСерии.Ссылка.* КАК СерияНоменклатуры}
// {
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| СпрХарактеристики.Владелец,
| СпрХарактеристики.Ссылка,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
| {ГДЕ
| СпрХарактеристики.Владелец.* КАК Номенклатура,
| СпрХарактеристики.Ссылка.* КАК ХарактеристикаНоменклатуры}
// }
| ) КАК СпрНоменклатура
|";
Если ТолькоИмеющиесяВНаличии Тогда
ТекстЗапроса = ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| НаСкладе.Номенклатура,
// {
| НаСкладе.ХарактеристикаНоменклатуры,
// }
| НаСкладе.СерияНоменклатуры,
| СУММА(НаСкладе.Количество) КАК Количество
| ИЗ
| (ВЫБРАТЬ
| НаСкладе.Номенклатура,
// {
| НаСкладе.ХарактеристикаНоменклатуры,
// }
| НаСкладе.СерияНоменклатуры,
| НаСкладе.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, {Номенклатура.* КАК Номенклатура,
// {
|ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
// }
| СерияНоменклатуры.* КАК СерияНоменклатуры,
| Склад.* КАК Склад}) КАК НаСкладе
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| ВРознице.Номенклатура,
// {
| ВРознице.ХарактеристикаНоменклатуры,
// }
| ВРознице.СерияНоменклатуры,
| ВРознице.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыВРознице.Остатки(, {Номенклатура.* КАК Номенклатура,
// {
|ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
// }
| СерияНоменклатуры.* КАК СерияНоменклатуры,
| Склад.* КАК Склад}) КАК ВРознице
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| ВНТТ.Номенклатура,
// {
| ВНТТ.ХарактеристикаНоменклатуры,
// }
| ВНТТ.СерияНоменклатуры,
| ВНТТ.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыВНТТ.Остатки(, {Номенклатура.* КАК Номенклатура,
// {
|ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
// }
| СерияНоменклатуры.* КАК СерияНоменклатуры,
| Склад.* КАК Склад}) КАК ВНТТ
| ) КАК НаСкладе
| СГРУППИРОВАТЬ ПО
| НаСкладе.Номенклатура,
// {
| НаСкладе.ХарактеристикаНоменклатуры,
// }
| НаСкладе.СерияНоменклатуры
| ) КАК НаСкладе
|ПО
| СпрНоменклатура.Номенклатура = НаСкладе.Номенклатура
// {
| И СпрНоменклатура.ХарактеристикаНоменклатуры= НаСкладе.ХарактеристикаНоменклатуры
// }
| И СпрНоменклатура.СерияНоменклатуры = НаСкладе.СерияНоменклатуры
|ГДЕ
| ЕСТЬNULL(НаСкладе.Количество, 0) > 0
|";
КонецЕсли;
Показать
(4) не сработало. прилагаю обработку, может так будет легче разобраться. запрос в процедуре ЗаполнитьПостроительОтчета() модуля.
Прикрепленные файлы:
ПечатьЦенников.epf
(4) Что именно не сработало? Какая у Вас конфигурация?
Если ругается на запрос, значит надо разбираться со структурой регистров из запроса.
В регистрах накопления: ТоварыВНТТ, ТоварыВРознице, ТоварыНаСкладах должно быть Измерение "ХарактеристикаНоменклатуры". Соответственно должен быть еще и справочник "ХарактеристикиНоменклатуры" подчиненный справочнику "Номенклатура".
В моем случае ошибок в запросе нет. Типовая УТ.
Если ругается на запрос, значит надо разбираться со структурой регистров из запроса.
В регистрах накопления: ТоварыВНТТ, ТоварыВРознице, ТоварыНаСкладах должно быть Измерение "ХарактеристикаНоменклатуры". Соответственно должен быть еще и справочник "ХарактеристикиНоменклатуры" подчиненный справочнику "Номенклатура".
В моем случае ошибок в запросе нет. Типовая УТ.
А вот при попытке заполнить ТЧ по установленным отборам - возникает ошибка на строчке 97 модуля формы вашего примера.
В моей конфигурации Справочники ХарактеристикаНоменклатуры и СерииНоменклатуры абсолютно разные и связаны между собой только по владельцу => У элемента справочника "СерияНоменклатуры" нет реквизита "ХарактеристикаНоменклатуры".
Второй момент, какой смысл этой сточки, если несколькими строчками выше у вас стоит
При выгрузке результата из построителя отчетов у вас уже есть все данные с характеристиками, ведь мы модернизировали текст запроса построителя и добавили туда характеристики.
//рек
для каждого стр из товары цикл
стр.ХарактеристикаНоменклатуры = стр.СерияНоменклатуры.ХарактеристикаНоменклатуры;
//....
конеццикла;
В моей конфигурации Справочники ХарактеристикаНоменклатуры и СерииНоменклатуры абсолютно разные и связаны между собой только по владельцу => У элемента справочника "СерияНоменклатуры" нет реквизита "ХарактеристикаНоменклатуры".
Второй момент, какой смысл этой сточки, если несколькими строчками выше у вас стоит
//...
Товары.Загрузить(ПостроительОтчета.Результат.Выгрузить());
//...
При выгрузке результата из построителя отчетов у вас уже есть все данные с характеристиками, ведь мы модернизировали текст запроса построителя и добавили туда характеристики.
(7) В моей конфигурации справочники тоже имеют владельца Спр.Номенклатура, но в Спр.Серии есть элемент "ХарактеристикаНоменклатуры". Таблица заполняется только, если не стоит флажок "Только имеющиеся в наличии". В обратном случае таблица заполняется всеми характеристиками и сериями, которые есть у товара.
(9) В типовой конфигурации УТП для Украины также как и в других типовых конфигурациях в справочнике СерииНоменклатуры нет реквизита ХарактеристикаНоменклатуры. Характеристику можно получить путем соедиения таблиц Номенклатура и ХарактеристикиНоменклатуры по Владельцу. Аналогично Серию номенклатуры можно получить соединением в запросе таблиц СерииНоменклатуры и Номенклатура по владельцу.
Проверил на типовой конфе, нажл заполнить по отборам - все заполнилось. Единственное пришлось закоментить строку стр.ХарактеристикаНоменклатуры = стр.СерияНоменклатуры.ХарактеристикаНоменклатуры, т.к. в типовом такого нет реквизита. Возможно в ней дело, попробуйте так же ее закомментировать.
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот