Где может находится отрицательный остаток?

1. user1616540 27.09.21 11:07 Сейчас в теме
Добрый день!

Осуществляю переход с ут 10.3 на ут 11.4. На одной базе 2 организации (ип и ооо) несколько складов (основной и магазины) все документы переносятся, цены, номенклатура и тд...

Но, есть отрицательный остаток при выгрузке. Я начал копать, нашел отрицательные остатки товаров по организациям. Который образуется из за того, что товар приходуется на одну, а реализация проходит через другую и наоборот (функция контроля отрицательного остатка по организациям отключена до меня)

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

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

При чем показывает товар, я его беру, смотрю историю поступления, списания, весь путь вообщем... там все ровно. 10 пришло, 8 продали = 2 в остатках. Но он выгрузкой идет как отрицательный.

Уже всю голову сломал, где найти этот остаток, который отрицательный. Куда капать.

Очень буду признателен за помощь и совет.
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 27.09.21 11:16 Сейчас в теме
(1) смотреть правила переноса, например, загрузить их в КД. Там найти запрос и понять его принцип.
3. zelenii 27.09.21 11:31 Сейчас в теме
Типовые правила переноса остатков используют Алгоритм СобственныеТоварыНаСкладах. Он в свою очередь использует запрос:
ВЫБРАТЬ
	НДСПартииТоваровОстатки.Номенклатура КАК Номенклатура,
	НДСПартииТоваровОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	НДСПартииТоваровОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
	НДСПартииТоваровОстатки.Склад КАК Склад,
	НДСПартииТоваровОстатки.СтавкаНДС КАК СтавкаНДС,
	СУММА(НДСПартииТоваровОстатки.СтоимостьОстаток) КАК СтоимостьОстаток,
	СУММА(НДСПартииТоваровОстатки.КоличествоОстаток) КАК КоличествоОстаток,
	СУММА(НДСПартииТоваровОстатки.НДСОстаток) КАК НДСОстаток,
	НДСПартииТоваровОстатки.Организация КАК Организация,
	НДСПартииТоваровОстатки.СчетФактура КАК СчетФактура
ПОМЕСТИТЬ НДСПоПартиям
ИЗ
	РегистрНакопления.НДСПартииТоваров.Остатки(&ДатаОстатков, ) КАК НДСПартииТоваровОстатки

СГРУППИРОВАТЬ ПО
	НДСПартииТоваровОстатки.СтавкаНДС,
	НДСПартииТоваровОстатки.Организация,
	НДСПартииТоваровОстатки.ХарактеристикаНоменклатуры,
	НДСПартииТоваровОстатки.СчетФактура,
	НДСПартииТоваровОстатки.Номенклатура,
	НДСПартииТоваровОстатки.Склад,
	НДСПартииТоваровОстатки.СерияНоменклатуры

ИНДЕКСИРОВАТЬ ПО
	Организация,
	Номенклатура,
	СчетФактура,
	ХарактеристикаНоменклатуры,
	СерияНоменклатуры,
	Склад
;

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

СГРУППИРОВАТЬ ПО
	ОстаткиТоваров.Номенклатура,
	ОстаткиТоваров.Склад,
	ОстаткиТоваров.ХарактеристикаНоменклатуры,
	ОстаткиТоваров.Качество,
	ЕСТЬNULL(ОстаткиТоваров.ДокументОприходования.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)),
	ОстаткиТоваров.СерияНоменклатуры,
	ОстаткиТоваров.СерияНоменклатуры.НомерГТД,
	ОстаткиТоваров.СерияНоменклатуры.СтранаПроисхождения,
	ОстаткиТоваров.СерияНоменклатуры.ПометкаУдаления,
	ОстаткиТоваров.Номенклатура.ВестиУчетПоСериям,
	ОстаткиТоваров.ДокументОприходования

ИНДЕКСИРОВАТЬ ПО
	Организация
;

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

ИНДЕКСИРОВАТЬ ПО
	Номенклатура,
	Организация,
	ДокументОприходования,
	УчетНДСВРазрезеСерийИХарактеристик,
	УчетНДСВРазрезеСкладов
;

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

СГРУППИРОВАТЬ ПО
	НДСПоПартиям.СтавкаНДС,
	ОстаткиПоПартиямСУчетнойПолитикой.Организация,
	ОстаткиПоПартиямСУчетнойПолитикой.Склад,
	ОстаткиПоПартиямСУчетнойПолитикой.Номенклатура,
	ОстаткиПоПартиямСУчетнойПолитикой.ДокументОприходования,
	ОстаткиПоПартиямСУчетнойПолитикой.ВестиУчетПоСериям,
	ОстаткиПоПартиямСУчетнойПолитикой.Характеристика,
	ОстаткиПоПартиямСУчетнойПолитикой.Качество,
	ОстаткиПоПартиямСУчетнойПолитикой.Серия,
	ОстаткиПоПартиямСУчетнойПолитикой.НомерГТД,
	ОстаткиПоПартиямСУчетнойПолитикой.СтранаПроисхождения,
	ОстаткиПоПартиямСУчетнойПолитикой.Количество,
	ОстаткиПоПартиямСУчетнойПолитикой.СуммаИтогоУпр,
	ОстаткиПоПартиямСУчетнойПолитикой.СложныйУчетНДС,
	КурсыВалютСрезПоследних.Курс,
	ОстаткиПоПартиямСУчетнойПолитикой.ПометкаУдаления,
	ЕСТЬNULL(НДСПоПартиям.СтавкаНДС, ОстаткиПоПартиямСУчетнойПолитикой.Номенклатура.СтавкаНДС)

УПОРЯДОЧИТЬ ПО
	Организация,
	Склад,
	СложныйУчетНДС,
	Номенклатура,
	ДокументОприходования

ИТОГИ ПО
	Организация,
	Склад,
	СложныйУчетНДС,
	ДокументОприходования
Показать


Ну ив целом получается все дело в остатках по регистру ПартииТоваровНаСкладах.
4. user1616540 27.09.21 12:47 Сейчас в теме
(3) отчет по партиям смотрю вот, там все ровно, минусов нет, или где то в другом месте глянуть Партии нужно?
5. zelenii 27.09.21 14:46 Сейчас в теме
По хорошему надо убедиться, что именно указанное ПКО, а именно ПКО "ВводОстатковСобственныеТоварыНаСкладах" используется. По идее в обработчике ПослеЗагрузки можно написать Объект.Комментарий= "Да-да, мы грузим именно это". И заново загрузить документ ввод остатков. По идее если у сформированного документа по вводу остатков будет такой комментарий, получится используется именно это ПКО. Ну и собственно говоря значит используется этот Алгоритм. Больше там кроме как в запрос, смотреть больше просто некуда.
Полностью порядок выполнения действий был такой:
1. Смотрю в ПравлаВыгрузкиДанных.
2. Нахожу ВводОстатковСобственныеТоварыНаСкладах в папке ВводОстатковТоваров.
3. Смотрю используемые обработчики и код. Там есть только одна строка с выполнением Алгоритма "СобственныеТоварыВыборка". Ну а он запускает Алгоритм "СобственныеТоварыВыборка". Смотришь его. Он использует много кода. Кстати, пока начал смотреть код понял - все не так однозначно.
Там есть код
Если ВедетсяПартионныйУчетПоСкладам И Не ОценкаМПЗПоСредней Тогда
	Запрос.Текст = Запросы.СобственныеТоварыНаСкладах.Текст;
ИначеЕсли ВедетсяПартионныйУчетПоСкладам И ОценкаМПЗПоСредней Тогда
	Запрос.Текст = Запросы.СобственныеТоварыНаСкладахПоСредней.Текст;
ИначеЕсли Не ВедетсяПартионныйУчетПоСкладам И Не ОценкаМПЗПоСредней Тогда
	Запрос.Текст = Запросы.СобственныеТоварыПартииБезСкладов.Текст;
Иначе // Не ВедетсяПартионныйУчетПоСкладам И ОценкаМПЗПоСредней Тогда
	Запрос.Текст = Запросы.СобственныеТоварыПартииБезСкладовПоСредней.Текст;
КонецЕсли;	
Показать

Собственно в зависимости от настроек результат у выбранных запросов может быть разным. В любом случае надо отлаживать запросы и смотреть запросы.
6. zelenii 27.09.21 14:47 Сейчас в теме
(5)
Вообще любой из запросов который получает остатки берет их из регистра ПартииТоваровНаСкладах. Так что почему и откуда отрицательные остатки - вопрос...
7. zelenii 27.09.21 14:51 Сейчас в теме
Вообще в одном из запросов, в случае ведения оценки по средней используется регистр ТоварыНаСкладах. Может оттуда идут миунсы?
8. user1616540 28.09.21 09:48 Сейчас в теме
(7) да вот в этом и дело, что ни один отчет не показывает отрицательных остатков.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)