Имя: Пароль:
1C
1С v8
ЗУП переименование табельных номеров сотрудников
,
0 dmitry86
 
06.07.14
18:48
Добрый день.
Конфигурация Зарплата и Управление персоналом 8.2
Мне необходимо выполнить следующее задание:
Справочник сотрудники. Несколько организации в базе. Сделать обработку. Которая берет префикс из организации и перенумеровывает сотрудников так, что бы к табельному номеру добавился префикс в начало номера и он стал полным до 10 символов.
То есть был номер 001, стал номер ххх0000001.
я тут набросал кое-что, подскажите насколько это решение удовлетворяет заданию?
&НаКлиенте
Процедура Запуститьобработку(Команда)
    ЗапуститьобработкуНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗапуститьобработкуНаСервере()      

Выборка = Справочники.СотрудникиОрганизаций.Выбрать();
//Выборка = Справочники.СотрудникиОрганизаций.ПолучитьОбъект();
Пока Выборка.Следующий()  Цикл // начало перебора элементов справочника в цикле
//действия с очередным элементом ...
Сообщить("Сотрудник " + Выборка.Наименование);
об = Выборка.ПолучитьОбъект();

     НоваяДлинаНомера = 7; // Это параметр, он может быть разный :-)
СтарыйНомер = об.Код;

СтарыйНомер = СокрЛП(СтарыйНомер);
НовыйНомер = Прав(СтарыйНомер, НоваяДлинаНомера);
Префиксорганизации = Прав("000" + об.Организация.Префикс, 3);
Если СтарыйНомер <> НовыйНомер Тогда
    об.Код = Префиксорганизации + НовыйНомер;
    Сообщить(об);
    Сообщить(об.Код);

    об.Записать();
    
КонецЕсли;



КонецЦикла;
КонецПроцедуры
1 Wobland
 
06.07.14
18:50
запустить не догадался?
2 dmitry86
 
06.07.14
18:54
запустил, вроде работает, но хотелось бы узнать насколько это грамотное решение или колхоз полный?
3 Wobland
 
06.07.14
19:07
запрос с итогами по организации, НовыйНомер=Префикс+Прав("0000000"+СтарыйНомер, 7)...
4 dmitry86
 
06.07.14
20:00
(3)
я прошу прощения может я не совсем правильно вас понял, возможно вы имели ввиду нечто подобное?
&НаКлиенте
Процедура Запуститьобработку(Команда)
    ЗапуститьобработкуНаСервере();
КонецПроцедуры

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

Пока Результат.Следующий() Цикл
    //Код = Результат.Наименование;
    Код = Результат.Префикс + Прав("000" + Результат.Код, 7);
    Сообщить(Код);
КонецЦикла;  


КонецПроцедуры
5 dmitry86
 
06.07.14
21:11
(4) как записать код?
6 dmitry86
 
06.07.14
22:11
Народ гляньте вот так пойдет?

    Запрос = Новый Запрос("
|ВЫБРАТЬ
|    Код,
|    Организация.Префикс как Префикс
|ИЗ
|    Справочник.СотрудникиОрганизаций
|АВТОУПОРЯДОЧИВАНИЕ");
    
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
    РезультатКод = Справочники.СотрудникиОрганизаций.НайтиПоКоду(Результат.Код).ПолучитьОбъект();
    РезультатКод.Код = Результат.Префикс + Прав("000" + Результат.Код, 7);
    Сообщить(РезультатКод.Код);
    РезультатКод.Записать();
КонецЦикла;
7 mikecool
 
06.07.14
22:12
(6) работает правильно? если да, то пох - обработка то разовая
8 FireAlex
 
06.07.14
22:26
вдруг коды повторяются?
лучше вытащить из запроса ещё ссылку на справочник, и по ней получать объект.
9 dmitry86
 
06.07.14
22:36
(8) что такое ссылка на справочник, поясните пожалуйста?
10 Доминошник
 
06.07.14
22:48
(6) Префикс может быть пустым - тоже как-то надо учесть?

(8) Добавить в Выбрать (помимо Код, Организация.Префикс) ещё и Ссылка.
11 dmitry86
 
06.07.14
23:09
(10)     Запрос = Новый Запрос("
|ВЫБРАТЬ
|    Код,
|    Организация.Префикс как Префикс,
|    Ссылка
|ИЗ
|    Справочник.СотрудникиОрганизаций
|АВТОУПОРЯДОЧИВАНИЕ");
    
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
    РезультатКод = Справочники.СотрудникиОрганизаций.НайтиПоКоду(Результат.Ссылка).ПолучитьОбъект();
    РезультатКод.Код = Результат.Префикс + Прав("000" + Результат.Код, 7);
    Сообщить(РезультатКод.Код);
    РезультатКод.Записать();
КонецЦикла;
12 cons74
 
07.07.14
07:28
Колхоз однозначно. Есть же типовая обработка "универсальный подбор и обработка объектов" - там есть стандартный механизм перенумерации, в т.ч. со сменой префикса.
13 dmitry86
 
07.07.14
18:21
(12) есть конечно, но это было моим заданием для приглашения на собеседование программист-стажер 1с))
14 Wobland
 
07.07.14
18:24
(13) а ещё с таким почерком. фу