Регистр партии товаров и возврат в отчете по розничным продажам

1. N_s_s 2 11.06.17 10:07 Сейчас в теме
Всем доброго дня. Сегодня столкнулся с таким интересным моментом, если в отчете по розничным продажам присутствует возврат, он фиксируется с минусом. все логично, но в движение по регистрам товаров на складах он попадает, а вот в движения по регистру партий уже не попадает. Это моя какая до недонастройка? или проблема 1с? ведь в целом это не правильно у меня в итоге из-за этого не сходятся отчеты по партиям и товарам.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
20. rbw 20.09.17 08:52 Сейчас в теме
(1) добрый день. Я сейчас столкнулся с такой же проблемой.
У нас КА 1.1.88.1
Раньше делали возврат через документы "ВозвратТоваровОтПокупателя" и "РКО".
Теперь с введением онлайн-касс возврат делаем через ЧекККМ на возврат. В табличной части ООРП товар идет с минусом, а вот проводка Д90.02.01 К41.01 с отрицательным количеством не формируется.
При этом по регистру "Товары на складах" все нормально проходит возврат, а вот Партии не возвращаются.
Вы как-то решили проблему?
2. tata_1211 63 11.06.17 10:24 Сейчас в теме
Да нет, движение по партии должен тоже делать. Если стандартная конфигурация - скорее всего проблема в учете.
3. N_s_s 2 11.06.17 19:00 Сейчас в теме
Проверил, так и есть, если в документе отсутствуют возвраты, то он создает движения в регистре партий, если есть минуса то не создает. причем по документу смотри суммарно, если например в документе было 5 продаж и три возврата то он проведет и создаст движение по партиям с количеством 2, а вот если итоговый минус. то по партиям не создает. Поиск в конфигураторе ничего не прояснил. Списание по партиям идет в общем модуле управление запасами партионный учет и там такое чувство что просто не думали что такое возможно, нет подобных условий.
4. N_s_s 2 11.06.17 19:08 Сейчас в теме
Это я сижу на копии экспериментирую, на рабочей базе уже немного другая ситуация, там движение по регистру есть, НО именно эта номенклатура в движение не попадает.
В результате отчет по товарам на складах "- 3" товара расходом видит, а ведомость по партиям нет и соответственно пошел разбег.
5. tata_1211 63 11.06.17 19:20 Сейчас в теме
а в первичной продаже по возврату партия была списана? правда, если конфа стандартная - скорее всего проблема именно в учете. Обычно моментыпо партионке в стандартных конфигурациях работают правильно.
7. N_s_s 2 11.06.17 19:24 Сейчас в теме
(5) Логика не совсем корректная у 1С. Это из того что я вычитал.
8. N_s_s 2 11.06.17 19:25 Сейчас в теме
(5)
а в первичной продаже по возврату партия была списана?

я не понял Ваш вопрос.
10. tata_1211 63 11.06.17 19:31 Сейчас в теме
(8) возврат не может быть ниоткуда. если не было продажи - нет оснований возвращать списанную партию. Поэтому посмотрите, была ли продажа по этому возврату, и списалась ли там партия.
11. N_s_s 2 11.06.17 19:38 Сейчас в теме
(10)где то мы друг друга не до понимаем. Есть поступление конкретно 30 штук, идут продажи в течении 5 дней. Фиксируются отчетами по розничным продажам. Приходит покупатель возвращает вчерашнюю тушенку, в этот день её не продавали в результате в отчете минус и в партии не падает.
Прикрепленные файлы:
6. N_s_s 2 11.06.17 19:22 Сейчас в теме
Продолжу дальше свои рассуждения, вроде все логично, мы если день в день то формируем возврат по чеку ккм и по сути у нас никаких минусов быть в отчете по розничным продажам быть не должно, если в другой день возврат, то уже документом возврат товаров от покупателя, большое и сомнительное НО как это делать в интерфейсе кассира УТ 10.3. Дальше больше, а если это обмен как у меня с фронтолом? выходит мне нужно переписать загрузку, чтоб при минусах у меня создавался документ возврата?
9. tata_1211 63 11.06.17 19:29 Сейчас в теме
(6) Я попыталась воспроизвести на УТ обычные формы (правда, украинская конфигурация) ситуацию - продажа в один день (по чеку ККМ), возврат на следующий день - все корректно отразилось как по регистру товары на складах, та и по регистру партии товаров на складах. Так что, наверное, придется все-таки искать концы по корректности учета. Как вариант- попробуйте в своей копии базы всю операцию отразить по "девственно чистому товару" (его создать создать по нему приход и дальше то, что вам нужно). Тогда будет чистый эксперимент. Если по чистому эксперименту все будет ОК - тогда вопрос в учете.
12. N_s_s 2 11.06.17 19:40 Сейчас в теме
(9) я выше об этом и писал, что если день в день происходит, то никаких вопросов, так как итог по этой номенклатуре будет 0 или плюс, а вот если делаешь возврат по дню ранее, то минус
13. tata_1211 63 11.06.17 19:44 Сейчас в теме
(12) Правда, проводила эксперимент, где продажу (чек ККМ и отчет о розничных продажах) отразила 10.06, а чек ККМ с возвратом и, соответственно, отчет о розничных продажах с минусом провела 11.06. Все по партионке прошло. И еще раз советую провести "чистый эксперимент".
14. N_s_s 2 11.06.17 19:49 Сейчас в теме
(13) Вы как сделали чек ккм с возвратом то я не пойму? руками что ли просто добавили его? как документ? Понимаете, когда кассир работает за кассой у него интерфейс, который предлагает для возврата выбрать чек, это первый момент, но с другой стороны тут это и решение, что не вернут старое. Это продукты поэтому вроде как нормальная ситуация. Вы попробуйте другую ситуацию сделать. Сформируйте отчет по продажам и в него вбейте минус и посмотрите что будет. Я понимаю, что ситуацию которую вы описываете отработает нормально, но у неё продолжение есть чеки соберутся в отчет и там уже будет "косяк". Попробуйте смоделировать ситуацию с минусом в отчете по розничным продажам.
15. tata_1211 63 11.06.17 19:52 Сейчас в теме
А можете выложить скрин с отчетом по продажам (не проводки, а сам документ), где фигурирует этот возврат?
16. N_s_s 2 11.06.17 19:57 Сейчас в теме
(15) конечно
Прикрепленные файлы:
17. tata_1211 63 11.06.17 19:59 Сейчас в теме
(16) может, будет быстрее, если я гляну по Тимке? Вы мне воспроизведете всю ситуацию, и тогда быстрее разберемся.
18. N_s_s 2 11.06.17 20:07 Сейчас в теме
19. N_s_s 2 12.06.17 06:00 Сейчас в теме
Вопрос остается открытым, может методология не верная? и минусы прошлого дня нельзя в отчет по розничным пихать? а возвратом у оператора оформлять, но ладно у нас мелкий магазин с фронтом на фронтоле и бэком в виде с-ки, а как в суперах? там что возвратами занимаются менеджеры отдельно?
21. N_s_s 2 20.09.17 12:17 Сейчас в теме
У нас другая ситуация. У нас продажи через фронт на фронтоле, а бэк на УТ 10.3. Решили вопрос просто, если надо возврат сделать идите к старшему и оформляйте возврат. И проблема с возвратом возникает только в случае возврата от другого дня, внутри дня всё ок. Другого выхода мы не нашли. Хотя тоже не корректно, так как чек на возврат не уходит через ККТ, опять же в развитие темы, можно настроить доступ к ККТ по сети и печать чека выводить на него(теоретически). Сам такое делать не пробовал но и сложностей сильно не вижу.
22. rbw 21.09.17 04:39 Сейчас в теме
(21)
ясно.
в общем, в рамках ОтчетаОРозничныхПродажах проблема не решена. Наверное, надо будет добавить свою проводку в конфигураторе.
а чек вам можно печатать из РКО, если он есть во Фронтоле (я с ним дело не имел, не знаю)...только права придется кассирам лишние дать.
23. N_s_s 2 21.09.17 09:14 Сейчас в теме
(22) её невозможно решить в рамках Отчета по розничным, проблема в том что мы не можем вернуть то, что не было продано. Можно ещё как вариант сделать к примеру как в далионе, допилить чеки в отчет по розничным и при проведении и наличии чеков в минус по смене формировать чек возврата программно
24. rbw 21.09.17 09:53 Сейчас в теме
(23) в общем, нашел я где проверяется условие на отрицательное количество.
ОбщиеМодули - УправлениеЗапасамиПартионныйУчет - Процедура СписаниеПартий(СтрокаДокумента, СтруктураПараметров, РегистрУчета)

Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
Если КоличествоОсталосьПогасить <= 0 Тогда
Прервать;
КонецЕсли;

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

Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
Если КоличествоОсталосьПогасить <= 0 и ТипЗнч(СтруктураПараметров.Регистратор)<>Тип("ДокументСсылка.ОтчетОРозничныхпродажах") Тогда
Прервать;
КонецЕсли;
25. N_s_s 2 21.09.17 17:07 Сейчас в теме
(24) Совсем ты некорректно сделал, партионку то поломал. Вот смотри ситуация.
У тебя купили вчера булку хлеба и сегодня булку хлеба(условно), сегодня тебе вернули 2 булки, не было вчера у покупателя время прийти, ты в результате своих действий(кода) спишешь одну булку по партиям и две по товарам на складах, я сейчас о регистре, и если сформируешь потом два отчета: ведомость по партиям и ведомость по складам, то один тебе покажет фактический остаток, а второй покажет +1 к фактическому остатку, тем самым ты рушишь партионный учет.
26. rbw 22.09.17 06:38 Сейчас в теме
(25) почему вы решили, что по "Товарам на складах" у меня спишется 2 булки? Если продажа и возврат второй булки происходят в один день, то они в ООРП вообще не попадут. Там будет только списание 1 (вчерашней) булки. Вот, не поленился даже пример запилить с новым товаром.
Прикрепленные файлы:
27. MrFlanker 223 12.06.18 19:44 Сейчас в теме
Такая же проблема, тема актуальна. Все типовое. Возврат не попадает в ведомость по партиям.
29. realmrak 6 23.10.19 12:28 Сейчас в теме
(27) эмпирическим путем замечена следующая логика - примеры на цифрах.

Пример 1:
- на "начало" документа остаток - 10 штук.
- в документе ОоРП три строчки - 8 штук, 7 штук, -8 штук
- при проведении ошибка - не списано 5 штук по партиям, по партиям два движения - расход на 8 и 2 штуки.

Пример 2:
- на "начало" документа остаток - 10 штук.
- в документе ОоРП три строчки - 8 штук, 2 штук, -8 штук
- при проведении все хорошо - по партиям три движения - расход на 8, 2, -8 соответственно.

Вывод: в одном документе 1С сначала пытается списать весь расход с плюсом, и только потом берется за минусовый, если все ОК. То есть сначала все списали, а потом уже возвращаем.
30. realmrak 6 23.10.19 13:07 Сейчас в теме
(29) в дополнение к посту - у меня конфа УПП для Украины, проблему решил в самом документе. Процедура ДвиженияПоРегиструСписанныеТовары(), колонка СуммаЗадолженности не была указана среди суммируемых:

//свернем таблицу движений так, чтобы по регистру списанные товары проходили "чистые" продажи или возвраты.
	ТаблицаДвижений.Колонки.Удалить("НомерСтроки");
	ТаблицаДвижений.Колонки.Удалить("НомерСтрокиДокумента");
	СписокСуммируемыхКолонок = "Количество, ПроводкиСуммаСНДСРегл, ПроводкиСуммаНДСРегл, СуммаЗадолженности";
	СписокФиксируемыхКолонок = "";
	Для каждого Колонка Из ТаблицаДвижений.Колонки Цикл
		
		ИмяКолонки = Колонка.Имя;
		
		Если ИмяКолонки = "Количество" ИЛИ ИмяКолонки = "ПроводкиСуммаСНДСРегл" ИЛИ ИмяКолонки = "ПроводкиСуммаНДСРегл" ИЛИ ИмяКолонки = "СуммаЗадолженности" Тогда 
			Продолжить;
		ИначеЕсли СписокФиксируемыхКолонок <> "" Тогда
			СписокФиксируемыхКолонок = СписокФиксируемыхКолонок + ",";
		КонецЕсли;
		
		СписокФиксируемыхКолонок = СписокФиксируемыхКолонок + ИмяКолонки;
		
	КонецЦикла; 
	ТаблицаДвижений.Свернуть(СписокФиксируемыхКолонок, СписокСуммируемыхКолонок);
	ТаблицаДвижений.Колонки.Добавить("НомерСтроки");
	ТаблицаДвижений.Колонки.Добавить("НомерСтрокиДокумента");
Показать
28. MikStyle 276 29.09.18 00:34 Сейчас в теме
Вот тут посмотрите. Нашел решение. "http://forum-1c.ru/index.php?topic=67886.0"

Решение нашел следующее:
ОбщийМодуль.УправлениеЗапасамиПартионныйУчет
Код: [Выделить]
Процедура ВыполнитьСписание(СтруктураПараметров, ТаблицаСписания, МоментКон, Останавливаться = Ложь, ПроведениеОстановлено = Ложь )

Код: [Выделить]
  // Возврат товаров от покупателя (возврат от комиссионера обрабатывается основным алгоритмом списания
    // фактически являясь частным случаем перемещения товаров)
    ИначеЕсли СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.ВозвратТоваровОтПокупателя")
        // АДМ+++ Отчеты о розничных продажах. Не приходуются возвраты от покупателей в партиях.
        ИЛИ СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.ОтчетОРозничныхПродажах")
        // АДМ--- 
        Тогда
        
        ТребуетсяПолучитьОстатки = НЕ ТаблицаСписания[0].КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.ВозвратОтПокупателя;
        //СтруктураПараметров.Вставить("Покупатель",ТаблицаСписания[0].Покупатель);
    //ИначеЕсли СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.РеализацияТоваровУслуг")
    //    ИЛИ СтруктураПараметров.ТипЗначенияРегистратора = Тип("ДокументСсылка.КорректировкаРеализации")
    //    Тогда
    //    СтруктураПараметров.Вставить("Покупатель",ТаблицаСписания[0].Покупатель);
    КонецЕсли;
Показать


Вот тут не уверен, нужно ли это ИЛИ, т.к. ТребуетсяПолучитьОстатки от этого не меняется. Будем считать, что не нужен, но есть.

А вот здесь уже мое решение проблемы.
Код: [Выделить]
  // Специфические случаи списания :
                
                // АДМ+++ Отчеты о розничных продажах. Не приходуются возвраты от покупателей в партиях.
                Если СтрокаДокумента.Количество < 0 И ТипЗнч(СтрокаДокумента.Регистратор)=Тип("ДокументСсылка.ОтчетОРозничныхПродажах") Тогда
                    СтрокаДокумента.КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.ВозвратОтПокупателя;
                    СтрокаДокумента.Количество = СтрокаДокумента.Количество * -1;
                    
                    Запрос = Новый Запрос;
                    Запрос.Текст = 
                    "ВЫБРАТЬ
                    |    ПартииТоваровНаСкладах.Регистратор
                    |ИЗ
                    |    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
                    |ГДЕ
                    |    ПартииТоваровНаСкладах.Номенклатура = &Номенклатура
                    |    И ПартииТоваровНаСкладах.ВидДвижения = &ВидДвижения
                    |    И ПартииТоваровНаСкладах.Регистратор.Организация = &Организация
                    |    И ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладах.Регистратор) = ТИП(Документ.ОтчетОРозничныхПродажах)
                    |    И ПартииТоваровНаСкладах.Склад = &Склад
                    |    И ПартииТоваровНаСкладах.Количество >= &Количество
                    |    И ПартииТоваровНаСкладах.Регистратор.Дата < &Дата
                    |
                    |УПОРЯДОЧИТЬ ПО
                    |    ПартииТоваровНаСкладах.Период УБЫВ
                    |АВТОУПОРЯДОЧИВАНИЕ";
                    Запрос.УстановитьПараметр("Номенклатура", СтрокаДокумента.Номенклатура);
                    Запрос.УстановитьПараметр("ВидДвижения", ВидДвиженияНакопления.Расход);
                    Запрос.УстановитьПараметр("Количество", СтрокаДокумента.Количество);
                    Запрос.УстановитьПараметр("Организация", СтрокаДокумента.Регистратор.Организация);
                    Запрос.УстановитьПараметр("Склад", СтрокаДокумента.Регистратор.Склад);  
Показать

//Только Возможно надо писать
Запрос.УстановитьПараметр("Склад", СтрокаДокумента.Склад);

   Запрос.УстановитьПараметр("Дата", СтрокаДокумента.Регистратор.Дата);



 Выборка = Запрос.Выполнить().Выбрать();
                    Если Выборка.Следующий() Тогда
                        СтрокаДокумента.ДокументПартии = Выборка.Регистратор;
                    Иначе
                        Сообщить("Возврат номенклатуры: " + СтрокаДокумента.Номенклатура + " - не найдена партия продажи. Приход не будет выполнен.");
                    КонецЕсли;
user848218; MrFlanker; SergIG; oneal1389; +4 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот