Имя: Пароль:
1C
1С v8
Помогите разобратся с подпиской на событие
0 inkvizitr
 
28.07.15
12:56
Есть задача изменить в документах "реализации" и "счет фактура выданная", поменять нумерацию, делаю все дело через подписку на событие, при записи документа номер формируется как надо, но когда я его закрываю, в общей коллекции документов у меня номер типовой, захожу в этот документ вновь, и еще раз жму записать и только тогда номер формируется тот который надо, т.е. приходится два раза жать кнопку записать, подписка сформирована на событие "ПриЗаписи", ниже синтаксис, как сделать так чтобы при одном нажатии кнопки записать уже формировался правильный номер документа?

Процедура УстановитьПрефиксПриЗаписи(Источник, Отказ) Экспорт
    
    //Получим дату документа
    ДатаДокумента = Источник.Дата;
    //Проверяем есть ли у документа существующий номер
    Если Источник.Дата <= Дата("20150801") Тогда
        Возврат;
    КонецЕсли;
    //Если номера нет тогда создадим его
    //Разберем номер документа на запчасти (Префик, номер)
    НомерДокумента = Источник.Номер;
    ПрефиксДокумента = Лев(НомерДокумента, 4);
    НомерДокумента = Прав(НомерДокумента, 6);
    //Отрежем лидирующие нули
    Пока Лев(НомерДокумента, 1) = "0" Цикл
        НомерДокумента = Прав(НомерДокумента, СтрДлина(НомерДокумента) - 1);
    КонецЦикла;
    //Сформируем свой номер формата [Префикс]-[Дата]-[Номер]
    ДатаДокумента = (Формат(ДатаДокумента, "ДФ=ММ")) + (Формат(ДатаДокумента, "ДФ=дд"));
    ШаблонНомера = Новый Структура("Префикс, ДатаДокумента, НомерДокумента", ПрефиксДокумента, ДатаДокумента, НомерДокумента);
    НомерДокумента = ШаблонНомера["Префикс"] + "-" + ШаблонНомера["ДатаДокумента"] + "-" + ШаблонНомера["НомерДокумента"];
    //Запишим правильный номер в документ
    Источник.Номер = НомерДокумента;
    
КонецПроцедуры
1 mehfk
 
28.07.15
13:02
Делай в ПередЗаписью
2 inkvizitr
 
28.07.15
13:03
(1) ща попробую
3 inkvizitr
 
28.07.15
13:06
(1) ПередЗаписью не подходит, т.к. у меня сначало типовой номер формируется а потом я в подписке на событие его разбираю и приделываю к нему дату
4 hhhh
 
28.07.15
13:09
(4) а ПриЗаписи по-любому не подходит, потому что оно делается уже после того как документ записан в базу.
5 hhhh
 
28.07.15
13:20
(3) ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ПриЗаписи (OnWrite)
Синтаксис:

ПриЗаписи(<Отказ>)
Параметры:

<Отказ>

Тип: Булево.
Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись документа выполнена не будет.
Значение по умолчанию: Ложь
Описание:

Возникает при записи объекта. Процедура-обработчик вызывается ПОСЛЕ ЗАПИСИ !!! объекта в базу данных, но до окончания транзакции записи.
6 bootini
 
28.07.15
13:24
(3)
ДокументОбъект, метод УстановитьНовыйНомер
7 lxndr
 
28.07.15
13:26
ващето есть событие "ПриУстановкеНовогоНомера"
8 inkvizitr
 
28.07.15
14:02
(6) (7) при выборе этих событий номера еще нет, а я в своем коде разбираю на запчасти сгенерированый типовой номер, короче я так понял, что у меня в документе формируется типовой номер, и когда форма открывается срабатывает походу подписка, и меняет его на нужный но не записывает, т.е. при втором нажатии кнопки записать я его записываю
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.