Имя: Пароль:
1C
1С v8
Как правильно сделать реквизит составного типа? Пообъектно или Все документы?
0 Vladal
 
07.07.16
18:42
Привет. Абстрактная задача.
На форме есть реквизит составного типа, содержащий несколько видов документов.
Как бы правильно сделать:
- каждый раз при добавлении нового вида документа в алгоритм обработки добавлять этот вид в состав реквизита;
- указать "Документ ссылка", не заморачиваясь по видам?

Минус первого способа - помнить "а не имеются ли где у нас реквизиты, в состав которых надо добавить этот новый объект", и ловить ошибку выполнения "Поле агрегатного объекта не обнаружено".

Минусы второго хотелось бы узнать, как он физически хранится в базе и на что это может повлиять.
1 Fragster
 
гуру
07.07.16
18:59
при обращении к реквизиту  реквизита через точку в запросе будут прилепляться все возможные таблицы.
при удалении объекта метаданных будет проводиться реструктуризация таблицы с реквизитом, в составе которого есть тип удаляемого объекта и т.п.

чем более строгое ограничение типа - тем лучше.
2 Garykom
 
гуру
07.07.16
19:03
Для задачи если нужно хранить ссылку на документ лучше храни просто УИД строковый и "тип метаданных" в 2 реквизитах.
3 Garykom
 
гуру
07.07.16
19:05
(2)+ Или потом со ссылками можно огрести невозможность полного удаления по перекрестным.

Вот если требуется как раз "невозможность удаления" для "контроля целостности" данных то ссылки и уже смотря сколько видов типов доков будет.

1-2 можешь и перечислить, а если предполагается увеличение то просто ДокументСсылка и код для "ограничения выбора".
4 Vladal
 
07.07.16
19:35
(1) точно. запамятовал, теперь вспомнил.
(2) по-моему так в скуле это и организовано.

Но мне не хранить эту ссылку, а на форму передавать параметр, что-то типа

ОткрываемаяФорма.ДокОбъект = ЭтотОбъект;
ОткрываемаяФорма.Открыть();

И на форме ЭтотОбъект и есть реквизит составного типа.
5 Vladal
 
07.07.16
19:39
И если я забуду в состав этого реквизита включить новый вид документа, то ДокОБъект = Неопределено со всеми вытекающими.

Всё. Теперь всё стало понятно. Спасибо.
6 Garykom
 
гуру
07.07.16
19:41
(4) Если УФ то в консерваториях что то не то ))
7 Vladal
 
07.07.16
19:45
(6) в УПП на обычных формах
8 Vladal
 
07.07.16
19:45
причем типовой механизм, в примере я упростил его.
9 Cyberhawk
 
07.07.16
21:49
Определяемый тип тебе в помощь
10 Vladal
 
21.07.16
12:47
(9) Определяемый тип программно?
Речь об элементе на форме обработки.
11 Vladal
 
21.07.16
12:51
(9) Т.е. программно создать массив типов и потом его назначить как список доступных типов поля ввода? Хороший вариант.

Но я о том, что при смене алгоритмов, или какой еще логики, надо будет прописать и тип этого реквизита.
Например, раньше эта обработка вызывалась для документов "Ввод в эксплуатацию ОС", "Инвентаризация ОС", "Модернизация ОС" и в модуле вызова заполнялись реквизиты вызываемой формы:

Форма.ДокументОбъект = ЭтотОбъект;
Форма.ДокументСсылка = Ссылка;

А теперь эту форму надо вызвать и в новых видах документов: по НМА. Вот и вопрос - вручную проставлять флажки в свойствах составного реквизита или просто проставить групповой флажок "ДокументОбъект".
12 Cyberhawk
 
21.07.16
13:23
(10) Я про объект конфигурации "Определяемый тип"
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.