|
Копирование данных одного документа в новый другого типа | ☑ | ||
---|---|---|---|---|
0
Птах
10.07.20
✎
16:13
|
Конфа ЕРП, задача создать коммерческое предложение на основе старого заказа клиента, без изменения механизма ввода на основании и прочей лишней фигни, минимальной кровью. Родилось вот ЭТО. Заполняет, открывает форму, задачу выполняет, но мне прям не по себе от того, что я это породил. Подскажите, как это можно привести в гармонию с природой и системой стандартов.
&НаКлиенте Процедура Команда1(Команда) Если ЗначениеЗаполнено(Объект.СсылкаНаОбъект) Тогда ВИП_СоздатьКППоЗаказуНаСервере(Объект.СсылкаНаОбъект); ФормаКП = ПолучитьФорму("Документ.КоммерческоеПредложениеКлиенту.Форма.ФормаДокумента"); КопироватьДанныеФормы(ДокументОбъект, ФормаКП.Объект); ФормаКП.Открыть(); ЭтаФорма.Закрыть(); КонецЕсли; КонецПроцедуры &НаСервере Процедура ВИП_СоздатьКППоЗаказуНаСервере(СсылкаНаЗК) ОбъектКП = Документы.КоммерческоеПредложениеКлиенту.СоздатьДокумент(); ЗаполнитьЗначенияСвойств(ОбъектКП, СсылкаНаЗК); Для Каждого СтрокаЗК из СсылкаНаЗК.Товары Цикл СтрокаКП = ОбъектКП.Товары.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаКП, СтрокаЗК); КонецЦикла; //КопироватьДанныеФормы(СсылкаНаЗК, ОбъектКП); ЗначениеВРеквизитФормы(ОбъектКП, "ДокументОбъект"); КонецПроцедуры |
|||
1
Птах
10.07.20
✎
16:14
|
//КопироватьДанныеФормы(СсылкаНаЗК, ОбъектКП);
специально оставил, мол, чот пробовал, но не особо понял куда тут это |
|||
2
Птах
10.07.20
✎
16:17
|
&НаКлиенте
Процедура Команда1(Команда) Если ЗначениеЗаполнено(Объект.СсылкаНаОбъект) Тогда ВИП_СоздатьКППоЗаказуНаСервере(Объект.СсылкаНаОбъект); ФормаКП = ПолучитьФорму("Документ.КоммерческоеПредложениеКлиенту.Форма.ФормаДокумента"); КопироватьДанныеФормы(ДокументОбъект, ФормаКП.Объект); ФормаКП.Открыть(); ЭтаФорма.Закрыть(); КонецЕсли; КонецПроцедуры &НаСервере Процедура ВИП_СоздатьКППоЗаказуНаСервере(СсылкаНаЗК) ОбъектКП = Документы.КоммерческоеПредложениеКлиенту.СоздатьДокумент(); ЗаполнитьЗначенияСвойств(ОбъектКП, СсылкаНаЗК); Для Каждого СтрокаЗК из СсылкаНаЗК.Товары Цикл СтрокаКП = ОбъектКП.Товары.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаКП, СтрокаЗК); КонецЦикла; //КопироватьДанныеФормы(СсылкаНаЗК, ОбъектКП); ЗначениеВРеквизитФормы(ОбъектКП, "ДокументОбъект"); КонецПроцедуры |
|||
3
Timon1405
10.07.20
✎
16:18
|
КопированиеСтрокСервер.СкопироватьТаблицуВБуферОбмена()
|
|||
4
SadrArt
10.07.20
✎
16:22
|
минимальной кровью - внешняя обработка заполнения на основании
|
|||
5
Птах
10.07.20
✎
16:23
|
(3) Спасибо, но я даже не о заполнении свойств - скорее о передаче объекта с сервера, потом копировании данных в новый объект формы и только потом открытие. НУ то есть я и пожестче вещи проворачивал в 8.1, но надо же и правильно учиться делать, думал, может кто подскажет.
|
|||
6
Птах
10.07.20
✎
16:24
|
(4) Ну это она и есть, вызываемая прямо из заказа клиента. Просто выглядит как-то неприятно. Есть идеи как улучшить?
|
|||
7
lodger
10.07.20
✎
18:42
|
(6) использовать механизм обработки заполнения на основании.
пакуешь нужные данные в структуру и вызываешь целевую форму с этой структурой в качестве параметра "ДанныеЗаполнения". для разбора параметра "ДанныеЗаполнения" надо заглянуть в Процедуру ОбработкаЗаполнения целевого модуля объекта. (не формы!) |
|||
8
Птах
12.07.20
✎
15:36
|
(7) Спасибо, отличный вариант!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |