:: Visual Foxpro, Foxpro for DOS
Календарь с выбором произвольных дат
ry
Автор

Сообщений: 2113
Дата регистрации: 24.09.2007
Подкинули задачу распечатки большого количества бланков на месяц вперед. Особенность в том, что на каждом бланке должна быть проставлена дата, а даты нужно выбирать из дней заданного месяца (это дни, которые в этом месяце будут рабочими для конкретного отдела, не обязательно будние - график может быть плавающий). Может, подскажете какой-нибудь готовый контрол, с помощью которого в выбранном месяце можно отметить произвольные даты и получить их последовательность в удобном для дальнейшей обработки виде, например, в виде курсора?
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Сделать календарь на год, где могут помечать будни/выходные
Сделать форму, они будут помечать
Дальше, по интуиции

На готовое расчитывать можно, если никуда не спешишь и сам делать не хочещь
Штука простая, лучше сделать самому и потом этим гордиться и поместить в Решениях



Исправлено 2 раз(а). Последнее : Ydin, 12.02.17 22:08
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
В решениях как раз хватает самописных календарей - даже если ни в одном из них и нет "мультивыбора", имея исходник можно "допилить". Я бы, пожалуй, взял календарь ctl32_monthcalendar из набора контролов ctl32 - это "виндовый" контрол (показывает именно "месяц целиком" - с возможностями "листать", конечно), и с достаточными возможностями кастомизации. В примере показано как выделять жирным некоторые даты (программно).
Правда как именно "отмечать" даты (т.е. какие "телодвижения" должны быть для этого) я не могу придумать - просто кликать и тем самым менять "отмеченность" - как то не очень... А кликать с зажатыми Ctrl или Shift - что-то боюсь не все юзеры освоят такой метод...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
ry
Автор

Сообщений: 2113
Дата регистрации: 24.09.2007
Пока обдумываю, как и на чем реализовать "хотелку" пользователей. На данный момент бланки набраны в Word и печатаются из него, даты на бланках не проставляются, только месяц и год, которые перед печатью меняются вручную через "Найти/Заменить". Но со следующего месяца нужно будет делать бланки не на месяц, а на каждый рабочий день с указанием даты. Можно и дальше в ворде делать, добавив на бланк дату, но менять даты вручную на целый месяц муторно, поэтому хотят как-то это дело упростить.
Задумка такая: с помощью календаря пользователь выбирает месяц и год, а затем отмечает мышкой нужные даты (например, включает чекбокс или просто выделяет нужные дни). Затем создается курсор с нужными датами, а на его основе - курсор для формирования самого отчета. Не факт, что это легко будет сделать в VFP, так что может буду пробовать другие варианты (в том же ворде через слияние, например).
Заодно еще один вопрос возник (тоже касательно данной задачи, поэтому другую тему поднимать не буду). Можно ли в VFP программно управлять цветом шрифтов в отчете, чтобы пользователь мог интерактивно задать цвет определенной надписи? Или надо извращаться, открывая и редактируя frx через use? Динамическое форматирование вряд ли подойдет - не понятно, как задать объекту выбранный пользователем цвет.
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
ry
Задумка такая: с помощью календаря пользователь выбирает месяц и год, а затем отмечает мышкой нужные даты (например, включает чекбокс или просто выделяет нужные дни)
Ничего сложного в этом нет.
Совет: не заморачивайся с репортом, создай Excel-файл-шаблон и делай в нем все что хочешь.


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
SoccerStudio

Сообщений: 5055
Откуда: Подмосковье
Дата регистрации: 28.11.2006
В одной из наших внутренних систем было сделано следующим образом. Имелась специальная таблица, в которую каждый год силами админов заносились строки по количеству выходных дней в наступившем году - т.е. все даты, которые по факту являются нерабочими (независимо от того, какой это день недели), с учетом переносов и т.п. Интерфейс для ввода данных в эту таблицу отсутствовал - считалось, что админ в состоянии разово написать соответствующий скрипт и прогнать его.
Ну, и соответственно, данные из этой таблицы уже и использовались где только можно для определения "выходной/не выходной".


------------------
"Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Так сейчас в ворде делают, а ты хочешь на репорт фокса переделать?
Я бы не стал.
Не проще ли из ворда шаблон сделать, и заполнять даты. Когда найдешь ответ на вопрос топика)

Ну и цвет, полагаю в ворде поменять можно.
Тут на какой нибудь форум VBA (а может там и календари есть?)
В решениях есть календарь на курсоре.
Сделай там множественный выбор. и потом по нему, легко все сделаешь.


------------------
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
ry
Автор

Сообщений: 2113
Дата регистрации: 24.09.2007
Уже набросал вполне рабочий вариант на слиянии Word+Excel. В экселе сделал табличку, в которой заполняется месяц, год и проставляются рабочие числа месяца вручную (работы оператора максимум на минуту). Эти данные автоматически через слияние документов подгружаются в Word, а из него уже можно печатать бланки на целый месяц. Количество копий задается по количеству нужных бланков на день. Замену цвета отдельных надписей сделал через вордовские стили, чтобы вручную все не менять (там по несколько однотипных бланков на лист). Вроде ничего сложного для пользователя не должно быть, хотя еще не показывал.
Поначалу, когда огласили задачу, была мысль отдельное простое приложение набросать на VFP. Потом понял, что это будет не проще, чем допилить готовые документы в ворде.
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
SoccerStudio
Ну, и соответственно, данные из этой таблицы уже и использовались где только можно для определения "выходной/не выходной".

+100500

Ну нет алгоритма, который учтет все выходные/праздники/перенесенные/прочее. Раз в год отметить 15-20 дней - труд невелик.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Занимательное занятие - отмечать дополнительные (перенесенные) рабочие дни. Вот такие строки в проге возникли:
Дополнительный Нерабочий День ДДММГГГГ = 2014: 101.8,105.4,905.3, 1206.2, 111.4 && ГГГГ: [Д]ДММ[ГГ][ГГ][.дней]
Оказалось не нужным, сб.

Доб. Это не "строки фокс", это строки метакода



Исправлено 1 раз(а). Последнее : of63, 14.02.17 20:36
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
SoccerStudio
Ну, и соответственно, данные из этой таблицы уже и использовались где только можно для определения "выходной/не выходной".

+многа )))
так когда-то и сделал у себя - просто и дешево ... тока соорудил все же простецкий интерфейс чтоб не прямиком в табле прописывать
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Алгоритм не поможет, т.к. переносы утверждаются правительством. У вас в РФ чуть проще, а у нас нужно ещё отмечать рабочие дни перенесённые на выходные (т.е. не всякая Сб/Вс априори "нерабочая"). В принципе некоторые выходные ежегодные, можно было бы их и не дублировать - если бы родное правительство раз в пару лет не меняло календарь Так будет слишком сложно - типа до 2004 года был 7 ноября выходной, потом стал 4-го, лет через 5, глядишь, ещё чего поменяют...
Да, ещё, "рабочий" календарь не ограничивается 5-ти дневкой - для 6-ти дневки переносы чуть по другому делаются... Хотя не все парятся с этим, особенно если на своём предприятии нет 6-ти дневки.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
SoccerStudio

Сообщений: 5055
Откуда: Подмосковье
Дата регистрации: 28.11.2006
Igor Korolyov
У вас в РФ чуть проще, а у нас нужно ещё отмечать рабочие дни перенесённые на выходные (т.е. не всякая Сб/Вс априори "нерабочая").
Да у нас такое бывает частенько.

Поглядел сейчас в коде - память слегка подвела, не совсем правильно описал, как было реализовано.
На самом деле там ребята вообще не парились - в начале года в таблицу закачивалось 365 (ну или 366) записей - для всех дней года. И там уже в полях указывалось, что это за день. Соответственно, реализация функций типа IsWorkingDay() или GetNextWorkingDay() была весьма простой, без всяких там алгоритмов.


------------------
"Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
Можно сделать так. Создаем таблицу, в которой 3 поля - год, месяц, номер отдела и 31 поле - дни. В каждый день заносим: рабочий день, выходной, праздничный и т.д. Работаем с этой таблицей.
Ratings: 2 negative/0 positive
Re: Календарь с выбором произвольных дат
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
vnkor
Можно сделать так. Создаем таблицу, в которой 3 поля - год, месяц, номер отдела и 31 поле - дни. В каждый день заносим: рабочий день, выходной, праздничный и т.д. Работаем с этой таблицей.
Не нравятся такие монстры. ИМХО
365 записей - 2 поля. - calendar
И таблица с отделами. - Depart
Таблица связи CalDep
id_calendar,id_Depart,weekend, (может Year?)

Надо же пометить только выходные
Хотя наверное даже weekend лишнее)
И легко одним запросом, получаете список выходных по любому отделу


------------------




Исправлено 1 раз(а). Последнее : Аспид, 15.02.17 09:34
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
ry
Автор

Сообщений: 2113
Дата регистрации: 24.09.2007
Igor Korolyov
Алгоритм не поможет, т.к. переносы утверждаются правительством.
Так кроме официальных переносов бывают переносы рабочих дней, инициированные руководством предприятия. Причем такие переносы на целый год не планируются, иногда за пару дней только уведомляют (не в курсе, как там по законодательству, но вроде большого периода для предварительного уведомления не требуется), в лучшем случае за 1-2 месяца известно. А еще в разных подразделениях может быть разный график работы. Так что даже общая таблица не всегда поможет, либо в ней надо предусмотреть отдельные графики для разных подразделений.
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
ry
Igor Korolyov
Алгоритм не поможет, т.к. переносы утверждаются правительством.
Так кроме официальных переносов бывают переносы рабочих дней, инициированные руководством предприятия. Причем такие переносы на целый год не планируются, иногда за пару дней только уведомляют (не в курсе, как там по законодательству, но вроде большого периода для предварительного уведомления не требуется), в лучшем случае за 1-2 месяца известно. А еще в разных подразделениях может быть разный график работы. Так что даже общая таблица не всегда поможет, либо в ней надо предусмотреть отдельные графики для разных подразделений.
Производственный календарь утверждается приказом в конце года (на следующий), т.е. к 1 января 2017 года должен выйти приказ с утвержденным производственным календарем.
У нас на предприятии штук 25 графиков работы и один производственный календарь.
В программу "Электронный табель" графики закачиваются из 1С:ЗиУП, затем каждый график корректируется с учетом праздничных и всяких переносов.


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ry
Так кроме официальных переносов бывают переносы рабочих дней, инициированные руководством предприятия.
Да, такое возможно. Но на крупных предприятиях, я полагаю, "за день" не станут это менять. Даже у нас за месяц где-то определяют по какому графику работаем (т.к. часть работ связана с РФ, то бывает по их календарю трудимся - хотя у нас и нет нужды в "программировании" этого безобразия для себя, любимых).
ry
А еще в разных подразделениях может быть разный график работы.
Это точно, и даже не в рамках "подразделения" идёт "разнобой".

P.S. Вариант с 31-м полем - это аллес капут. Вариант с 365-ю записями на каждый день - ну я бы сказал что ОЧЕНЬ специфичен, и нужны весьма хитрые инструменты его (полу)автоматизированного заполнения (хотя для "вахтовых" или "сутки-через-трое" вариантов графика работы это самый оптимальный способ).
Вариант Олега с числом "подряд идущих выходных" я считаю избыточным (заметно более сложным в реализации) - их (выходных) не так уж и много, и кроме новогодних в РФ все они "однодневные" - только переносами "расширяюся"...

Для "обычных" графиков "обычной 5-дневки" вполне достаточно таблицы с датой, признаком рабочий/выходной плюс несложная логика проверки - смотрим ВСЕ "выходные", и для суббот/воскресений смотрим не является ли она рабочей. Для РФ ещё проще - второй пункт не нужен - там по любому сб/вс выходной уже много лет как... Записей в таблице будет порядка 20-ти на год.
Можно ещё добавить признак "ежегодный выходной", для таких сравнивать лишь месяц/день игнорируя год.

У нас такой простой вариант и работает - там сейчас 14 "ежегодных" записей, 6 записей с переносами на 16-й год и 3 на 17-й.

P.P.S. Был не прав, в РФ тоже бывают рабочие субботы - т.е. убирать логику проверки и соответствующий флаг нельзя. В 16-м году рабочий день с 22 февраля (понедельник) переносился на 20 февраля (суббота).

P.P.P.S. А есть ещё такая мулька как "сокращённый рабочий день" - перед некоторыми праздниками делают


------------------
WBR, Igor




Исправлено 2 раз(а). Последнее : Igor Korolyov, 15.02.17 13:52
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002



------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Календарь с выбором произвольных дат
SoccerStudio

Сообщений: 5055
Откуда: Подмосковье
Дата регистрации: 28.11.2006
Igor Korolyov
Вариант с 365-ю записями на каждый день - ну я бы сказал что ОЧЕНЬ специфичен, и нужны весьма хитрые инструменты его (полу)автоматизированного заполнения (хотя для "вахтовых" или "сутки-через-трое" вариантов графика работы это самый оптимальный способ).
Я уже выше писал про эти "весьма хитрые инструменты" - раз в год, в соответствии с опубликованным производственным календарем, силами поддержки пишется скрипт, состоящий из 365 команд insert.


------------------
"Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 Joys Guest (Гостей: 26)

© 2000-2024 Fox Club 
Яндекс.Метрика