17:42 : lesnichiy to shekter : Здравствуй Дима. Мне необходимо

advertisement
17:42 : lesnichiy to shekter : Здравствуй Дима. Мне необходимо переделать генерацию УМ, вопрос в
том, что в ТЗ указано как формировать название файла и имя папки. Имя файла WORD формируется
следующим образом УМ_"Регистрационный номер"_"текущий год". Имя папки формируется так
"НомерУМ(сейчас изменили его на Номер ЗП)"_"регистрационный номер"_"текущий год". Выборка
данных велась исходя из поля prj_date_ek (Дата ЕК) и jrl_reg_number (Регистрационный номер) из
таблицы журналов. Но как оказалось prj_date_ek формируется при прохождении ЕК, тогда же
формируется PRJ_NUM_ZP, но Генерацию УМ необходимо делать до прохождения ЕК, до того как
заполненны данными поле PRJ_NUM_ZP иначе при создании папки не будет первого значения и
будет создоваться папка типа «_34_2009», а это недопустимо. Таким образом нужно решить на
основании каких полей делать генерацию УМ, чтобы имя папки было корректным, согласно
условиям ТЗ.
17:42 : shekter : имя файла и папки не будет соответствовать инструкции
17:42 : shekter : поскольку инструкция касается генерации после прохождения ЕК
17:43 : shekter : данных их таблицы Журналов при генерации у нас нет; значит, нужно присваивать
другие имена
17:43 : shekter : prj_date_ek не формируется при прохождении ЕК. Оно записывается раньше в
таблицу проектов. Оттуда и бери
17:44 : shekter : номер по порядку придется делать вручную
17:44 : lesnichiy to shekter : Каким образом делать номер вручную?
17:46 : shekter : берешь 1, смотришь, есть ли такая папка. Если нет - создаешь, если есть прибавляешь 1
17:46 : shekter : получаешь 2
17:46 : shekter : опять смотришь, есть ли такая папка
17:46 : shekter : и так далее, пока не найдешь первое свободное место
17:48 : lesnichiy to shekter : Гм. Ок ... буду так и делать ... Спасибо
17:48 : shekter : в принципе, у нас нет особенных требований, как его делать (потому что потом все
равно переименуют на номер по порядку)
17:48 : shekter : поэтому если есть варианты попроще - предлагай
17:50 : shekter : вообще-то, я писал в баге, что сохранение на файл-сервер при такой постановке
делать необязательно. Поэтому предлагаю не париться а сваливать все в одну папку
17:50 : shekter : единственно что - имя файла формировать
17:53 : lesnichiy to shekter : Ок тогда всё сваливаем в общую папку все генерации УМ, а номер берём
последний из базы PRJ_NUM_ZP +1 ...
17:54 : shekter : не, если брать последний номер, он может совпасть
17:54 : shekter : он же не увеличивается в базе
17:54 : shekter : после генерации
17:55 : lesnichiy to shekter : А что же делать? Ведь если названия папок выбирать, так человек может
захочет сгенерировать и попадут данные в уже созданную папку ...
17:56 : shekter : папку делаем одну
17:56 : shekter : а файлы - разными именами
17:56 : shekter : Имя файла WORD формируется следующим образом УМ_"Регистрационный
номер"_"текущий год".
17:56 : shekter : регистрационного номера нет
17:56 : shekter : значит, надо его брать по существующим файлам и увеличивать на 1, как я описывал
выше
17:57 : shekter : в результате у нас будет одна папка и в ней файлы УМ_1_2008, УМ_2_2008 и т.д.
17:57 : shekter : сразу после генерации файл выдается пользователю, и дальше он его переименует
вручную, когда пройдет ЕК
17:59 : lesnichiy to shekter : Ок ... я понял ... наращиваем последний регистрационный номер на один
... Завтра всё сделаю. Я убежал ... у меня у жены и ребёнка темпиратура выше 38 ... Грип. Пока...
Два дропдауна,
в первом prj_date_ek из таблицы проектов по данному досье,
Во втором дропдауне регистрационные номера jrl_reg_number для данного досье.
Для заполнения Word документа используем prj_date_ek и jrl_reg_number из , для
выборки из таблицы проектов prj_name_um и PRJ_NUM_ZP
При создании имени файла Word, используется следующий шаблон "УМ"_"Регистрационный
номер"_"текущий год"
Предлагалось создавать файл в котором "регистрационный номер" генерируется исходя из уже
существующих в папке сгенерированных файлов, наращивая его на 1.
Нужно проверить существует файл или нет, делаем проверку наличия файла УМ_1_2009.doc, потом
УМ_2_2009.doc (наращивая регистрационный номер на 1) и так далее.
Вопросы:
1) Делаем проверку по номеру регистрационных материалов перебираем в цикле имена файлов, до
какого последнего числа регистрационного материала, как узнать какой номер регистрационных
материалов будет последним?
В цикле нужно указать до какого числа будет выборка, а то число мы как раз и не знаем, мы его как
раз и ищем.
2) Если вообще отсутствуют в папке файлы, какой брать номер?
ПОдразумевается что первый, но как узнать что в папке не содержатся вобще файлы фармата
УМ_?_2009.doc, ведь мы можем проверить наличие или отсутствие файла, только при условии если
знаем полное имя файла, а какой может быть последний рег. номер мы не знаем.
3) Есть вариант вначале выбирать из базы данных последний регистрационный номер (допустим это
30).
Нарастить его на 1 (получаем 31), потом проверять среди файлов на сервере есть ли такой номер, от
числа 31 (УМ_31_2009.doc) до какого-то большого числа, которого теоретически не будет никогда
достигнут например 1000000 (УМ_1000000_2009.doc).
Тогда если не существует числа больше чем 31 (УМ_31_2009.doc) создаём такой файл, а если среди
файлов уже загруженных существует число больше 31 то берём его и наращиваем на 1.
Но если даже такое сделать, то есть вероятность что пользователь на соседним компьютере, создаст
запись в базе данных с регистрационным номером 31, а потом сгенерирует УМ и перезапишет
существующий файл УМ_31_2009.doc.
И все выше перечисленные операции не будут иметь смысла.
Download