Код для получения новостей с сайта buh.ru, используется RSS-канал http://www.buh.ru/rss/rss-2.0.jsp
Данный код для 7.7, при использовании в 8-ой версии нужно заменить СоздатьОбъект( на Новый COMОбъект(, остальное вроде так же.
Код 1C v 7.x
Функция ВытащитьДату(Стр)
парсер=СоздатьОбъект("VBScript.RegExp");
парсер.Global=-1;
парсер.IgnoreCase =-1;
стрМес="Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec";
парсер.Pattern="(\d\d)\s(("+стрМес+"))\s(\d{4})";
рез = парсер.Execute(Стр);
Если рез.Count>0 Тогда
рез_ = рез.Item(0);
чч=Число(рез_.Submatches(0));
мст=рез_.Submatches(1);
где=Найти(стрМес,мст);
мм=цел(где/4)+1;
гг=Число(рез_.Submatches(3));
дат=Дата(гг,мм,чч);
Иначе
дат=0;
КонецЕсли;
Возврат дат;
КонецФункции
Процедура Сформировать()
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("ИД","Число");
ТЗ.НоваяКолонка("Дата","Дата");
ТЗ.НоваяКолонка("Заголовок","Строка");
ТЗ.НоваяКолонка("Ссылка","Строка");
ТЗ.НоваяКолонка("Текст","Строка");
Состояние("Получение данных с сайта www.buh.ru");
//ТаймАут поставьте в зависимости от качества подключения
ТаймАут=100000;
IE=СоздатьОбъект("InternetExplorer.Application");
IE.navigate("http://www.buh.ru/rss/rss-2.0.jsp");
Пока IE.readyState<4 Цикл
ТаймАут=ТаймАут-1;
Если ТаймАут=0 Тогда
Предупреждение("Не удалось получить данные с сайта www.buh.ru",10);
Возврат;
КонецЕсли;
КонецЦикла;
//версия 0.1 для v7plus.dll
//ХМЛ=СоздатьОбъект("AddIn.XMLParser");
//ХМЛДок=ХМЛ.СоздатьДокумент();
//ХМЛДок.Загрузить(oIE.document.XMLDocument);
//Выборка=ХМЛДок.ВыбратьУзлы("//item");
//Для ии=0 По Выборка.КоличествоУзлов()-1 Цикл
// ЭлНовость=Выборка.ПолучитьУзел(ии);
// ТЗ.НоваяСтрока();
// ТЗ.Дата=ВытащитьДату(ЭлНовость.ВыбратьУзел("./pubDate").Текст);
// ТЗ.Заголовок=ЭлНовость.ВыбратьУзел("./title").Текст;
// ТЗ.Ссылка=ЭлНовость.ВыбратьУзел("./link").Текст;
// ТЗ.Текст=ЭлНовость.ВыбратьУзел("./description").Текст;
//КонецЦикла;
//версия 0.2 для MSXML
ХМЛДок=СоздатьОбъект("MSXML2.DOMDocument");;
ХМЛДок.async=0;
ХМЛДок.resolveExternals=0;
ХМЛДок.load(IE.document.XMLDocument);
Выборка=ХМЛДок.selectNodes("//item");
Для ии=0 По Выборка.length-1 Цикл
ЭлНовость=Выборка.item(ии);
ТЗ.НоваяСтрока();
ТЗ.Дата=ВытащитьДату(ЭлНовость.selectSingleNode("./pubDate").text);
ТЗ.Заголовок=ЭлНовость.selectSingleNode("./title").text;
ТЗ.Ссылка=ЭлНовость.selectSingleNode("./link").text;
ТЗ.Текст=ЭлНовость.selectSingleNode("./description").text;
КонецЦикла;
//Все. Мы получили ТЗ с последними новостями
КонецПроцедуры
К сожалению, автор не известен.
При помощи приведенных ниже функций можно вывести дату прописью, например:
03.08.2009 - третье августа две тысячи девятого года
Код 1C v 8.х
// Функция Дата прописью
// Параметры:
// ДП - Дата
// Возвращаемое значение:
// дата прописью
//
// Модификация для v8: Evgeny Migachev
Функция ДатаПрописью(ДП) Экспорт
стрРез = "";
Д=Формат(ДП,"ДЛФ=D");
спсМес = Новый СписокЗначений;
спсМес.Добавить("января");
спсМес.Добавить("февраля");
спсМес.Добавить("марта");
спсМес.Добавить("апреля");
спсМес.Добавить("мая");
спсМес.Добавить("июня");
спсМес.Добавить("июля");
спсМес.Добавить("августа");
спсМес.Добавить("сентября");
спсМес.Добавить("октября");
спсМес.Добавить("ноября");
спсМес.Добавить("декабря");
спсЧисл = Новый СписокЗначений;
спсЧисл.Добавить("первое","первого");
спсЧисл.Добавить("второе","второго");
спсЧисл.Добавить("третье","третьего");
спсЧисл.Добавить("четвертое","четвертого");
спсЧисл.Добавить("пятое","пятого");
спсЧисл.Добавить("шестое","шестого");
спсЧисл.Добавить("седьмое","седьмого");
спсЧисл.Добавить("восьмое","восьмого");
спсЧисл.Добавить("девятое","девятого");
//числительные им.падеж
спсЧислИм = Новый СписокЗначений;
спсЧислИм.Добавить("тысяча","тысячного");
спсЧислИм.Добавить("две тысячи","двухтысячного");
спсЧислИм.Добавить("три тысячи","трехтысячного");
спсЧислИм.Добавить("четыре тысячи","четырёхтысячного");
спсЧислИм.Добавить("пять","пятитысячного");
спсЧислИм.Добавить("шесть","шеститысячного");
спсЧислИм.Добавить("семь","семитысячного");
спсЧислИм.Добавить("восемь","восьмитысячного");
спсЧислИм.Добавить("девять","девятитысячного");
спсСотни = Новый СписокЗначений;
спсСотни.Добавить("сто");
спсСотни.Добавить("двести");
спсСотни.Добавить("триста");
спсСотни.Добавить("четыреста");
спсСотни.Добавить("пятьсот");
спсСотни.Добавить("шестьсот");
спсСотни.Добавить("семьсот");
спсСотни.Добавить("восемьсот");
спсСотни.Добавить("девятьсот");
//десятки им.падеж
спсДесИм = Новый СписокЗначений;
спсДесИм.Добавить("","десятого");
спсДесИм.Добавить("двадцать","двадцатого");
спсДесИм.Добавить("тридцать","тридцатого");
спсДесИм.Добавить("сорок","сорокового");
спсДесИм.Добавить("пятьдесят","пятидесятого");
спсДесИм.Добавить("шестьдесят","шестидесятого");
спсДесИм.Добавить("семьдесят","семидесятого");
спсДесИм.Добавить("восемьдесят","восьмидесятого");
спсДесИм.Добавить("девяносто","девяностого");
//субдесятки род.падеж
спсСубДесРод = Новый СписокЗначений;
спсСубДесРод.Добавить("одиннадцатого");
спсСубДесРод.Добавить("двенадцатого");
спсСубДесРод.Добавить("тринадцатого");
спсСубДесРод.Добавить("четырнадцатого");
спсСубДесРод.Добавить("пятнадцатого");
спсСубДесРод.Добавить("шестнадцатого");
спсСубДесРод.Добавить("семнадцатого");
спсСубДесРод.Добавить("восемнадцатого");
спсСубДесРод.Добавить("девятнадцатого");
спсДес = Новый СписокЗначений;
спсДес.Добавить("десятое");
спсДес.Добавить("двадцатое","двадцать");
спсДес.Добавить("тридцатое","тридцать");
спсДес.Добавить("сороковое","тридцать");
спсДес.Добавить("пятидесятое","тридцать");
спсДес.Добавить("шестидесятое","тридцать");
спсДес.Добавить("семидесятое","тридцать");
спсСубДес = Новый СписокЗначений;
спсСубДес.Добавить("одиннадцатое");
спсСубДес.Добавить("двенадцатое");
спсСубДес.Добавить("тринадцатое");
спсСубДес.Добавить("четырнадцатое");
спсСубДес.Добавить("пятнадцатое");
спсСубДес.Добавить("шестнадцатое");
спсСубДес.Добавить("семнадцатое");
спсСубДес.Добавить("восемнадцатое");
спсСубДес.Добавить("девятнадцатое");
спсДаты = СтрЗаменить(СокрЛП(Д),".",Символы.ПС);
//разбираем день
стрДень = СокрЛП(Число(СтрПолучитьСтроку(спсДаты,1)));
Если СтрДлина(стрДень)=1 Тогда
стрДень = спсЧисл.Получить(Число(стрДень)-1).Значение;
Иначе
десДень = Число(Лев(стрДень,1));
едДень = Число(Прав(стрДень,1));
Если едДень=0 Тогда
стрДень = спсДес.Получить(десДень-1).Значение;
Иначе
Если десДень>1 Тогда
т = Строка(спсДес.Получить(десДень-1));
стрДень = т+" "+Строка(спсЧисл.Получить(едДень-1).Значение);
Иначе
стрДень = спсСубДес.Получить(едДень-1).Значение;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//разбираем месяц
стрМес = спсМес.Получить(Число(СтрПолучитьСтроку(спсДаты,2))-1).Значение;
//разбираем год
стрГод = СтрПолучитьСтроку(спсДаты,3);
длинаГода = СтрДлина(стрГод);
Если длинаГода=4 Тогда
тыс = Сред(стрГод,1,1); сот = Сред(стрГод,2,1); дес = Сред(стрГод,3,1); ед = Сред(стрГод,4,1);
_т = спсЧислИм.Получить(Число(тыс)-1).Значение;
Если (Число(сот)=0) и (Число(дес)=0) и (Число(ед)=0) Тогда
миллениум = Строка(спсЧислИм.Получить(Число(тыс)-1));
стрГод = миллениум;
Иначе
с = ""; дс = ""; е = "";
Если Число(сот)<>0 Тогда
с = спсСотни.Получить(Число(сот)-1).Значение;
КонецЕсли;
Если Число(дес)<>0 Тогда
Если Число(ед)=0 Тогда
дг = Строка(спсДесИм.Получить(Число(дес)-1));
дс = дг;
Иначе
дс = спсСубДесРод.Получить(Число(ед)-1).Значение;
КонецЕсли;
КонецЕсли;
Если (Число(дес)>1) или (Число(дес)=0) Тогда
Если Число(ед)<>0 Тогда
е =Строка(спсЧисл.Получить(Число(ед)-1));
КонецЕсли;
КонецЕсли;
стрГод = Строка(_т)+" "+Строка(с)+" "+Строка(дс)+" "+Строка(е);
КонецЕсли;
Иначе
КонецЕсли;
стрГод = стрГод+" года";
стрГод = СтрЗаменить(стрГод," "," ");
стрРез = Строка(стрДень)+" "+Строка(стрМес)+" "+Строка(стрГод);
стрРез = СтрЗаменить(стрРез," "," ");
Возврат стрРез;
КонецФункции
Процедура КнопкаВыполнитьНажатие(Кнопка)
сообщить(ДатаПрописью(РеквизитДатаНаФорме));
КонецПроцедуры
Код 1C v 7.x
// ПрописьДата()
//
// Параметры:
// Д - дата в формате ДД.MM.ГГГГ
// Возвращаемое значение:
// дата прописью
//
// Автор: hunter
Функция глПрописьДата(Д) Экспорт
стрРез = "";
спсМес = СоздатьОбъект("СписокЗначений");
спсМес.ДобавитьЗначение("января");
спсМес.ДобавитьЗначение("февраля");
спсМес.ДобавитьЗначение("марта");
спсМес.ДобавитьЗначение("апреля");
спсМес.ДобавитьЗначение("мая");
спсМес.ДобавитьЗначение("июня");
спсМес.ДобавитьЗначение("июля");
спсМес.ДобавитьЗначение("августа");
спсМес.ДобавитьЗначение("сентября");
спсМес.ДобавитьЗначение("октября");
спсМес.ДобавитьЗначение("ноября");
спсМес.ДобавитьЗначение("декабря");
спсЧисл = СоздатьОбъект("СписокЗначений");
спсЧисл.ДобавитьЗначение("первое","первого");
спсЧисл.ДобавитьЗначение("второе","второго");
спсЧисл.ДобавитьЗначение("третье","третьего");
спсЧисл.ДобавитьЗначение("четвертое","четвертого");
спсЧисл.ДобавитьЗначение("пятое","пятого");
спсЧисл.ДобавитьЗначение("шестое","шестого");
спсЧисл.ДобавитьЗначение("седьмое","седьмого");
спсЧисл.ДобавитьЗначение("восьмое","восьмого");
спсЧисл.ДобавитьЗначение("девятое","девятого");
//числительные им.падеж
спсЧислИм = СоздатьОбъект("СписокЗначений");
спсЧислИм.ДобавитьЗначение("тысяча","тысячного");
спсЧислИм.ДобавитьЗначение("две тысячи","двухтысячного");
спсЧислИм.ДобавитьЗначение("три тысячи","трехтысячного");
спсЧислИм.ДобавитьЗначение("четыре тысячи","четырёхтысячного");
спсЧислИм.ДобавитьЗначение("пять","пятитысячного");
спсЧислИм.ДобавитьЗначение("шесть","шеститысячного");
спсЧислИм.ДобавитьЗначение("семь","семитысячного");
спсЧислИм.ДобавитьЗначение("восемь","восьмитысячного");
спсЧислИм.ДобавитьЗначение("девять","девятитысячного");
спсСотни = СоздатьОбъект("СписокЗначений");
спсСотни.ДобавитьЗначение("сто");
спсСотни.ДобавитьЗначение("двести");
спсСотни.ДобавитьЗначение("триста");
спсСотни.ДобавитьЗначение("четыреста");
спсСотни.ДобавитьЗначение("пятьсот");
спсСотни.ДобавитьЗначение("шестьсот");
спсСотни.ДобавитьЗначение("семьсот");
спсСотни.ДобавитьЗначение("восемьсот");
спсСотни.ДобавитьЗначение("девятьсот");
//десятки им.падеж
спсДесИм = СоздатьОбъект("СписокЗначений");
спсДесИм.ДобавитьЗначение("","десятого");
спсДесИм.ДобавитьЗначение("двадцать","двадцатого");
спсДесИм.ДобавитьЗначение("тридцать","тридцатого");
спсДесИм.ДобавитьЗначение("сорок","сорокового");
спсДесИм.ДобавитьЗначение("пятьдесят","пятидесятого");
спсДесИм.ДобавитьЗначение("шестьдесят","шестидесятого");
спсДесИм.ДобавитьЗначение("семьдесят","семидесятого");
спсДесИм.ДобавитьЗначение("восемьдесят","восьмидесятого");
спсДесИм.ДобавитьЗначение("девяносто","девяностого");
//субдесятки род.падеж
спсСубДесРод = СоздатьОбъект("СписокЗначений");
спсСубДесРод.ДобавитьЗначение("одиннадцатого");
спсСубДесРод.ДобавитьЗначение("двенадцатого");
спсСубДесРод.ДобавитьЗначение("тринадцатого");
спсСубДесРод.ДобавитьЗначение("четырнадцатого");
спсСубДесРод.ДобавитьЗначение("пятнадцатого");
спсСубДесРод.ДобавитьЗначение("шестнадцатого");
спсСубДесРод.ДобавитьЗначение("семнадцатого");
спсСубДесРод.ДобавитьЗначение("восемнадцатого");
спсСубДесРод.ДобавитьЗначение("девятнадцатого");
спсДес = СоздатьОбъект("СписокЗначений");
спсДес.ДобавитьЗначение("десятое");
спсДес.ДобавитьЗначение("двадцатое","двадцать");
спсДес.ДобавитьЗначение("тридцатое","тридцать");
спсДес.ДобавитьЗначение("сороковое","тридцать");
спсДес.ДобавитьЗначение("пятидесятое","тридцать");
спсДес.ДобавитьЗначение("шестидесятое","тридцать");
спсДес.ДобавитьЗначение("семидесятое","тридцать");
спсСубДес = СоздатьОбъект("СписокЗначений");
спсСубДес.ДобавитьЗначение("одиннадцатое");
спсСубДес.ДобавитьЗначение("двенадцатое");
спсСубДес.ДобавитьЗначение("тринадцатое");
спсСубДес.ДобавитьЗначение("четырнадцатое");
спсСубДес.ДобавитьЗначение("пятнадцатое");
спсСубДес.ДобавитьЗначение("шестнадцатое");
спсСубДес.ДобавитьЗначение("семнадцатое");
спсСубДес.ДобавитьЗначение("восемнадцатое");
спсСубДес.ДобавитьЗначение("девятнадцатое");
спсДаты = СтрЗаменить(СокрЛП(Д),".",РазделительСтрок);
//разбираем день
стрДень = СокрЛП(Число(СтрПолучитьСтроку(спсДаты,1)));
Если СтрДлина(стрДень)=1 Тогда
стрДень = спсЧисл.ПолучитьЗначение(Число(стрДень));
Иначе
десДень = Число(Лев(стрДень,1));
едДень = Число(Прав(стрДень,1));
Если едДень=0 Тогда
стрДень = спсДес.ПолучитьЗначение(десДень);
Иначе
Если десДень>1 Тогда
т = ""; спсДес.ПолучитьЗначение(десДень,т);
стрДень = т+" "+спсЧисл.ПолучитьЗначение(едДень);
Иначе
стрДень = спсСубДес.ПолучитьЗначение(едДень);
КонецЕсли;
КонецЕсли;
КонецЕсли;
//разбираем месяц
стрМес = спсМес.ПолучитьЗначение(Число(СтрПолучитьСтроку(спсДаты,2)));
//разбираем год
стрГод = СтрПолучитьСтроку(спсДаты,3);
длинаГода = СтрДлина(стрГод);
Если длинаГода=4 Тогда
тыс = Сред(стрГод,1,1); сот = Сред(стрГод,2,1); дес = Сред(стрГод,3,1); ед = Сред(стрГод,4,1);
_т = спсЧислИм.ПолучитьЗначение(Число(тыс));
Если (Число(сот)=0) и (Число(дес)=0) и (Число(ед)=0) Тогда
миллениум = ""; спсЧислИм.ПолучитьЗначение(Число(тыс),миллениум);
стрГод = миллениум;
Иначе
с = ""; дс = ""; е = "";
Если Число(сот)<>0 Тогда
с = спсСотни.ПолучитьЗначение(Число(сот));
КонецЕсли;
Если Число(дес)<>0 Тогда
Если Число(ед)=0 Тогда
_дг = ""; спсДесИм.ПолучитьЗначение(Число(дес),_дг);
дс = _дг;
Иначе
Если Число(дес)>1 Тогда
дс = спсДесИм.ПолучитьЗначение(Число(дес));
Иначе
дс = спсСубДесРод.ПолучитьЗначение(Число(ед));
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если (Число(дес)>1) или (Число(дес)=0) Тогда
Если Число(ед)<>0 Тогда
//е = "";
спсЧисл.ПолучитьЗначение(Число(ед),е);
КонецЕсли;
КонецЕсли;
стрГод = _т+?(ПустоеЗначение(с)=0," ","")+с+?(ПУстоеЗначение(дс)=0," ","")+дс+" "+е;
КонецЕсли;
Иначе
КонецЕсли;
стрГод = стрГод+" года";
стрРез = стрДень+" "+стрМес+" "+стрГод;
//Сообщить(стрДень+" "+стрМес+" "+стрГод);
Возврат стрРез;
КонецФункции