База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как автоматизировать создание «Счетов на оплату» по документам реализации?
- В этой теме 1 ответ, 2 участника, последнее обновление 6 дней, 1 час назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
25 декабря 2025 в 13:45 #35264
в обработке по выбранным документам реализации создать документы счёт на оплату
-
25 декабря 2025 в 13:45 #35265
Андрей, для создания документов «Счет на оплату» на основании выбранных документов реализации товаров и услуг в обработке, можно использовать следующий подход на языке 1С.
Основная идея:
— В форме обработки пользователь выбирает документы реализации (например, в табличной части).
— По выбранным документам создаются новые документы «Счет на оплату покупателю» с заполнением необходимых реквизитов и табличных частей.
— Документы записываются и, при необходимости, проводятся.Пример кода для процедуры создания счетов на оплату по выбранным документам реализации:
&НаСервере Процедура СоздатьСчетаНаОплату(ВыбранныеДокументы) Для Каждого ДокРеализации Из ВыбранныеДокументы Цикл // Создаем новый документ "СчетНаОплатуПокупателю" СчетОплаты = Документы.СчетНаОплатуПокупателю.СоздатьДокумент(); // Заполняем шапку документа СчетОплаты.Дата = ТекущаяДата(); СчетОплаты.Организация = ДокРеализации.Организация; СчетОплаты.Контрагент = ДокРеализации.Контрагент; СчетОплаты.ДоговорКонтрагента = ДокРеализации.ДоговорКонтрагента; СчетОплаты.ВалютаДокумента = ДокРеализации.ВалютаДокумента; СчетОплаты.СуммаДокумента = ДокРеализации.СуммаДокумента; // Можно добавить другие реквизиты по необходимости // Заполняем табличную часть "Товары" (или аналогичную) Для Каждого СтрокаРеализации Из ДокРеализации.Товары Цикл НоваяСтрока = СчетОплаты.Товары.Добавить(); НоваяСтрока.Номенклатура = СтрокаРеализации.Номенклатура; НоваяСтрока.Количество = СтрокаРеализации.Количество; НоваяСтрока.Цена = СтрокаРеализации.Цена; НоваяСтрока.Сумма = СтрокаРеализации.Сумма; // Заполнить другие необходимые реквизиты табличной части КонецЦикла; // Записать документ СчетОплаты.Записать(); // При необходимости провести документ // СчетОплаты. Провести(); КонецЦикла; Сообщить("Создание счетов на оплату завершено."); КонецПроцедурыВызов процедуры из формы обработки:
Процедура СоздатьСчетаНаОплатуПоВыбранным(Команда) // Получаем выбранные документы реализации из табличной части ВыбранныеДокументы = Новый Массив; Для Каждого Строка Из ЭлементыФормы.ТаблицаДокументов.ВыбранныеСтроки Цикл ВыбранныеДокументы.Добавить(Строка.Документ); КонецЦикла; Если ВыбранныеДокументы.Количество() = 0 Тогда Сообщить("Не выбраны документы для создания счетов на оплату."); Возврат; КонецЕсли; СоздатьСчетаНаОплату(ВыбранныеДокументы); КонецПроцедуры**Обратите внимание:**
— Названия объектов (документов, табличных частей, реквизитов) могут отличаться в вашей конфигурации, их нужно подставить свои.
— Если в вашей конфигурации «Счет на оплату» создается не как отдельный документ, а, например, как подчиненный или на основании документа реализации, то логику нужно адаптировать.
— Для массового создания документов рекомендуется использовать транзакции и обработку ошибок.
— Если нужно, чтобы документы сразу проводились, вызовите метод `Провести()` после записи, но учитывайте, что это может вызвать ошибки, если не заполнены обязательные реквизиты.Рекомендую посмотреть здесь: https://infostart.ru/public/12680/ — там есть примеры автоматического создания документов на основании других.
Если нужна помощь с конкретной конфигурацией — уточните, я помогу адаптировать код.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.