8.х Запрос по остаткам товара

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Сандра, 9 авг 2011.

  1. TopicStarter Overlay
    Сандра
    Offline

    Сандра Опытный в 1С

    Регистрация:
    5 июл 2010
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    26
    Помогите, пожалуйста, совсем голова идет кругом, запуталась.
    В отчет по остаткам товара за месяц должны попадать остатки на начало месяца, на 10, 20 число и конец месяца.
    Через регистр Товары Организации делаю выборку на разные даты. Затем их все соединяю через полное соединение. Проблема: Если на начало месяца товара на складе не было, то в отчет он не попедает и на все остальные даты, даже если он поступил в течении месяца.

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

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

    Подскажите, пожалуйста, что я не учитываю. может я иду не тем путем?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Сделайте Справочник.Номенклатура главной таблицей и все это добро соедините левым соединенением с ней
  3. TopicStarter Overlay
    Сандра
    Offline

    Сандра Опытный в 1С

    Регистрация:
    5 июл 2010
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    26
    с номенклатурой разобралась, и сразу возникла другая проблема: со складами.
    Товар может быть в остатках на разных складах и нужно видеть именно по складам, а свяхать склады я не могу - сразу ошибка., а без связи - показывает остатки вне зависимости от склада

    ВЫБРАТЬ
    спрНоменклатура.Ссылка,
    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    СУММА(ТоварыНаСкладахОстатки1.КоличествоОстаток) КАК КоличествоОстаток1,
    СУММА(ТоварыНаСкладахОстатки2.КоличествоОстаток) КАК КоличествоОстаток2,
    СУММА(ТоварыНаСкладахОстатки3.КоличествоОстаток) КАК КоличествоОстаток3,
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки1.Склад КАК Склад1,
    ТоварыНаСкладахОстатки2.Склад КАК Склад2,
    ТоварыНаСкладахОстатки3.Склад КАК Склад3
    ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата1, ) КАК ТоварыНаСкладахОстатки1
    ПО спрНоменклатура.Ссылка = ТоварыНаСкладахОстатки1.Номенклатура.Ссылка
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки3
    ПО спрНоменклатура.Ссылка = ТоварыНаСкладахОстатки3.Номенклатура.Ссылка
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата2, ) КАК ТоварыНаСкладахОстатки2
    ПО спрНоменклатура.Ссылка = ТоварыНаСкладахОстатки2.Номенклатура.Ссылка
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаНач, ) КАК ТоварыНаСкладахОстатки
    ПО спрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура.Ссылка
    ГДЕ
    спрНоменклатура.Ссылка В ИЕРАРХИИ(&Ссылка)

    СГРУППИРОВАТЬ ПО
    спрНоменклатура.Ссылка,
    ТоварыНаСкладахОстатки.Склад,
    ТоварыНаСкладахОстатки1.Склад,
    ТоварыНаСкладахОстатки2.Склад,
    ТоварыНаСкладахОстатки3.Склад
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    дык со складами связь такая же - в чем сложность?
  5. TopicStarter Overlay
    Сандра
    Offline

    Сандра Опытный в 1С

    Регистрация:
    5 июл 2010
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    26
    если добавить справочник складов и затем связывать с регистром ТоварыОрганизации, выдается сообщение о некорректной связи, не дает связывать и регистры между собой. может я что-то не так делаю?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    скорее всего не так делаете, запрос можете кинуть уже со складами?
  7. TopicStarter Overlay
    Сандра
    Offline

    Сандра Опытный в 1С

    Регистрация:
    5 июл 2010
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    26
    Расчитываются остатки товара количественные и весовые по месяцу на 1,10,20,и конец месяца.

    Справочник Номенклатура очень большой, поэтому когда запускаешь выборку по всем остаткам товара, отчет зависает и вылетает с ошибкой. Так можно рассчитать только группу товара, а мне необходима выборка всего товара, чтоб затем рассчитать удельный вес каждого товара по месяцу. Это про связь по справочнику Номенклатура.

    И не получается связать запрос по складам.
    Может у вас есть другое решение моей проблемы?

    Код:
    "ВЫБРАТЬ
    ТоварыОрганизацийОстатки.Номенклатура,
    ТоварыОрганизацийОстатки.Склад,
    ТоварыОрганизацийОстатки.КоличествоОстаток,
    ТоварыОрганизацийОстатки.КоличествоОстаток * ЕдиницыИзмерения.Вес / ЕдиницыИзмерения.Коэффициент КАК ВесНач,
    ТоварыОрганизацийОстатки1.Склад КАК Склад1,
    ТоварыОрганизацийОстатки1.КоличествоОстаток КАК КоличествоОстаток1,
    ТоварыОрганизацийОстатки1.КоличествоОстаток * ЕдиницыИзмерения.Вес / ЕдиницыИзмерения.Коэффициент КАК Вес1,
    ТоварыОрганизацийОстатки2.Склад КАК Склад2,
    ТоварыОрганизацийОстатки2.КоличествоОстаток КАК КоличествоОстаток2,
    ТоварыОрганизацийОстатки2.КоличествоОстаток * ЕдиницыИзмерения.Вес / ЕдиницыИзмерения.Коэффициент КАК Вес2,
    ТоварыОрганизацийОстатки3.Склад КАК Склад3,
    ТоварыОрганизацийОстатки3.КоличествоОстаток КАК КоличествоОстаток3,
    ТоварыОрганизацийОстатки3.КоличествоОстаток * ЕдиницыИзмерения.Вес / ЕдиницыИзмерения.Коэффициент КАК ВесКон,
    ЕдиницыИзмерения.ЕдиницаПоКлассификатору,
    ЕдиницыИзмерения.Вес,
    ЕдиницыИзмерения.Коэффициент
    ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&датанач, ) КАК ТоварыОрганизацийОстатки
    ПО спрНоменклатура.Ссылка = ТоварыОрганизацийОстатки.Номенклатура.Ссылка
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&дата1, ) КАК ТоварыОрганизацийОстатки1
    ПО спрНоменклатура.Ссылка = ТоварыОрганизацийОстатки1.Номенклатура.Ссылка
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата2, ) КАК ТоварыОрганизацийОстатки2
    ПО спрНоменклатура.Ссылка = ТоварыОрганизацийОстатки2.Номенклатура.Ссылка
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаКон, ) КАК ТоварыОрганизацийОстатки3
    ПО спрНоменклатура.Ссылка = ТоварыОрганизацийОстатки3.Номенклатура.Ссылка,
    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
    ГДЕ
    ТоварыОрганизацийОстатки.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору
    И ТоварыОрганизацийОстатки1.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору
    И ТоварыОрганизацийОстатки2.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору
    И ТоварыОрганизацийОстатки3.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору
    И спрНоменклатура.Ссылка В ИЕРАРХИИ(&Ссылка)"
    
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    имхо, будет проще и быстрее сделать вложенный запрос, в нем объединение запросов, и вложенный запрос группировать по номенклатуре, складу и единице измерения.
  9. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    я бы делал пакетным запросом..

    общий подход:
    1) получаете временных таблицы: Таблица1, Таблица2, Таблица3 (10,20, конец месяца)
    2) объединяете их по Номенклатуре и Складу - Таблица4
    3) группируете их по Номенклатуре и Складу - Таблица5. ура, получили все возможные пары Номенклатура и Склад.
    4) присоединяете к Таблице5 таблицы Таблица1, Таблица2, Таблица3.
  10. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    естественно на исходные 3 таблицы можно наложить любые условия.. по номенклатуре, например.

    Код:
    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток
    ПОМЕСТИТЬ Таблица1
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоМесяца, ) КАК ТоварыНаСкладахОстатки;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток
    ПОМЕСТИТЬ Таблица2
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&СерединаМесяца, ) КАК ТоварыНаСкладахОстатки;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток
    ПОМЕСТИТЬ Таблица3
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецМесяца, ) КАК ТоварыНаСкладахОстатки;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Таблица1.Склад,
    Таблица1.Номенклатура
    ПОМЕСТИТЬ Таблица4
    ИЗ
    Таблица1 КАК Таблица1
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    Таблица2.Склад,
    Таблица2.Номенклатура
    ИЗ
    Таблица2 КАК Таблица2
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    Таблица3.Склад,
    Таблица3.Номенклатура
    ИЗ
    Таблица3 КАК Таблица3;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Таблица4.Склад,
    Таблица4.Номенклатура
    ПОМЕСТИТЬ Таблица5
    ИЗ
    Таблица4 КАК Таблица4
    
    СГРУППИРОВАТЬ ПО
    Таблица4.Номенклатура,
    Таблица4.Склад;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Таблица5.Склад,
    Таблица5.Номенклатура,
    Таблица1.КоличествоОстаток,
    Таблица2.КоличествоОстаток КАК КоличествоОстаток1,
    Таблица3.КоличествоОстаток КАК КоличествоОстаток2
    ИЗ
    Таблица5 КАК Таблица5
    ЛЕВОЕ СОЕДИНЕНИЕ Таблица1 КАК Таблица1
    ПО Таблица5.Склад = Таблица1.Склад
    И Таблица5.Номенклатура = Таблица1.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
    ПО Таблица5.Склад = Таблица2.Склад
    И Таблица5.Номенклатура = Таблица2.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ Таблица3 КАК Таблица3
    ПО Таблица5.Склад = Таблица3.Склад
    И Таблица5.Номенклатура = Таблица3.Номенклатура
    
    
  11. TopicStarter Overlay
    Сандра
    Offline

    Сандра Опытный в 1С

    Регистрация:
    5 июл 2010
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    26
    :angry:
    Спасибо огромное! Вижу, что все работает и быстро. Осталось разложить по косточкам и понять, а как оно работает! Спасибо. :D
  12. TopicStarter Overlay
    Сандра
    Offline

    Сандра Опытный в 1С

    Регистрация:
    5 июл 2010
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    26
    При формировании отчета в данные конца месяца попадают данные середины месяца.
  13. TopicStarter Overlay
    Сандра
    Offline

    Сандра Опытный в 1С

    Регистрация:
    5 июл 2010
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    26
    В продолжении отчета:
    Нужно на эти три точки отчета расчитать количество товаров всего склада и эти три цифры просуммировать. Получается единственное число -количество товаров всего склада.
    Далее по каждому товару так-же считаем количество на эти три точки отчета и эти три цифры суммируем.
    Полученное количество по каждому товару разделить на полученное единственное число по складу. Это и будет средневзвешенное количество каждого товара по складу с учетом изменений склада в месяце - для чего это все и затевалось. Далее по этим средневзвешенным будут распределяться расходы на хранение товара...

    Подскажите, пожалуйста, как продолжить отчет .... уже вторую неделю голова кругом от этой затеи экономиста... :angry:
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    может проще будет сделать "ИТОГИ СРЕДНЕЕ(Количество) ПО Склад, Номенклатура"?
  15. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    а зачем группировка 4ой таблицы ? чем они будет отличаться от 5ой?

Поделиться этой страницей