Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Получение вида из $ВидДокумента (число прочтений - 29015 )
U_zer
Экс-Участник


Получение вида из $ВидДокумента
02. Июня 2006 :: 06:06
Печать  
Всем привет.

В запросе присутствует следующее:

Max(j.iddocdef) as Док_вид

Так вот, при обходе результатов запроса, в этой колонке стоят числа.

Как вместо этих  чисел получить строку с видом документа?
Повторюсь. На этапе ОБХОДА результатов запроса.
  
Наверх
 
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #1 - 02. Июня 2006 :: 06:27
Печать  
А сам документ ты случайно в выборке не получаешь? Улыбка
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Получение вида из $ВидДокумента
Ответ #2 - 02. Июня 2006 :: 06:55
Печать  
Канэшна получаю! Но если бы все было так просто, я бы и не спрашивал.
Мне нужно построить отчет типа:

Вид документа
     Документы ....

А у меня получается

Цыфири
     Документы ....

Некузяво.
  
Наверх
 
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #3 - 02. Июня 2006 :: 07:01
Печать  
Перед обходм сформируй ТЗ вида iddocdef | ИмяВКонфигураторе
через обход метаданных и метод GetDocID классса MetaDataWorks
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Получение вида из $ВидДокумента
Ответ #4 - 02. Июня 2006 :: 07:05
Печать  
Значит прямого перевода нет, а то я засомневался, типа, быть такого не может ...

Допонял! Спасибо!
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #5 - 02. Июня 2006 :: 07:05
Печать  
Про это уже несколько раз говорилось: ну нету напрямки такой возможности!
Варианты обхода:
1) Сделать на серваке табличку соответствий "циферок" строковым идентификаторам видов и заполнять ее периодически (после реорганизации конфигурации)
2) Собирать текст запроса циклом:
Код
Выбрать все
ТекстОпределенияВида = "CASE ВидДокументаЧислом";
Для Сч = 1 По Метаданные.Документ() Цикл
    Ид = Метаданные.Документ(Сч).Идентификатор;
    ТекстОпределенияВида = ТекстОпределенияВида + "
        |WHEN $ВидДокумента." + Ид + " THEN '" + Ид + "'";
КонецЦикла;
ТекстОпределенияВида = ТекстОпределенияВида + "
    |ELSE '' END AS ВидДокументаВКонфигураторе"; 

  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #6 - 02. Июня 2006 :: 07:05
Печать  
S.W.A.T. писал(а) 02. Июня 2006 :: 07:01:
Перед обходм сформируй ТЗ вида iddocdef | ИмяВКонфигураторе
через обход метаданных и метод GetDocID классса MetaDataWorks

человека интересует именно в запросе...
кстати я бы тоже не отказался узнать в какой из таблиз есть строковое соответсвие "иддокдфу", допустим наименования объектов получить то непроблема, а вот строковые идентификаторы фида хотелось  бы, пока не было времени расковырять эту проблему, или оно нигде не хранится кроме как в MD?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #7 - 02. Июня 2006 :: 07:08
Печать  
Цитата:
...или оно нигде не хранится кроме как в MD?

думаю, что это наиболее вероятно
  
Наверх
 
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #8 - 02. Июня 2006 :: 07:14
Печать  
Цитата:
S.W.A.T. писал(а) 02. Июня 2006 :: 07:01:
Перед обходм сформируй ТЗ вида iddocdef | ИмяВКонфигураторе
через обход метаданных и метод GetDocID классса MetaDataWorks

человека интересует именно в запросе...
кстати я бы тоже не отказался узнать в какой из таблиз есть строковое соответсвие "иддокдфу", допустим наименования объектов получить то непроблема, а вот строковые идентификаторы фида хотелось  бы, пока не было времени расковырять эту проблему, или оно нигде не хранится кроме как в MD?


Да? Я наверно читать разучился
Цитата:
Повторюсь. На этапе ОБХОДА результатов запроса.
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Получение вида из $ВидДокумента
Ответ #9 - 02. Июня 2006 :: 07:43
Печать  
Да ладно, чего я, совсем тормоз чтоли, если бы мне это в запросе надо было,
я бы написал нечто типа
case when j.iddocdef = $ВидДокумента.Перемещение then 'Перемещение' else '' end

