|
Максимальный номер документа 🠗 (Волшебник 10.11.2017 07:25) | ☑ | ||
---|---|---|---|---|
0
antihacker
10.11.17
✎
06:57
|
Всем привет !
Нужно найти макимальный номер документа. Номера выглядит так PKKR1,PKKR2,,,PKKR12 Вот запрос Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ МАКСИМУМ(Проекты.номер) КАК Ссылка ИЗ Документ.Проекты КАК Проекты Где Проекты.Организация = &Организация"; Запрос.УстановитьПараметр("Организация",ТекущийОбъект.Организация); РезЗапрос = Запрос.Выполнить().Выбрать(); сообщить(РезЗапрос.Количество()); Если РезЗапрос.Количество() > 0 Тогда РезЗапрос.Следующий(); //Пока РезЗапрос.Следующий() Цикл Если РезЗапрос.Ссылка <> null Тогда КолСимволов = СтрДлина(РезЗапрос.Ссылка)-4; сообщить(РезЗапрос.Ссылка); НомерБезСуфикса = Число(?(Прав(РезЗапрос.Ссылка,КолСимволов)=null,0,Прав(РезЗапрос.Ссылка,КолСимволов))); сообщить(НомерБезСуфикса); НомерДокумента = ТекущийОбъект.Организация.Суффикс + СокрЛП(Число(НомерБезСуфикса+1)); сообщить(НомерДокумента); Иначе НомерДокумента = ТекущийОбъект.Организация.Суффикс + 1; КонецЕсли; // КонецЦикла; Иначе НомерДокумента = ТекущийОбъект.Организация.Суффикс+"000000001"; КонецЕсли; Почему то сообщить(РезЗапрос.Ссылка) постоянно показывает PKKR9. Почему ? Если удалить документы до PKKR8 или PKKR7, то все работает нормально. |
|||
1
torgm
10.11.17
✎
06:59
|
(0) потомучто строка
|
|||
2
1dvd
10.11.17
✎
07:00
|
PKKR9 больше чем PKKR10
|
|||
3
antihacker
10.11.17
✎
07:04
|
он что нули срезает ?
|
|||
4
VladZ
10.11.17
✎
07:04
|
(0) Потому что сравнение идет строки со строкой (!!!). Первые четыре символа у нас одинаковые. Пятый символ у первого документа ("9") больше чем "1" у второго. По правилам сравнения строк (!!! еще раз повторю: строк!!!!) PKKR9 > PKKR10.
|
|||
5
antihacker
10.11.17
✎
07:04
|
Теперь искать по максимуму даты дока ?
|
|||
6
VladZ
10.11.17
✎
07:04
|
Если нужно сравнивать числа - приводите к числу.
|
|||
7
VladZ
10.11.17
✎
07:05
|
По правилам сравнения чисел 10 > 9
|
|||
8
VladZ
10.11.17
✎
07:07
|
Проекты - это что? Справочник?
|
|||
9
shadow_sw
10.11.17
✎
07:07
|
читай (4)-(7) убери префикс, и сравнивай числа
|
|||
10
VladZ
10.11.17
✎
07:08
|
У любого справочника уже есть механизм обеспечения нумерации и уникальности. Это реквизит Код. Вместо "Проекты.номер" используй "Проекты.Код". Нумерацию кода привяжи к организации. И не будет надобности изобретать велосипед.
|
|||
11
antihacker
10.11.17
✎
07:10
|
Это самописная конфига. С нуля.
|
|||
12
1dvd
10.11.17
✎
07:11
|
(11) никакой роли не играет сей довод
|
|||
13
VladZ
10.11.17
✎
07:13
|
Ну и если теперь все переделывать на код нереально (ошибки при проектировании структуры базы случаются. Тут изначально нужно включать "чуйку"). Можно делать так: структура номера должна быть <префикс номера><Порядковый номер по порядку>. <префикс номера> - это ваши "волшебные буквы" PKKR. <Порядковый номер по порядку> - номер в виде 0000000001 (количество символов нужно продумать заранее).
|
|||
14
antihacker
10.11.17
✎
07:13
|
Как ? Ну там нету такого реквизита
|
|||
15
youalex
10.11.17
✎
07:14
|
(3) "9" > "1"
|
|||
16
VladZ
10.11.17
✎
07:14
|
(11) А, ну-ну.... Кладезь технических решений разных программистов (читать как "набор костылей").
|
|||
17
antihacker
10.11.17
✎
07:14
|
Какая разница ?
Все равно выдет так PKKR0000010 < PKKR000009 |
|||
18
1dvd
10.11.17
✎
07:15
|
(14) УстановитьНовыйНомер(<ПрефиксНомера>)
|
|||
19
antihacker
10.11.17
✎
07:15
|
VladZ, у нас есть работа. потому что есть костыли
|
|||
20
VladZ
10.11.17
✎
07:17
|
(17) Количество разрядов для цифр должна быть одинаковая.
0000010 - 7 разрядов, 000009 - 6 разрядов. Плохой пример. |
|||
21
youalex
10.11.17
✎
07:19
|
(19) Девиз у тебя уже есть. Осталось придумать герб
|
|||
22
antihacker
10.11.17
✎
07:24
|
То есть если количество разрялов одинаковые
то 0000010 >0000009 ? |
|||
23
Волшебник
модератор
10.11.17
✎
07:25
|
(22) проверь в табло
|
|||
24
antihacker
10.11.17
✎
07:26
|
Волщебник не понял
|
|||
25
VladZ
10.11.17
✎
07:29
|
(22) При сравнении строк программа сверяет посимвольно. Первый символ с первым, второй со вторым и т.д. Проверь.
|
|||
26
1dvd
10.11.17
✎
07:29
|
(24) всё он понял и дал правильный совет
|
|||
27
antihacker
10.11.17
✎
07:32
|
ВолщебЭто я не понял о чем Волшебник
|
|||
28
VladZ
10.11.17
✎
07:33
|
(27) Что именно не понятно? Открываешь табло и пишешь "0000010" > "0000009"
|
|||
29
VladZ
10.11.17
✎
07:33
|
Или ты не знаешь что такое "табло"?
|
|||
30
VladZ
10.11.17
✎
07:34
|
Или ты не знаешь что такое "проверь"? :)
|
|||
31
antihacker
10.11.17
✎
07:34
|
Како еще табло ?
|
|||
32
shadow_sw
10.11.17
✎
07:36
|
(31) пятнично
|
|||
33
VladZ
10.11.17
✎
07:39
|
(31) Мальчик, отойди от компьютера и позови взрослых.
|
|||
34
1dvd
10.11.17
✎
07:40
|
(31) гугель в помощь
|
|||
35
antihacker
10.11.17
✎
07:54
|
Как в модуле текщего документа применить УстановитьНовыйНомер ?
|
|||
36
1dvd
10.11.17
✎
08:03
|
(35)
Процедура ПриЗаписи(Отказ) УстановитьНовыйНомер(Префикс); КонецПроцедуры |
|||
37
Сияющий в темноте
10.11.17
✎
09:09
|
напишите свою сравнивалку,тогда все будет работать,только вот ее в запросе использовать будет нельзя
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |