При переходе бизнеса в онлайн-пространство перед ИТ-специалистами и бухгалтерами часто встает задача корректной интеграции интернет-магазина с учетной системой. Типичная ситуация: продажи осуществляются через сайт, там же установлена и подключена ККМ (облачная касса), которая автоматически фискализирует чеки при оплате картами. Сама база 1С:Управление торговлей напрямую с физической ККМ никак не связана, но данные о продажах должны поступать в 1С для ведения складского учета, взаиморасчетов и последующей выгрузки в 1С:Бухгалтерию.
В этой статье мы подробно разберем, почему классический розничный документооборот 1С в данном случае не применим, как правильно выстроить цепочку документов, разберемся с мифическими «внесениями» и «изъятиями» при интернет-эквайринге и рассмотрим пример программной реализации создания документов при интеграции через веб-сервисы.
Начинающие разработчики часто пытаются использовать для интернет-продаж стандартные розничные документы конфигурации: Чек ККМ и Отчет о розничных продажах (ОРП). Рассмотрим подробнее, почему этот путь ведет в тупик:
Отчет о розничных продажах физически не умеет работать с отложенным переходом права собственности и предоплатами.Таким образом, мы выяснили причину неприменимости стандартных розничных инструментов. Единственным верным методологическим решением для интернет-торговли в 1С является оптово-комиссионная схема с использованием документов Заказ клиента и Реализация товаров и услуг.
Проанализируем ситуацию с операциями внесения и изъятия денежных средств, о которых часто спрашивают пользователи. В физических кассах ККМ эти операции необходимы для контроля наличных в ящике: выдача сдачи утром (внесение) и инкассация выручки вечером (изъятие).
При интернет-эквайринге физического движения наличных денег внутри кассового аппарата не происходит. Покупатель оплачивает заказ картой, средства резервируются банком и затем перечисляются на расчетный счет организации за вычетом комиссии эквайера. Соответственно, никаких операций внесения и изъятия в 1С отражать не нужно. Все операции проходят безналичным путем по расчетному счету организации.
Если же ваш магазин поддерживает оплату наличными при получении (например, курьеру), то курьеры используют мобильные кассы. Сданная в конце дня выручка оформляется через казначейство:
Приходный кассовый ордер с видом операции «Поступление из кассы ККМ» или «Оплата от покупателя».Расходный кассовый ордер с видом операции «Выдача в кассу ККМ».Разберем по шагам идеальный бизнес-процесс отражения продаж из интернет-магазина в вашей учетной системе:
Шаг 1. Создание Заказа клиента
При оформлении заказа на сайте данные через веб-сервис передаются в 1С. Автоматически создается документ Заказ клиента. На этом этапе резервируется товар на складе. В качестве контрагента мы можем указывать как конкретное физлицо, так и общего контрагента «Розничный покупатель» (чтобы не перегружать базу тысячами карточек клиентов), храня контактные данные в дополнительных реквизитах заказа.
Шаг 2. Фиксация оплаты (Эквайринговая операция)
Как только платежная система сайта подтверждает успешное списание денег с карты клиента, сайт передает эту информацию в 1С. В системе на основании ранее созданного заказа создается документ Эквайринговая операция. Этот документ фиксирует, что клиент больше ничего не должен нашей компании, а долг переходит на банк-эквайер.
Шаг 3. Отгрузка товара (Реализация товаров и услуг)
Когда склад собрал посылку и передал ее в службу доставки, в 1С оформляется документ Реализация товаров и услуг (РТУ). Именно этот документ списывает остатки товаров со склада и фиксирует доход компании в регламентированном учете. Именно по РТУ в дальнейшем будет сформирована проводка по переходу права собственности при выгрузке в бухгалтерию.
Шаг 4. Отражение зачисления средств (Отчет банка по эквайрингу)
Через 1-3 дня обслуживающий банк перечисляет накопленные средства на наш расчетный счет единой суммой за вычетом своей комиссии. На основе банковской выписки создается документ Отчет банка по эквайрингу. Он связывает поступившие на расчетный счет деньги с конкретными эквайринговыми операциями и позволяет списать комиссию банка на расходы предприятия.
Рассмотрим пример создания веб-сервиса в 1С, который принимает данные от сайта и программно создает Заказ клиента и Эквайринговую операцию. Посмотрим на пример кода, реализующего эту логику:
Функция СоздатьЗаказИОплатуС Сайта(ДанныеЗаказа) Экспорт
// 1. Поиск или создание контрагента
КонтрагентСсылка = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ДанныеЗаказа.ИНН);
Если КонтрагентСсылка.Пустая() Тогда
// Для примера используем предопределенного розничного покупателя
КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию("Розничный покупатель");
КонецЕсли;
// 2. Создание документа Заказ клиента
НовыйЗаказ = Документы.ЗаказКлиента.СоздатьДокумент();
НовыйЗаказ.Дата = ТекущаяДата();
НовыйЗаказ.Организация = Справочники.Организации.НайтиПоНаименованию(ДанныеЗаказа.ОрганизацияНаименование);
НовыйЗаказ.Партнер = Справочники.Партнеры.НайтиПоНаименованию("Розничный покупатель");
НовыйЗаказ.Контрагент = КонтрагентСсылка;
НовыйЗаказ.Соглашение = Справочники.СоглашенияСКлиентами.НайтиПоНаименованию(ДанныеЗаказа.СоглашениеИмя);
НовыйЗаказ.Валюта = Справочники.Валюты.НайтиПоКоду("643"); // Рубли
НовыйЗаказ.Склад = Справочники.Склады.НайтиПоНаименованию(ДанныеЗаказа.СкладИмя);
НовыйЗаказ.Статус = Перечисления.СтатусыЗаказовКлиентов.КОбеспечению;
// Заполнение товаров
Для Каждого СтрокаТовара Из ДанныеЗаказа.Товары Цикл
НоваяСтрока = НовыйЗаказ.Товары.Добавить();
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Код", СтрокаТовара.КодТовара);
НоваяСтрока.Количество = СтрокаТовара.Количество;
НоваяСтрока.Цена = СтрокаТовара.Цена;
НоваяСтрока.Сумма = СтрокаТовара.Сумма;
НоваяСтрока.СтатусУказанияСерий = 0;
КонецЦикла;
Попытка
НовыйЗаказ.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("ИнтеграцияСайта", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
// 3. Создание Эквайринговой операции на основании заказа
НоваяОплата = Документы.ЭквайринговаяОперация.СоздатьДокумент();
НоваяОплата.Дата = ТекущаяДата();
НоваяОплата.Организация = НовыйЗаказ.Организация;
НоваяОплата.ЭквайринговыйТерминал = Справочники.ЭквайринговыеТерминалы.НайтиПоНаименованию(ДанныеЗаказа.ТерминалИмя);
НоваяОплата.Контрагент = НовыйЗаказ.Контрагент;
НоваяОплата.ДокументОснование = НовыйЗаказ.Ссылка;
НоваяОплата.СуммаДокумента = ДанныеЗаказа.ОбщаяСумма;
НоваяОплата.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыПоЭквайрингу;
Попытка
НоваяОплата.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("ИнтеграцияСайта", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции
Когда вы настроите регулярную синхронизацию между 1С:УТ 11.4 и 1С:БП 3.0, созданная цепочка документов перенесется в бухгалтерию автоматически без искажений:
Реализация товаров и услуг создаст проводку по дебету счета 62.01 и кредиту счета 90.01 (отражение выручки) и спишет себестоимость с дебета 90.02 в кредит 41.01.Эквайринговая операция сформирует проводку Дт 57.03 — Кт 62.02 (отражение оплаты картой и перенос задолженности на банк).Благодаря этому у вашего бухгалтера всегда будет сходиться баланс, взаиморасчеты закроются «в ноль», а остатки товаров на складах будут актуальными как в УТ, так и в БП.