Тока так делать ненужно, потому что есть iddocdef.

А загнать соответствие можно и в СписокЗначений. Так даже быстрее.

Сп.Установить(MW.GetDocID(Метаданные.Документ(К)), Метаданные.Документ(К).Идентификатор)

А потом прямо в ячейке таблицы Сп.Получить(Цыфирь) и все дела.
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #10 - 02. Июня 2006 :: 08:11
Печать  
сорри, неверно прочел тему...
на этапе обхода ваще проще простого Док.Вид()
и все, даже 1С++ не нужно привлекать, документы то ты получаешь...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #11 - 02. Июня 2006 :: 08:15
Печать  
Цитата:
сорри, неверно прочел тему...
на этапе обхода ваще проще простого Док.Вид()
и все, даже 1С++ не нужно привлекать, документы то ты получаешь...


ИМХО, в запросе получются итоги по видам документов  и обход идет по группировкам, так что просто Док.Вид() будет использовать неудобно
  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #12 - 02. Июня 2006 :: 08:17
Печать  
S.W.A.T. писал(а) 02. Июня 2006 :: 08:15:
ИМХО, в запросе получются итоги по видам документов  и обход идет по группировкам, так что просто Док.Вид() будет использовать неудобно

хо за 2 сек. те приведу цикл с удобно и именно с Док.Вид()
без всяких лишнихъ там заполнений и соответсвий...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #13 - 02. Июня 2006 :: 08:18
Печать  
Цитата:
S.W.A.T. писал(а) 02. Июня 2006 :: 08:15:
ИМХО, в запросе получются итоги по видам документов  и обход идет по группировкам, так что просто Док.Вид() будет использовать неудобно

хо за 2 сек. те приведу цикл с удобно и именно с Док.Вид()
без всяких лишнихъ там заполнений и соответсвий...


Цикл в студию Улыбка Входные данные:
ТЗ вида:     Док_вид  |   Док   | Сумма
                  1528      |  NULL   | 1000
                  1528      |  Док1   | 300
                  1528      |  Док2   | 700
                  1347      |  NULL   | 2000
                  1347      |  Док3   | 1800
                  1347      |  Док4   | 200
  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #14 - 02. Июня 2006 :: 08:23
Печать  
пажаласта, но это эскиз моих всех подобных циклов, условие что ТЗ уже подготовлена и она отсортирована как нада, именно типа по IDDOCDEF:
Код
Выбрать все
ВидДока="";
ТЗ.ВыбратьСтроки()
Пока ТЗ.ПолучитьСтроку()=1 Цикл
ТекВид=ТЗ.Док.Вид();
Если ТекВид<>ВидДока Тогда
Таб.ВывестиСекцию("ВидДокумента");
КонецЕсли;
Таб.ВывестиСекцию("Документ");
КонецЦикла; 


думаю идея понятна...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
U_zer
Экс-Участник


Re: Получение вида из $ВидДокумента
Ответ #15 - 02. Июня 2006 :: 08:23
Печать  
Да! И еще чтобы итоги были по видам документов!
  
Наверх
 
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #16 - 02. Июня 2006 :: 08:24
Печать  
Цитата:
пажаласта, но это эскиз моих всех подобных циклов, условие что ТЗ уже подготовлена и она отсортирована как нада, именно типа по IDDOCDEF:
Код
Выбрать все
ВидДока="";
ТЗ.ВыбратьСтроки()
Пока ТЗ.ПолучитьСтроку()=1 Цикл
ТекВид=ТЗ.Док.Вид();
Если ТекВид<>ВидДока Тогда
Таб.ВывестиСекцию("ВидДокумента");
КонецЕсли;
Таб.ВывестиСекцию("Документ");
КонецЦикла; 


думаю идея понятна...


НИЗАЧОТ Улыбка Чиатем входные данные Улыбка)

  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #17 - 02. Июня 2006 :: 08:24
Печать  
объясни мне плиз, как у тя поле Док может иметь значение NULL, но при этом имеет значение IDDOCDEF?  Подмигивание
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Получение вида из $ВидДокумента
Ответ #18 - 02. Июня 2006 :: 08:25
Печать  
U_zer
Еще не забудь про ИТ, можно потавить индекс на док_вид, перебрать и заполнить расшифровку.
А стандартный док.Вид() может оказаться более тормозным, присмотрись.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #19 - 02. Июня 2006 :: 08:25
Печать  
Цитата:
объясни мне плиз, как у тя поле Док может иметь значение NULL, но при этом имеет значение IDDOCDEF?  Подмигивание


Эхххх, BOL тебе в руки Подмигивание
Даю наводку GROUP BY ... WITH ROLLUP Улыбка
  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #20 - 02. Июня 2006 :: 08:25
Печать  
Цитата:
Да! И еще чтобы итоги были по видам документов!

а что у тебя их нет чтоли?
я же сказал ТЗ уже подготовлена, явсегода rollup "подымаю" наверх, а если это не нужно то итоги себе спокойно сидят внизу...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #21 - 02. Июня 2006 :: 08:28
Печать  
S.W.A.T. писал(а) 02. Июня 2006 :: 08:25:
Цитата:
объясни мне плиз, как у тя поле Док может иметь значение NULL, но при этом имеет значение IDDOCDEF?  Подмигивание


Эхххх, BOL тебе в руки Подмигивание
Даю наводку GROUP BY ... WITH ROLLUP Улыбка

ты шо ваще меня за ламера держишь?
если с группировками, кстати у меня уже есть пост по этому поводу, то тогда нужно более "грамотное" условие, с проверкой на пустое значение, в 1С оно не NULL, а пустое значение, короче я Вам дал свой алгоритм как я это делаю, не нравится, делайте по своему, кто Вам мешает то?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #22 - 02. Июня 2006 :: 08:28
Печать  
Цитата:
Цитата:
Да! И еще чтобы итоги были по видам документов!

а что у тебя их нет чтоли?
я же сказал ТЗ уже подготовлена, явсегода rollup "подымаю" наверх, а если это не нужно то итоги себе спокойно сидят внизу...


Тогда приведенный тобой код - НИЗАЧОТ*2 Подмигивание
  
Наверх
ICQ  
IP записан
 
S.W.A.T.
Junior Member
**
Отсутствует



Сообщений: 42
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #23 - 02. Июня 2006 :: 08:29
Печать  
Цитата:
S.W.A.T. писал(а) 02. Июня 2006 :: 08:25:
Цитата:
объясни мне плиз, как у тя поле Док может иметь значение NULL, но при этом имеет значение IDDOCDEF?  Подмигивание


Эхххх, BOL тебе в руки Подмигивание
Даю наводку GROUP BY ... WITH ROLLUP Улыбка

ты шо ваще меня за ламера держишь?
если с группировками, кстати у меня уже есть пост по этому поводу, то тогда нужно более "грамотное" условие, с проверкой на пустое значение, в 1С оно не NULL, а пустое значение, короче я Вам дал свой алгоритм как я это делаю, не нравится, делайте по своему, кто Вам мешает то?



Блин, мне тебе ссылку в BOL-е дать? Это после типизации оно ПустоеЗначение, т.к. 7.7 не знает что есть NULL
  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получение вида из $ВидДокумента
Ответ #24 - 02. Июня 2006 :: 08:29
Печать  
ни зачот так низачот  Подмигивание
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
U_zer
Экс-Участник


Re: Получение вида из $ВидДокумента
Ответ #25 - 02. Июня 2006 :: 08:43
Печать  
kms писал(а) 02. Июня 2006 :: 08:25:
U_zer
Еще не забудь про ИТ, можно потавить индекс на док_вид, перебрать и заполнить расшифровку.
А стандартный док.Вид() может оказаться более тормозным, присмотрись.



Балин! Господа, успокойтесь! Не использую я Док.Вид(), не использую RollUp. И ИТ тоже не использую.
В отчете несколько группировок - Вид,  День, Документ. И соотв. Итоги. 
Обход группировок и вывод результатов без марафета занимает 25 строчек кода. Используется ВК ValTable.

Вопрос возник ТОЛЬКО в переводе ВидаДокумента в строку, помог совет S.W.A.T. со списком соответствий.
Всем спасибо!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать