|
Альфа-Авто 4.1: Остаток по кассе | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
10.04.18
✎
18:32
|
В Альфа-Авто 4.1.01.30 есть такая функция:
// Возвращает таблицу остатков по КассеККМ // Параметры: // КассаККМ - СправочникСсылка.КассыККМ // НаМомент - Момент времени на который получаем остатки // Функция дкПолучитьОстатокПоКассеККМ(КассаККМ,НаМомент) Экспорт Документ = Неопределено; Если ТипЗнч(НаМомент) = Тип("Дата") Тогда ДатаРасчета = НаМомент; ИначеЕсли ТипЗнч(НаМомент) = Тип("МоментВремени") Тогда Документ = НаМомент.Ссылка; ДатаРасчета = НаМомент.Дата; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |КассыККМ.СпособОплаты КАК ТипОплаты, |СУММА(ВЫБОР | КОГДА КассыККМ.ВидДвижения = &ВидДвижения | И КассыККМ.Сумма > 0 | ТОГДА ЕСТЬNULL(КассыККМ.Сумма, 0) | ИНАЧЕ 0 |КОНЕЦ) - |Сумма(ВЫБОР | КОГДА КассыККМ.ВидДвижения = &ВидДвиженияВозврат | И КассыККМ.Сумма > 0 | ТОГДА ЕСТЬNULL(КассыККМ.Сумма, 0) | ИНАЧЕ 0 |КОНЕЦ) КАК Сумма, | |-1* (СУММА(ВЫБОР | КОГДА КассыККМ.ВидДвижения = &ВидДвижения | И КассыККМ.Сумма < 0 | ТОГДА ЕСТЬNULL(КассыККМ.Сумма, 0) | ИНАЧЕ 0 |КОНЕЦ) - |Сумма(ВЫБОР | КОГДА КассыККМ.ВидДвижения = &ВидДвиженияВозврат | И КассыККМ.Сумма < 0 | ТОГДА ЕСТЬNULL(КассыККМ.Сумма, 0) | ИНАЧЕ 0 |КОНЕЦ)) КАК СуммаВозврат | |ИЗ //+МВ 26.09.2017 заменил // | РегистрНакопления.КассыККМ КАК КассыККМ" + ?(Документ = Неопределено, "", " И // | (НЕ КассыККМ.Регистратор = &Ссылка)") + " | РегистрНакопления.КассыККМ КАК КассыККМ //-МВ |ГДЕ | КассыККМ.Период <= &НаМомент | И КассыККМ.КассаККМ = &КассаККМ //+МВ 26.09.2017 добавил | И КассыККМ.Регистратор <> &Ссылка //-МВ | |СГРУППИРОВАТЬ ПО | КассыККМ.СпособОплаты"; Если Документ = Неопределено Тогда //+МВ 26.09.2017 Запрос.Текст = СтрЗаменить(Запрос.Текст, "И КассыККМ.Регистратор <> &Ссылка", ""); КонецЕсли; //-МВ Запрос.УстановитьПараметр("НаМомент",ДатаРасчета); Запрос.УстановитьПараметр("КассаККМ",КассаККМ); Запрос.УстановитьПараметр("Ссылка",Документ); Запрос.УстановитьПараметр("ВидДвижения",ВидДвиженияНакопления.Приход); Запрос.УстановитьПараметр("ВидДвиженияВозврат",ВидДвиженияНакопления.Расход); тзЗапрос = Новый ТаблицаЗначений; тзЗапрос.Колонки.Добавить("ТипОплаты"); тзЗапрос.Колонки.Добавить("Сумма"); тзЗапрос.Колонки.Добавить("СуммаВозврат"); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Сумма = 0 И Выборка.СуммаВозврат = 0 Тогда Продолжить; ИначеЕсли Выборка.ТипОплаты.Объект = Перечисления.ТипыОплатыВРознице.Наличные И Выборка.Сумма = 0 Тогда Продолжить; КонецЕсли; НоваяСтрока = тзЗапрос.Добавить(); НоваяСтрока.ТипОплаты = Выборка.ТипОплаты; НоваяСтрока.Сумма = Выборка.Сумма; НоваяСтрока.СуммаВозврат = 0; Если Выборка.ТипОплаты.Объект = Перечисления.ТипыОплатыВРознице.Наличные Тогда НоваяСтрока.Сумма = НоваяСтрока.Сумма-Выборка.СуммаВозврат; Иначе НоваяСтрока.СуммаВозврат = Выборка.СуммаВозврат; КонецЕсли; КонецЦикла; Возврат тзЗапрос; КонецФункции Правда с ошибка, но вроде поправил. Более полугода к ней претензий не было, пока не стали отбивать чеки по "Плат. карта". А именно чеки возврата по "Плат. карта", какая-то хрень полезла... Возвратные чеки имеют ВидДвиженияНакопления.Приход, но со знаком минус. ВидДвиженияНакопления.Расход - только документы Инкассации. Сумма прихода наличных берется итоговая: Сумма - СуммаВозврат, гасится расходом инкассации (изъятия из кассы) запрошлые дни. В результате по наличным функция выдает остаток только по текущему дню. А по "Плат. карта" сумму не объединяются Сумма и СуммаВозврат, расходом инкассации не гасятся возвраты по "Плат. карта", и вылазят с прошлых дней!? Толи не все исправил как надо, толи... запутался!? |
|||
1
Mikhail Volkov
11.04.18
✎
14:03
|
Сумма - остаток прихода формируется судя по запросу из:
+ (КассыККМ.ВидДвижения = &ВидДвижения И КассыККМ.Сумма > 0) - из сумм приходов, оплаты, при отбитии чеков - (КассыККМ.ВидДвижения = &ВидДвиженияВозврат И КассыККМ.Сумма > 0) - суммы изъятия из кассы при инкассации СуммаВозврат - остаток возвратов формируется судя по запросу из: - (КассыККМ.ВидДвижения = &ВидДвижения И КассыККМ.Сумма < 0) - прихода отрицательных сумм, т.е. при отбитии возвратных чеков + (КассыККМ.ВидДвижения = &ВидДвиженияВозврат И КассыККМ.Сумма < 0) - отрицательные суммы изъятия из кассы при инкассации! При наличных такое невозможно, может при операциях с "Плат. карта" такое возможно? Допустим вчера отбили чек на 100, и возвратный чек на 20. Получили остаток Сумма = 100, СуммаВозврат = 20. Сделали инкассацию: изъяли 80. А сегодня смотрим остаток: Сумма = (100 - 80), СуммаВозврат = 20!? Сегодня чеков еще не отбивали. |
|||
2
Mikhail Volkov
11.04.18
✎
16:23
|
Мне вообще не понятны эти условия КассыККМ.Сумма > 0 и КассыККМ.Сумма < 0 в тексте запроса к регистру остатков!? КассыККМ.Сумма - это накопленный ресурс на определенный момент времени, это же не измерения КассаККМ или СпособОплаты. Или это ОстаткиИОбороты?
|
|||
3
Mikhail Volkov
12.04.18
✎
07:10
|
Кажется разобрался: изъятие по "Плат. карта" проводится по кассе двумя строками: отдельно Сумма, отдельно -СуммаВозврат. Это изъятие наличных общей строкой: Сумма - СуммаВозврат.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |