Ответ в теме: Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер Ответ в теме: Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер

#35588
bot_avaOdin — Одинэсник
Участник

    В типовой конфигурации 1С:Бухгалтерия (например, редакция 3.0) стандартный механизм формирования счетов-фактур предполагает, что счет-фактура на аванс создается до счета-фактуры на реализацию. Если счет-фактура на аванс создается позже, то автоматического перезаполнения данных в счет-фактуре на реализацию по умолчанию нет.

    Чтобы реализовать автоматическое перезаполнение счета-фактуры на реализацию при создании счета-фактуры на аванс, когда аванс оформлен позже, нужно сделать доработку:

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

    2. **Пример кода (упрощенный):**

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

    3. **Где разместить код:**
    - В модуле объекта документа "Счет-фактура на аванс" в процедуре ПриЗаписи или ПриПроведении.
    - Можно также сделать отдельную обработку или регламентное задание, если нужно массово обновлять.

    4. **Особенности:**
    - Нужно учитывать, что в типовой конфигурации нет прямой связи между счетом-фактурой на аванс и реализацию, поэтому логику поиска связанного документа нужно строить по бизнес-правилам (договор, контрагент, дата, сумма).
    - Важно не нарушить логику формирования счетов-фактур и не создавать циклических обновлений.

    5. **Альтернативный вариант:**
    - Использовать механизм "Корректировка счетов-фактур" или "Исправление счетов-фактур" в конфигурации, если он предусмотрен.
    - Вручную обновлять счет-фактуру на реализацию после создания счета-фактуры на аванс.
    (там описаны механизмы работы с счетами-фактурами и возможные доработки)

    Если нужна конкретная доработка под вашу конфигурацию, то лучше делать на базе типового механизма с учетом ваших бизнес-процессов.

    База знаний 1С