Регистр партии товаров и возврат в отчете по розничным продажам
Всем доброго дня. Сегодня столкнулся с таким интересным моментом, если в отчете по розничным продажам присутствует возврат, он фиксируется с минусом. все логично, но в движение по регистрам товаров на складах он попадает, а вот в движения по регистру партий уже не попадает. Это моя какая до недонастройка? или проблема 1с? ведь в целом это не правильно у меня в итоге из-за этого не сходятся отчеты по партиям и товарам.
Прикрепленные файлы:
По теме из базы знаний
- Управление резервами товаров в УТ 11 и ERP. Особенности и нюансы
- Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки
- Перенос остатков, документов и справочников из БП 3.0 в УТ 10.3. Переносятся остатки товаров, взаиморасчетов и денежных средств, а также документы и справочники
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Партионный учет ФИФО ЛИФО. Остатки поступлений, пример получения данных партионного учета, если его нет. Вернуть остатки партий. Списать по срокам годности ФИФО ЛИФО
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) добрый день. Я сейчас столкнулся с такой же проблемой.
У нас КА 1.1.88.1
Раньше делали возврат через документы "ВозвратТоваровОтПокупателя" и "РКО".
Теперь с введением онлайн-касс возврат делаем через ЧекККМ на возврат. В табличной части ООРП товар идет с минусом, а вот проводка Д90.02.01 К41.01 с отрицательным количеством не формируется.
При этом по регистру "Товары на складах" все нормально проходит возврат, а вот Партии не возвращаются.
Вы как-то решили проблему?
У нас КА 1.1.88.1
Раньше делали возврат через документы "ВозвратТоваровОтПокупателя" и "РКО".
Теперь с введением онлайн-касс возврат делаем через ЧекККМ на возврат. В табличной части ООРП товар идет с минусом, а вот проводка Д90.02.01 К41.01 с отрицательным количеством не формируется.
При этом по регистру "Товары на складах" все нормально проходит возврат, а вот Партии не возвращаются.
Вы как-то решили проблему?
Проверил, так и есть, если в документе отсутствуют возвраты, то он создает движения в регистре партий, если есть минуса то не создает. причем по документу смотри суммарно, если например в документе было 5 продаж и три возврата то он проведет и создаст движение по партиям с количеством 2, а вот если итоговый минус. то по партиям не создает. Поиск в конфигураторе ничего не прояснил. Списание по партиям идет в общем модуле управление запасами партионный учет и там такое чувство что просто не думали что такое возможно, нет подобных условий.
Это я сижу на копии экспериментирую, на рабочей базе уже немного другая ситуация, там движение по регистру есть, НО именно эта номенклатура в движение не попадает.
В результате отчет по товарам на складах "- 3" товара расходом видит, а ведомость по партиям нет и соответственно пошел разбег.
В результате отчет по товарам на складах "- 3" товара расходом видит, а ведомость по партиям нет и соответственно пошел разбег.
(10)где то мы друг друга не до понимаем. Есть поступление конкретно 30 штук, идут продажи в течении 5 дней. Фиксируются отчетами по розничным продажам. Приходит покупатель возвращает вчерашнюю тушенку, в этот день её не продавали в результате в отчете минус и в партии не падает.
Прикрепленные файлы:
Продолжу дальше свои рассуждения, вроде все логично, мы если день в день то формируем возврат по чеку ккм и по сути у нас никаких минусов быть в отчете по розничным продажам быть не должно, если в другой день возврат, то уже документом возврат товаров от покупателя, большое и сомнительное НО как это делать в интерфейсе кассира УТ 10.3. Дальше больше, а если это обмен как у меня с фронтолом? выходит мне нужно переписать загрузку, чтоб при минусах у меня создавался документ возврата?
(6) Я попыталась воспроизвести на УТ обычные формы (правда, украинская конфигурация) ситуацию - продажа в один день (по чеку ККМ), возврат на следующий день - все корректно отразилось как по регистру товары на складах, та и по регистру партии товаров на складах. Так что, наверное, придется все-таки искать концы по корректности учета. Как вариант- попробуйте в своей копии базы всю операцию отразить по "девственно чистому товару" (его создать создать по нему приход и дальше то, что вам нужно). Тогда будет чистый эксперимент. Если по чистому эксперименту все будет ОК - тогда вопрос в учете.
(12) Правда, проводила эксперимент, где продажу (чек ККМ и отчет о розничных продажах) отразила 10.06, а чек ККМ с возвратом и, соответственно, отчет о розничных продажах с минусом провела 11.06. Все по партионке прошло. И еще раз советую провести "чистый эксперимент".
(13) Вы как сделали чек ккм с возвратом то я не пойму? руками что ли просто добавили его? как документ? Понимаете, когда кассир работает за кассой у него интерфейс, который предлагает для возврата выбрать чек, это первый момент, но с другой стороны тут это и решение, что не вернут старое. Это продукты поэтому вроде как нормальная ситуация. Вы попробуйте другую ситуацию сделать. Сформируйте отчет по продажам и в него вбейте минус и посмотрите что будет. Я понимаю, что ситуацию которую вы описываете отработает нормально, но у неё продолжение есть чеки соберутся в отчет и там уже будет "косяк". Попробуйте смоделировать ситуацию с минусом в отчете по розничным продажам.
Вопрос остается открытым, может методология не верная? и минусы прошлого дня нельзя в отчет по розничным пихать? а возвратом у оператора оформлять, но ладно у нас мелкий магазин с фронтом на фронтоле и бэком в виде с-ки, а как в суперах? там что возвратами занимаются менеджеры отдельно?
У нас другая ситуация. У нас продажи через фронт на фронтоле, а бэк на УТ 10.3. Решили вопрос просто, если надо возврат сделать идите к старшему и оформляйте возврат. И проблема с возвратом возникает только в случае возврата от другого дня, внутри дня всё ок. Другого выхода мы не нашли. Хотя тоже не корректно, так как чек на возврат не уходит через ККТ, опять же в развитие темы, можно настроить доступ к ККТ по сети и печать чека выводить на него(теоретически). Сам такое делать не пробовал но и сложностей сильно не вижу.
(21)
ясно.
в общем, в рамках ОтчетаОРозничныхПродажах проблема не решена. Наверное, надо будет добавить свою проводку в конфигураторе.
а чек вам можно печатать из РКО, если он есть во Фронтоле (я с ним дело не имел, не знаю)...только права придется кассирам лишние дать.
ясно.
в общем, в рамках ОтчетаОРозничныхПродажах проблема не решена. Наверное, надо будет добавить свою проводку в конфигураторе.
а чек вам можно печатать из РКО, если он есть во Фронтоле (я с ним дело не имел, не знаю)...только права придется кассирам лишние дать.
(22) её невозможно решить в рамках Отчета по розничным, проблема в том что мы не можем вернуть то, что не было продано. Можно ещё как вариант сделать к примеру как в далионе, допилить чеки в отчет по розничным и при проведении и наличии чеков в минус по смене формировать чек возврата программно
(23) в общем, нашел я где проверяется условие на отрицательное количество.
ОбщиеМодули - УправлениеЗапасамиПартионныйУчет - Процедура СписаниеПартий(СтрокаДокумента, СтруктураПараметров, РегистрУчета)
Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
Если КоличествоОсталосьПогасить <= 0 Тогда
Прервать;
КонецЕсли;
Добавил в исключения ООРП и вроде работает. Формируются отрицательные проводки (минусовое количество и минусовые суммы). Не знаю, насколько это корректно, надо бы мнение более опытных людей с этого форума.
Сделал так:
Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
Если КоличествоОсталосьПогасить <= 0 и ТипЗнч(СтруктураПараметров.Регистратор)<>Тип("ДокументСсылка.ОтчетОРозничныхпродажах") Тогда
Прервать;
КонецЕсли;
ОбщиеМодули - УправлениеЗапасамиПартионныйУчет - Процедура СписаниеПартий(СтрокаДокумента, СтруктураПараметров, РегистрУчета)
Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
Если КоличествоОсталосьПогасить <= 0 Тогда
Прервать;
КонецЕсли;
Добавил в исключения ООРП и вроде работает. Формируются отрицательные проводки (минусовое количество и минусовые суммы). Не знаю, насколько это корректно, надо бы мнение более опытных людей с этого форума.
Сделал так:
Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
Если КоличествоОсталосьПогасить <= 0 и ТипЗнч(СтруктураПараметров.Регистратор)<>Тип("ДокументСсылка.ОтчетОРозничныхпродажах") Тогда
Прервать;
КонецЕсли;
(24) Совсем ты некорректно сделал, партионку то поломал. Вот смотри ситуация.
У тебя купили вчера булку хлеба и сегодня булку хлеба(условно), сегодня тебе вернули 2 булки, не было вчера у покупателя время прийти, ты в результате своих действий(кода) спишешь одну булку по партиям и две по товарам на складах, я сейчас о регистре, и если сформируешь потом два отчета: ведомость по партиям и ведомость по складам, то один тебе покажет фактический остаток, а второй покажет +1 к фактическому остатку, тем самым ты рушишь партионный учет.
У тебя купили вчера булку хлеба и сегодня булку хлеба(условно), сегодня тебе вернули 2 булки, не было вчера у покупателя время прийти, ты в результате своих действий(кода) спишешь одну булку по партиям и две по товарам на складах, я сейчас о регистре, и если сформируешь потом два отчета: ведомость по партиям и ведомость по складам, то один тебе покажет фактический остаток, а второй покажет +1 к фактическому остатку, тем самым ты рушишь партионный учет.
(25) почему вы решили, что по "Товарам на складах" у меня спишется 2 булки? Если продажа и возврат второй булки происходят в один день, то они в ООРП вообще не попадут. Там будет только списание 1 (вчерашней) булки. Вот, не поленился даже пример запилить с новым товаром.
Прикрепленные файлы:
(27) эмпирическим путем замечена следующая логика - примеры на цифрах.
Пример 1:
- на "начало" документа остаток - 10 штук.
- в документе ОоРП три строчки - 8 штук, 7 штук, -8 штук
- при проведении ошибка - не списано 5 штук по партиям, по партиям два движения - расход на 8 и 2 штуки.
Пример 2:
- на "начало" документа остаток - 10 штук.
- в документе ОоРП три строчки - 8 штук, 2 штук, -8 штук
- при проведении все хорошо - по партиям три движения - расход на 8, 2, -8 соответственно.
Вывод: в одном документе 1С сначала пытается списать весь расход с плюсом, и только потом берется за минусовый, если все ОК. То есть сначала все списали, а потом уже возвращаем.
Пример 1:
- на "начало" документа остаток - 10 штук.
- в документе ОоРП три строчки - 8 штук, 7 штук, -8 штук
- при проведении ошибка - не списано 5 штук по партиям, по партиям два движения - расход на 8 и 2 штуки.
Пример 2:
- на "начало" документа остаток - 10 штук.
- в документе ОоРП три строчки - 8 штук, 2 штук, -8 штук
- при проведении все хорошо - по партиям три движения - расход на 8, 2, -8 соответственно.
Вывод: в одном документе 1С сначала пытается списать весь расход с плюсом, и только потом берется за минусовый, если все ОК. То есть сначала все списали, а потом уже возвращаем.
(29) в дополнение к посту - у меня конфа УПП для Украины, проблему решил в самом документе. Процедура ДвиженияПоРегиструСписанныеТовары(), колонка СуммаЗадолженности не была указана среди суммируемых:
//свернем таблицу движений так, чтобы по регистру списанные товары проходили "чистые" продажи или возвраты.
ТаблицаДвижений.Колонки.Удалить("НомерСтроки");
ТаблицаДвижений.Колонки.Удалить("НомерСтрокиДокумента");
СписокСуммируемыхКолонок = "Количество, ПроводкиСуммаСНДСРегл, ПроводкиСуммаНДСРегл, СуммаЗадолженности";
СписокФиксируемыхКолонок = "";
Для каждого Колонка Из ТаблицаДвижений.Колонки Цикл
ИмяКолонки = Колонка.Имя;
Если ИмяКолонки = "Количество" ИЛИ ИмяКолонки = "ПроводкиСуммаСНДСРегл" ИЛИ ИмяКолонки = "ПроводкиСуммаНДСРегл" ИЛИ ИмяКолонки = "СуммаЗадолженности" Тогда
Продолжить;
ИначеЕсли СписокФиксируемыхКолонок <> "" Тогда
СписокФиксируемыхКолонок = СписокФиксируемыхКолонок + ",";
КонецЕсли;
СписокФиксируемыхКолонок = СписокФиксируемыхКолонок + ИмяКолонки;
КонецЦикла;
ТаблицаДвижений.Свернуть(СписокФиксируемыхКолонок, СписокСуммируемыхКолонок);
ТаблицаДвижений.Колонки.Добавить("НомерСтроки");
ТаблицаДвижений.Колонки.Добавить("НомерСтрокиДокумента");
Показать
Вот тут посмотрите. Нашел решение. "http://forum-1c.ru/index.php?topic=67886.0"
Решение нашел следующее:
ОбщийМодуль.УправлениеЗапасамиПартионныйУчет
Код: [Выделить]
Код: [Выделить]
Вот тут не уверен, нужно ли это ИЛИ, т.к. ТребуетсяПолучитьОстатки от этого не меняется. Будем считать, что не нужен, но есть.
А вот здесь уже мое решение проблемы.
Код: [Выделить]
//Только Возможно надо писать
Запрос.УстановитьПараметр("Склад", СтрокаДокумента.Склад);
Решение нашел следующее:
ОбщийМодуль.УправлениеЗапасамиПартионныйУчет
Код: [Выделить]
Процедура ВыполнитьСписание(СтруктураПараметров, ТаблицаСписания, МоментКон, Останавливаться = Ложь, ПроведениеОстановлено = Ложь )
Код: [Выделить]
// Возврат товаров от покупателя (возврат от комиссионера обрабатывается основным алгоритмом списания
// фактически являясь частным случаем перемещения товаров)
ИначеЕсли СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.ВозвратТоваровОтПокупателя")
// АДМ+++ Отчеты о розничных продажах. Не приходуются возвраты от покупателей в партиях.
ИЛИ СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.ОтчетОРозничныхПродажах")
// АДМ---
Тогда
ТребуетсяПолучитьОстатки = НЕ ТаблицаСписания[0].КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.ВозвратОтПокупателя;
//СтруктураПараметров.Вставить("Покупатель",ТаблицаСписания[0].Покупатель);
//ИначеЕсли СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.РеализацияТоваровУслуг")
// ИЛИ СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.КорректировкаРеализации")
// Тогда
// СтруктураПараметров.Вставить("Покупатель",ТаблицаСписания[0].Покупатель);
КонецЕсли;
ПоказатьВот тут не уверен, нужно ли это ИЛИ, т.к. ТребуетсяПолучитьОстатки от этого не меняется. Будем считать, что не нужен, но есть.
А вот здесь уже мое решение проблемы.
Код: [Выделить]
// Специфические случаи списания :
// АДМ+++ Отчеты о розничных продажах. Не приходуются возвраты от покупателей в партиях.
Если СтрокаДокумента.Количество < 0 И ТипЗнч(СтрокаДокумента.Регистратор)=Тип("ДокументСсылка.ОтчетОРозничныхПродажах") Тогда
СтрокаДокумента.КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.ВозвратОтПокупателя;
СтрокаДокумента.Количество = СтрокаДокумента.Количество * -1;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПартииТоваровНаСкладах.Регистратор
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
|ГДЕ
| ПартииТоваровНаСкладах.Номенклатура = &Номенклатура
| И ПартииТоваровНаСкладах.ВидДвижения = &ВидДвижения
| И ПартииТоваровНаСкладах.Регистратор.Организация = &Организация
| И ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладах.Регистратор) = ТИП(Документ.ОтчетОРозничныхПродажах)
| И ПартииТоваровНаСкладах.Склад = &Склад
| И ПартииТоваровНаСкладах.Количество >= &Количество
| И ПартииТоваровНаСкладах.Регистратор.Дата < &Дата
|
|УПОРЯДОЧИТЬ ПО
| ПартииТоваровНаСкладах.Период УБЫВ
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Номенклатура", СтрокаДокумента.Номенклатура);
Запрос.УстановитьПараметр("ВидДвижения", ВидДвиженияНакопления.Расход);
Запрос.УстановитьПараметр("Количество", СтрокаДокумента.Количество);
Запрос.УстановитьПараметр("Организация", СтрокаДокумента.Регистратор.Организация);
Запрос.УстановитьПараметр("Склад", СтрокаДокумента.Регистратор.Склад);
Показать//Только Возможно надо писать
Запрос.УстановитьПараметр("Склад", СтрокаДокумента.Склад);
Запрос.УстановитьПараметр("Дата", СтрокаДокумента.Регистратор.Дата);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СтрокаДокумента.ДокументПартии = Выборка.Регистратор;
Иначе
Сообщить("Возврат номенклатуры: " + СтрокаДокумента.Номенклатура + " - не найдена партия продажи. Приход не будет выполнен.");
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот