Имя: Пароль:
1C
1С v8
Как исключить определённый символ из номера при записи документа? БП 2.0
0 King-SD
 
28.05.15
06:22
Скажем есть номер П0000А250,,, при определённом условии Символ А исключался. Как это сделать? И если можно то тоже сделать исключение символа на определённом месте номера, неважно какой символ там будет...
1 Рэйв
 
28.05.15
06:43
НовыйНомер=Сред(Номер,1,(МестоСимвола-1))+Сред(Номер,(МестоСимвола+1),СтрДлина(Номер));
2 ЧеловекДуши
 
28.05.15
06:56
(0) Через Обработку События "Установка нового Номера."
В этом модуле "Процедуре" манипулируешь номером и пишешь его, как должно быть в системе.

Но на самом деле, я бы организовал доп. реквизит "НомерДокуемтов" и писал бы липовые номера туда.
А в реквизит "Номер", писал бы тот номер, что присваивается автоматически :)

...
Не скупись на Реквизиты, 1С от этого медленней не будет работать, только запросы, да и то от кривости писателя;)
3 King-SD
 
28.05.15
07:04
(2) Да мне бы тупо символ в номере заменить перед записью.
Есть процедура

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Если ОбменДанными.Загрузка Или Не мОбновлятьРеквизитыПриЗаписи Тогда
        Возврат;
    КонецЕсли;

    Если ЗначениеЗаполнено(ДокументОснование) И ДокументыОснования.Найти(ДокументОснование) = Неопределено Тогда
        ДокументОснование = Неопределено;
    КонецЕсли;
    
    Если ДокументОснование = Неопределено И ДокументыОснования.Количество() > 0 Тогда
        ДокументОснование = ДокументыОснования[0].ДокументОснование;
    КонецЕсли;
    
    Если ДатаНомерДокументовОплаты.Количество() > 0 Тогда
        ДатаПлатежноРасчетногоДокумента = ДатаНомерДокументовОплаты[0].ДатаПлатежноРасчетногоДокумента;
        НомерПлатежноРасчетногоДокумента = ДатаНомерДокументовОплаты[0].НомерПлатежноРасчетногоДокумента;
    КонецЕсли;
    
    Если НЕ СформированПриВводеНачальныхОстатковНДС Тогда
        Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию
            ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный Тогда
            ОпределениеПараметровСчетаФактуры();
        ИначеЕсли СводныйКорректировочный Тогда
            СводныйКорректировочный = Ложь;
        КонецЕсли;
    КонецЕсли;
    
    Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаСуммовуюРазницу Тогда
        СуммаНДСДокумента = СуммаНДС;
    КонецЕсли;    
    
    НаАвансДляКомитентаНаЗакупку = ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента
        И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентомНаЗакупку;
        
    НаРеализациюДляКомитентаНаЗакупку = (ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию
        ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный)
        И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентомНаЗакупку;
        
    Если НЕ НаАвансДляКомитентаНаЗакупку Тогда
        ДатаДокументаАвансаКомитента  = '00010101';
        НомерДокументаАвансаКомитента = "";
    КонецЕсли;
    
    Если НЕ НаАвансДляКомитентаНаЗакупку И НЕ НаРеализациюДляКомитентаНаЗакупку Тогда
        Продавец = Справочники.Контрагенты.ПустаяСсылка();
    КонецЕсли;
    

КонецПроцедуры

Мне нужно чтобы при условии
ВидСчетаФактуры <> Перечисления.ВидСчетаФактурыВыставленного.НаАванс

символ А в номере документа сменился на 0
4 Heckfy
 
28.05.15
07:35
СтрЗаменить(Номер,"А","");
5 Heckfy
 
28.05.15
07:35
СтрЗаменить(Номер,"А","0");
6 Рэйв
 
28.05.15
07:42
(4)А как только наткнется на чтото типа "ПА000А250" тут то и начнется самое интересное:-)
7 King-SD
 
28.05.15
07:47
(5) Это помогло, но появилась другая проблема,, при создании сл.документа значение номера не уникально. нужно както чтобы при такой ошибке он к номеру прибавлял +1. это конечно извращение, но может както можно это сделать?
8 Heckfy
 
28.05.15
08:03
Ой зря вы в нумераторы полезли..... Сделайте реквизит с альтернативным номером лучше....
(7) запросом выбрать максимум. К результату прибавить единицу. Только тип кода у вас скорее всего текстовый.... В общем, зря вы в нумератор полезли.
Программист всегда исправляет последнюю ошибку.