8.х Создание отчета по перемещению товаров (БП 3.0)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем BBDragon, 17 фев 2016.

  1. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Необходимо создать отчет по перемещениям товаров между складами организации, где будет отражено следующее:
    первая строка: первичное поступление товара и указание склада, куда он был приходован
    вторая и далее: дата, склад-получатель, склад-отправитель
    Дополнительно необходимо указывать количество перемещенной номенклатуры и ее стоимость.

    Знаю, что необходимо использовать регистр бухгалтерии по счету 41.01. может быть кто-то делал уже подобное, подскажите, пожалуйста.

    Примерная форма отчета:

    [​IMG]

    В первой строке вместо склада-отправителя указывается, естественно, контрагент, у которого товар был приобретен.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Задача мутная, т.к. :
    • счет учета может быть и 10.хх
    • не понятно, что делать если склад не изменился, а изменился счет учета
    • неизвестно, когда был первичный приход товара, это вызовет нагрузку на БД запросом без ограничения начальной границы выборки данных.
    BBDragon нравится это.
  3. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Счет учета будет всегда один и тот же, 41.01, ОС не планируется использовать. Отчет лишь для небольшой, специально выделенной группы товаров. К примеру с названием "Объекты, используемые при строительстве" (их может будет порядка 50, максимум 100 наименований)
    Дата закупки - не раньше 01.01.2015
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Обединение результатов 2-х запросов вида:

    Выбрать .....СуммаОборот ИЗ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт()

    должно решить вашу задачу.
    Последнее редактирование: 17 фев 2016
    BBDragon нравится это.
  5. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    nomad_irk
    перепробовал все регистры, не совсем то. В итоге решил брать данные чисто из документов, сначала из документов поступлений, потом из документов перемещений.

    Первый запрос:

    ВЫБРАТЬ
    ПоступлениеТоваровУслуг.Склад,
    ПоступлениеТоваровУслуг.Контрагент,
    ПоступлениеТоваровУслуг.Товары.(
    Номенклатура,
    Цена,
    Количество,
    Сумма
    ),
    ПоступлениеТоваровУслуг.Дата
    ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг

    Здесь путем отбора по номенклатуре я получаю дату ее поступления, склад, имя контрагента, количество и общую сумму.
    Далее мне необходимо отыскать все перемещения данного товара. Второй запрос:

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

    Вот здесь необходимо использовать полученные уже наименование и цену номенклатуры, дабы имея количество, вычислять сумму.
    Запросы делаю на СКД, как бы теперь правильно передать полученные данные из первого запроса во второй и после всего вывести уже все данные в итоговой таблице.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Могу сказать, что реализация явно не верная. Собирать данные по документам - не очень хорошая идея, но если уж делать так, то необходимо строить запрос напрямую к ТЧ документа ПоступлениеТиУ, затем сделать объединение с таблицей перемещений.
    BBDragon нравится это.
  7. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Да мне и так нормально, все быстро работает, ибо объем данных небольшой совсем. Главное сделать используя данные из первого запроса, чтобы выполнить второй и потом вывести уже все данные в итоговой табличке
  8. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    В общем пытался делать через связь наборов данных в СКД - так и не получилось. Читал и Радченко, и Хрусталеву, не помогло особо. Запросы самое больное место, подскажите, пожалуйста, как же все-таки правильно их связать
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    У вас в наборах будет 1 ключевое поле в каждом: номенклатура, по нему нужно связать два набора, либо сделать тоже самое в запросе и получить 1 набор в итоге.
  10. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Создал 2 набора данных - Поступление и Перемещение. Пытаюсь связать их по Номенклатуре, указываю Выражение источник - Номенклатура.Номенклатура, Выражение приемник - Товары.Номенклатура. После выбора номенклатуры отчет вываливается с ошибкой: "В выражении связи набора данных-приемника разрешено использовать только поля набора данных-приемника "Перемещение.Товары.Номенклатура".
    Сам отчет залил сюда: https://yadi.sk/d/bx-yNU_Tp6Pvi

    Думаю вопрос элементарный для профи, но сам что-то никак не могу его решить.
  11. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    В итоге сделал все одним запросом! Практически все данные у меня теперь есть, осталось только правильно вывести их)

    ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ПоступлениеТоваровУслугТовары.Цена КАК ЦенаПоступления,
    ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК ДатаПоступления,
    ПоступлениеТоваровУслугТовары.Количество КАК КоличествоПоступления,

    ПоступлениеТоваровУслугТовары.Сумма КАК СуммаПоступления,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент как Поставщик,
    ПоступлениеТоваровУслугТовары.Ссылка.Склад КАК СкладПоступления,
    ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
    ПеремещениеТоваровТовары.Ссылка.Дата КАК ДатаПеремещения,
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК Отправитель,
    ПеремещениеТоваровТовары.Ссылка.СкладПолучатель КАК Получатель,
    ПеремещениеТоваровТовары.Цена КАК ЦенаПеремещения
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    ПО ПоступлениеТоваровУслугТовары.Номенклатура = ПеремещениеТоваровТовары.Номенклатура



    Необходимо в отчете первой строкой вывести
    ДатаПоступления, СкладПоступления, Поставщик, КоличествоПоступления, СуммаПоступления.
    Во второй (и всех последующих строках) надо выводить ДатаПеремещения, Получатель, Отправитель, КоличествоПеремещения и СуммаПеремещения.
    При этом СуммаПеремещения - это вычисляемое поле (по формуле СуммаПеремещения=КоличествоПеремещения*ЦенаПоступления).

    Заголовок у колонок пусть будет везде одинаковый, т.е. Дата, Получатель, Отправитель, Количество и Сумма.

    Вопрос - как оформить вывод этих данных в СКД? Однородный набор данных я умею выводить списком, но тут первая строка должна отличаться по набору данных, ибо содержит сведения о поступлении.
    Последнее редактирование: 20 фев 2016

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