Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 04:24

Ошибка в отчете

Автор НедоОдинЭсник, 12 окт 2023, 17:15

0 Пользователей и 1 гость просматривают эту тему.

НедоОдинЭсник

УТ 11.5. 1с 8.3. В справочнике Номенклатура показывает правильное количество товара.
Есть внешний отчет. В нем откуда-то тянется в колонку "заказано у поставщиков" энное количество, и количество не совпадает с количеством в справочнике Номенклатура. Прошу помощи. Код прикладываю ниже.

ВЫБРАТЬ
    0 КАК Числа
ПОМЕСТИТЬ РядЧисел

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РядЧисел2.Числа * 100 + РядЧисел1.Числа * 10 + РядЧисел.Числа + 1 КАК Числа
ПОМЕСТИТЬ ВТ_ВсеЧисла
ИЗ
    РядЧисел КАК РядЧисел,
    РядЧисел КАК РядЧисел1,
    РядЧисел КАК РядЧисел2
ГДЕ
    РядЧисел2.Числа * 100 + РядЧисел1.Числа * 10 + РядЧисел.Числа + 1 <= &Месяцев
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&КонПериода, МЕСЯЦ, ВТ_ВсеЧисла.Числа * -1), МЕСЯЦ) КАК ДатаС,
    КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&КонПериода, МЕСЯЦ, ВТ_ВсеЧисла.Числа * -1), МЕСЯЦ) КАК ДатаПо,
    ВТ_ВсеЧисла.Числа КАК Номер
ПОМЕСТИТЬ ПериодыЗапр
ИЗ
    ВТ_ВсеЧисла КАК ВТ_ВсеЧисла

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(&КонПериода, МЕСЯЦ),
    КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ),
    0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
    &КонПериода КАК ДатаС,
    СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот) КАК Количество
ПОМЕСТИТЬ ВТ_продажиПоследнийМесяц
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(НАЧАЛОПЕРИОДА(&КонПериода, МЕСЯЦ), &КонПериода, День, ) КАК ВыручкаИСебестоимостьПродажОбороты

СГРУППИРОВАТЬ ПО
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
    ПериодыЗапр.ДатаС КАК ДатаС,
    СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот) КАК Количество
ПОМЕСТИТЬ ВТ_продажиПредыдущиеМесяца
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(ДОБАВИТЬКДАТЕ(&КонПериода, МЕСЯЦ, -1 * (&Месяцев + 1)), &КонПериода, День, ) КАК ВыручкаИСебестоимостьПродажОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПериодыЗапр КАК ПериодыЗапр
        ПО ВыручкаИСебестоимостьПродажОбороты.Период >= ПериодыЗапр.ДатаС
            И ВыручкаИСебестоимостьПродажОбороты.Период <= ПериодыЗапр.ДатаПо
            И (ПериодыЗапр.Номер > 0)

СГРУППИРОВАТЬ ПО
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
    ПериодыЗапр.ДатаС
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_продажиПоследнийМесяц.Номенклатура КАК Номенклатура,
    ВТ_продажиПоследнийМесяц.ДатаС КАК ДатаС,
    ВТ_продажиПоследнийМесяц.Количество КАК Количество
ПОМЕСТИТЬ ВТ_продажи
ИЗ
    ВТ_продажиПоследнийМесяц КАК ВТ_продажиПоследнийМесяц

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_продажиПредыдущиеМесяца.Номенклатура,
    ВТ_продажиПредыдущиеМесяца.ДатаС,
    ВТ_продажиПредыдущиеМесяца.Количество
ИЗ
    ВТ_продажиПредыдущиеМесяца КАК ВТ_продажиПредыдущиеМесяца
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    СУММА(ВложенныйЗапрос.Количество) / (&Месяцев + 1) КАК Среднее
ПОМЕСТИТЬ вт_Средняя
ИЗ
    (ВЫБРАТЬ
        ВТ_продажиПоследнийМесяц.Номенклатура КАК Номенклатура,
        СУММА(ВТ_продажиПоследнийМесяц.Количество * (ВЫРАЗИТЬ(ДЕНЬ(КОНЕЦПЕРИОДА(&КонПериода, МЕСЯЦ)) / ДЕНЬ(&КонПериода) КАК ЧИСЛО(5, 2)))) КАК Количество
    ИЗ
        ВТ_продажиПоследнийМесяц КАК ВТ_продажиПоследнийМесяц
   
    СГРУППИРОВАТЬ ПО
        ВТ_продажиПоследнийМесяц.Номенклатура
   
    ОБЪЕДИНИТЬ ВСЕ
   
    ВЫБРАТЬ
        ВТ_продажиПредыдущиеМесяца.Номенклатура,
        СУММА(ВТ_продажиПредыдущиеМесяца.Количество)
    ИЗ
        ВТ_продажиПредыдущиеМесяца КАК ВТ_продажиПредыдущиеМесяца
   
    СГРУППИРОВАТЬ ПО
        ВТ_продажиПредыдущиеМесяца.Номенклатура) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВТ_продажиПредыдущиеМесяца.ДатаС КАК ДляКолонки,
    ВТ_продажиПредыдущиеМесяца.Номенклатура КАК Номенклатура,
    СУММА(ВТ_продажиПредыдущиеМесяца.Количество) КАК Показатель,
    -2 КАК НомерТаблицы
