Имя: Пароль:
1C
1С v8
Перестало срабатывать УстановитьНовыйНомер() при программном формировании документа.
0 zinzillya
 
03.03.25
17:16
как сейчас разводятся 2 префикса документов для ручного и программного вводов? Если в  ПрефиксацияОбъектовБПСобытия.УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения ставлю Префикс = "Т000-" (для Ручного ввода), то Док.УстановитьНовыйНомер("Z"); из Программного загрузчика перестал работать с этого года,
Если убираю свой Префикс для Ручного ввода, "Т000-" из процедуры подписки, то при ручном вводе ляпает 0000-Z00876.
Префикс на базу или подразделение не подходит - только у Реализаций нужны.

Раньше можно было Док.Дата = 12.03.23; Док.УстановитьНовыйНомер("Z"); всё. Номер получен и не переписывался. Сейчас "перебивается" подпиской УстановитьПрефиксИнформационнойБазыОрганизацииПодразделенияНомеруДокумента при ПриУстановкеНовогоНомера

вообще странно, ведь если сделать Док.Дата = 12.03.23; Док.Номер = "123123"; и записать - Номер останется. по идее же Док.УстановитьНовыйНомер("Z"); это же аналог прямого присваивания. Но теперь возможно стала происходить перезапись сгенерированного номера по процедуре общего модуля. ?

не хочется тупой поиск последнего номера делать. хочется чтобы само генерило 0000-Z00876 при программном создании и Т000-000876 при ручном вводе.
1 zinzillya
 
03.03.25
18:24
короче пока при программной загрузке

Док.ДополнительныеСвойства.Вставить("ЭтоПрограммноеСоздание",Истина);
Док.УстановитьНовыйНомер("Z");

а в общий модуль

Процедура УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения(Источник, СтандартнаяОбработка, Префикс) Экспорт
    
    ИмяОрганизации   = ПрефиксацияОбъектовСобытия.ИмяРеквизитаОрганизация(Источник.Метаданные());
    ИмяПодразделения = ИмяРеквизитаПодразделение(Источник.Ссылка);
    //avp( 030325
    //Префикс = ПрефиксИнформационнойБазыОрганизацииПодразделения(Источник[ИмяОрганизации], Источник[ИмяПодразделения], Префикс);
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
        Попытка
            ЭтоПрограммноеСоздание = Источник.ДополнительныеСвойства.ЭтоПрограммноеСоздание;
        Исключение
            ЭтоПрограммноеСоздание = Ложь;
        КонецПопытки;
        Если ЭтоПрограммноеСоздание Тогда
            Префикс = ПрефиксИнформационнойБазыОрганизацииПодразделения(Источник[ИмяОрганизации], Источник[ИмяПодразделения], Префикс);
        Иначе
            Префикс = "Т000-";
        КонецЕсли;
    Иначе
        Префикс = ПрефиксИнформационнойБазыОрганизацииПодразделения(Источник[ИмяОрганизации], Источник[ИмяПодразделения], Префикс);
    КонецЕсли;
    //avp)
КонецПроцедуры

вроде нахватывает что надо.
2 zinzillya
 
04.03.25
09:01
так луцше.

Процедура УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения(Источник, СтандартнаяОбработка, Префикс) Экспорт
    
    ИмяОрганизации   = ПрефиксацияОбъектовСобытия.ИмяРеквизитаОрганизация(Источник.Метаданные());
    ИмяПодразделения = ИмяРеквизитаПодразделение(Источник.Ссылка);
    //avp( 030325
    //Префикс = ПрефиксИнформационнойБазыОрганизацииПодразделения(Источник[ИмяОрганизации], Источник[ИмяПодразделения], Префикс);
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
        Если Источник.ДополнительныеСвойства.Свойство("ЭтоПрограммноеСоздание") Тогда
            Префикс = ПрефиксИнформационнойБазыОрганизацииПодразделения(Источник[ИмяОрганизации], Источник[ИмяПодразделения], Префикс);
        Иначе
            Префикс = "Т000-";
        КонецЕсли;
    Иначе
        Префикс = ПрефиксИнформационнойБазыОрганизацииПодразделения(Источник[ИмяОрганизации], Источник[ИмяПодразделения], Префикс);
    КонецЕсли;
    //avp)
КонецПроцедуры