Ошибка прервышения количества при возврате в БП3
У клиента не проводится возрат, выдает ошибку:
Документом "Реализация (акт, накладная, УПД) 0000-000374 от 19.12.2024 0:00:00" было реализовано "Товар" на "1" ед. меньше, чем возвращается.
Хотя в продажах две штуки и в возврате две.

Проверка происходит в модуле УчетТоваров:

Количество отгружено равно нулю:

Я долго анализировал текст запроса, но в итоге заметил в консоли, что в регистраторы попадает корректировка реализации, где вместо двух штук продают одну. Не заметил в карточке счета 41.01 этот документ.
UPD: все плохо, это ошибка 1С, там используются все корректировки, связанные с реализацией, даже не проведенные и помеченные на удаление, вот участок запроса:
ВЫБРАТЬ
КорректировкаРеализации.Ссылка
ИЗ
Документ.КорректировкаРеализации КАК КорректировкаРеализации
ГДЕ
КорректировкаРеализации.ИсходныйДокументРеализации = &Регистратор
И КорректировкаРеализации.Ссылка <> &ЭтотВозврат
И КорректировкаРеализации.Дата <= &КонДата
Остается только отвязать корректировку от реализации или очистить табличную часть корректировки.
UPD 2:
Корректировка реализации не помогла. В запросе какая-то проблема, она не считает количество отгружено, потому что количество = 0.
Попробовал сначала поменять в запросе:

Не помогло, в итоге просто перекрыл этот контроль:

Все изменения в модуле УчетТоваров.
Весь текст запроса, как обычно, огромный:
ВЫБРАТЬ
&Регистратор КАК Ссылка
ПОМЕСТИТЬ ВТ_ДокументыОтгрузки
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВозвратыТоваров.Регистратор
ИЗ
РегистрНакопления.ВозвратыТоваров КАК ВозвратыТоваров
ГДЕ
ВозвратыТоваров.Сделка = &Регистратор
И ВозвратыТоваров.Период <= &КонДата И ВозвратыТоваров.Активность И ВозвратыТоваров.Регистратор <> &ЭтотВозврат
ОБЪЕДИНИТЬ
ВЫБРАТЬ
КорректировкаРеализации.Ссылка
ИЗ
Документ.КорректировкаРеализации КАК КорректировкаРеализации
ГДЕ
КорректировкаРеализации.ИсходныйДокументРеализации = &Регистратор
И КорректировкаРеализации.Ссылка <> &ЭтотВозврат
И КорректировкаРеализации.Дата <= &КонДата
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК Номенклатура,
НЕОПРЕДЕЛЕНО КАК Партия,
ХозрасчетныйОбороты.Счет КАК СчетУчета,
ХозрасчетныйОбороты.Период КАК Период,
СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Сумма,
СУММА(ЕСТЬNULL(ХозрасчетныйОбороты.СуммаНУОборотКт, 0)) КАК СуммаНУ,
СУММА(ЕСТЬNULL(ХозрасчетныйОбороты.СуммаПРОборотКт, 0)) КАК СуммаПР,
СУММА(ЕСТЬNULL(ХозрасчетныйОбороты.СуммаВРОборотКт, 0)) КАК СуммаВР,
СУММА(ХозрасчетныйОбороты.КоличествоОборотКт) КАК Количество,
0 КАК КоличествоОтгружено
ПОМЕСТИТЬ ВТ_СписанныеТовары
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(
&НачМесяцаРеализации,
&КонДата,
Месяц,
Счет В (&СчетКтНеПартионный),
&ВидыСубконтоБезПартий,
Организация = &Организация
И ИСТИНА
И Субконто1 В (&Товары)
И Субконто2 = &СкладОтгрузки,
,
) КАК ХозрасчетныйОбороты
СГРУППИРОВАТЬ ПО
ХозрасчетныйОбороты.Субконто1,
ХозрасчетныйОбороты.Счет,
ХозрасчетныйОбороты.Период
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВЫБОР
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
ИНАЧЕ НЕОПРЕДЕЛЕНО
КОНЕЦ,
НЕОПРЕДЕЛЕНО,
ХозрасчетныйДвиженияССубконто.СчетКт,
НАЧАЛОПЕРИОДА(ХозрасчетныйДвиженияССубконто.Период, МЕСЯЦ),
-ХозрасчетныйДвиженияССубконто.Сумма,
ЕСТЬNULL(-ХозрасчетныйДвиженияССубконто.СуммаНУКт, 0),
ЕСТЬNULL(-ХозрасчетныйДвиженияССубконто.СуммаПРКт, 0),
ЕСТЬNULL(-ХозрасчетныйДвиженияССубконто.СуммаВРКт, 0),
-ХозрасчетныйДвиженияССубконто.КоличествоКт,
0
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
&НачМесяцаРеализации,
&КонДата,
Организация = &Организация
И ИСТИНА
И СчетКт В (&СчетКтНеПартионный)
И НеКорректироватьСтоимостьАвтоматически
И КоличествоКт < 0
И ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
И СубконтоКт1 В (&Товары)
И ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады)
И СубконтоКт2 = &СкладОтгрузки,
,
) КАК ХозрасчетныйДвиженияССубконто
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВЫБОР
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
ИНАЧЕ НЕОПРЕДЕЛЕНО
КОНЕЦ,
ВЫБОР
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии)
ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
ИНАЧЕ НЕОПРЕДЕЛЕНО
КОНЕЦ,
ХозрасчетныйДвиженияССубконто.СчетКт,
НАЧАЛОПЕРИОДА(ХозрасчетныйДвиженияССубконто.Период, МЕСЯЦ),
0,
0,
0,
0,
0,
ХозрасчетныйДвиженияССубконто.КоличествоКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
&НачМесяцаРеализации,
&КонДата,
Организация = &Организация
И Регистратор В
(ВЫБРАТЬ
ВТДокументыОтгрузки.Ссылка ИЗ ВТДокументыОтгрузки)
И СчетКт В (&СчетКтПартионный, &СчетКтНеПартионный)
И ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
И СубконтоКт1 В (&Товары),
,
) КАК ХозрасчетныйДвиженияССубконто
ГДЕ
ХозрасчетныйДвиженияССубконто.КоличествоКт >= 0
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВозвратыТоваровОбороты.Номенклатура,
ВозвратыТоваровОбороты.Партия,
ВозвратыТоваровОбороты.СчетУчета,
&НачМесяцаРеализации,
0,
0,
0,
0,
0,
-ВозвратыТоваровОбороты.КоличествоОборот
ИЗ
РегистрНакопления.ВозвратыТоваров.Обороты(
&НачМесяцаРеализации,
&КонДата,
Регистратор,
Сделка = &Регистратор
И Организация = &Организация
И СчетУчета В (&СчетКтПартионный, &СчетКтНеПартионный)
И Номенклатура В (&Товары)) КАК ВозвратыТоваровОбороты
ГДЕ
ВозвратыТоваровОбороты.Регистратор <> &ЭтотВозврат
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТСписанныеТовары.Номенклатура КАК Номенклатура, ВТСписанныеТовары.Партия КАК Партия,
ВТСписанныеТовары.СчетУчета КАК СчетУчета, ВТСписанныеТовары.Период КАК Период,
ЕСТЬNULL(РеквизитыДокументаПартии.ДатаРегистратора, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПартии,
СУММА(ВТСписанныеТовары.Сумма) КАК Сумма, СУММА(ВТСписанныеТовары.СуммаНУ) КАК СуммаНУ,
СУММА(ВТСписанныеТовары.СуммаПР) КАК СуммаПР, СУММА(ВТСписанныеТовары.СуммаВР) КАК СуммаВР,
СУММА(ВТСписанныеТовары.Количество) КАК Количество, СУММА(ВТСписанныеТовары.КоличествоОтгружено) КАК КоличествоОтгружено,
НАЧАЛОПЕРИОДА(ВТСписанныеТовары.Период, МЕСЯЦ) < &НачТекущегоМесяца КАК ВозвратПрошлогоМесяца ИЗ ВТСписанныеТовары КАК ВТСписанныеТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК РеквизитыДокументаПартии ПО (РеквизитыДокументаПартии.Организация = &Организация) И ВТСписанныеТовары.Партия = РеквизитыДокументаПартии.Документ
ГДЕ
ВТ_СписанныеТовары.Номенклатура В(&Товары)
СГРУППИРОВАТЬ ПО
ВТСписанныеТовары.Номенклатура, ВТСписанныеТовары.СчетУчета,
ВТСписанныеТовары.Период, ВТСписанныеТовары.Партия,
ЕСТЬNULL(РеквизитыДокументаПартии.ДатаРегистратора, ДАТАВРЕМЯ(1, 1, 1)),
НАЧАЛОПЕРИОДА(ВТ_СписанныеТовары.Период, МЕСЯЦ) < &НачТекущегоМесяца
ИМЕЮЩИЕ
СУММА(ВТ_СписанныеТовары.Количество) > 0
УПОРЯДОЧИТЬ ПО
ВТСписанныеТовары.Номенклатура, ДатаПартии УБЫВ, ВТСписанныеТовары.Период
ИТОГИ ПО
Номенклатура,
СчетУчета,
Партия
UPD 3: сделал заплатку попроще в модуль ОбщегоНазначенияКлиентСервер:
&Вместо("СообщитьПользователю") Процедура дор_СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных, Знач Поле, Знач ПутьКДанным, Отказ) //Осипов 26.06.10 отключаем контроль возвратов Если Найти(ТекстСообщенияПользователю, "меньше, чем возвращается.") <> 0 Тогда Сообщить("ПРОИГНОРИРОВАНО: " + ТекстСообщенияПользователю); Возврат; КонецЕсли; ПродолжитьВызов(ТекстСообщенияПользователю, КлючДанных, Поле, ПутьКДанным, Отказ); КонецПроцедуры
Среда: БП 3.0.195.40 Объем: 0.7 час.




Свежие комментарии