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