Имя: Пароль:
1C
1С v8
Помогите рассчитать окончание действия договора
,
0 neo68ru
 
07.08.15
12:46
Составляю конфигурацию в 1С Предприятие на тему "учебные курсы". Не могу придумать как сделать чтобы в графе заявления о приеме "Окончание Занятий" автоматически рассчитывалась дата окончания занятий,если известно, сколько часов выделено на курсы (120ч,60ч и 80ч) и занятия длятся в день 2 часа по будням.
1 jsmith82
 
07.08.15
12:47
УПП, общий модуль ЗаполнениеДокументов, функция ЧислоРабочихДней(ДатаНач, ДатаКон)
2 shuhard_серый
 
07.08.15
12:49
(0)[ Не могу придумать как]
напиши формулу на бумажке
3 neo68ru
 
07.08.15
12:51
я просто совсем новичок в 1С
4 shuhard_серый
 
07.08.15
12:54
(3) розовые сопли ?
5 neo68ru
 
07.08.15
12:57
я так понял нужно создать производственный календарь и как то от него отталкиваться?
6 jsmith82
 
07.08.15
12:58
(5) Создай. Вытащи из УПП. Сможешь, надеюсь...
7 Злопчинский
 
07.08.15
12:59
ну тут два выхода...
либо знать предметку и поэтому уметь программировать ее
либо
учиться предметке параллеьно с программированием.
но так как при втором способе - учиться <> знать - то напрограммировано будет интересно и красиво... ;-)
8 jsmith82
 
07.08.15
13:00
Формы регистра не обязательно переносить. Главное метаданные. Затем заполнить их через обмен данных.
Если вообще трудно, можешь создать Константу ЧислоРабочихДней. Хотя, раз у тебя конфа "Учебные курсы", то наверняка календарь понадобится.
9 neo68ru
 
07.08.15
13:07
(8) Вообще в целом мне от конфигурации надо чтобы она учитывая что занятие 2 часа в день по будням и сколько часов идут определенные курсы для студента автоматически рассчитывала в заявлении дату окончания занятий, исходя из того какой курс выбран для студента.
10 mistеr
 
07.08.15
13:22
(9) Праздники, переносы выходных учитывать нужно? Если да, то нужен календарь (и, главное, кто-то должен его заполнять). Если нет, то можно просто в коде посчитать.
11 bolobol
 
07.08.15
13:25
(9) Для этого не обязательно целую конфигурацию лепить - достаточно внешней обработки с одной кнопкой "дата окончания показать"
12 bolobol
 
07.08.15
13:28
+(10) или к ЗУП подключаться (в ЗУП-е выполняться), если ЗУП есть
13 neo68ru
 
07.08.15
13:41
(10) праздники и переносы выходных не нужны
14 Fish
 
07.08.15
13:46
(13) Ну тогда считай в коде. С датами работать умеешь? А остальное имхо, трудностей не должно вызывать.
15 el7cartel
 
07.08.15
13:49
(3) да дело не в том новичок ты или нет, если башка шарит, и можешь написать алгоритм действий, то его реализовать можно не только на 1С, но и на других языках программирования.
16 bolobol
 
07.08.15
14:02
+(15) И даже посчитать на калькуляторе, коль переносы и праздники не нужны - тут математика в одну строку, уровень 3 класс... или, когда там на палочках заканчивают считать(?)
17 kosts
 
07.08.15
14:11
Даже и не благодари


Функция РассчитатьОкончаниеДействияДоговора(ИсходнаяДата, ИсходныеЧасы)
    ЧасовВЭтотДень = ?(ДеньНедели(ИсходнаяДата) <= 5, 2, 0 );
    Если ИсходныеЧасы - ЧасовВЭтотДень <= 0 Тогда
        Возврат ИсходнаяДата;
    Иначе
        Возврат РассчитатьОкончаниеДействияДоговора(ИсходнаяДата + 24*60*60, ИсходныеЧасы - ЧасовВЭтотДень);
    КонецЕсли;
КонецФункции
18 drcrasher
 
07.08.15
14:20
(17) рекурсия? но зачем?
19 kosts
 
07.08.15
14:23
(18) Что бы мозги развивать
20 drcrasher
 
07.08.15
14:27
(19) я, конечно, понимаю, что стек резиновый, но блин 90 вызовов на 120 часов!
21 kosts
 
07.08.15
14:33
(20) Так никто же не заставляет именно так делать, это для ТСа, для тренировки, для поразмышления...
22 neo68ru
 
07.08.15
23:23
спасибо всем буду копаться, будут какие-то вопросы напишу. p.s хороший форум:)
23 neo68ru
 
08.08.15
20:17
А подскажите еще пожалуйста я вот на форуме еще нашел функцию которая могла бы мне помочь в принципе только я не знаю как ее адаптировать под мою конфигурацию.

Функция РасчетДатыОкончания();
        ТекДата = НачалоЗанятий;
        КолВоЧасовРаботы = 2;
        Рубильник = 1;
        Пока КолВоЧасовРаботы>0 Цикл
        //Проверка текущей даты
        
        Если ДеньНедели(ТекДата)<6 Тогда
            ТекДата = ТекДата+2*60*60;
            КолВоЧасовРаботы=КолВоЧасовРаботы-2;
        КонецЕсли;
    КонецЦикла;
    КонецРаботы=ТекДата;
    КонецФункции

Как сделать чтобы количество часов само выбиралось в зависимости от курса и как привязать это все к реквизиту ДатаОкончания в моем договоре?
24 ДенисЧ
 
08.08.15
21:14
Количество часов в зависимости от курса?
Ну, извините, это уже за гранью...
25 neo68ru
 
08.08.15
22:48
(24) почему за гранью? ну в крайнем случае для каждых курсов можно отдельный договор сделать я не знаю
26 neo68ru
 
09.08.15
22:27
я не могу создать производственный календарь его нет в учебной версии похоже:(
27 sFAQer
 
10.08.15
04:44
(26) Тыб книжки какие почитал что ли...
28 neo68ru
 
12.08.15
00:53
(27) да я читал
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.