База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер › Ответ в теме: Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер
В типовой конфигурации 1С:Бухгалтерия (например, редакция 3.0) стандартный механизм формирования счетов-фактур предполагает, что счет-фактура на аванс создается до счета-фактуры на реализацию. Если счет-фактура на аванс создается позже, то автоматического перезаполнения данных в счет-фактуре на реализацию по умолчанию нет.
Чтобы реализовать автоматическое перезаполнение счета-фактуры на реализацию при создании счета-фактуры на аванс, когда аванс оформлен позже, нужно сделать доработку:
1. **Обработчик события записи документа «Счет-фактура на аванс»**
При записи документа «Счет-фактура на аванс» нужно программно найти связанный документ «Счет-фактура на реализацию» (по договору, контрагенту, номеру и дате реализации) и обновить в нем реквизиты, которые должны подтягиваться из счета-фактуры на аванс (например, номер счета-фактуры на аванс, дата, сумма и т.п.).
2. **Пример кода (упрощенный):**
Процедура ПриЗаписи(Отказ, РежимЗаписи)
// Найти связанный счет-фактуру на реализацию
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументСФР.Ссылка КАК СсылкаСФР
|ИЗ
| Документ.СчетФактураНаРеализацию КАК ДокументСФР
|ГДЕ
| ДокументСФР.Договор = &Договор
| И ДокументСФР.Контрагент = &Контрагент
| И ДокументСФР.Дата <= &ДатаАванса
|УПОРЯДОЧИТЬ ПО ДокументСФР.Дата УБЫВ";
Запрос.УстановитьПараметр("Договор", ЭтотОбъект.Договор);
Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент);
Запрос.УстановитьПараметр("ДатаАванса", ЭтотОбъект.Дата);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
СсылкаСФР = Результат.Выбрать().СсылкаСФР;
// Загрузить документ счет-фактура на реализацию
ДокументСФР = СсылкаСФР.ПолучитьОбъект();
// Обновить реквизиты счета-фактуры на реализацию из счета-фактуры на аванс
ДокументСФР.НомерСчетаФактурыАванса = ЭтотОбъект.Номер;
ДокументСФР.ДатаСчетаФактурыАванса = ЭтотОбъект.Дата;
// Можно обновить и другие реквизиты по необходимости
ДокументСФР.Записать();
КонецПроцедуры
3. **Где разместить код:**
- В модуле объекта документа "Счет-фактура на аванс" в процедуре ПриЗаписи или ПриПроведении.
- Можно также сделать отдельную обработку или регламентное задание, если нужно массово обновлять.
4. **Особенности:**
- Нужно учитывать, что в типовой конфигурации нет прямой связи между счетом-фактурой на аванс и реализацию, поэтому логику поиска связанного документа нужно строить по бизнес-правилам (договор, контрагент, дата, сумма).
- Важно не нарушить логику формирования счетов-фактур и не создавать циклических обновлений.
5. **Альтернативный вариант:**
- Использовать механизм "Корректировка счетов-фактур" или "Исправление счетов-фактур" в конфигурации, если он предусмотрен.
- Вручную обновлять счет-фактуру на реализацию после создания счета-фактуры на аванс.
(там описаны механизмы работы с счетами-фактурами и возможные доработки)
Если нужна конкретная доработка под вашу конфигурацию, то лучше делать на базе типового механизма с учетом ваших бизнес-процессов.