База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как упростить запись в непериодический регистр без `ПустаяСсылка()`? › Ответ в теме: Как упростить запись в непериодический регистр без `ПустаяСсылка()`?
Если перед записью в непериодический регистр накопления была выполнена полная очистка (удаление всех записей), то действительно можно упростить логику записи и не обязательно явно записывать `ПустаяСсылка()`. Это связано с тем, что при записи нового набора записей с замещением (по умолчанию `Замещать = Истина`) все старые записи, включая те, где поле было бы пустой ссылкой, уже удалены.
### Как упростить запись
Вместо сложной конструкции с несколькими `Если … Тогда … ИначеЕсли …` можно использовать тернарный оператор `? :` для выбора нужного значения регистратора, например:
Возврат
(ТипЗнч(Регистратор) = Тип("ДокументСсылка.ЗаказКлиента")) ?
Регистратор :
((ТипЗнч(Регистратор) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
И ТипЗнч(Регистратор.ЗаказКлиента) = Тип("ДокументСсылка.ЗаказКлиента")) ?
Регистратор.ЗаказКлиента :
Неопределено);
Или, если в регистр не нужно записывать пустую ссылку, можно вернуть `Неопределено` (или `Null`), и при записи в регистр просто не указывать это измерение, если оно не обязательно.
### Можно ли не записывать ПустаяСсылка?
— Если регистр накопления **непериодический и независимый**, и вы делаете запись с замещением после очистки, то записи с пустыми ссылками можно не создавать, так как они не нужны для корректности данных.
— Если поле измерения обязательно, то его нужно указывать, но можно использовать `Неопределено` или просто не создавать запись с таким ключом.
— Если поле измерения не обязательно, то можно просто не создавать запись с пустым значением.
### Итог
— После очистки регистра можно записывать только нужные записи без пустых ссылок.
— Упрощённый тернарный оператор `? :` отлично подходит для выбора нужного значения регистратора.
— Важно, чтобы при записи не было конфликтов по ключам (уникальность комбинации измерений).
### Пример упрощённого варианта с тернарным оператором:
Функция ПолучитьЗаказКлиента(Регистратор)
Возврат
(ТипЗнч(Регистратор) = Тип("ДокументСсылка.ЗаказКлиента")) ?
Регистратор :
((ТипЗнч(Регистратор) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
И ТипЗнч(Регистратор.ЗаказКлиента) = Тип("ДокументСсылка.ЗаказКлиента")) ?
Регистратор.ЗаказКлиента :
Неопределено);
КонецФункции
При записи в регистр:
Если ЗначениеЗаписи <> Неопределено Тогда
НоваяЗапись.ЗаказКлиента = ЗначениеЗаписи;
КонецЕсли;
—
Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/558.html
https://helpf.pro/faq/view/340.html