Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.02.2012, 16:24
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
Пример: Товар = Справочники.Номенклатура.НайтиПоКоду(1).ПолучитьОбъект(); НайтиПоКоду() - метод модуля менеджера справочника Номенклатура. С помощью него получаем объект (запись) из всего справочника. ПолучитьОбъект() - метод модуля объекта справочника Номенклатура. С помощью него читаем в переменную-структуру "Товар" значения полученного объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.02.2012, 16:34
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
Найтипокоду возвращает ссылку. Получитьобъект - на основе ссылки возвращает объект ссылка используется для чтения данных, а объект для модификации данных. Соответственно из примера видно что в переменную товар заводится объект номенклатуры с кодом 1. следующими строками должна идти модификация аля Товар = Справочники.Номенклатура.НайтиПоКоду(1).ПолучитьОбъект(); Товар.Наименование ="Товар с кодом 1"; Товар.Записать(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.02.2012, 17:06
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
rigus, да, по названию метода ПолучитьОбъект() понятно, что в итоге делает эта конструкция. Правильно ли понял, что "Справочники.Номенклатура.НайтиПоКоду(1)." возвращает промежуточный объект (либо структуру) в которой хранится ссылка. У данного объекта\ссылки есть метод ПолучитьОбъект(), который считывает в переменную "Товар" значения найденного элемента справочника Номенклатура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.02.2012, 17:14
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
Извините за сумбур. Постарался более понятно. Правильно ли я понял ваш ответ? Товар = Справочники.Номенклатура.НайтиПоКоду(1); Товар = ПромежуточныйОбъект.ПолучитьОбъект(); что-то вроде псевдокода. ПромежуточныйОбъект - объект, либо структура в которой лежит ссылка на найденный элемент справочника. У данного объекта\структуры есть метод ПолучитьОбъект(), который берет ссылку и по ней из базы копирует в переменную "Товар" элемент справочника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.02.2012, 18:13
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
ПолучитьОбъект() по ссылке получает скажем так "конкретный экземпляр класса" и уже в нем можем получать через разименование доступ к полям и методам данного конкретного экземпляра объекта которой был найден ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.02.2012, 18:15
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
Еще раз ссылка предназначена только для чтения данных. Т.е. если у Вас есть ссылка на объект, то Вы можете получить все его свойства т.е. грубо говоря это рекордсет и на стороне скуля выполняется запрос к таблице возвращающий все поля элемента. Например Товар = Справочники.Номенклатура.НайтиПоКоду(1); Сообщить("("+Товар.Код+") "+Товар.Наименование+" в группе "+Товар.Родитель.Наименование); Если нам нужно модифицировать объект, то мы получаем на основании ссылки объект и уже работаем с ним. Также следует помнить следующее, т.к. 1с кеширует данные, то получение реквизитов через точку может вернуть устаревшие данные (если в промежутке между получением ссылки и обращением через точку была модификация объекта) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.02.2012, 19:53
|
|||
|---|---|---|---|
|
|||
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
КантачесПример: Товар = Справочники.Номенклатура.НайтиПоКоду(1).ПолучитьОбъект(); НайтиПоКоду() - метод модуля менеджера справочника Номенклатура. С помощью него получаем объект (запись) из всего справочника. ПолучитьОбъект() - метод модуля объекта справочника Номенклатура. С помощью него читаем в переменную-структуру "Товар" значения полученного объекта. Не так. НайтиПоКоду() - метод менеджера справочника . Возвращает ссылку. ПолучитьОбъект() - метод менеджера справочника . Возвращает объект. Между объектом и ссылкой большая разница. Ссылка - это только идентификатор объекта. Например, для компьютера ссылкой будет его название, а самим объектом будет непосредственно компьютер. По названию (ссылке) мы всегда опознаем компьютер и можем даже вспомнить, где он находится, однако, чтобы произвести с ним какие либо действия (включить, выключить, установить на него ПО), нам нужен сам объект (компьютер). Ссылка - предназначена для опознавания, объект - для манипулирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2012, 09:53
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
rigus, Last1Cmen, Александр Пузаков , спасибо за разъяснение. В подобных ситуациях, если не вызвать метод ПолучитьОбъект() в переменную будет записана ссылка на объект, а не сам объект. При этом мы так же можем вызывать методы объекта и читать его свойства (но только не изменять их). Сбила с толку такая конструкция - в ООП обычно пишем Объект.Метод, а тут Объект.Метод.Метод, т.е. будто у метода ПоучитьПоКоду() есть метод ПолучитьОбъект(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2012, 12:31
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
Кантачес rigus, Last1Cmen, Александр Пузаков , спасибо за разъяснение. В подобных ситуациях, если не вызвать метод ПолучитьОбъект() в переменную будет записана ссылка на объект, а не сам объект. При этом мы так же можем вызывать методы объекта и читать его свойства (но только не изменять их). Сбила с толку такая конструкция - в ООП обычно пишем Объект.Метод, а тут Объект.Метод.Метод, т.е. будто у метода ПоучитьПоКоду() есть метод ПолучитьОбъект(). ммм ну тут удобнее получается и не обязательно расписывать этапы (сначала ссылка потом сам объект) а можно в одну строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2012, 12:32
|
|||
|---|---|---|---|
Учусь читать код, не понятна одна конструкция |
|||
|
#18+
Кантачес, Считайте, что Ссылка и Объект - это сущности разных классов. У ссылки и свойства свои есть, и методы, не те же самые, что у Объекта. А есть еще и Менеджер, и Список, и Выборка... В семерке точно так же было, хотя и все эти по сути разные классы под одним именем скрывались. Только в документации попадались регулярно сноски "метод применим только для созданных функцией СоздатьОбъект()". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=guest10&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 700ms |
| total: | 858ms |

| 0 / 0 |
