![]() |
![]() |
![]() |
|
Проивольный тип данных на форме и общение клиента-сервера Chameleon1980, paramedic, ThreeTONE, blackviper, Fish, phabeZ, butterbean, Климов Сергей, vicof, BayJay, youalex, Мультук, PR, Бычье сердце, boozin, Eiffil123, 1Снеговик, Hmster, Hawk_1c, pasha_d, Krendel, obs191, kisobol, maxar, craxx, denk32, Prog_man, timurhv, Волшебник, 2S, Толич, takefive, Franc07, arsik, Ватт, ReaLg, Terrixus
| ☑ | ||
---|---|---|---|---|
0
blackviper
22.07.25
✎
13:50
|
Имеем простую обработку с реквизитом объекта (ПроизвольныТип), форму с реквизитом формы (ПроизвольныТип) и обычную переменную объявляемую в коде:
&НаКлиенте Процедура Команда1(Команда) Массив1 = Новый Массив; РеквизитФормы = Новый Структура("Массив, Строка", Массив1, "РеквизитФормы"); Массив2 = Новый Массив; Объект.РеквизитОбъекта = Новый Структура("Массив, Строка", Массив2, "РеквизитОбъекта"); Массив4 = Новый Массив; ПростаяПеременная = Новый Структура("Массив, Строка", Массив4, "ПростаяПеременная"); ДобавимЭлементВМассив(ПростаяПеременная); КонецПроцедуры &НаСервере Процедура ДобавимЭлементВМассив(ПростаяПеременная) РеквизитФормы.Массив.Добавить("НовыйЭлемент"); // РеквизитФормы.Строка = "Изменил!"; Объект.РеквизитОбъекта.Массив.Добавить("НовыйЭлемент"); // Объект.РеквизитОбъекта.Строка = "Изменил!"; ПростаяПеременная.Массив.Добавить("НовыйЭлемент"); КонецПроцедуры После выполнения процедуры "ДобавимЭлементВМассив" на сервере но до выхода из неё в массивах находящихся в структурах по одному элементу, но после выхода обратно на клиент реквизит формы и реквизит объекта "возвращаются" в исходное состояние с пустыми массивами. При этом если в процедуре "ДобавимЭлементВМассив" я изменю не только массивы в структурах но и строку в структурах (закомменченый код) то на клиент вернутся уже ожидаемое - не пустые массивы. Еще заметил что если вызвать "ДобавимЭлементВМассив" два раза подряд то заметим что на сервере сохранились копии этих реквизитов, так как на входе мы увидим что там все таки не пустые массив. Собственно вопрос, как это объяснить?) |
|||
1
Волшебник
22.07.25
✎
13:44
|
Плохие имена переменных и реквизитов
|
|||
2
blackviper
22.07.25
✎
13:48
|
(1) Справедливо(
|
|||
3
Fish
гуру
22.07.25
✎
13:48
|
Массив1 Массив2 Массив4 - а почему нет массива 3? Как это объяснить?
|
|||
4
Волшебник
22.07.25
✎
13:49
|
(3) Русские дети в городе Сан-Хосе решили приколоться и запустили в школу три свиньи. При этом написали на них краской номера 1, 2 и: 4. Неделю американская полиция искала свинью под номером 3.
|
|||
5
blackviper
22.07.25
✎
13:51
|
(3) Там еще глобальная переменная формы была под номером 3, но благо хоть как она работает я знал, и затер её)
|
|||
6
Fish
гуру
22.07.25
✎
13:51
|
(4) 👍
|
|||
7
Eiffil123
22.07.25
✎
13:57
|
(0) открыл астрологический прогноз и вижу объяснение в следующем:
когда вы раскомментируете свои две строки, то платформа на сервере точно будет знать, что вы изменяли ее состояние (формы). Поэтому с сервера на клиент будет передана целиком. при закомментированных строках вы меняете состояние объекта, который напрямую с формой не связан и платформа не знает, что изменилось состояние формы. Вступает в силу некие оптимизации, не гоняющие лишний трафик между клиентом и сервером. |
|||
8
blackviper
22.07.25
✎
13:57
|
(7) благодарю, милейший
|
|||
9
Мультук
гуру
22.07.25
✎
14:02
|
(7)
Весь вопрос в том а) что считать фичей, а что багой б) Любая бага может стать фичей в) Любую фичу в произвольный момент времени могут объявить багой (0) -- Доктор, когда я так делаю... -- Не делайте так (с) Если бы 1С хотели, они бы ввели типы "Структура", "Соответствие", хотя бы для реквизитов форм. Но они "что-то знают" и так не делают. |
|||
10
Волшебник
22.07.25
✎
14:04
|
(9) Просто этих коллекций уже дохрена:
|
|||
11
Eiffil123
22.07.25
✎
14:06
|
(7) вот в этой статье примерно так и говорится:
https://infostart.ru/1c/articles/198766/?ysclid=mdef97ydg2687211789 Платформа выполняет ряд оптимизаций по передаче контекста. Так, например, между клиентом и сервером передаются только изменения контекста, а не весь контекст целиком. Тем не менее, так происходит не всегда, и часто форма пересылается почти полностью. Кроме того, программист не может явно управлять этим процессом и можно считать, что вызов серверного метода «с контекстом» передает все данные формы, а потом еще и получает их обратно с теми изменениями, которые внесены в данные на сервере. |
|||
12
Eiffil123
22.07.25
✎
14:07
|
(10) не хватает стека, кучи, циклического списка, двунаправленного списка
|
|||
13
1Снеговик
гуру
22.07.25
✎
14:43
|
(12) кому не хватает? Зачем это все в 1С?
|
|||
14
Eiffil123
22.07.25
✎
14:46
|
(13) тангенсам в запросах нашли применение, и этому найдут.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |