Вверх ↑
Этот топик читают: Гость
Ответов: 927
Рейтинг: 3
#376: 2017-12-01 15:37:14 ЛС | профиль | цитата
Праздничные и прочие 8 марты опускаем. Интересует расчет без учета субботы и воскресенья.
Опять же, переносы и праздники заранее не предусмотришь. По крайней мере у нас в Беларуси
В России просто дают выходные, а у нас переносят всякими приказами и всем по разному.
Как то так.

--- Добавлено в 2017-12-01 15:54:01

Конечно в идеале видеть мультиэлемент с возможностью выбора считать все дни или без суббот и воскресений. Но понимаю, что это не стол заказов, поэтому был бы признателен хотя бы за помощь в коде из стандартных компонентов и IC в том числе, раз уж стандартными элементами обойтись не выйдет.

Редактировалось 1 раз(а), последний 2017-12-01 15:54:01
карма: 0

0
Ответов: 8351
Рейтинг: 775
#377: 2017-12-01 15:55:17 ЛС | профиль | цитата
user_asm, в пакете MS Office есть и разработка сетевых графиков с рабочим днями, зарплатами и затратами. Может там? или принципиально на HiAsm
карма: 14

0
Ответов: 16489
Рейтинг: 1210
#378: 2017-12-01 16:09:54 ЛС | профиль | цитата
user_asm, на счёт +-1 в предыдущей теме смотри внимательней.(обругать успел, а посмотреть нет).
user_asm писал(а):
По крайней мере у нас в Беларуси
http://www.tamby.info/2018/prazdniki-belarusi.htm

Редактировалось 2 раз(а), последний 2017-12-01 16:24:38
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4400
Рейтинг: 472
#379: 2017-12-01 19:27:42 ЛС | профиль | цитата
Леонид писал(а):
user_asm, в пакете MS Office есть и разработка сетевых графиков с рабочим днями, зарплатами и затратами. Может там? или принципиально на HiAsm

Нет это принципиально, он даже пример нашёл тут http://www.sql.ru/forum/323818-2/kolichestvo-rabochih-dney-mezhdu-dvumya-datami в последнем посте но так и не думал как это в VBJScript всунуть. Да вот результат его всё равно бы не устроил, лень массив то с датами забить, ну лень так лень и мне лень ему помогать, двойной труд так сказать не по мне.
карма: 4

0
Ответов: 927
Рейтинг: 3
#380: 2017-12-01 21:09:51 ЛС | профиль | цитата
Tad,
У нас кто работает, кто не работает, хаос. Часто переносы проводят локальными решениями исполкомов и т.д. А на фоне полусдохших предприятий, перешедших на неполный рабочий день, вабще бардак.
И не обругать, а всего лишь ответил на необоснованное оскорбление.
Леонид,
Офис не катит. У меня своя программа на БД SQLite.Уже с 2010 года примерно. Именно в ней всё реализовано.
andrestudio,
Без комментариев.
карма: 0

0
Ответов: 4400
Рейтинг: 472
#381: 2017-12-01 22:59:32 ЛС | профиль | цитата
user_asm писал(а):
andrestudio,
Без комментариев.

На обиженных воду возят


Add(MainForm,2953706,154,77)
{
Width=738
Height=163
link(onCreate,3713768:doSetDate,[])
}
Add(DatePicker,3713768,217,91)
{
Left=20
Top=30
Width=135
Height=24
Point(Data)
Point(CurrentDateTime)
link(onChange,11075353:doConvert,[])
}
Add(Edit,16145800,497,91)
{
Left=315
Top=30
Width=30
Text="0"
DataType=2
}
Add(DateConvertor,11075353,273,91)
{
Mode=9
Format="dd.MM.yyyy "
Point(Result)
}
Add(Button,8957237,273,189)
{
Left=20
Top=95
Width=130
Caption="Счёт дней"
link(onClick,9918231:doWork,[])
}
Add(Label,14347521,154,133)
{
Left=20
Top=5
Width=110
Height=20
Caption="Начальная дата"
}
Add(DatePicker,12647910,336,91)
{
Left=165
Top=30
Width=135
Height=24
Point(Data)
Point(CurrentDateTime)
link(onChange,5602767:doConvert,[])
}
Add(Label,2383458,161,140)
{
Left=165
Top=5
Width=101
Height=20
Caption="Конечная дата"
}
Add(UpDown,14716132,455,91)
{
Left=345
Top=30
Max=1
Min=-1
link(onPosition,16145800:doText,[])
}
Add(Label,6308306,168,147)
{
Left=315
Top=5
Width=63
Height=20
Caption="+/- 1 день"
}
Add(Memo,8411243,392,189)
{
Left=390
Top=15
Width=325
Height=100
}
Add(Button,1728302,273,245)
{
Left=165
Top=95
Width=130
Caption="Очистить список"
link(onClick,8411243:doClear,[(373,251)(373,202)])
}
Add(DateConvertor,5602767,392,91)
{
Mode=9
Format="dd.MM.yyyy "
Point(Result)
}
Add(VBJScript,9918231,322,189)
{
WorkPoints=#6:doWork|
EventPoints=#5:onRes|
DataPoints=#7:StartDt|5:EndDt|11:AmendmentDt|
Script=#18:Sub doWork(dt,idx)|0:|22: Dim dtmStart, dtmEnd|51: Dim intTotalDays, intWeekendDays, intBusinessDays|4: |24: ' проверки на вшивость|34: If Not IsDate(sys.StartDt) Then |12: Exit Sub|8: End If|2: |31: If Not IsDate(sys.EndDt) Then|12: Exit Sub|8: End IF|2: |51: If (CDate(sys.StartDt) >= CDate(sys.EndDt)) Then |12: Exit Sub|10: End If |2: |36: ' читаем с точек и приводим к типу|46: dtmStart = CDate(sys.StartDt) '- первая дата|49: dtmEnd = CDate(sys.EndDt) '- последняя дата|4: |47: Select Case DatePart("w", dtmStart, vbMonday)|45: Case 6: dtmStart = DateAdd("d", dtmStart, 2)|45: Case 7: dtmStart = DateAdd("d", dtmStart, 1)|12: End Select|45: Select Case DatePart("w", dtmEnd, vbMonday)|42: Case 6: dtmEnd = DateAdd("d", dtmEnd, -1)|42: Case 7: dtmEnd = DateAdd("d", dtmEnd, -2)|12: End Select|0:|33: ' всего дней между двумя датами|52: intTotalDays = DateDiff("d", dtmStart, dtmEnd) + 1|17: ' выходных дней|65: intWeekendDays = DateDiff("ww", dtmStart, dtmEnd, vbMonday) * 2|16: ' рабочих дней|49: intBusinessDays = intTotalDays - intWeekendDays|0:|61: sys.onRes "всего дней между двумя датами = " & intTotalDays|47: sys.onRes "выходных дней = " & intWeekendDays|47: sys.onRes "рабочих дней = " & intBusinessDays|2: |34: If CInt(sys.AmendmentDt) >0 Then|73: sys.onRes "рабочих дней с поправкой +1 день = " & intBusinessDays + 1|8: End If|2: |35: If CInt(sys.AmendmentDt) <0 Then |73: sys.onRes "рабочих дней с поправкой -1 день = " & intBusinessDays - 1|12: End If |0:|7:End Sub|
link(onRes,8411243:doAdd,[])
link(StartDt,11075353:Result,[(328,156)(279,156)])
link(EndDt,5602767:Result,[(335,156)(398,156)])
link(AmendmentDt,16145800:Text,[(342,168)(503,168)])
}


Всё, водка кончается, пойду спать
карма: 4

0
Ответов: 927
Рейтинг: 3
#382: 2017-12-02 00:19:33 ЛС | профиль | цитата
У меня еще пиво в наличии.
Чей-та не фунциклирует схема.


--- Добавлено в 2017-12-02 00:21:53

Собственно задача такова -в окне Начальная дата выставить дату старта - в окне Конечная дата автоматически рассчитывается дата окончания срока. Срок - 15,20,25 рабочих дней берется из ини-файла.

--- Добавлено в 2017-12-02 00:23:25

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

Редактировалось 2 раз(а), последний 2017-12-02 00:23:25
карма: 0

0
Ответов: 4400
Рейтинг: 472
#383: 2017-12-02 08:32:37 ЛС | профиль | цитата
user_asm писал(а):
У меня еще пиво в наличии.

везунчик, а мне пизд... с утра пришлось
user_asm, вот что пристал я даже с похмелья это т.з сделал, дальше сам

Add(MainForm,2755714,112,105)
{
Width=598
Height=211
link(onCreate,3713768:doSetDate,[])
}
Add(DatePicker,3713768,175,119)
{
Left=20
Top=30
Width=135
Height=24
Point(Data)
Point(CurrentDateTime)
link(onChange,11075353:doConvert,[])
}
Add(Edit,16145800,371,119)
{
Left=170
Top=100
Width=30
Text="0"
DataType=2
}
Add(DateConvertor,11075353,231,119)
{
Mode=9
Format="dd.MM.yyyy "
Point(Result)
}
Add(Button,8957237,231,217)
{
Left=15
Top=145
Width=130
Caption="Счёт дней"
link(onClick,16465415:doWork,[])
}
Add(Label,14347521,112,161)
{
Left=20
Top=5
Width=110
Height=20
Caption="Начальная дата"
}
Add(DatePicker,12647910,434,217)
{
Left=20
Top=95
Width=135
Height=24
Point(Data)
Point(CurrentDateTime)
}
Add(Label,2383458,119,168)
{
Left=20
Top=70
Width=101
Height=20
Caption="Конечная дата"
}
Add(UpDown,14716132,329,119)
{
Left=200
Top=100
Max=1
Min=-1
link(onPosition,16145800:doText,[])
}
Add(Label,6308306,126,175)
{
Left=170
Top=75
Width=122
Height=20
Caption="+/- 1 рабочий день"
}
Add(Memo,8411243,371,273)
{
Left=310
Top=20
Width=265
Height=145
}
Add(Button,1728302,231,280)
{
Left=160
Top=145
Width=130
Caption="Очистить список"
link(onClick,8411243:doClear,[])
}
Add(DateConvertor,5602767,371,217)
{
Mode=7
Format="dd.MM.yyyy "
Point(Result)
link(onResult,12647910:doSetDate,[])
}
Add(VBJScript,16465415,280,217)
{
WorkPoints=#6:doWork|
EventPoints=#9:onEndDate|5:onRes|
DataPoints=#7:StartDt|9:Timeframe|11:AmendmentDt|
Script=#18:Sub doWork(dt,idx)|0:|51: Dim intTotalDays, intWeekendDays, intBusinessDays|37: Dim intTimeframe, DtBegin, wDays, i|59: Const MAX_TOTAL_DAYS = 60 ' максимальный расчётный период|4: |31: ' проверка на валидность даты|34: If Not IsDate(sys.StartDt) Then |12: Exit Sub|8: End If|0:|19: ' читаем с точек |46: dtmStart = CDate(sys.StartDt) '- дата начала|60: ' кол-во дней c учётом срока и поправки +/- рабочий 1 день|65: intTimeframe = CInt(sys.Timeframe) + CInt(sys.AmendmentDt) |0:|24: DtBegin = dtmStart - 1|29: For i = 0 To MAX_TOTAL_DAYS|25: DtBegin = DtBegin + 1|44: wDays = DatePart("w", DtBegin, vbMonday)|35: intTotalDays = intTotalDays + 1|34: If wDays = 7 Or wDays = 6 Then|41: intWeekendDays = intWeekendDays + 1|8: Else|43: intBusinessDays = intBusinessDays + 1|44: If intBusinessDays = intTimeframe Then|16: Exit For|14: End If |10: End If|6: Next|20: ' вывод результата|61: sys.onRes "всего дней между двумя датами = " & intTotalDays|47: sys.onRes "выходных дней = " & intWeekendDays|47: sys.onRes "рабочих дней = " & intBusinessDays|29: sys.onEndDate CDbl(DtBegin)|3: |7:End Sub|
link(onEndDate,5602767:doConvert,[])
link(StartDt,11075353:Result,[(286,184)(237,184)])
link(Timeframe,3324218:String,[])
link(AmendmentDt,16145800:Text,[(300,184)(377,184)])
link(onRes,8411243:doAdd,[(336,230)(336,279)])
}
Add(ComboBox,3324218,280,105)
{
Left=170
Top=30
Width=95
Height=24
Strings=#2:15|2:20|2:25|
Text=""
}
Add(Label,12246042,133,182)
{
Left=170
Top=5
Width=36
Height=20
Caption="Срок"
}

карма: 4

0
Ответов: 927
Рейтинг: 3
#384: 2017-12-02 09:33:54 ЛС | профиль | цитата
Почему выбивает эту ошибку как на картинке?
Второй пример аналогично выбивает.
карма: 0

0
Ответов: 4400
Рейтинг: 472
#385: 2017-12-02 10:06:26 ЛС | профиль | цитата
user_asm писал(а):
Почему выбивает эту ошибку как на картинке?
Второй пример аналогично выбивает.

Потому как If ПИВО < 0 Then VBJScript->UseName = True

user_asm, у меня нет этого свойства UseName а у тебя оно по умолчанию False

з.ы где только Вас таких одарённых на бухгалтерские курcы набирают

Редактировалось 2 раз(а), последний 2017-12-03 00:29:27
карма: 4

0
Ответов: 927
Рейтинг: 3
#386: 2017-12-02 22:26:45 ЛС | профиль | цитата
Опять разжигаешь?
Твой своеобразный кич познаниями меня не впечатляет.
Я в свою очередь тоже обладаю пригоршней познаний, весьма затребованных среди обычных обывателей.
Но не кичусь этим.
Юношеский максимализм в твоём лице конечно простителен. Но как мужика эти сопли тебя не красят.
Вопрос-ответ-комментарии.
Не хочешь отвечать и помогать - никто не заставляет. Да, возможно я останусь ни с чем. Значит так надо. Но выслушивать комментарии о своей компетентности от человека который даже не имеет представления о роде и специфике моего занятия - уж увольте.
карма: 0

0
Ответов: 4400
Рейтинг: 472
#387: 2017-12-03 00:37:08 ЛС | профиль | цитата
user_asm писал(а):
Опять разжигаешь?

изволь любезный, я на этом форуме лишь одну единственную аксиому доказываю

все остальные перлы это твоя пригоршня познаний
карма: 4

0
Ответов: 927
Рейтинг: 3
#388: 2017-12-03 01:20:43 ЛС | профиль | цитата
Доказывать не надо, надо либо помочь, либо промолчать. Иного не требуется.
Просто по*издеть, высказав свою значимость в данном вопросе, но не оказав должной помощи - это не на форуме.
Форум создан для обсуждения и помощи. А если по*издеть, то это сюда http://forum.hiasm.com/forum/16
карма: 0

0
Ответов: 1416
Рейтинг: 97
#389: 2017-12-03 01:41:35 ЛС | профиль | цитата
Ну вы блин и даёте!
В трёх соснах заблудились!
Я не зная этого птичьего языка, - китайская грамота для меня этот барсик.
За сколько разобрался? Больше пост писал, потому что, буков не вижу.
Вы вычитать умеете 2017-12-03 01:20:43 - 2017-12-03 01:41:35?
Чем посты писать, лучше подумать!
Add(MainForm,2755714,238,84)
{
Width=598
Height=211
link(onCreate,3713768:doSetDate,[])
}
Add(DatePicker,3713768,301,98)
{
Left=20
Top=30
Width=135
Height=24
Point(Data)
Point(CurrentDateTime)
}
Add(Edit,16145800,497,98)
{
Left=170
Top=100
Width=30
Text="0"
DataType=2
}
Add(Button,8957237,357,196)
{
Left=15
Top=145
Width=130
Caption="Счёт дней"
link(onClick,16465415:doWork,[])
}
Add(Label,14347521,238,140)
{
Left=20
Top=5
Width=110
Height=20
Caption="Начальная дата"
}
Add(DatePicker,12647910,560,196)
{
Left=20
Top=95
Width=135
Height=24
Point(Data)
Point(CurrentDateTime)
}
Add(Label,2383458,245,147)
{
Left=20
Top=70
Width=101
Height=20
Caption="Конечная дата"
}
Add(UpDown,14716132,455,98)
{
Left=200
Top=100
Max=1
Min=-1
link(onPosition,16145800:doText,[])
}
Add(Label,6308306,252,154)
{
Left=170
Top=75
Width=122
Height=20
Caption="+/- 1 рабочий день"
}
Add(Memo,8411243,497,252)
{
Left=310
Top=20
Width=265
Height=145
}
Add(Button,1728302,357,259)
{
Left=160
Top=145
Width=130
Caption="Очистить список"
link(onClick,8411243:doClear,[])
}
Add(DateConvertor,5602767,497,196)
{
Mode=7
Format="dd.MM.yyyy "
Point(Result)
link(onResult,12647910:doSetDate,[])
}
Add(VBJScript,16465415,406,196)
{
WorkPoints=#6:doWork|
EventPoints=#9:onEndDate|5:onRes|
DataPoints=#7:StartDt|9:Timeframe|11:AmendmentDt|
Script=#18:Sub doWork(dt,idx)|0:|51: Dim intTotalDays, intWeekendDays, intBusinessDays|37: Dim intTimeframe, DtBegin, wDays, i|59: Const MAX_TOTAL_DAYS = 60 ' максимальный расчётный период|4: |31: ' проверка на валидность даты|1: |38: ' If Not IsDate(sys.StartDt) Then |16: ' Exit Sub|11: ' End If|0:|2: |19: ' читаем с точек |46: dtmStart = Cstr(sys.StartDt) '- дата начала|60: ' кол-во дней c учётом срока и поправки +/- рабочий 1 день|65: intTimeframe = Cstr(sys.Timeframe) + CInt(sys.AmendmentDt) |2: |28: DtBegin = dtmStart - 1 |32: For i = 0 To MAX_TOTAL_DAYS|27: DtBegin = DtBegin + 1|47: wDays = DatePart("w", DtBegin, vbMonday)|38: intTotalDays = intTotalDays + 1|37: If wDays = 7 Or wDays = 6 Then|43: intWeekendDays = intWeekendDays + 1|11: Else|46: intBusinessDays = intBusinessDays + 1|47: If intBusinessDays = intTimeframe Then|19: Exit For|17: End If |13: End If|9: Next|20: ' вывод результата|64: sys.onRes "всего дней между двумя датами = " & intTotalDays|50: sys.onRes "выходных дней = " & intWeekendDays|49: sys.onRes "рабочих дней = " & intBusinessDays|32: sys.onEndDate CDbl(DtBegin)|3: |7:End Sub|
UseName=0
link(onEndDate,5602767:doConvert,[])
link(onRes,8411243:doAdd,[(468,209)(468,258)])
link(StartDt,3713768:CurrentDateTime,[(412,163)(307,163)])
link(Timeframe,3324218:String,[])
link(AmendmentDt,16145800:Text,[(426,163)(503,163)])
}
Add(ComboBox,3324218,406,84)
{
Left=170
Top=30
Width=95
Height=24
Strings=#2:15|2:20|2:25|
Text=""
}
Add(Label,12246042,259,161)
{
Left=170
Top=5
Width=36
Height=20
Caption="Срок"
}

Редактировалось 2 раз(а), последний 2017-12-03 01:44:34
карма: 3

0
Ответов: 4400
Рейтинг: 472
#390: 2017-12-03 01:45:14 ЛС | профиль | цитата
user_asm писал(а):
надо либо помочь, либо промолчать.

чёт не понял, я чем занимался
user_asm писал(а):
Форум создан для обсуждения и помощи

Да ладно, кому хоть сам то помог user_asm, один умный вещь скажу, ещё и не таких << помощников по*издеть >> в кавычках тут видывал, а если чем и обидел забей. Ну а если чем и помог то "сходи пописай, а то ночь на дворе однако"

--- Добавлено в 2017-12-03 01:49:49

flint2, да я поправил для одарённых

Add(DatePicker,3713768,91,70)
{
Left=20
Top=30
Width=135
Height=24
link(onChange,1721535:doEvent1,[])
}
Add(Edit,16145800,343,70)
{
Left=170
Top=95
Width=30
Text="0"
DataType=2
}
Add(DateConvertor,11075353,196,70)
{
Mode=9
Format="dd.MM.yyyy "
Point(Result)
}
Add(Button,8957237,203,168)
{
Left=15
Top=145
Width=130
Enabled=1
Caption="Счёт дней"
Point(doEnabled)
link(onClick,16465415:doWork,[])
}
Add(Label,14347521,91,203)
{
Left=20
Top=5
Width=110
Height=20
Caption="Начальная дата"
}
Add(DatePicker,12647910,406,168)
{
Left=20
Top=95
Width=135
Height=24
}
Add(Label,2383458,98,210)
{
Left=20
Top=70
Width=101
Height=20
Caption="Конечная дата"
}
Add(UpDown,14716132,294,70)
{
Left=200
Top=95
Max=1
Min=-1
link(onPosition,16145800:doText,[])
}
Add(Label,6308306,105,217)
{
Left=170
Top=75
Width=122
Height=20
Caption="+/- 1 рабочий день"
}
Add(Memo,8411243,343,217)
{
Left=310
Top=20
Width=265
Height=145
ScrollBars=2
}
Add(Button,1728302,203,224)
{
Left=160
Top=145
Width=130
Caption="Очистить список"
link(onClick,8411243:doClear,[])
}
Add(DateConvertor,5602767,343,168)
{
Mode=7
Format="dd.MM.yyyy "
Point(Result)
link(onResult,12647910:doSetDate,[])
}
Add(VBJScript,16465415,252,168)
{
WorkPoints=#6:doWork|
EventPoints=#9:onEndDate|5:onRes|
DataPoints=#7:StartDt|9:Timeframe|11:AmendmentDt|
Script=#18:Sub doWork(dt,idx)|0:|20:On Error Resume Next|0:|51: Dim intTotalDays, intWeekendDays, intBusinessDays|47: Dim intTimeframe, DtBegin, wDays, i, dtmStart|59: Const MAX_TOTAL_DAYS = 60 ' максимальный расчётный период|33: ' предустановка согластно схемы|15: dtmStart = 15|4: |31: ' проверка на валидность даты|34: If Not IsDate(sys.StartDt) Then |12: Exit Sub|8: End If|0:|19: ' читаем с точек |46: dtmStart = CDate(sys.StartDt) '- дата начала|60: ' кол-во дней c учётом срока и поправки +/- 1 рабочий день|65: intTimeframe = CInt(sys.Timeframe) + CInt(sys.AmendmentDt) |0:|24: DtBegin = dtmStart - 1|29: For i = 0 To MAX_TOTAL_DAYS|25: DtBegin = DtBegin + 1|44: wDays = DatePart("w", DtBegin, vbMonday)|35: intTotalDays = intTotalDays + 1|34: If wDays = 7 Or wDays = 6 Then|41: intWeekendDays = intWeekendDays + 1|8: Else|43: intBusinessDays = intBusinessDays + 1|44: If intBusinessDays = intTimeframe Then|16: Exit For|14: End If |10: End If|6: Next|20: ' вывод результата|61: sys.onRes "всего дней между двумя датами = " & intTotalDays|47: sys.onRes "выходных дней = " & intWeekendDays|47: sys.onRes "рабочих дней = " & intBusinessDays|29: sys.onEndDate CDbl(DtBegin)|3: |7:End Sub|
link(onEndDate,5602767:doConvert,[])
link(StartDt,11075353:Result,[(258,135)(202,135)])
link(Timeframe,3324218:EditText,[])
link(AmendmentDt,16145800:Text,[(272,135)(349,135)])
link(onRes,8411243:doAdd,[(308,181)(308,223)])
}
Add(ComboBox,3324218,245,56)
{
Left=170
Top=30
Width=95
Height=24
Strings=#2:15|2:20|2:25|
Text="15"
ReadOnly=0
Point(EditText)
}
Add(Label,12246042,112,224)
{
Left=170
Top=5
Width=36
Height=20
Caption="Срок"
}
Add(MainForm,8148382,91,133)
{
Width=598
Height=211
}
Add(Hub,1721535,147,70)
{
link(onEvent1,11075353:doConvert,[])
link(onEvent2,8957237:doEnabled,[(182,83)(182,174)])
}


Редактировалось 1 раз(а), последний 2017-12-03 01:49:49
карма: 4

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)