Имя: Пароль:
1C
1С v8
Найти последний код справочника
0 camojiet
 
19.11.12
10:16
Столкнулся с простой задачей, ответ на которую в большинстве случаев - отсортируй по убыванию и выбери первый. Так же нельзя код это же СТРОКА!
У меня последний элемент 423, а такой метод выдает 99, что не удивительно.
А преобразовать строку в число в запросе не получается. Выгружать весь справочник, переводить все коды в число и отсортировать мне не позволяют руки.
Метод УстановитьНовыйКод тоже выдает 99.
Пока самое адекватное к чему я пришёл - отсортировать по ссылке по убыванию и выбрать первое. Однако, чья нибудь кривая выгрузка может пробить номер -1 к примеру, и в этом случае облом.
Как быть?
1 Maxus43
 
19.11.12
10:18
имхо никак. сделай чтоб руки позволяли быдлокодить
2 Reset
 
19.11.12
10:20
Если сравнивать "423" и "99 " то последний "99 " и не гони на платформу :)
3 Тьма
 
19.11.12
10:20
Перенумеровать справочник по формату. В случае строкового кода должны быть лидирующие нули. Тогда и при интерактивном вводе будет давать правильный код, и при УстановитьНовыйКод и (я подозреваю) задача эта отпадет за ненужностью.
4 НЕА123
 
19.11.12
10:21
(0)
тип поменять на число
?
5 Reset
 
19.11.12
10:21
(3) +1
"99 " --> "099"
6 MaxisUssr
 
19.11.12
10:21
(0)
Единственный вариант - создать РС + подписку на событие "При записи справочника" - в РС будет прописываться числовой код. Но если кто-то руками изменит код - то будет задвоение "Цифровых кодов" - нужно значит запретить вводить в код справочника символы, отличные от цифр...
7 Alex S D
 
19.11.12
10:22
(0) а зачем тебе это вообще?
8 MaxisUssr
 
19.11.12
10:22
(6)
Это вариант для типовых - где нельзя ломать
9 vmv
 
19.11.12
10:24
(0) в качестве бредовой идеи

допустим у тебя нумерация размерности 9, создаешь один раз  справочник соответсвествий, где будут поля КодЧислом, КодСтрокой. По фик, что лишняя таблица, как и производственный календарь в типовых для дат - эта таблица может понадобиться в 100500 ситуациях пока нет предбразования примитивов в запросах.

Этот справочник заполнить обработкой один раз, если размерность кода меньше, допустим 5, то можно просто создать Вт

Ну далее все просто - эту ВТ, полученную вчистую или из справочника соединяешь по По полю КодСтрокой и получаешь максимум по КодЧислом

все остальное от лукавого
10 НЕА123
 
19.11.12
10:25
11 vmv
 
19.11.12
10:25
(6) именно так я и делаю часто, а уникальность числового тоже можно провеять и блокировать запись
12 rs_trade
 
19.11.12
10:26
Получи внутренний ИД и по нему отсортируй
13 MaxisUssr
 
19.11.12
10:28
(0)
А в чем смысл задачи?
14 aka AMIGO
 
19.11.12
10:29
после применения функции Новый() в справочнике кмк известен Код добавляемого элемента..
вычесть единицу - это и будет предыдущий ИМХО :)
15 vmv
 
19.11.12
10:32
// получаем тз для рамерности N

Тз = Новый ТаблицаЗначений;
Тз.Колонки.Добавить("КодЧислом");
Тз.Колонки.Добавить("КодСтрокой");

Для Ч = 1 По N Цикл
НоваяСтрока = Тз.Добавить();
НоваяСтрока.КодЧислом = Ч;
НоваяСтрока.КодСтрокой= Формат(Ч, "ЧГ=;");
КонецЦикла

Пихаем эту Тз через параметр в запрос, загоняем там в Вт и соединием с таблицей анализа кодов

вроде и так покатит
16 НЕА123
 
19.11.12
10:33
выбор когда код ПОДОБНО "_" ТОГДА "0000"
когда код ПОДОБНО "__" ТОГДА "000"
когда код ПОДОБНО "___" ТОГДА "00"
когда код ПОДОБНО "____" ТОГДА "0"
Иначе ""
Конец
+ код как код5
17 eklmn
 
гуру
19.11.12
10:35
ппц сколько быдлокодеров в 1 месте
18 MaxisUssr
 
19.11.12
10:35
(16)
А если код длиной > N, где N - ограничение на количество Case?
19 camojiet
 
19.11.12
10:35
16 - мне нравится - а что за "___" ? Надо править коды типа _99 или можно определить длинну строки?
20 camojiet
 
19.11.12
10:36
(18) это лучше чем 10 и с ТЗ
21 vmv
 
19.11.12
10:36
(17) утро понедельника, животные вышли на водопой, ты король джунглей - тигор? рыкни шоли, чтобы все лани уписались
22 НЕА123
 
19.11.12
10:37
(18)
программно формировать текст запроса.
23 MaxisUssr
 
19.11.12
10:38
(22)
Не вариант - это что, все запросы, использующие код справочника, например, ФизЛица, программно формировать?
24 НЕА123
 
19.11.12
10:38
(19)
"_" - произвольный символ. подстраховка на то, что может быть что угодно.
25 vmv
 
19.11.12
10:39
давайте не в падать в маразмы, любая конфа при записи строковго кода должна его систематизировать при записи элемента не важно как его пишут, но в методах объекта перед(при) записи.
26 MaxisUssr
 
19.11.12
10:40
все-таки, автор, ответьте на (7) и (13)
27 rs_trade
 
19.11.12
10:41
(12) пля. я че то подумал что речь о 7.7
28 eklmn
 
гуру
19.11.12
10:41
(0) Автор, ответь на 1 вопрос, у тебя код справочника где то используется? Зачем такой гемор? Если нет, то перенумерация спасет ну и потом запросец на 10 строк с сортировкой
29 camojiet
 
19.11.12
10:42
Задача создать элемент справочника не нарушая нумерацию. Конфу менять нельзя, желательно коды элементов тоже не трогать.
30 Reset
 
19.11.12
10:43
(29) УстановитьНовыйКод не рассматривается? Или кто то уже создал "999999" и трогать нельзя?
31 eklmn
 
гуру
19.11.12
10:44
(30) :)
32 НЕА123
 
19.11.12
10:45
(30)
ммм...
тут порнография.
33 camojiet
 
19.11.12
10:45
(29) - ответ - (0)
(28) - без правильного кода не записывается элемент - мне его рандомом вычислять?
34 eklmn
 
гуру
19.11.12
10:47
(33) что есть "правильного кода"?
35 camojiet
 
19.11.12
10:47
Такого, которого ещё нет.
36 eklmn
 
гуру
19.11.12
10:48
(35) ты красную таблетку принял? блин синюю надо было!
37 Reset
 
19.11.12
10:49
Голосую за перенумеровать.
Ибо прикручивать суперкривые схемы ради того, счтобы сохранить криво заведенные коды, считаю допустимым только если это коды запуска боеголовок, которые нельзя трогать, ибо взлетят.
38 eklmn
 
гуру
19.11.12
10:49
(37)+100500
39 camojiet
 
19.11.12
10:50
Ребята, проблема решилась - поставщик предусмотрел дубль кода в числовом реквизите. А в целом я расстроился по поводу 1с.
(37) - в следующий раз сделаю голосование! Бугагашеньки)
Всем спасибо!
40 eklmn
 
гуру
19.11.12
10:50
(39) понятно, оба м..даки
41 МихаилМ
 
19.11.12
11:03
дополните лидирующими нулями и сортируйте