| 
    
        
     
     | 
    
    
  | 
Что такое мутабельное значение? | ☑ | ||
|---|---|---|---|---|
| 
    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] - добавляет элемент, но при этом создается новый объект  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |