Имя: Пароль:
1C
 
Как найти наименьшее свободное значение кода справочника
0 slitov
 
31.08.17
17:37
УПП 1.3
Перенесли справочники из другой учетной системы, сейчас нумерация начинается с 17000, но появилась задача для двух групп номенклатуры задавать код не больше 000000999. На данный момент штук 500 кодов в этом диапазоне свободные, но не могу придумать, как получить значение кода, которого еще нет в справочнике. Может у кого был опыт, подскажите как реализовать?
1 Heckfy
 
31.08.17
17:38
Сгенени ТЗ с одной колонкой Заполни ее от0 до 100500. Склей со справочником по NULL
2 Ёпрст
 
31.08.17
17:39
любой групповой обработкой справочника перенумеровать его весь целиком. делов то
3 slitov
 
31.08.17
17:40
(2) Перенумерация не рассматривается, по ним идет штрих-кодирование.
4 monsterZE
 
31.08.17
17:42
поимей табличку свободных, например через найти по коду в нужном диапазоне
и передвинь те, которые нужно
5 abfm
 
31.08.17
17:45
Константа последний пустой код. При создании нового ищем следующий, начиная с неё и пишем в константу. Криво но работает.
6 Вафель
 
31.08.17
17:46
соединить с собой по код = код -1 и фильтр есть null
7 ptiz
 
31.08.17
17:46
(0) " задача для двух групп номенклатуры задавать код не больше 000000999"
задача криво поставлена
8 Ёпрст
 
31.08.17
17:48
(3) Это как ? Свой штрихкод каким-то образам у вас привязан к коду номенклатуры ? Или код номенклатуры , это и есть ШК у вас ?
9 _Дайвер_
 
31.08.17
17:50
(0) Ручками)
10 Heckfy
 
31.08.17
17:51
(3) А реквизит Код хоть закрыт для редактирования? :)
11 Лефмихалыч
 
31.08.17
17:51
есть два кода "М25/ПХ-000003" и "ЖПО-07652419" который из них наименьший?

Хернёй вы страдаете. просто перенумеруйте весь справочник и всё.
12 _Дайвер_
 
31.08.17
17:53
(11) И штрих еще заполнить)
13 Вафель
 
31.08.17
17:55
А код нужен, чтоб тетеньки кассиры могли с клавиатуры его набирать
14 abfm
 
31.08.17
17:55
(11) У нас число, код = ПЛУ в весах, продавцы все колеса проткнут.
15 Argon
 
31.08.17
17:56
(0) код числовой или строка?
16 Господин ПЖ
 
31.08.17
17:57
(13) для этого есть не коды а артикулы

за штрихкоды на базе "служебных" реквизитов надо яйцы отрывать...
17 Вафель
 
31.08.17
17:58
(6) Для строкового кода не сработает алгоритм
18 abfm
 
31.08.17
18:00
(16)А как они ищут пустые артикулы?
19 slitov
 
31.08.17
18:05
(15) Строка, в том и беда. Можно конечно цикл организовать, где от 100+1, и к числу нули прибавлять, если не найдет номенклатуру по коду, значит свободный.  
Это типовой код номенклатуры в УПП
(8) Для этих двух групп последние три цифры и используются в ШК (16) Надо, я отговаривал, но не получилось...
20 Argon
 
31.08.17
18:05
Функция СвободныйКод()
    
    Код999 = 999;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Код <= &Код999
    |
    |УПОРЯДОЧИТЬ ПО
    |    Код";
    
    Запрос.УстановитьПараметр("Код999", Код999);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
        
    ТекКод = 0
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если (ВыборкаДетальныеЗаписи.Код - ТекКод) > 1 тогда
            Возврат ВыборкаДетальныеЗаписи.Код;
        КонецЕсли;
    КонецЦикла;
    
КонецФункции

Как то так?
21 Argon
 
31.08.17
18:06
(19) а код ты с числом будешь присваивать?
22 Argon
 
31.08.17
18:06
или  АА0000231 ?
23 Argon
 
31.08.17
18:09
ГДЕ
    Код ПОДОБНО "000000%
24 monsterZE
 
31.08.17
18:09
да в чем проблема, проверить по НайтиПоКоду? =)
выбрал список "к перемещению"
ищешь в свободном диапазоне по шаблону
свободен - переносишь
если это разовая операция
25 breezee
 
31.08.17
18:12
(0) Через поытку записывайте, если ислючение - заменяйте последний символ
26 Heckfy
 
31.08.17
18:19
ОФФ: Прям сборище инвалидов какое то. Каждый свой костыль суёт. :). У ТС, ИМХО, бардак полный. ТС, по ходу, хочет автоматизировать хаос. Ну получится на выходе автоматизированный хаос. Тут нужно не следствие, а причину лечить.
27 vicof
 
31.08.17
19:47
(11)
(26)
+150000
28 slitov
 
01.09.17
00:23
(20) +1 в Вашу карму! Помогли костыль запилить. Вот рабочий код, мож еще кому пригодится.

Функция ПолучитьНовыйКод(Номенклатура)
    
    Код999 = "999";
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Код <= &Код999
    |
    |УПОРЯДОЧИТЬ ПО
    |    Код";
    
    Запрос.УстановитьПараметр("Код999", Код999);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    ТекКод = 0;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если (ВыборкаДетальныеЗаписи.Код - ТекКод) > 1 тогда
            ТекКод = 1+ТекКод;
            СвободныйКод = Прав("0000000000"+ТекКод, 11);
            Возврат СвободныйКод;
        КонецЕсли;
        ТекКод = ВыборкаДетальныеЗаписи.Код;
    КонецЦикла;
        
КонецФункции