![]() |
![]() |
![]() |
|
Программная нумерация документов | ☑ | ||
---|---|---|---|---|
0
titan83
12.09.10
✎
16:30
|
Здравствуйте!
Хочу изменить порядок нумерации расходной накладной, чтобы было примерное так: 12\09-01. Первое число - день месяца, второе - месяц, третье - номер документа за этот день. К сожалению, в программировании конкретно 1с я не очень силен. Но по старой памяти вижу алгоритм таким: 1. Получить текущую дату. 2. получить все документы данного вида (расходная накладная) за эту дату. 3. В событии ПриВводеНового (вроде так) присвоить НомерДок полученные ранее данные Если есть готовый пример (не обязательно такой), иллюстрирующий принципы работы с номером документа, то буду признателен вдвойне. С уважением, Аликин Сергей |
|||
1
Эльниньо
12.09.10
✎
16:42
|
Преф = Сред(Строка(РабочаяДата()), 4, 2) + "/" + Лев(Строка(РабочаяДата()), 2) + "-";
УстановитьНовыйНомер(Преф); |
|||
2
Зеленый Кот
12.09.10
✎
16:48
|
а может не надо?
|
|||
3
Mагистр
12.09.10
✎
16:51
|
проще сделай еще один реквизит, который будет назван , например так: НОВЫЙНОМЕР и делай с ним что хочешь, а нормальный номер не трогай.
|
|||
4
titan83
12.09.10
✎
17:12
|
Эльниньо, спасибо!
Все отлично! Тебе огромный респект! |
|||
5
titan83
13.09.10
✎
08:18
|
только одну канитель не могу побороть - ведущий ноль не выводится в печатной форме.
сделал так: Преф = ""; Если СтрДлина(Сред(Строка(РабочаяДата()), 4, 2)) = 1 Тогда Преф = "0"; КонецЕсли; Преф = Преф + Сред(Строка(РабочаяДата()), 4, 2) + "/" + Лев(Строка(РабочаяДата()), 2) + "-"; УстановитьНовыйНомер(Преф); В форме все отражается правильно, а печатной форме ведущего ноля нет. куда копнуть? |
|||
6
Rie
13.09.10
✎
08:20
|
(5) Там функция есть в Глобальном модуле для формирования номера в печатной форме. Её подправь - и будет счастье.
|
|||
7
dk
13.09.10
✎
08:35
|
(0) будущие проги этой конфы еще долго будут поминать тебя недобрым словом.
Рекомендую установку нового номера вывести в глобальник, иначе с программным созданием документов наплюхаешься |
|||
8
titan83
13.09.10
✎
13:35
|
на счет прогеров, пожалуй, соглашусь)
но остался один нерешенный вопрос, при вводе накладной на основании счета, номер накладной всегда один и тот же (естественно, неправильный). глянул в модуле накладной, там есть процедура ввод на основании, но добавление туда установки номера эффекта не дало. где смотреть? и еще: спасибо огромное за ваши ответы, вдохновляет)) |
|||
9
titan83
13.09.10
✎
13:42
|
отвечу сам себе: ВводНаОсновании.
|
|||
10
Wit
13.09.10
✎
13:43
|
(9) а в (8) ты на какую процедуру смотрел?
|
|||
11
titan83
13.09.10
✎
13:59
|
Функция ЗаполнитьНаОсновании()
но это, как я понимаю, относится к документам, вводимым на основании накладной. другая проблемка - левая часть, которую собираю я, правильная, но вот после тире надо бы убрать ведущий ноль, т.е. сделать не "01", а просто "1", причем это НомерДокПечатнойФормы = глПреобразоватьНомерДок(НомерДок, 1, 0) влияет только на ведущие ноли в той части, которую заполняю я, на автогенерируемую воздействия не оказывает. как этот ноль скрыть? |
|||
12
Rie
13.09.10
✎
18:41
|
(11) Никак не скрыть. И не надо скрывать, если не хочешь поиметь больших проблем с нумерацией. Если количество документов за период не превышает 9, можешь уменьшить длину номера.
|
|||
13
Эльниньо
13.09.10
✎
18:56
|
Строка(Число("01"))
|
|||
14
titan83
14.09.10
✎
18:40
|
Эльниньо, спасибо за ответ. Но вроде как мы только на префикс влияем, как применить твое преобразование к номеру, генерируемому 1с?
извини, если вопрос (и ответ на него) очевидный) |
|||
15
Эльниньо
14.09.10
✎
19:18
|
(14) Строка(ТвоёЧисло)
|
|||
16
titan83
15.09.10
✎
14:02
|
Извини, я, наверное, неправильно выразился(
Подстановка переменной - это понятно, но вот здесь Преф = Сред(Строка(РабочаяДата()), 4, 2) + "/" + Лев(Строка(РабочаяДата()), 2) + "-"; мы формирует только ПРЕФИКС, т.е. например "04\11-", а вот то, что после тире - например, "01", "02" и т.д., число подставляемое 1с автоматически. и вот у него мне и надо убрать ведущий ноль при выводе на печать. Если ты подскажешь название переменной, в которой содержится это значение, то я буду очень признателен! |
|||
17
Wit
15.09.10
✎
14:04
|
длину строки с номером знаешь
длину префикса знаешь после формирования нового номера вырезаешь то что за префиксом, делаешь (13) и клеишь назад. |
|||
18
titan83
15.09.10
✎
14:19
|
Так я об этом и спрашиваю - как называется переменная, в которой хранится полный номер? откуда вырезать то, что за префиксом? или это значение возвращает функция УстановитьНовыйНомер(Преф)?
Если бы у меня была полная строка, то я бы не стал утруждать форумчан, а быстренько бы посмотрел строковые функции в справочнике. |
|||
19
babytype
15.09.10
✎
14:22
|
НомерДок - имя переменной
|
|||
20
babytype
15.09.10
✎
14:34
|
а еще в типовых есть такая функция:
// Возвращает номер документа без префикса Функция глНомерБезПрефикса(Знач НомерДок) Экспорт Если Найти(НомерДок,"-") > 0 Тогда Возврат Число(Сред(НомерДок,Найти(НомерДок,"-")+1)); Иначе Возврат Число(НомерДок); КонецЕсли; КонецФункции |
|||
21
Эльниньо
15.09.10
✎
17:07
|
НовыйНомер = НомерДок;
К = Найти(НовыйНомер, "/"); НовыйНомер = Лев(НовыйНомер, К) + Число(Прав(НовыйНомер, СтрДлина(НовыйНомер) - К)); НомерДок = НомерДок; |
|||
22
Эльниньо
15.09.10
✎
17:08
|
+(21) Можно короче, но так понятнее
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |