Имя: Пароль:
1C
1С v8
Порядок записей в регистре сведений
0 yurikmellon2
 
13.03.20
13:36
Коллеги, добрый день.
Подскажите, плиз.

Конфигурация на поддержке, на основе БП

Имеется регистр сведений СоставыКомиссийДокументов
Периодичность: Непериодический
Режим записи: Независимый
Форм у регистра нет.
Измерения:
Объект - тип Документ
ЧленКомиссии - тип СправочникСсылка.ФизическиеЛица
Должность - тип СправочникСсылка.Должности
Роль - тип ПеречислениеСсылка.РолиЧленовКомиссий

Этот регистр используется при печати актов на списание. В печатную форму члены комиссии выводятся так, как они записаны в регистре.
Не могу понять по какому принципу заполняются записи в этом регистре.

Пример, руками добавляю записи. Сортировки в форме списка нет.
Добавляю, например, физлицо Власова и она в списке появляется выше, чем Антонова. И, соответственно, на печать выводится раньше.

Выборка на печать производится таким запросом:

"ВЫБРАТЬ
            |    АХДКОСоставыКомиссийДокументов.ЧленКомиссии КАК ЧленКомиссии,
            |    АХДКОСоставыКомиссийДокументов.Должность КАК Должность,
            |    АХДКОСоставыКомиссийДокументов.Роль КАК Роль
            |ИЗ
            |    РегистрСведений.АХДКОСоставыКомиссийДокументов КАК АХДКОСоставыКомиссийДокументов
            |ГДЕ
            |    АХДКОСоставыКомиссийДокументов.Роль = ЗНАЧЕНИЕ(Перечисление.АХДКОРолиЧленовКомиссий.Председатель)
            |    И АХДКОСоставыКомиссийДокументов.Объект В(&МассивОбъектов)
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    АХДКОСоставыКомиссийДокументов.ЧленКомиссии КАК ЧленКомиссии,
            |    АХДКОСоставыКомиссийДокументов.Должность КАК Должность,
            |    АХДКОСоставыКомиссийДокументов.Роль КАК Роль
            |ИЗ
            |    РегистрСведений.АХДКОСоставыКомиссийДокументов КАК АХДКОСоставыКомиссийДокументов
            |ГДЕ
            |    НЕ АХДКОСоставыКомиссийДокументов.Роль = ЗНАЧЕНИЕ(Перечисление.АХДКОРолиЧленовКомиссий.Утверждающий)
            |    И НЕ АХДКОСоставыКомиссийДокументов.Роль = ЗНАЧЕНИЕ(Перечисление.АХДКОРолиЧленовКомиссий.Председатель)
            |    И АХДКОСоставыКомиссийДокументов.Объект В(&МассивОбъектов)
            |
            |УПОРЯДОЧИТЬ ПО
            |    ЧленКомиссии";


Я так понимаю, что УПОРЯДОЧИТЬ ПО "ЧленКомиссии"; как раз и берет членов комиссии так, как они записаны в регистр.

Не могу понять по какому принципу происходит сортировка в самом регистре. Почему какие то люди при добавлении встают в начало, какие то в конец.

Куда копать?
1 ejikbeznojek
 
13.03.20
13:38
По внутреннему идентификатору наверное.

упорядочи по членкомиссии.наименовании
2 yurikmellon2
 
13.03.20
13:40
(1) так работает, но конфа на поддержке. Кроме того, мне не надо на ФИО или ещё как. Надо чтобы на печать выводилось в таком порядке, как записано в регистре. А вот почему именно так пишет в регистр, для меня загадка.
3 ДенисЧ
 
13.03.20
13:43
Любой запрос к базе данных без явного указания порядка выдаёт данные в порядке, никем не предопределённом.
С этим надо смириться и делать нужные ногодвижения.
4 ejikbeznojek
 
13.03.20
13:43
(2) Так сделай такую же печать, только внешнюю.
5 yurikmellon2
 
13.03.20
13:48
(3) не понял. Т.е. в регистр пишет по какому принципу?
(4) как? Вот бухи забили в документе состав комиссии как им надо, а в регистр эти люди записались в другом порядке, соответственно,  и на печать выводятся в другом.
Во внешней форме как условие вывода прописать, если надо не по ФИО, не по должностям и т.п., а так как они в документе сделали.
6 butterbean
 
13.03.20
13:50
(0) нужно поле точно определяющее порядок вывода, иначе 100% гарантии никогда не получишь
7 Йохохо
 
13.03.20
13:51
(5) выкинь регистр, бери из документа
8 ejikbeznojek
 
13.03.20
13:52
(5) если надо как они в документе сделали, то в запросе используешь документ и упорядочить по номеру строки.
9 yurikmellon2
 
13.03.20
13:55
(7) (8) в документе они открывают форму, заполняют список и при нажатии "Записать" данные пишутся в регистр. В документе этого списка нет. Вот почему они пишутся не так, как в этой форме, вот в чем вопрос.
10 ejikbeznojek
 
13.03.20
13:58
(9) Тогда сдаться и сказать бухам, что им нужно смириться.
11 Йохохо
 
13.03.20
13:59
(9) пишутся они так как в форме, а вот читаются и выводятся на просмотр в трех разных порядках
12 yurikmellon2
 
13.03.20
14:02
(11) можно поподробнее. Вот я открываю этот регистр, руками, не через документ, добавляю туда запись. Чем и где определяется куда это строчка в регистре встанет?
13 ДенисЧ
 
13.03.20
14:04
(12) СУБДой. Потому что нет такого понятия, как "порядок записей в таблице". Есть понятие "порядок по этому вот индексу".
14 yurikmellon2
 
13.03.20
14:10
(13) нда, спасибо, расстроил. Это точно? Тогда незнай что делать
15 ejikbeznojek
 
13.03.20
14:10
(14) Так я уже в (10)  написал что делать))
16 Волшебник
 
модератор
13.03.20
14:12
(13) Это если индекс кластерный. По обычному индексу тоже нет порядка. Есть возможность упорядочить результат запроса по любому полю (ORDER BY). Если по нему есть индекс, то будет быстрее.
17 Волшебник
 
модератор
13.03.20
14:13
(9) Заведи числовое измерение Порядок и сортируй по нему при отображении в форме
18 dezss
 
13.03.20
14:15
(5) Мда. Для этого нужно строго определять порядок. Т.е. сделать как сказано в (17)
19 ДенисЧ
 
13.03.20
14:17
(16) Смотря что понимать под "есть порядок, нет порядка".
Потому что даже в кластерном байтики не лежат по порядку на диске.
20 Волшебник
 
модератор
13.03.20
14:20
(19) Там же дерево. Можно сказать, что данные лежат вместе с кластерным индексом в одном дереве, которое не требует дополнительной сортировки.
21 fisher
 
13.03.20
14:22
(12) Явно ничем не определяется. Современные СУБД имеют страничную организацию хранения данных и с точки зрения порядка записи на диск никакого явного порядка не существует, если он явно не определен. Т.е. в среднем данные ложатся рядышком, но потом бац - и очередная новая "строка" окажется в совершенно другом месте, потому что в старой странице место закончилось.
22 yurikmellon2
 
13.03.20
14:23
(17) в форме документа то я заведу, а вот в регистр как записать? Конфа на поддержке, в расширении нельзя измерение добавить чтобы туда порядок записать.
23 dezss
 
13.03.20
14:25
(22) Тогда никак.
24 butterbean
 
13.03.20
14:26
(22) сделай свой регистр
25 yurikmellon2
 
13.03.20
14:44
ясно, всем спасибо, буду думать
26 ДенисЧ
 
13.03.20
15:10
(20) Дерево? Мне почему- b-tree больше напоминает куст, разлапистый такой... Как клюква...
2 + 2 = 3.9999999999999999999999999999999...