|
Странное поведение В УФ | ☑ | ||
---|---|---|---|---|
0
Franchiser
гуру
05.06.20
✎
17:15
|
Внешняя обработка.
Есть реквизиты обработки, которые выведены на форму: Организация, Период (тип стандартный период), Флаг1, Флаг2 .и т.д. С модуле обработки определена экспортная процедура Мояпроцедура() В серверной процедуре на форме вызываю кодом: РеквизитФормыВЗначение("Объект"). Мояпроцедура(); В процедуре происходит установка реквизитов Организация, Период, Флаг1, Флаг2. После окончания работы обработки на форме обработки Период заполненный, а остальные реквизиты нет. По логике период не должен был заполниться как и все остальные реквизиты. Почему заполнился Период? |
|||
1
RomanYS
05.06.20
✎
17:23
|
(0) ничего заполняться не должно. Может ещё какой код есть, который период заполняет.
|
|||
2
Franchiser
гуру
05.06.20
✎
17:26
|
нет, никакого кода, сейчас тестовую обработку сделаю
|
|||
3
Franchiser
гуру
05.06.20
✎
17:34
|
тестовая обработка:
https://yadi.sk/d/MN6FQvOy7J6-1g |
|||
4
Franchiser
гуру
05.06.20
✎
17:39
|
(3) поменял название реквизита Период на СтПериод. Результат не изменился...
|
|||
5
Franchiser
гуру
05.06.20
✎
17:41
|
платформа 8.3.17.1386
|
|||
6
fisher
05.06.20
✎
17:47
|
С реквизитами обработок чехарда какая-то. С самого начала они не заполнялись с сервера, потом с какого-то релиза вроде как пробрасывались кто-то говорил... Теперь опять какая-то непонятка суда по сабжу.
Я делаю проще. Как не использовал в УФ реквизиты обработок, так и не использую. |
|||
7
Franchiser
гуру
05.06.20
✎
17:48
|
(6) мне конечно пофиг, но должно же одинаково работать для всех. А не так что для типа стандартный период одним образом, остальные по-другому.
|
|||
8
fisher
05.06.20
✎
17:49
|
(7) Может, контексты протекли :)
|
|||
9
Вафель
05.06.20
✎
17:50
|
а обратно то из объекта в реквизит идет преобразование?
|
|||
10
Franchiser
гуру
05.06.20
✎
17:52
|
(9) нет не идет, мне не нужно в данном чтобы менялся реквизит формы после изменений в модуле.
Я отлаживаю механизм регламента ручным запуском процедуры ВыполнитьКоманду(). |
|||
11
Вафель
05.06.20
✎
17:53
|
(10) ну вот поэтому и не заполняется
|
|||
12
Franchiser
гуру
05.06.20
✎
17:53
|
(11) вопрос был "почему период заполняется"
|
|||
13
Вафель
05.06.20
✎
17:54
|
случайно не при создании вызываешь?
|
|||
14
Franchiser
гуру
05.06.20
✎
17:55
|
(13) нет, обработку приложил, если интересно можешь посмотреть
|
|||
15
Вафель
05.06.20
✎
17:56
|
выложи код (на pastebin). влом обработку открывать
|
|||
16
Franchiser
гуру
05.06.20
✎
18:00
|
||||
17
Сергиус
05.06.20
✎
23:21
|
(0)Да, глюк повторяется, платформа 8.3.16.1148
|
|||
18
Фрэнки
06.06.20
✎
00:16
|
глюк... глюк... нет никакого глюка. Всегда так работало и будет и дальше работать также
РеквизитФормыВЗначение("Объект"). Мояпроцедура(); Эта строчка кода _конструктор_ объекта и создает новый экземпляр - если это понятие о чем-то говорит. Оно не использует какой-то существующий экземпляр, но создает! Все. Если очень хочется каким-то способом передавать значения между модулями и хочется для этого приспособить реквизиты, то халявы не получится. Другими способами - через параметры, через структуры, которые пропихиваются в параметры, через хранилища значений... что мне часто кажется жутко неоптимальным. Вероятно, что еще какие-то варианты есть. Но через создание нового экземпляра. И, кстати, обработкаОбъект не единственный вид объектов, с которым такие фокусы не прокатывают. |
|||
19
Сергиус
06.06.20
✎
01:12
|
(18)Почему прокатывает с реквизитом типа стандартный период и не прокатывает со строкой и булево?
|
|||
20
hhhh
06.06.20
✎
01:20
|
(19) возможно на форме задано сохранение реквизитов. Задпно, что период сохраняется, а остальные нет.
|
|||
21
Сергиус
06.06.20
✎
01:22
|
(20)Нет там сохранения, автор в посте (3) выложил пример обработки.
|
|||
22
Сергиус
06.06.20
✎
01:25
|
+(21)Причем с реквизитом типа Дата такое не прокатывает. Конкретно СтандартныйПериод только.
|
|||
23
Жан Пердежон
06.06.20
✎
02:18
|
(18) слышал анекдот про чукчу-писателя?
(0) 8.3.16.1030 подтверждаю, протекает именно тип СтандартныйПериод (с любым именем реквизита), дата, стандартная дата начала - норм. Пили пост на партнерке. |
|||
24
runoff_runoff
06.06.20
✎
03:00
|
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.МояПроцедура(); ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); // нужно вернуть объект в данные формы |
|||
25
Franchiser
гуру
06.06.20
✎
10:29
|
(24) не хочу я возвращать объект, хочу оставить форму как была до запуска
|
|||
26
Фрэнки
06.06.20
✎
10:36
|
(25) мало того! в данном конкретном случае речь идет об использовании экземпляра объекта, который просто хранится в базе в виде ветки метаданных.
Это не экземпляр документа из списка ДокументОбъект, не экземпляр справочника из списка СправочникОбъект. Тут было бы достаточно создать процедуру с параметрами (в скобках) и все. |
|||
27
Kassern
06.06.20
✎
10:45
|
(0) Вообще не понимаю, зачем пихать реквизит формы в объект, если нужно всего лишь реквизиты заполнить? Я понимаю еще, если нужно из модуля формы обратиться в модуль объекта обработки и выполнить какую-нибудь экспортную функцию. Вы могли просто (даже на клиенте, если простой тип данных) заполнить значениями реквизиты формы, без этих "плясок с бубмном". Например
&НаКлиенте Процедура ПриОткрытии(Отказ) Период.ДатаНачала=НачалоМесяца(ТекущаяДата()); Период.ДатаОкончания=ТекущаяДата(); Реквизит1 ="Тест"; Реквизит2 =Истина; КонецПроцедуры |
|||
28
Franchiser
гуру
06.06.20
✎
22:37
|
(27) (26) я описываю проблему, что ошибка в платформе. А вы мне тут пишете как нужно было сделать, или не понимаете для чего.
Объясняю, эта обработки только для демонстрации ошибки. Реально процедуру используется при ручном запуске обработке и при запуске регламкнтного задания. Во втором случае формате открывается а используется команда с вызовом серверного метода без открытия формы. Я из формы вызываю отладку команды которая отрабатывает так как если бы выполнялся регламент. На текущий момент нет практического смысла в указанном поведении но при разработке нужно будет это учитывать в будущем. |
|||
29
Franchiser
гуру
06.06.20
✎
22:41
|
(27) у меня по факту там в процедуре цикл в котором меняется период и организация и выполняются запросы к внешним данным.
А если открывать форму то можно запустить обработку только за конкретный период и по конкретной организации. |
|||
30
hhhh
06.06.20
✎
22:44
|
(28) в будущем похоже тоже не будет практического смысла. Какой смысл, если 99 реквизитов не передается, а один реквизит "Период" передается?
|
|||
31
Franchiser
гуру
06.06.20
✎
22:54
|
(30) а может кому то не нужно чтобы период передавался, как мне. Тогда нужно запоминать старое значение периода и его восстанавливать как до обработки. Зачем мне последний период который в цикле устанавливался в модуле обработки...
|
|||
32
Ненавижу 1С
гуру
06.06.20
✎
22:57
|
Проверил:
Период = Новый СтандартныйПериод(ВариантСтандартногоПериода.Месяц); //так норм Период.ДатаНачала = НачалоМесяца(ТекущаяДата()); // а так протекает Видимо как-то криво работает и связано с тем, что СтандартныйПериод это таки ссылка-на-объект, а не простое значение Но объект живущий на форме |
|||
33
Фрэнки
07.06.20
✎
00:08
|
(28) // я описываю проблему, что ошибка в платформе.
Это не ошибка в платформе, а осознанное, заранее проработанное поведение. |
|||
34
Фрэнки
07.06.20
✎
00:10
|
И там выше написали, чтоб пилил пост на Партнерку - вот и пили.
Авось у них получится внятно объяснить, если тутошние объяснения тебя не устраивают. |
|||
35
Franchiser
гуру
07.06.20
✎
01:55
|
(34) нет доступа в партнерку у меня.
(33) какое поведение? Что тип стандартный период как-то иначе протекает и обрабатывается в форме? Проблема только с этим типом. |
|||
36
RomanYS
07.06.20
✎
11:41
|
(32) похоже прав
Если реквизит произвольного типа инициализировать на форме, то его изменения через РеквизитФормыВЗначение("Объект")... вернутся на форму. Если реквизит переиницилизировать (Реквизит = Новый ...) в процедуре объекта, то изменения не передадутся. Стандартный период не единственный тип, тоже самое, например, со списком значений. Возможно работает вообще с любым типами имеющими конструкторы (Новый ...), но это не точно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |