Версия для печати темы (http://pro1c.org.ua/index.php?s=c491a01e4cf00dacae61590f73d65565&showtopic=38012)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Можно ли создать один реквизит, с двумя типами

Автор: Gigi 19.06.17, 14:09

Здравствуйте!
Меня интересует один вопрос, который может не очень простой и обычный.
Допустим у нас есть справочник и документ. Последний имеет ссылку, на какой ни-будь реквизит справочника. И допустим пользователь один элемент справочника, на который ссылался созданный документ пометил, а потом удалил.
Не для кого не секрет, что в таком случае, происходит следующее:
Во первых: после удаления в реквизите ссылки документа который ссылался на удаленный элемент справочника появляется надпись: «<Объект не найден>…..»
Во вторых: допустим код удаленного элемента: «000000055»….если после этого, создать новый элемент то, система может повторить этот же код опять. И это не совсем устаивает . Нужно, что бы созданный код никогда больше не повторялся. Вне зависимости от удаления или создания нового элемента.
Поэтому главный вопрос.
Нельзя ли сделать следящее.
Что бы реквизит оставался ссылкой пока элемент ссылки не удален. Но как только элемент подвергся удалению, вместо надписи: «<Объект не найден>…..», что бы реквизит приобретал другой тип. Тип строки.
Ведь обычно чисто по СТАНДАРТУ на один реквизит один тип. А нужно, что бы был один реквизит, с двумя типами.
И что бы значение реквизита оставалось, а тип менялся в зависимости от того или иного действия.
Есть ли такая возможность в платформе 1С и можно ли это сделать?
Если да то, как?
Буду признателен!

Автор: Bernet 19.06.17, 14:16

Gigi @ Сегодня, 15:09 * ,

Цитата
И что бы значение реквизита оставалось, а тип менялся в зависимости от того или иного действия.

Стандартного такого механизма нет

1С поддерживает составные реквизиты. Если вам надо чтобы например реквизит был одновременно и строкой и ссылкой на документ, то можно в реквизите поставить галочку "Составной тип" и выбрать оба типа.

Вопрос в том, а нужно ли то что вы хотите сделать, для чего?
Удаление объекта на который есть ещё где-то ссылка априори не есть правильно! Это нарушает целостность базы данных и в принципе идет в расход с идеологией баз данных в целом.

Скажем так, то что вы хотите сделать в принципе возможно. Можно указать составной тип и при удалении менять тип с ссылки на строку, но я лично считаю это неправильным.

Автор: Gigi 19.06.17, 14:23

Bernet @ Сегодня, 14:16 * ,

Цитата(Bernet @ 19.06.17, 14:16) *
Удаление объекта на который есть ещё где-то ссылка априори не есть правильно! Это нарушает целостность базы данных и в принципе идет в расход с идеологией баз данных в целом.

Согласен! Только это 20-ти пользователям не объяснишь smile.gifsmile.gif.
БЕСПОЛЕЗНО!
А что если и вовсе просто запретить удаление?
Дело в том, что по умолчанию можно удалять. Без запрета. Правда до этого нужно пометить. После чего ссылки удаляются автоматический ... должно так...
Но почему то, я этот вопрос не пойму. Тестил... вроде пометил, и потом удалил. А реквизит ссылки в документе все равно написал: "<Объект не найден>"
Блиин! Почему?

Автор: Bernet 19.06.17, 14:28

Gigi @ Сегодня, 15:23 * ,
В типовых конфигурациях непосредственное удаление без проверки на наличие ссылок ЗАПРЕЩЕНО.
Это можно настроить правами, в правах на всех объекты у обычных пользователей забирайте галочку "Интерактивное удаление помеченных" - тогда пользователь сможет максимум пометить на удаление. Непосредственно удалить он не сможет. У него не будет в меню красного крестика.

Автор: Vidocq05 19.06.17, 14:31

Цитата(Bernet @ 19.06.17, 15:16) *
я лично считаю это неправильным

Поддерживаю. Запретить пользователям непосредственное удаление да и все

Автор: Gigi 19.06.17, 14:34

Bernet @ Сегодня, 14:28 * ,

Цитата
В типовых конфигурациях непосредственное удаление без проверки на наличие ссылок ЗАПРЕЩЕНО.
Это можно настроить правами, в правах на всех объекты у обычных пользователей забирайте галочку "Интерактивное удаление помеченных" - тогда пользователь сможет максимум пометить на удаление. Непосредственно удалить он не сможет. У него не будет в меню красного крестика.

Отлично!
Другое дело ... а то думал ... в SQL просто не работал ... видимо там тоже не желательно что либо удалять
Ладно! Пока не знаю на счет галочки на
Цитата(Bernet @ 19.06.17, 14:16) *
"Составной тип"

насколько применим, но надеюсь не разочарует.
Ладно! Спасибо!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua