Выборка документов по типу нумератора 1С 7.7
17.08.2006
14:14
#1
"Возможно ли организовать выборку документов по типу используемого нумератора т.е.
Номер = 1;
Док = СоздатьОбъект("Документ");
//Открываем выборку документов
Пока Док.ПолучитьДокумент() = 1 Цикл
Док.НомерДок = Прав("0000000000"+Номер, 10);
Док.Записать();
Номер = Номер+1;
КонецЦикла;
Такая штука нужна чтобы проставить номера по дате документов, т.е. исправить их
для конкретного нумератора. Дело в том что они сейчас ставятся "как хотят" то 2-х
значные, то 4-х в то время как в нумераторе тип номера проставлен как 10-значный
текстовый.
Если есть другой способ это сделать, буду благодарен за подсказку"
Номер = 1;
Док = СоздатьОбъект("Документ");
//Открываем выборку документов
Пока Док.ПолучитьДокумент() = 1 Цикл
Док.НомерДок = Прав("0000000000"+Номер, 10);
Док.Записать();
Номер = Номер+1;
КонецЦикла;
Такая штука нужна чтобы проставить номера по дате документов, т.е. исправить их
для конкретного нумератора. Дело в том что они сейчас ставятся "как хотят" то 2-х
значные, то 4-х в то время как в нумераторе тип номера проставлен как 10-значный
текстовый.
Если есть другой способ это сделать, буду благодарен за подсказку"
20.08.2006
13:29
#2
"Т.е. они (бишь юзвери), по порядку документы ставят? Так то если нумерация первичных документов есть, то менять ее не очень не стоит.
Можно так сделать, в твоем случае ты забыл одну вешь - если длина номера превысит "2", то она у тебя запнется на том, что номер не уникален. Т.е. нулей слева нужно ровно столько, сколько символов не хватает до длины по нумератору.
Можно и по-другому сделать.
ДлинаНумертора = 10;
Док = СоздатьОбъект("Документ");
//Открываем выборку документов
Пока Док.ПолучитьДокумент() = 1 Цикл
НомерДок = СокрЛП(Док.НомерДок);
//так то можно еще всякие левые цифры обрезать, если нужны только цифры в номере
Пока СтрДлина(НомерДок) < 10 Цикл
НомерДок = "0"+НомерДок; //добавили недостающие нули слева
КонецЦикла
Док.НомерДок = НомерДок;
Док.Записать();
КонецЦикла;
А вообще нужно тестить и смотреть, что получицца. Удачи."
Можно так сделать, в твоем случае ты забыл одну вешь - если длина номера превысит "2", то она у тебя запнется на том, что номер не уникален. Т.е. нулей слева нужно ровно столько, сколько символов не хватает до длины по нумератору.
Можно и по-другому сделать.
ДлинаНумертора = 10;
Док = СоздатьОбъект("Документ");
//Открываем выборку документов
Пока Док.ПолучитьДокумент() = 1 Цикл
НомерДок = СокрЛП(Док.НомерДок);
//так то можно еще всякие левые цифры обрезать, если нужны только цифры в номере
Пока СтрДлина(НомерДок) < 10 Цикл
НомерДок = "0"+НомерДок; //добавили недостающие нули слева
КонецЦикла
Док.НомерДок = НомерДок;
Док.Записать();
КонецЦикла;
А вообще нужно тестить и смотреть, что получицца. Удачи."
Читают тему
(гостей: 1)