|
Создание и заполнение документа на сервере и передача его на клиент | ☑ | ||
---|---|---|---|---|
0
Flempy
23.08.18
✎
10:40
|
На сервере создаю и заполняю документ, после чего мне необходимо получить его на клиенте(в процедуре "ВыполнитьКоманду"), чтобы открыть форму документа, чтобы у пользователя была возможность редактирования. Все материалы по созданию связанных объектов уже перечитал. Подскажите, пожалуйста, как это можно реализовать?
|
|||
1
Cyberhawk
23.08.18
✎
10:43
|
Один из вариантов - ОткрытьФорму + ЗначенияЗаполнения в передаваемых в форму параметрах
|
|||
2
Cyberhawk
23.08.18
✎
10:43
|
Альтернативный вариант - КопироватьДанныеФормы
|
|||
3
Flempy
23.08.18
✎
10:46
|
(2) ЗначениеВДанныеФормы
с помощью этого можно как-нибудь передать документ? |
|||
4
RomaH
naïve
23.08.18
✎
10:46
|
||||
5
RomaH
naïve
23.08.18
✎
10:47
|
(3) попробуй
|
|||
6
Numerus Mikhail
23.08.18
✎
10:47
|
Тебе вчера все подробно разжевали
Создание и заполнение документа во внешней обработке |
|||
7
Flempy
23.08.18
✎
10:48
|
(4) "Все материалы по созданию связанных объектов уже перечитал" не подходит, мне нужно сначала заполнить документ, а затем получить его форму, а не наоборот
|
|||
8
Flempy
23.08.18
✎
10:52
|
(5) а потом на клиенте как вызвать мой документ?
|
|||
9
RomaH
naïve
23.08.18
✎
10:52
|
(7) почему?
|
|||
10
Cyberhawk
23.08.18
✎
10:54
|
(3) Безсмысленно. Объект формы у тебя уже есть
|
|||
11
RomaH
naïve
23.08.18
✎
10:56
|
(4) - но тут проблема с "асинхронными вызовами"
нет ОповещенияОЗакрытии в методе "Открыть" |
|||
12
Остап Сулейманович
23.08.18
✎
10:58
|
(7) Звиздетц...
Что значит "сначала заполнить документ"? Это может означать 1. "заполнить все реквизиты документа и записать его в базу данных" 2. "заполнить реквизиты и не записывать в базу до показа пользователю". Если вы выберете вариант 2 - укажите где все-таки нужно хранить значения реквизитов несохраненного документа. Обычно это хранится в реквизитах формы. Где предлагаете это делать Вы? |
|||
13
RomaH
naïve
23.08.18
✎
11:01
|
по сути - создать структуру - заполнить её и передать в обработку заполнения - там еще раз обработчик написать - заполнение из стуруктуры
|
|||
14
Flempy
23.08.18
✎
11:02
|
(12) Да, мне несомненно нужен второй вариант, и как я понял, реквизиты должны храниться в мною созданном документе, после чего необходимо открыть его форму. Исправьте меня, если я не прав
|
|||
15
RomaH
naïve
23.08.18
✎
11:04
|
реквизиты должны храниться в мною созданном документе ОБЪЕКТЕ(?)
тип какой у "Документа"? документ объект на клиенте не существует |
|||
16
Flempy
23.08.18
✎
11:05
|
(15) Я создаю документ на сервере.
Док=Документы.МойДокумент.СоздатьДокумент(); |
|||
17
Flempy
23.08.18
✎
11:06
|
(16) И затем уже заполняю его из запроса
|
|||
18
Cyberhawk
23.08.18
✎
11:06
|
(15) Что-то ты тупишь. Ему надо создать объект документа в памяти, заполнить его реквизиты, а затем показать форму этого объекта на клиенте (для записи или отказа от нее)
|
|||
19
Остап Сулейманович
23.08.18
✎
11:08
|
(14) "реквизиты должны храниться в мною созданном документе" Документ - это связная совокупность значений реквизитов. Значения реквизитов хранятся в таблицах БД. Связь осуществляется (грубо) по ссылке. Нет ссылки - нет документа. Ссылка может быть только у записанного документа.
ЗЫ. Если коротко. Открывай форму. Заполняй реквизиты. И не делай людям моск. Пока будешь заполнять реквизиты форму все равно никто не увидит. Увидят только после заполнения. |
|||
20
Остап Сулейманович
23.08.18
✎
11:10
|
+ (19) И не слушай (18). Он тебя плохому научит. Когда Cyberhawk научит тебя как форму связать с данными объекта-документа - тогда слушай. А пока не нужно.
|
|||
21
RomaH
naïve
23.08.18
✎
11:11
|
(18) да не туплю - именно это и понял
ИМХО не получится как вариант - создать и заполнить переменную с типом структура передать её в ЗначенияЗаполнения о обработать в ОбработкеЗаполнения |
|||
22
Flempy
23.08.18
✎
11:12
|
(19) я бы и рад так поступить. Но начальника такой вариант не устроил, он хочет, чтобы изначально был создан объект(документ), а уже потом получить форму этого объекта
|
|||
23
Cyberhawk
23.08.18
✎
11:12
|
(20) Что-то ты паясничаешь. "Нет ссылки - нет документа" // Лол
|
|||
24
Flempy
23.08.18
✎
11:13
|
(22) Возможно я что-то не так понимаю
|
|||
25
Остап Сулейманович
23.08.18
✎
11:14
|
(21) Это как гланды через ... и автогеном. Почему бы в ОбработкаЗаполнения не выполнить тот же код, который заполнит "переменную с типом структура"? Но заполнить реквизиты формы напрямую?
|
|||
26
RomaH
naïve
23.08.18
✎
11:15
|
(22) невозможно
|
|||
27
Остап Сулейманович
23.08.18
✎
11:16
|
(22) Прочитай еще раз (15). Если там чего-то непонятно - ты спроси...
|
|||
28
Остап Сулейманович
23.08.18
✎
11:20
|
(23) Ну скажем ... получился каким то образом документ-объект. На сервере. Он просто нигде больше жить не может.
Где планируется открыть Форму? Я надеюсь все в адеквате и форму таки будем открывать на клиенте. Чего и как будем передавать на клиент с сервера что б сказать что "вот он документ-объект" и нужно теперь открыть именно его форму? |
|||
29
Cyberhawk
23.08.18
✎
11:20
|
(25) Это *овнокод. А вот через ОбработкуЗаполнения как раз то что доктор прописал
|
|||
30
Остап Сулейманович
23.08.18
✎
11:22
|
(29) О_О Консенсус)))
|
|||
31
Cyberhawk
23.08.18
✎
11:22
|
(28) Передавать будем в ОткрытьФорму структуру с данными для заполнения реквизитов документа-объекта ("ЗначенияЗаполнения") и/или произвольную структуру данных для обработки в модуле объекта ОбработкаЗаполнения
|
|||
32
Cyberhawk
23.08.18
✎
11:24
|
(30) Конечно. Твое "заполнить реквизиты формы напрямую" плодит лишние серверные вызовы там, где их можно избежать
|
|||
33
Остап Сулейманович
23.08.18
✎
11:28
|
(32) Стоп. Откуда пришла мысль что реквизиты формы предлагается заполнить НЕ на сервере и НЕ за один вызов?
Другими словами - "каким образом можно ПриСозданииНаСервере переганять несколько раз с Сервера на Клиент и обратно"? Как вообще возможно с Сервера передать выполнение на Клиент посреди кода? |
|||
34
Cyberhawk
23.08.18
✎
11:33
|
Хз про что ты меня спрашиваешь.
Ты согласен с тем, что написано в (32)? |
|||
35
Остап Сулейманович
23.08.18
✎
11:37
|
(34) Не-а. Если я за один вызов заполню все необходимые реквизиты - чего будет стоить (32)? А я их заполню в ПриСозданииНаСервере. А оно неделимо. Оно полностью выполнится на сервере. За один раз. И никакого "лишние серверные вызовы" не получится.
|
|||
36
Жан Пердежон
23.08.18
✎
11:39
|
(22) тебе в (1) правильный ответ сказали
всё остальное - убогий говнокод |
|||
37
Cyberhawk
23.08.18
✎
11:41
|
(35) Видимо мы под твоей фразой "заполнить реквизиты формы _напрямую_" разное понимаем.
Я трактую это как "ПолучитьФорму" + обращаться к ее элементам через точку + потом открыть эту подготовленную форму. А ты походу про ОткрытьФорму с параметром-маркером и в ПриСозданииНаСервере уже этот маркер анализировать, правильно? Тогда вопросов нет, ОткрытьФорму конечно же не *овнокод. |
|||
38
Tonik992
23.08.18
✎
11:44
|
(37) заполнение через ПолучитьФорму() тоже не говнокод, если оформить все как надо.
У 1С рекомендации по этому поводу "... в общем случае не рекомендуется". А где-то я видел, помоему в УНФ, вполне себе нормально используют через ПолучитьФорму и обращение через точку. |
|||
39
Flempy
23.08.18
✎
11:45
|
(36) Можно по-подробнее, пожалуйста
|
|||
40
Cyberhawk
23.08.18
✎
11:46
|
(38) Если можно внести изменения в модуль открывемой формы и/или в модуль объекта этой формы, то ПолучитьФорму всегда *овнокод
|
|||
41
Остап Сулейманович
23.08.18
✎
11:47
|
(37) "в ПриСозданииНаСервере уже этот маркер анализировать, правильно?" - 100 пудов.
Тонкость одна - в момент до входа в ПриСознанииНаСервере Форма уже формально существует. А Документ-Объект пока еще нет. И нарушается требование из (7) |
|||
42
Остап Сулейманович
23.08.18
✎
11:50
|
(38) Зачем нужно ПолучитьФорму лично я вообще не представляю. Видимо оно идет от обычных форм. Когда параметры передавались прямым присвоением значений реквизитам открываемой формы.
В УФ можно передать в параметрах. |
|||
43
Tonik992
23.08.18
✎
11:58
|
(40) Все верно, в общем случае ПолучитьФорму() и заполнять не надо.. Я давно завязал с этим, когда был слаб и не опытен.
(42) Вообще не нужно, в идеале. Тем более, происходит вызов ПриСозданииНаСервере(), в котором заложена какая-то логика.. А она может противоречить желанию ТС. Через параметры надо значит адрес временного хранилище передавать в процедуру ОткрытьФорму()? Ведь данных может быть очень много.. А в самой форме на закладке "Параметры" можно создать видимый параметр, который будет явно указывать на существование у формы параметра. |
|||
44
Cyberhawk
23.08.18
✎
11:59
|
"нарушается требование из (7)" // Да там пади этот "начальник" недалеко ушел от ОФ и ПолучитьФорму, а скорее всего требование единственное - чтоб объект не был записан в БД на момент показа формы
|
|||
45
Tonik992
23.08.18
✎
12:00
|
(43) забыл, там же можно даже указать тип значения "Произвольный" и передавать много чего, в т.ч. структуру заполнения.
|
|||
46
Жан Пердежон
23.08.18
✎
12:06
|
(36) передаешь в параметрах нужные тебе данные,
анализируешь их в обработке заполнения (в подписке /расширении); (38) 1С УХ напичкана такими "шедевральными" приемами - поместить куски обработки заполнения, в ПриСозданииНаСервере и выполнять, причем, иногда безусловно. То, что конфа типовая, не гарантирует что это не говноконфа. (41) садись, два. |
|||
47
Tonik992
23.08.18
✎
12:14
|
(46) в УХ все стили и приемы программирования применены
|
|||
48
Flempy
23.08.18
✎
12:28
|
(42) а если в конце заполнения указать
"возврат МойДокумент.Ссылка;" а потом на клиенте просто присвоить переменной доки "заполнениеНаСервере" получится открыть форму, обращаясь к переменной. Или бред полный? |
|||
49
Cyberhawk
23.08.18
✎
12:36
|
Автор баклан какой-то - ему говорят, как можно, а он в ответ спрашивает "а если вот так?". Причем неоднократно.
|
|||
50
Flempy
23.08.18
✎
12:45
|
(49) Ммм, я пытаюсь разобраться вообще-то. И я что-то не особо вижу особых предложений "как можно" (кроме как от (46) ), в основном лишь ваши дискуссии, что, как вы говорите, "*овнокод", а что нет
|
|||
51
Tonik992
23.08.18
✎
12:51
|
(50)
(1), (2), (6) посты, предоставляющие интерес исключительно для вас по вашему вопросу. Если хотите разобраться как работает, а как нет, тогда надо читать клиент-серверное взаимодействие, про управляемые формы. |
|||
52
Tonik992
23.08.18
✎
12:52
|
+ (4).
Все. Больше вам ничего не надо. |
|||
53
Flempy
23.08.18
✎
12:55
|
(51) (52) Спасибо, буду копать в эту сторону
|
|||
54
arsik
гуру
23.08.18
✎
13:11
|
(53) Такой вариант не подходит?
http://www.obrabotki.com/1s-openform-managedforms/ |
|||
55
Flempy
23.08.18
✎
13:16
|
(54) практически то же самое, что и тут (4) .Но все равно, спасибо
|
|||
56
arsik
гуру
23.08.18
✎
14:34
|
Ну можно еще сделать так...
В вызываемой форме добавить реквизит типа "ДокументОбъект" На сервере создать документ, в реквизит формы записать это реквизит. И уже после этого создать форму объекта и запихнуть значения из этого реквизита в созданную форму. Реквизит - это будет буфер на время после создания объекта и до создания формы. |
|||
57
arsik
гуру
23.08.18
✎
14:35
|
поправка
>На сервере создать документ, в реквизит формы записать этот документ. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |