Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/69: Рейтинг темы: голосов - 69, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 947
1

Как Организовать Нумерацию Документов

22.10.2011, 01:42. Показов 13403. Ответов 8
Метки нет (Все метки)

Задача возникает, если организовать в одной базе учет нескольких фирм. Как тогда нумеровать документы для каждой фирмы раздельно.
Можно в номере писать префикс. Но:
- хочется работать с нормальным номером. Взял да и набрал номер накладной или договора.
- есть доки с цифровым номером.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2011, 01:42
Ответы с готовыми решениями:

Как лучше организовать хранение стандартных фраз у документов
Имеется некоторое количество документов. У каждого есть реквизит "Заключение" (и подобные) - тип...

Как организовать безопасное хранения документов?
Имеется следующая ситуация: небольшая фирма имеет большую количество документов в формате DOCX,...

есть ли возможность оптимизировать сквозную нумерацию различных документов word и excel?
Приветствую! В работе существует необходимость нумеровать большое количество файлов word и excel...

Как Организовать Отступ У Response Документов Во View
Добрый день, подскажите, как организовать иерархию документов ответов, ответов на ответ, и т.д во...

8
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
22.10.2011, 01:47 2
Может быть, отключить контроль уникальности, и в подписке ПриУстановкеНовогоНомера считать код запросом?
0
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 947
22.10.2011, 02:22 3
"считать код запросом" - это значит запросом найти последний номер?
Если так, то по сути организовать замену встроенной нумерации. С теми же задачами периода и контроля уникальности. Сложновато.

Я вот смотрю типовая позиционируется как для учета холдинга. А вот как там с нумерацией? Кто знает?
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
22.10.2011, 02:39 4
Цитата Сообщение от Дайнеко
"считать код запросом" - это значит запросом найти последний номер?
Если так, то по сути организовать замену встроенной нумерации. С теми же задачами периода и контроля уникальности. Сложновато.
А в чем сложность? Правда, на больших объемах, имхо, тормоза могут быть.


Цитата Сообщение от Дайнеко
Я вот смотрю типовая позиционируется как для учета холдинга. А вот как там с нумерацией? Кто знает?
Вы про какую конфигурацию? Во всех, которые я видел, префиксы.


Цитата Сообщение от Дайнеко
- хочется работать с нормальным номером. Взял да и набрал номер накладной или договора.
В управляемом приложении, при наборе номера в списке, открывается поиск, который позволяет...


Цитата Сообщение от Дайнеко
- есть доки с цифровым номером.
Сделать, чтобы не было. Зачем они?
Видел цифровые номера только в очень старых типовых типа ТиС 8.7, или что-то в этом роде.
0
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
23.10.2011, 12:44 5
К сожалению замена автоматического механизма нумерации. Пришлось мне такое сделать.
на самом деле - очень просто: сносим контроль уникальности, берем подписку на события ПриУстановкеНовогоНомераДокумента, шаманим процедурку (вот например моя, там была трабла с любовью манагеров добавлять всякие "/" или "\" в нумерацию, доставшаяся по наследству):

Код ( (Unknown Language)):
Процедура ПриУстановкеНовогоНомераДокументаПриУстановкеНовогоНомера(Ис точник, СтандартнаяОбработка, Префикс) Экспорт
// ОбщегоНазначения.ДобавитьПрефиксОрганизации(Источник, Префикс); //15,08,11 Пушкарев
Если (Источник.Метаданные().Имя = "РеализацияТоваровУслуг") Или
(Источник.Метаданные().Имя = "ЗаказПокупателя") или
(Источник.Метаданные().Имя = "СчетФактураВыданный") Тогда //15,08,11 Пушкарев;
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 30
| Документ.Номер КАК Номер
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Документ
|
|УПОРЯДОЧИТЬ ПО
| Документ.Дата УБЫВ";
ТЗ = Запрос.Выполнить().Выгрузить();
Спс = Новый СписокЗначений;
Для ааа = 0 по ТЗ.Количество()-1 Цикл
Попытка
Если ЕстьНеЦифры(СокрЛП(Тз[ааа].Номер)) Тогда
Тз.Удалить(ааа);
ааа = ааа -1;
Иначе
Спс.Добавить(Число(СокрЛП(Тз[ааа].Номер)));
КонецЕсли;
Исключение
Прервать;
КонецПопытки;
КонецЦикла;
Спс.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Номер = Спс[0].Значение +1;
Источник.Номер = одДополнитьСтроку(СтрЗаменить(СокрЛП(Номер),Символ(160),""), 6);// пока поставили 6 символов
КонецЕсли;

ОбщегоНазначения.ДобавитьПрефиксУзла(Префикс);
КонецПроцедуры
и вуоля! ( кстати - посмотрел и понял, что на смену года я не заложился, ну это то вообще не сложно. А номер у меня таки уникальный, так чот вторая часть вопроса мне ненужна).

Кстати - интересно как будет себя вести функции найтиПоНомеру() - их таки придется всех переписывать.

всвязи с этим - второй вариант. В базе вся нумерация хранится таки с преффиксами,тогда поиск по номеру остается нормальным.А вот при выводе документов на печать, отображении в формах усё подменяется.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
23.10.2011, 13:01 6
Может быть, было бы изящнее использовать ПОДОБНО, и упорядочивание по номеру. Ну и "ПЕРВЫЕ 1".
0
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
23.10.2011, 13:32 7
подобно очень медленно пашет. Все эти лайки с текстом вообще отвратно работают (по скорости). Посему сделал так . А почему 30 первых, так надо чтобы хоть один номер был чисто цифровым.
А поле дата по жизни индексированно, по нему упорядочивание идет быстро. Можно как вариант еще переделывать индексы скриптом на скуле - чтоб совсем быстрее было.

апдейт - если уж использовать ПОДОБНО так на результатах первого запроса, помещенных в временную таблицу, это действительно будет быстрее.
0
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 947
24.10.2011, 00:59 8
А puh14-то разошелся. Видно что достал из архива процедуру времен молодости, так и прослезился, вспомнил сколько сил положил. :gigi:

К делу, господа. Результата он добился такого - он меня напугал. Чтобы сделать ручную нумерацию нужно учесть:
- запрос сделать с учетом Фирмы. Т.е. последний номер для данной фирмы.
- сброс нумерации в новом периоде. Для одних доков это год, для других квартал, месяц
- длину номера не навязывать программно, а желательно подстраиваться под пользователя.
- а все-же номера разных фирм могут пересечься. При выключенном контроле сойдет - в базу запишет. А при обменах?

Хочу рассмотреть такое направление мысли: сделать номер с префиксом. Он мне не нравится неудобством корректировки. А если номер показать на форме разложенным на 2 поля ввода: префикс и собственно номер. Префикс назначается прогой в зависимости от "Фирма". А номер предлагается процедурой вроде вышеизложенного "шэдэфра". Перед записью сформировать полный номер сложением. При этом системный контроль оставить - пусть не пропускает. Удобно тем, что легко номер изменить и в тоже время не лезут руки пачкать префикс.

Кто не понял - переспросите.
0
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
24.10.2011, 09:41 9
А puh14-то разошелся. Видно что достал из архива процедуру времен молодости, так и прослезился, вспомнил сколько сил положил.
Чорт, молодость два месяца назад кончилась! ;-)



- запрос сделать с учетом Фирмы. Т.е. последний номер для данной фирмы.
не проблема - добавить проверку на заполненность фирмы, пока не заполнено - фиг номер махнешь. Как заполнено - в условие в запрос.



- сброс нумерации в новом периоде. Для одних доков это год, для других квартал, месяц
добавить в запрос условие на период с датами начала/конца. период брать из метаданных.



- длину номера не навязывать программно, а желательно подстраиваться под пользователя.
Ну так у меня условие такое было - так как старую нумерацию гробить было нельзя и бухам хотелось "красоты", пришлось дополнять нуликами.



- а все-же номера разных фирм могут пересечься. При выключенном контроле сойдет - в базу запишет. А при обменах?
Ну если в обмен пойдут документы только от одной фирмы - тогда нормально ,а иначе будет ошибками сыпать.




Хочу рассмотреть такое направление мысли: сделать номер с префиксом. Он мне не нравится неудобством корректировки. А если номер показать на форме разложенным на 2 поля ввода: префикс и собственно номер. Префикс назначается прогой в зависимости от "Фирма". А номер предлагается процедурой вроде вышеизложенного "шэдэфра". Перед записью сформировать полный номер сложением. При этом системный контроль оставить - пусть не пропускает. Удобно тем, что легко номер изменить и в тоже время не лезут руки пачкать префикс.
Удобно - только все печатки переделывать придется, а то в документе номер из цифр, а на печатке какие-то буковки вылезають. А при условии что в большинстве печаток номер получается запросом и потом идет заполнение параметров секции шапка передачей в него первой строки выборки ... а СтрЗаменить в запросах не пашут ;-(. Хоть новый реквизит типа НомердляПечати добавляй.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2011, 09:41

Организовать список документов на форме
Помогите новичку пожалуйста. Стоит следующая задача: Есть таблица в mdb-файле, со списками...

Организовать взаимосвязь документов по принципу дерева
Здравствуйте, уважаемые участники форума! Передо мной поставлена задача: Дана сущность...

Организовать электронно-цифровую подпись внутренних документов компании
Здравствуйте. Сразу приношу свои извинения за то, что возможно тема не по адресу. Есть...

Каким образом можно организовать подпись документов через Делфи?
Здравствуйте! Подскажите, пожалуйста, каким образом можно организовать подпись документов через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.