Разминка для ума-2
Представляю вам небольшую задачку.
Для выполнения домашнего задания по монетизации (выложим позже) важно понимать обращение по индексам.
Когда будет работать и что вернет строка кода, написанная в модуле объекта:
Код = ЭтотОбъект[“Товары”][1][“Номенклатура”][“Родитель”][“Код”];
?
Код = ЭтотОбъект[“Товары”][1][“Номенклатура”][“Родитель”][“Код”];
Код отработает, если у значения переменной есть свойство “товары”, в котором содержится коллекция значений, поддерживающая обращение к своим элементам по числовому индексу, в указанной коллекции должно быть минимум 2 строки (при обращении по числовому индексу нумерация начинается с 0), в составе полей коллекции должно присутствовать поле “Номенклатура”, со значением, тип которого позволяет иметь поля и среди них есть поле “родитель”, а содержимое поля “родитель” должно соответствовать тем же требованиям, что и содержимое поля “Номенклатура”, но обязательным является поле “Код” а не “Родитель”. Вернет конечно же содержимое поля “Код” поля “Родитель” поля “Номенклатура” из строки по индексу 1 коллекции, помещенной в свойство “товары” значения, находящегося в переменной “ЭтотОбъект”.
Зачет, Евгений!
Вроде уже многие отписались… Ну в общем успешно размял ум :)
Объект -> Обращение к ТЧ “Товары”по имени -> Обращение по индексу ко 2й строке ТЧ (Индекс от нуля, индекс=1 – 2я строка) -> Обращение к колонке Номенклатура по имени -> Обращение к свойству номенклатуры Родитель по имени -> Обращение по имени к свойству Код родителя номенклатуры второй строки.
Все будет работать, если не сподкнется на каком-нибудь шаге: отсутствие любого кусочка (свойства\поля\2й строки) вызовет ошибку.
Когда будет работать:
1. если есть табчасть Товары
2. если строк больше одной
3. Если в строке есть реквизит номенклатура
4. Если номенклатура – иерархический справочник и у элемента Номенклатура во второй строке есть родитель
Что вернет: Код родителя реквизита Номенклатура из второй строки табчасти Товары
Отлично!
Все верно, но:
даже если у элемента Номенклатура во второй строке нет родителя (например, будет элемент самого верхнего уровня), то [“Родитель”] вернет пустую ссылку на этот справочник, а [“Родитель”][“Код”] вернет либо 0, либо строку с пробелами, в зависимости от установленных в конфигураторе параметров для кода справочника.
Ну и еще забыли: если Номенклатура – справочник, который имеет код. Ведь код может вообще отсутствовать!
Со всем согласен, кроме одного. У справочника Код и Наименование (как реквизиты), есть всегда
Вообще-то вы правы. Даже если длина наименования и кода равна 0 к ним все равно можно обратиться.
Код Родителя Номенклатуры, второй строки Табличной части Товары объекта.
Код родителя второй строки колонки номенклатура ТЧ Товары объекта, у которого есть модуль объекта. Например, у справочника.
Только 2-я строка должна уже существовать, т.е. надо делать проверку или этот код должен появиться после ввода элемента.
Данный код вернет тип реквизита код у справочника Номенклатура. Также если, справочник “Номенклатура” является не является иерархическим, то вернет пустое значение типа реквизита “Код” т.к. родитель в этом случае будет пустая ссылка. Возможно я все поняла не так)).
Код родителя реквизита “Номенклатуры” второй строки ТЧ “Товары”.
Если вторая строка есть и родитель указанной номенклатуры существует (спр. “Номенклатура” – иерархический).
Ваще с фантазией плохо :(
Может из таблицы “Товары” какого-то Объекта берется Код Родителя 1-ой Номенклатуры?
Ну да, конечно же отчет с 0, тогда 2-ая строка ТЧ “Товары” :)
Надо сказать, что это “извращение” с нумерацией от 0, а не с 1, идет со времен языка “Си” для ДОСа, который тоже вроде любил считать с 0. В противоположность Си, Паскаль, а я его предпочитал, же считал с 1. Вроде так было, т.к. нашел свой код 20-летней давности на Паскале “i:array[1..30,1..30] of integer;”
Вот и приходится всегда держать в уме, что для массивов и ТЧ в 1С 1 – это на самом деле 2, а 0 – это 1.
Работает :)
Код родителя номенклатуры 2 строки табличной части Товары некоторого документа или справочника.
Работать будет в модуле объекта (документа, обработки, справочника …), имеющего таб часть “товары”, как минимум с одной колонкой “номенклатура” (с типом ссылка на иерархический справочник) и 2-я строками.
Вернет код родителя для значения номенклатуры из второй строки …
Все верно!
Будет работать – если у объекта есть табличная часть товары, а в нем есть две строки (если не ошибаюсь первая будет с индексом ноль), если в табличной части товары есть реквизит номенклатура, а у него есть родитель то получим его код.
Код родителя номенклатуры из 2ой строки. Если она конечно есть в документе… Иначе ошибку выдаст.
Возможно – код родителя 2 строки ТЧ Товары..