ПОМЕСТИТЬ ВТ_ДанныеПоОстаткам
ИЗ
    ВТ_продажиПредыдущиеМесяца КАК ВТ_продажиПредыдущиеМесяца

СГРУППИРОВАТЬ ПО
    ВТ_продажиПредыдущиеМесяца.ДатаС,
    ВТ_продажиПредыдущиеМесяца.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    &КонПериодаТекст,
    ВТ_продажиПоследнийМесяц.Номенклатура,
    СУММА(ВТ_продажиПоследнийМесяц.Количество),
    -1
ИЗ
    ВТ_продажиПоследнийМесяц КАК ВТ_продажиПоследнийМесяц

СГРУППИРОВАТЬ ПО
    ВТ_продажиПоследнийМесяц.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "0. Среднее за период",
    вт_Средняя.Номенклатура,
    вт_Средняя.Среднее,
    0
ИЗ
    вт_Средняя КАК вт_Средняя

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "1. Текущий общий остаток",
    ТоварыНаСкладахОстатки.Номенклатура,
    СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток),
    1
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки({(КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ))}, {(Склад В (&Склад))}) КАК ТоварыНаСкладахОстатки

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "2. Свободное наличие на складе",
    РаспределениеЗапасов.Номенклатура,
    СУММА(РаспределениеЗапасов.Свободно),
    2
ИЗ
    РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
ГДЕ
    РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.ОстатокНаСкладе)
    И РаспределениеЗапасов.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
{ГДЕ
    (РаспределениеЗапасов.Номенклатура = &Номенклатура),
    (РаспределениеЗапасов.Склад В (&Склад))}

СГРУППИРОВАТЬ ПО
    РаспределениеЗапасов.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "3. Заказано у поставщиков",
    ЗаказыПоставщикамОстатки.Номенклатура,
    СУММА(ЗаказыПоставщикамОстатки.ЗаказаноОстаток),
    3
ИЗ
    РегистрНакопления.ЗаказыПоставщикам.Остатки({(КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ))}, {(Склад В (&Склад))}) КАК ЗаказыПоставщикамОстатки

СГРУППИРОВАТЬ ПО
    ЗаказыПоставщикамОстатки.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "4. Свободно в пути",
    РаспределениеЗапасов.Номенклатура,
    СУММА(РаспределениеЗапасов.Запас),
    4
ИЗ
    РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
ГДЕ
    РаспределениеЗапасов.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
    И РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.ОжидаемоеПоступление)
{ГДЕ
    (РаспределениеЗапасов.Склад В (&Склад))}

СГРУППИРОВАТЬ ПО
    РаспределениеЗапасов.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "5. К обеспечению",
    РаспределениеЗапасов.Номенклатура,
    СУММА(РаспределениеЗапасов.Зарезервировано + РаспределениеЗапасов.Обеспечено + РаспределениеЗапасов.НеОбеспечено),
    5
ИЗ
    РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
ГДЕ
    РаспределениеЗапасов.Назначение <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
    И РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.Обеспечить)
{ГДЕ
    (РаспределениеЗапасов.Склад В (&Склад))}

СГРУППИРОВАТЬ ПО
    РаспределениеЗапасов.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "6. Свободный текущий итог по плану" КАК ДляКолонки,
    ВТ_ДанныеПоОстаткам.Номенклатура КАК Номенклатура,
    ВТ_ДанныеПоОстаткам.Показатель КАК Показатель,
    6 КАК НомерТаблицы
ПОМЕСТИТЬ ВТ_СвободныйИтогПоПлану
ИЗ
    ВТ_ДанныеПоОстаткам КАК ВТ_ДанныеПоОстаткам
ГДЕ
    ВТ_ДанныеПоОстаткам.НомерТаблицы = 2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "6. Свободный текущий итог по плану",
    ВТ_ДанныеПоОстаткам.Номенклатура,
    СУММА(ВТ_ДанныеПоОстаткам.Показатель),
    6
ИЗ
    ВТ_ДанныеПоОстаткам КАК ВТ_ДанныеПоОстаткам
ГДЕ
    ВТ_ДанныеПоОстаткам.НомерТаблицы = 4

СГРУППИРОВАТЬ ПО
    ВТ_ДанныеПоОстаткам.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "7. Коэффициент эффективности" КАК ДляКолонки,
    ВТ_СвободныйИтогПоПлану.Номенклатура КАК Номенклатура,
    7 КАК НомерТаблицы,
    ВЫБОР
        КОГДА ЕСТЬNULL(вт_Средняя.Среднее, 0) = 0
            ТОГДА ВТ_СвободныйИтогПоПлану.Показатель
        ИНАЧЕ ВТ_СвободныйИтогПоПлану.Показатель / вт_Средняя.Среднее
    КОНЕЦ КАК Показатель
ПОМЕСТИТЬ ВТ_КоэфЭф
ИЗ
    ВТ_СвободныйИтогПоПлану КАК ВТ_СвободныйИтогПоПлану
        ЛЕВОЕ СОЕДИНЕНИЕ вт_Средняя КАК вт_Средняя
        ПО ВТ_СвободныйИтогПоПлану.Номенклатура = вт_Средняя.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ДанныеПоОстаткам.ДляКолонки КАК ДляКолонки,
    ВТ_ДанныеПоОстаткам.Номенклатура КАК ДляСтроки,
    ВТ_ДанныеПоОстаткам.Показатель КАК Показатель,
    ВТ_ДанныеПоОстаткам.НомерТаблицы КАК НомерТаблицы,
    СпрНоменклатура.Артикул КАК Артикул
ИЗ
    ВТ_ДанныеПоОстаткам КАК ВТ_ДанныеПоОстаткам
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
        ПО ВТ_ДанныеПоОстаткам.Номенклатура = СпрНоменклатура.Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_СвободныйИтогПоПлану.ДляКолонки,
    ВТ_СвободныйИтогПоПлану.Номенклатура,
    ВТ_СвободныйИтогПоПлану.Показатель,
    ВТ_СвободныйИтогПоПлану.НомерТаблицы,
    СпрНоменклатура.Артикул
ИЗ
    ВТ_СвободныйИтогПоПлану КАК ВТ_СвободныйИтогПоПлану
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
        ПО ВТ_СвободныйИтогПоПлану.Номенклатура = СпрНоменклатура.Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_КоэфЭф.ДляКолонки,
    ВТ_КоэфЭф.Номенклатура,
    ВТ_КоэфЭф.Показатель,
    ВТ_КоэфЭф.НомерТаблицы,
    СпрНоменклатура.Артикул
ИЗ
    ВТ_КоэфЭф КАК ВТ_КоэфЭф
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
        ПО ВТ_КоэфЭф.Номенклатура = СпрНоменклатура.Ссылка

НедоОдинЭсник

Подскажите, пожалуйста.

Максим75

НедоОдинЭсник, заказано у поставщиков по Вашему отчету берется отсюда:

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "3. Заказано у поставщиков",
    ЗаказыПоставщикамОстатки.Номенклатура,
    СУММА(ЗаказыПоставщикамОстатки.ЗаказаноОстаток),
    3
ИЗ
    РегистрНакопления.ЗаказыПоставщикам.Остатки({(КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ))}, {(Склад В (&Склад))}) КАК ЗаказыПоставщикамОстатки

СГРУППИРОВАТЬ ПО
    ЗаказыПоставщикамОстатки.Номенклатура

т.е. из регистра накопления берется какое-то количество (это скорее всего то, что в документе ЗаказПоставщику или как-то так записано, т.е. то, что заказываете поставщику).

В справочнике Номенклатура скорее всего выводится остаток на складах.
Ну разные это сущности.

НедоОдинЭсник

Максим75, подскажите, пожалуйста, почему количество "Свободно в пути" может быть больше, чем "Заказано у поставщиков"?

Максим75

НедоОдинЭсник, да потому, что из разных регистров берется.
а как у Вас устроен учет, что в какой регистр попадает и каким образом они между собой стыкуются - я не знаю, Ваша же учетная система.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск