На одном проекте - клиент попросил отображать в программе данные, которые выдаю специализированные сайта в формате RSS - Что делать !?
Писать парсер rss для 1С
Первым делом, взглянув на ссылки, подумал что - обычный XML, сейчас его разложу и быстренько загружу в базу, но:
Выяснилось что сайты имеют разные форматы ввода RSS и главное они не валидные(
таким образом, написав небольшой код, который получает ссылку, далее XMLФайл.Прочитать() на одном сайте проходил на ура (этот пример я описывал в статье: Чтение данных с сайта в формате XML и загрузка в 1С), а вот второй сайт, и третий тоже, при попытке прочитать() выдавали:
{ОбщийМодуль.РегЗадания.Модуль(79)}: Ошибка при вызове метода контекста (Прочитать)
Пока XMLФайл.Прочитать() Цикл
по причине:
Ошибка разбора XML: - [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId url rss
решил попробовать на rss других известных сайтов - 80% из проверяемых выдавали ошибку
Пришлось написать прямой построчный парсер RSS:
Структура конфигурации
ИсточникиRSS - URL на RSS, ДанныеRSS - сюда записываются загруженные данные новостей
Код получился таким(в принципе код универсальный, но возможно что-то придется подпилить):
Создавая обмены данными между 1С и сайтами, часто приходится форматировать вывод даты в стандарт RCF-822 или преобразовывать его в понятную для 1С ДатуВремя.
Дата в формате RFC-822 выглядит так: Tue, 12 Aug 2013 14:15:00 +0400
Небольшая справка по стандартам:
Как дату перевести в формат RFC-822?
Как из формата RFC-822 получить дату и время для 1С?
В процессе изучения вопроса, встретил еще несколько вариантов:
Нужно на форме документа сделать кнопочку Подбор для справочника сотрудники и чтобы выбранные элементы добавлялись в табличное поле документа?
В данной статье я приведу пример подбора элемента справочника в Список значений и в Табличную часть!
Создаем на форме следующие элементы:
Логика такова:
При нажатии на кнопку ПОДБОР (Процедура КоманднаяПанельПодбор) должена открыться форма подбора сотрудников:
Для Списка значений (СЗ) - ОткрытьФормуВыбораСотрудника(ЭлементыФормы.СписокСотрудников, ЭтотОбъект, Ложь, );
Для Табличного поля (ТП) - ОткрытьФормуВыбораСотрудника(ЭлементыФормы.ТабличноеПолеРаботники, ЭтотОбъект, Ложь, );
Далее открывается форма подбора сотрудника, при двойном щелчке - сотрудник должен добавится в СЗ или ТП.
Для этого у СЗ и ТП в Свойства - События добавляем ОбработкуВыбора :
Для Списка значений (СЗ) - Процедура СписокСотрудниковОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Для Табличного поля (ТП) - Процедура ТабличноеПолеРаботникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
А в них пропишем проверку, добавлен сотрудник или нет - чтобы не было задвоений!
Код для получения новостей с сайта buh.ru, используется RSS-канал http://www.buh.ru/rss/rss-2.0.jsp
Данный код для 7.7, при использовании в 8-ой версии нужно заменить СоздатьОбъект( на Новый COMОбъект(, остальное вроде так же.