|
Объект в управляемой форме | ☑ | ||
---|---|---|---|---|
0
alexei366
16.09.13
✎
14:31
|
Есть форма документа, на ней есть кнопка, которая считает всякую фигню из текущих данных объекта.
Типа для ускорения работы к функции подсчета применил &НаСервереБезКонтекста и в параметр передаю ОбъектФормы. Ну естественно выдает ошибку "Нельзя изменять поле, содержащее объект данных формы". Вопрос такой возможно ли оставить директиву &НаСервереБезКонтекста и не перекопирыровать необходимые данные из Объекта в некую структуру для передачи данных в функцию? (Пытался даж при выходе из функции приравнивать Объект к НЕОПРЕДЕЛЕННО, приравнивает но ошибка остается, версия платформы 8.3.3) |
|||
1
Нуф-Нуф
16.09.13
✎
14:33
|
нафига юзать без контекста и все равно пытать передать форму?
|
|||
2
alexei366
16.09.13
✎
14:37
|
(1) Не согласен, яж не форму в итоге передать хочу, я имею ввиду мне нафиг не нужна форма с её элементами (типа поля, группы, таблицы, надписи , картинки и т.д)
|
|||
3
banco
16.09.13
✎
14:39
|
(2) код покажи, явно что то не так делаешь
|
|||
4
Infsams654
16.09.13
✎
14:41
|
(1) + 100500 - "и в параметр передаю ОбъектФормы"
(2) в"сякую фигню из текущих данных объекта" и надо передавать. "не перекопирыровать необходимые данные из Объекта в некую структуру для передачи данных в функцию" - а как думаешь, на сервер данные каким образом передаются ? |
|||
5
Defender aka LINN
16.09.13
✎
14:41
|
(2) Объект - неотъемлимая часть формы
|
|||
6
Нуф-Нуф
16.09.13
✎
14:42
|
покажи код, будь мужиком, блеать!
|
|||
7
alexei366
16.09.13
✎
14:43
|
(3) (6) Держите
&НаКлиенте Процедура Пересчитать(Команда) Перем ОписаниеОшибки,СтруктураИтоговая; РеквизитФормыВЗначение Если Пересчитать_СБ(Объект,СтруктураИтоговая,ОписаниеОшибки) = Ложь Тогда Сообщить(ОписаниеОшибки); КонецЕсли; МойРеквизит1 = СтруктураИтоговая.МойРеквизит1; МойРеквизит2 = СтруктураИтоговая.МойРеквизит2; ЭтаФорма.Модифицированность = Истина; КонецПроцедуры &НаСервереБезКонтекста Функция Пересчитать_СБ(Объект,СтруктураИтоговая,ОписаниеОшибки) Возврат Документы.МойДокумент.ПолучитьСтруктуруИтоговою(Объект,СтруктураИтоговая,ОписаниеОшибки); КонецФункции |
|||
8
alexei366
16.09.13
✎
14:44
|
После Сообщить(ОписаниеОшибки); идет Возврат; если что)) (7)
|
|||
9
alexei366
16.09.13
✎
14:45
|
(7) И РеквизитФормыВЗначение не надо
|
|||
10
Нуф-Нуф
16.09.13
✎
14:45
|
ну и? в объекте у тебя что сидит? зачем ты его передаешь на сервер?
|
|||
11
alexei366
16.09.13
✎
14:46
|
(10) В объекте сидит ОбъектФормы (т.е данные документа), а на сервер передаю чтобы выполнить несколько запросов по этим данным для подсчета всякой фигни
|
|||
12
Infsams654
16.09.13
✎
14:47
|
(7) Это че такое
Перем ОписаниеОшибки,СтруктураИтоговая; РеквизитФормыВЗначение ? Синтаксис: РеквизитФормыВЗначение(<ИмяРеквизита>, <Тип>) Вообщето, РеквизитФормыВЗначение нужно, для того, чтоб к методам объекта обратится, данные итак уже есть |
|||
13
alexei366
16.09.13
✎
14:47
|
(4) Думаю данные сериализуются, ты что предлагаешь лучше скажи? Я как понимаю как в сях нельзя же указать перед параметром функции директиву "in".
|
|||
14
alexei366
16.09.13
✎
14:48
|
(12) читай (9)
|
|||
15
Нуф-Нуф
16.09.13
✎
14:48
|
Если Пересчитать_СБ(Объект.ССЫЛКА,СтруктураИтоговая,ОписаниеОшибки) = Ложь Тогда
Сообщить(ОписаниеОшибки); КонецЕсли; |
|||
16
alexei366
16.09.13
✎
14:52
|
(15) Я в начале написал что мне нужны текущие данные, а не ссылка
|
|||
17
alexei366
16.09.13
✎
14:52
|
Ну чо чуваки я решил проблемму, кто хочет знать?
|
|||
18
Нуф-Нуф
16.09.13
✎
14:53
|
(16) а как ты собираешься выполнять запросы к текущим данным?
|
|||
19
Нуф-Нуф
16.09.13
✎
14:53
|
(17) давай, удивляй
|
|||
20
Defender aka LINN
16.09.13
✎
14:54
|
(16) Тогда делай контекстный вызов и не тилипи нам моск
|
|||
21
Лефмихалыч
модератор
16.09.13
✎
14:55
|
(7) не будет твоя "Пересчитать_СБ" без контекста работать в таком виде
|
|||
22
Euguln
16.09.13
✎
14:56
|
(0) А чо не сделать как в типовых, передать саму форму?
|
|||
23
alexei366
16.09.13
✎
14:56
|
(18) В данных объекта есть ссылки и простые типы, на их основе я делаю запросы к другим таблицам (объектам).
|
|||
24
yukon
16.09.13
✎
14:59
|
(0) Передай по значению:
Функция Пересчитать_СБ(Знач Объект |
|||
25
alexei366
16.09.13
✎
15:00
|
(24) Во во, так и сделанно уже , вот решение))
|
|||
26
scanduta
16.09.13
✎
15:04
|
(23) что за изврат ..показывай код
|
|||
27
scanduta
16.09.13
✎
15:04
|
народ требует зрелищ
|
|||
28
Infsams654
16.09.13
✎
15:06
|
(25) а зачем тут нужен менеджер документа "Документы.МойДокумент.ПолучитьСтруктуруИтоговою(Объект,СтруктураИтоговая,ОписаниеОшибки);" , если можно методом самого объекта все можно получить? Тут какой-то изврат.
Статический метод-то тут зачем, если результат зависит толкьо от данных одного объекта ? |
|||
29
alexei366
16.09.13
✎
15:08
|
(26) там интим уже пошел)). Одним словом по данным объекта документа я делаю запросы к справочникам, ну както так.
|
|||
30
alexei366
16.09.13
✎
15:10
|
(28) А мож я хочу этот метод юзать и для ссылки документа и для ОбъетФормыСтруктура и для Объекта. Что тебе не нравиться. По твоему чтобы мне посчитать мою фигню, из ссылки придется постоянно объект получать чтобы его метод вызвать, и тогда для Формы мне придется контекстный вызов делать для етого
|
|||
31
banco
16.09.13
✎
15:11
|
смысл тогда неконтекстного вызова, если передаешь объект? передай, то что нужно, типа так
СтруктураПараметров = Новый Структура("НужныйРеквизит1, НужныйРеквизит2, ИтакДалее"); ЗаполнитьЗначениеСвойств(СтруктураПараметров, Объект); Пересчитать_СБ(СтрутураПарметров, ...) .... |
|||
32
alexei366
16.09.13
✎
15:16
|
(31) Да там таблицы надо передать, както неохото их выгружать в др переменную
|
|||
33
Нуф-Нуф
16.09.13
✎
15:17
|
пример из типовой:
&НаКлиенте Процедура ВалютаПриИзменении(Элемент) ЗаполнитьПорядокОплатыГруппуФинансовогоУчета( Объект.Валюта, Объект.НалогообложениеНДС, Объект.ПорядокОплаты, Объект.ГруппаФинансовогоУчета ); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьПорядокОплатыГруппуФинансовогоУчета(Валюта, НалогообложениеНДС, ПорядокОплаты, ГруппаФинансовогоУчета) ПорядокОплаты = Перечисления.ПорядокОплатыПоСоглашениям.ПолучитьПорядокОплатыПоУмолчанию(Валюта, НалогообложениеНДС); ЗаполнитьГруппуФинансовогоУчета(ПорядокОплаты, ГруппаФинансовогоУчета); КонецПроцедуры передавай конкретные реквизиты. а не объект формы, ибо в этом случае смысла неконтекстного вызова нет |
|||
34
alexei366
16.09.13
✎
15:18
|
(33) Есть, ведь элементы формы с самой формой не передаются тогда
|
|||
35
Infsams654
16.09.13
✎
15:19
|
(30) ну тут смысл инкапсуляции - объект делает то, что только от него зависит. Другое дело, например печать в БП 3.0 - в статический метод менеджера передается список объектов, каждый из которых выдает свои данные на печать
|
|||
36
alexei366
16.09.13
✎
15:31
|
(35) Ну наверно, но пока так реализованно, мож потом перепишу
|
|||
37
alexei366
16.09.13
✎
15:32
|
(31) Переделал, терь выгружаю таблицы перед вызовом функции, пусть будет так
|
|||
38
alexei366
16.09.13
✎
15:39
|
(37) Блин а выгрузить таблицы на клиенте не доступны
|
|||
39
alexei366
16.09.13
✎
15:41
|
(38) Он же возвращает Таблицу значений которая не имеет отображение на клиенте
|
|||
40
Infsams654
16.09.13
✎
16:25
|
(39) если уж так надо ТЗ на клиенте, то создается РЕКВИЗИТ формы типа ТЗ (или даже дерева) и отображается
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |