gifts2017

Изменение ОБЫЧНОГО объекта на ПРЕДОПРЕДЕЛЕННЫЙ

Опубликовал Игорь Колодин (KilloN) в раздел Программирование - Инструментарий

Часто требуется использовать в коде конкретные (существующие) элементы справочников, плана видов характеристик и др.
Причем удобнее всего, если бы они вдруг стали предопределенными = ))

Использовать "НайтиПоКоду" уже даже не смешно, особенно когда, например, справочник с длиной кода 0.Wink 

Поэтому, по моему скромному мнению, предпочтительнее всего использовать предопределенные элементы, после чего и появилась эта небольшая обработка.

Предыстория:

Когда давным давно задавался этим вопросом, что я только не читал на разных форумах!
Например:
1) Создавать новую сущность и все хранить в константах.
2) Создавать предопределенный элемент, копировать все реквизиты, а затем  обработкой "ПоискИЗаменаЗначений" менять обычный на предопределенный, в конечном итоге удаляя первичный элемент.
3) И даже наткнулся на совсем
удивительную ВЕЩЬ, в которую даже не стал вникать = )))

Далее я приведу описание простенькой обработки для работы с предопределенными данными (может, кому понадобится):

1) В конфигураторе у объекта метаданных добавляем нужные Предопределенные элементы:
 

2) Если у объекта метаданных изменить свойство "Обновление предопределенных данных" на "Не обновлять автоматически", то при обновление "Конфигурации БД" НЕ БУДУТ СОЗДАНЫ предопределенные элементы. Изменять это свойство или нет, решать Вам.



3) Запускаем обработку. 

При выборе редактируемой ссылки автоматически в список выбора "Имя предопределенных данных" загружаются все возможные варианты из метаданных этого объекта. Обработка изменяет (если стоит галочка, то в режиме "ОбменДанными.Загрузка = Истина") реквизит "ИмяПредопределенныхДанных" у редактируемого объекта, а в случае, если уже существует другой объект с таким же именем ПД, то оно очищается и объект становится обычным.

П.С. Работает в управляемой и обычной форме, но тестировал в 8.3.7 в режиме совместимости 8.3.6 = ))

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
СделатьОбычныйЭлементПредопределенным
.epf 11,47Kb
07.11.15
4
.epf 1.1 11,47Kb 4 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Xer shi (Xershi) 07.11.15 15:54
Думаю такой трюк до 8.3.6 не прокатит.
2. Xer shi (Xershi) 07.11.15 15:55
Или тут идет речь, что в базе уже заведен через конфигуратор предопределенный элемент, а вы просто меняете ссылки ненужного элемента на предопределенный?
3. Игорь Колодин (KilloN) 07.11.15 22:19
(2) Xershi, Да именно))
Я делаю так:
1) Добавляю предопределенные элементы
2) Меняю свойство "Обновление предопределенных данных" на "Не обновлять автоматически", чтобы элементы не создавались при обновлении.
3) Делаю обновление и использую обработку.
4. Xer shi (Xershi) 08.11.15 13:13
(3) KilloN, так а смысл, чтобы уникальность поправить в любой момент после обновления, а не сразу?
5. Xer shi (Xershi) 08.11.15 13:22
Хотя посмотрел на 8.3.5 такая штука есть. А вот на 8.2.18 нет.
6. Игорь Колодин (KilloN) 08.11.15 13:33
(4) Xershi, Очень часто выясняется, что какой либо элемент необходимо использовать в коде только через продолжительное время.
К тому же ты видел как работает в торговле например план видов характеристик "Дополнительные реквизиты и сведений" - я обалдел, деже заполнив все реквизиты по аналогии там все равно чего то не хватало, потому что в другом справочнике не было добавлено информации о новом элементе. Поэтому даже если я добавляю, абсолютно новый предопределенный элемент, то гораздо проще создать обычный, чтобы в нем все заполнелось как НАДО, а уже потом сделать его предопределенным.))
7. Игорь Колодин (KilloN) 08.11.15 13:36
(5) Xershi, Я посмотрел, на 8.3.6 в режиме совместимости 8.2 не работает((. Вообще нет такого реквизита "ИмяПредопредленногоЭлемента"
8. Xer shi (Xershi) 08.11.15 15:45
(6) KilloN, для юзера соглашусь это обработка будет очень полезна. Для программиста я бы сказал просто познавательная штука.
9. Игорь Колодин (KilloN) 09.11.15 09:30
(8) Xershi, Ты знаешь компании, где юсеры ползают в конфигуратор, кроме как сделать копию?)))
10. Konstantin Iaremchuk (avto1c) 09.11.15 10:04
Если с обновлением приходит ещё один предопределённый элемент, а предопределённые данные не обновляются автоматически, что тогда?
11. Xer shi (Xershi) 09.11.15 10:13
(9) KilloN, назвать не назову, но такие есть и их можно даже на ИС встретить.
12. Игорь Колодин (KilloN) 09.11.15 11:46
(10) avto1c, При обмене нужно поставить не "взять из файла", а объединить с приоритетом из ... Если я выбрал из файла то он не затирает мои предопределенные)))
13. Игорь Колодин (KilloN) 09.11.15 11:57
(11) Xershi, Я знал бухгалтера, которая сама конфигурацию исправляла как ей нужно в 7.7. После перехода на 8-ку привычки она не изменила. Несколько часов ошибки после нее исправлял))
14. Роман Ложкин (webester) 09.11.15 15:20
Когда давным давно задавался этим вопросом, что я только не читал на разных форумах!

Вот этого не читали http://infostart.ru/public/275145/ ? по моему ответы там вполне исчерпывающие на ваш вопрос.
15. Игорь Колодин (KilloN) 09.11.15 16:14
(14) webester, Да этого не читал))

Когда я искал похожие публикации, то в поиске точно я точно не вводил "НайтиПоКоду" или "НайтиПоНаименованию", а что то похожее на мое наименование публикации.

После этого удаляем тот Рубль, который стал нам не нужен.

Правда в статье я не нашел ничего про свойство "Обновление предопределенных данных".
16. Konstantin Iaremchuk (avto1c) 10.11.15 10:13
(12) KilloN, в статье
при обновление "Конфигурации БД" НЕ БУДУТ СОЗДАНЫ предопределенные элементы

Дополни статью, как все таки добавляются предопределённые элементы.
17. Игорь Колодин (KilloN) 10.11.15 11:58
(16) avto1c, Чем у меня в Торговле не добавляются если свойство "Обновление предопределенных данных" в "Не обновлять автоматически".
А ты где проверял?)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа