Dialog Stream (версия 1.6 бета от 22.05.2004 г.)

Данный документ доступент по следующим адрессам:
http://sourceforge.net/projects/lproject
http://1l.w4b.ru/
Авторство принадлежит:
Copyright © 2004 Дмитрий Павлюк <dmp@myrealbox.com> - Автор  данной модификации
Copyright © 2004 Александр Гордиенко
Copyright © 2004 Константин Волков
Copyright © 2004 Федор Езеев
Copyright © 2004 Алексей Диркс
Copyright © 2004 Дмитрий Реутов

Каждый имеет право воспроизводить, распространять и/или вносить изменения в настоящий документ в соответствии с условиями GNU Free Documentation License, версией 1.2 или любой более поздней версией, опубликованной Free Software Foundation;

Данный документ не содержит неизменяемых разделов, текста, помещаемого на первой странице обложки, и текста, помещаемого на последней странице обложки.

Копия GNU Free Documentation License помещена в файл под названием "GNU_FDL.html".


Содержание

  1. Содержание
  2. История
  3. Благодарности
  4. Введение
  5. Общай структура
  6. Описание параметров
  7. Колонки многострочной части
  8. Контролы
  9. Основной набор флажков
  10. Дополнительные флажки
  11. Клавиши быстрого вызова
  12. Идентификатор картинки

История

Предедущее название документа - отсутствовало.
Предедущая версия документа доступка по адресу - http://1c.alterplast.ru/gcomp/.
На данный момент документ, так же будет поддерживаться проектом 1L и доступен с sf.net.

Copyright © 2004 Дмитрий Павлюк <dmp@realbox.com> - Оформление даного документа, в виде HTML файла. И подддержка в проекте 1L.
Copyright © 2004 Александр Гордиенко - Таблица с примерами диалогов с пограничными значениями длин.
Copyright © 2004 Константин Волков - Описание принципов построения длины потока.
Copyright © 2004 Федор Езеев - Описание взаимосвязи между идентификатором картинки на форме, и идентификатором картинки в галерее.  Общая стилистика.
Copyright © 2004 Алексей Диркс - Значительные дополнения и корректировки.
Copyright © 2004 Дмитрий Реутов - Первая версия, основной объем информации.

Благодарности

Спасибо Федору Езееву (проект GComp), за предоставление файла DlgForms.txt, который и является основой данного документа.

Введение

Поток диалога состоит из двух частей: заголовка и самой структуры диалога.
В заголовке обозначена длина структуры (длина второй части).

Описание принципов построения заголовка.
(Примечание: тот же принцип построения заголовка используется и для потока
Main Metadata Stream)

Если поток помещается в 256 байт, то размер заголовка будет 1 байт. И этот байт -
размер всего потока минус 1.

Если поток помещается в размер 65535 (0xFFFF), то заголовок будет состоять
из 3 байт: Первый FF (255), а потом размер всего потока минус размер заголовка в байтах
с обратными порядком следования шестнадцатиричных байт. То есть 2 байта. Всего 3 байта.
Например при размере всего потока 29822 (0x747E) байт, в заголовке будет следующее:
0xFF, 0x7B, 0x74 (то есть 0x747E-3=0x747B).

Если же структура состоит из большего числа, нежели помещается в эти два байта (>65535),
то заголовок будет состоять из 7 байт. Это первые три байта 0xFF,0xFF,0xFF а потом тот
же самый размер всего потока минус 7 байт заголовка с обратным порядком следования
шестнадцатиричных байт.
Например при размере потока 267151 (0x4138F) заголовок будет такой:
0xFF, 0xFF, 0xFF, 0x88, 0x13, 0x04, 0x00 (то есть (0x4138F- 7=0x41388).

Таблица с примерами диалогов с пограничными значениями.
Размер формы Размер потока Загловок (байт) Начало потока (*)
254 255 1 FE 7B 22
255 258 3 FF FF 00 7B 22
256 259 3 FF 00 01 7B 22
2558 2561 3 FF FE 09 7B 22
2559 2562 3 FF FF 09 7B 22
2560 2563 3 FF 00 0A 7B 22
65533 65536 3 FF FD FF 7B 22
65534 65541 7 FF FF FF FE FF 00 00 7B 22
65535 65542 7 FF FF FF FF FF 00 00 7B 22
65536 65543 7 FF FF FF 00 00 01 00 7B 22
(*) - '7B 22' - это '{"' т.е. начало формы ('{"Dialog",')

Далее приведено описание текста диалога.

Объекты диалога состоят из списка параметров, многие из этих параметров остаются неизвестными,
поскольку что бы я ни делал в конфигураторе - как-то повлиять на них не удавалось.       
Предложенная расшифровка пока сырая, о любых найденных неточностях просьба сообщать по
почте мне Дмитрию Павлюку <dmp@myrealbox.com>.

Общай структура

{"Dialogs",
{"Frame",
    {
        "Параметр формы 1", "Параметр формы 2", .... ,"Параметр формы 28",
            {"Номер активного слоя" (Начиная с нуля)
            {"Идентификатор слоя 1", "Видимость слоя 1"},   
            {"Идентификатор слоя 2", "Видимость слоя 2"},
            ...
            {"Идентификатор слоя 2", "Видимость слоя 2"}},
        "Параметр формы 29","Параметр формы 30"
    }
},
{"Browser",
    "1-й Параметр Browser'а", "1-й Параметр Browser'а",
    {"Multicolumn",
        {"Параметр многостр. части 1" , "Параметр многостр. части 2",..."Параметр многостр. части 43" },
        {"Fixed",  
        {"1й Параметр колонки 1", "2й Параметр колонки 1", ... "20й Параметр колонки  1"},
        {"1й Параметр колонки 2", "2й Параметр колонки 2", ... "20й Параметр колонки  2"},   
        ...
        {"1й Параметр колонки N", "2й Параметр колонки N", ... "20й Параметр колонки  N"}}
    },   
    {"Controls",
        { "1й Параметр контрола 1", "2й Параметр контрола 1", ... "43й Параметр контрола  1"},
        { "1й Параметр контрола 2", "2й Параметр контрола 2", ... "43й Параметр контрола  2"},
        ...
        { "1й Параметр контрола 3", "2й Параметр контрола 3", ... "43й Параметр контрола  3"}
},
{"Cnt_Ver","10001"}}

Описание параметров

Параметры формы
Номер
параметра
Комментарий
1 Размер шрифта в непонятном формате. Алгоритм перевода в пиксели в модуле обработки.
2
3
4
5
6
7
8
9

10
11
12
13 Жирность шрифта  (700 - жирный)
14 Имя шрифта
15
Ширина формы
16
Высота формы
17
Заголовок формы
18

19

20
Режим сохранения настроек (1 - включен, 0 - отключен)  АД:(вроде бы он хранится во флагах???)
21

22
Автоматический порядок обхода (1 - включен, 0 - отключен)
23

24

25

26

27

28
<Описание слоёв формы>
29*
Панель инструментов (1 - показывать, 0 - не показывать)
30*
Изменять размер (1 - изменять, 0 - не изменять)
* Параметров 29 и 30 не было в 7.5

Колонки многострочной части

Номер
параметра
Комментарий
1 Тип колонки:
1. Графы журналов, колонки табл.части документов, колонки формы списка справочников;
2. Предопределенные колонки, такие как Дата в журнале документов, НомерСтроки в табличной части документа;
3. Колонка системных пиктограмм;
4. Текстовое поле
2 Заголовок
3 Ширина колонки
4 Тип полей колонки:
STATIC - для текстовых колонок;
1СEDIT,BMASKED - для реквизитов многострочн. части документа 
5 Номер Порядка обхода
6 -
7 Формула
8 Идентификатор
9
ID объекта метаданных, к которому привязана колонка. У системных колонок - отрицательный ID
10 ТипЗначения - идентификатор типа значения, состоит из одного символа. Соотвествие видно из функции в модуле обработки "ПолучитьПредставление типа"
11 Длина значения
12 Точнось значения
13 ID вида значения (Вид справочника, документа, перечисления или счета)
14 Набор из двух флагов:
1 (Неотрицательный) + 2 (Разделять триады)
15

16

17
Положение справа:
1 - заголовок колонки располагается справа;
2 - Заголовок колонки располагается слева
18
ОСНОВНОЙ НАБОР ФЛАГОВ (Описание смотрите ниже)
19
Текстовый параметр, Для "Строки" - Маска, Для "Справочника" - Связан С.
20
Длинная Подсказка
21
Короткая Подсказка
22
-

Контролы

Одинаковый набор параметров для всех контролов на форме, в т.ч. и для многострочной части
Номер
параметра
Комментарий
1
Заголовок
2
Вид контрола (Описание видов в функции модуля обработки ПолучитьИмяКонтрола())
3
Набор флагов элемента диалога, описывает его параметры, лишь некоторые из них доступны к редактированию из конфигуратора. Опишу позже. Отчасти они описаны в функции модуля обработки ПолучитьТаблицуИзмененныхСвойств() в блоке условия "ИначеЕсли ТипСвойства = "Флаги1" Тогда"
4
Координата X
5 Координата Y
6 Длина контрола
7 Высота контрола
8 Привязан к реквизиту объекта (1 - привязан, 2 - нет)
9

10
Номер порядка обхода
11

12
Формула
13
Идентификатор
14
ID Реквизита объекта, к которому привязан реквизит
15
ТипЗначения - идентификатор типа значения, состоит из одного символа. Соотвествие видно из функции в модуле обработки "ПолучитьПредставление типа"
16
Длина значения
17 Точность значения
18 ID вида значения (Вид справочника, документа, перечисления или счета)
19 Набор из двух флагов: 1(Неотрицательный) + 2(Разделять триады)
20 ОСНОВНОЙ НАБОР ФЛАГОВ (Описание смотрите ниже)
21
Текстовый параметр, Для "Строки" - Маска, Для "Справочника" - Связан С
22
Длинная Подсказка
23
Короткая Подсказка
24
Размер шрифта  внепонятном формате. Алгоритм перевода в пиксели - в модуле обработки
25

26

27

28

29
Шрифт жирный (700 - если жирный)
30
Шрифт наклонный(1 - наклонный, 0 - Нет)
31
Шрифт подчеркнутый (1 - подчеркнутый, 0 - Нет)
32

33

34

35

36

37

38
Имя шрифта
39
Цвет шрифта   в виде длинного целого
40

41
Идентификатор картинки
42
Слой
43 Горячая клавиша (или акселератор). Описание ниже.
* Параметра 43 не было в 7.5

Основной набор флажков

Номер
бита
Комментарий
0

1

2
Пропускать при вводе
3

4
Вместо подсказки использовать описание
5
Имеет кнопку выбора 
6
Использовать шрифт по умолчанию
7
Использовать цвет текста "Авто"
8
Растянуть картинку(для объекта Картинка)
9
Автовыбор выключен (для BMASKED)
10
Картинка по центру
11
Картинка пропорционально
12
Многострочный (для поля ввода)
13
Невидимый
14
Недоступный
15

16
Прозрачный фон
17
Рамка простая (Для картинки)
18
Рамка выпуклая (Для картинки)
19
Рамка вдавленная (Для картинки)
20
Автовыбор  (для 1CEDIT)
21
Неизвестный флаг(появляется у колонок многострочн. части, логику появления отследить не смог)
22
На следующей строке (положение колонки многострочн. части)
23
На следующей строке (положение колонки многострочн. части)
24

25
Список с пометками (для списка значений)
26
Отрицательное красным (для полей ввода типа "Число")
27
Выводить пиктограммы (Для таблицы значений)
28
Запретить редактирование

Дополнительные флажки

BUTTON
101 0000 0000 0000 0000 0000 0000 1011 - картинка по центру  (флаги по умолчанию)
101 0000 1010 0000 0000 0000 0100 0011 - картинка растянуть  (3 бита ?)
101 0000 0000 0000 0000 0000 0000 1011 - пропорционально (ничем не отличается от "по центру"????)
101 0000 0000 0000 0001 0000 0000 1011 - кнопка по умолчанию (Ctrl-Enter)
RADIO
101 0000 0000 0000 0000 0000 0000 1001 - по умолчанию
101 0000 0000 0010 0000 0000 0000 1001 - первый в группе
CHECKBOX
101 0000 0000 0000 0000 0000 0000 0011 - по умолчанию
101 0000 0000 0000 0000 0000 0010 0011 - прижать текст влево
1CEDIT
101 0000 1000 0000 0000 0000 0000 0000
101 0000 1000 0000 0000 0000 0010 0000 - для ввода пароля  (Интересно, что мешало взять другой бит?)

Клавиши быстрого вызова

Формат: "{""<Модификатор>"",""<Скан-код>""}"
 - Модификатор: может быть bit OR комбинацией 3-х значений:
Shift 111 0x07
Ctrl 1011 0x0b
Alt 10011 0x13
Иногда встречается модификатор со значением 0x03 (в комплексной 7.70.451). Зачем это нужно - непонятно.
1С воспринимает это как отсутствие модификаторов.
 - Скан-код: - он и есть скан-код.

Идентификатор картинки

Идентификатор картинки из 41-го параметра контрола рассчитывается не просто, а очень просто.
Идем в папку PictureGallery. Находим нужную картинку. Ее имя - это что-то вроде
__Picture.NNNNNNN.ext, где NNNNN - некоторое 16-ричное число, а ext - расширение.
Так вот, если преобразовать 16-ричное число в 10-ричное - получим идентификатор из формы.