|
УФ, оптимизация, внеконтекстные вызовы и все-все-все. | ☑ | ||
---|---|---|---|---|
0
H A D G E H O G s
25.03.14
✎
15:10
|
День добрый.
Волей судеб пишу обработку. В ней есть ОФ (обычные формы), УФ (управляемые формы) идентичной функциональности. Общие функции вынесены в модуль объекта. УФ у меня построена целиком на внеконтекстных вызовах. Единственный контекстный - ПриСозданииНаСервере. Все хорошо. Единственная проблема возникает с общими функциями модуля объекта. Проблема в том, что обработка может использоваться и как внешняя, что исключает использование модуля менеджера. Копировать функции в модуль УФ исключено из за унификации. Вызов контекстной функции исключен быстродействием (на клиенте дозвизды данных, миграция на сервер которых не нужна). Решение - вот оно &НаКлиенте Процедура ЗаполнитьДанныеВариант3(Команда) ЗаполнитьДанныеНаСервереВариант3(Объект); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьДанныеНаСервереВариант3(Знач Объект) ЭтотОбработкаОбъект=ДанныеФормыВЗначение(Объект,Тип("ОбработкаОбъект.ТестоваяОбработка")); //Все хорошо! ЭтотОбработкаОбъект.ТестоваяПроцедура(); КонецПроцедуры но оно работает только для встроенной обработки. Для внешней обработки игра с типами приводит либо к ошибке 2 параметра, либо к падению платформы, пример вот он: http://webfile.ru/b9e7156814d8655af7630696748bc3f7 Ben, i need help |
|||
1
bborisko
25.03.14
✎
15:13
|
РеквизитФормыВЗначение("Объект").Процедура()
Но не знаю работает ли это вне контекста |
|||
2
vmv
25.03.14
✎
15:13
|
хвастаешься штоле?
где терзающие душу вопросы? |
|||
3
VikingKosmo
25.03.14
✎
15:14
|
Для внешней обработки стоило бы указывать тип, соответствующий внешней обработке, и будет тебе счастье.
|
|||
4
H A D G E H O G s
25.03.14
✎
15:15
|
(1) Нельзя.
|
|||
5
H A D G E H O G s
25.03.14
✎
15:16
|
(3) Укажи.
Я это делаю в примере по ссылке, 2 способами. Ошибка и падение. |
|||
6
toypaul
гуру
25.03.14
✎
15:19
|
вопрос про правильное подключение внешней обработки что ли? если так, то ответ в БСП.
|
|||
7
H A D G E H O G s
25.03.14
✎
15:22
|
(6) нет, вопрос не об этом.
|
|||
8
Drac0
25.03.14
✎
15:22
|
(0) Тип будет, вроде бы, Тип("ВнешняяОбработкаОбъект.ТестоваяОбработка")
|
|||
9
H A D G E H O G s
25.03.14
✎
15:23
|
(8) Прекрасно. Теперь скачай пример.
|
|||
10
toypaul
гуру
25.03.14
✎
15:23
|
а понял. вопрос про вызов процедуры из модуля внешней обработки.
но если контекстных процедур нет, почему не создать новый экз обработки и вызвать у него метод? |
|||
11
toypaul
гуру
25.03.14
✎
15:25
|
для чего цепляться к Объект?
|
|||
12
H A D G E H O G s
25.03.14
✎
15:26
|
(10) Бррр....
Это будет один в один подход типовых 1С по выгрузке регламентной отчетности, за который хочется сделать плохое сценаристам. Не будем уподобляться этим безумным людям, скачаем cf-шник, развернем его и нажмем 2 кнопочки. И. Все. Увидим. |
|||
13
H A D G E H O G s
25.03.14
✎
15:27
|
(11) Не понял вопроса.
|
|||
14
vmv
25.03.14
✎
15:31
|
(11) он говорит шо там за сокровища в модуле объекта, которые прям могут быть только там
мое мнение - задача высосана из пальца. Зачем ставить во главу угла построение фкнкионала на внеконтексте и тут же плевать на это, пытаясь влезть в модуль объекта байки об унификации не предлагать |
|||
15
H A D G E H O G s
25.03.14
✎
15:32
|
(14) Ты cf то скачал?
|
|||
16
Kondarat
25.03.14
✎
15:33
|
ДанныеФормыВЗначение (FormDataToValue)
Синтаксис: ДанныеФормыВЗначение(<Объект>, <Тип>) Параметры: <Объект> (обязательный) Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура; ДанныеФормыДерево. Данные формы. <Тип> (обязательный) Тип: Тип. Тип значения, получаемого из данных формы. Возвращаемое значение: Тип: Произвольный. Описание: Преобразует данные формы в объект прикладного типа. Доступность: Сервер, толстый клиент, мобильное приложение(сервер). Примечание: Нельзя преобразовать в объект типа Табличная часть. |
|||
17
vmv
25.03.14
✎
15:33
|
(15) я телепат
|
|||
18
H A D G E H O G s
25.03.14
✎
15:33
|
(17) Ванга плачет по тебе кровавыми слезами.
(16) спс кэп. |
|||
19
vmv
25.03.14
✎
15:34
|
(16) тока на сервере, а тут задача о двух стульях же
|
|||
20
Drac0
25.03.14
✎
15:41
|
(9) Скачать не могу. У себя воспроизвел. И вправду странно.
|
|||
21
H A D G E H O G s
25.03.14
✎
15:44
|
(20) ну хоть один
|
|||
22
toypaul
гуру
25.03.14
✎
15:44
|
есть мнение, что контекст формы содержить какую-то важную инфо о внешней обработке, которой не хватает для ДанныеФормыВЗначение
потому что РеквизитФормыВЗначение же работает? можешь уточнить в 1С. может это глюк, может фича. а может так было задумано, но не описано в СП. |
|||
23
VikingKosmo
25.03.14
✎
15:45
|
(20) а что странного то? Тип("ОбработкаОбъект.ТестоваяОбработка") ну ни как не равен типу соответствующему внешней обработке. Правда пока вразумительно представить тип внешней обработки я тоже не могу :)
|
|||
24
Kondarat
25.03.14
✎
15:46
|
(21) 16 - зачеркнуть.
У меня странно то, что третий вариант работает как для встроенной так и для внешней обработки. |
|||
25
Drac0
25.03.14
✎
15:46
|
(21) Клади ее в хранилище при создании на сервере :-) РеквизитФормыВЗначение работает нормально.
|
|||
26
Drac0
25.03.14
✎
15:47
|
(23) Тип указываю тоже соответсвующий: ВнешнняОбработкаОбъект
|
|||
27
VikingKosmo
25.03.14
✎
15:48
|
(26) мнээээ, я до конца пример не прогонял, но что то не припоминаю типа ВнешняяОбработкаОбъект. Хотя могу и ошибаться.
|
|||
28
Drac0
25.03.14
✎
15:50
|
(27) Сделай в контекстном серверном вызове РеквизитФормыВЗначение("Объект") и посмотри его тип.
|
|||
29
H A D G E H O G s
25.03.14
✎
15:50
|
(25) Это вариант 2 в примере. Он приводит к падению платформы.
|
|||
30
vmv
25.03.14
✎
15:50
|
то что хочет тс невозможно, если он настаивает на использовании в форме внешней обработки только внеконтестных методов и одновременному доступу к функционалу модуля объекта.
пути через задницу эээ через хранилища или сериализаторы не рассматриваем вброшу безумную идею - нужно поити на маленьку жертву и поюзать еще один контекстный метод ОбработкаОповещения() а вот функционал из модуля объекта перенести в дополнительную форму обработки. Можно создать даже семейтсво функционалов-форм пристегнутых к одной обработке и управлять вызовами дополнительных методов путем идентификаторов событий оповещения. дерзайте, я ж в вас верю |
|||
31
H A D G E H O G s
25.03.14
✎
15:51
|
(27) Есть такой тип.
|
|||
32
H A D G E H O G s
25.03.14
✎
15:51
|
(30) Ты скачал cf?
|
|||
33
vmv
25.03.14
✎
15:54
|
(32) в эту же проблему я уперся года 2 назад и все шаги которые тут предлагали прошел и ни фига
|
|||
34
H A D G E H O G s
25.03.14
✎
15:57
|
(33)
"то что хочет тс невозможно, если он настаивает на использовании в форме ВНЕШНЕЙ обработки только внеконтестных методов и одновременному доступу к функционалу модуля объекта. " Это справедливо только для внешней обработки, и несправедливо для встроенной, так? |
|||
35
vmv
25.03.14
✎
16:00
|
(34) да, именно проблема со вшнешней была, на новых релизах я не проверял, но очевидно, что осталась
|
|||
36
H A D G E H O G s
25.03.14
✎
16:01
|
(35) Ясно
|
|||
37
H A D G E H O G s
25.03.14
✎
16:04
|
Ладно, пока сделаем
ЗаполнитьНаСервере() ЗаполнитьНаСервереБезКонтекста() Хотите быстродействия - встраивайте в конфигурацию, граждане клиенты. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |