Заполнение на основании из формы списка.

1. Intercititude 18.11.19 17:34 Сейчас в теме
Всем доброе время суток!

Есть задача. При создании документа выбрать другой документ и заполнить одинаковые реквизиты.

Добрался пока что только до такого:

ФормаВыбора документа . Процедура "ПриОткрытии":

	Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда
		Заказы = Документы.Заказы;
		Форма = Заказы.ПолучитьФормуСписка(); 
		форма.РежимВыбора = Истина;
		Форма.ОткрытьМодально(); 
	Иначе
		Отказ = Истина;
	КонецЕсли;	
Показать


Вылазит форма списка этого документа ( выбрать документ нельзя ) .
Как правильнее сделать,чтобы я при нажатии на документ автоматически заполнил реквизиты и табличную часть нынешнего документа ?

Понимаю,что надо получить ссылку документа "Заказы" и с ней работать,но как корректнее будет программно это реализовать?
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
19. KVIKS 399 18.11.19 18:23 Сейчас в теме +0.35 $m
(1)
Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда
Заказы = Документы.Заказы;
Форма = Заказы.ПолучитьФормуСписка();
форма.РежимВыбора = Истина;
Форма.ОткрытьМодально();
Иначе
Отказ = Истина;
КонецЕсли;

Надо не ПолучитьФормуСписка(), а вызвать диалог ввода значения, поскольку требуемое значение это документ, то будет открываться форма выбора
док=Документы.ЗаказПокупателя.ПустаяСсылка();
	если ВвестиЗначение(Док,"Выберите документ основание") тогда 
		ЗаполнитьЗначенияСвойств(ЭтотОбъект,Док); //заполнит реквизиты, но не табличные части 
		ЭтотОбъект.товары.загрузить(Док.Товары.Выгрузить()); //Так можно заполнить табличную часть
		ЭтотОбъект.заполнить(Док); //Это если есть обработка заполнения в модуле объекта 
		
	иначе 
		Отказ=Истина;
	КонецЕсли;
Показать
trickster; Intercititude; Pavel Rodinchenko; +3
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
19. KVIKS 399 18.11.19 18:23 Сейчас в теме +0.35 $m
(1)
Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда
Заказы = Документы.Заказы;
Форма = Заказы.ПолучитьФормуСписка();
форма.РежимВыбора = Истина;
Форма.ОткрытьМодально();
Иначе
Отказ = Истина;
КонецЕсли;

Надо не ПолучитьФормуСписка(), а вызвать диалог ввода значения, поскольку требуемое значение это документ, то будет открываться форма выбора
док=Документы.ЗаказПокупателя.ПустаяСсылка();
	если ВвестиЗначение(Док,"Выберите документ основание") тогда 
		ЗаполнитьЗначенияСвойств(ЭтотОбъект,Док); //заполнит реквизиты, но не табличные части 
		ЭтотОбъект.товары.загрузить(Док.Товары.Выгрузить()); //Так можно заполнить табличную часть
		ЭтотОбъект.заполнить(Док); //Это если есть обработка заполнения в модуле объекта 
		
	иначе 
		Отказ=Истина;
	КонецЕсли;
Показать
trickster; Intercititude; Pavel Rodinchenko; +3
21. Intercititude 19.11.19 09:46 Сейчас в теме
(19) А если я хочу в ручную каждый реквизит и каждый столбик табличной части заполнить,то как ? При помощи "="

И в какое место это писать ? в модуль формы "При открытии"?
+
22. KVIKS 399 19.11.19 10:14 Сейчас в теме
(21)В той процедуре что я писал, так и присваивать
ЭтотОбъект.Организация = док.Организация и т.д это для реквизитов, для табличной части больше
Для каждого стр из Док.Товары цикл
НовСтр= ЭтотОбъект.ТОвары.Добавить();
Новстр.Номенклатура=Стр.Номенклатура;
//и т.д
Конеццикла;
Intercititude; +1
23. Intercititude 19.11.19 10:31 Сейчас в теме
(22) Пытался так. Ругается что "поле объекта не доступно для записи".
+
24. Intercititude 19.11.19 10:36 Сейчас в теме
А,вру,всё работает,благодарю.
+
25. Intercititude 19.11.19 10:40 Сейчас в теме
(22) Вот так вышло. Это в модуле формы "При открытии". Правильно ли так будет?

	Если Вопрос("Создать на основании заказа?",РежимДиалогаВопрос.ДаНетОтмена,10)=КодВозвратаДиалога.Да Тогда		
		Оклейка = Документы.Заказ.ПустаяСсылка();
			Если ВвестиЗначение(Оклейка,"Выберите документ основание") тогда 
				 ЭтотОбъект.Номер = Оклейка.НомерЗаказа;
				 ЭтотОбъект.Дата = Оклейка.Дата;
				 ЭтотОбъект.Ответственный = Оклейка.Ответственный;				 
				 Для каждого Стр Из Оклейка.СписокНоменклатуры Цикл
					НовСтр = ЭтотОбъект.Товары.Добавить();
					НовСтр.Номенклатура = Стр.Наименование;
					НовСтр.Количество = стр.Количество;
				 КонецЦикла;
			Иначе
				Отказ = Истина;
			КонецЕсли;
	КонецЕсли;	
Показать
+
26. KVIKS 399 19.11.19 11:50 Сейчас в теме
(25)Нормально, если достиг желаемого результата. я бы только поменял РежимДиалогаВопрос.ДаНетОтмена на РежимДиалогаВопрос.ДаНет - не надо три варианта, хватит двух.
Или если 3 варианта тогда дописать типа:
Ответ Да - вводим на основании
Ответ Нет - просто создается новый документ
Ответ Отмена - отказ от ввода документа
Intercititude; +1
2. artms 283 18.11.19 17:36 Сейчас в теме
Сделай ввод на основании.
+
3. Intercititude 18.11.19 17:37 Сейчас в теме
(2)Необходимо программно.
+
4. artms 283 18.11.19 17:40 Сейчас в теме
(3)В обычных или управляемых формах?
+
5. Intercititude 18.11.19 17:41 Сейчас в теме
(4) обычные, к сожалению.
+
6. artms 283 18.11.19 17:43 Сейчас в теме
(5) Я бы сделал Действие вместо создания нового. В котором бы предварительно модально сделал бы выбор с антологичным или близким к твоему кодом, а затем бы создал новый документ.
+
8. Intercititude 18.11.19 17:44 Сейчас в теме
(6) Разве в моём куске "ПриОткрытии" недостаточно получить ссылку, и реквизиты приравнять к ЭтотОбъект.ссылка ? А после записать документ принудительно?
+
10. artms 283 18.11.19 17:46 Сейчас в теме
(8) Тут проблема в том что ты создаешь один документ, в процессе открытия формы открываешь другую, это всегда сложности. Зачем эти сложности если можно от них избавится сделав свое действие в журнале.
+
11. Intercititude 18.11.19 17:48 Сейчас в теме
(10) Имеете ввиду в форме списка добавить кнопку "Ввод на основании" и уже с ней крутить вертеть ?
+
14. artms 283 18.11.19 17:50 Сейчас в теме
(11) То что лучше сделать на основании это само собой, просто можно запретить иной ввод, в модуле документа проверять тип в процедуре "ОбработкаЗаполнения".
+
9. Intercititude 18.11.19 17:45 Сейчас в теме
(6) Надо это делать конкретно когда создаёшь документ и выбираешь другой из списка. Никак иначе.
+
12. artms 283 18.11.19 17:48 Сейчас в теме
(9) Напиши код в стандартном событии ПередНачаломДобавления. журнала.
+
13. Intercititude 18.11.19 17:50 Сейчас в теме
(12) "ПередОткрытием" формы списка имеете ввиду ?!
+
15. artms 283 18.11.19 17:50 Сейчас в теме
(13) Нет где создается документ? В ФормеСписка документов?
+
16. Intercititude 18.11.19 17:52 Сейчас в теме
(15)Да. В ФормеСписка этого документа при нажатии "Добавить".
+
17. Intercititude 18.11.19 17:58 Сейчас в теме
(15)А,имеете ввиду в модуле объекта добавить заполнение и ОбработкаЗаполнения ?
+
7. artms 283 18.11.19 17:44 Сейчас в теме
(5) Также запретил бы самостоятельный ввод документ не по этому действию.
+
18. artms 283 18.11.19 18:01 Сейчас в теме +0.15 $m
Вот пример
Прикрепленные файлы:
1Cv8_!.cf
+
20. artms 283 19.11.19 09:14 Сейчас в теме
Проблема решена?
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот