Имя: Пароль:
1C
1С v8
МАКСИМУМ ссылочного типа
0 SeraFim
 
04.10.12
08:22
Дано: Перечисление "Категории мед.персонала": Вторая, Первая, Высшая
Видимо, при создании этого перечисления сделали порядок: Вторая, Высшая, Первая.
Поэтому эти категории и сравниваются Вторая < Высшая < Первая (должно быть Вторая < Первая < Высшая)

У Иванова есть Первая и Высшая Категории
Поэтому запрос
ВЫБРАТЬ
   Табличка.ФизЛицо,
   МАКСИМУМ(Табличка.Категория)
ИЗ Табличка КАК Табличка
СГРУППИРОВАТЬ ПО
   Табличка.ФизЛицо

вернет Иванов - Первая

Подскажите, что нужно сделать, чтобы получить нужный результат: Иванов - Высшая
1 butterbean
 
04.10.12
08:24
сделать справочник вместо перечисления
2 Starhan
 
04.10.12
08:24
Соеденить с регистром сведений (Категория - Приоритет)
Переделать на справочник с реквизитом приоритет

м.б. поколдовать с УИД.
3 chelentano
 
04.10.12
08:26
не совсем понятно, как у одного человека может быть две категории одновременно
4 SeraFim
 
04.10.12
08:33
(1)можно, но данные неохота конвертить)
(2)я пока сделал МАКСИМУМ(Табличка.Категория.Порядок) и потом соединение с Таблицей этого перечисления) Работает все хорошо, но не нравится -> длинные запросы получаются

Вот как раз про УИДы и думал - что же в БД поменять.
В справке: ссылочные типы сравниваются на основе своих значений (номера записи и т. п.);

(3) по разным специальностям
5 dk
 
04.10.12
08:36
переименовать в 1_Высшая, 2_Первая, 3_Вторая
6 SeraFim
 
04.10.12
08:42
(5) все имена должны начинаться с букв)
7 IamAlexy
 
04.10.12
08:44
(6) синонимы оставь с букв, а имена сделай с числа
8 dk
 
04.10.12
08:45
_1_Высшая
9 SeraFim
 
04.10.12
08:45
(7) да это не мое требование) Это требование программирования) Вот даже проверил - 1Ска тоже ругается0
10 Светлый Гений
 
04.10.12
08:46
(5)тока наиборот нада 3_Высшая, 2_Первая, 1_Вторая
(9)можно сделать _3Высшая, _2Первая, _1Вторая
11 dk
 
04.10.12
08:47
(10) максимум на минимум нетрудно сменить
12 Светлый Гений
 
04.10.12
08:50
(11)согласен, тут просто логика, такая, что надо максимальную категорию выводить )))
13 SeraFim
 
04.10.12
08:50
(8)(10)(11) затестил - один фиг))
В справке: ссылочные типы сравниваются на основе своих значений (номера записи и т. п.);
14 acsent
 
04.10.12
08:51
выбор когда категория = &1 Тогда 1 КОГДА категория = &2 ТОГДА 2... КАК Порядок
15 Sammo
 
04.10.12
08:56
(13) Насколько я понимаю там был намек, что максимум не от ссылочного типа, а от наименования. Но, емнип, у перечисления не взлетит - только для справочного типа.
У перечисления в запросе можно использовать .Порядок, как в 4. И это правильно.

P.S. Про возможность исправить уид перечисления - забудь
16 Светлый Гений
 
04.10.12
08:58
(13)Короче говоря, "порядок" определяет положение значения перечисления сверху вниз. Соответственно, в конфигураторе определяй значения в нужном порядке и бери максимум по этому полю.
17 Светлый Гений
 
04.10.12
08:59
+(16)то есть в конфигураторе у тебя должно быть
Вторая
Первая
Высшая
18 Starhan
 
04.10.12
09:02
(0) посмотрел в конфе. Зайди в перечилление в конфигураторе и поставь порядко какой тебе нужен
19 SeraFim
 
04.10.12
09:02
(16) см.(4) я так и сделал))
(15) Вот я как раз про УИД и думал...
Подключился к базе, смотрю - куча табличек _ENUM258. Просматриваю - 2 поля: _IDRRef и _EnumOrder, собственно "Ссылка" и "Порядок"
Я правильно понимаю, что _IDRRef лучше не трогать?)) И где можно найти соответствие названий баз? (что, например, _ENUM258 - это Перечисление.Категории)
20 Starhan
 
04.10.12
09:09
(19) поищи в инете куча обработок.
21 НЕА123
 
04.10.12
09:36
(19)
ПолучитьСтруктуруХраненияБазыДанных()
?
но я абсолютно согласен с (15).
22 SeraFim
 
04.10.12
09:37
(21) ага, спасибо, но я уже всё нашел))
вот сижу думаю, стоит или не стоит их менять))
23 НЕА123
 
04.10.12
09:46
(22)
если менять
1. менять все существующие ссылки в базе;
2. при всяких там объединениях, восстановлениях конфы помнить об этом.
нах это нужно?
24 SeraFim
 
04.10.12
12:39
(23) это собственные дописки, так что на объединения пофиг)
про замену к выводу пришел - что в 1Ске, что в SQL один фиг все менять надо)
В 1Ске проще так что поступил так:
создал 4-ую категорию, обработкой заменил высшую на новую, высшую удалил, эту переименовал)

На этом все, всем спасибо большое :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший