Нумерация
01.08.2003
21:58
#1
В последних конфигурациях 1С числовой код поменяли на текстовый. Пользоватьль ввел номер документа, теперь при вводе нового документа номер всегда один и тот-же. Что делать?
02.08.2003
15:04
#2
"найди "кривой" номер и добей лидирующие нули ...
а если таких много, запусти:
Док = СоздатьОбъект("Документ.Х"); // где Х-идентификатор
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
НомерДок = СокрЛП(Док.НомерДок);
Пока СтрДлина(НомерДок)
НомерДок = "0"+НомерДок;
КонецЦикла;
Док.НомерДок=НомерДок;
Попытка
Док.Записать();
Исключение
Сообщить("Двойник: "+Док.ТекущийДокумент());
КонецПопытки;
КонецЦикла;
"
а если таких много, запусти:
Док = СоздатьОбъект("Документ.Х"); // где Х-идентификатор
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
НомерДок = СокрЛП(Док.НомерДок);
Пока СтрДлина(НомерДок)
НомерДок = "0"+НомерДок;
КонецЦикла;
Док.НомерДок=НомерДок;
Попытка
Док.Записать();
Исключение
Сообщить("Двойник: "+Док.ТекущийДокумент());
КонецПопытки;
КонецЦикла;
"
16.08.2006
13:31
#3
"Если у вас символьная нумерация, то лучше сделать вот так:
Док = СоздатьОбъект("Документ.РеализацияРозница"); // либо другой документ
Док.ВыбратьДокументы('01.05.06','01.09.06'); // дату указываете сами
// (если надо), либо уберите этоу строку
Пока Док.ПолучитьДокумент() = 1 Цикл
НомерДок = СокрЛП(Док.НомерДок);
НомерДок = СокрЛП(Сред(Док.НомерДок,5)); //Берем кол-во символов в префиксе+1
Преф=Лев(Док.НомерДок,4); // А здесь именно кол-во символов в префиксе "ААА-"
Пока СтрДлина(НомерДок)<6 Цикл // Вместо 6 подставляем Разрядность - кол-во символов
// в префиксе
НомерДок = "0"+НомерДок;
КонецЦикла;
Док.НомерДок=Преф+НомерДок;
Сообщить(Док.НомерДок);
Попытка
Док.Записать();
Исключение
Сообщить("Двойник: "+Док.ТекущийДокумент());
КонецПопытки;
КонецЦикла; "
Док = СоздатьОбъект("Документ.РеализацияРозница"); // либо другой документ
Док.ВыбратьДокументы('01.05.06','01.09.06'); // дату указываете сами
// (если надо), либо уберите этоу строку
Пока Док.ПолучитьДокумент() = 1 Цикл
НомерДок = СокрЛП(Док.НомерДок);
НомерДок = СокрЛП(Сред(Док.НомерДок,5)); //Берем кол-во символов в префиксе+1
Преф=Лев(Док.НомерДок,4); // А здесь именно кол-во символов в префиксе "ААА-"
Пока СтрДлина(НомерДок)<6 Цикл // Вместо 6 подставляем Разрядность - кол-во символов
// в префиксе
НомерДок = "0"+НомерДок;
КонецЦикла;
Док.НомерДок=Преф+НомерДок;
Сообщить(Док.НомерДок);
Попытка
Док.Записать();
Исключение
Сообщить("Двойник: "+Док.ТекущийДокумент());
КонецПопытки;
КонецЦикла; "
21.08.2006
18:11
#4
А в конфигурации от 1С слабо дописать в глобальном модуле, чтоб нули сами дописывались, или так и будут мучиться пользователи?
21.08.2006
21:08
#5
поможет Вам, перенумерация документов начиная с самаго первого "кривого", используйте стандартные универсальные обработки 1С.
будут вопросы, пишите - помогу в проблемой...
будут вопросы, пишите - помогу в проблемой...
31.08.2006
21:59
#6
на глаз от нуля почти неотличимо, а русское О от латинского О - так вообще безнадежно.
03.09.2006
23:35
#7
Есть ещё полушаманский метод. Делаем резервную копию ИБ, грузимся в конфигураторе, в проблемном типе документов ставим тип кода "числовой". Сохраняем метаданные. Меняем код обратно. Снова сохраняем. Лидирующие нули добиты везде.
Хотя могут появиться дубликаты, например, если были введены документы с номерами "0001" и "01".
Повторяю, РЕЗЕРВНУЮ КОПИЮ ДЕЛАТЬ ОБЯЗАТЕЛЬНО. Я предупредил.
Повторяю, РЕЗЕРВНУЮ КОПИЮ ДЕЛАТЬ ОБЯЗАТЕЛЬНО. Я предупредил.
Начисление отпуска в ЗИК 267 не правильно показывает начисления за последние 3 месяцаПроблемы с табелем!
Читают тему
(гостей: 1)