|
v7: Как счет с субконто заджойнить? (вьюхи на 1С++) | ☑ | ||
---|---|---|---|---|
0
Новенький_2009
01.08.12
✎
14:09
|
Взгляните на запрос ниже:
Select Справочник_Контрагенты.Наименование Контрагент From ДокументСтроки_Выписка Inner Join dbo._1saccs ПланСчетов On ПланСчетов.ID = ДокументСтроки_Выписка.КоррСчет Left Join Справочник_Контрагенты Справочник_Контрагенты On Справочник_Контрагенты.ID = SUBSTRING(Субконто1 ,7, 9) WHERE ПланСчетов.SCHKOD = ' 60. 1. ' В этом запросе, я заджойнился со справочником контрагентов по данным из субконто1, т.к. точно знаю что это субконто1 именно этого типа. А как узнать с чем джойниться, если условие счета убрать. Из описалова прочитал что в план счетов (_1saccs), в его полях SC(n) хранятся Ид Субконто. Не могу понять, что дальше с айдишниками делать, чтобы узнать к какому справочнику джойниться - чтоб значения субконт вытащить? Некоторые люди писали, что нужно из md'шника получать это соответствие, строить таблицу по ней и уже через нее джойнить. Кто-нибудь может примером поделиться? :) |
|||
1
Ёпрст
01.08.12
✎
14:19
|
А нафига тебе вообще с чем-то джойнится ?
Наименования захотелось ? Просто ссылка на справочник не кошерно ужо ? |
|||
2
Новенький_2009
01.08.12
✎
14:21
|
Да, нужно как минимум вытащить наименование.
|
|||
3
dk
01.08.12
✎
14:31
|
|
|||
4
Новенький_2009
01.08.12
✎
15:06
|
(3) а как это использовать?
|
|||
5
dk
01.08.12
✎
15:13
|
в теории через многоходовую процедуру
1. определить Ид всех справочников 2. определить все нужные субконто 3. подставить в запрос джойны к субконто через связку ид справочника -> вид справочника на практике не пробовал |
|||
6
Новенький_2009
01.08.12
✎
15:18
|
(5) спасибо :)
|
|||
7
viktor_vv
01.08.12
✎
15:27
|
Только непонятно откуда в _1saccs возьмутся ИД элементов справочника контрагенты. Ты наверное хотел из проводок данные тянуть ?
|
|||
8
viktor_vv
01.08.12
✎
15:28
|
(7)+ А сорри, ты субконто из выписки тянешь.
|
|||
9
Новенький_2009
01.08.12
✎
16:10
|
(8) ты правильно понял - из выписки. Я на 7.7 не программирую. Я показал - кусок портянке на скуле, которую я дергаю при обмене. Конечно, мне в самом запросе нужно как-то разрулиться. Ну видимо, универсально не получится. Заджойнюсь по тем счетам, которые участвуют в обмене со всеми возможными для этих счетов субконтами и через case видимо уже разрулюсь.
Просто хотелось какого-то более красивого и простого кода :) |
|||
10
viktor_vv
01.08.12
✎
16:16
|
А универсально и не получится, так как джойнить надо разные таблицы справочников или документов. Ну разве что динамически формировать запрос. И то как-то слабо представляю.
На вот, может пригодится всякие ИД справочников, видов субконто. Процедура Сформировать() глМетадата = СоздатьОбъект("MetaDataWork"); ласСчет = СоздатьОбъект("Счет"); ласСчет.ВыбратьСчета(); Пока ласСчет.ПолучитьСчет() = 1 Цикл лТекСчет = ласСчет.ТекущийСчет() ; Для i = 1 по лТекСчет.КоличествоСубконто() Цикл лВидСубконто = лТекСчет.ВидСубконто(i); лМетаВидСубконто = Метаданные.ВидСубконто(лВидСубконто.Идентификатор()) ; лИДВидаСубконто = глМетадата.ИДОбъекта(лМетаВидСубконто) ; лТИпЗначенияСубк = лМетаВидСубконто.Тип ; лсВидЗначения = ""; лИдВидЗначения = 0; Если (лТИпЗначенияСубк = "Справочник") Тогда лсВидЗначения = лМетаВидСубконто.Вид ; лИдВидЗначения = глМетадата.ИДСправочника(лсВидЗначения); ИначеЕсли (лТИпЗначенияСубк = "Документ") Тогда лсВидЗначения = лМетаВидСубконто.Вид ; лИдВидЗначения = глМетадата.ИДДокумента(лсВидЗначения); КонецЕсли ; Сообщить(""+лТекСчет + " : "+ лВидСубконто + " : "+лИДВидаСубконто + " : "+лТИпЗначенияСубк + " : "+лсВидЗначения + " : "+лИдВидЗначения); КонецЦикла; КонецЦикла; |
|||
11
Новенький_2009
01.08.12
✎
16:23
|
спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |