Имя: Пароль:
1C
 
Как программно подсчитать?.. ПРОВЕРЬ СЕБЯ!
0 Львенок
 
19.12.03
10:21
Отвечая на вопрос Forgesemi, задался любопытным вопросом. А что же такое, собственно, месяц? Ответ вроде бы очевиден... Казалось бы, да бог с ним, что в месяцах бывает разное количество дней, месяц это вот что-то такое между первым числом текущего месяца и первым числом следующего месяца. Или между вторым текущего и вторым следующего. Или между пятнадцатыми числами. Или... Ээээ... Между 28 января и 28 февраля. Или между 29 янаваря и чем? Или между тридцатым января и чем? Или даже начерное между 31 янаваря и эээ... чем, собственно?

А теперь вопрос. Не открывая конфигуратор (только по честному!), не запуская 1С вообще, скажите чему будет равна Дата2, определяемая как Дата2=ДобавитьМесяц(Дата1,1), в случае когда:
а) Дата1='28.01.03'
б) Дата1='29.01.03'
в) Дата1='30.01.03'
г) Дата1='31.01.03'

В первую очередь, проверьте себя эксперты (ну и все остальные, тоже)! ;) Если потом вы поглядите в конфгураторе, не пишете ответов, подсказок, намеков. Просто мотайте на ус. ;)
___
Искренне Ваш, Львенок.
1 Львенок
 
19.12.03
11:00
Но сказать, правильно ли вы подумали с самого начала, здесь можно. И нужно! ;) Или написать свои ваианты ответов до того, как поглядели в 1С.
___
Искренне Ваш, Львенок
2 naf
 
19.12.03
11:04
Нда уж, никогда не задумывалси... Но интуиция (первое пришедшее в голову решение) не подвела ;) Потом, когда начал думать, возникли прочие варианты Ж;)
3 ally
 
19.12.03
12:58
Львенок, Отличный вопрос, вариант есть, но пойду проверю ;-)))
4 Львенок
 
19.12.03
13:20
Ха-ха... Это только первая часть вопроса. Совершенно очевидно, напрашивается и вторая половина вопроса:

ДобавитьМесяц( ДобавитьМесяц(Дата1,1) ,-1) = Дата1 ???

В свою очередь после ответа на него, напрашивается САМЫЙ ГЛАВНЫЙ ВОПРОС - так что же такое месяц? ;)
___
Искренне Ваш, Львенок.
5 ally
 
19.12.03
13:26
даа, слушай оно <>Дата1
6 Львенок
 
19.12.03
13:28
Ничего подобного она строго <=
___
Искренне Ваш, Львенок.
7 ally
 
19.12.03
13:34
Таааак, ладно.
Вот что я имею
//*******************************************
Процедура Выполнить()
   Дата1='31.01.03';
   Дата2=ДобавитьМесяц(Дата1,1);
   Дата3=ДобавитьМесяц( ДобавитьМесяц(Дата1,1) ,-1);
   Дата4=ДобавитьМесяц( Дата2 ,-1);
   Сообщить(Дата2);
   Сообщить(Дата3);
   Сообщить(Дата4);
КонецПроцедуры

Вот что я получаю:
28.02.2003
28.01.2003
28.01.2003
8 ally
 
19.12.03
13:35
Дата4 это так дубляж на всякий случай. 28.01.2003 <>31.01.03
9 ally
 
19.12.03
13:45
Фууу, туплю, нафиг. Да да  Строго <=
10 Forgesemi
 
20.12.03
04:40
Привет Всем!
Львенок,ты правильно сделал что задумался.
То что ты мне дал - нормально,
только к той строке нужно добавить...
МесяцевМежду = ?(ДатаЧисло(НачДата) > ДатаЧисло(КонДата),Мес - 1,Мес)
И тогда полные месяцы.
11 Forgesemi
 
20.12.03
05:00
Точнее вот все...
Конечно,дурачимся сдесь на  форуме ,умничаем
--------------------
МесяцевМежду=ДатаГод(Дата2)*12+ДатаМесяц(Дата2)-ДатаГод(Дата1)*12-ДатаМесяц(Дата1);
МесяцевМежду = ?(ДатаЧисло(Дата1) > ДатаЧисло(Дата2),МесяцевМежду - 1,МесяцевМежду);

PS: В стиле уважаемого Львенка.
12 Львенок
 
20.12.03
07:48
(11) Ну вот виидишь! Исправляешься же! Что-то вроде этого я и имел ввиду. В любом случае линейные вычисления более оправданы, чем цикл! ;) Молодец!
___
Искренне Ваш, Львенок
13 А
 
20.12.03
12:51
Спорить нелюблю но ведь в линейках тоже происходит обращение к функциям некоторые из которых используют циклы и вданной ситуации не однократно,
и...впрочем оставим тему,ты тоже молодец - подобрезал меня. И я обратил внимание на этот аспект благодаря тебе.Ладно все здорово, ГЛАВНОЕ ЧТО БЫ В МИРЕ НЕ БЫЛО
ЭТОЙ СРАНОЙ ВОЙНЫ,ну вообщем пока...
14 Forgesemi
 
20.12.03
12:58
A- это я
15 Волшебник
 
20.12.03
13:38
(14) просьба выражаться вежливее. И лучше всего не скрываться за бессмысленными никами, потому что это тоже не вежливо. Еще это не позволит мне оценить все сообщения участника при присвоении статуса эксперта форума.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.