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

19.03.21

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

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

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

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

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

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

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

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

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

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

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

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

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

     КонецЕсли;

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

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

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

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

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

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

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

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

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

          КонецЦикла;

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

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

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

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

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

32330 руб.

29.06.2023    12223    35    15    

42

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

Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.

9760 руб.

17.06.2025    3538    9    0    

8

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 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, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

6000 руб.

07.02.2023    13089    117    23    

73

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

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

7930 руб.

16.10.2025    1316    2    0    

2

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

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

21859 руб.

29.12.2025    1362    1    8    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
У меня не появлялась моя команда создать на основании, пока не добавил в ОбщийМодуль.СозданиеНаОснованиеПереопределяемый в процедуру ПриОпределенииОбъектовСКомандамиСозданияНаОсновании() следующий код:

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