Общий модуль
Функция СведенияОВнешнейОбработке() Экспорт
Назначения = Новый Массив ;
Назначения.Добавить("Документ.ПриемНаРаботу") ;
ПараметрыРегистрации = Новый Структура ;
ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение",Назначения);
В форме
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
НомерД ="";
Для Каждого Док Из ОбъектыНазначенияМассив цикл
ВыполнитьНаСервере(Док,НомерД);
КонецЦикла;
ОбновитьИнтерфейс();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьНаСервере(Док,НомерД)
д = док.ссылка.ПолучитьОбъект();
Запрос = Новый Запрос;
Текст = "ВЫБРАТЬ
| КадровыеДокументы.Ссылка КАК Ссылка,
| КадровыеДокументы.Дата КАК Дата,
| КадровыеДокументы.Номер КАК ПолныйНомер,
| КадровыеДокументы.Тип КАК Тип,
| ПОДСТРОКА(КадровыеДокументы.Номер, 6, 11) КАК Номер
|ИЗ
| ЖурналДокументов.КадровыеДокументы КАК КадровыеДокументы
|ГДЕ
| КадровыеДокументы.Дата >= &Дата
| И КадровыеДокументы.Номер ПОДОБНО &Номер" ;
типДокумента = ТипЗнч(Д);
Если типДокумента = Тип("ДокументСсылка.Отпуск")
Или типДокумента = Тип("ДокументОбъект.ОтпускаСотрудников")
или типДокумента = Тип("ДокументОбъект.ОтпускБезСохраненияОплаты")
или типДокумента = Тип("ДокументОбъект.ОтпускПоУходуЗаРебенком")
ТОгда
Запрос.УстановитьПараметр("Номер","%ЛК25%");
Префикс = "ЛК25-";
ИначеЕсли типДокумента = Тип("ДокументОбъект.Увольнение")
или типДокумента = Тип("ДокументОбъект.УвольнениеСписком")
или типДокумента = Тип("ДокументОбъект.ПриемНаРаботу")
или типДокумента = Тип("ДокументОбъект.ПриемНаРаботуСписком")
или типДокумента = Тип("ДокументОбъект.ИндексацияЗаработка")
или типДокумента = Тип("ДокументОбъект.КадровыйПеревод")
или типДокумента = Тип("ДокументОбъект.КадровыйПереводСписком") Тогда
Запрос.УстановитьПараметр("Номер","%ЛС25%");
Префикс = "ЛС25-";
КонецЕсли;
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("Дата",НачалоГода(Д.Дата));
ТЗ = запрос.Выполнить().Выгрузить();
НомерМакс = 0;
Если ТЗ.Количество()=0 Тогда
иначе
Для Каждого Стр Из ТЗ цикл
Попытка
НомерМакс = Макс(НомерМакс,Число(Стр.Номер));
Исключение
// могут быть другие символы
КонецПопытки;
КонецЦикла;
КонецЕсли;
Если типДокумента = Тип("ДокументОбъект.ИндексацияЗаработка") Тогда
Текст = "ВЫБРАТЬ
| ИндексацияЗаработка.Ссылка КАК Ссылка,
| ИндексацияЗаработка.Дата КАК Дата,
| ИндексацияЗаработка.Номер КАК ПолныйНомер,
| ПОДСТРОКА(ИндексацияЗаработка.Номер, 6, 11) КАК Номер
|ИЗ
| Документ.ИндексацияЗаработка КАК ИндексацияЗаработка
|ГДЕ
| ИндексацияЗаработка.Дата >= &Дата
| И ИндексацияЗаработка.Номер ПОДОБНО &Номер" ;
Запрос.Текст = Текст;
ТЗ = запрос.Выполнить().Выгрузить();
Если ТЗ.Количество()=0 Тогда
иначе
Для Каждого Стр Из ТЗ цикл
Попытка
НомерМакс = Макс(НомерМакс,Число(Стр.Номер));
Исключение
// могут быть другие символы
КонецПопытки;
КонецЦикла;
КонецЕсли;
КонецЕсли;
НомерМакс = НомерМакс +1;
Д.Номер = Префикс + СтрЗаменить(Строка(НомерМакс),Символы.НПП,"");
НомерД = Д.Номер;
Д.Записать();
КонецПроцедуры
Показать