8.х Вопрос за хрнилище

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем andrenko, 14 сен 2010.

  1. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Имеется элемент справочника, а в нем реквизит хранилище. Необходимо его (элемент) удалить. Достаточно ли просто его удалить, или сначала необходимо реквизиту присвоить значенеи неопределено ?
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Если это просто реквизит типа ХранилищеЗначения, тогда пишите туда пустое значение, ну что-то вроде этого
    МойРеквизитХранилища = Новый ХранилищеЗначения;
    Если же это ссылка на справочник доп информации, тогда его надо найти в справочнике и пометить на удаление, а в свой реквизит записать пустую ссылку справочника.
  3. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    а к чему приведет удаление элемента справочника без очистки реквизита хранилище?
  4. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    К пометке на удаление и запрету на удаление при попытки учистки помеченных. Режим непосредственного удаления не рассматривается.
  5. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    я имею ввиду ЭлементСпарвочника.ПолучитьОбъект().Удалить();

    будет ли при этом корректно очищен реквизит Хранилище?
  6. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    При этом будет полностью удален элемент справочника. Да, при этом реквизит Хранилище(как впрочем и все остальные реквизиты) будет очищен.

    Но:
    1. Во первых, если требуется только очистка хранилища то полное удаление элемента справочника - это перебор.
    2. Удалить() - удаляет непосредственно, т.е. без проверки на ссылочную целостность. Будьте готовы, что после такой практики в базе появятся вот такие "чудо" ссылки: <Объект не найден> (82:05dbe824-a4c6-11dd-bf56-00145e3710ab)
  7. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Да удаляет полностью, при наличии соответствующих прав и без контроля ссылочной целостности базы. Как и говорит мой прерыдущий пост.
    А Вы еменно этим режимом и пытаетесь воспользоваться, что Вам крайне не рекомендую делать, если не хотите наделать ошибок в ссылках реляционных таблиц. Как вариант можете самостоятельно выполнить поиск всех ссылок и, если их нету, удалить, но у Вас должны бать установлены соответствующие права.
  8. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Теоретически может случиться и трындец.
    Когда мы храним ссылку на некий объект (справочник/документ) - то в БД храниться IDшник объекта (в IDшнике "зашит" тип и вид объекта Документ.ПКО например в кодированном виде)
    Когда вы удаляете объект напрямую, без проверки ссылок (кстати, а разве проверка ссылочной целостности просматривает то, что лежит в "Хранилище значения"?) вы оставляете повисшие "хвосты" - т.е. IDшник в поле есть, да вот только записи в соотв.таблице с таким ID нету (это и есть <Объект не найден> (82:05dbe824-a4c6-11dd-bf56-00145e3710ab) )

    НО! Т.к. момент назначения ID новым записям таблицы нигде явным образом не задокументирован, и мы не знаем как точно назначается этот ID в 1С (не исключенно что это делается по разному для файловой, SQLшной, постгишной и ДБ2шных баз данных). Поэтому, мы не можем исключить возможности, что ID когда то принадлежавший удаленной записи не будет назначен вновь новой записи, и тогда ссылки на удаленого Иванова ВНЕЗАПНО превратяться в ссылки на вполне себе неудаленого Петрова
  9. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    1.
    Нет не проверяется, однако это может быть элементом справочника доп информации, в котором лежит объект, а вот его мы проверяем.
    2.
    Таковая ситуация маловероятно если верить механизмам RUID, или как её ещё назвала Microsoft, предварительно её украв у разаработчика, GUID
    RUID - Вселенский уникальный идентификатор
    GUID - глобальный уникальный идентификатор
  10. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    спасибо за ответы!
    Объясню ситуацию подробнее...
    Речь идет о справочнике входящая почта и подчиненном ему - аттачи. В атааче хранятся аттач:). Собственног говоря, посте обработки письма, само письмо уже не нужно и его нужно удалить. Оттуда и вопрос о поведении хранилища.
  11. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Да, а конфигурация "Управление распределенными письмами" :angry:
  12. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    типа:)
  13. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Это то понятно, но это то понятно для случая когда база на всяких там MS SQLях, а в ситуациях постгри и прочих оракл (8.2 наступает) и дб2?
    И еще, а где то 1Совщики объявляли что они применяют именно эти механизмы? Что то я не встречал таких упоминалок. А раз незадокументированно => к исполнению не обзятельно, и кто знает может при очередном релизе (уже для 8.2) это возьмет, и "стрельнет".



    Ежели ХРАНИЛИЩИЕ - реквизит справочника ПИСЬМА, то хранилище вычиститься в момент физического удаления элемента ПИСЬМО из справочника.

    Если же письмо будет только помеченно на удаление - то хранилище заполненным остается.

    Тут либо в момент удаления занулять хранилища (теряя возможность востановить удаленное письмо), либо регулярно чистить БД (если удаление элемента идет не напрямую, иначе - не стоит и напрягаться... кроме ссылок)
  14. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    1.
    Что именно у Вас письмо, я же не знаю, а Вы не уточняете, и не уточняете где лежат влажения письма. Но принцип Вам описали.
    2.
    Посмотрите на регистры обмена, там прописаны гуиды, их невооруженным глазом видно.

Поделиться этой страницей