Как упростить запись в непериодический регистр без `ПустаяСсылка()`?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как упростить запись в непериодический регистр без `ПустаяСсылка()`?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #34934
      Фото аватараOdineski
      Участник

        Как упростить запись в непериодический регистр накопления, записывать ПустаяСсылка не обязательно если записи предшествовала очистка? и тогда можно использовать упрощённый вариант Если (через «?»)

        ТипРегистратора = ТипЗнч(Регистратор);

        Если ТипРегистратора = Тип(«ДокументСсылка.ЗаказКлиента») Тогда
        Возврат Регистратор;
        ИначеЕсли ТипРегистратора = Тип(«ДокументСсылка.РеализацияТоваровУслуг») И
        (ТипЗнч(Регистратор.ЗаказКлиента) = Тип(«ДокументСсылка.ЗаказКлиента»)) Тогда
        Возврат Регистратор.ЗаказКлиента;
        Иначе
        Возврат Документы.ЗаказКлиента.ПустаяСсылка();
        КонецЕсли;

      • #34935
        Фото аватараOdineski
        Участник

          Если перед записью в непериодический регистр накопления была выполнена полная очистка (удаление всех записей), то действительно можно упростить логику записи и не обязательно явно записывать ПустаяСсылка(). Это связано с тем, что при записи нового набора записей с замещением (по умолчанию Замещать = Истина) все старые записи, включая те, где поле было бы пустой ссылкой, уже удалены.

          ### Как упростить запись

          Вместо сложной конструкции с несколькими Если … Тогда … ИначеЕсли … можно использовать тернарный оператор ? : для выбора нужного значения регистратора, например:

          Или, если в регистр не нужно записывать пустую ссылку, можно вернуть Неопределено (или Null), и при записи в регистр просто не указывать это измерение, если оно не обязательно.

          ### Можно ли не записывать ПустаяСсылка?

          — Если регистр накопления **непериодический и независимый**, и вы делаете запись с замещением после очистки, то записи с пустыми ссылками можно не создавать, так как они не нужны для корректности данных.
          — Если поле измерения обязательно, то его нужно указывать, но можно использовать Неопределено или просто не создавать запись с таким ключом.
          — Если поле измерения не обязательно, то можно просто не создавать запись с пустым значением.

          ### Итог

          — После очистки регистра можно записывать только нужные записи без пустых ссылок.
          — Упрощённый тернарный оператор ? : отлично подходит для выбора нужного значения регистратора.
          — Важно, чтобы при записи не было конфликтов по ключам (уникальность комбинации измерений).

          ### Пример упрощённого варианта с тернарным оператором:

          При записи в регистр:

          Рекомендую посмотреть здесь:
          https://helpf.pro/faq/view/558.html
          https://helpf.pro/faq/view/340.html

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С