Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) получить перечисление в SQL (число прочтений - 6558 )
Evga
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 35
Зарегистрирован: 05. Мая 2011
получить перечисление в SQL
02. Апреля 2012 :: 07:23
Печать  
Скажите, как можно получить значение перечисления, делая запрос в менеджере sql-я ?
то есть пишу
select ID, Code, Descr, sp32036
  from SC1817
а в колонке "sp32036" вижу "   P5C   ", а надо "Сырье и материалы"
Можно ли так сделать?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: получить перечисление в SQL
Ответ #1 - 02. Апреля 2012 :: 07:35
Печать  
Evga писал(а) 02. Апреля 2012 :: 07:23:
Скажите, как можно получить значение перечисления, делая запрос в менеджере sql-я ?
то есть пишу
select ID, Code, Descr, sp32036
 from SC1817
а в колонке "sp32036" вижу "   P5C   ", а надо "Сырье и материалы"
Можно ли так сделать?

Конечно можно, но надо ли оно тебе?
select ID, Code, Descr
, CASE WHEN sp32036 = "   P5C   " THEN "Сырье и материалы" END
  from SC1817
Проблема в том, что скуль ничего не зенает про 1С-идентификаторы. Там хранятся только коды, что ты и видишь в нем...
  
Наверх
 
IP записан
 
Evga
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 35
Зарегистрирован: 05. Мая 2011
Re: получить перечисление в SQL
Ответ #2 - 02. Апреля 2012 :: 07:45
Печать  
так то понятно, но неинтересно.
спасибо за ответ
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: получить перечисление в SQL
Ответ #3 - 02. Апреля 2012 :: 07:46
Печать  
Evga писал(а) 02. Апреля 2012 :: 07:23:
Скажите, как можно получить значение перечисления, делая запрос в менеджере sql-я ?
то есть пишу
select ID, Code, Descr, sp32036
 from SC1817
а в колонке "sp32036" вижу "   P5C   ", а надо "Сырье и материалы"
Можно ли так сделать?



Код
Выбрать все
select ID, Code, Descr, sp32036 as [Назв_в_1с   $Перечисление.НазваниеПеречисления]
  from SC1817 


Вместо НазваниеПеречисления надо подставить как называется перечисление в конфигураторе
  
Наверх
 
IP записан
 
Evga
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 35
Зарегистрирован: 05. Мая 2011
Re: получить перечисление в SQL
Ответ #4 - 02. Апреля 2012 :: 08:02
Печать  
нет.
за запрос
select ID,
           Code,
           Descr,
           sp32036 as [Назв_в_1с $Перечисление.ВидыМатериалов]
  from SC1817

выдается колонка с именем "Назв_в_1с $Перечисление.ВидыМатериалов", а там содержатся теже коды.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: получить перечисление в SQL
Ответ #5 - 02. Апреля 2012 :: 08:09
Печать  
Тогда что такое     "менеджер sql-я "
для qa  либо как в 1
либо завести  в той же базе (или другой БД)
таблицу с полями ID_перечисление char(9), СтроковоеЗНачение char(50)
и делать к этой таблице inner join и вытаскивать название из  СтроковоеЗНачение

зачем именно такая задача ставиться не очень понятно
для отладки не нужно строковое значение а для работы обычно все делают из 1с.

  
Наверх
 
IP записан
 
Evga
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 35
Зарегистрирован: 05. Мая 2011
Re: получить перечисление в SQL
Ответ #6 - 02. Апреля 2012 :: 08:30
Печать  
QA - вы правильно поняли.
с доп таблицей тоже все понятно.
Данные выгружаться будут из 1С, находясь во внешнее базе данных. То есть запрос будет проходить не в самой 1С, а прямо к sql-ским таблицам. И отображать необходимо название, а не коды.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: получить перечисление в SQL
Ответ #7 - 02. Апреля 2012 :: 08:52
Печать  
Evga писал(а) 02. Апреля 2012 :: 08:30:
QA - вы правильно поняли.
с доп таблицей тоже все понятно.
Данные выгружаться будут из 1С, находясь во внешнее базе данных. То есть запрос будет проходить не в самой 1С, а прямо к sql-ским таблицам. И отображать необходимо название, а не коды.

Ну тогда заводите доп таблицу. Причем можно или на каждое перечисление завести свою таблицу либо
все сделать в одной таблице тогда к таблице что я описал выше надо добавить столбец ВидПеречисления.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: получить перечисление в SQL
Ответ #8 - 04. Апреля 2012 :: 07:45
Печать  
Evga писал(а) 02. Апреля 2012 :: 08:02:
нет.
за запрос
select ID,
           Code,
           Descr,
           sp32036 as [Назв_в_1с $Перечисление.ВидыМатериалов]
 from SC1817

выдается колонка с именем "Назв_в_1с $Перечисление.ВидыМатериалов", а там содержатся теже коды.



Естественно.
Равно как и в случае типизации колонок в духе [Элем $Справочник.Вид], разворачиванием объекта из строки занимается метапарсер объекта ОДБЦРекордСет
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: получить перечисление в SQL
Ответ #9 - 04. Апреля 2012 :: 07:47
Печать  
Z1 писал(а) 02. Апреля 2012 :: 08:52:
Ну тогда заводите доп таблицу. Причем можно или на каждое перечисление завести свою таблицу либо
все сделать в одной таблице тогда к таблице что я описал выше надо добавить столбец ВидПеречисления.


еще есть вариант сделать вьюху на таблицу SC1817
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: получить перечисление в SQL
Ответ #10 - 06. Апреля 2012 :: 07:41
Печать  
Создается таблица "dbo.Перечисления" с колонками: ID,ТипОбъекта,ВидОбъекта,Идентификатор,Значение,Представление.

Функция "dbo.Перечисление" - получает ИД перечисления по его Идентификатору, Например "ВидыТМЦ.Товар"

dbo.ЗначПеречисления - Получает значение перечисления по его ID.

Обработка только для SQL.
  

_____________012.ert ( 61 KB | Загрузки )
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: получить перечисление в SQL
Ответ #11 - 06. Апреля 2012 :: 07:44
Печать  
В Вашем случае можно сделать так:
Код
Выбрать все
select
T1.ID, T1.Code, T1.Descr, T1.sp32036, T2.Значение
from SC1817 AS T1
INNER JOIN dbo.Перечисления AS T2 WITH (NOLOCK) ON (T2.ID = T1.sp32036) 

  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать