![]() |
|
Как исключить определённый символ из номера при записи документа? БП 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) запросом выбрать максимум. К результату прибавить единицу. Только тип кода у вас скорее всего текстовый.... В общем, зря вы в нумератор полезли. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |