Как объединить одинаковые товары в приходной накладной при разных ценах на экзам

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как объединить одинаковые товары в приходной накладной при разных ценах на экзам

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38898
      Фото аватараOdineski
      Участник

        У меня есть обычная приходная накладная. Хочу, чтобы при проведении не было двух записей с одним и тем же товаром, чтобы они схлопывались. Как это сделать на экзамене 1с:Специалист? И как поступать, если товар один и тот же, а цены на него разные?

      • #38899
        bot_avaOdin — Одинэсник
        Участник

          Да, на экзамене это делается через группировку строк табличной части перед формированием движений. Но сначала нужно определить, что именно должно считаться одинаковой записью.

          ## 1. Что значит «схлопнуть записи»

          Допустим, в приходной накладной есть строки:

          | Номенклатура | Количество | Цена | Сумма |
          |—|—:|—:|—:|
          | Товар 1 | 10 | 100 | 1 000 |
          | Товар 1 | 5 | 100 | 500 |

          Если в регистре измерения:

          а ресурсы:

          то эти строки можно объединить в одно движение:

          Если же цена разная:

          | Номенклатура | Количество | Цена | Сумма |
          |—|—:|—:|—:|
          | Товар 1 | 10 | 100 | 1 000 |
          | Товар 1 | 5 | 120 | 600 |

          то дальнейшие действия зависят от методики учета.

          —

          # 2. Если цена не участвует в определении партии

          Если вам не нужно вести FIFO/LIFO и цена является только расчетным показателем, строки можно полностью объединить по номенклатуре.

          В этом случае:

          Средняя учетная цена будет:

          То есть нельзя просто взять цену первой строки. Нужно складывать отдельно количество и сумму.

          На экзамене это реализуется запросом с СУММА() и СГРУППИРОВАТЬ ПО.

          ## Пример запроса для объединения строк

          В результате для одной номенклатуры и одного склада будет одна строка независимо от количества строк в документе.

          ## Формирование движений

          Перед этим в процедуре проведения необходимо включить запись движений:

          Полная структура процедуры:

          Названия реквизитов нужно заменить на названия из вашей конфигурации.

          —

          # 3. Если цена разная и используется FIFO или LIFO

          В этом случае объединять разные цены нельзя.

          Причина простая: разные цены означают разные учетные слои.

          Например, поступило:

          При FIFO продажа 12 штук должна списать:

          При LIFO продажа 12 штук должна списать:

          Если при поступлении объединить все в одну строку:

          то информация о двух партиях будет потеряна. После этого корректно реализовать FIFO и LIFO уже невозможно.

          Поэтому при использовании FIFO/LIFO разные цены должны оставаться отдельными партиями.

          ## Правильная структура регистра для FIFO/LIFO

          Например, регистр накопления ТоварыНаСкладах:

          ### Измерения

          ### Ресурсы

          Партия должна однозначно определять слой товара.

          Можно использовать:

          — документ поступления как партию, если в одном документе одна цена на товар;
          — ссылку на документ плюс номер строки;
          — отдельный справочник партий;
          — составной идентификатор партии.

          На экзамене часто удобно использовать отдельную партию для каждой строки поступления. Иначе две строки одного документа с разными ценами могут попасть в одну и ту же партию.

          —

          # 4. Почему одного документа в качестве партии может быть недостаточно

          Предположим, в одной приходной накладной есть две строки:

          | Номер строки | Номенклатура | Количество | Цена |
          |—:|—|—:|—:|
          | 1 | Товар 1 | 10 | 100 |
          | 2 | Товар 1 | 5 | 120 |

          Если в качестве измерения Партия записывать только ссылку на приходную накладную, у обеих строк будет одинаковая партия:

          Тогда регистр не сможет различить цены 100 и 120.

          Есть несколько решений.

          ## Вариант 1. Добавить номер строки как измерение

          В регистр добавляются:

          При проведении:

          Тогда партии будут различаться:

          Это рабочий вариант для экзамена, если задача разрешает такую структуру.

          ## Вариант 2. Создать отдельный справочник партий

          Например, справочник ПартииТоваров с реквизитами:

          В регистр записывается ссылка на элемент справочника ПартииТоваров.

          Это более полноценное решение, но оно требует дополнительной логики создания партий.

          ## Вариант 3. Использовать составной ключ партии

          Если в задаче отдельный справочник не нужен, можно логически считать партией сочетание:

          Физически составной ссылочный реквизит в стандартном регистре напрямую не хранится, поэтому обычно используют отдельное измерение номера строки или отдельный справочник партий.

          —

          # 5. Как группировать приход при FIFO/LIFO

          При FIFO/LIFO нужно группировать не только по номенклатуре и складу, а по полному набору измерений регистра.

          Например:

          Если каждая строка документа является отдельной партией, то фактически каждая строка останется отдельной записью. Это правильно, если цены разные.

          Если две строки имеют одну и ту же номенклатуру, склад и одну и ту же партию, их можно объединить:

          Цена при этом обычно не должна быть отдельным измерением регистра. Ее лучше хранить через сумму партии:

          Цена рассчитывается:

          Но если цена определяет партию, она должна участвовать в логике формирования партии или быть отдельным реквизитом партии.

          —

          # 6. Важное правило по цене

          ## Цена одинаковая

          Строки можно объединить, если совпадают все измерения регистра:

          Конкретный состав зависит от вашей задачи.

          Например:

          можно заменить на:

          ## Цена разная, FIFO/LIFO не используется

          Можно объединить:

          в:

          Но цена после объединения будет средней. Если нужно сохранить исходные цены, одной записи будет недостаточно.

          ## Цена разная, FIFO/LIFO используется

          Объединять нельзя. Нужно оставить разные партии:

          Именно это нужно для правильного последующего списания.

          —

          # 7. Что лучше сделать на экзамене

          Если задача просто про приход и остатки, без FIFO/LIFO, используйте запрос с группировкой:

          Если задача содержит FIFO или LIFO:

          1. Не группируйте разные цены в одну партию.
          2. Добавьте в регистр измерение партии.
          3. Обеспечьте уникальность партии для разных строк с разными ценами.
          4. В приходе делайте отдельное движение по каждой партии.
          5. В расходе получайте остатки партий с сортировкой по дате партии.
          6. Для FIFO используйте сортировку по возрастанию.
          7. Для LIFO используйте сортировку по убыванию.
          8. Количество и сумму списывайте пропорционально выбранной партии.

          Если требуется именно убрать дубли движений при одинаковой цене, группируйте строки по всем измерениям регистра и суммируйте ресурсы:

          А если цена различается и партия должна сохраняться, цена не должна использоваться для механического объединения строк. В этом случае разделяйте партии, иначе FIFO/LIFO будет работать неправильно.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С