Имя: Пароль:
1C
1С v8
Префиксы в справочнике
0 Мандалай
 
28.11.17
10:00
Добрый день.
Кто-нибудь реализовывал префиксацию элементов справочника по принципу: если в нужной группе то нужный префикс, а если нет, то с нулей начинается.
1 Волшебник
 
модератор
28.11.17
10:00
Это артикул. Префиксация кодов нужна для распределённых баз.
2 AlexMee
 
28.11.17
10:06
(0)     //Если ПустаяСтрока(RuCode) Тогда
    //    Запрос = Новый Запрос;
    //    Запрос.Текст= "ВЫБРАТЬ
    //    |    МАКСИМУМ(ПОДСТРОКА(СотрудникиОрганизаций.RuCode, 3, 5)) КАК МаксимальныйКод
    //    |ИЗ
    //    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций";
    //    Рез = Запрос.Выполнить().Выбрать();
    //    Если Рез.Следующий() Тогда
    //        Попытка
    //            МаксимальныйКод=Число(Рез.МаксимальныйКод);
    //        Исключение
    //            МаксимальныйКод=0;
    //        КонецПопытки;
    //    Иначе
    //        МаксимальныйКод=0;
    //    КонецЕсли;
    //    
    //    МаксимальныйКод = МаксимальныйКод+1;
    //    RuCode="RU"+Формат(МаксимальныйКод,"ЧЦ=5; ЧВН=; ЧГ=0");
    //КонецЕсли;
3 AlexMee
 
28.11.17
10:07
(0) вот счетчик, только проверку на группу сделай и все
4 Мандалай
 
28.11.17
10:09
(3)Хм, прикольно, спасибо.
А если в качестве префикса подставить "00"?
5 Serg_1960
 
28.11.17
10:21
"Простота хуже воровства, если она не от ума, а от заумия."

Наверное некоторые не в курсе, как разработчики платформы мучительно долго искали верные алгоритмы режимов автонумерации... и тут пришёл AlexMee и всё разрулил :)

PS: при многопользовательском режиме работы не всё так просто и очевидно.
6 Волшебник
 
модератор
28.11.17
10:23
Код лучше присваивать при записи
7 Serg_1960
 
28.11.17
10:27
PSS: хех.. в типовых алгоритмах всё нужное автору уже есть. Тема решается одной строкой кода, максимум - тремя :)
8 Мандалай
 
28.11.17
10:28
Я префикс определяю ПриУстановкеНовогоКода, остальное платформа сама делает.
9 AlexMee
 
28.11.17
10:31
(7)
ты про это?
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    
    ОбщегоНазначенияЗК.ДобавитьПрефиксОрганизации(ЭтотОбъект, Префикс);
    ОбщегоНазначенияЗК.ДобавитьПрефиксУзла(Префикс);
    
    // получить новый номер документа по совокупности кадровых документов
    ПроцедурыУправленияПерсоналом.ПриУстановкеНовогоНомераКадровогоДокумента(СтандартнаяОбработка, ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Организация, "ЕдиныйНумераторКадровыхДокументов"), Номер, Префикс, Дата);
    //Алена +
    Префикс="у-";
    //Алена -
КонецПроцедуры
10 Волшебник
 
модератор
28.11.17
10:32
(9) Алена жжот.
11 Мандалай
 
28.11.17
10:37
(7)Колись давай... интригу развел, мхатовскую паузу выдержал, теперь давай развязку.
12 Serg_1960
 
28.11.17
11:25
В типовых конфигурациях за установку кодов справочника и номеров документов отвечают подписки на события. У них есть общая часть - вызов функции, которая определяет и присваивает префиксы (организации и узла) - вот там легко установить "свои правила" префиксации. Хоть в одну,  хоть в три строки :) Проверка нужного вида, нужного родителя и установка своего префикса. Всё просто.

PS: сказал бы более конкретно, но конфигурация не озвучена.
Программист всегда исправляет последнюю ошибку.