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

Безналичная оплата на кассе

Автор Pretender, 20 авг 2015, 09:13

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

Pretender

Доброго времени суток
Имеется 1С 7.7 ТиС 9.2   7.70.935, Штрих-ФР-К
Требуется внести следующие корректировки:
- при нажатии кнопки ОПЛАТА на рабочем месте продавца должно появиться окошко с выбором типа оплаты НАЛ / КАРТА ("нал" выделен по-умолчанию)
- в случае выбора оплаты по карте продаже присваивается признак безналичной оплаты (или оплаты через другой отдел)
- при снятии отчетов по завершении смены должна выводиться отдельно сумма продаж по каждому виду оплат

Всё бы ничего, но городок маленький, спецов нет, а из соседних никто приезжать к нам не хочет...

Намекните, пожалуйста, где рыть....
Начал с внешней обработки ФР fr_elves.ert

Pretender

В настоящее время в модуле конфигурации прописано следующее по нажатию кнопки ОПЛАТА:


Процедура ОплатаНал()

    Если Чек.КоличествоСтрок()>0 тогда


если Число(Цифры)>0 Тогда
        Если Число(Цифры)<Чек.Итог("Сумма") тогда
GlobalReg.HookEnabled = 0;
Предупреждение("Сумма оплаты меньше суммы чека!");
GlobalReg.HookEnabled = 1;
Возврат;
Иначе
Нал=Число(Цифры);
КонецЕсли;
Иначе
Нал=Чек.Итог("Сумма");
    КонецЕсли;
   
Сдача=Нал-Чек.Итог("Сумма");

ВывестиСтрокуНаДисплей("Сдача:"+Формат(Сдача,"Ч14.2"),1);
ВывестиСтрокуНаДисплей("Итого:"+Формат(Чек.Итог("Сумма"),"Ч14.2"),2);

Если (Операция="Розн.продажа") или (Операция="Розн.возврат") тогда

ДокЧек = СоздатьОбъект("Документ.ЧекККМ");
ДокЧек.Новый();
ДокЧек.Автор = глПользователь;
ДокЧек.Фирма = глЗначениеПоУмолчанию("ОсновнаяФирма");
ДокЧек.Склад = глЗначениеПоУмолчанию("ОсновнойСклад");
ДокЧек.Касса = глЗначениеПоУмолчанию("ОсновнаяКасса");
ДокЧек.Валюта = глРубли;
ДокЧек.Курс = 1;
ДокЧек.Получено = Нал;
ДокЧек.ВидОперации=?(Операция="Розн.возврат",Перечисление.ВидыОперацийЧекККМ.ЧекНаВозврат,Перечисление.ВидыОперацийЧекККМ.Чек);
ДокЧек.НомерЧекаККМ="";
// ДокЧек.ЧекПробитККМ=1;
ДокЧек.Скидка=Скидка;

ДокЧек.ЗагрузитьТабличнуюЧасть(Чек);
Попытка
ДокЧек.Записать();
ДокЧек.Провести();
Исключение
// Возврат;
КонецПопытки;

Если ДокЧек.Проведен()=1 тогда

Инициализация();
Иначе

КонецЕсли

Активизировать("Оплата");
КонецПроцедуры

G_Re

Ну, в принципе, ты уже в целом логику и написал, осталось её перевести на язык 1С(он тоже очень похож на русский), то есть отобразить окошко, принять и проанализировать ответ, в зависимости от ответа сделать те или иные действия. Окошко можно сделать либо сз на форме, либо какими-то флажками или переключателями на форме, либо отдельной обработкой, это дело вкуса, привычки или принятым стилем интерфейса, а дальше проще, просто обработать ответ.

Олег2

при возникновении правовых вопросов http://kalkulyator-osago.ru/

Теги:
Рейтинг@Mail.ru

Поиск