|   |   | 
| 
 | Максимальный номер документа ↓ (Волшебник 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 | 
        напишите свою сравнивалку,тогда все будет работать,только вот ее в запросе использовать будет нельзя     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |