Функция ПолучитьМесяцВРодительскомПадеже(Дата) ДеньИМесяц = Формат(Дата,"Л=uk_UA;ДФ = ""дд ММММ"""); НаходимПозициюПробела = Найти(ДеньИМесяц," "); МесяцПрописью = Сред(ДеньИМесяц,НаходимПозициюПробела); Возврат МесяцПрописью; КонецФункции
1.Месяц прописью для 1с 7.7 :
М = Формат('16.06.2014',"ДММММ);
и согласно файла прописи получим
М = Червень
или
М = Июнь
2.День прописью для 1с 7.7 :
Д = Формат('16.06.2014',"ДНННН");
М = Понеділок
М = Понедельник
//Выберите месяц формирования СписокМесяцев = Новый СписокЗначений; ТекДата = НачалоМесяца(РабочаяДата); Для Мес = -15 по 15 Цикл ТекМес = ДобавитьМесяц(ТекДата, Мес); СписокМесяцев.Добавить(ТекМес, Формат(ТекМес, "ДФ='ММММ гггг'")); КонецЦикла; ВыбранЗначение = СписокМесяцев.ВыбратьЭлемент("Выберите месяц:", СписокМесяцев.НайтиПоЗначению(ТекДата)); Если ВыбранЗначение = Неопределено Тогда Сообщить("Месяц не выбран "); Иначе Сообщить("Первый день выбранного месяца: "+ ВыбранЗначение.Значение); Сообщить("Представление выбранного месяца: "+ ВыбранЗначение.Представление); КонецЕсли;
Функция ДатаПропись(Дат) Экспорт Перем Результат; Результат=""; Если ТипЗнч(Дат)=Тип("Дата") Тогда Результат=Формат(Дат,"ДФ=""дд ММММ гггг 'г.'"""); КонецЕсли; Возврат Результат КонецФункции //еще пример, выводит "20 августа 2002 г. 15:33:09" ЗначФормат = Формат('20020820153309', "ДФ=""дд ММММ гггг 'г.' ЧЧ:мм:сс""");
Функция ДатаПрописью(Дат) Экспорт Результат=""; Если ТипЗнч(Дат)=Тип("Дата") Тогда Результат=Формат(Дат,"ДФ=""дд ММММ гггг 'г.'"""); КонецЕсли; Возврат Результат КонецФункции
//Функция подбирает окончание для возраста Функция СтрГода(Возраст) Остаток = Возраст%10; Если Остаток = 1 Тогда Стр = "год"; ИначеЕсли ((Остаток > 1) и (Остаток < 5)) Тогда Стр = "года"; Иначе Стр = "лет"; КонецЕсли; Возврат Стр; КонецФункции //Формируем дни рождения Сотрудников Процедура ДниРожденияСотрудников() ТекстДР=""; Именинники = СоздатьОбъект("СписокЗначений"); СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ВыбратьЭлементы(); Пока СпрСотр.ПолучитьЭлемент()= 1 Цикл ТекЭлем = СпрСотр.ТекущийЭлемент(); Если ТекЭлем.ЭтоГруппа() = 0 Тогда Если ((ТекЭлем.Родитель <> "Уволенные")) Тогда ТекСотр = СпрСотр.ТекущийЭлемент(); Если (ПустоеЗначение(ТекСотр.СостояниеФизЛица.Получить(НачМесяца(ТекущаяДата()))) = 0) Тогда Если (ДатаМесяц(ТекСотр.ДатаРождения) = ДатаМесяц(ТекущаяДата())) Тогда Именинники.ДобавитьЗначение(ТекСотр); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Если Именинники.РазмерСписка() <> 0 Тогда ТекстДР=ТекстДР+" ********* СПИСОК ИМЕНИННИКОВ *********"+РазделительСтрок+" за месяц "+Формат(ТекущаяДата(),"ДММММ")+РазделительСтрок; ТекстДР=ТекстДР+"-----------------------------------------------------------------------------------------------------------------------------------------------"+РазделительСтрок; Для к = 1 по Именинники.РазмерСписка() Цикл Сотр = Именинники.ПолучитьЗначение(к); Возраст = (Число(ДатаГод(ТекущаяДата()))-Число(ДатаГод(Сотр.ДатаРождения))); РазницаДней = (Число(ДатаЧисло(Сотр.ДатаРождения))-Число(ДатаЧисло(ТекущаяДата()))); СтрГода = СтрГода(Возраст); Если (ДатаЧисло(Сотр.ДатаРождения) < ДатаЧисло(ТекущаяДата())) Тогда ТекстДР=ТекстДР+" "+Сотр+" "+Сотр.ДатаРождения+" уже исполнилось "+Возраст+" "+СтрГода+"!"+РазделительСтрок; Иначе Если (РазницаДней = 2) Тогда ТекстДР=ТекстДР+"ПОСЛЕЗАВТРА! "+Сотр+" послезавтра "+Сотр.ДатаРождения+" будет праздновать " + Возраст + "-й День Рождения!!!! "; ИначеЕсли (РазницаДней = 1) Тогда ТекстДР=ТекстДР+"ЗАВТРА! "+ Сотр + " будет отмечает свой " + Возраст + "-й День рождения!"; ИначеЕсли (РазницаДней = 0) Тогда ТекстДР=ТекстДР+"СЕГОДНЯ! "+ Сотр + " отмечает свой " + Возраст + "-й День рождения!"; КонецЕсли; ТекстДР=ТекстДР+" ( "+Сотр.Подразделение.Получить(ТекущаяДата())+" , "+Сотр.Должность.Получить(ТекущаяДата())+" )"+РазделительСтрок; КонецЕсли; КонецЦикла; Иначе ТекстДР=ТекстДР+"В текущем месяце именинников нет!"; КонецЕсли; Сообщить(ТекстДР); КонецПроцедуры
//Функция формирует удобное для чтения представление значений. // Примеры форматирования чисел ЗначФормат = Формат(123456.789, "ЧЦ=10; ЧДЦ=2"); // ЗначФормат = "123 456,79" ЗначФормат = Формат(123456.789, "ЧГ=0; ЧДЦ=2"); // ЗначФормат = "123456,79" ЗначФормат = Формат(123456.789, "ЧРД='-'"); // ЗначФормат = "123 456-789" ЗначФормат = Формат(-123456.789, "ЧО=0"); // ЗначФормат = "(123 456,789)"; ЗначФормат = Формат(13, "ЧЦ=5; ЧВН=; ЧГ=0"); // ЗначФормат = "00013"; //В 8 версии для вывовода чисел прописью используется ЧислоПрописью ЧислоПрописью(Сумма, "L=ru_RU", Валюта.ПараметрыПрописиНаРусском) ЧислоПрописью(1457.25,"L=en_US","dollar, dollars, cent, cents, 2"); // One thousand four hundreds fifty seven dollars 25 cents. ЧислоПрописью(Сумма,"Рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2"); //Пример представления Числа в виде Даты ЗначФормат = Формат(25021949, "ЧЦ=8; ЧРГ=.; ЧВН=; ЧГ=4,2,0"); // ЗначФормат = "25.02.1949" // Примеры форматирования дат ЗначФормат = Формат('20020820153309', "ДФ=""дд ММММ гггг 'г.' ЧЧ:мм:сс"""); // ЗначФормат = "20 августа 2002 г. 15:33:09" ЗначФормат = Формат('20020820153309', "ДФ=""дд/ММ-гггг"""); // ЗначФормат = "20/08-2002" ЗначФормат = Формат('20020820153309', "ДФ='q ""кв."" yyyy'"); // ЗначФормат = "3 кв. 2002"; ЗначФормат = Формат('20020820153309', "ДФ='""Итого"" q ""квартал""'") ; // ЗначФормат = "Итого 3 квартал"; ЗначФормат = Формат('20020820153309', "ДФ='ММММ гггг'"); // ЗначФормат = "Август 2002 г."; ЗначФормат = Формат('20020820153309', "ДЛФ=ДД"); // ЗначФормат = "20 августа 2002 г."; ЗначФормат = Формат('20020820153309', "ДЛФ=Д"); // ЗначФормат = "20.08.2002"; ЗначФормат = Формат('20020820153309', "ДЛФ=В"); // ЗначФормат = "15:33:09"; ЗначФормат = Формат('20020820153309', "ДФ=HHmmssyyyyMMdd"); // ЗначФормат = "15330920020820"; ЗначФормат = Формат('20020820153309', "ДФ=HH:mm:ss yyyy MM dd"); // Время 24 часа - ЗначФормат = "15:33:09 2002 08 20"; ЗначФормат = Формат('20020820153309', "ДФ=hh:mm:ss yyyy MM dd"); // Время 12 часов - ЗначФормат = "03:33:09 2002 08 20"; Формат(Дата(2009, 1, 1), "ДЛФ=DD") + ", " + ОпределитьДеньНедели(ДеньНедели(Дата(2009, 1, 1))); // 1 января 2009 г., Четверг (Смотрите в "Работаем с Датами" Функция Определить день недели) Формат(Дата(2009, 1, 1), "ДФ=ММММ") + ", " + Формат(Дата(2009, 1, 1), "ДФ=yyyy") + " г."; // Январь, 2009 г. Формат(НачалоНедели(Дата(2009, 1, 1)), "ДФ='dd MMMM yyyy'") + " г. - " + Формат(КонецНедели(Дата(2009, 1, 1)), "ДФ='dd MMMM yyyy'") + " г."; // 29 декабря 2008 г. - 04 января 2009 г. // ДЕКАДУ нельзя вывести через формат, но можно так: Строка(Цел(День(Дата('20020820153309')) / 10) + 1)+" декада" = 2 декада // Примеры форматирования логических выражений ЗначФормат = Формат(Истина, "БЛ=Отсутствует; БИ=Доступен"); // ЗначФормат = "Доступен"; ЗначФормат = Формат(Ложь, "БЛ=Нет; БИ=Да"); // ЗначФормат = "Нет";
// Символы, определяющие тип форматируемых данных: // Ч — число (Англоязычный синоним: N) ЗначФормат = Формат(123.15, "Ч(0)10.2") // 0000123.15 Долг = Строка(Формат(Долг(), "Ч12.2")) + " " + Валюта.Сокр_назв; // Возможен вывод денежных величин и просто целых чисел прописью. В этом случае форматная строка должна иметь вид "ЧПДС". // Наличие буквы "П" (в английском варианте для аналогичной цели используется буква "S") определяет сам факт вывода числа прописью. // Символ "Д" (в английском варианте — "M") обозначает вывод денежной величины и является необязательным. // Символ "С" (в английском варианте — "H") также необязателен и означает вывод с копейками. ИтогоСуммаПрописью = Формат(Итог("Сумма"), "ЧПДС"); КоличествоНаименованийПрописью = Формат(КоличествоСтрок(), "ЧП"); // С — строка (Англоязычный синоним: S) // "Сn", где n — положительное целое число определяющее ширину поля, в котором будет размещаться строка. // В случае, если ширина поля превосходит длину строки сформатированная строка будет дополнена справа пробелами, если же ширина поля меньше длины строки — строка будет усечена справа. // Д — дата (Англоязычный синоним: D) ДатаДокумента = Формат(Док.ДатаДок,"Д ДД.ММ.ГГ"); //12.03.08 ДатаДокумента = Формат("01.01.1999", "Д(0)ДДММММГГГГ"); // 01 Января 1999 г. //Для форматирования даты используется форматная строка вида "Д<ПодстрокаФормата>", где <Подстрока Формата> представляет собой строку, определяющую вид сформатированного представления даты: //DDMMYY (ДДММГГ) дата в виде ДД.ММ.ГГ //DDMMYYYY (ДДММГГГГ) дата в виде ДД.ММ.ГГГГ //DDMMMMYYYY (ДДММММГГГГ) дата в виде ДД месяц прописью ГГГГ //(0)DDMMMMYYYY ((0)ДДММММГГГГ) этот формат представляет собой вариант предыдущего формата с тем отличием, что число месяца всегда выводится двумя цифрами, т. е. для чисел меньших 10 спереди будет добавлен 0. Например: Формат('01.01.1999', ' 'Д(0)ДДММММГГГГ' ') = 01 Января 1999 г. //MMMMYYYY (ММММГГГГ) дата в виде месяц прописью ГГГГ //MMMMYY (ММММГГ) дата в виде месяц прописью ГГ //ММММ (ММММ) дата в виде месяц прописью //QQQQYYYY (ККККГГГГ) дата в виде N квартала ГГГГ //QQQQYY (ККККГГ) дата в виде N квартала ГГ //QQQQ дата в виде N квартала //YYYYMMDD (ГГГГММДД) дата в виде ГГГГММДД, то есть дата '10.11.1998' будет представлена как строка "19981110" //WWWW (HHHH) выводит наименование дня недели, соответствующее указанной дате. Наименования дней недели берутся из файла прописи.
// Функция описывает период, определяемый датой и периодичностью Функция ПолучитьПериодСтрокой(ДатаВПериоде, Периодичность) Экспорт Если Периодичность = "Год" Тогда ФорматДаты = "ДФ='гггг ""г.""'"; ИначеЕсли Периодичность = "Квартал" Тогда ФорматДаты = "ДФ='к"" квартал"" гггг ""г.""'"; ИначеЕсли Периодичность = "Месяц" Тогда ФорматДаты = "ДФ='ММММ гггг ""г.""'"; ИначеЕсли Периодичность = "Неделя" Тогда ФорматДаты = "ДФ='""Неделя (""дд.ММ.гггг'"; ИначеЕсли Периодичность = "День" Тогда ФорматДаты = "ДФ='дд.ММ.гггг ""г.""'"; Иначе ФорматДаты = ""; КонецЕсли; СтрокаПериод = "" + Формат(ДатаВПериоде, ФорматДаты); Если Периодичность = "Неделя" И ТипЗнч(ДатаВПериоде) = Тип("Дата") Тогда СтрокаПериод = "" + НеделяГода(ДатаВПериоде) + "-ая " + СтрокаПериод + Формат(КонецНедели(ДатаВПериоде), "ДФ='"" - ""дд.ММ.гггг)'"); КонецЕсли; Возврат СтрокаПериод; КонецФункции //Обращение и результат Сообщить(ПолучитьПериодСтрокой(Дата(2009,03,09),"Квартал")); // 1 квартал 2009 г. Сообщить(ПолучитьПериодСтрокой(Дата(2009,03,09),"День")); // 09.03.2009 г..
// пример от glory01 А = Формат('20020820153309', "ДФ=ММММ") // А = "Август" А = Формат(ТекущаяДата(), "ДФ=ММММ") // А = "Март"
Функция МесяцПрописью(НомерМесяца) Экспорт НомерМесяца=Число(НомерМесяца); Если НомерМесяца = 1 Тогда Возврат "Январь"; ИначеЕсли НомерМесяца = 2 Тогда Возврат "Февраль"; ИначеЕсли НомерМесяца = 3 Тогда Возврат "Март"; ИначеЕсли НомерМесяца = 4 Тогда Возврат "Апрель"; ИначеЕсли НомерМесяца = 5 Тогда Возврат "Май"; ИначеЕсли НомерМесяца = 6 Тогда Возврат "Июнь"; ИначеЕсли НомерМесяца = 7 Тогда Возврат "Июль"; ИначеЕсли НомерМесяца = 8 Тогда Возврат "Август"; ИначеЕсли НомерМесяца = 9 Тогда Возврат "Сентябрь"; ИначеЕсли НомерМесяца = 10 Тогда Возврат "Октябрь"; ИначеЕсли НомерМесяца = 11 Тогда Возврат "Ноябрь"; ИначеЕсли НомерМесяца = 12 Тогда Возврат "Декабрь"; Иначе Возврат ""; КонецЕсли; конецфункции