|
v7: Прямые запросы. | ☑ | ||
---|---|---|---|---|
0
varelchik
22.11.12
✎
15:47
|
Пытаюсь построить структуру справочников и Общего реквизита для все МД.
В моем примере это IDD МОДа. Для справочников все очень просто. Для н=1 По Метаданные.Справочник() Цикл МД=Метаданные.Справочник(н); Идент=МД.Идентификатор; Если МД.Реквизит("IDD").Выбран()=0 Тогда Продолжить; КонецЕсли; ИДРекв=глМетаДата.ИДРеквизитаСправочника(Идент,"IDD"); ИдентСпр=глМетаДата.ИДСправочника(Идент); Запрос.ВыполнитьИнструкцию("insert into СтруктураIDD values('sc"+ИдентСпр+"','id',$ВидСправочника."+Идент+",'sp"+ИДРекв+"')"); КонецЦикла; |
|||
1
varelchik
22.11.12
✎
15:48
|
А вот для Общего реквизита документа чет мозги не доходять.
Для н=1 По Метаданные.Документ() Цикл МД=Метаданные.Документ(н); Идент=МД.Идентификатор; //ИДД=глМетаДата.ИДРеквизитаШапки(Идент,"IDD"); Запрос.ВыполнитьИнструкцию("insert into СтруктураIDD values('_1sjourn','iddoc',$ВидДокумента."+Идент+",'Это общий реквизит')"); КонецЦикла; |
|||
2
varelchik
22.11.12
✎
15:49
|
что мене вставить вместо "Это общий реквизит"
пробовал $ОбщийРеквизит.IDD так ругаеться на усечение данных. У кого есть какие нибудь соображения? |
|||
3
kiruha
22.11.12
✎
15:52
|
Для н=1 По Метаданные.ОбщийРеквизитДокумента() Цикл
|
|||
4
varelchik
22.11.12
✎
15:53
|
Сразу же объясню зачем мне это.
Есть у меня триггер который висит на _1supdts. Надо реализовать механизм автоматического присвоения IDD любоиу из объектов МД. Прилюбом чихе на этой таблицей тригер должен проверить заполнение этого поля и если его нету то присвоить. Со справочниками без проблем, а вот общим реквизитом документа облом. |
|||
5
varelchik
22.11.12
✎
15:54
|
(3) и что мы получим?
мне надо чтобы было поле sp... |
|||
6
Ёпрст
22.11.12
✎
15:59
|
в зависимости от галки отбор у этого реквизита, это либо реквизит Жарнальчика, либо шапки документа(ов)
|
|||
7
Ёпрст
22.11.12
✎
15:59
|
журнальчика
|
|||
8
varelchik
22.11.12
✎
16:01
|
ОбщийРеквизит отбор стоит
|
|||
9
Ёпрст
22.11.12
✎
16:01
|
вообще, взял бы у Андрей_Андреич
готовое решение - регистрация Урибом, выгрузка МОД-ом |
|||
10
Ёпрст
22.11.12
✎
16:03
|
Жур.$ОбщийРеквизит.IDD
|
|||
11
varelchik
22.11.12
✎
16:03
|
Запрос.ВыполнитьИнструкцию("insert into СтруктураIDD values('_1sjourn','iddoc',$ВидДокумента."+Идент+",$ОбщийРеквизит.IDD)");
вот что выдает : State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя столбца "sp9163". |
|||
12
Ёпрст
22.11.12
✎
16:03
|
где Жур - алияс от _1sjourn
|
|||
13
Ёпрст
22.11.12
✎
16:06
|
А так, через (3) + ИДОбъекта
|
|||
14
varelchik
22.11.12
✎
16:06
|
(12)
а вот тута моно трохи по подробнее? |
|||
15
varelchik
22.11.12
✎
16:06
|
аааааааааа
|
|||
16
varelchik
22.11.12
✎
16:08
|
(13) блин от я вася!
Сенкс. Поехал дальше. |
|||
17
varelchik
22.11.12
✎
16:09
|
ИДД=глМетаДата.ИДОбъекта(Метаданные.ОбщийРеквизитДокумента("IDD"));
Для н=1 По Метаданные.Документ() Цикл МД=Метаданные.Документ(н); Идент=МД.Идентификатор; Запрос.ВыполнитьИнструкцию("insert into СтруктураIDD values('_1sjourn','iddoc',$ВидДокумента."+Идент+",'sp"+ИДД+"')"); КонецЦикла; |
|||
18
kiruha
22.11.12
✎
16:32
|
Не проще отслеживать изменения только журнала ?
Зачем цикл по всем документам ? |
|||
19
kiruha
22.11.12
✎
16:34
|
Считай журнал - это один справочник
|
|||
20
varelchik
22.11.12
✎
17:36
|
Спасибо за советы.
Решил сделать проще. ПОвесить тригеры на все Справочники и ЖурналДокументов и забить. |
|||
21
kiruha
22.11.12
✎
18:02
|
Еще вариант только на _1SUIDCTL- хранение максимальных ID по типам, если ID штатно создаются
|
|||
22
kiruha
22.11.12
✎
18:25
|
собственно туда 1С ина пишет при создании нового ID вот логично одновременно и IDD тогда же
И аналогично вставлять TYPEID MAXIDD и брать для автоматического создания IDD |
|||
23
varelchik
23.11.12
✎
12:47
|
(22)хм.
а это идея. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |