Андрей Малкин где-то в 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.
|