Оплата платежными (банковскими) картами и кредитами в 1С Бухгалтерия 2.0 (эквайринг)
Столкнулся с задачей реализовать оплату платежными картами от покупателя в конфигурации 1C Бухгалтерия 2.0 (на примере одноименного документа в конфигурациях УТ 10 и 11).
Необходимость возникла в связи с тем, что у заказчика не классическая розничная торговля в деньги (деньги взял — товар отдал), а вариант: «утром деньги — вечером стулья».
Т.е. для отражения факта отгрузки товара используется документ «Реализация товаров и услуг», при этом оплата может быть от покупателей частичная наличными и по платежным картам, это может быть просто аванс без отгрузки или наоборот доплата.
- Описание
- Подробнее
Описание
Данная публикация будет интересна тем, кто ведет учет в 1С: Бухгалтерия 2.0 при этом торгует в розницу и использует документ «Реализация товаров и услуг».
На скриншотах видно, как заполняется документ и в результате формируются проводки по всем разделам учета (это основная цель всех заморочек).
Документ «Оплата платежными картами» формирует проводку:
Дт 57.03 (Банк эквайер, договр) — Кт 62 (Покупатель, договор)
Стандартным документом «Поступление на расчетный счет» с видом операции : поступление от продаж по платежным картам и банковским кредитам формирует проводку:
Дт 51 (Расчетный счет) — Кт 57.03 (Банк эквайер, договр)
Так как речь идет о доработки стандартной конфигурации, то последняя соответсвенно должна быть доступна для изменений.
Цели доработки:
— регистрировать оплату платежными картами с привязкой к конкретному покупателю;
— регистрировать оплату кредитами с привязкой к конкретному покупателю;
— формирование соответствующих проводок: Дт 57.03 (Банк эквайер, договр) — Кт 62 (Покупатель, договор);
— важным было формирование движений по дополнительным регистрам, для корректного отображения в книгах доходов/ расходов УСН и по Патенту;
— максимально уйти от ручного формирования проводок и движений;
— сохранить зачеты авансов по документам движения.
Из всего выше сказанного вариант с переброской долга документом «Корректировка взаиморасчетов» отброшен сразу, т.к. неотвечал ни одному из условий задачи.
Реализация задуманного:
1. И так, чтобы не выдумывать велосипед за основу был взят документ «Приходный кассовый ордер» — данный документ необходимо скопировать и переименовать, например «ОплатаПлатежнымиКартами». Далее в документ добавляем два реквизита: «БанкЭквайер» (тип СправочникСсылка.Контрагенты) и «ДоговорБанкаЭквайера» (тип СправочникСсылка.ДоговорыКонтрагентов). Размещаем реквизиты в форме документа и не забываем установить для договора связку по владельзу — для удобства выбора договора при работе.

Я так же удали кнопку «Чек» — чтобы не смущала (рядом ск нопкой «ОК»).
Укажите что документ может вводиться на основании «Реализации товаров и услуг».
2. Доработки модуля формы документа «Оплата платежными картами»:
Везде где есть строка Кнопки.Чек.Доступность = Истина ( Кнопки.Чек.Доступность = Ложь) — закоментировать
например: //АА ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Чек.Доступность = Ложь;
Процедура ЗаполнитьСчетаКассы()
МассивОтбора = Новый Массив;
МассивОтбора.Добавить(ПланыСчетов.Хозрасчетный.Касса);
......
//АА Комментируем чтобы не выбирать стандартные счета кассы 50..
//АА ЭлементыФормы.СчетКасса.СписокВыбора = РаботаСДиалогами.ЗаполнитьСписокВыбораСчетовДенежныхСредств(
//АА МассивОтбора, ТолькоРубли, ПланыСчетов.Хозрасчетный.КассаОрганизации, МассивИсключений);
//АА Добавляем в список выбора только нужный счет 50.03
ЭлементыФормы.СчетКасса.СписокВыбора.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("57.03"), "57.03");
КонецПроцедуры
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если ЭтоНовый() Тогда // проверить объект на то, что он еще не внесен в ИБ
//АА Уберем запрос вида операции РаботаСДиалогами.ВыбратьВидОперации(ЭтотОбъект, Отказ);
//АА Добавить чтобы не вводить каждый раз при создании документа
ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
СчетКасса =ПланыСчетов.Хозрасчетный.НайтиПоКоду("57.03");
КонецЕсли;
// Установка кнопок печати
//АА комментируем чтобы не было меню Печать в форме документа
//АА УстановитьКнопкиПечати();
// Установка кнопок заполнение ТЧ
УстановитьКнопкиПодменюЗаполненияТЧ();
ЗаполнитьСчетаКассы();
ЗаполнитьСчетаБанка();
КонецПроцедуры // ПередОткрытием()
Процедура СчетКассаПриИзменении(Элемент)
//АА В этой процедуре удалите весь код
КонецПроцедуры
3. Доработки модуля документа «Оплата платежными картами»:
Процедура ОбработкаПроведения(Отказ, Режим)
...
// Проверка ручной корректировки
//АА Заблокировал, т.к. выдавало ошибку.. не стал разбираться.
//АА НО ЕСЛИ КТОТ БУДЕТ КОРРЕКТИРОВАТЬ ПРОВОДКИ ВРУЧНУЮ - РАЗБЕРИТЕСЬ С ОШИБКОЙ
// иначе ручные изменения будут слетать при перепроведении документа
//АА Если ОбщегоНазначения.РучнаяКорректировкаОбработкаПроведения(РучнаяКорректировка,Отказ,Заголовок,ЭтотОбъект) Тогда
// Возврат
//КонецЕсли;
...
КонецПроцедуры // ОбработкаПроведения
Процедура ДвиженияПоРегистрам(Режим, Отказ, Заголовок ,СтруктураШапкиДокумента)
...
Если ЕстьРасчетыСКонтрагентами или ЕстьРасчетыПоКредитам Тогда
СтруктураШапкиДокумента.Вставить("КоррСчет",СчетДт);
ТаблицаДокумента = УправлениеДенежнымиСредствами.ПодготовитьТаблицуОплат(СтруктураШапкиДокумента);
Если ЕстьРасчетыПоКредитам Тогда
ТаблицаДокумента.ЗагрузитьКолонку(ТаблицаДокумента.ВыгрузитьКолонку("СчетОплаты"),"СчетАванса");
КонецЕсли;
//АА Добавить наши субконто для счета 57.03
ТаблицаДокумента.ЗаполнитьЗначения(БанкЭквайер, "КоррСубконто1");
ТаблицаДокумента.ЗаполнитьЗначения(ДоговорБанкаЭквайера, "КоррСубконто2");
//АА Конец
ОпределятьСостояниеРасчетов = ЕстьРасчетыСКонтрагентами;
ТаблицаРаспределенияОплат = УправлениеВзаиморасчетами.ПогаситьЗадолженностьКонтрагентов(
СтруктураШапкиДокумента, ТаблицаДокумента, ЭтотОбъект,
Отказ, Заголовок, СодержаниеПроводки, ОпределятьСостояниеРасчетов);
...
КонецПроцедуры
4. Доработка общего модуля ОбщийМодуль.БухгалтерскийУчетРасчетовСКонтрагентами:
Функция ОпределениеНаправленияДвиженияДляДокументаДвиженияДенежныхСредств(Знач ВидДокумента,ВидОперации = неопределено) Экспорт
ВидДействийДокумента = Новый Структура("Направление,РасчетыВозврат");
ВидыДокументовДДС = Новый Соответствие();
ВидыДокументовДДС.Вставить("СписаниеСРасчетногоСчета", "Выбытие");
ВидыДокументовДДС.Вставить("РасходныйКассовыйОрдер", "Выбытие");
ВидыДокументовДДС.Вставить("ПоступлениеНаРасчетныйСчет", "Поступление");
ВидыДокументовДДС.Вставить("ПриходныйКассовыйОрдер", "Поступление");
//АА Добавить строку чтобы правильно формировал проводки Дт 57.03 Кт 62
ВидыДокументовДДС.Вставить("ОплатаПлатежнымиКартами", "Поступление");
ВидыДокументовДДС.Вставить("АвансовыйОтчет", "Выбытие");
5. Также для возможности просмотра движений документа по кнопк ДтКт необходимо добавить наш документ в тип реквизита «ДокументОбъект» обработки «КорректировкаДвижений»

В итоге получаем при проведении документов оплаты от покупателя и поступления этих денежных стредств из банка:
Движения при регистрации оплаты картой от покупателя: погашении долга покупателя, увеличение долга банка эвайера, движения по регистру для учета УСН/Патент

Движения при регистрации поступления денег от банка эквайера: погашении долга банка эквайера, списание коммисии банка на счет расходов, движения по регистру для учета УСН/Патент

— движения по регистру КУДиР: признание расходов ЕНВД (или УСН в ином случае)

— движения по регистру Книги учета доходов при Патенте (отсутствует в случае УСН)

