База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер › Ответ в теме: Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер
В типовой конфигурации 1С:Бухгалтерия (например, редакция 3.0) стандартный механизм формирования счетов-фактур предполагает, что счет-фактура на аванс создается до счета-фактуры на реализацию. Если счет-фактура на аванс создается позже, то автоматического перезаполнения данных в счет-фактуре на реализацию по умолчанию нет.
Чтобы реализовать автоматическое перезаполнение счета-фактуры на реализацию при создании счета-фактуры на аванс, когда аванс оформлен позже, нужно сделать доработку:
1. **Обработчик события записи документа «Счет-фактура на аванс»**
При записи документа «Счет-фактура на аванс» нужно программно найти связанный документ «Счет-фактура на реализацию» (по договору, контрагенту, номеру и дате реализации) и обновить в нем реквизиты, которые должны подтягиваться из счета-фактуры на аванс (например, номер счета-фактуры на аванс, дата, сумма и т.п.).
2. **Пример кода (упрощенный):**
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Процедура ПриЗаписи(Отказ, РежимЗаписи) // Найти связанный счет-фактуру на реализацию Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДокументСФР.Ссылка КАК СсылкаСФР |ИЗ | Документ.СчетФактураНаРеализацию КАК ДокументСФР |ГДЕ | ДокументСФР.Договор = &Договор | И ДокументСФР.Контрагент = &Контрагент | И ДокументСФР.Дата <= &ДатаАванса |УПОРЯДОЧИТЬ ПО ДокументСФР.Дата УБЫВ"; Запрос.УстановитьПараметр("Договор", ЭтотОбъект.Договор); Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент); Запрос.УстановитьПараметр("ДатаАванса", ЭтотОбъект.Дата); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат; КонецЕсли; СсылкаСФР = Результат.Выбрать().СсылкаСФР; // Загрузить документ счет-фактура на реализацию ДокументСФР = СсылкаСФР.ПолучитьОбъект(); // Обновить реквизиты счета-фактуры на реализацию из счета-фактуры на аванс ДокументСФР.НомерСчетаФактурыАванса = ЭтотОбъект.Номер; ДокументСФР.ДатаСчетаФактурыАванса = ЭтотОбъект.Дата; // Можно обновить и другие реквизиты по необходимости ДокументСФР.Записать(); КонецПроцедуры |
3. **Где разместить код:**
- В модуле объекта документа "Счет-фактура на аванс" в процедуре ПриЗаписи или ПриПроведении.
- Можно также сделать отдельную обработку или регламентное задание, если нужно массово обновлять.
4. **Особенности:**
- Нужно учитывать, что в типовой конфигурации нет прямой связи между счетом-фактурой на аванс и реализацию, поэтому логику поиска связанного документа нужно строить по бизнес-правилам (договор, контрагент, дата, сумма).
- Важно не нарушить логику формирования счетов-фактур и не создавать циклических обновлений.
5. **Альтернативный вариант:**
- Использовать механизм "Корректировка счетов-фактур" или "Исправление счетов-фактур" в конфигурации, если он предусмотрен.
- Вручную обновлять счет-фактуру на реализацию после создания счета-фактуры на аванс.
(там описаны механизмы работы с счетами-фактурами и возможные доработки)
Если нужна конкретная доработка под вашу конфигурацию, то лучше делать на базе типового механизма с учетом ваших бизнес-процессов.