Документ «Приходный кассовый ордер (ПКО)»
ПКО регистрирует поступление наличных в кассу организации: оплату от покупателя, возврат подотчётных сумм, получение наличных в банке, прочий приход. От выбранного вида операции зависят видимые поля, табличные части и то, какой учёт сформируется при проведении. Главный приходный документ кассы в Бухгалтерии для Казахстана 3.0.
🎯 Что это и зачем
Любые наличные, попавшие в кассу, должны быть оформлены первичным документом. Приходный кассовый ордер — это и есть тот документ: он фиксирует сколько, в какой кассе, от кого и по какому основанию поступило, печатает унифицированную форму ПКО для подписи и кладёт деньги «в учёт» — увеличивает остаток наличных и закрывает (или авансирует) расчёты с тем, кто заплатил.
ПКО — документ-«оркестратор»: одной кнопкой «Провести» он запускает сразу несколько механизмов учёта (касса, взаиморасчёты, расчёты с подотчётниками, налоговый учёт, статусы оплаченных счетов). Какие именно — зависит от вида операции.
Кто работает: кассиры и бухгалтеры, ежедневно. Документ создаётся как с нуля, так и «на основании» реализации, счёта на оплату, возврата товаров поставщику, расходного кассового ордера и других документов.
🧭 Где найти в программе
Раздел «Банк и касса» → группа «Касса» → пункт «Приходные кассовые ордера». Откроется журнал кассовых документов; новый ПКО создаём кнопкой «Создать» (либо «Создать на основании» из документа-источника).
Документ.ПриходныйКассовыйОрдер нет записи в navigation-map.json — точный заголовок пункта в левом меню Fresh определён по разделу «Банк и касса» из разбора объекта и может отличаться (например, «Кассовые документы» как общий журнал). См. issue [KZ30-0088].👤 Часть 1. Для пользователя
Проходим по шагам: от выбора вида операции до проведённого ордера и проверки результата.
ПКО поддерживает 8 видов операций (точные наименования из конфигурации, релиз 3.0.72.1):
| Вид операции (как в списке) | Когда применяется |
|---|---|
| Оплата от покупателя | Покупатель платит наличными за товары/услуги |
| Возврат денежных средств подотчетником | Сотрудник возвращает неиспользованный аванс (подотчёт) |
| Возврат денежных средств поставщиком | Поставщик возвращает деньги (например, за возвращённый товар) |
| Возврат денежных средств сотрудником | Возврат сотрудником излишне выплаченной заработной платы |
| Получение наличных денежных средств в банке | Снятие наличных со своего расчётного счёта в кассу |
| Расчеты по кредитам и займам с контрагентами | Поступление по договору займа/кредита |
| Оплата от структурного подразделения | Поступление наличных от собственного подразделения |
| Прочий приход денежных средств | Нетиповое поступление с ручным указанием счёта |
Урок 1. Оплата от покупателя наличными
Когда: покупатель вносит наличные в кассу за реализованные товары или услуги.
Шаг 1. Создаём документ и выбираем вид операции
«Создать» → в поле Вид операции выбираем «Оплата от покупателя». Форма перестроится: появится табличная часть Расшифровка платежа.
Шаг 2. Заполняем шапку
- Организация — получатель денег (подставится основная или выбираем).
- Касса — касса, в которую поступают деньги; при её выборе автоматически подставится счёт кассы (например, 1010).
- Валюта документа — валюта поступления; должна совпадать с валютой кассы (иначе касса очистится).
- Контрагент — покупатель (обязателен).
- Сумма документа — общая сумма поступления.
Шаг 3. Заполняем расшифровку платежа
В табличной части Расшифровка платежа указываем, за что платёж: - Договор — договор с покупателем (подтянется после выбора контрагента, если учёт по договорам включён). - Сделка — документ-основание (реализация, счёт на оплату), задолженность по которому закрывается. - Сумма платежа — сумма по строке (сумма строк должна сойтись с Суммой документа). - Ставка НДС / Сумма НДС — если нужно выделить налог. - Счёт на оплату — если оплачивается конкретный выставленный счёт (тогда обновится его статус оплаты).
Шаг 4. Проводим и проверяем
«Провести» или «Записать и закрыть». Чтобы проверить учёт — открываем Дт/Кт (движения документа).
Урок 2. Возврат денег подотчётным лицом
Когда: сотрудник возвращает в кассу неизрасходованный аванс.
Отличия от Урока 1: 1. Вид операции — «Возврат денежных средств подотчетником». Вместо «Расшифровки платежа» появится табличная часть Выдача в подотчёт. 2. Контрагент — это физическое лицо (сотрудник), от которого приняты деньги. 3. В табличной части Выдача в подотчёт заполняем строки возврата (вид задолженности подотчётного лица, сумма платежа, статья ДДС). 4. Сумма строк таблицы «Выдача в подотчёт» должна точно равняться Сумме документа — иначе документ выдаст ошибку «Не совпадает сумма документа и суммы выплат по строкам документа».
Урок 3. Получение наличных в банке
Когда: снимаем деньги с расчётного счёта и приходуем в кассу.
- Вид операции — «Получение наличных денежных средств в банке».
- Заполняем Организация, Касса, Сумма документа, Валюта документа.
- Указываем Счёт организации — банковский счёт, с которого снимаются деньги (для этого вида операции поле обязательно).
- Контрагент не заполняется — операция внутри организации. Табличные части не используются.
Урок 4. Прочий приход денежных средств
Когда: нетиповое поступление (возврат займа, продажа за наличные, пр.), которое не описывается остальными видами операций.
- Вид операции — «Прочий приход денежных средств».
- Заполняем Организация, Касса, Сумма документа.
- Счёт учёта расчётов и субконто заполняем вручную — для прочего прихода автоматического подбора нет. Заполняем кредитовый счёт (
Счёт учёта расчётов с контрагентом БУ) и субконто (СубконтоКтБУ1…3). - В поле Основание (текст) описываем суть операции — это пригодится и для печати, и для понимания проводки.
Урок 5. Создание на основании
Чтобы не вводить данные повторно, ПКО можно создать «на основании» документа-источника — реквизиты и строки расшифровки заполнятся автоматически. ПКО вводится на основании, в частности:
- Реализации ТМЗ и услуг — оплата за отгруженное;
- Счёта на оплату покупателю — оплата выставленного счёта;
- Возврата товаров поставщику — поставщик вернул деньги;
- Расходного кассового ордера — обратное движение (например, возврат ранее выданных сумм);
- а также акта об оказании производственных услуг, передачи ОС/НМА, доверенности, реализации услуг по переработке.
🛠 Часть 2. Для программиста
Источник истины: реальный код релиза 3.0.72.1 — Documents/ПриходныйКассовыйОрдер/Ext/ObjectModule.bsl (модуль небольшой, ниже разобран целиком по ключевым обработчикам), перечисление Enums/ВидыОперацийПКО.xml, плюс разбор objects/ и business-logic/.
Структура объекта
Ключевой реквизит — ВидОперации (Перечисление.ВидыОперацийПКО, обязателен). Управляет видимостью полей/табличных частей, набором обязательных реквизитов и тем, какой учёт формируется при проведении. Полный список значений — 8 (см. таблицу в Части 1; имена в коде: ОплатаПокупателя, ВозвратДенежныхСредствПодотчетником, ВозвратДенежныхСредствПоставщиком, ВозвратДенежныхСредствРаботником, ПолучениеНаличныхДенежныхСредствВБанке, РасчетыПоКредитамИЗаймамСКонтрагентами, ОплатаСтруктурногоПодразделения, ПриходДенежныхСредствПрочее).
Обязательные реквизиты шапки (ShowError): Организация, Касса, СчетКасса, ВалютаДокумента, СуммаДокумента, Контрагент (для видов операций, где он применим), ВидУчетаНУ (когда организация — плательщик КПН и установлен УчитыватьКПН), СчетОрганизации (для «Получение наличных в банке»). Управляющие флаги/реквизиты: УчитыватьКПН, РучнаяКорректировка, СтруктурноеПодразделениеПолучатель/СтруктурноеПодразделениеОтправитель, НомерЧекаККМ, Основание, ПринятоОт, Приложение.
Табличные части:
- РасшифровкаПлатежа — детализация поступления по договорам/сделкам (для оплаты покупателя, возврата поставщиком, расчётов по кредитам/займам). Ключевые колонки: ДоговорКонтрагента, Сделка, СуммаПлатежа, КурсВзаиморасчетов/КратностьВзаиморасчетов/СуммаВзаиморасчетов, СтавкаНДС/СуммаНДС, СчетУчетаРасчетовСКонтрагентомБУ/…НУ, СчетУчетаРасчетовПоАвансам, СчетНаОплату, СтатьяДвиженияДенежныхСредств.
- ВыдачаВПодотчет — для «Возврат денежных средств подотчетником»: ВидЗадолженностиПодотчетногоЛица, СуммаПлатежа, СтатьяДвиженияДенежныхСредств.
Контрагент — составной: Справочник.Контрагенты, Справочник.ФизическиеЛица, Справочник.Склады. Для подотчётных операций сюда подставляется физлицо.Жизненный цикл (обработчики ObjectModule)
| Обработчик | Что делает (по реальному коду 3.0.72.1) |
|---|---|
ЗаполнитьНаборыЗначенийДоступа |
Формирует наборы доступа по Организация + СтруктурноеПодразделениеПолучатель; для возвратов подотчётником/работником добавляет набор по списку физлиц (РасчетЗарплатыСервер) |
ОбработкаЗаполнения |
Заполнение на основании (ЗаполнитьПоДокументуОснованию) или из структуры; в обоих случаях вызывает УправлениеДенежнымиСредствамиСервер.ЗаполнитьРеквизитыРасчетногоДокумента |
ОбработкаПроверкиЗаполнения |
Самый большой обработчик: динамически собирает массив непроверяемых реквизитов в зависимости от вида операции, проверяет совпадение сумм, валюту возврата ЗП, возможность проведения взаиморасчётов, делегирует проверку счетов в СчетаУчетаВДокументах |
ПередЗаписью |
Нормализует РасшифровкаПлатежа (заполняет договор, гарантирует ≥1 строку), чистит ВыдачаВПодотчет/ВидУчетаНУ вне их видов операции, синхронизирует подразделения; при отмене проведения оплаты покупателя сбрасывает статусы оплаченных счетов |
ПриКопировании |
Обнуляет НомерЧекаККМ, перезаполняет реквизиты расчётного документа |
ОбработкаПроведения |
Готовит наборы записей и параметры, затем делегирует формирование всех движений профильным общим модулям (см. ниже). При РучнаяКорректировка = Истина — выходит сразу |
Формирует ли ПКО проводки? Да — но НЕ напрямую в документе
Главное для понимания: в ObjectModule.bsl нет ни одной «плоской» проводки Дт/Кт. ОбработкаПроведения собирает таблицы из подготовленных параметров и делегирует формирование движений профильным общим модулям. Поэтому конкретные счета (Дт кассы / Кт расчётов) и состав регистров определяются этими модулями и учётной политикой, а не телом документа.
Реальный код, ObjectModule.bsl, процедура ОбработкаПроведения (стр. 270–335) целиком:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
Если РучнаяКорректировка Тогда
Возврат; // ручное управление движениями — авто-проведение пропускается
КонецЕсли;
ПараметрыПроведения = Документы.ПриходныйКассовыйОрдер.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ИНФОРМАЦИОННОЙ БАЗЫ
ТаблицаВзаиморасчеты = УправлениеВзаиморасчетамиСервер.ПодготовитьТаблицуВзаиморасчетовПогашениеЗадолженности(
ПараметрыПроведения.РасшифровкаПлатежа, ПараметрыПроведения.Реквизиты, Отказ);
// Изменение статуса счетов на оплату
ГрупповоеПерепроведение = Неопределено;
Если ЭтотОбъект.ДополнительныеСвойства.Свойство("ГрупповоеПерепроведение") Тогда
ГрупповоеПерепроведение = ЭтотОбъект.ДополнительныеСвойства.ГрупповоеПерепроведение;
Иначе
ГрупповоеПерепроведение = Ложь;
КонецЕсли;
Если Не ГрупповоеПерепроведение Тогда
ТаблицаСтатусовСчетов = СтатусыДокументов.ПодготовитьТаблицуСтатусовОплатыСчетов(
ПараметрыПроведения.ОплатаСчетов, ПараметрыПроведения.Реквизиты);
КонецЕсли;
// ФОРМИРОВАНИЕ ДВИЖЕНИЙ
УправлениеВзаиморасчетамиСервер.СформироватьДвиженияПогашениеЗадолженности(ТаблицаВзаиморасчеты,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПрочееПоступление(ПараметрыПроведения.РеквизитыПрочее,
Движения, Отказ);
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПеречислениеВПодотчет(ПараметрыПроведения.ТаблицаВозвратПодотчетником,
ПараметрыПроведения.РеквизитыВозвратПодотчетником, Движения, Отказ);
// Переоценка валютных остатков — после формирования проводок всеми другими механизмами
ТаблицаПереоценка = УчетДоходовРасходов.ПодготовитьТаблицуПереоценкаВалютныхОстатковПоПроводкамДокумента(
ПараметрыПроведения.Реквизиты, Движения, Отказ);
УчетДоходовРасходов.СформироватьДвиженияПереоценкаВалютныхОстатков(ТаблицаПереоценка,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
// Возврат ЗП
РасчетЗарплатыСервер.СформироватьДвиженияВозвратЗП(ПараметрыПроведения.Реквизиты, ПараметрыПроведения.ТаблицаВозвратЗП, Движения, Истина, Отказ, Ложь);
ПроцедурыНалоговогоУчета.ОтразитьПостоянныеРазницыВНУ(ПараметрыПроведения.Реквизиты, Движения, Отказ);
// Изменение статуса счетов на оплату
СтатусыДокументов.СформироватьДвиженияОплатаСчетов(
ПараметрыПроведения.ОплатаСчетов, ПараметрыПроведения.Реквизиты, Движения, Отказ);
Если Не ГрупповоеПерепроведение Тогда
СтатусыДокументов.СформироватьДвиженияСтатусовДокументов(
ТаблицаСтатусовСчетов, ПараметрыПроведения.Реквизиты);
КонецЕсли;
КонецПроцедуры
Кто что формирует (вызов → смысл; счёт-«источник истины» — внутри модуля, не в документе):
| Вызов в коде | Какой учёт пишет |
|---|---|
УправлениеВзаиморасчетамиСервер.СформироватьДвиженияПогашениеЗадолженности |
Погашение/аванс по расчётам с контрагентом (оплата покупателя, возврат поставщиком, кредиты/займы) — формирует и проводку Дт кассы / Кт расчётов, и регистры взаиморасчётов |
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПрочееПоступление |
«Прочий приход», получение наличных в банке, оплата от подразделения — приход в кассу по указанным счёту/субконто |
УправлениеДенежнымиСредствамиСервер.СформироватьДвиженияПеречислениеВПодотчет |
Возврат подотчётных сумм (таблица ВыдачаВПодотчет) |
УчетДоходовРасходов.…ПереоценкаВалютныхОстатков |
Переоценка валютных остатков по проводкам документа (курсовые разницы) |
РасчетЗарплатыСервер.СформироватьДвиженияВозвратЗП |
Возврат заработной платы сотрудником |
ПроцедурыНалоговогоУчета.ОтразитьПостоянныеРазницыВНУ |
Постоянные разницы в налоговом учёте |
СтатусыДокументов.СформироватьДвиженияОплатаСчетов / …СтатусовДокументов |
Статусы оплаты счетов на оплату (регистр статусов) |
Важные детали из кода:
- РучнаяКорректировка = Истина → авто-проведение полностью пропускается (Возврат сразу после ПодготовитьНаборыЗаписейКПроведению) — движения заполняет пользователь.
- Порядок строгий: взаиморасчёты → прочее поступление → подотчёт → переоценка валюты (намеренно после всех прочих проводок) → возврат ЗП → постоянные разницы НУ → статусы счетов.
- Признак ГрупповоеПерепроведение (из ДополнительныеСвойства) выключает работу со статусами счетов — чтобы при массовом перепроведении не пересчитывать их лишний раз.
objects/ приводит «плоские» проводки (Дт 50.01 Кт 62.01 / 71.01 / 51.01 …) и заявляет прямую запись в AccountingRegister.Типовой/Налоговый из ОбработкаПроведения. Реальный код таких движений в документе не содержит — их формируют общие модули УправлениеВзаиморасчетамиСервер, УправлениеДенежнымиСредствамиСервер и др. по учётной политике. Точные Дт/Кт сверяем по отчёту «Дт/Кт» на проведённом документе. См. [журнал ошибок](../../../../issues/AccountingKZ30/issues.md).📌 Про номера счетов. В разборе
objects/фигурируют российские номера (50.01, 51, 62.01, 71.01). В Бухгалтерии для Казахстана план счетов другой (касса — 1010, расчёты с покупателями — 1210, с подотчётными — 1250-е и т.п.). Конкретные счета зависят от настроекСчетаУчетаВДокументахи учётной политики — это и есть источник истины. См. issue [KZ30-0087].
СчетаУчетаВДокументах) и настройке кассы, а не в самом ПКО. Документ — оркестратор: вся логика счетов и взаиморасчётов живёт в УправлениеВзаиморасчетамиСервер, УправлениеДенежнымиСредствамиСервер, СтатусыДокументов, УчетнаяПолитикаСервер. Туда и смотреть при разборе у клиента. Отдельно проверяйте: совпадение валют кассы/документа, заполнение СчетаУчетаВДокументах по умолчанию, для подотчёта — равенство суммы таблицы и суммы документа.Валидации (ОбработкаПроверкиЗаполнения)
Логика проверки построена «от обратного»: сначала собирается массив непроверяемых реквизитов (МассивНепроверяемыхРеквизитов) в зависимости от вида операции, и только оставшиеся проверяются на обязательность. Ключевое:
- Расшифровка платежа проверяется только если
ЕстьРасшифровкаПлатежа(ВидОперации)истинно; иначе вся группа полей расшифровки исключается из проверки. Если учёт по договорам выключен (ВестиУчетПоДоговорам) — из проверки убирается договор в строках. ВыдачаВПодотчетпроверяется только для вида «Возврат подотчётником»; для этого вида дополнительно: сумма строк таблицы должна равнятьсяСуммаДокумента, иначе —СообщитьПользователю("Не совпадает сумма документа и суммы выплат по строкам документа")+Отказ.ВидУчетаНУобязателен только когда организация — плательщик налога на прибыль и установленУчитыватьКПН; иначе исключается.СчетУчетаРасчетовСКонтрагентомНУпроверяется только при необходимости отражения в НУ и зависит от вида операции (особый случай — «Прочий приход» и расчёты по кредитам).СчетОрганизацииобязателен для «Получение наличных в банке» и «Прочий приход»; в остальных случаях исключается.СчетУчетаРасчетовСКонтрагентомБУисключается для большинства видов, кроме «Прочее» и «Получение наличных в банке».Контрагентисключается из проверки, если это не возврат работником и нет расшифровки платежа (т.е. для операций без контрагента).- Возврат ЗП: валюта документа должна быть валютой регламентированного учёта — иначе сообщение «Возврат заработной платы можно оформлять только в …».
- Для видов с расшифровкой по каждой строке вызывается
УправлениеВзаиморасчетамиСервер.ВозможноПроведениеВ_БУ_НУ(...)— проверка корректности валют/курсов взаиморасчётов. - В конце — делегирование
СчетаУчетаВДокументах.ПроверитьЗаполнение(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, ...).
Особенности ПередЗаписью
- Если у вида операции есть расшифровка и в ней есть строки — договор шапки берётся из первой строки (
РасшифровкаПлатежа[0].ДоговорКонтрагента), иначе очищается. Если расшифровка пуста — добавляется пустая строка (чтобы документ всегда имел хотя бы одну). - Вне вида «Возврат подотчётником» очищается
ВыдачаВПодотчет; безУчитыватьКПНочищаетсяВидУчетаНУ. - Синхронизация статусов счетов при отмене проведения: если
РежимЗаписи = ОтменаПроведенияи вид операции — «Оплата покупателя», и в расшифровке есть непустыеСчетНаОплату, формируются движения снятия статусов оплаты (СтатусыДокументов.СформироватьДвиженияСтатусовДокументов).
Движения по регистрам
Состав движений зависит от вида операции и формируется общими модулями. Сводно (источник истины — отчёт «Дт/Кт» и код вызываемых модулей):
| Регистр | Что пишет | Когда |
|---|---|---|
AccountingRegister.Типовой (БУ) |
Приход в кассу: Дт счёта кассы / Кт счёта расчётов (или банк. счёта, подотчёта…) | Все виды (через вызываемые модули) |
AccountingRegister.Налоговый (НУ) |
Аналог в НУ + постоянные разницы | Когда применимо (КПН) |
| Регистры взаиморасчётов с контрагентами | Погашение/аванс задолженности | Оплата покупателя, возврат поставщиком, кредиты/займы |
AccumulationRegister.ВзаиморасчетыСРаботникамиОрганизаций |
Уменьшение задолженности сотрудника | Возврат подотчётником |
AccumulationRegister.ВыплаченныеДоходыРаботникамОрганизацийНУ |
Налоговый учёт по сотрудникам | Операции с физлицами/возврат ЗП |
AccumulationRegister.ОплатаСчетов (+ регистр статусов) |
Связь платежа со счётом на оплату, статус оплаты | Оплата покупателя со СчетНаОплату |
objects/ детализированы не полностью — состав сверяйте по результату проведения. См. issue [KZ30-0089].Зависимости (общие модули)
УправлениеВзаиморасчетамиСервер (погашение задолженности, проверка возможности проведения), УправлениеДенежнымиСредствамиСервер (прочее поступление, подотчёт, заполнение реквизитов расчётного документа), СтатусыДокументов (статусы оплаты счетов), СчетаУчетаВДокументах (заполнение/проверка счетов по умолчанию), РасчетЗарплатыСервер (возврат ЗП, наборы доступа по физлицам), УчетДоходовРасходов (переоценка валютных остатков), ПроцедурыНалоговогоУчета / УчетнаяПолитикаСервер (КПН, постоянные разницы), РаботаСДоговорамиКонтрагентов, ОбщегоНазначенияБК/ОбщегоНазначенияБКВызовСервераПовтИсп.
ВидОперации— первичен. Любой анализ начинай с него: он определяет видимые ТЧ, набор обязательных реквизитов и набор вызываемых модулей вОбработкаПроведения. ХелперДокументы.ПриходныйКассовыйОрдер.ЕстьРасшифровкаПлатежа(ВидОперации)— единая точка, отвечающая, нужна ли расшифровка.- Проверка «от обратного».
ОбработкаПроверкиЗаполненияне перечисляет обязательные поля, а вычитает необязательные изПроверяемыеРеквизиты. При добавлении нового вида операции правь именно этот список и финальныйСчетаУчетаВДокументах.ПроверитьЗаполнение.РучнаяКорректировка = Истина→ проведение пропускается (Возвратв началеОбработкаПроведения) — движения заполняет пользователь.- Переоценка валюты — строго последней среди проводок (намеренно, см. комментарий в коде), иначе курсовые разницы посчитаются по неполному набору движений.
- Статусы счетов трогаются и в
ОбработкаПроведения, и вПередЗаписью(при отмене проведения), и зависят от флагаГрупповоеПерепроведение— при доработках перепроведения это легко упустить.
🔗 Связанные разделы
- rashodnyy-kassovyy-order — зеркальный документ выбытия наличных (РКО)
- schet-na-oplatu-pokupatelyu — основание для оплаты, статус которого обновляет ПКО
- realizaciya-tmz-i-uslug — основание при оплате за отгруженное
- platezhnyy-order-postuplenie-denezhnyh-sredstv — аналог по безналичным поступлениям
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |