Да, да в типовой конфигурации имеется функционал для подготовки данных по НДС, но он тянет за собой необходимость формировать дополнительные регламентные документы и заточен под законодательство РФ, перепиливать эту махину у меня желания нет и вот как вариант я добавил регистр Партии и провожу по нему документы в конце квартала.
Первое, что было сделано, это заприходованы остатки в партии на 2018 год.
Далее по партии проведены приходы, запрос не буду выкладывать, т.к. оприходование вещь в общем-то простая, табличная часть документа загружается в партию.
Создан запрос списания партии (собственно, он и есть суть публикации)
В данном партионном учете отключен учет по складам, т.к. это в конечно счете не имеет значения, с какого склада продается товар, главное, присутствует ли в партии НДС.
Результатом выполнения запроса является набор записей регистра накопления, либо если распределение не удалось, колонка Ошибка заполняется в Истину.
Также используются условия остатка более чем ноль, это сделано из за кривизны входящих остатков по товарам на складах (именно перегиб по сериям), опять же выравнивать лень и смысла в этом особого нет.
Вот, собственно, и все, критикуйте, если не жалко (ну или наоборот =)
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Номенклатура,
РеализацияТоваровУслугТовары.Количество,
РеализацияТоваровУслугТовары.СерияНоменклатуры,
РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры,
РеализацияТоваровУслугТовары.Ссылка.Дата
ПОМЕСТИТЬ Отгрузка
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
РеализацияТоваровУслугТовары.Ссылка = &Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
_ПартииНДСОстатки.Номенклатура,
_ПартииНДСОстатки.Постащик,
_ПартииНДСОстатки.ДокументПартии,
_ПартииНДСОстатки.НомерПартии,
_ПартииНДСОстатки.Характеристика,
_ПартииНДСОстатки.Серия,
_ПартииНДСОстатки.СтавкаНДС,
_ПартииНДСОстатки.ДатаПартии,
_ПартииНДСОстатки.КоличествоОстаток,
_ПартииНДСОстатки.СуммаОстаток,
_ПартииНДСОстатки.СуммаНДСОстаток,
_ПартииНДСОстатки.УИДПартии
ПОМЕСТИТЬ Партии
ИЗ
РегистрНакопления._ПартииНДС.Остатки(
&ДатаСписания,
Номенклатура В
(ВЫБРАТЬ
реал.Номенклатура
ИЗ
Отгрузка КАК реал)) КАК _ПартииНДСОстатки
ГДЕ
_ПартииНДСОстатки.КоличествоОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Партии.Номенклатура.Артикул КАК НоменклатураАртикул,
Партии.Номенклатура,
Партии.Характеристика,
Партии.Серия,
СУММА(Партии.КоличествоОстаток) КАК КоличествоОстаток,
Партии.УИДПартии,
Партии.СтавкаНДС,
Партии.СуммаОстаток,
Партии.СуммаНДСОстаток,
Партии.ДатаПартии,
Партии.НомерПартии
ПОМЕСТИТЬ ПартииПодготовкаУИД
ИЗ
Партии КАК Партии
СГРУППИРОВАТЬ ПО
Партии.Номенклатура.Артикул,
Партии.Номенклатура,
Партии.Характеристика,
Партии.Серия,
Партии.УИДПартии,
Партии.СтавкаНДС,
Партии.СуммаОстаток,
Партии.СуммаНДСОстаток,
Партии.ДатаПартии,
Партии.НомерПартии
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПартииПодготовкаУИД.НоменклатураАртикул,
ПартииПодготовкаУИД.Номенклатура,
ПартииПодготовкаУИД.Характеристика,
ПартииПодготовкаУИД.Серия,
ПартииПодготовкаУИД.КоличествоОстаток,
ПартииПодготовкаУИД.УИДПартии,
СУММА(ПартииПодготовкаУИД1.КоличествоОстаток) КАК КоличествоВыше,
ПартииПодготовкаУИД.СтавкаНДС,
ПартииПодготовкаУИД.СуммаОстаток,
ПартииПодготовкаУИД.СуммаНДСОстаток,
ПартииПодготовкаУИД.ДатаПартии,
ПартииПодготовкаУИД.НомерПартии
ПОМЕСТИТЬ ПартииСИтогами
ИЗ
ПартииПодготовкаУИД КАК ПартииПодготовкаУИД
ЛЕВОЕ СОЕДИНЕНИЕ ПартииПодготовкаУИД КАК ПартииПодготовкаУИД1
ПО ПартииПодготовкаУИД.Номенклатура = ПартииПодготовкаУИД1.Номенклатура
И ПартииПодготовкаУИД.Характеристика = ПартииПодготовкаУИД1.Характеристика
И ПартииПодготовкаУИД.Серия = ПартииПодготовкаУИД1.Серия
И ПартииПодготовкаУИД.УИДПартии > ПартииПодготовкаУИД1.УИДПартии
СГРУППИРОВАТЬ ПО
ПартииПодготовкаУИД.НоменклатураАртикул,
ПартииПодготовкаУИД.Номенклатура,
ПартииПодготовкаУИД.Характеристика,
ПартииПодготовкаУИД.Серия,
ПартииПодготовкаУИД.КоличествоОстаток,
ПартииПодготовкаУИД.УИДПартии,
ПартииПодготовкаУИД.СтавкаНДС,
ПартииПодготовкаУИД.СуммаОстаток,
ПартииПодготовкаУИД.СуммаНДСОстаток,
ПартииПодготовкаУИД.ДатаПартии,
ПартииПодготовкаУИД.НомерПартии
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СУММА(Отгрузка.Количество) КАК Количество,
Отгрузка.Номенклатура,
Отгрузка.СерияНоменклатуры,
Отгрузка.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ Контроль
ИЗ
Отгрузка КАК Отгрузка
СГРУППИРОВАТЬ ПО
Отгрузка.Номенклатура,
Отгрузка.СерияНоменклатуры,
Отгрузка.ХарактеристикаНоменклатуры
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПартииСИтогами.НоменклатураАртикул,
ПартииСИтогами.Номенклатура,
ПартииСИтогами.Характеристика,
ПартииСИтогами.Серия,
ПартииСИтогами.КоличествоОстаток,
ПартииСИтогами.УИДПартии КАК УидПартии,
ПартииСИтогами.СтавкаНДС,
ПартииСИтогами.КоличествоВыше,
Отгрузка.Количество КАК КоличествоОтгрузка,
ВЫБОР
КОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0) - ПартииСИтогами.КоличествоОстаток < 0
ТОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0)
ИНАЧЕ ПартииСИтогами.КоличествоОстаток
КОНЕЦ КАК Количество,
Отгрузка.Номенклатура КАК Номенклатура2,
Отгрузка.СерияНоменклатуры КАК СерияНоменклатуры1,
Отгрузка.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры1,
ВЫБОР
КОГДА ПартииСИтогами.Номенклатура ЕСТЬ NULL
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК Ошибки,
ПартииСИтогами.СуммаОстаток / ПартииСИтогами.КоличествоОстаток * ВЫБОР
КОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0) - ПартииСИтогами.КоличествоОстаток < 0
ТОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0)
ИНАЧЕ ПартииСИтогами.КоличествоОстаток
КОНЕЦ КАК Сумма,
ПартииСИтогами.СуммаНДСОстаток / ПартииСИтогами.КоличествоОстаток * ВЫБОР
КОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0) - ПартииСИтогами.КоличествоОстаток < 0
ТОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0)
ИНАЧЕ ПартииСИтогами.КоличествоОстаток
КОНЕЦ КАК СуммаНДС,
ПартииСИтогами.ДатаПартии,
&ДатаСписания КАК Период,
&ВидДвижения КАК ВидДвижения,
ПартииСИтогами.НомерПартии
ИЗ
Отгрузка КАК Отгрузка
ЛЕВОЕ СОЕДИНЕНИЕ ПартииСИтогами КАК ПартииСИтогами
ПО Отгрузка.Номенклатура = ПартииСИтогами.Номенклатура
И Отгрузка.ХарактеристикаНоменклатуры = ПартииСИтогами.Характеристика
И Отгрузка.СерияНоменклатуры = ПартииСИтогами.Серия
ГДЕ
(ВЫБОР
КОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0) - ПартииСИтогами.КоличествоОстаток < 0
ТОГДА Отгрузка.Количество - ЕСТЬNULL(ПартииСИтогами.КоличествоВыше, 0)
ИНАЧЕ ПартииСИтогами.КоличествоОстаток
КОНЕЦ > 0
ИЛИ ПартииСИтогами.Номенклатура ЕСТЬ NULL )
PS в данной версии запроса не реализовано остаточное списание суммы остатка партии без количества (как разница в результате округления от деления при списании партии).