|
Как определить максимальное число в реквизите Код? | ☑ | ||
---|---|---|---|---|
0
dj_7up
14.05.13
✎
18:22
|
Как определить максимальное число в стандартном реквизите справочника "Код"? По умолчанию он является строкой.
Имея коды 1019 и 10115, при выполнении запроса по типу "МАКСИМУМ(НоменклатураИМ.Код) КАК Код" получаю значение 1019. Даже добавляя еще элемент с кодом 10000000. Переведя реквизит Код в Число, отрабатывает, но неудобным для меня является пробел(разделитель) после каждых трех символов. P.S. Суть в том, что значение Код состоит из префикса 101 - это код родителя и 1,2,3,4 самого элемента. т.е. при достижении 1019 нужно что бы стало 10110, а не 1020. Тут все просто, перед +1 отрезаю Родителя от строки, делаю +1 и снова добавляю. Но загвоздка в получении запросом максимального числа в поле Код. Заранее спасибо за ответы. |
|||
1
Мимохожий Однако
14.05.13
✎
18:30
|
Дай пример хотя бы из 5 элементов и порядок, который ожидаешь
|
|||
2
Волчара2010
14.05.13
✎
18:34
|
максимум(выразить(код, как Число(12))
|
|||
3
Mitriy
14.05.13
✎
18:35
|
(2) ну-ну...
|
|||
4
Волчара2010
14.05.13
✎
18:36
|
формат(число, ""форматнаястрока)
|
|||
5
mistеr
14.05.13
✎
18:37
|
(0) Префикс должен быть слева, код справа, между ними нули.
Но это раньше надо было думать. А теперь только извращаться. |
|||
6
Fragster
гуру
14.05.13
✎
18:37
|
установитьНовыйКод(Префикс), не?
|
|||
7
Волчара2010
14.05.13
✎
18:38
|
и еще ПОДСТРОКА
|
|||
8
Mitriy
14.05.13
✎
18:38
|
(5) можно переформировать и спать спокойно...
|
|||
9
Mitriy
14.05.13
✎
18:39
|
единственное - цифры в качестве префикса - тоже сильно не айс...
|
|||
10
DS
14.05.13
✎
18:41
|
(2) (4) (7) чо?
|
|||
11
Зойч
14.05.13
✎
18:43
|
тип строка, а следовательно максимум ищется для строк а не чисел
|
|||
12
Mitriy
14.05.13
✎
18:43
|
(0) автор, ты хотя бы скажи, это у тебя на этапе разработки, или просто столкнулся? Если первое, то лучше передумай и сделай по-человечески...
|
|||
13
Волчара2010
14.05.13
✎
18:47
|
(10) в очко!
|
|||
14
dj_7up
14.05.13
✎
21:02
|
(12)На этапе разработки.
(11) да, ищется максимум для строк. (2) "максимум(выразить(код, как Число(12))" вот тут не понятно немного, можно подробнее что имело в виду? Суть задачи: Есть справочник, отдельный, никак не связан с учетом. У каждого элемента первые три символа - это код родителя, далее номер элемента по порядку, в каждой группе(родителе) нумерация с 1. т.е. Группа1 с кодом 101 имеет элементы 1011, 1012, 1013... группа2 с кодом 102 имеет элементы 1021, 1022, 1023... При добавлении нового элемента, выполняю запрос, ищу максимальное значение, прибавляю +1 и вставляю в форму ввода нового. Все красиво, пока не доберусь до 1019, дальше мне нужно 10110, а получается то 1020 :) И то не беда, отсекаю строку 1019 родителем 101, получаю 9, прибавляю +1, приклеиваю родитель и получаю 10110. Но проблема в том, что запрос максимума всегда выдает значение 1019, даже если есть 10110, потому как максимум по строке. Переведя реквизит Код в Число, с прибавлениями решается, но появляется пробел, 10 110, который жутко мешает при дальнейших манипуляциях. Во многих других местах я использую код как идент моего элемента. Единственным выходом вижу использовать Число и каждый раз при использовании Кода отрезать ему Символы.НПП. Так ли это? |
|||
15
Mitriy
14.05.13
✎
21:07
|
Если тебе поможет, то Формат(ТвойКодЧисло, "ЧГ="
) превратит число в красивую строку... |
|||
16
dj_7up
14.05.13
✎
21:14
|
(15) Спасибо :) Именно так и превращаю. Но так придется превращать каждый раз, где я использую Код, а использую я его очень часто, при выгрузке данных в MySQL как ID, при формировании имени картинки товара в папке и в других местах где не приемлем пробел.
Потому и прошу совета у опытных, если другого выхода нет то буду каждый раз преобразовывать в "ЧГ=". А как в самой конфигурации реализован поиск максимального значения, когда Код является строкой да еще и имеет буквенные префиксы? Не получается найти этот код. |
|||
17
Мимохожий Однако
14.05.13
✎
21:15
|
Вот и использовал бы везде ID
|
|||
18
dj_7up
14.05.13
✎
21:21
|
(17) так и использую ID, вот у меня каждый ID и состоит из кодродителя+номер и храниться в поле Код.
Имеете в виду не привязываться к родителям? Но в таком случае тоже не получится прибавлять +1 к строке, опять столкнусь с тем, что 1019 больше чем 10110. Задумка была в том, что визуально просто определить к какой группе относятся данные. Каждый элемент этого справочника - это товар интернет-магазина, у которого десятки картинок, при добавлении которых 1ска называет их например 1019_хххххх_.jpg и кладет в папку с именем родителя, получается путь 101/1019_хххххх_.jpg - это удобнее для синхронизации с сайтом. |
|||
19
Мимохожий Однако
14.05.13
✎
21:22
|
Я не про твой ID, а про внутренний 1С.
|
|||
20
Мимохожий Однако
14.05.13
✎
21:24
|
есть еще один дикий вариант - создай дополнительный числовой реквизит для поиска. Но это от безысходности только.
|
|||
21
dj_7up
14.05.13
✎
21:28
|
(19) дык его ж менять нельзя вроде как? а мне важно что бы он имел необходимый мне Вид.
(20) Да, скорее от безисходности :) Тогда что скажите, если просто везде при выгрузках и прочем, в т.ч. в форме отображения и ввода нового Кода использовать "ЧГ=" и забить? :) Ничего что Стандартный реквизит Код будет числом у этого справочника, а у остальных строкой? Я правильно понимаю, что в конфе его сделали строкой только для возможности использования буквеного префикса? |
|||
22
Мимохожий Однако
14.05.13
✎
21:35
|
Тема помаленьку ушла от заявленной ))). По большому счету, использовать код элемента для поиска и синхронизации не рекомендуется. Для этого нужен GUID, который не меняется даже при изменении кода, наименования и других реквизитов элемента.
|
|||
23
Fragster
гуру
14.05.13
✎
21:37
|
не знаю, зачем автору такой изврат, но может быть подойдет числовая нумерация в пределах подчинения и ПолныйКод() когда нужно получить извращенную строку из сабжа?
|
|||
24
dj_7up
14.05.13
✎
21:58
|
(22) Пардон если некоторые вопросы выглядят глупыми, я в 1с не пишу, я как-то на ПХП все больше, просто интересно все же докопаться до истины. Изначально был реквизит Модель, в котором все это и происходило, но по скольку проблема с пробелами и поиском максимума была такая же, решил использовать код, дабы не плодить лишних реквизитов.
А можно немного подробнее, почему нельзя использовать Код элемента для поиска? И что имеется в виду под синхронизацией? Спасибо. (23) А в чем изврат то? :) Спасибо, про "числовая нумерация в пределах подчинения" почитаю, а вот что за функция ПолныйКод()? |
|||
25
mistеr
14.05.13
✎
22:01
|
(14) А зачем все эти извращения? Стандартные механизмы для слабаков?
|
|||
26
EvgeniuXP
14.05.13
✎
22:02
|
да сделай отдельный реквизит, перемножь при записи код (перед этим расформируй как надо) и запиши как число - в запросе получай.
|
|||
27
EvgeniuXP
14.05.13
✎
22:04
|
по коду синхронизируют только в 7.7 от безысходности, в 8.х по UID-у.
|
|||
28
dj_7up
14.05.13
✎
22:11
|
(25) Как предлогаете применить стандартные механизмы к данному решению?
(26) Зачем же его перемножать то? :) В чем преимущество хранения этого значения в отдельном реквизите, а не в коде, я и надеюсь получить ответы... (27) Что все таки подразумевается под понятием "синхронизация" касательно обсуждаемой темы? Я ничего не синхронизирую вроде как :) В интернет-магазин я делаю только выгрузку, одностороннюю. |
|||
29
dj_7up
14.05.13
✎
22:13
|
На всякий случай уточню, я только создаю всю это безобразие, структуру, т.е. хотелось бы сделать по уму, посему и обратился к помощи великих программеров. :)
|
|||
30
mistеr
14.05.13
✎
22:22
|
(28) Чтобы что-то применить, нужно внятно поставить общую задачу, чего пока сделано не было.
В 1С есть прекрасно работающие средства для поддержки иерархии в справочнике, без необходимости каких-то манипуляций с кодом. |
|||
31
dj_7up
14.05.13
✎
22:30
|
(22) Только доехал что Вы имели в виду :) GUID это что-то вроде 83a7b6bb-b8bc-11e2-80b8-c860006d8dde у каждого элемента справочника в 1с, но мне его использование слишком усложнит задачу, долго рассказывать, думаю меня выгонят с форума если начну :)
|
|||
32
Злопчинский
14.05.13
✎
22:34
|
Имея строки как числа - приведи к "единому знаменателю" - выровняй разрядную сетку.
"Имея коды 1019 и 10115" - правильно будет "Имея коды 01019 и 10115"- соответственно строки в этом случае будут сравниваться как числа одинаковой разрядности |
|||
33
EvgeniuXP
14.05.13
✎
22:39
|
(32) хвост может оказаться не известным...
101123 и 1019 уже 101123 001019 будет |
|||
34
hhhh
14.05.13
✎
23:06
|
(31) ты вот скажи, разве в ПХП строка "9" меньше чем строка "10"?
|
|||
35
dj_7up
14.05.13
✎
23:44
|
(34) Строка, нет. Поэтому для сравнения в 1с и используются нули перед цифрами, т.е. заполнены все разряды. Верно?
Посему я и решил использовать Реквизит Код как число, но появились неудобства с пробелом. Вот и обратился с такой дилемой за советом. |
|||
36
hhhh
14.05.13
✎
23:50
|
(35) тогда почему такой вопрос задаешь? ведь все знают, что
"1019" > "10115" и "1019" > "1000000000" просто открой типовую и посмотри там. Вопрос элементарно решается добавлением нулей слева. и найти элементарно, щелкаешь сортировку по коду, по убыванию, максимальный код самым верхним будет. |
|||
37
Зойч
14.05.13
✎
23:57
|
открой для себя Формат
|
|||
38
dj_7up
14.05.13
✎
23:58
|
(36) так мне как раз не подходит добавление нулей. Мне важно, что бы значение было 1019, 10115 и т.д.
Остается вариант с видом Число и каждый раз при необходимости делать "ЧГ=", а также в форме отображения установить подобный формат "ЧГ=", верно? |
|||
39
dj_7up
14.05.13
✎
23:59
|
(37) Да вот как раз открыл, спасибо :) пробую его использовать.
|
|||
40
hhhh
15.05.13
✎
00:40
|
(38) просто сделай реквизит мойКод, такой какой тебе подходит. А Код делай такой как у всех.
|
|||
41
dj_7up
15.05.13
✎
00:42
|
(40) Понял, спасибо. А в чем тогда преимущество? Код будет бесполезен для меня, мне придется его просто скрыть и нигде не использовать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |