![]() |
|
v7: Реквизит типа "Документ" в таблицах SQL. Необходимо получить реквизиты по ссылке | ☑ | ||
---|---|---|---|---|
0
Vladal
29.10.15
✎
12:34
|
Есть семёрочная база на SQL, в которой всё написано на прямых запросах.
Есть некая программа для построения отчетов, в которой я читаю данные этой семёрочной базы из SQL. Трудность возникла при получении представления вид документа, потому что в таблице только хранится внутренний ИдДокумента, а номер и дата где-то ещё. Но эту задачу я уже решил. Всё вроде бы ничего, но у документа РасходнаяНакладная есть реквизит ДокументОснование с типом Документ и и в SQL это выглядит так: |select top 1 | РНшапка.ИдДокумента, | РНшапка.ВидОтгрузки, | РНшапка.ДокОсн, | РНшапка.Клиент, | --Клиент.Наименование as Клиент_Представление, | ЖурналРН.НомерДок, | --Сотрудник.Наименование as Сотрудник_Представление, | Соответствие.Представление + ' № ' + RTRIM(LTRIM(ЖурналРН.НомерДок)) + ' от ' + CONVERT(nchar(10), CAST(LEFT(ЖурналРН.Позиция, 8) AS DateTime), 104) AS Документ_Представление |from | ДокументШ_РасходнаяНакладная as РНшапка (nolock) | left join Справочник_Клиенты as Клиент (nolock) on Клиент.ИдЭлемента = РнШапка.Клиент | left join Журнал as ЖурналРН (nolock) on ЖурналРН.ИдДокумента = РНшапка.ИдДокумента | left join Справочник_Сотрудники as Сотрудник (nolock) on Сотрудник.ИДЭлемента = ЖурналРН.Автор | left join СоответствияДокументов as соответствие (nolock) on ЖурналРН.ВидДокумента = Соответствие.ИдВидаДокумента Результат: |ИдДокумента ВидОтгрузки ДокОсн Клиент НомерДок Документ_Представление |----------- ----------- ------------- --------- -------------- ------------------------------------------ | M80GX 27E M M7IEW 2PXM007 ХВ-1116371 Расх. накладная № ХВ-1116371 от 26.10.2015 Как получить видэтого ДокОсн чтобы сформировать по нему представление и доставть реквизиты этого документа-основания? |
|||
1
Vladal
29.10.15
✎
12:36
|
Вот как по строке " M M7IEW " найти нужный а) вид документа и б) прочесть из соответствующей таблицы его реквизиты?
|
|||
2
МихаилМ
29.10.15
✎
15:12
|
36 ричный код перевести в 10-ный . узнаете номер таблицы.
|
|||
3
ADirks
29.10.15
✎
15:18
|
Например:
Функция стрВидДок(МетаДок) Имя = МетаДок.Идентификатор; Если Имя = "Заявка" Тогда Возврат "'Заказ'"; ИначеЕсли Имя = "ЗаказНаПроизводство" Тогда Возврат "'Заказ АХО'"; ИначеЕсли Имя = "Заказ" Тогда Возврат "CASE (SELECT $Док_Заказ.ВидЗаказа FROM $Документ.Заказ Док_Заказ WHERE Док_Заказ.IDDoc = жДок.IDDoc) | WHEN 0 THEN 'Заказ поставщику' | WHEN 1 THEN 'Заказ поставщику с\п' | WHEN 2 THEN 'Заказ услуг стор. орг.' | WHEN 3 THEN 'Заказ услуг произв. хар-ра' | ELSE 'Заказ услуг (доп. расх.)' |END"; ИначеЕсли Имя = "ЗаявкаСнабжению" Тогда Возврат "CASE (SELECT $Док_ЗаявкаСнабжению.ВидЗаявки FROM $Документ.ЗаявкаСнабжению Док_ЗаявкаСнабжению WHERE Док_ЗаявкаСнабжению.IDDoc = жДок.IDDoc) | WHEN $Перечисление.ВидыЗаявокСнабжению.Информационная THEN 'Инф.' | WHEN $Перечисление.ВидыЗаявокСнабжению.ИнформационнаяЦены THEN 'Инф. (цены)' | WHEN $Перечисление.ВидыЗаявокСнабжению.ПриобретениеТМЦ THEN 'Приобретение ТМЦ' | WHEN $Перечисление.ВидыЗаявокСнабжению.ПередачаВПереработку THEN 'Передача в переработку' | ELSE 'Заявка снаб.' |END"; КонецЕсли; Возврат "'"+МетаДок.Представление()+"'"; КонецФункции стрПредставлениеВида = "CASE IDDocDef"; Для нДок = 1 По Метаданные.Документ() Цикл МетаДок = Метаданные.Документ(нДок); стрПредставлениеВида = стрПредставлениеВида + " | WHEN $ВидДокумента."+МетаДок.Идентификатор+" THEN "+стрВидДок(МетаДок); КонецЦикла; стрПредставлениеВида = стрПредставлениеВида + " |END"; |
|||
4
Vladal
29.10.15
✎
15:42
|
(2) Ага. Спасибо. Что-то dbo.char36toint()
(3) Нет, я 7-ку никак не открываю. Метаданные в Конфигураторе подсматриваю, а так только читаю таблицы из её базы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |