|
Что такое мутабельное значение? | ☑ | ||
---|---|---|---|---|
0
Tonik992
01.11.18
✎
14:33
|
До сих пор не могут понять, что такое мутабельное значение.
Объясните мне популярным языком, что есть мутабльное значение, какие есть в 1С, и почему именно они - мутабельные? |
|||
1
Cool_Profi
01.11.18
✎
14:34
|
Например, объект. Его можно менять. А ссылку менять нельзя, поэтому она не мутабельная
|
|||
2
Tonik992
01.11.18
✎
14:36
|
(1) Таблицу значений можно менять, структуру.. Список значений, массив, переменную примитивного типа.. Но они не мутабельные
|
|||
3
PR
01.11.18
✎
14:44
|
||||
4
Tonik992
01.11.18
✎
14:49
|
(3) >>> Мутабельный тип (от англ. Mutable - изменчевый) - сложный тип данных (как правило - объекты), которые после своего создания допускают изменение своих свойств.
Ниже написано: Проверить, что переменная Количество с типом "число" не содержит "ноль" - можно, а вот понять что такое "пустое" для СписокЗначений (то ли все значения списка равны нулю, то ли нет ни одного значения списка, или что-то иное) - однозначно нельзя. Однако, ЗначениеЗаполнено(Массив) - сработает, и не выдаст ошибку мутабельности. Хотя для массива действует тоже самое предположение автора: (то ли все значения массива равны нулю, то ли нет ни одного значения массива, или что-то иное). Поэтому с такими выводами я не согласен. Если СписокЗначений Мутабельный, как сопоставить этот тип данных с правилом "которые после своего создания допускают изменение своих свойств"? У структуры есть свойства, но она не мутабельная. |
|||
5
Tonik992
01.11.18
✎
14:51
|
(3) Мне больше важны академически знания, а не эмпирические -)
|
|||
6
Tonik992
01.11.18
✎
14:54
|
Наверное это как-то связано с хранением объекта в памяти?
|
|||
7
dezss
01.11.18
✎
14:57
|
И буква "Я" не помогает?
|
|||
8
Tonik992
01.11.18
✎
15:02
|
(7) Больше помогает What is mutable type на английском. Там больше описаний:
Some objects are mutable, meaning they can be altered. Others are immutable; they cannot be changed but rather return new objects when attempting to update. То есть при изменении значения не мутабельного объекта создается новый, а не изменяется старый. string_build = "" for data in container: string_build += str(data) In reality, this is very inefficient. Because strings are immutable, concatenating two strings together actually creates a third string which is the combination of the previous two. (7) Я не смог найти -( |
|||
9
palsergeich
01.11.18
✎
15:05
|
(8) 1С вкладывает в это чуть чуть другой смысл. Смирись
|
|||
10
Cyberhawk
01.11.18
✎
15:06
|
Мутабельный в 1С - это для которого в клиент-серверной реализации платформы не реализована сериализация-десериализация при обмене с сервером приложений.
В режиме ОП и УП одни и те же объекты встроенного языка различаются мутабельностью. Например, табдок и СЗ в ОП мутабельные, а в УП уже нет. |
|||
11
Tonik992
01.11.18
✎
15:17
|
(10) (9) Получается, что именно так..
Спасибо |
|||
12
Вафель
01.11.18
✎
15:18
|
(10) при передаче тз вроде не про мутабельность ошибка выходит.
|
|||
13
Злопчинский
01.11.18
✎
15:24
|
тупой вопрос: почему ТЗ нельзя сериализовать/десериализовать и передать между клиентом и сервером?
|
|||
14
Вафель
01.11.18
✎
15:25
|
(13) говорят можно (через ВК), просто 1с не открыло доступ
|
|||
15
Вафель
01.11.18
✎
15:25
|
(14) Можно на клиенте ТЗ поиметь
|
|||
16
Cyberhawk
01.11.18
✎
15:26
|
(12) Дак в УФ везде не про мутабельность выходит ошибка
"Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа" |
|||
17
Злопчинский
01.11.18
✎
15:42
|
не, вот почему нельзя? какая принципиальная трудность разложить ТЗ в XML..? или я вообще ничего не понимаю?
|
|||
18
Cool_Profi
01.11.18
✎
15:52
|
(15) Можно. Только перед этим она тебе поимеет.
(17) Так принято решение Гениальным архитектором. Кто ты такой, чтобы оспаривать его решение? |
|||
19
VS-1976
01.11.18
✎
15:53
|
(17) Скорее 1С разработала ограниченную сериализацию только для того, что бы программисты новички не увлекались перетаскиванием всей базы с сервера на клиента и обратно...
|
|||
20
Злопчинский
01.11.18
✎
15:55
|
(18) каюсь и лобызаю стопы Гениального архитектора
|
|||
21
Вафель
01.11.18
✎
15:57
|
(19) сериализация тз в хмл вполне себе есть
|
|||
22
VS-1976
01.11.18
✎
16:09
|
(21) Я в общем, а не про тз.
|
|||
23
ptiz
01.11.18
✎
16:12
|
(13) Как это нельзя? С каких пор?
ТаблицаЗначений (ValueTable) Доступность: Сервер, толстый клиент, внешнее соединение. Возможен обмен с сервером. Сериализуется. |
|||
24
Tonik992
01.11.18
✎
16:36
|
(23) Да, однако в тонком клиенте ТЗ нельзя использовать.
(17) Может, потому что это особенности связанные с вебклиентом? Типа в ТЗ есть индексы.. Х3, а 1С не объясняла это, может кто-то из разработчиков платформы повеял это? |
|||
25
Tonik992
01.11.18
✎
16:38
|
(16) Да, в УФ мутабельности нет. И кстате в УФ уже можно сделать
ЗначениеЗаполнено(СписокЗначений) И ЗначениеЗаполнено(ТаблицаЗначений) |
|||
26
Вафель
01.11.18
✎
16:56
|
(24) индексы можно и на клиенте и на веб клиенте вполне создавать
|
|||
27
Cyberhawk
01.11.18
✎
16:59
|
(25) "кстате в УФ уже можно сделать" // Ну, про это вроде во второй части (10) написано
|
|||
28
Провинциальный 1сник
01.11.18
✎
17:00
|
Мутабельный объект - это который существует только в памяти клиента или конкретного рабочего процесса сервера и не может быть передан с клиента на сервер или между рабочими процессами, и не может быть сохранен в базе или сериализирован.
|
|||
29
Tonik992
01.11.18
✎
17:10
|
(28) Насчет сериализации некорректно.
Я, например, в режиме толстого клиента ОП могу на клиенте создать объект ПостроительОтчета, получить настройки (НастройкиПостроителяОтчета), а передать на сервер (через процедуру модуля с флагом ВызовСервера) не могу, т.к. выйдет ошибка "Попытка передачи с клиента на сервер мутабельного значения" Однако, я могу поместить в ХранилищеЗначения (т.к. данный объект Сериализуется), и передать через ХЗ. А на стороне сервера распокавать. |
|||
30
Cyberhawk
01.11.18
✎
17:12
|
(28) "или между рабочими процессами" // А как такую передачу можно вызвать?
|
|||
31
Вафель
01.11.18
✎
17:14
|
(30) фоновое с параметрами
|
|||
32
youalex
01.11.18
✎
17:15
|
(29) А если ты получишь настройки через ПолучитьНастройки() - то сможешь передать, сами настройки построителя - не мутабельны в данном смысле
|
|||
33
Tonik992
01.11.18
✎
17:17
|
Да не, СправочникОбъект даже сериализуется спокойно в XML.
(32) Я только что проверил. Настройки получаю через ПолучитьНастройки(). И объект НастройкиПостроителяОтчета не передается на сервер, т.к. выдается ошибка мутабельности. |
|||
34
Cyberhawk
01.11.18
✎
17:17
|
(29) "распокавать" // http://s00.yaplakal.com/pics/pics_original/9/2/4/1265429.jpg
|
|||
35
Cyberhawk
01.11.18
✎
17:24
|
(31) Точняк, спс.
Забыл уже, что совсем недавно эту ошибку ловил (передавая в параметр ФЗ несериализуемое значение): "Параметр фонового задания не поддерживает сериализацию". |
|||
36
Cyberhawk
01.11.18
✎
17:28
|
(33) "СправочникОбъект даже сериализуется спокойно в XML" // А толку. Короче можешь считать, что в 1С "мутабельный" это у которого в СП нет фразы "Возможен обмен с сервером" или "Сериализуется" (без приписки ХДТО).
|
|||
37
youalex
01.11.18
✎
17:30
|
(33) да, согласен
|
|||
38
dezss
01.11.18
✎
17:36
|
(8) ага...а теперь питон)))
a = [1,2,3] a += [4] id(a) a = a + [5] id(a) И какой это объект, мутабельный или нет? так что все зависит от языка) |
|||
39
Гад
01.11.18
✎
17:41
|
(0) неприличными словами прошу не выражаться (с) шариков
|
|||
40
Tonik992
01.11.18
✎
17:51
|
(38) Мутабельный.
Я угадал? |
|||
41
ДНН
01.11.18
✎
18:03
|
(28) "...и не может быть сохранен в базе или сериализирован."
ДокументОбъект - это ведь мутабельный объект. Разве он не может быть сохранен в базе? |
|||
42
Сияющий в темноте
01.11.18
✎
19:12
|
Ну,в Visual basic и вообще а Ole,массив это не обьект,а значение.
|
|||
43
Провинциальный 1сник
01.11.18
✎
21:52
|
(41) Тут мы имеем некий дуализм. Документ как представление объекта в программном интерфейсе и собственно объект, записанный в информационную базу. Мы не можем, например, записать в реквизит этот объект - можем только ссылку.
|
|||
44
VS-1976
01.11.18
✎
22:03
|
(25) к твоему сведению не только в УФ. И это просто проверка на колличество()...
|
|||
45
Сияющий в темноте
01.11.18
✎
22:26
|
Просто,мутабельный подразумевает наличие скрытых свойств,которые при сохранении недоступны.
структура и соответствие обьекты,но с прозрачным поведением,и к базе данных не привязаны. почему массив в 1с обьект,вопрос к создателям,но,если бы он не был обьектом,то пришлось бы вводить ссылки на переменные,так как иначе происходило бы копирование массива при передаче в другую переменную. |
|||
46
dezss
02.11.18
✎
08:39
|
(40) а ты выполни этот код и посмотри...
если исходить из твоего определения в (8): "То есть при изменении значения не мутабельного объекта создается новый, а не изменяется старый." То он оказывается и мутабельным и немутабельным одновременно))) a += [4] - добавляет элемент, но не создает новый a = a + [5] - добавляет элемент, но при этом создается новый объект |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |