Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 апр 2025, 18:19

Чеки ККМ посчитать сумму всех наличных чеков за день

Автор sali, 15 ноя 2024, 09:09

0 Пользователей и 1 гость просматривают эту тему.

sali

Максим75, вопрос в другом теперь
пытаюсь вывести ТОЛЬКО наличные чеки
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Параметры.Свойство("КассоваяСмена", КассоваяСмена);
Параметры.Свойство("КассаККМ", КассаККМ);
Параметры.Свойство("ВидДвиженияНаличных", ВидДвиженияНаличных);

Если ВидДвиженияНаличных = Перечисления.ВидыДвиженияНаличных.Внесение Тогда
Заголовок = "Внесение";
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВнесение;
Иначе
Заголовок = "Выемка";
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыемка;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДенежныеСредстваОстатки.СуммаОстаток КАК СуммаОстаток,
| ДенежныеСредстваОстатки.ТипДенежныхСредств КАК ТипДенежныхСредств
|ИЗ
| РегистрНакопления.ДенежныеСредства.Остатки КАК ДенежныеСредстваОстатки";
РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
//Если ВыборкаДетальныеЗаписи.ТипДенежныхСредств = Перечисления.ТипыОплатыККТ.Наличные Тогда
ВКассе = ВыборкаДетальныеЗаписи.СуммаОстаток;                                                   
//КонецЕсли;
КонецЦикла;
СоздатьВнесениеВыемкаДСНаСервере();

КонецЕсли;
КонецПроцедуры
не получается

Максим75

sali, я вообще ничего не понял.
что это, где это? это в форме списка документов или где?

sali

Максим75, я там потом сам исправил :D , но спасибо за обратную связь

sali

Максим75, я не могу понять как настроить правильно движения. как бы идет 3 движения по чекам ккм - приход, документ внесение/выемка - приход/расход. видимо настроил не так реквизит в рн денежные средства "тип оплаты"(наличными или безналичными оплата была) и даже условие не могу верно поставить чтобы сумма остатка была лишь по наличным данным.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Параметры.Свойство("КассоваяСмена", КассоваяСмена);
Параметры.Свойство("КассаККМ", КассаККМ);
Параметры.Свойство("ВидДвиженияНаличных", ВидДвиженияНаличных);

Если ВидДвиженияНаличных = Перечисления.ВидыДвиженияНаличных.Внесение Тогда
Заголовок = "Внесение";
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВнесение;
Иначе
Заголовок = "Выемка";
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыемка;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДенежныеСредстваОстаткиИОбороты.СуммаОборот КАК СуммаОборот,
| ВЫРАЗИТЬ(ДенежныеСредстваОстаткиИОбороты.ТипДенежныхСредств КАК Перечисление.ТипыОплатыККТ) КАК Поле1
|ИЗ
| РегистрНакопления.ДенежныеСредства.ОстаткиИОбороты КАК ДенежныеСредстваОстаткиИОбороты";
РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
//Если ВыборкаДетальныеЗаписи.ТипДенежныхСредств.Наличные Тогда
ВКассе = ВыборкаДетальныеЗаписи.СуммаОборот;                                                   
//КонецЕсли;
КонецЦикла;
СоздатьВнесениеВыемкаДСНаСервере();

КонецЕсли;
КонецПроцедуры
это код как раз таки показывает (должен показывать) сумму наличного остатка в кассе

Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ДенежныеСредства Приход
Движения.ДенежныеСредства.Записывать = Истина;
Для Каждого ТекСтрокаОплаты Из Оплаты Цикл
Движение = Движения.ДенежныеСредства.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.КассаККМ = КассаККМ;
Движение.Автор = Автор;
Движение.ТипДенежныхСредств = ТекСтрокаОплаты.ВидОплаты;
Движение.Сумма = ТекСтрокаОплаты.Сумма;
КонецЦикла;
КонецПроцедуры
движение в чекиККМ

Процедура ОбработкаПроведения(Отказ, Режим)         

Если ВидДвиженияНаличных = Перечисления.ВидыДвиженияНаличных.Внесение Тогда
// регистр ДенежныеСредства Приход
Движения.ДенежныеСредства.Записывать = Истина;
Движение = Движения.ДенежныеСредства.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.КассаККМ = КассаККМ;
Движение.Автор = Автор;
Движение.ТипДенежныхСредств = ВидДвиженияНаличных;
Движение.Сумма = Сумма;
КонецЕсли;

Если ВидДвиженияНаличных = Перечисления.ВидыДвиженияНаличных.Выемка Тогда
// регистр ДенежныеСредства Расход
Движения.ДенежныеСредства.Записывать = Истина;
Движение = Движения.ДенежныеСредства.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.КассаККМ = КассаККМ;
Движение.Автор = Автор;
Движение.ТипДенежныхСредств = ВидДвиженияНаличных;
Движение.Сумма = Сумма;
КонецЕсли;
КонецПроцедуры
движение в документе Внесение/Выемка ДС


в документе чекиККм есть реквизит ТЧ "видОплаты" это СправочникСсылка.ВидыОплат в котором есть реквизит типОПлаты это ПеречислениеСсылка.ТипыОплатыККТ(наличные/электронные/предоплата и т.д.)

в документе внесение/выемка реквизит "ВидДвиженияНаличных" это перечисление (вымка/внесение)

я же в рн Дс сделал реквизит который обращается к ПеречислениеСсылка.ТипыОплатыККТ(наличные/электронные/предоплата и т.д.)

и проблема в том что сумма выходит с учетом всего и наличного и безналичного

Максим75

sali, а покажите ка мне, где Вы хотите, чтобы сумма выводилась ТОЛЬКО по наличке.
я что-то пока ничего такого не вижу.

sali

Максим75, Снимок экрана (25).png вот здесь. оно находиться возле "закрыть смену(Z-отчет)". Это выемка. Рядом с "в кассе" соответственно должна выходить сумма которая лежит в кассе, у меня что-то не правильно соединено и не показывает сейчас

Максим75

sali, код дайте, который должен туда что-то показать?

sali

Максим75, &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Параметры.Свойство("КассоваяСмена", КассоваяСмена);
Параметры.Свойство("КассаККМ", КассаККМ);
Параметры.Свойство("ВидДвиженияНаличных", ВидДвиженияНаличных);

Если ВидДвиженияНаличных = Перечисления.ВидыДвиженияНаличных.Внесение Тогда
Заголовок = "Внесение";
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВнесение;
Иначе
Заголовок = "Выемка";
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыемка;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДенежныеСредстваОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| РегистрНакопления.ДенежныеСредства.Остатки КАК ДенежныеСредстваОстатки";
РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
//Если ВыборкаДетальныеЗаписи.ТипДенежныхСредств.Наличные Тогда
ВКассе = ВыборкаДетальныеЗаписи.СуммаОстаток;                                                   
//КонецЕсли;
КонецЦикла;
СоздатьВнесениеВыемкаДСНаСервере();

КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура СоздатьВнесениеВыемкаДСНаСервере()
//Если ВидДвиженияНаличных = Перечисления.ВидыДвиженияНаличных.Выемка Тогда
// Сумма = 999;
//КонецЕсли;

Если Сумма = 0 Тогда
Возврат;
КонецЕсли;

ДокументОбъект = Документы.ВнесениеВыемкаДС.СоздатьДокумент();
ДокументОбъект.Заполнить(Неопределено);
ДокументОбъект.Дата = ТекущаяДатаСеанса();
ДокументОбъект.КассоваяСмена = КассоваяСмена;
ДокументОбъект.КассаККМ = КассаККМ;
ДокументОбъект.ВидДвиженияНаличных = ВидДвиженияНаличных;
ДокументОбъект.Сумма = Сумма;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);


КонецПроцедуры

sali

sali, это код показывает все деньги, то есть и продажу и изъятие, внесение

Максим75

sali, ну, в реквизит ВКассе должна попасть ВСЯ сумма на остатке регистра.
А как должно быть?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск