База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в 1С создать счета на оплату на основании реализаций через БСП? › Ответ в теме: Как в 1С создать счета на оплату на основании реализаций через БСП?
Для создания документов «Счет на оплату» на основании выбранных документов «Реализация товаров и услуг» с использованием Библиотеки стандартных подсистем (БСП) в 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/