Документ «Счёт на оплату покупателю»

Документ выставляет покупателю счёт на оплату товаров, услуг или основных средств: фиксирует ассортимент, цены, НДС и акциз, печатает бланк счёта и отслеживает статусы оплаты/отгрузки. Бухгалтерских проводок не делает — это «коммерческий» документ-основание для будущей оплаты и отгрузки.

Бухгалтерия для Казахстана, ред. 3.0 · v3.0.72.1 · обновлено 2026-06-04

🎯 Что это и зачем

Прежде чем продать товар или оказать услугу, поставщик обычно выставляет покупателю счёт на оплату — формализованное предложение: что продаём, по какой цене, на какой банковский счёт перечислить деньги. Документ «Счёт на оплату покупателю» решает именно эту задачу.

Что он даёт: - печать бланка счёта с реквизитами организации, покупателя, банковским счётом и кодом назначения платежа (КНП); - расчёт сумм строк, НДС и акциза (как и в реализации, но без движений по учёту); - отслеживание статусов — оплачен / не оплачен, отгружен / к отгрузке (через регистр сведений, а не реквизиты документа); - основание для дальнейших документов — поступления оплаты (на расчётный счёт / в кассу) и отгрузки (реализация).

Кто работает: менеджеры по продажам, бухгалтеры, логисты. Выписывается часто — по мере поступления заявок от покупателей.

⚠️ Главное про этот документ. Счёт на оплату покупателю не формирует бухгалтерских проводок и при проведении не пишет движений по регистрам учёта. По сути он не «проводится» в привычном смысле — он записывается, печатается и служит основанием. Деньги и отгрузка отражаются другими документами (см. ниже).

🧭 Где найти в программе

Раздел «Продажа» → пункт «Счета покупателям». Откроется журнал счётов; новый создаём кнопкой «Создать».

раздел «Продажа», открытый журнал «Счета покупателям» со списком счётов и колонками статусов. (AccountingKZ30 во Fresh; маршрут: Продажа → Счета покупателям)
раздел «Продажа», открытый журнал «Счета покупателям» со списком счётов и колонками статусов. (AccountingKZ30 во Fresh; маршрут: Продажа → Счета покупателям)
💡 Подсказка. В разных интерфейсах пункт может встречаться под синонимами «Счёт на оплату покупателю», «Счета на оплату», «Счёт покупателю» — это один и тот же объект Документ.СчетНаОплатуПокупателю.

👤 Часть 1. Для пользователя

Проходим по шагам: от пустого документа до записанного счёта, его печати и отслеживания оплаты.

Урок 1. Счёт на товары

Когда: покупатель запросил поставку товаров, нужно выставить счёт на оплату.

Шаг 1. Создаём документ

«Создать» — откроется новая форма счёта. Шапка частично заполнится сама: подставится основная организация, валюта регламентированного учёта (тенге) и текущая дата.

📷 СКРИН 02
СКРИН 02 — пустая форма нового счёта с уже подставленной организацией и датой.

Шаг 2. Заполняем шапку

заполненная шапка — организация, контрагент, банковский счёт, договор.
заполненная шапка — организация, контрагент, банковский счёт, договор.

Шаг 3. Добавляем товары

Переходим на закладку «Товары». Способы заполнения: - «Подбор» — массовый выбор из справочника номенклатуры; - «Добавить» — построчно вручную; - «Загрузить из файла» — импорт из Excel/CSV (см. Урок 4); - по штрихкоду — добавление сканером (см. Урок 5).

При выборе номенклатуры сами заполнятся единица измерения, коэффициент, цена (по типу цен документа), ставка НДС и ставка акциза. Указываем количество — суммы и налоги пересчитаются автоматически.

📷 СКРИН 04
СКРИН 04 — табличная часть «Товары» с подобранной номенклатурой, ценами и колонками НДС/акциза.

Шаг 4. Проверяем итог

Поле Сумма документа в шапке — только для чтения, оно пересчитывается само при любом изменении строк. Сверяем итог.

📷 СКРИН 05
СКРИН 05 — шапка с автоматически рассчитанной суммой документа.

Шаг 5. Записываем

«Записать» (Ctrl+S) или «Записать и закрыть». После записи документ можно печатать и создавать на его основании оплату/отгрузку.

💡 Подсказка. Чтобы цены подставлялись сами — заранее задайте тип цен в договоре с покупателем; тогда строки заполнятся ценами из регистра цен номенклатуры.
⚠️ Важно. Обязательны Организация, Контрагент и Структурная единица (банковский счёт/касса). Кроме того, счёт не запишется пустым — нужна хотя бы одна строка в одной из частей «Товары», «Услуги» или «ОС».

Урок 2. Счёт на услуги и основные средства

Документ умеет выставлять счёт сразу по трём видам предмета продажи — для каждого своя закладка:

Заполнять можно любую из частей или несколько сразу. Сумма документа складывается из всех трёх частей.

📷 СКРИН 06
СКРИН 06 — закладка «Услуги» с колонкой «Содержание» и закладка «ОС» с выбором основного средства.
💡 По услугам и ОС, как и по товарам, счёт не двигает учёт — только считает суммы и НДС для печати.

Урок 3. Цены и валюта

Если изменился курс, тип цен или договор — пересчитываем строки одним диалогом.

  1. В шапке кликаем ссылку «Цены и валюта».
  2. В диалоге переоценки меняем валюту документа, тип цен или договор.
  3. Выбираем способ: - Перезаполнить цены — подтянуть цены из регистра заново (например, при смене типа цен); - Пересчитать суммы по курсу — пересчитать в новой валюте, сохранив цены.
  4. Подтверждаем — строки, суммы и НДС обновятся; курс и кратность взаиморасчётов встанут на дату документа.
📷 СКРИН 07
СКРИН 07 — диалог «Цены и валюта» (переоценка валюты и пересчёт цен).
⚠️ Важно. Если меняете дату документа вместе с валютой, программа может запросить подтверждение пересчёта курса. Курс валюты должен быть задан в справочнике валют на дату документа.

Урок 4. Загрузка товаров из файла

Заявку покупателя в виде таблицы Excel можно загрузить, не вводя строки вручную.

  1. На закладке «Товары» — команда «Загрузить из файла».
  2. Выбираем файл с колонками «Наименование» / «Артикул», «Количество», «Цена».
  3. Система сопоставит строки с номенклатурой по артикулу или наименованию.
  4. При неоднозначности (несколько одинаковых наименований) откроется диалог выбора.
  5. Подтверждаем — строки добавятся, цены и количества заполнятся из файла. Проверяем и записываем.
💡 Несопоставленные позиции система покажет отдельно — их нужно сопоставить вручную или завести в справочнике номенклатуры.

Урок 5. Статусы оплаты и отгрузки

Счёт отслеживает два статуса — оплаты и отгрузки. Они хранятся не в реквизитах документа, а в отдельном регистре, поэтому видны в списке счётов отдельными колонками.

Групповое изменение статусов: 1. В форме списка счётов выделяем нужные (галочками или Shift+Click). 2. Команда «Изменить статус». 3. В диалоге выбираем статус оплаты (например, «Оплачен», «Частично оплачен») и статус отгрузки («Отгружен», «К отгрузке»). 4. «ОК» — статусы обновятся для всех выбранных счётов, открытые карточки перечитают данные.

📷 СКРИН 08
СКРИН 08 — форма списка с выделенными счётами и открытый диалог «Изменить статус».
💡 Подсказка. Сумму фактической оплаты по счёту система берёт из движений документов оплаты (регистр «Оплата счетов»). Сам счёт оплату не «отмечает» — она появляется, когда вы проведёте поступление денег по этому счёту.
⚠️ Важно. Оба поля статуса в диалоге обязательны — без них изменение не сохранится.

🛠 Часть 2. Для программиста

Источник: реальный код релиза 3.0.72.1 (Documents/СчетНаОплатуПокупателю/Ext/ObjectModule.bsl), плюс разбор objects/ и business-logic/.

Главное про объект

Документ.СчетНаОплатуПокупателю — документ без движений по регистрам. В метаданных нет register_records, а в ObjectModule.bsl отсутствует обработчик ОбработкаПроведения. Бухгалтерских и налоговых проводок документ не делает. Его роль — собрать коммерческие данные (номенклатура, цены, НДС/акциз), посчитать сумму, напечатать счёт и выступить основанием для оплаты/отгрузки. Отслеживание оплаты и отгрузки вынесено во внешние регистры.

Структура объекта

Ключевые реквизиты шапки. Обязательные (FillCheck = ShowError): Организация, Контрагент, СтруктурнаяЕдиница (составной тип — СправочникСсылка.БанковскиеСчета либо СправочникСсылка.Кассы). Прочие: ДоговорКонтрагента, ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов, ТипЦен, Склад, СтруктурноеПодразделение, СуммаДокумента (только для чтения, считается перед записью), АдресДоставки, КодНазначенияПлатежа, Ответственный, Автор, Комментарий. Управляющие флаги: УчитыватьНДС, СуммаВключаетНДС, УчитыватьАкциз, СуммаВключаетАкциз.

Табличные части (предмет продажи — три варианта):

Часть Что хранит Особенности
Товары материальная номенклатура Количество, Коэффициент, ЕдиницаИзмерения, Цена, Сумма, СтавкаНДС/СуммаНДС, СтавкаАкциза/СуммаАкциза
Услуги работы и услуги Содержание (текст), без складских и акцизных реквизитов
ОС основные средства ссылка ОсновноеСредство, Сумма, СтавкаНДС/СуммаНДС

Формы: ФормаДокумента (основная), ФормаСписка (колонки статусов, групповые операции), ФормаВыбора (подстановка ссылки), ИзменитьСтатус (диалог группового изменения статусов).

Жизненный цикл (обработчики ObjectModule)

Модуль маленький (~60 строк). Весь его состав:

Обработчик Что делает (по реальному коду)
ОбработкаЗаполнения При создании/вводе на основании: удаляет Автор из структуры заполнения, переносит свойства в объект, вызывает ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(...) с валютой регл. учёта и видом учёта «Продажа»
ПередЗаписью Считает сумму документа УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект) и заполняет договор РаботаСДоговорамиКонтрагентов.ЗаполнитьДоговорПередЗаписью(ЭтотОбъект); при загрузке из обмена — выходит сразу
ОбработкаПроверкиЗаполнения Если есть строки хотя бы в одной из частей Товары/Услуги/ОС — снимает эти части из списка проверяемых реквизитов (условная обязательность «непустоты»)
ПриКопировании Сбрасывает Дата на начало текущего дня пользователя
⚠️ ОбработкаПроведения в модуле нет. Это не упущение разбора — документ действительно не проводит движения. Поэтому таблиц «Дт/Кт» по нему не будет.

Реальный код ключевых процедур (3.0.72.1)

Модуль целиком умещается в одном экране — ниже три значимых обработчика дословно.

ПередЗаписью — здесь вся «вычислительная» работа документа:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    // Посчитать суммы документа и записать ее в соответствующий реквизит шапки для показа в журналах
    СуммаДокумента = УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект);

    РаботаСДоговорамиКонтрагентов.ЗаполнитьДоговорПередЗаписью(ЭтотОбъект);

КонецПроцедуры // ПередЗаписью

Разбор: - СуммаДокумента пересчитывается на каждой записи из табличных частей — отсюда и режим «только для чтения» в форме. Перезаписывать его вручную бессмысленно. - ЗаполнитьДоговорПередЗаписью гарантирует непустой договор перед сохранением (подстановка основного договора контрагента, если поле осталось пустым). - При загрузке через обмен данными (ОбменДанными.Загрузка) оба действия пропускаются — иначе синхронизация конфликтовала бы с уже рассчитанными значениями.

ОбработкаПроверкиЗаполнения — условная обязательность табличных частей:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

    Если ЭтотОбъект.Товары.Количество() > 0
        ИЛИ ЭтотОбъект.Услуги.Количество() > 0
            ИЛИ ЭтотОбъект.ОС.Количество() > 0 Тогда

        ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары"));
        ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Услуги"));
        ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ОС"));

    КонецЕсли;

КонецПроцедуры

Разбор: логика «нужна хотя бы одна строка». Все три части помечены в метаданных как заполняемые; если хотя бы одна непуста — три части снимаются с проверки разом. Если все три пусты — платформа сообщит о незаполненных табличных частях, и документ не запишется. Тонкость: проверка проходит, даже если заполнены, скажем, только «Услуги» — пустые «Товары» и «ОС» это не блокируют.

ОбработкаЗаполнения — инициализация при создании / вводе на основании:

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

    ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);

    Если ТипДанныхЗаполнения = Тип("Структура") Тогда
        Если ДанныеЗаполнения.Свойство("Автор") Тогда
            ДанныеЗаполнения.Удалить("Автор");
        КонецЕсли;
        ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
    КонецЕсли;

    ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, Константы.ВалютаРегламентированногоУчета.Получить(), "Продажа");

КонецПроцедуры

Разбор: при заполнении структурой Автор намеренно вычищается (чтобы не унаследовать автора из документа-источника), остальные свойства переносятся в объект, затем шапка достраивается стандартной процедурой подсистемы заполнения с валютой регл. учёта и контекстом «Продажа».

Движения по регистрам

Прямых движений документ не делает. Связанные регистры используются «вокруг» документа:

Регистр Тип Кто пишет Роль для счёта
СтатусыДокументов сведения форма ИзменитьСтатус / процедуры статусов хранит статус оплаты (Статус) и статус отгрузки (ДополнительныйСтатус); счёт читает для колонок и формы
ОплатаСчетов накопление документы оплаты (поступление на р/с, ПКО) счёт читает через ОплаченнаяСуммаСчета (ManagerModule), но сам не пишет

То есть «движения» счёта — это записи других документов, на которые он ссылается, плюс служебный регистр статусов, обновляемый из интерфейса.

Что делает вместо проводок

Раз бухгалтерского проведения нет, полезная нагрузка документа такая: 1. Расчёт сумм — СуммаДокумента и построчные Сумма/СуммаНДС/СуммаАкциза (в ПередЗаписью и обработчиках формы). 2. Печать — ManagerModule.ПечатьСчетаЗаказа (~376 строк) формирует табличный документ: реквизиты организации и контрагента, банковские реквизиты из СтруктурнаяЕдиница, КНП, строки товаров/услуг/ОС, доп. колонки и язык. Команда печати регистрируется через ДобавитьКомандыПечати. 3. Статусы — оплата/отгрузка через регистр сведений СтатусыДокументов. 4. Основание — на базе счёта вводят документы оплаты и отгрузки (см. «Связи»).

Валидации (ОбработкаПроверкиЗаполнения + метаданные + формы)

Зависимости (общие модули)

💼 Партнёру / внедренцу.
  1. «Счёт не проводится» — это нормально. Если клиент ждёт проводок от счёта — объясните, что счёт коммерческий: учёт делают оплата и реализация. Дебиторку и факт оплаты он отслеживает статусами и регистром ОплатаСчетов, а не движениями.
  2. Печать. Кастомизация бланка — это ManagerModule.ПечатьСчетаЗаказа и макеты. Доп. колонку печатной формы регулирует константа ДополнительнаяКолонкаПечатныхФормДокументов. Банковские реквизиты в счёт попадают из СтруктурнаяЕдиница — если в счёте «не те реквизиты», проверяйте банковский счёт организации, а не документ.
  3. Статусы. Хотите автоматически проставлять «Оплачен» при поступлении денег — это логика вокруг регистров ОплатаСчетов/СтатусыДокументов, в самом документе её нет. Точка расширения — обработка проведения документов оплаты или регламентное задание.
  4. Договор. ЗаполнитьДоговорПередЗаписью подставит основной договор сам. Если у клиента «не тот договор» — смотрите основной договор контрагента и виды договоров («С покупателем» / «Полученный аванс»).
  5. Цены. Подстановка цен завязана на тип цен договора/документа и УправлениеЦенообразованием — настраивается через типы цен и регистр цен номенклатуры.
🧩 Заметки для разработчика.
  1. Обработчика ОбработкаПроведения нет — не ищите движения и не пытайтесь «починить проводки». Расширяйте через ПередЗаписью/ПриЗаписи или связанные документы.
  2. СуммаДокумента всегда пересчитывается в ПередЗаписью — любые внешние присвоения этого реквизита будут затёрты при записи.
  3. Условная обязательность частей построена на снятии реквизитов из ПроверяемыеРеквизиты; если добавляете новую табличную часть-предмет продажи — не забудьте включить её в это условие.
  4. Статусы оплаты/отгрузки — это не реквизиты документа, а регистр СтатусыДокументов (Статус / ДополнительныйСтатус). Программно меняйте через процедуры статусов, а не через объект.
  5. При загрузке через обмен ПередЗаписью ранний Возврат — пересчёт суммы и подстановка договора не сработают; учитывайте при отладке интеграций.

🔗 Связанные разделы

🆕 Что нового

Версия Изменение Тип
3.0.72.1 Первичное описание (на релизе 3.0.72.1) 🆕