Ответ в теме: Как в 1С создать счета на оплату на основании реализаций через БСП?

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

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

    Для создания документов «Счет на оплату» на основании выбранных документов «Реализация товаров и услуг» с использованием Библиотеки стандартных подсистем (БСП) в 1С, нужно выполнить следующие шаги:

    1. **Подготовка обработки и выбор документов реализации**

    В форме обработки должен быть элемент для выбора документов реализации (например, табличное поле с выборкой документов). Пользователь выбирает нужные документы.

    2. **Создание документов «Счет на оплату» на основании выбранных**

    Для создания документов «Счет на оплату» на основании документов реализации можно использовать стандартный механизм создания документов на основании (в БСП он реализован через модуль менеджера документа и подсистему «Создание документов на основании»).

    3. **Пример кода создания счетов на оплату на основании реализации**

    Процедура СоздатьСчетаНаОплату(ВыбранныеДокументыРеализации)
        Для Каждого ДокРеализации Из ВыбранныеДокументыРеализации Цикл
            // Создаем новый документ "СчетНаОплатуПокупателю"
            НовыйСчет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
    
            // Заполняем реквизиты нового документа на основании документа реализации
            // Можно использовать стандартный механизм создания на основании
            // Если в конфигурации есть метод СоздатьНаОсновании, то можно так:
            Если ДокРеализации.Ссылка.СоздатьНаОсновании <> Неопределено Тогда
                НовыйСчет = ДокРеализации.Ссылка.СоздатьНаОсновании("СчетНаОплатуПокупателю");
            Иначе
                // Иначе заполняем реквизиты вручную
                НовыйСчет.Контрагент = ДокРеализации.Контрагент;
                НовыйСчет.Организация = ДокРеализации.Организация;
                НовыйСчет.Дата = ТекущаяДата();
                // Заполнить табличную часть товарами из реализации
                Для Каждого СтрокаРеализации Из ДокРеализации.Товары Цикл
                    НоваяСтрока = НовыйСчет.Товары.Добавить();
                    НоваяСтрока.Номенклатура = СтрокаРеализации.Номенклатура;
                    НоваяСтрока.Количество = СтрокаРеализации.Количество;
                    НоваяСтрока.Цена = СтрокаРеализации.Цена;
                    // и другие необходимые реквизиты
                КонецЦикла;
            КонецЕсли;
    
            // Записать и провести документ
            НовыйСчет.Записать();
            НовыйСчет.Провести();
    
            // Можно добавить вывод сообщения об успешном создании
            Сообщить("Создан счет на оплату №" + НовыйСчет.Номер + " от " + Формат(НовыйСчет.Дата, "ДФ=dd.MM.yyyy"));
        КонецЦикла;
    КонецПроцедуры
    

    4. **Использование подсистемы БСП для создания на основании**

    Если в вашей конфигурации используется БСП, то для создания документов на основании рекомендуется использовать общий модуль `СозданиеДокументовНаОсновании` из БСП.

    Пример вызова:

    Для Каждого ДокРеализации Из ВыбранныеДокументыРеализации Цикл
        НовыйДокумент = СозданиеДокументовНаОсновании.СоздатьДокументНаОсновании(
            ДокРеализации.Ссылка,
            "СчетНаОплатуПокупателю",
            Истина // Проводить документ сразу
        );
        Если НовыйДокумент <> Неопределено Тогда
            Сообщить("Создан счет на оплату №" + НовыйДокумент.Номер + " от " + Формат(НовыйДокумент.Дата, "ДФ=dd.MM.yyyy"));
        Иначе
            Сообщить("Не удалось создать счет на оплату для документа " + ДокРеализации.Ссылка);
        КонецЕсли;
    КонецЦикла;
    

    5. **Регистрация команды в интерфейсе**

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

    ### Итог

    — Используйте стандартный механизм создания документов на основании из БСП (`СозданиеДокументовНаОсновании`).
    — Передавайте ссылку на документ реализации и тип создаваемого документа («СчетНаОплатуПокупателю»).
    — Проводите созданный документ, если требуется.
    — Обрабатывайте ошибки и выводите сообщения пользователю.

    Рекомендую посмотреть здесь:
    https://infostart.ru/public/2229492/
    https://infostart.ru/1c/articles/694647/
    https://infostart.ru/1c/articles/1382297/

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