Документ «Расходный кассовый ордер (РКО)»
РКО фиксирует факт выдачи наличных из кассы организации: оплату поставщику, выдачу в подотчёт, выплату зарплаты, возврат покупателю, инкассацию и взнос в банк. Формирует бухгалтерские и налоговые проводки, движения по взаиморасчётам и статусам счетов, печатается по форме КО-2.
🎯 Что это и зачем
Любая выдача наличных денег из кассы должна быть оформлена документом первичного учёта — именно эту роль играет расходный кассовый ордер. Один документ закрывает множество сценариев: заплатить поставщику наличными, выдать сотруднику деньги в подотчёт или на командировку, выплатить зарплату по ведомости, вернуть деньги покупателю, сдать выручку в банк (инкассация / взнос наличными).
Что делает РКО при проведении: - списывает наличные со счёта кассы (как правило, счёт 1010); - формирует проводку в дебет соответствующего счёта (расчёты с поставщиком, подотчётным лицом, работником и т. п.); - двигает взаиморасчёты с контрагентами, работниками, получателями по исполнительным листам; - закрывает статус оплаты связанных счётов на оплату; - готовит данные для печатной формы КО-2 и кассовой книги.
Кто работает: кассиры и бухгалтеры, ежедневно, при каждом факте выдачи наличности. Создаётся как с нуля, так и «на основании» — из счёта на оплату поставщика, поступления товаров, платёжной ведомости, возврата товаров от покупателя и других документов.
🧭 Где найти в программе
Раздел «Банк и касса» → пункт «Расходные кассовые ордера» (документы кассы также доступны через журнал «Кассовые документы», общий с ПКО). Откроется журнал; новый документ создаём кнопкой «Создать».
navigation-map.json маршрут для Документ.РасходныйКассовыйОрдер отсутствует (есть ПлатежноеПоручениеИсходящее, АвансовыйОтчет и др., но РКО не описан). Раздел «Банк и касса» определён по подсистеме объекта и по соседним кассовым документам; пункт меню в конкретной поставке Fresh может называться «Расходные кассовые ордера» или открываться из журнала «Кассовые документы». Точное имя пункта нужно сверить в интерфейсе и дополнить карту — см. [issues].👤 Часть 1. Для пользователя
Идём по шагам: вид операции → шапка → детализация → проведение → печать. Вид операции выбирается первым — от него зависит, какие поля и табличные части показывает форма.
Урок 1. Оплата поставщику наличными
Когда: рассчитываемся с поставщиком за товары или услуги наличными из кассы.
Шаг 1. Создаём документ и выбираем вид операции
«Создать» → в поле «Вид операции» выбираем «Оплата поставщику». От вида операции зависит набор видимых полей и табличных частей.
Шаг 2. Заполняем шапку
- Организация — подставится основная или выбираем вручную (обязательно).
- Касса — касса, из которой выдаём наличные (обязательно).
- Контрагент — поставщик (обязательно для этого вида операции).
- Валюта документа — по умолчанию тенге; для валютной кассы выбираем нужную.
Шаг 3. Заполняем «Расшифровку платежа»
В табличной части «Расшифровка платежа» добавляем строку: - Договор — договор с контрагентом (подтянет валюту и курс взаиморасчётов); - Счёт на оплату — если платим по конкретному счёту поставщика (тогда после проведения счёт получит статус «Оплачен»); - Сумма платежа — сумма по строке; - Счета учёта расчётов (БУ/НУ) — подставятся автоматически, проверяем.
Шаг 4. Проверяем сумму и проводим
Сумма документа складывается из строк расшифровки — она должна совпасть. Нажимаем «Провести» или «Записать и закрыть». Проводки смотрим кнопкой Дт/Кт.
Урок 2. Выдача денег в подотчёт
Когда: выдаём сотруднику наличные на командировку или хозяйственные расходы.
- Вид операции — «Выдача денежных средств подотчётнику».
- Контрагент — подотчётное лицо (физлицо).
- Заполняем табличную часть «Выдача в подотчёт»: по строкам указываем вид задолженности подотчётного лица (командировочные, хозрасходы и т. д.), статью движения денежных средств и сумму платежа.
- Проверяем: итог по таблице «Выдача в подотчёт» должен совпасть с суммой документа — иначе документ не проведётся.
Урок 3. Выплата зарплаты по ведомости
Когда: касса выдаёт зарплату по ранее сформированной платёжной ведомости.
- Удобнее всего создавать РКО «на основании» документа «Зарплата к выплате организаций» (ведомости). Тогда вид операции, контрагент (при выплате одному работнику), ссылка на ведомость и суммы заполнятся автоматически.
- Вид операции — «Выплата заработной платы по ведомостям» (на группу работников) либо «Выплата заработной платы работнику» (одному физлицу).
- Заполняется табличная часть «Выплата заработной платы» (ведомость + сумма к выплате).
Урок 4. Взнос наличными в банк и инкассация
Когда: сдаём наличную выручку из кассы на расчётный счёт.
- Вид операции — «Взнос наличными в банк» или «Инкассация денежных средств».
- Для взноса в банк указываем Счёт организации (банковский счёт, куда поступят деньги) — для этого вида операции он обязателен.
- Контрагент для этих операций не требуется.
- Указываем статью движения денежных средств и сумму документа.
Урок 5. Прочие сценарии и печать
- Возврат денежных средств покупателю — возврат наличного аванса/переплаты; заполняется через «Расшифровку платежа» (договор, сделка, сумма).
- Расход денежных средств прочее — нетиповые выдачи; контрагент необязателен, можно задать счёт-корреспонденцию вручную.
- Выплата по исполнительным листам — по табличной части «Выплата по исполнительным листам»; итог по таблице должен совпасть с суммой документа, валюта — только тенге.
- Расчёты по доходу от разовых выплат с контрагентами — выплаты физлицам-контрагентам с проверкой соответствия ИИН/БИН/РНН.
Печать. Кнопка печати формирует расходный кассовый ордер по форме КО-2 (макет ПФ_MXL_КО2).
🛠 Часть 2. Для программиста
Источник истины: реальный код релиза 3.0.72.1 (Documents/РасходныйКассовыйОрдер/Ext/ObjectModule.bsl, 734 строки) и метаданные документа (Documents/РасходныйКассовыйОрдер.xml). Разбор objects/ и business-logic/ использован как вторичный — расхождения помечены ниже.
Структура объекта
Ключевые реквизиты шапки: ВидОперации (Перечисление.ВидыОперацийРКО) — определяет всю логику формы и проведения; Организация, Касса, ВалютаДокумента, СуммаДокумента, Контрагент, СчетКасса (кредит проводки), СчетУчетаРасчетовСКонтрагентомБУ/СчетУчетаРасчетовСКонтрагентомНУ, СчетОрганизации (банковский счёт для взноса в банк), ВидУчетаНУ, УчитыватьКПН, РучнаяКорректировка, ПлатежнаяВедомость, ДокументОснование, СтруктурноеПодразделениеОтправитель/СтруктурноеПодразделениеПолучатель, НомерЧекаККМ, субконто СубконтоДтБУ1..3 / СубконтоДтНУ1..3.
Табличные части (4, подтверждено метаданными):
| Табличная часть | Когда используется | Ключевые поля |
|---|---|---|
РасшифровкаПлатежа |
оплата поставщику, возврат покупателю, расчёты с контрагентами | ДоговорКонтрагента, СуммаПлатежа, СуммаВзаиморасчетов, КурсВзаиморасчетов, КратностьВзаиморасчетов, СчетНаОплату, Сделка, СчетУчетаРасчетовСКонтрагентомБУ/НУ, СтавкаНДС, СуммаНДС |
ВыдачаВПодотчет |
выдача денежных средств подотчётнику | ВидЗадолженностиПодотчетногоЛица, СтатьяДвиженияДенежныхСредств, СуммаПлатежа |
ВыплатаЗаработнойПлаты |
выплата зарплаты по ведомостям | Ведомость, СуммаКВыплате |
ВыплатаПоИсполнительнымЛистам |
выплата по исполнительным листам | Документ, СуммаКВыплате |
Виды операций (Перечисление.ВидыОперацийРКО) — РЕАЛЬНЫЕ значения из кода:
ОплатаПоставщику, ВыдачаДенежныхСредствПодотчетнику, ВыплатаЗаработнойПлатыПоВедомостям, ВыплатаЗаработнойПлатыРаботнику, ВыплатаПоИсполнительнымЛистам, ВозвратДенежныхСредствПокупателю, ВзносНаличнымиВБанк, ИнкассацияДенежныхСредств, РасходДенежныхСредствПрочее, РасчетыПоДоходуОтРазовыхВыплатСКонтрагентами.
objects/Документ_РасходныйКассовыйОрдер.md перечислены несуществующие имена видов операций в стиле 1С:Бухгалтерии РФ — ПеречислениеВПодотчет, ПеречислениеЗарплаты, ВзносВБанк, ОплатаСтруктурномуПодразделению, ПрочееСписание, ВозвратПокупателю. В реальной конфигурации AccountingKZ30 этих значений нет; используйте имена из кода (выше). Источник истины — ObjectModule.bsl.Жизненный цикл (обработчики ObjectModule)
| Обработчик | Что делает |
|---|---|
ЗаполнитьНаборыЗначенийДоступа (экспорт, RLS) |
Заполняет наборы значений доступа по организации/подразделению; для выдачи подотчётнику и выплаты зарплаты работнику добавляет физлицо-контрагента (через РасчетЗарплатыСервер) |
ОбработкаЗаполнения |
Заполняет по документу-основанию (ЗаполнитьПоДокументуОснованию) либо по структуре; вызывает УправлениеДенежнымиСредствамиСервер.ЗаполнитьРеквизитыРасчетногоДокумента |
ОбработкаПроверкиЗаполнения |
Главная валидация: формирует список непроверяемых реквизитов по виду операции, сверяет суммы табличных частей, валюту, ИИН/БИН/РНН, ведомости; проверяет счета через СчетаУчетаВДокументах |
ПередЗаписью |
Чистит «лишние» табличные части по виду операции, синхронизирует договор/счета в расшифровке, гасит НДС, заполняет ответственного, при отмене проведения оплаты поставщику снимает статус оплаты счетов |
ПриКопировании |
Сбрасывает НомерЧекаККМ = 0, обнуляет суммы расшифровки для видов без расшифровки, перезаполняет реквизиты расчётного документа |
ОбработкаПроведения |
Подготавливает параметры, проверяет остаток ДС, формирует движения по 9 регистрам через профильные общие модули |
Как формируется проведение — реальный код (3.0.72.1)
Главное: проводки не «зашиты» в документ. ОбработкаПроведения собирает таблицы (ПодготовитьПараметрыПроведения) и делегирует формирование движений профильным общим модулям учёта (УправлениеВзаиморасчетамиСервер, УправлениеДенежнымиСредствамиСервер, УчетДоходовРасходов, РасчетЗарплатыСервер, СтатусыДокументов, ПроцедурыНалоговогоУчета). Конкретные счета Дт/Кт определяются учётной политикой и настройками счетов, а не самим документом.
Источник: ObjectModule.bsl, процедура ОбработкаПроведения (стр. 390), сокращённо по ключевым вызовам:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект, Ложь);
Если РучнаяКорректировка Тогда
Возврат; // ручное управление движениями
КонецЕсли;
ПараметрыПроведения = Документы.РасходныйКассовыйОрдер.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
// Контроль достаточности средств на счёте кассы (если нет права без контроля остатков)
ПроверитьДостаточностьОстатковДС(ПараметрыПроведения.Реквизиты[0],
ПараметрыПроведения.ТаблицаКонтрольОстатков, Отказ);
// ПОДГОТОВКА ПО ДАННЫМ ИБ
ТаблицаВзаиморасчеты = УправлениеВзаиморасчетамиСервер.ПодготовитьТаблицуВзаиморасчетовПогашениеЗадолженности(
ПараметрыПроведения.РасшифровкаПлатежа, ПараметрыПроведения.Реквизиты, Отказ);
// ФОРМИРОВАНИЕ ДВИЖЕНИЙ — каждый модуль пишет «свой» учёт:
УправлениеВзаиморасчетамиСервер.СформироватьДвиженияПогашениеЗадолженности(ТаблицаВзаиморасчеты,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПрочееСписание(
ПараметрыПроведения.РеквизитыПрочее, Движения, Отказ);
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПеречислениеВПодотчет(
ПараметрыПроведения.ТаблицаПеречислениеВПодотчет,
ПараметрыПроведения.РеквизитыПеречислениеВПодотчет, Движения, Отказ);
// Переоценка валютных остатков — после остальных проводок
ТаблицаПереоценка = УчетДоходовРасходов.ПодготовитьТаблицуПереоценкаВалютныхОстатковПоПроводкамДокумента(
ПараметрыПроведения.Реквизиты, Движения, Отказ);
УчетДоходовРасходов.СформироватьДвиженияПереоценкаВалютныхОстатков(ТаблицаПереоценка,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
// Зарплата и исполнительные листы (выплата через кассу)
РасчетЗарплатыСервер.СформироватьДвиженияПеречислениеЗП(ПараметрыПроведения.Реквизиты,
ПараметрыПроведения.ТаблицаПеречислениеЗП, Движения,
Перечисления.СпособыВыплатыЗарплаты.ЧерезКассу, Отказ);
РасчетЗарплатыСервер.СформироватьДвиженияПеречислениеПоИЛ(ПараметрыПроведения.Реквизиты,
ПараметрыПроведения.ТаблицаПеречислениеПоИЛ, Движения, Отказ);
// Статусы оплаты счетов
СтатусыДокументов.СформироватьДвиженияОплатаСчетов(
ПараметрыПроведения.ОплатаСчетов, ПараметрыПроведения.Реквизиты, Движения, Отказ);
// Постоянные разницы в НУ
ПроцедурыНалоговогоУчета.ОтразитьПостоянныеРазницыВНУ(ПараметрыПроведения.Реквизиты, Движения, Отказ);
КонецПроцедуры
Кто что формирует (вызов → смысл):
| Вызов в коде | Какой учёт пишет |
|---|---|
УправлениеВзаиморасчетамиСервер.СформироватьДвиженияПогашениеЗадолженности |
погашение задолженности перед контрагентами/физлицами (оплата поставщику, возврат покупателю) |
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПрочееСписание |
прочее списание ДС, инкассация, взнос в банк |
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПеречислениеВПодотчет |
выдача под отчёт (задолженность работника) |
УчетДоходовРасходов.Сформировать…ПереоценкаВалютныхОстатков |
курсовые разницы по валютным остаткам |
РасчетЗарплатыСервер.СформироватьДвиженияПеречислениеЗП |
выплата зарплаты через кассу |
РасчетЗарплатыСервер.СформироватьДвиженияПеречислениеПоИЛ |
выплаты по исполнительным листам |
РасчетЗарплатыСервер.СформироватьДвиженияРасчетыСКонтрагентамиФизЛицами |
разовые выплаты контрагентам-физлицам (только если нет обмена с ЗУП 3.1) |
СтатусыДокументов.СформироватьДвиженияОплатаСчетов / …СтатусовДокументов |
статус оплаты связанных счётов на оплату |
ПроцедурыНалоговогоУчета.ОтразитьПостоянныеРазницыВНУ |
постоянные разницы в налоговом учёте |
Важные детали из кода:
- РучнаяКорректировка = Истина → авто-проведение пропускается (Возврат сразу после подготовки наборов) — движения заполняет пользователь.
- Контроль остатка кассы выполняется до формирования движений: ПроверитьДостаточностьОстатковДС (стр. 638) сравнивает СуммаДокумента с остатком по счёту кассы и, если НеобходимКонтрольОстатковДС, отказывает в проведении с локализованным сообщением.
- Групповое перепроведение: если в ДополнительныеСвойства стоит ГрупповоеПерепроведение = Истина, движения статусов счётов на оплату пропускаются (оптимизация массового перепроведения).
- Порядок строгий: взаиморасчёты → прочее списание → подотчёт → переоценка валюты → зарплата/ИЛ → статусы счётов → постоянные разницы НУ.
objects/ даёт «плоские» проводки (Дт 1251 Кт касса, Дт 1010 Кт касса и т. п.). Реальное ОбработкаПроведения счета напрямую не задаёт — их вычисляют модули Учет/Управление по учётной политике и счетам учёта. «Плоские» Дт/Кт держите как иллюстрацию; точные проводки сверяйте отчётом «Дт/Кт» на проведённом документе. См. [issues].Движения по регистрам (подтверждено метаданными)
Документ зарегистрирован как регистратор для 9 регистров (Documents/РасходныйКассовыйОрдер.xml, секция RegisterRecords):
| Регистр | Тип | Что пишет |
|---|---|---|
Типовой |
Бухгалтерия (БУ) | Бухгалтерские проводки (Дт счёта расчётов/банка/подотчёта Кт счёта кассы) |
Налоговый |
Бухгалтерия (НУ) | Проводки налогового учёта (если ведётся КПН/временные разницы) |
ВзаиморасчетыОрганизацийСКонтрагентамиФизЛицами |
Накопление | Погашение/изменение задолженности по контрагентам (оплата, возврат) |
ВзаиморасчетыСРаботникамиОрганизаций |
Накопление | Задолженность работников (выдача в подотчёт) |
ВзаиморасчетыОрганизацийСПолучателямиИЛ |
Накопление | Выплаты получателям по исполнительным листам |
ВзаиморасчетыСДепонентамиОрганизаций |
Накопление | Депонированная зарплата |
ОплатаСчетов |
Накопление | Факт оплаты счёта на оплату поставщика |
ВыплаченныеДоходыРаботникамОрганизацийНУ |
Накопление | Налоговый учёт выплаченных доходов работникам |
СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям |
Сведения | Факт выплаты по платёжной ведомости |
Типовой/Налоговый), и накопительные регистры. Но сам набор счетов — за модулями учёта (см. выше).Валидации (ОбработкаПроверкиЗаполнения, стр. 71)
Логика построена «от обратного»: сначала формируется МассивНепроверяемыхРеквизитов в зависимости от вида операции, затем ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива снимает проверку с неактуальных полей. Ключевые правила:
- Расшифровка платежа проверяется только для видов операций, где она есть (
Документы.РасходныйКассовыйОрдер.ЕстьРасшифровкаПлатежа(ВидОперации)); договор в расшифровке проверяется лишь при включённой опцииВестиУчетПоДоговорам. - Сверка сумм табличных частей с
СуммаДокумента: - выдача в подотчёт:
ВыдачаВПодотчет.Итог("СуммаПлатежа") = СуммаДокумента, иначе ошибка «Не совпадает сумма документа и суммы по видам задолженности подотчётного лица»; - выплата по ИЛ:
ВыплатаПоИсполнительнымЛистам.Итог("СуммаКВыплате") = СуммаДокумента; - выплата зарплаты: суммы по ведомостям сверяются запросом в
ПроверитьСоответствиеВедомостей. - Валюта. Для выплаты по ИЛ и выплаты зарплаты валюта документа обязана равняться валюте регламентированного учёта (тенге), иначе — отказ.
- Контрагент не проверяется для выплаты зарплаты по ведомостям, выплаты по ИЛ, прочего расхода, инкассации и взноса в банк (добавлен в непроверяемые).
- Счёт организации обязателен только для взноса наличными в банк.
- ИИН/БИН/РНН при
РасчетыПоДоходуОтРазовыхВыплатСКонтрагентами: запрос сверяет реквизиты контрагента и связанного физлица; до даты прекращения вывода РНН проверяется РНН, после — ИИН/БИН. - Соответствие ведомостей (зарплата и прочие доходы): не выплачена ли уже ведомость, способ выплаты «Через кассу», нет ли конфликтного РКО, та ли организация (последнее — предупреждение без отказа).
- В конце —
СчетаУчетаВДокументах.ПроверитьЗаполнение(...)для контроля корректности счетов.
Зависимости (общие модули)
УправлениеДенежнымиСредствамиСервер (реквизиты расчётного документа, прочее списание, подотчёт, контроль кредитов), УправлениеВзаиморасчетамиСервер (погашение задолженности, проверка возможности проведения в БУ/НУ), РасчетЗарплатыСервер (ЗП, ИЛ, расчёты с физлицами, наборы доступа), СтатусыДокументов (оплата счётов), СчетаУчетаВДокументах (заполнение и проверка счетов), УчетДоходовРасходов (переоценка валюты), ПроцедурыНалоговогоУчета / УчетнаяПолитикаСервер (НУ, плательщик налога на прибыль), РаботаСДоговорамиКонтрагентов, ОбщегоНазначения[БК], ОбменДаннымиСервер (проверка обмена с ЗУП 3.1).
СчетаУчетаВДокументах, Управление…Сервер, РасчетЗарплатыСервер, УчетнаяПолитикаСервер. Частые обращения клиентов: (1) «не проводится — недостаточно средств в кассе» → дайте право проведения без контроля остатков или проверьте реальный остаток; (2) «зарплату нельзя провести в валюте» → так и задумано, ЗП только в тенге; (3) «при копировании пропал чек ККМ» → это штатно, НомерЧекаККМ обнуляется в ПриКопировании; (4) «ведомость уже включена в другой РКО» → ищите конфликтный документ из текста сообщения.
- Вид операции — корень всего. Видимость табличных частей, набор обязательных реквизитов, формируемые движения — всё ветвится по
ВидОперации. Любая доработка начинается с него.ЕстьРасшифровкаПлатежа(ВидОперации)— менеджерская функция-предикат, по которой и в проверке, и вПередЗаписью/ПриКопированиирешается, работать ли с табличной частью «Расшифровка платежа». Не дублируйте список видов руками — зовите её.РучнаяКорректировка = Истинаполностью отключает авто-проведение (раннийВозврат) — движения заполняются пользователем; учитывайте при доработке проведения.- Контроль остатков управляется флагом
НеобходимКонтрольОстатковДСв реквизитах проведения и правом пользователя; ошибка выводится черезОбщегоНазначенияБККлиентСервер.СообщитьОбОшибке.ГрупповоеПерепроведениевДополнительныеСвойстваменяет ветку формирования статусов счётов — не ломайте её при массовых операциях.- Печать — макет
ПФ_MXL_КО2(форма КО-2), команда печати регистрируется вManagerModule(ДобавитьКомандыПечати), функцияПечатьРКО. СамManagerModule.bslбольшой (~228 КБ) — открывайте только при доработке печати/заполнения.
🔗 Связанные разделы
- prikhodnyy-kassovyy-order — зеркальный документ прихода наличных (ПКО)
- schet-na-oplatu-postavshchika — основание для оплаты поставщику, статус оплаты закрывает РКО
- avansovyy-otchet — закрывает задолженность подотчётного лица, выданную через РКО
- vedomost-na-vyplatu-zarplaty — платёжная ведомость, на основании которой РКО выплачивает зарплату
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |