Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / 1C v77 В какой таблице хранятся перечисления? / 17 сообщений из 17, страница 1 из 1
19.10.2011, 13:48
    #37488828
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
Привет всем!

Подскажите, пожалуйста, в какой таблице хранятся перечисления?
Google молчит :)

Спасибо.
...
Рейтинг: 0 / 0
19.10.2011, 13:49
    #37488832
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
в 77 таких таблиц нет - значение перечислений берется непосредственно из метаданных,из 1cv7.md
...
Рейтинг: 0 / 0
19.10.2011, 14:02
    #37488879
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
воспользуйтесь 1Сpp, там в запросе можно написать через что-то типа select $перечисление.вашеперечисление.имязначения
что вернет представление перечисления в sql таблице.
...
Рейтинг: 0 / 0
19.10.2011, 14:10
    #37488898
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
pail,
Данный файл отсутствует
...
Рейтинг: 0 / 0
19.10.2011, 14:12
    #37488903
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
У меня есть ID перечисления. Как можно получить его значение?
Мне нужно именно в SQL.
...
Рейтинг: 0 / 0
19.10.2011, 14:40
    #37488974
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
Genniypail,
Данный файл отсутствует
данный файл есть всегда - без него 7ка не работает. Это конфигурация в полном объеме и со всеми потрохами.

ID перечисления и его значения - десятичное?
Его представление в базе - это преобразование десятичного значения в 36-ричную арифметику,
с алфавитом 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
...
Рейтинг: 0 / 0
19.10.2011, 14:50
    #37488996
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
Можно
Если у Вас есть sql значение
то так:
функция ЗначениеИзСтрокиБД
к примеру
Синтаксис 2: ЗначениеИзСтрокиБД(ТипИВид, ВнутреннийИД)
Параметры:
Тип - тип: Строка. Полный тип объекта. Напимер: Справочник.Контрагенты;
ВнутреннийИД - тип: Строка. Внутренний идентификатор объекта данных. 9 символов.
Возвращает: тип: Перечисление, Справочник, Документ, Счет, ВидСубконто, ПланСчетов. Результат преобразования

если наоборот нужно sql представление то так как я писал выше
...
Рейтинг: 0 / 0
19.10.2011, 15:53
    #37489131
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
pailGenniypail,
Данный файл отсутствует
данный файл есть всегда - без него 7ка не работает. Это конфигурация в полном объеме и со всеми потрохами.

ID перечисления и его значения - десятичное?
Его представление в базе - это преобразование десятичного значения в 36-ричную арифметику,
с алфавитом 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

Нет. значение ID не десятичное
...
Рейтинг: 0 / 0
19.10.2011, 15:55
    #37489140
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
rigusМожно
Если у Вас есть sql значение
то так:
функция ЗначениеИзСтрокиБД
к примеру
Синтаксис 2: ЗначениеИзСтрокиБД(ТипИВид, ВнутреннийИД)
Параметры:
Тип - тип: Строка. Полный тип объекта. Напимер: Справочник.Контрагенты;
ВнутреннийИД - тип: Строка. Внутренний идентификатор объекта данных. 9 символов.
Возвращает: тип: Перечисление, Справочник, Документ, Счет, ВидСубконто, ПланСчетов. Результат преобразования

если наоборот нужно sql представление то так как я писал выше

Я вообще не работаю в конфигураторе 1С. Вся работа ведется только на уровне базы данных.
...
Рейтинг: 0 / 0
19.10.2011, 16:00
    #37489155
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
Genniy
Я вообще не работаю в конфигураторе 1С. Вся работа ведется только на уровне базы данных.

Тогда самостоятельное преобразование ID из 10- в 36-ричное представление - поможет.
Смутно помнится что здесь кто-то выкладывал реализацию такого преобразования на T-SQL
...
Рейтинг: 0 / 0
19.10.2011, 18:18
    #37489434
VladimirKr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
GenniyrigusМожно
Если у Вас есть sql значение
то так:
функция ЗначениеИзСтрокиБД
к примеру
Синтаксис 2: ЗначениеИзСтрокиБД(ТипИВид, ВнутреннийИД)
Параметры:
Тип - тип: Строка. Полный тип объекта. Напимер: Справочник.Контрагенты;
ВнутреннийИД - тип: Строка. Внутренний идентификатор объекта данных. 9 символов.
Возвращает: тип: Перечисление, Справочник, Документ, Счет, ВидСубконто, ПланСчетов. Результат преобразования

если наоборот нужно sql представление то так как я писал выше

Я вообще не работаю в конфигураторе 1С. Вся работа ведется только на уровне базы данных.

Не хранятся пречисления V7.7 в таблицах.
Придется создавать свою таблицу самому.
Увы. В таком случае нужно будет создать свою таблицу и заполнить ее ID и значениями перечислений. Для этого придется открыть V7 как ком-объект и перебирать перечисления. Я это делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE [dbo].[Enums](
	[Ind] [int] IDENTITY( 1 , 1 ) NOT NULL,
	[IndDb] [int] NOT NULL,
	[Ident] [varchar]( 100 ) NOT NULL,
	[Descr] [varchar]( 250 ) NOT NULL,
 CONSTRAINT [PK_Enums] PRIMARY KEY CLUSTERED 
(
	[Ind] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
CREATE TABLE [dbo].[EnumValues](
	[IndEnum] [int] NOT NULL,
	[ID] [char]( 9 ) NOT NULL,
	[Num] [int] NULL,
	[Ident] [varchar]( 100 ) NULL,
	[Descr] [varchar]( 250 ) NULL,
 CONSTRAINT [PK_EnumValues] PRIMARY KEY CLUSTERED 
(
	[IndEnum] ASC,
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  Set V7 = CreateObject("V77s.Application")
  WriteToBar "Инициализация 1С"
  DoCmd.Hourglass True
  Result = V7.Initialize(V7.RMTrade, "/D""" + Path1C + """", "")
  DoCmd.Hourglass False
  If Err.Number <>  0  Then
    MsgBox "Ошибка инициализации 1C", vbOKOnly + vbExclamation, ""
    Exit Sub
  End If
  If Result = False Then
    MsgBox "Ошибка инициализации 1C", vbOKOnly + vbExclamation, ""
    Exit Sub
  End If
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Sub CollectEnum(V7 As Object, ByVal Ind As Long)
  Dim Rs As ADODB.Recordset
  Dim I As Integer
  Dim J As Integer
  Dim N As Integer
  Dim M As Integer
  Dim IdentEnum As String
  Dim IdentValue As String
  Dim Descr As String
  Dim IndEnum As Long
  Dim ID As String
  'создание таблицы перечислений для информационной базы с индексом Ind. V7 - открытая инф. база
  N = V7.Метаданные.Перечисление()
  For I =  1  To N
    WriteToBar "Перечисление: "
    IdentEnum = V7.Метаданные.Перечисление(I).Идентификатор()
    WriteToBar "Перечисление: " + IdentEnum
    Descr = V7.Метаданные.Перечисление(I).Представление()
    M = V7.Метаданные.Перечисление(I).Значение()
    On Error Resume Next
    Set Rs = CurrentProject.Connection.Execute("set nocount on;declare @Ind int;insert into dbo.Enums(IndDb,Ident,Descr) values(" + _
      MsNum(Ind) + "," + MsStr(IdentEnum) + "," + MsStr(Descr) + ");set @Ind=scope_identity();select @Ind Ind;")
    If Err.Number <>  0  Then
      MsgBox "Ошибка записи." + Err.Description, vbOKOnly + vbInformation, ""
      Exit Sub
    End If
    On Error GoTo  0 
    IndEnum = Rs!Ind
    For J =  1  To M
      IdentValue = V7.Метаданные.Перечисление(I).Значение(J).Идентификатор()
      Descr = V7.Метаданные.Перечисление(I).Значение(J).Представление()
      ID = V7.EvalExpr("_IDToStr(Перечисление." + IdentEnum + "." + IdentValue + ")")
      On Error Resume Next
      CurrentProject.Connection.Execute "insert into dbo.EnumValues(IndEnum,ID,Num,Ident,Descr) values(" + _
        MsNum(IndEnum) + "," + MsStr(ID) + "," + MsNum(J) + "," + MsStr(IdentValue) + "," + MsStr(Descr) + ")"
      If Err.Number <>  0  Then
        MsgBox "Ошибка записи." + Err.Description, vbOKOnly + vbInformation, ""
        Exit Sub
      End If
    Next J
  Next I
  WriteToBar ""
End Sub
...
Рейтинг: 0 / 0
20.10.2011, 11:35
    #37490307
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
А не проще создать справочник и в него при обновлении записывать необходимые данные о перечислениях?
Плюсы:
1) Автоматически обновится, при изменении конфигурации (не надо помнить и выполнять ручные действия).
2) Убираем лишнее внешнее приложение - мимнимизируем количество задействованных технологических решений.
3) Не нужно при переносе базы данных 1С заморачиваться над этой таблицой.
...
Рейтинг: 0 / 0
20.10.2011, 11:48
    #37490337
VladimirKr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
AHDPА не проще создать справочник и в него при обновлении записывать необходимые данные о перечислениях?
Плюсы:
1) Автоматически обновится, при изменении конфигурации (не надо помнить и выполнять ручные действия).
2) Убираем лишнее внешнее приложение - мимнимизируем количество задействованных технологических решений.
3) Не нужно при переносе базы данных 1С заморачиваться над этой таблицой.
AHDP,
Прямое чтение данных БД 1С уже устраняет лишнее и во многих случаях неудобное для представления данных приложение - 1СV7. Как правило при таких задачах конфигурация 1С вещь уже устоявшаяся и редко изменяющаяся на уровне структуры данных. Я сделал таблицу перечислений год назад для трех или четырех ИБД. С тех пор изменений в перечислениях не было. Да еслиб и были - пересоздать таблицу перечислений - дело 1-й минуты.
Задачи - это не только перенос данных. Чаще всего это просто отображение данных 1С, но в быстрой и удобной форме.
...
Рейтинг: 0 / 0
20.10.2011, 12:22
    #37490421
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
VladimirKr,

Год это не срок. Да и что будет с этими таблицами, когда ты от сопровождения этой базы откажешься?
...
Рейтинг: 0 / 0
20.10.2011, 13:09
    #37490513
VladimirKr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
AHDPVladimirKr,

Год это не срок. Да и что будет с этими таблицами, когда ты от сопровождения этой базы откажешься?

Ну это общая филосовская проблема. В твоем варианте (со справочником) можно задать тот же вопрос.
...
Рейтинг: 0 / 0
20.10.2011, 17:58
    #37491159
SignOff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
AHDP,

Ну еще можно запустить тестирование исправление - и все пойдет прахом.
...
Рейтинг: 0 / 0
21.10.2011, 09:19
    #37491642
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1C v77 В какой таблице хранятся перечисления?
Сколько помню, 7.7 и ТИИ вчастности не трогает не свои объекты...
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / 1C v77 В какой таблице хранятся перечисления? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]