Документ «Счёт на оплату поставщика»
Документ регистрирует входящий счёт, который поставщик выставил вашей организации на оплату товаров, услуг или основных средств: фиксирует ассортимент, цены и НДС, печатает бланк счёта и отслеживает статусы оплаты/поступления. Бухгалтерских проводок не делает — это информационный документ-основание для платежа и оприходования.
🎯 Что это и зачем
Когда поставщик присылает счёт на оплату, его удобно зарегистрировать в программе: зафиксировать, кому, за что и сколько вы должны заплатить, на какой банковский счёт и с каким кодом назначения платежа (КНП). Документ «Счёт на оплату поставщика» решает именно эту задачу — это «зеркало» счёта покупателю, только со стороны закупок.
Что он даёт: - регистрацию обязательства перед поставщиком (номенклатура, услуги или ОС, цены, НДС); - печать бланка счёта с реквизитами организации и поставщика, банковским счётом и КНП; - отслеживание статусов — оплачен / не оплачен, поступило / не поступило (через регистр сведений, а не реквизиты документа); - основание для дальнейших документов — платёжного поручения (списания с расчётного счёта) и поступления товаров и услуг.
Кто работает: сотрудники отдела закупок и бухгалтеры. Регистрируется по мере поступления счетов от поставщиков, нередко — пачками, в том числе загрузкой из файла.
🧭 Где найти в программе
Раздел «Покупка» → пункт «Счета на оплату поставщиков». Откроется журнал счётов; новый создаём кнопкой «Создать».
navigation-map.json) для объекта Документ.СчетНаОплатуПоставщика нет явной записи — маршрут восстановлен по разделу подсистемы «Покупка» и по аналогии с зеркальным документом Документ.СчетНаОплатуПокупателю (он лежит в разделе «Продажа» → «Счета покупателям»). Точное имя пункта левого меню в вашей сборке сверьте на экране. См. пробел [KZ30-0007] в журнале ошибок.Документ.СчетНаОплатуПоставщика.👤 Часть 1. Для пользователя
Проходим по шагам: от пустого документа до записанного счёта, его печати и отслеживания оплаты.
Урок 1. Счёт на товары
Когда: поставщик прислал счёт на поставку товаров или материалов — нужно зарегистрировать его в системе.
Шаг 1. Создаём документ
Раздел «Покупка» → «Счета на оплату поставщиков» → «Создать». Откроется новая форма счёта.
Шаг 2. Заполняем шапку
- Организация — от имени какой компании пойдёт оплата (подставится основная или выбираем вручную). Обязательна.
- Контрагент — поставщик, выставивший счёт. Обязателен.
- Договор — подтянется автоматически (первый договор вида «С поставщиком»); при необходимости выбираем другой.
- Банк/касса (реквизит «Структурная единица») — банковский счёт или касса, с которой планируется оплата.
- Номер входящего документа и Дата входящего документа — реквизиты из бумажного/электронного счёта поставщика.
- Валюта документа — по умолчанию из договора или национальная (KZT).
Шаг 3. Настраиваем НДС
- Флаг «Учитывать НДС» — включаем, если поставщик выставил счёт с НДС (большинство случаев). При выключении колонки НДС в табличных частях скрываются.
- Флаг «Сумма включает НДС» — включаем, если цены уже содержат НДС (НДС выделяется из суммы); выключаем, если НДС начисляется сверх цены.
Шаг 4. Добавляем товары
Переходим на вкладку «Товары» → кнопка «Подбор» → выбираем номенклатуру из справочника. Программа подставит единицу измерения, цену (из типа цен на дату документа) и ставку НДС из карточки номенклатуры. Указываем количество, при необходимости правим цену.
Шаг 5. Проверяем итоги
Внизу формы — суммы Итого и НДС (агрегируются автоматически из строк). Убеждаемся, что цифры совпадают со счётом поставщика.
Шаг 6. Записываем
«Записать» (Ctrl+S) или «Записать и закрыть». Кнопки «Провести» у этого документа нет — он не проводится. При записи сработает контроль заполнения (см. Часть 2), а Сумма документа пересчитается автоматически.
Урок 2. Счёт на услуги и на ОС
Отличия от товаров минимальны — меняется только вкладка:
- Услуги — вкладка «Услуги». Кроме номенклатуры, цены и количества доступно поле «Содержание» — текстовая расшифровка услуги («Консультационные услуги», «Транспортировка» и т. п.).
- Основные средства — вкладка «ОС». Выбираем элемент справочника «Основные средства» и вручную указываем Сумму (цена из типа цен здесь не подставляется) и ставку НДС.
Урок 3. Загрузка строк из файла
Если поставщик прислал счёт в Excel/CSV, строки можно импортировать, не вводя вручную.
- Вкладка «Товары» (или «Услуги») → кнопка «Загрузить из файла».
- Выбираем файл (.xls, .xlsx, *.csv).
- В форме сопоставления указываем соответствие колонок файла реквизитам табличной части (Номенклатура ↔ артикул/наименование, Количество, Цена).
- Программа попытается сопоставить номенклатуру по артикулу или наименованию. Неоднозначные позиции (несколько элементов с одинаковым артикулом) выводятся списком для ручного выбора.
- «Загрузить» → строки добавятся в табличную часть. Проверяем цены и количество.
Урок 4. Статусы оплаты и поступления
Счёт удобно вести по двум статусам — оплаты и поступления товаров.
- В форме документа — поле статуса справа от реквизитов; выбираем новое значение из списка.
- Массово в журнале — выделяем один или несколько счетов → кнопка «Изменить статус» → в открывшейся форме задаём Статус оплаты и Статус поступления → «ОК».
После сохранения статусы запишутся в регистр сведений «СтатусыДокументов», а все открытые формы этих документов обновятся (через системное оповещение).
ПроверитьЗаполнение()).Урок 5. Печать счёта
- Открываем счёт (или выделяем в журнале) → кнопка «Печать» → «Счёт на оплату».
- Программа сформирует печатный бланк на основе макета: реквизиты организации и поставщика, банковский счёт, КНП, строки с ценами и НДС, итоги.
- В бланке отображается и оплаченная сумма (динамически из регистра накопления «ОплатаСчетов») с остатком к оплате — то есть, сколько по этому счёту уже перечислено.
- Печатаем или сохраняем в PDF.
Урок 6. Копирование счёта
Для регулярных закупок счёт удобно копировать.
- В журнале выделяем счёт-источник → «Скопировать» (Ctrl+Shift+C).
- Откроется новый документ с данными исходного (шапка и все табличные части).
- Дата автоматически встанет на сегодня (обработчик
ПриКопировании) — при необходимости поправьте вручную до записи. - Корректируем номенклатуру/цены и записываем; новый номер присвоится при первой записи.
🛠 Часть 2. Для программиста
Источник: реальный код релиза 3.0.72.1 (Documents/СчетНаОплатуПоставщика/Ext/ObjectModule.bsl) — модуль маленький, прочитан целиком, плюс разбор objects/ и business-logic/ (ManagerModule, формы).
Структура объекта
Ключевые реквизиты шапки (обязательные по метаданным «Заполнять обязательно»): Организация, Контрагент. Остальные реквизиты программно не проверяются на заполнение:
- расчётно-валютные: ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов, ТипЦен;
- управляющие флаги: УчитыватьНДС, СуммаВключаетНДС;
- расчётный: СуммаДокумента (вычисляется в ПередЗаписью, вручную не редактируется);
- партнёрские: ДоговорКонтрагента (вид «С поставщиком»), СтруктурнаяЕдиница (банк/касса), СтруктурноеПодразделение, Склад, Ответственный, Автор;
- реквизиты входящего счёта: НомерВходящегоДокумента, ДатаВходящегоДокумента, КодНазначенияПлатежа (КНП), Комментарий.
Табличные части: Товары (Номенклатура, ЕдиницаИзмерения, Коэффициент, Количество, Цена, Сумма, СтавкаНДС, СуммаНДС), Услуги (то же + Содержание, без единиц/коэффициента), ОС (ОсновноеСредство, Сумма, СтавкаНДС, СуммаНДС — без количества и автоподстановки цены).
Формы: ФормаДокумента (ключевая, три вкладки + статусы + подбор + загрузка из файла), ИзменитьСтатус (массовая смена статусов), ФормаВыбора, ФормаСписка.
Жизненный цикл (обработчики ObjectModule)
В модуле объекта реализованы только обработчики событий записи/заполнения — обработчика ОбработкаПроведения нет, документ непроводимый.
| Обработчик | Что делает (по реальному коду 3.0.72.1) |
|---|---|
ОбработкаЗаполнения |
При заполнении из структуры удаляет служебный Автор и переносит свойства; затем вызывает ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, Константы.ВалютаРегламентированногоУчета.Получить(), "Покупка") — заполняет шапку с привязкой к направлению «Покупка» |
ПередЗаписью |
Пересчитывает сумму через УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект) → пишет в СуммаДокумента; вызывает РаботаСДоговорамиКонтрагентов.ЗаполнитьДоговорПередЗаписью(ЭтотОбъект). При ОбменДанными.Загрузка — ранний выход (суммы и договор берутся из источника) |
ОбработкаПроверкиЗаполнения |
Если непуста хотя бы одна из ТЧ Товары/Услуги/ОС — снимает все три из массива проверяемых реквизитов (чтобы платформа не ругалась на «пустые» ТЧ). Обязательность Организация/Контрагент задаётся метаданными, не этим кодом |
ПриКопировании |
Сбрасывает Дата на начало текущего дня пользователя: НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя()) |
Как формируется запись — реальный код (3.0.72.1)
Самое важное для понимания документа: движений нет вообще. Вся «логика записи» сводится к двум вещам — пересчёту суммы для журналов и нормализации договора. Ниже — ключевые процедуры дословно.
ПередЗаписью — пересчёт суммы и договора:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Посчитать суммы документа и записать ее в соответствующий реквизит шапки для показа в журналах
СуммаДокумента = УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект);
РаботаСДоговорамиКонтрагентов.ЗаполнитьДоговорПередЗаписью(ЭтотОбъект);
КонецПроцедуры // ПередЗаписью
Разбор:
- СуммаДокумента — вычисляемый, не редактируемый вручную реквизит. Считается каждый раз перед записью функцией УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС, чтобы в журналах и форме выбора отображалась корректная сумма с НДС. Логика расчёта НДС вынесена в общий модуль УчетНДСИАкциза, а не в документ.
- РаботаСДоговорамиКонтрагентов.ЗаполнитьДоговорПередЗаписью — нормализует/доподставляет договор (вид «С поставщиком») перед сохранением.
- При загрузке из обмена (ОбменДанными.Загрузка) оба шага пропускаются — данные берутся из источника как есть.
ОбработкаПроверкиЗаполнения — «хотя бы одна табличная часть»:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ЭтотОбъект.Товары.Количество() > 0
ИЛИ ЭтотОбъект.Услуги.Количество() > 0
ИЛИ ЭтотОбъект.ОС.Количество() > 0 Тогда
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары"));
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Услуги"));
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ОС"));
КонецЕсли;
КонецПроцедуры
Разбор:
- Все три ТЧ помечены в метаданных как проверяемые. Код реализует правило «заполнена хотя бы одна»: если есть строки в любой из них, остальные снимаются с проверки, и платформа не выдаёт ошибку «не заполнена табличная часть Услуги/ОС».
- Если все три пусты — ни одна не удаляется из массива, и стандартная проверка заполнения завершится ошибкой → запись не пройдёт.
- Обязательность Организация/Контрагент обеспечивается свойством метаданных «Заполнять обязательно» (ShowError на уровне реквизита), а не этой процедурой.
ОбработкаЗаполнения — инициализация шапки по направлению «Покупка»:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("Автор") Тогда
ДанныеЗаполнения.Удалить("Автор");
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
КонецЕсли;
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, Константы.ВалютаРегламентированногоУчета.Получить(), "Покупка");
КонецПроцедуры
Разбор:
- При заполнении из Структура чистится служебный Автор (его проставит система при записи), затем копируются переданные свойства.
- ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(..., "Покупка") — общий механизм заполнения шапки; третий параметр "Покупка" явно указывает направление операции, что отличает этот документ от зеркального счёта покупателю (там было бы «Продажа»).
objects/ называет процедуру расчёта суммы УчетНДСИАкциза.РассчитатьСуммуДокумента(), тогда как реальный код вызывает УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект). Кроме того, в разборе не упомянут вызов РаботаСДоговорамиКонтрагентов.ЗаполнитьДоговорПередЗаписью и параметр направления "Покупка" в ОбработкаЗаполнения. Источник истины — ObjectModule.bsl релиза 3.0.72.1.Движений по регистрам нет — что вместо них
Документ не проводится и при записи не формирует движений по регистрам бухгалтерии/накопления (в метаданных register_records пуст; обработчика ОбработкаПроведения нет). Вместо учётных движений документ участвует в следующих механизмах:
| Механизм | Тип | Роль документа |
|---|---|---|
СтатусыДокументов |
регистр сведений | Хранит статусы оплаты и поступления по счёту. Пишется не самим документом, а формой ИзменитьСтатус (метод НовыеСтатусыДокумента()) и формой документа |
ОплатаСчетов |
регистр накопления | Пишется не этим документом, а документами оплаты (например, платёжным поручением) со ссылкой на счёт. Функция ОплаченнаяСуммаСчета() (ManagerModule) читает регистр для печати и показа остатка |
Печатная форма СчетЗаказНаОплату |
макет (ManagerModule) | Бланк счёта на оплату; функция ПечатьСчетаЗаказа (~305 строк) собирает реквизиты организации/поставщика, строки, итоги и оплаченную сумму |
| Создание на основании | сценарий | По метаданным based_on и inverse_based_on пусты. Функционально счёт служит основанием для платёжного поручения и поступления товаров и услуг — через подбор/ссылки, а не через типовой «ввод на основании» |
objects/ сценарий 3.1 упоминает регистр «СтатусыДокументов» «по умолчанию ‘Не оплачен’ и ‘Не поступило’», а раздел 6.3 утверждает, что движений по регистрам нет. Формально верны оба: проводок/движений при записи документа нет, но статусы и оплаченная сумма ведутся в отдельных регистрах сторонними механизмами (форма статусов и документы оплаты). Точные начальные значения статусов сверьте во Fresh.Валидации (ОбработкаПроверкиЗаполнения + метаданные + формы)
- Метаданные:
Организация,Контрагент— «Заполнять обязательно» (ShowError). - Код объекта: заполнена хотя бы одна ТЧ из
Товары/Услуги/ОС(иначе ошибка проверки заполнения). - Форма документа: договор должен быть вида «С поставщиком» (
РаботаСДоговорамиКонтрагентов.ПолучитьМассивВидовДоговоров); проверка банковских реквизитов организации (ПроверкаРеквизитовОрганизации); смена валюты вызывает диалог пересчёта цен. - Форма «Изменить статус»: обязателен выбор обоих статусов (
ПроверитьЗаполнение()); пустой список документов → отказ открытия. - Загрузка из файла (ManagerModule): сопоставление только по колонке «Номенклатура» (артикул/наименование); несовпадения → список неоднозначностей, новая номенклатура автоматически не создаётся.
Зависимости (общие модули)
Из ObjectModule:
- УчетНДСИАкциза — расчёт суммы документа с НДС (ПолучитьСуммуДокументаСНДС);
- ЗаполнениеДокументов — заполнение шапки по направлению «Покупка»;
- РаботаСДоговорамиКонтрагентов — нормализация договора перед записью (ЗаполнитьДоговорПередЗаписью);
- Константы.ВалютаРегламентированногоУчета, ОбщегоНазначения — валюта учёта и текущая дата пользователя.
Из форм и менеджера:
- ОбработкаТабличныхЧастейКлиентСервер — расчёт сумм/НДС/цен в строках (основной помощник формы);
- УправлениеЦенообразование — пересчёт цен при смене валюты/курса;
- СтатусыДокументов, СтатусОплатыСчета, СтатусыПоступленияПоСчету — управление статусами;
- УправлениеПечатью, макет СчетЗаказНаОплату, ОплатаСчетов — печать и расчёт оплаченной суммы.
Организация/Контрагент или все три ТЧ пусты; (2) «в журнале нулевая сумма» — СуммаДокумента считается в ПередЗаписью, документ нужно перезаписать; (3) «не печатается» — проверьте наличие макета СчетЗаказНаОплату; (4) «остаток к оплате не меняется» — оплаченная сумма берётся из регистра ОплатаСчетов, который наполняют документы оплаты со ссылкой на счёт, а не сам счёт; (5) «нет подбора цен на вкладке ОС» — это by design, по ОС сумма вводится вручную. Логика НДС живёт в УчетНДСИАкциза, договоры — в РаботаСДоговорамиКонтрагентов; туда и смотреть при настройке у клиента.
- Документ непроводимый: кнопки «Провести» нет,
ОбработкаПроведенияотсутствует. Не пытайтесь искать здесь Дт/Кт — их нет.СуммаДокументаперезаписывается вПередЗаписью— не выставляйте её программно через UI, значение затрётся.- Направление операции зашито параметром
"Покупка"вОбработкаЗаполнения— критично при создании из структуры/на основании, чтобы шапка заполнялась как закупочная.- Правило «хотя бы одна ТЧ» реализовано снятием реквизитов из
ПроверяемыеРеквизиты; при добавлении новой табличной части не забудьте включить её в это правило.- Статусы и оплаченная сумма — внешние регистры (
СтатусыДокументов,ОплатаСчетов). Изменение статуса рассылает оповещениеОповеститьОбИзмененииСтатусовДокументов— открытые формы обновятся в реальном времени.- При копировании дата сбрасывается на начало текущего дня (
НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя())) — учитывайте в авто-сценариях.
🔗 Связанные разделы
- postuplenie-tmz-i-uslug — оприходование товаров/услуг по счёту поставщика
- schet-faktura-poluchennyy — входящий счёт-фактура (ЭСФ) от поставщика
- platezhnoe-poruchenie — оплата поставщику; наполняет регистр «ОплатаСчетов»
- schet-na-oplatu-pokupatelyu — зеркальный документ со стороны продаж
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |