Евгений, тоже был опыт...решил я сменить у них сервер с Мск на Нск - много дней сайт просто лег и ТП ничего не могла долго сделать. а сайт не мой, клиентов и "сменить сервер" предложил я...было короче не клёво)
CHolfield, так выдает ошибку Unknown column 'tmpdw' in 'where clause' плюс я думаю mysql будет ругаться на Table is specified twice, both as a target for 'DELETE' and as a separate source for data, это тоже можно будет победить, но слишком уж сложно выходит. Решил что гораздо проще сделать следующим образом - добавить колонку date_start - где хранить дату начала события. т.е. у отпуска с 5 по 9 января 5 записей будет в базе с датами с 5 по 9 и у всех date_start будет 5 января. Таким образом можно удалить весь отрезок безошибочно просто зная дату начала. Кстати, а зачем тут ROUND для DATEDIFF - оно разве не целое количество дней возвращает?
Спасибо за помощь в любом случае, но пришлось пойти другим путем.
CHolfield, как уже писал, в базе не весь календарь хранится сразу, таким образом возможна ситуация, что "отпуск" с 5 по 9 января и потом с 20 по 25 января. между этими событиями записей не будет, таким образом по условию > 5 января и date_type != 7(отпуск) вполне подходит под условие выборка до 25 января включительно, а это по сути разные отдельные события. Я уже переделал с занесением в базу сразу колчиества дней, так даже удобнее стало. Т.е. добавляется в базу "отпуск" на 5 января и записывается 5 дней. дальше все гораздо проще, так как можно точно посчитать дату окончания события.
либо же последняя запись в таблице будет принадлежать последнему дню отпуска, т.к. дальше еще не назначали график.
Так тоже не пойдет...решил переделать и к первой дате начала отпуска добавлять переменную количества дней при добавлении записи в таблицу. так и вычислять сколько строк удалить
Хорошая идея. Но получается эта часть не отработает если после удаляемого "промежутка" больше нет никаких записей, т.к. после "отпуска" в базе должна быть любая другая дата записана, а этого может и не быть. Например отпуск с 5.01 по 9.01 и после в базе записей нет.
select top 1 date_work from tablename
where date_work > startdate and date_type <> otpusktype order by date_work
Константин Нагибович, дело в том, что эти отгулы и отработки официально не проводятся. т.е. просто есть договоренности что за два отработанных выходных по сокращенному графику сотрудник может взять отгул, но не приплюсовать его к отпуску. с Бухами поговорил, они говорят что нашу схему работы официально туда не запихнешь никак. Разве что отдельную базу воротить, но если это отдельная база, то особого смысла именно в 1С это делать не вижу, так как все равно данные не синхронизированы будут