Разминка для ума-2

Представляю вам небольшую задачку.

Для выполнения домашнего задания по монетизации (выложим позже) важно понимать обращение по индексам.

Когда будет работать и что вернет строка кода, написанная в модуле объекта:

Код = ЭтотОбъект[“Товары”][1][“Номенклатура”][“Родитель”][“Код”];

?

комментария 22 на “Разминка для ума-2”

  1. Код = ЭтотОбъект[“Товары”][1][“Номенклатура”][“Родитель”][“Код”];
    Код отработает, если у значения переменной есть свойство “товары”, в котором содержится коллекция значений, поддерживающая обращение к своим элементам по числовому индексу, в указанной коллекции должно быть минимум 2 строки (при обращении по числовому индексу нумерация начинается с 0), в составе полей коллекции должно присутствовать поле “Номенклатура”, со значением, тип которого позволяет иметь поля и среди них есть поле “родитель”, а содержимое поля “родитель” должно соответствовать тем же требованиям, что и содержимое поля “Номенклатура”, но обязательным является поле “Код” а не “Родитель”. Вернет конечно же содержимое поля “Код” поля “Родитель” поля “Номенклатура” из строки по индексу 1 коллекции, помещенной в свойство “товары” значения, находящегося в переменной “ЭтотОбъект”.

  2. Вроде уже многие отписались… Ну в общем успешно размял ум :)
    Объект -> Обращение к ТЧ “Товары”по имени -> Обращение по индексу ко 2й строке ТЧ (Индекс от нуля, индекс=1 – 2я строка) -> Обращение к колонке Номенклатура по имени -> Обращение к свойству номенклатуры Родитель по имени -> Обращение по имени к свойству Код родителя номенклатуры второй строки.

    Все будет работать, если не сподкнется на каком-нибудь шаге: отсутствие любого кусочка (свойства\поля\2й строки) вызовет ошибку.

  3. Когда будет работать:
    1. если есть табчасть Товары
    2. если строк больше одной
    3. Если в строке есть реквизит номенклатура
    4. Если номенклатура – иерархический справочник и у элемента Номенклатура во второй строке есть родитель

    Что вернет: Код родителя реквизита Номенклатура из второй строки табчасти Товары

    • Отлично!

    • Александр Горлов 13.08.2010 в 09:41

      Все верно, но:
      даже если у элемента Номенклатура во второй строке нет родителя (например, будет элемент самого верхнего уровня), то [“Родитель”] вернет пустую ссылку на этот справочник, а [“Родитель”][“Код”] вернет либо 0, либо строку с пробелами, в зависимости от установленных в конфигураторе параметров для кода справочника.

      Ну и еще забыли: если Номенклатура – справочник, который имеет код. Ведь код может вообще отсутствовать!

      • Со всем согласен, кроме одного. У справочника Код и Наименование (как реквизиты), есть всегда

        • Вообще-то вы правы. Даже если длина наименования и кода равна 0 к ним все равно можно обратиться.

  4. Код Родителя Номенклатуры, второй строки Табличной части Товары объекта.

  5. progr-2008 12.08.2010 в 22:20

    Код родителя второй строки колонки номенклатура ТЧ Товары объекта, у которого есть модуль объекта. Например, у справочника.

    • progr-2008 12.08.2010 в 23:20

      Только 2-я строка должна уже существовать, т.е. надо делать проверку или этот код должен появиться после ввода элемента.

  6. Данный код вернет тип реквизита код у справочника Номенклатура. Также если, справочник “Номенклатура” является не является иерархическим, то вернет пустое значение типа реквизита “Код” т.к. родитель в этом случае будет пустая ссылка. Возможно я все поняла не так)).

  7. Код родителя реквизита “Номенклатуры” второй строки ТЧ “Товары”.
    Если вторая строка есть и родитель указанной номенклатуры существует (спр. “Номенклатура” – иерархический).

  8. Ваще с фантазией плохо :(
    Может из таблицы “Товары” какого-то Объекта берется Код Родителя 1-ой Номенклатуры?

    • Ну да, конечно же отчет с 0, тогда 2-ая строка ТЧ “Товары” :)
      Надо сказать, что это “извращение” с нумерацией от 0, а не с 1, идет со времен языка “Си” для ДОСа, который тоже вроде любил считать с 0. В противоположность Си, Паскаль, а я его предпочитал, же считал с 1. Вроде так было, т.к. нашел свой код 20-летней давности на Паскале “i:array[1..30,1..30] of integer;”
      Вот и приходится всегда держать в уме, что для массивов и ТЧ в 1С 1 – это на самом деле 2, а 0 – это 1.

  9. Работает :)

  10. Семенов Валерий 12.08.2010 в 21:13

    Код родителя номенклатуры 2 строки табличной части Товары некоторого документа или справочника.

  11. Работать будет в модуле объекта (документа, обработки, справочника …), имеющего таб часть “товары”, как минимум с одной колонкой “номенклатура” (с типом ссылка на иерархический справочник) и 2-я строками.

    Вернет код родителя для значения номенклатуры из второй строки …

  12. Будет работать – если у объекта есть табличная часть товары, а в нем есть две строки (если не ошибаюсь первая будет с индексом ноль), если в табличной части товары есть реквизит номенклатура, а у него есть родитель то получим его код.

  13. Михайлов Сергей 12.08.2010 в 20:59

    Код родителя номенклатуры из 2ой строки. Если она конечно есть в документе… Иначе ошибку выдаст.

  14. Возможно – код родителя 2 строки ТЧ Товары..