Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Максимальный номер документа

↓ [Волшебник, 10.11.17 - 07:25]
Максимальный номер документа
Я
   antihacker
 
10.11.17 - 06:57
Всем привет !

Нужно найти макимальный номер документа. Номера выглядит так PKKR1,PKKR2,,,PKKR12
Вот запрос

Запрос = Новый Запрос;
    Запрос.Текст ="ВЫБРАТЬ МАКСИМУМ(Проекты.номер) КАК Ссылка ИЗ Документ.Проекты КАК Проекты Где Проекты.Организация = &Организация";
    
    Запрос.УстановитьПараметр("Организация",ТекущийОбъект.Организация);
    
    РезЗапрос = Запрос.Выполнить().Выбрать();
    
    сообщить(РезЗапрос.Количество());
    
    Если  РезЗапрос.Количество() > 0 Тогда

          РезЗапрос.Следующий();
          //Пока РезЗапрос.Следующий() Цикл

             
               Если РезЗапрос.Ссылка <> null Тогда
                  
                    КолСимволов = СтрДлина(РезЗапрос.Ссылка)-4;
                    
                    сообщить(РезЗапрос.Ссылка);
                    
                    НомерБезСуфикса = Число(?(Прав(РезЗапрос.Ссылка,КолСимволов)=null,0,Прав(РезЗапрос.Ссылка,КолСимволов)));
                    
                    сообщить(НомерБезСуфикса);
                    
                    НомерДокумента =  ТекущийОбъект.Организация.Суффикс + СокрЛП(Число(НомерБезСуфикса+1));
                    
                    сообщить(НомерДокумента);
                    
                Иначе
                    
                    НомерДокумента =  ТекущийОбъект.Организация.Суффикс  + 1; 

                КонецЕсли;    
               
             
        // КонецЦикла;

    Иначе
        
          НомерДокумента = ТекущийОбъект.Организация.Суффикс+"000000001";
        
    КонецЕсли;


Почему то сообщить(РезЗапрос.Ссылка) постоянно показывает PKKR9. Почему ? Если удалить документы до PKKR8 или PKKR7, то все работает нормально.
 
 
   torgm
 
1 - 10.11.17 - 06:59
(0)  потомучто строка
   1dvd
 
2 - 10.11.17 - 07:00
PKKR9 больше чем PKKR10
   antihacker
 
3 - 10.11.17 - 07:04
он что нули срезает ?
   VladZ
 
4 - 10.11.17 - 07:04
(0) Потому что сравнение идет строки со строкой (!!!). Первые четыре символа у нас одинаковые. Пятый символ у первого документа ("9") больше чем "1" у второго. По правилам  сравнения строк (!!! еще раз повторю: строк!!!!) PKKR9 > PKKR10.
   antihacker
 
5 - 10.11.17 - 07:04
Теперь искать по максимуму даты дока ?
   VladZ
 
6 - 10.11.17 - 07:04
Если нужно сравнивать числа - приводите к числу.
   VladZ
 
7 - 10.11.17 - 07:05
По правилам сравнения чисел 10 > 9
   VladZ
 
8 - 10.11.17 - 07:07
Проекты - это что? Справочник?
   shadow_sw
 
9 - 10.11.17 - 07:07
читай (4)-(7) убери префикс, и сравнивай числа
   VladZ
 
10 - 10.11.17 - 07:08
У любого справочника уже есть механизм обеспечения нумерации и уникальности. Это реквизит Код. Вместо "Проекты.номер" используй "Проекты.Код". Нумерацию кода привяжи к организации. И не будет надобности изобретать велосипед.
 
 Рекламное место пустует
   antihacker
 
11 - 10.11.17 - 07:10
Это самописная конфига. С нуля.
   1dvd
 
12 - 10.11.17 - 07:11
(11) никакой роли не играет сей довод
   VladZ
 
13 - 10.11.17 - 07:13
Ну и если теперь все переделывать на код нереально (ошибки при проектировании структуры базы случаются. Тут изначально нужно включать "чуйку"). Можно делать так: структура номера должна быть <префикс номера><Порядковый номер по порядку>. <префикс номера> - это ваши "волшебные буквы" PKKR. <Порядковый номер по порядку> - номер в виде 0000000001 (количество символов нужно продумать заранее).
   antihacker
 
14 - 10.11.17 - 07:13
Как ? Ну там нету такого реквизита
   youalex
 
15 - 10.11.17 - 07:14
(3) "9" > "1"
   VladZ
 
16 - 10.11.17 - 07:14
(11) А, ну-ну....  Кладезь технических решений разных программистов (читать как "набор костылей").
   antihacker
 
17 - 10.11.17 - 07:14
Какая разница ?

Все равно выдет так PKKR0000010 < PKKR000009
   1dvd
 
18 - 10.11.17 - 07:15
(14) УстановитьНовыйНомер(<ПрефиксНомера>)
   antihacker
 
19 - 10.11.17 - 07:15
VladZ, у нас есть работа. потому что есть костыли
   VladZ
 
20 - 10.11.17 - 07:17
(17) Количество разрядов для цифр должна быть одинаковая.

0000010 - 7 разрядов, 000009 - 6 разрядов. Плохой пример.
   youalex
 
21 - 10.11.17 - 07:19
(19) Девиз у тебя уже есть. Осталось придумать герб
   antihacker
 
22 - 10.11.17 - 07:24
То есть если количество разрялов одинаковые 

то 0000010 >0000009   ?
   Волшебник
 
Модератор
23 - 10.11.17 - 07:25
(22) проверь в табло
   antihacker
 
24 - 10.11.17 - 07:26
Волщебник не понял
   VladZ
 
25 - 10.11.17 - 07:29
(22) При сравнении строк программа сверяет посимвольно. Первый символ с первым, второй со вторым и т.д. Проверь.
   1dvd
 
26 - 10.11.17 - 07:29
(24) всё он понял и дал правильный совет
   antihacker
 
27 - 10.11.17 - 07:32
ВолщебЭто я не понял о чем Волшебник
   VladZ
 
28 - 10.11.17 - 07:33
(27) Что именно не понятно? Открываешь табло и пишешь "0000010" > "0000009"
   VladZ
 
29 - 10.11.17 - 07:33
Или ты не знаешь что такое "табло"?
   VladZ
 
30 - 10.11.17 - 07:34
Или ты не знаешь что такое "проверь"? :)
   antihacker
 
31 - 10.11.17 - 07:34
Како еще табло ?
   shadow_sw
 
32 - 10.11.17 - 07:36
(31) пятнично
   VladZ
 
33 - 10.11.17 - 07:39
(31) Мальчик, отойди от компьютера и позови взрослых.
 
 
   1dvd
 
34 - 10.11.17 - 07:40
(31) гугель в помощь
   antihacker
 
35 - 10.11.17 - 07:54
Как в модуле текщего документа применить УстановитьНовыйНомер ?
   1dvd
 
36 - 10.11.17 - 08:03
(35)
Процедура ПриЗаписи(Отказ)
    УстановитьНовыйНомер(Префикс);
КонецПроцедуры
   Сияющий в темноте
 
37 - 10.11.17 - 09:09
напишите свою сравнивалку,тогда все будет работать,только вот ее в запросе использовать будет нельзя


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует