|   |   | 
| 
 | Ссылки и Объекты | ☑ | ||
|---|---|---|---|---|
| 0
    
        Pepeega 11.02.21✎ 10:12 | 
        Добрый день, подскажите пожалуйста, когда нельзя пользоваться ссылкой и когда нельзя пользоваться объектом или когда лучше пользоваться ссылкой, а когда объектом?     | |||
| 1
    
        acht 11.02.21✎ 10:17 | 
        Ссылкой нужно пользоваться когда необходимо, а объектом - только по мере надобности.
 Задай вопрос еще раз, пожалуйста. | |||
| 2
    
        Василий Алибабаевич 11.02.21✎ 10:18 | 
        (0) Нужно редактировать свойства объекта - нужно пользоваться объектом. Нужно найти объект, или организовать связь между объектами - нужно пользоваться ссылкой. В общем ссылка это адрес, а объект - само здание.     | |||
| 3
    
        acht 11.02.21✎ 10:19 | 
        (0) Тебе нужны описания типовых ощибк в коде, что-ли?     | |||
| 4
    
        acht 11.02.21✎ 10:21 | 
        (2) > В общем ссылка это адрес, а объект - само здание.
 Ну не совсем. Можно же организовать одновременно несколько экземпляров "здания" с одним "адресом" =) | |||
| 5
    
        Василий Алибабаевич 11.02.21✎ 10:27 | 
        (4) "Можно же организовать одновременно несколько экземпляров "здания" с одним "адресом" =)"
 Это как? Несколько ссылок на один документ? Или элемент справочника? В общем хочу видеть пример. | |||
| 6
    
        Pepeega 11.02.21✎ 10:28 | 
        (4) (2) Спасибо, плюс/минус я понял, что к чему, а вот насчет "Можно же организовать одновременно несколько экземпляров "здания" с одним "адресом" =)", не совсем понятно, можно как-то иметь несколько ссылок на один документ?     | |||
| 7
    
        ДенисЧ 11.02.21✎ 10:29 | 
        (6) 
 а1 = Документы.Реализация.НайтиПоНомеру("12345", Дата(2021, 1,1)); а2 = Документы.Реализация.НайтиПоНомеру("12345", Дата(2021, 1,1)); Вот тебе и две ссылки... | |||
| 8
    
        Василий Алибабаевич 11.02.21✎ 10:30 | 
        (7) Нифига. Ссылка одна. Переменных, которые содержат эту ссылку - две.     | |||
| 9
    
        Василий Алибабаевич 11.02.21✎ 10:32 | 
        + (8) Обе переменные ссылаются на один и тот же объект. Это точно так же как вы оставляете свой номер телефона миллиону абонентов. Но сам номер то остается один.     | |||
| 10
    
        Pepeega 11.02.21✎ 10:32 | 
        (7) Соглашусь с (8), это же просто 2 разные переменные, а ссылка у них одна     | |||
| 11
    
        singlych 11.02.21✎ 10:33 | 
        (5) (6) стрзаменить не работает? несколько экземпляров объекта с одной ссылкой     | |||
| 12
    
        ДенисЧ 11.02.21✎ 10:33 | 
        (8) Зануда     | |||
| 13
    
        Василий Алибабаевич 11.02.21✎ 10:36 | 
        (12) Ну нафига? В терминах чистого ООП (размещение в памяти, все дела...) ссылки таки две. В терминах БД - ссылка одна. Тек что тут как посмотреть.     | |||
| 14
    
        acht 11.02.21✎ 10:36 | 
        (6) а1 = Документы.Реализация.НайтиПоНомеру("12345", Дата(2021, 1,1));
 о1 = а1.ПолучитьОбъект(); о2 = а1.ПолучитьОбъект(); o1.Номер = 23456; o2.Номер = 98765; Генератор = Новый ГенераторСлучайныхЧисел() Для и = 1 По 1000 Цикл Если Генератор.СлучайноеЧисло(1,1000) > 500 Тогда о1.Записать(); Иначе о2.Записать(); КонецЕсли; КонецЦикла | |||
| 15
    
        hhhh 11.02.21✎ 10:38 | 
        (8) он имел в виду другое.
 Объект1 = Ссылка.ПолучитьОбъект(); Объект2 = Ссылка.ПолучитьОбъект(); два разных объекта. | |||
| 16
    
        Василий Алибабаевич 11.02.21✎ 10:42 | 
        (14) Нет. Речь об этом :
 а1 = Документы.Реализация.НайтиПоНомеру("12345", Дата(2021, 1,1)); а2 = Документы.Реализация.НайтиПоНомеру("12345", Дата(2021, 1,1)); ткст = ?(а1 = а2, "Ссылка одна.", "Ссылки разные."); Сообщить(ткст); ткст = ?(Строка(а1) = Строка(а2), "Ссылка одна.", "Ссылки разные."); Сообщить(ткст); | |||
| 17
    
        Pepeega 11.02.21✎ 10:45 | 
        (14) Хорошо, вопрос всё-таки отпал     | |||
| 18
    
        hhhh 11.02.21✎ 10:53 | 
        (16) в (4) об этом.     | |||
| 19
    
        acht 11.02.21✎ 10:55 | 
        (16) Мне таки лучше знать, про что я, извини. 
 Это вы там с ДенисЧ что-то мутите. | |||
| 20
    
        youalex 11.02.21✎ 10:55 | 
        (15) у этих объектов адрес - не ссылка. Точнее, ссылка, но не та) 
 Если развить аналогию, то ссылка - это адрес Объект БД - это здание Объект встроенного языка (Ссылка.ПолучитьОбъект()) - план здания по адресу (ссылке) | |||
| 21
    
        acht 11.02.21✎ 11:01 | 
        (20) > план здания по адресу
 Тогда уж бригада таджиков, которая делает ремонт по этому адресу =) | |||
| 22
    
        Pepeega 11.02.21✎ 11:01 | 
        Такой вопрос возник, может тут подскажет кто "Есть "класс" ошибок с переинициализацией значений , почему лучше переменный переинициализировать внутри цикла?"     | |||
| 23
    
        Serg_1960 11.02.21✎ 11:04 | 
        (17) Всё очень просто: программисты и пользователи работает не с самими объектами, хранимыми в базе данных, а с их экземплярами (объектами, хранимые в памяти) - следовательно у одного объекта базы данных может быть много экземпляров в памяти. Так и происходит при многопользовательском режиме работы, когда несколько пользователей пытаются редактировать один и тот-же объект.     | |||
| 24
    
        Serg_1960 11.02.21✎ 11:05 | 
        (22) "Ничего не понял"(с) Повтори вопрос другими словами :)     | |||
| 25
    
        Rovan гуру 11.02.21✎ 11:06 | 
        (15) а это на грани мошенничества...  жулики так продают одновременно 1 квартиру 2м покупателям !     | |||
| 26
    
        acht 11.02.21✎ 11:06 | 
        (22) Не лучше. Зависит от.
 Если ты, например, про создание массива со структурами, то "инициализация"- это создание нового экземпляра данных. Иначе у тебя все элемены в массиве будут указывать на единственный элемент, созданный за пределами цикла и заполненный данными последней итерации цикла. Это как раз то, про что Алибабаевич пытался начать - переменные не примитивного типа обрабатываются не по значению, а по ссылке на ее экземпляр. | |||
| 27
    
        Pepeega 11.02.21✎ 11:07 | 
        (24) Слышал, что есть грубо говоря Класс ошибок с переинициализацией значений, то есть если она есть вне цикла и с ней что-то происходит, почему лучше её еще раз объявить внутри цикла, пере взаимодействием с ней?     | |||
| 28
    
        Pepeega 11.02.21✎ 11:09 | 
        (26) хм, понял подход, спасибо     | |||
| 29
    
        Serg_1960 11.02.21✎ 11:31 | 
        (27) Что есть термин "инициализация" в Вашем понимании? Платформа, при объявлении переменных, инициализирует их значением «Неопределено» по умолчанию. Поэтому рекомендуется переменным явно присваивать значение конкретного типа перед использованием. Платформа также допускает использование "явной инициализации" - присвоением нужного значения новой переменной без предварительного объявления. Некоторые называют этот способ более "правильным". Выбор за Вами.     | |||
| 30
    
        Dmitrii гуру 11.02.21✎ 11:36 | 
        (0) >> когда лучше пользоваться ссылкой, а когда объектом?
 В общем случае. Для чтения данных - ссылка. Для изменения (модификации) - объект. Кроме того могут быть особенности обусловленные конкретным объектом. Например коллекция Движения доступна только у ДокументОбъект. А для ДокументСсылка придется получать наборы записей каждого регистра отдельно с установкой основного отбора по ссылке на регистратор. | |||
| 31
    
        Василий Алибабаевич 11.02.21✎ 11:40 | 
        (29) Для начала нужно определиться что есть "грубо говоря Класс ошибок с переинициализацией значений".
 Но пусть себе останется абстракцией. Почему нужно переобъявлять внутри цикла? Видимо для того, чтобы надежно сбросить все свойства к значениям по умоляанию. Чтобы на следующей итерации не наступить на данне, оставшиеся с предыдущих. Можно в класс прописать метод типа Reset и там устанавливать все значения "по умолчанию". Почемуто это не сделано. Приходится тупо переобъявлять объект. | |||
| 32
    
        Serg_1960 11.02.21✎ 11:57 | 
        (31) Если мы говорим о переменных примитивного типа данных, то объявлять не обязательно - достаточно присвоить значение нужного типа... но мне кажется, что некоторые путают объявление в цикле с объявлением переменных внутри модуля/функции/процедуры - намекаю на видимость переменных.     | |||
| 33
    
        Василий Алибабаевич 11.02.21✎ 12:00 | 
        (32) У товарисча из (27) переменная не примитивного типа, а целый "Класс ошибок с переинициализацией значений".     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |