gifts2017

Поиск номера месяца в году из его наименования средствами 1С

Опубликовал Лев Селиверстов (Mordens) в раздел Программирование - Практика программирования

Иногда необходимо найти из строки наименования месяца его порядковый номер в году.
Стандартной функции или процедуры в 1С нет. И по этому многие ищут разный подход...
В стандартной конфигурации ЗиК от 1С в глобальном модуле встретил вот это:
Привожу фрагмент.

 //Функция глПреобразоватьСтрокуМесяца(Месяц, ПредпочтительнаяДата) Экспорт
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//Если		ПерваяБуква="Я"	Тогда				ВведенноеЧисло = 1;
//	ИначеЕсли	ПерваяБуква="Ф"	Тогда			ВведенноеЧисло = 2;
//	ИначеЕсли	ПерваяБуква="С"	Тогда			ВведенноеЧисло = 9;
//	ИначеЕсли	ПерваяБуква="О"	Тогда			ВведенноеЧисло = 10;
//	ИначеЕсли	ПерваяБуква="Н"	Тогда			ВведенноеЧисло = 11;
//	ИначеЕсли	ПерваяБуква="Д"	Тогда			ВведенноеЧисло = 12;
//	ИначеЕсли	ПерваяБуква="М"	Тогда	
// если "М" - посмотрим Март или Май
//		Если		Лев(СтрокаМесяц,3)="МАР" Тогда	ВведенноеЧисло = 3; 
// задан март	явным образом
//		ИначеЕсли	Лев(СтрокаМесяц,3)="МАЙ" Тогда	ВведенноеЧисло = 5; 
// задан май	явным образом
//	Иначе	ВведенноеЧисло = ?((ПредпочтитМесяц>4)или(ПредпочтитМесяц<3),5,3);
//		КонецЕсли;
//	ИначеЕсли	ПерваяБуква="А"	Тогда
// если "А" - посмотрим Апрель или Август
//		Если		Лев(СтрокаМесяц,2)="АП"	 Тогда	ВведенноеЧисло = 4; 
// задан апрель	явным образом
//		ИначеЕсли	Лев(СтрокаМесяц,2)="АВ"	 Тогда	ВведенноеЧисло = 8; 
// задан август	явным образом
//		Иначе	ВведенноеЧисло= ?((ПредпочтитМесяц>7)или(ПредпочтитМесяц<4),8,4);
//		КонецЕсли;
//	ИначеЕсли	ПерваяБуква="И"	Тогда	// если "И" - посмотрим Июнь или Июль
//		Если		Лев(СтрокаМесяц,3)="ИЮН" Тогда	ВведенноеЧисло = 6; 
// задан июнь	явным образом
//		ИначеЕсли	Лев(СтрокаМесяц,3)="ИЮЛ" Тогда	ВведенноеЧисло = 7; 
// задан июль	явным образом
//		Иначе		ВведенноеЧисло = ?(ПредпочтитМесяц=6,6,7);
//		КонецЕсли;
//КонецЕсли;
//  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//КонецФункции	// глПреобразоватьСтрокуМесяца
 


Я предлагаю свой метод поиска переменной «ВведенноеЧисло». Одной строкой.

 ВведенноеЧисло  =  (Найти(\"янвфевмарапрмайиюниюлавгсеноктноядек\",Нрег(Лев(СтрокаМесяц,3)))+2)/3; 
Я не буду описывать технологии внедрения вычленения самого наименования и т.д.
Извините, со школы не люблю писать рефераты и сочинения.

Для удобства проверки выложена обработка тест.
http://infostart.ru/projects/1292/

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Вьюн (VUN) 01.10.07 01:06
А скобки после 2 не нужны? - (Найти(...)+2)/3;
2. Лев Селиверстов (Mordens) 01.10.07 07:00
Нужны, спасибо за внимательность
3. Шамиль (stpd) 01.10.07 08:32
Изящно. :) Молоток. Я обычно массив названий делал.
4. BabySG (BabySG) 01.10.07 11:19
Хорошее решение, особенно на фоне верхнего :)
5. NickDem (NickDem) 01.10.07 14:46
Сразу видно что автор не по наслышке знаком с математикой )))
6. Владимир Костецкий (astonvilla) 02.10.07 09:19
А чего? Прикольно. Правда такой задачи никогда не возникало - но буду иметь в виду :)
7. Владимир (svsrus) 02.10.07 10:08
Краткость - сестра таланта. Здорово!
8. Ilya (ivisor_fil) 02.10.07 13:13
9. Лев Селиверстов (Mordens) 10.12.07 15:20
Спасибо кто оставил свои высказывания...но вот только непойму одного...можно ли выкладывать статьи без согласия автора?
я выкладывал на _www.infostart.ru_, а нашел
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа