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