Имя: Пароль:
1C
 
Следующий номер документа как получить?
Ø
0 125
 
12.01.05
00:14
При создании нового документа (т.е. документ не записан еще) мне надо присвоить номер на 1 больше, т.е. следующий. При этом номер текстовый.
Прибавлять 1 - так она просто в конец строки дописывается, УстановитьНовыйНомер() не берет почему-то... Как еще?
1 mthr
 
12.01.05
00:41
Где-то в недрах типовой видел процедурку хитрую... Берем один символ с конца. Если он число, то берем два символа с конца... Угу?
2 125
 
12.01.05
00:44
А где видели-то? Заново писать неохота :-)
3 mthr
 
12.01.05
00:56
Хорошо. Переделаем :) Начнем сначала...
.
Номер = "Префикс0007770";
Сч = 0;
Пока Число(Прав(Номер, СтрДлина(Номер) - Сч)) = 0 Цикл
 Сч = Сч + 1;
КонецЦикла;
Сообщить("Ч(0)" + (СтрДлина(Номер) - Сч));
НовыйНомер = Лев(Номер, Сч) + Формат(Число(Прав(Номер, СтрДлина(Номер) - Сч)) + 1, "Ч(0)" + Сч);
Сообщить("Номер = " + Номер);
Сообщить("НовыйНомер = " + НовыйНомер);
.
Во, блин... (три минуты :)
4 bsg
 
12.01.05
00:59
(0) Зачем такое нужно, если не секрет?
5 mthr
 
12.01.05
01:01
По ходу дела, лажанулся слегка... Да и понятнее будет:
.
  Номер = "Преф0007770";
  Сч = 0;
  Пока Число(Прав(Номер, СтрДлина(Номер) - Сч)) = 0 Цикл
   Сч = Сч + 1;
  КонецЦикла;
  Префикс = Лев(Номер, Сч);
  СтарыйНомерЧислом = Число(Прав(Номер, СтрДлина(Номер) - Сч));
  НовыйНомерЧислом = СтарыйНомерЧислом + 1;
  ФорматнаяСтрокаЧисловойЧасти = "Ч(0)" + (СтрДлина(Номер) - Сч);
  НовыйНомер = Префикс + Формат(НовыйНомерЧислом, ФорматнаяСтрокаЧисловойЧасти);
  Сообщить("Номер = " + Номер);
  Сообщить("НовыйНомер = " + НовыйНомер);
.
Ввот...
6 125
 
12.01.05
01:03
(3) Это будет работать? :-))) Спасибо!!!
(4) Часть документов вводится в другой программе, на них в 1С будет только текстовая ссылка, занятые номера фиксируются, нужен первый незанятый.
7 bsg
 
12.01.05
01:08
(6) Не понял ничего.
Док=создатьобъект("Документ.....");
Док.Новый();
Док.ДатаДок=ДатаДок; // дело происходит в модуле формы документа?
Док.УстановитьНовыйНомер();
Док.Записать();
УстановитьНовыйНомер();
Док.Удалить(1);
8 125
 
12.01.05
01:09
Заработало! Спасибо, Mthr :-))
9 125
 
12.01.05
01:12
(7) Да, так похоже тоже можно, но создавать и удалять лишний раз почему-то не хотелось :-)
 
2 + 2 = 3.9999999999999999999999999999999...