Андрей Малкин где-то в 2001 Опять субконто
Для того, чтобы определиться с именами классов, достаточно всего лишь открыть MMS в любом
текстовом редакторе. Далее открываем желтую книжицу на странице с названиями агрегатных типов
данных и ищем в файле "Document", "Register", "Reference"
Стоп, "Reference", то бишь справочник, не находим. Конечно, справочники
описаны, но называются они, "SbCnts". Я понимаю, что, скорее всего,
это название осталось со старых времен, что названия в метасловаре никак не могут повлиять
ни на производительность, ни на устойчивость системы. Но вот слово «Субконто»
(абсолютно не связанное с реальным миром) должно быть близко многим,
кто работал с V7. «Как много в этом слове
» ;-)
Комментарии к таблице
В первой колонке имена классов. Классы самого верхнего уровня (они выделены отступом)
приведены все даже те, которые в решении поставленной задачи
использоваться не будут. Подклассы приведены только в той мере, в которой необходимо.
Полностью пропущены формы, отчеты, графы отбора и пр. Наша цель не имитация
интерфейса, и не повторение бизнес-логики системы. Нам нужны только данные
(причём первичные данные) и ничего более.
Те классы, которые будут в дальнейшем использоваться выделены жирным (bold).
В таблице не описана первая строка MMS:
{"MainDataContDef","xxxx","yyyy", "zzzzz"}
zzzz используется мной для определения версии ("7107" для 7.5, или
"7120" для 7.7), "yyyy" что-то похожее на
указатель компонент V7 (ОУ/БУ/Расчет).
TaskItem самый первый класс (ID всегда единица). Есть отличия
между 7.5 и 7.7: в 7.7 на один параметр больше и присутствуют ссылки на общий журнал.
Этот класс используется для получения текстовой информации о конфигурации.
GenJrnlFldDef общие реквизиты документов. Они понадобятся нам
при импорте документов.
DocSelRefObj, DocNumDef, ReportList, Algorithms, RecalcRules, CalcVars,
Groups, Document Streams исключаю из рассмотрения, как избыточные
для поставленной задачи.
Consts константы. В принципе, тоже можно было бы не
рассматривать, но есть несколько служебных констант (ТипУчета, НомерРелиза и т.п.)
из-за которых всё-таки таблица констант будет создана.
Calendars проблема с подклассом Holidays
(пока не обрабатывается) с рабочими днями всё в порядке.
Buh самый монстрообразный и путаный класс. Собственно,
в этом классе всегда один объект (кстати говоря, создающийся сразу после TaskItem,
его ID=2), не имеющий имени, зато состоящий аж из 49-и реквизитов.
И если подклассы/объекты других классов как-то соответствуют
«дереву конфигуратора», то здесь не всегда так. Например, реквизиты операций и
реквизиты проводок, имеющие в конфигураторе отдельные формы для заполнения, фактически пишут
данные непосредственно в объект класса Buh.
Класс |
Описание |
Комментарий |
TaskItem |
Задача |
|
GenJrnlFldDef |
Общие реквизиты документов |
|
DocSelRefObj |
Графы отбора |
|
DocNumDef |
Нумераторы |
|
Consts |
Константы |
|
SbCnts |
Справочники |
|
Params |
Реквизиты справочников |
|
Registers |
Регистры |
|
Props |
Измерения регистров |
|
Figures |
Ресурсы регистров |
|
Flds |
Реквизиты регистров |
|
Documents |
Документы |
|
Head Fields |
Реквизиты шапки документов |
|
Table Fields |
Реквизиты табличной части документов |
|
Journalisters |
Журналы документов |
|
Enumlist |
Перечисления |
|
Enumval |
Значения перечислений |
|
ReportList |
Отчёты |
|
CJ |
Журнал расчётов |
Обрабатывается частично |
CJParams |
Реквизиты журнала расчётов |
|
Calendars |
Календари |
Не обрабатываются "Holidays" |
Days |
Дни календаря |
|
RecalcRules |
Правила перерасчёта |
|
CalcVars |
Обработки |
|
Groups |
Группы расчётов |
|
DocumentStreams |
Последовательности документов |
|
Buh |
Бухучёт, общие параметры |
|
AccParams |
Общие реквизиты для всех счетов |
|
Plans |
Планы счетов |
|
Accounts |
Счета |
|
AccSbCnts |
Субконто счета |
|
ProvParams |
Реквизиты проводок |
не поддерживаются "Представления" |
OperParams |
Реквизиты операций |
|
SbKind |
Виды субконто |
не поддерживаются "Представления" |
TypOpersDef |
Типовые операции |
Только "ID", все имена пустые |
CorrProvsDef |
Корректные проводки |
Только "ID", все имена пустые |
ProvHardFldDef |
Ссылки на план счетов, используемый в качестве основного и справочник,
используемый в качестве справочника валют |
Мета-описание в "Buh" |
OperJournal |
Параметры журнала операций дополнительные графы и т.п. |
Обрабатывается частично |
Следующая таблица реквизиты (свойства) объектов, описанных выше классов
Позиция в строке для нахождения данного реквизита среди других в строке свойств
объекта, наименование краткое наименование реквизита (частично из мануала,
частично своё). Краткое наименование и будет использовано в дальнейшем для
построения таблиц и запросов аналогов объектам хранения в 1С. Реквизиты,
которые будут использоваться в дальнейшей работе выделены (bold). Естественно,
что разобраны не все реквизиты/свойства. Но тех, которые приведены, вполне достаточно
для решения поставленной задачи.
Комментарий к таблице
Везде, где специально не указано, первые 4 позиции занимают основные реквизиты:
- ID Числовой код, уникальный во всей конфигурации
- Sname Краткое наименование реквизита («идентификатор» в V7)
- Lname Полное наименование («синоним» в V7)
- Сomment Комментарий
Аббревиатуры названий типов данных (реквизит Type):
- N-числовой, Len и Dec соответственно размер и точность поля
- S-строка, Len длина строки. При Len=0
строка неограниченной длины, хранящаяся в 1sblob
- D-дата
- B-справочник
- E-перечисление
- O-документ
- T-счет
- P-план счетов
- K-вид субконто
- C-календарь
- A-вид расчета
- U-неопределенный. Source_Id = 0
Типы B, E, O, T, P, K, C, A рассматриваются вместе с Source_Id ID
внешнего объекта, из которого берутся значения. Если Source_Id=0
(«позднее связывание») значения могут браться из любого объекта
соответствующего типа.
При детальном разборе типов обнаружилась интересное дополнение. Находятся ID c
отрицательными значениями, естественно, не имеющие аналогов в конфигурации.
Как оказалось, эти ID ссылаются на предопределенные поля файлов хранения
(например "?2568"=SCxxx.Code,
"?2569"=SCxxx.Descr). Это применяется при построении
"Представлений" в "Реквизитах проводок", "Видах субконто" и др.
Неизвестные или не рассматриваемые реквизиты обозначены как [skip].
Класс |
Пози ция |
Наименование |
Описание |
Комментарий |
Accounts |
1-4 |
ID,Sname,Lname, comment |
|
Sname формируется системой ("_"&"dummy"&номсчёта&????) |
|
5 |
AccCode |
Полный код счёта |
|
|
6 |
IsCurrensy |
Признак ведения валютного учёта |
|
|
7 |
IsAmount |
Признак ведения количественного учёта |
|
|
8 |
IsSingle |
Признак забалансового счёта |
|
|
9 |
HasSubAccounts |
Признак наличия субсчетов |
|
|
10 |
IsActive |
Тип счёта. 1 активный 2 пассивный
3 активно-пассивный
|
|
AccParams |
1-4 |
ID,Sname,Lname, comment |
|
|
|
5 |
Type |
Тип реквизита |
|
|
6 |
Size |
Размер (для типов N и S) |
|
|
7 |
Dec |
Точность (для типа N) |
|
|
8 |
Source_Id |
ID внешнего объекта, из которого берутся значения (для агрегатных типов) |
|
|
9 |
pr_neotr |
Признак неотрицатеьности значения |
|
|
10 |
pr_triad |
Признак разделения триад при выводе числа |
|
|
11 |
[skip] |
|
|
|
12 |
pr_period |
Признак периодического реквизита (значения берутся из файла 1SConst) |
|
AccSbCnts |
1-4 |
ID,Sname,Lname, comment |
|
Sname формируется системой ("id"&"_"&ID), Lmane и comment
всегда пустые |
|
5 |
[skip] |
|
Всегда "U" |
|
6-10 |
[skip] |
|
Всегда "0" |
|
11 |
ID_SbKind |
Ссылка на соотвествующий вид субконто |
|
|
12 |
TurnoversOnly |
Флаг «Только обороты» субконто |
|
|
13 |
AccountingBySum |
Флаг «Учёт по сумме» субконто |
|
|
14 |
AccountingByCurrencySum |
Флаг «Учёт по валютной сумме» субконто |
|
|
15 |
AccountingByAmount |
Флаг «Учёт по количеству» субкконто |
|
Algorithms |
1-4 |
ID,Sname,Lname, comment |
|
|
Buh |
1-4 |
ID,Sname,Lname, comment |
|
Sname, Lmane и comment всегда пустые |
|
5 |
EditAccMethod |
Метод редактирования счетов. 0 в списке
1 в диалоге 2 обоими способами |
|
|
6-7 |
[skip] |
|
|
|
8 |
MaxNameLen |
Максимальная длина наименования счёта |
|
|
9 |
MaxCodeLen |
Максимальная длина кода счёта |
|
|
10 |
MaxSbcntCount |
Максимальное количество субконто |
|
|
11 |
OperDescrLen |
Длина содержания операции (из OperParams) |
поле Descr соответствующего файла |
|
12 |
OperSumLen |
Длина суммы операции (из OperParams) |
поле Sum соответствующего файла |
|
13 |
OperSumDec |
Точность суммы операции (из OperParams) |
поле Sum соответствующего файла |
|
14 |
ProvSumLen |
Длина поля "Сумма" (из ProvParams) |
поле Sum соответствующего файла |
|
15 |
ProvSumDec |
Точность поля "Сумма" (из ProvParams) |
поле Sum соответствующего файла |
|
16 |
ProvCurSumLen |
Длина поля "Валютная Сумма" (из ProvParams) |
поле CurSum соответствующего файла |
|
17 |
ProvCurSumDec |
Точность поля "Валютная Сумма" (из ProvParams) |
поле CurSum соответствующего файла |
|
18 |
ProvAmountLen |
Длина поля "Количество" (из ProvParams) |
поле Amount соответствующего файла |
|
19 |
ProvAmountDec |
Точность поля "Количество" (из ProvParams) |
поле Amount соответствующего файла |
|
20-23 |
[skip] |
|
|
|
24 |
Currency_ID |
ID справочника валют |
|
|
25 |
Rate_ID |
ID поля "курс" в справочнике валют |
|
|
27 |
PrSumOperSelect |
Признак отбора операций по сумме (из OperParams) |
|
|
28 |
PrDescrOperSelect |
Признак отбора операций по содержанию (из OperParams) |
|
|
29 |
OperSumCalcMethod |
Метод расчёта суммы по всем проводкам (из OperParams)
0 рубли, не рассчитывать
1 рубли, по всем проводкам
3 рубли, по первой проводке
2 валюта, по всем проводкам
4 валюта, по первой проводке |
|
|
30 |
PrAccSelect |
Признак отбора по счетам (из ProvParams) |
|
|
31 |
MaxLevelSelect |
Количество уровней, до которого будет выполняться отбор по счетам (субсчетам)
(из ProvParams)
0 Ѿ по всем счетам |
|
|
32 |
[skip] |
|
|
|
33 |
PrTriadSum |
Признак разделения триад суммы (из ProvParams) |
|
|
34 |
PrTriadCurrSum |
Признак разделения триад Валютной суммы (из ProvParams) |
|
|
35 |
PrTriadAmount |
Признак разделения триад количества (из ProvParams) |
|
|
36 |
PrSumProvSelect |
Признак отбора по сумме в журнале проводок (из ProvParams) |
|
|
37 |
PrCurrProvSelect |
Признак отбора по валюте в журнале проводок (из ProvParams) |
|
|
38 |
PrCurrSumProvSelect |
Признак отбора по валютной сумме в журнале проводок (из ProvParams) |
|
|
39 |
PrAmountProvSelect |
Признак отбора по количеству в журнале проводок (из ProvParams) |
|
|
40 |
Ratio_ID |
ID поля "кратность" в справочнике валют |
|
|
41 |
PrComplAcc |
Признак разрешения ввода сложных проводок при редактировании операции
(из ProvParams) |
|
|
42 |
PrSelectCalcMethodByUser |
Признак разрешения выбора пользователем метода расчёта суммы операции
(из OperParams) |
|
|
43 |
PrDbCrSelect |
Признак разрешения отбора по дебету/кредиту (из ProvParams) |
|
|
44 |
PrEditOperDoc |
Признак редактирования операций, созданных документами (из ProvParams)
0 запретить
1 разрешить
2 выборочно |
|
|
45 |
[skip] |
|
|
|
46 |
PrAmountByAnalit |
Признак ведения количественного учёта по аналитике |
|
|
47 |
Acc_Separator_ID |
ID разделителя учёта (из ProvParams) |
|
|
48 |
MainPlan_ID |
ID основного плана счетов |
|
|
49 |
[skip] |
|
|
CalcVars |
1-4 |
ID, Lname, Sname, comment |
|
|
Calendars |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
StartDate |
Стартовая дата |
|
CJ |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
IDSbcnts |
Ссылка на соответствующий справочник |
|
|
6 |
Period_size |
Период проведения расчётов
0 день
1 неделя
2 месяц
3 квартал
4 год |
|
|
7 |
Period_Date |
Дата отсчёта
-1 не опеределена
>0 long |
|
CJParams |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
Const |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_period |
|
|
CorrProvsDef |
1-4 |
ID, Lname, Sname, comment |
|
|
Days |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
DayLen |
Рабочее время за день (ччмм) |
|
Documents |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
DocNumSize |
Длина нумератора документа (если он назначен) |
|
|
6 |
DocNumLim |
Предел автоматической нумерации документа
0 по всем данного вида
1 в пределах года
2 в пределах квартала
3 в пределах месяца
4 в пределах дня |
|
|
7 |
DocNumType |
Тип нумератора документа
2 числовой
1 текстовый |
|
|
8 |
DocNumAuto |
Автоматическая нумерация документа
2 включена
1 отключена |
|
|
9 |
Jrnl_ID |
ID журнала документов |
|
|
10 |
[skip] |
|
|
|
11 |
DocNumUniq |
Контроль уникальности номеров документов (1/0) |
|
|
12 |
DocNumID |
Ссылка на ID нумератора документа (0 если нумератор не назначен) |
|
|
13 |
PrTrade |
Документ может двигать регистры (если установлена компонента ОУ) |
|
|
14 |
PrSalary |
Документ может делать расчёты (если установлена компонента Расчёт) |
|
|
15 |
PrAccnt |
Документ может формировать проводки (если установлена компонента БУ) |
|
Enumlist |
1-4 |
ID, Lname, Sname, comment |
|
|
Enumval |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Enum_View |
Представление для вывода значения перечисления |
|
Figures |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
Тип значения |
Только N |
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
Flds |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_otbor |
Признак отбора движений (0/1) |
|
GenJrnlFldDef |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_otbor |
Признак отбора движений (0/1) |
|
Head Fields |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
Journalisters |
1-4 |
ID, Lname, Sname, comment |
|
|
OperJournal |
1-4 |
ID, Lname, Sname, comment |
|
|
OperParams |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_otbor |
Признак отбора |
|
Params |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_period |
|
|
|
12 |
pr_useingroup |
Разрешение использование данного реквизита для группы справочника |
|
|
13 |
pr_useinelement |
Разрешение использование данного реквизита для элемента справочника |
|
|
14 |
pr_sort |
Признак сортировки по реквизиту |
|
|
15 |
pr_edithand |
Разрешение ручного редактирования (для периодических реквизитов) |
|
|
16 |
pr_editdoc |
Разрешение изменения документами (для периодических реквизитов) |
|
|
17 |
pr_select |
Признак отбора по реквизиту |
|
Plans |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Plan_Pattern |
Шаблон счёта |
|
|
6 |
Pattern__ |
Тот же шаблон (м.б., валютный?) |
|
Props |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_otbor_dv |
Признак отбора движений (0/1) |
|
|
12 |
pr_otbor_itog |
Признак отбора итогов (0/1) |
|
ProvHardFldDef |
1-4 |
ID, Lname, Sname, comment |
|
|
ProvParams |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_otbor |
Признак отбора |
|
RecalcRules |
1-4 |
ID, Lname, Sname, comment |
|
|
Registers |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
RegType |
Тип регистра
0 остатки
1 обороты |
|
|
6 |
RegPeriod |
Периодичность оборотного регистра (D, M, Y, etc.) |
Для регистра остатков это значение пустое |
|
7 |
RegFast |
Быстрая обработка движений (0/1) |
|
|
8 |
RegUnknown |
непонятный параметр |
|
ReportList |
1-4 |
ID, Lname, Sname, comment |
|
|
Sbcnts |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Owner_id |
ID владельца |
|
|
6 |
kod_size |
Длина кода (количество позиций для кода элемента справочника) |
|
|
7 |
pr_uniq_kod |
Уникальность кода справочника
1 во всём справочнике
2 в пределах подчинения |
|
|
8 |
kod_tip |
Тип кода справочника
1 числовой
2 текстовый |
|
|
9 |
ret_tip |
Представление по умолчанию
1 в виде кода
2 в виде наименования |
|
|
10 |
naim_size |
Максимально возможная длина наименования справочника |
|
|
11 |
pr_autonum |
Признак автоматической нумерации справочника |
|
|
12 |
pr_edit |
Редактирование справочника
0 в списке
1 в диалоге
2 обоими способами |
|
|
13 |
max_level |
Максимальное количество уровней вложенности справочника |
|
|
14 |
form_element_id |
ID формы редактирования элемента справочника |
|
|
15 |
form_group_id |
ID формы редактирования группы справочника |
|
|
16 |
pr_oneform |
Признак единой формы для редактирования элемента и группы |
|
|
17 |
pr_contr_uniq |
Признак контроя уникальности кодов в справочнике (0/1) |
|
SbKind |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
Тип значения |
Не может быть U |
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
pr_select |
Признак отбора по реквизиту |
|
|
12 |
Price |
Цена субконто (ссылка на ID реквизита справочника, используемого в качестве
цены при вычислении суммы проводки) |
|
|
13 |
Currency_price |
Валютная цена субконто (ссылка на ID реквизита справочника, используемого в качестве
валютнгй цены при вычислении валютной суммы проводки) |
|
Table Fields |
1-4 |
ID, Lname, Sname, comment |
|
|
|
5 |
Type |
|
|
|
6 |
Size |
|
|
|
7 |
Dec |
|
|
|
8 |
source_id |
|
|
|
9 |
pr_neotr |
|
|
|
10 |
pr_triad |
|
|
|
11 |
Col_total |
Признак вычисления итога по колонке |
|
TaskItem |
1-4 |
ID, Lname, Sname, comment |
|
|
В следующей части будет проведён разбор логической структуры файлов *.dbf базы данных V7.
|