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