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. И все выше перечисленные операции не будут иметь смысла.