Вопрос

Запись пустого значения в поле ссылки (Id)

В бизнес-процессе нужно было обнулить у контрагента поле-ссылку на другого клиента, имеющее тип Id. Для  этого выполнил запись в поле значения Guid.Empty. При этом поле пустым не стало, а в него записалось что-то вроде "00000-000000000-0000-00000".  И все бы ничего, можно и такое значение считать пустой ссылкой. Но при слиянии этого контрагента с другим,  система почему-то автоматически в поле ссылки результирующего контрагента проставила эти нули, а не вполне конкретную ссылку из второго контрагента. При этом не было даже запроса, какую из ссылок выбрать.
Вопрос: как в блоке Изменение данных бизнес-процесса записать в поле ссылки (ID) реально пустое значение?

Нравится

3 комментария

Илья, странно, что у Вас записалось «00000-000000000-0000-00000». Вы уверены, если посмотреть в базе, там тоже так?

Если именно так, то либо на этом поле отключена проверка целостности и в него можно писать любые Guid, либо в справочнике есть запись с Id «00000-000000000-0000-00000» и для системы такое значение не отличается от другого заполненного.

Пишите null

Дело в том, что в языке C# нет понятия NULL - для переменных разных типов NULL выражается по разному:

  1. Для справочных полей это Guid.Empty
  2. Для строковых полей это String.Empty
  3. Для полей с типом «Дата/время» это DateTime.MinValue
  4. Для логических полей «пустого»поля нет (нужно указывать значение false).

Но почему у Вас при вставке Guid.Empty реально в базу попал такой Guid, нужно разбираться. Если поле с ограничением целостности по связям и в справочнике такой записи нет, такого быть не должно.

Показать все комментарии