Создание нескольких документов на основании одного с открытием созданных документов

19.03.21

Задачи пользователя - Адаптация типовых решений

Возникла необходимость создания нескольких документов на основании одного с открытием новых документов. При этом хотелось использовать типовой механизм создания на основании.

Как известно, открытие форм происходит на клиенте, а их заполнение на сервере. Т.е. сначала получаем форму на клиенте, потом заполняем ее на сервере, затем открываем на клиенте. Естественно, при таком подходе необходимо учитывать объем создаваемых документов. Слишком большое количество во-первых не влезет в окно 1с, во-вторых повесит систему количеством клиент-серверных вызовов. Для больших объемов данных рекомендуется создаваемые документы записывать без открытия и все операции выполнять на сервере в рамках единого вызова. В моем же примере создаваемых документа в среднем 3 штуки, поэтому пользуемся инструментами типового механизма.

Для начала в модуль менеджера документа, который будем использовать в качестве основания, в типовую процедуру добавим вызов своей процедуры создания команды на основании. Команда будет добавлена в подменю типовой кнопки "Создать на основании":

Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
     ПланированиеДеятельности.ДобавитьКомандуСоздатьНаОснованииЗаказНаВнутреннееПотребление (КомандыСозданияНаОсновании);
	
КонецПроцедуры

В серверном модуле ПланированиеДеятельности зададим свой обработчик команды, который будет располагаться на клиенте (ПланированиеДеятельностиКлиент ):

Функция ДобавитьКомандуСоздатьНаОснованииЗаказНаВнутреннееПотребление (КомандыСозданияНаОсновании) Экспорт

     Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда

          КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();

          КомандаСоздатьНаОсновании.Обработчик = "ПланированиеДеятельностиКлиент.СозданиеЗаказаНаВнутреннееПотребление";

          КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказНаВнутреннееПотребление);

          КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";

          КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьЗаказыНаВнутреннееПотребление";
     
          Возврат КомандаСоздатьНаОсновании;

     КонецЕсли;

     Возврат Неопределено;

КонецФункции

Далее в клиентском модуле ПланированиеДеятельностиКлиент получаем форму создаваемого документа. В этот момент происходит обращение к типовой процедуре ОбработкаЗаполнения в модуле объекта. Здесь важно при получении формы в параметры формы передать структуру с ключом ЗначенияЗаполнения, значение которого в контексте обработки заполнения будет интерпретировано как параметр ДанныеЗаполнения.

Процедура СозданиеЗаказаНаВнутреннееПотребление(ДокументОснование, СтандартнаяОбработка) Экспорт

     МассивПодразделений = ПланированиеДеятельностиВызовСервера.ПолучитьПодразделения (ДокументОснование); //Обращение к серверному модулю

          Для каждого Подразделение Из МассивПодразделений Цикл

               ПараметрыЗаполнения = Новый Структура("ДокументОснование, Подразделение", ДокументОснование, Подразделение);

               Форма = ПолучитьФорму("Документ.ЗаказНаВнутреннееПотребление. ФормаОбъекта", Новый Структура("ЗначенияЗаполнения", ПараметрыЗаполнения),,Истина); //здесь проваливаемся в ОбработкаЗаполнения в модуле объекта

               Форма.Открыть(); //возвращаемся на клиента и открываем форму

          КонецЦикла;

КонецПроцедуры

Далее в модуле объекта пишем свои обработчики по заполнению документов. После их выполнения управление вернется на клиента, где будет открыта заполненная форма.

Так, используя минимум доработок, можно использовать типовой механизм "создания на основании" для создания нескольких документов.

Вступайте в нашу телеграмм-группу Инфостарт

Создать на основании создание нескольких документов из одного

См. также

Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

32330 руб.

29.06.2023    11224    34    15    

41

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    6195    2    2    

6

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

5500 руб.

07.02.2023    12001    112    20    

68

Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    732    1    6    

2

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.

9150 руб.

02.08.2023    7519    25    5    

41

Адаптация типовых решений 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    855    1    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. МимохожийОднако 142 06.09.21 10:13 Сейчас в теме
Далее в модуле объекта пишем свои обработчики по заполнению документов

Пример можно?
3. rule_2 52 28.09.21 09:40 Сейчас в теме
(1)

// В этом коде в качестве данных заполнения может быть передана только структура, иначе
// обработка завершается. Вообще здесь может быть любой произвольный алгоритм заполнения
// Данный код лишь в качестве примера, более сложные алгоритмы смотреть нужно в типовых конфигурациях
//
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	Если ТипЗнч(ДанныеЗаполнения)<> Тип("Структура") Тогда
		Возврат;
	КонецЕсли;
	
	// Заполняем реквизиты документа из данных заполнения
	//
	Организация = ДанныеЗаполнения.Организация;
	Контрагент = ДанныеЗаполнения.Контрагент;
	Партнер = ДанныеЗаполнения.Клиент;
	Договор = ДанныеЗаполнения.ДоговорКонтрагента;

КонецПроцедуры
Показать
2. rule_2 52 28.09.21 09:35 Сейчас в теме
В управляемом приложении лучше использовать вместо "ПолучитьФорму" - "ОткрытьФорму", тем более, в коде ведь с формой работы никакой нет, кроме как ее открытия

https://infostart.ru/1c/articles/236382/
4. yura371 13.10.25 19:03 Сейчас в теме
У меня не появлялась моя команда создать на основании, пока не добавил в ОбщийМодуль.СозданиеНаОснованиеПереопределяемый в процедуру ПриОпределенииОбъектовСКомандамиСозданияНаОсновании() следующий код:

Объекты.Добавить(Метаданные.Документы.МойДокумент);
Для отправки сообщения требуется регистрация/авторизация