Организация псевдо-партионного учета на РАУЗ

Программирование - Практика программирования

Имеется 1С самопальная, сделанная на основе КА 1.1 для работы удаленного склада в ОАЭ, в которой: -Используется РАУЗ -Отключен бухгалтерский учет (за ненадобностью) -Отключены все подсистемы работы с НДС (т.к. его там не было до 2018 года) В связи с изменениями законодательства ОАЭ там теперь введен НДС 5% для некоторых видов поставок и отгрузок. Для формирования отчетности по НДС (в частности, возмещения НДС по продажам не облагаемым НДС) решил сделать псевдо-партионный учет НДС. 

Да, да в типовой конфигурации имеется функционал для подготовки данных по НДС, но он тянет за собой необходимость формировать дополнительные регламентные документы и заточен под законодательство РФ, перепиливать эту махину у меня желания нет и вот как вариант я добавил регистр Партии и провожу по нему документы в конце квартала. 

Первое, что было сделано, это заприходованы остатки в партии на 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 в данной версии запроса не реализовано остаточное списание суммы остатка партии без количества (как разница в результате округления от деления при списании партии).

См. также

Комментарии
1. Сергей Коцюра (CheBurator) 3541 03.04.18 01:48 Сейчас в теме
"не реализовано остаточное списание суммы остатка партии без количества"
как это у вас получается.. ну вот списываете количество которое полностью совпадает с остатком количества в регистре. со списанием остатка количества в ноль и сумма лежащая на таком количестве тоже должна уходить в ноль...?
3. Максим Захаров (maxvcb) 45 11.04.18 09:55 Сейчас в теме
(1) Да в идеале в запрос нужно добавить условие, при котором при списании конечного остатка списывалась вся сумма, но в данном случае регистр выступает в качестве основного объекта для обмена с бухгалтерской тамошней программой, которая готовит декларации по НДС. Программа написана на 1С, но не 1С:Совместимо и через конвертацию обмен не проходит потому что 80% кода и объектов конфигурации написано на английском языке. Обмен пришлось писать самому и в качестве объекта обмена выступает вот этот самый регистр Партии НДС, движение приход как поступления и движения расход как отгрузки для целей учета НДС в ОАЭ.
2. user2153 (user596529_a-ivashenko60) 05.04.18 15:37 Сейчас в теме
Автору. В тексте статьи обозначено, что это страна ОАЭ. Объединенные арабские эмираты? И что там делает 1С ? И что делаете там вы? Что-то мне подсказывает что вы - не араб.
4. Максим Захаров (maxvcb) 45 11.04.18 10:01 Сейчас в теме
(2) 1С там тоже есть и даже работает 1 бит там, и довольно не плохо. Программные продукты, которые мне известны там самопальные и самой фирмой 1С не поддерживаются только разработчиками. Вы правы я не араб, но являюсь разработчиком конфигураций на платформе 1С, в том числе и для рынка ОАЭ.
Оставьте свое сообщение