По теме из базы знаний
- Поиск документов с номерами, по вине которых сбивается автоматическая нумерация
- Автоматическая нумерация договоров по типу для 1С:Бухгалтерия 8, редакция 3.0
- [Расширение] Автоматическая нумерация договоров по типу для 1С:Бухгалтерия 8, редакция 3.0
- Автоматическая нумерация договоров. Расширение. БП 3.0
- Автоматическая нумерация договоров. УТ 11
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
при вводе нового элемента собираешь все номера договоров владельца в массив, ищешь максимальное значение. новому элементу присваиваешь найденное + 1
тока нумерация договоров должна быть однозначной (без выпендрежа с префиксами и т.д.) и желательно числовой. иначе ИМХО такой метод не сработает
тока нумерация договоров должна быть однозначной (без выпендрежа с префиксами и т.д.) и желательно числовой. иначе ИМХО такой метод не сработает
LiS Написал:
-------------------------------------------------------
> при вводе нового элемента собираешь все номера
> договоров владельца в массив, ищешь максимальное
> значение. новому элементу присваиваешь найденное + 1
Это самое простое и очевидное решение. Я тоже когда-то такое делала.
Но, через какое-то время, это начинает тормозить. Выход был найден простой и незатейливый. Если интересно, расскажу.
-------------------------------------------------------
> при вводе нового элемента собираешь все номера
> договоров владельца в массив, ищешь максимальное
> значение. новому элементу присваиваешь найденное + 1
Это самое простое и очевидное решение. Я тоже когда-то такое делала.
Но, через какое-то время, это начинает тормозить. Выход был найден простой и незатейливый. Если интересно, расскажу.
poppy Написал:
-------------------------------------------------------
> Но, через какое-то время, это начинает тормозить.
> Выход был найден простой и незатейливый. Если
> интересно, расскажу.
Раз заикнулась, теперь говори :)
-------------------------------------------------------
> Но, через какое-то время, это начинает тормозить.
> Выход был найден простой и незатейливый. Если
> интересно, расскажу.
Раз заикнулась, теперь говори :)
Ок. Расскажу.
У меня была немного другая, но похожая задача. В конфигурации был чудо-документ, в котором хранились номера и даты всех документов по сделке - счета, накладной, счет-фактуры и ПКО. При этом самих документов счет и т.д. в конфигурации не существовало. Заказчик был принципиально против этого.
Так вот, под каждый вид документа был создан справочник. Когда пользователь пытался присвоить новый номер, например, счету, в соответсвующем справочнике создавался новый элемент, код которого записывался в соответсвующий реквизит. Если пользователь от номера отказывался - элемент справочника удалялся.
У меня была немного другая, но похожая задача. В конфигурации был чудо-документ, в котором хранились номера и даты всех документов по сделке - счета, накладной, счет-фактуры и ПКО. При этом самих документов счет и т.д. в конфигурации не существовало. Заказчик был принципиально против этого.
Так вот, под каждый вид документа был создан справочник. Когда пользователь пытался присвоить новый номер, например, счету, в соответсвующем справочнике создавался новый элемент, код которого записывался в соответсвующий реквизит. Если пользователь от номера отказывался - элемент справочника удалялся.
ssp_ Написал:
-------------------------------------------------------
> А не проще ли поставить этому реквизиту
> сортировку, и при вводе нового
> делать...
а как быть когда МойРеквизит - текст? текст + 1 = неизвестночто...
я вот один раз столкнулся с извращенной нумерацией типа как в экселе: номер документа - 3-х значный, но. каждый из знаков меняется не от 0 до 9, а от 0 до Z. т.е. 0-9, A-Z. причем заглавными. и как прикажете алгоритм автонумерации написать? я честно говоря растерялся... а потом оказалось, что и не нужно.
-------------------------------------------------------
> А не проще ли поставить этому реквизиту
> сортировку, и при вводе нового
> делать...
а как быть когда МойРеквизит - текст? текст + 1 = неизвестночто...
я вот один раз столкнулся с извращенной нумерацией типа как в экселе: номер документа - 3-х значный, но. каждый из знаков меняется не от 0 до 9, а от 0 до Z. т.е. 0-9, A-Z. причем заглавными. и как прикажете алгоритм автонумерации написать? я честно говоря растерялся... а потом оказалось, что и не нужно.
LiS Написал:
> а как быть когда МойРеквизит - текст? текст + 1 =
> неизвестночто...
Решаемо. Отрезаем числовой "хвост". То что до него - это префикс, его оставляем как есть. Числовую часть перобразуем в число, добавляем единицу и обратно с помощью Формат(Номер,"Ч(0)<длина>")
Сама 1с делает примерно так же при автонумерации. Правда там еще можно задать префикс, это руками сложнее сделать.
> я вот один раз столкнулся с извращенной нумерацией
> типа как в экселе: номер документа - 3-х значный,
> но. каждый из знаков меняется не от 0 до 9, а от 0
> до Z. т.е. 0-9, A-Z. причем заглавными. и как
> прикажете алгоритм автонумерации написать? я
> честно говоря растерялся... а потом оказалось, что
> и не нужно.
Проходили и такое...
Использовалось для представления чисел в штрих-коде code39
> а как быть когда МойРеквизит - текст? текст + 1 =
> неизвестночто...
Решаемо. Отрезаем числовой "хвост". То что до него - это префикс, его оставляем как есть. Числовую часть перобразуем в число, добавляем единицу и обратно с помощью Формат(Номер,"Ч(0)<длина>")
Сама 1с делает примерно так же при автонумерации. Правда там еще можно задать префикс, это руками сложнее сделать.
> я вот один раз столкнулся с извращенной нумерацией
> типа как в экселе: номер документа - 3-х значный,
> но. каждый из знаков меняется не от 0 до 9, а от 0
> до Z. т.е. 0-9, A-Z. причем заглавными. и как
> прикажете алгоритм автонумерации написать? я
> честно говоря растерялся... а потом оказалось, что
> и не нужно.
Проходили и такое...
Код |
---|
Функция Число43в10(Число43) Экспорт
Знаки="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-.=$/+%";
Число10=0; Порядок=1;
Для Поз=1 По СтрДлина(Число43) Цикл
Цифра43=Сред(Число43,СтрДлина(Число43)-Поз+1,1);
Если Цифра43=" " Тогда Цифра43="="; КонецЕсли;
Число10=Число10+Порядок*(Найти(Знаки,Цифра43)-1);
Порядок=Порядок*43;
КонецЦикла;
Возврат Число10;
КонецФункции
//----------------------------------------------------------------------
Функция Число10в43(Знач Число10,Длина=0) Экспорт
Знаки="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-.=$/+%";
Число43="";
Пока Число10>0 Цикл
Ост=Число10%43;
Число10=Цел(Число10/43);
Число43=Сред(Знаки,Ост+1,1)+Число43;
КонецЦикла;
Если Длина>0 Тогда
Если СтрДлина(Число43)>Длина Тогда Число43=Прав(Число43,Длина);
Иначе Пока СтрДлина(Число43)<Длина Цикл Число43="0"+Число43; КонецЦикла;
КонецЕсли;
КонецЕсли;
Если Число43="" Тогда Число43="0"; КонецЕсли;
Возврат Число43;
КонецФункции
Показать полностью |
Использовалось для представления чисел в штрих-коде code39
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот