Погодка. Информер для Бухгалтерии 3.0 [Расширение]

27.05.16

Разработка - Работа с интерфейсом

Информация от 27/05/2016: канал получения погоды export.yandex.ru компанией Яндекс полностью закрыт.
Расширение "Погодка 1.01" больше не работает.
Работа над расширением "Погодка 2.01" начата.
Всем хорошего дня и хорошей погодки.

Бухгалтер человек занятой. Иной раз в туалет сходить некогда, а уж о том, чтобы посидеть в "Одноклассниках" или посмотреть погоду, и говорить нечего.
Облегчим жизнь нашим дорогим финансовым гениям и добавим немного милоты на начальную страницу Бухгалтерии предприятия 3.0.
Теперь прогноз погоды всегда под рукой с расширением "Погодка 1.01".

Скачать исходный код

Наименование Файл Версия Размер
Погодка 1.01. Расширение конфигурации Бухгалтерия 3.0.43
.cfe 51,24Kb
18
.cfe 101 51,24Kb 18 Скачать

Погодка это расширение конфигурации Бухгалтерия предприятия 3.0, которое показывает прогноз погоды по данным с сайта yandex.ru

Вот так просто и замечательно:

 Погодка

Для тех, кто торопится. Как установить и настроить:

  • Заполните фактический адрес организации используя загруженный в базу КЛАДР
  • Установите расширение. Инструкция по установке расширений конфигураций разработана уважаемым mrXoxot и я с удовольствием её рекомендую
  • На начальной странице в поле "Организация" установите вашу организацию
  • Теперь ненастье не застанет вас врасплох Wink

Для тех, кто не торопится. Что там внутри:

Как устроена погода Yandex

Если точнее, то как виджеты погоды получают данные прогноза? Для виджетов Яндекс предоставляет два ресурса и один справочник. Справочник городов и их идентификаторов находится по адресу https://pogoda.yandex.ru/static/cities.xml В справочнике множество стран и много городов, вплоть до районных центров. Яндекс предоставляет погоду только тех населённых пунктов, которые есть в справочнике. По городу из XML необходимо получить ID города из аргумента "id"

Погодка

Имея ID города получаем прогноз погоды с ресурса http://export.yandex.ru/weather-ng/forecasts/34560.xml, где 34560.xml это документ с прогнозом погоды для города с ID=34560 (Волгоград).

Погодка

И последнее, Яндекс предоставляет ресурс с картинками погоды http://img.yandex.net/i/wiz%1.png, где %1 код картинки который находится в документе прогноза в теге <image>Например http://img.yandex.net/i/wizn7.png 

Получение ID города

XML с идентификаторами городов разбирается последовательным чтением XML. Процесс чтения оптимизирован. Сперва читаю атрибут name тега <country> и если страна "не наша", то пропускаю все дочерние узлы. Таким образом, пока страна не соответствует целевой, города не читаются.

Погодка определяет город по организации, которая указана на начальной странице:

Погодка

Если поле "Организация" не заполнено, то информер не отображается. Страну и город расширение получает из фактического адреса организации. Для получения города из адреса используется метод БСП:

сГородОрганизации = УправлениеКонтактнойИнформацией.ГородАдресаКонтактнойИнформации(сАдресОрганизацииXML);

Особенность этого метода в форме подачи аргумента. Адрес на входе метода должен быть в виде XML документа. Адрес в виде строки преобразует в "Адрес XML"  метод КонтактнаяИнформацияXMLПоПредставлению(), однако для работы этого метода требуется загруженный в базу справочник КЛАДР. Аналогичная ситуация и со страной.

Если удалось получить страну и город из адреса организации, то дальше получаем с Яндекса справочник городов и по стране и городу находим ID города.

Попытка экономить трафик

При смене организации на начальной странице запускается процедура получения ID города. В случае успешного получения ID города расширение записывает его в дополнительные сведения справочника "Организации".  Это сделано для того, чтобы не гонять зря трафик и процессор. В дальнейшем, если значение дополнительного сведения заполнено, то ID города не получается из Интернета а берётся из дополнительного сведения.

Погодка

Дополнительное сведение ИДГородаДляИнформераПогоды в план видов характеристик расширение добавляет программно.

Лайфхак. Если фактический адрес организации находится в населённом пункте для которого Яндекс не получает погоду, поставьте в дополнительное свойство ИДГородаДляИнформераПогоды ID ближайшего города для которого есть прогноз погоды. Погодка будет показывать прогноз для указанного вами города.

XML с прогнозом погоды в xdtoДокумент

При разработке расширения была поставлена задача работать с прогнозом погоды как с документом. Цель такого решения чисто образовательная. XDTO поддался не с первого раза.

Попытка загружать XML документ в XDTO без схемы XML показала свою не дееспособность. Основные претензии:

  • с типами всё плохо а точнее в XDTO документе все данные это текст;
  • работа со значениями узлов через последовательность объекта (документация с its.1c.ru) - то ещё удовольствие

Встала задача получить XSD схему прогноза погоды Яндекс. Поиск в Интернете готовой схемы не дал. Народ чаще всего этот XML разбирает вручную.

Было решено построить схему XSD по документу XML с прогнозом погоды. Перепробовано множество способов и инструментов по преобразованию XML2XSD и в конце концов остановился на Free XML to XSD generator Вот некоторые детали, с которыми пришлось столкнуться при получении схемы XML:

  • Нет бесплатных инструментов для ручного построения схемы. Есть платные монстры Liquid XML Studio
  • XSD схемы могут быть разных дизайнов. Самые популярные: Венецианские жалюзи (Venetian Blind Design), Матрёшка (Russian Doll Design), Колбасные дольки (Salami Slice Design) Для построения xdtoДокумента с помощью фабрики XDTO подходит только схема с дизайном Венецианские жалюзи (возможно я ошибаюсь, но сделать XDTO документ по XML схеме с другим дизайном мне не удалось)
  • После получения XSD с помощью того или иного инструмента, в схеме возможны огрехи в простых типах. Так например, если в исходном XML файле значение температуры было 2 градуса, то тип данного узла может быть определён как xs:unsignetByte, хотя, конечно же нужен тип xs:byte
  • XML файл с которого генерируется схема может быть неполон. Работа с такой схемой чревата проблемой валидации конкретного XML при построении xdtoДокумента. Наглядный пример: прогноз погоды для Хабаровска не проходил валидацию при построении xdtoДокумента. Оказалось, что для Хабаровска в прогнозе дополнительно подаётся температура воды в Тихом океане water_temperature (Возможно, что-то ещё не учтено. Пишите в комментариях города для которых Погодка валится с ошибкой)
  • Для некоторых элементов схемы, которые находятся внутри последовательности xs:sequence, приходится ставить параметр minOccurs="0", который разрешает быть этому элементу необязательным. Как в примере с температурой воды.
  • Если XSD файл загрузить в объект конфигурации XDTOПакет то становится удобно выполнять разные тонкие настройки
  • В расширениях нет (пока, но обещали исправить) возможности загружать XSD файл в XDTO пакет, поэтому в Погодке схема XML хранится в коде программы

Погодка

Схему прогноза погоды Яндекс в виде XSD файла я приложу для бесплатного скачивания.

Что отображается на информере:

Если расширению данные о погоде получить не удалось, то вместо информера отображается чистая строка. Если данные получены успешно то в информер выводится следующая информация:

Погодка 

  1. В заголовке информера, после слов "Погода сегодня", отображается время составления прогноза метеорологической службой. Путь к данным в xdtoДокументе: xdtoДокумент.fact.observation_time Кстати, погода в течении суток обновляется не равномерно. Ночью метеорологическая служба похоже спит.
  2. Картинка погоды на сегодня и завтра. Картинка при каждом обновлении прогноза загружается с сайта img.yandex.net В расширении конфигурации картинки не хранятся. Путь к данным картинки на сегодня в xdtoДокументе: xdtoДокумент.fact.image.__content, на завтра:  xdtoДокумент.day[1].day_part[4].image.__content 
  3. Значение температуры в градусах цельсия на сегодня и завтра. Путь к данным картинки на сегодня в xdtoДокументе: xdtoДокумент.fact.temperature.__content, на завтра: xdtoДокумент.day[1].day_part[4].temperature_data.avg.__content 
  4. Цветная подложка под температурой, которая контекстно меняет цвет. Чем теплее на улице тем оранжевее и на оборот, чем холоднее тем фиолетевееПуть к данным цвета подложки на сегодня в xdtoДокументе: xdtoДокумент.fact.temperature.color, на завтра: xdtoДокумент.day[1].day_part[4].temperature_data.avg.bgcolor

Интерфейсные мучения

Изначально информацию о погоде планировалось выводить на экран используя объект ФорматированнаяСтрока. Это классный объект, который позволяет манипулировать штифтами, цветами, картинками, ссылками и в общем случае делать чудеса оформления. В ходе экспериментов обнаружил ограничение этого объекта, которое свело на нет все достоинства. ФорматированнаяСтрока в качестве картинок может использовать только картинки с видом ИзБиблиотеки, т.е. загруженные в конфигурацию. Погодка же картинки погоды берёт с Яндекса при каждом обновлении прогноза.

В результате информация выводится в поля, во много полей, поэтому информер визуально выглядит таким "рыхлым". Но я предпочитаю говорить, что это дизайн с большим количеством "воздуха".

Настройки информера

Пока у Погодки простые настройки. В процедуре УстановитьПараметрыИнформера() расширения находятся все необходимые опции.

Процедура УстановитьПараметрыИнформера()
	
	// МОЖНО ИЗМЕНЯТЬ
	ИС_Погода_ПериодПроверкиПогодыСек = 3600; 
	бОшибкуВЖурналРегистрации = Истина;
	
	// ИЗМЕНЯТЬ НЕ РЕКОМЕНДУЕТСЯ
	URL_export_yandex = "http://export.yandex.ru/weather-ng/forecasts/%1.xml";
	URL_pogoda_yandex = "https://pogoda.yandex.ru/static/cities.xml";
	URL_img_yandex = "http://img.yandex.net/i/wiz%1.png";
	
	СоединениеHTTP_export_yandex = ПолучитьСоединениеHTTP(URL_export_yandex);
	СоединениеHTTP_pogoda_yandex = ПолучитьСоединениеHTTP(URL_pogoda_yandex);
	СоединениеHTTP_img_yandex = ПолучитьСоединениеHTTP(URL_img_yandex);
	
КонецПроцедуры

Установка переменной бОшибкуВЖурналРегистрации в Истина заставляет расширение писать в Журнал регистрации сообщения в случае срабатывания конструкции Попытка - Исключение, которые щедро разбросаны по коду.

Ограничения расширения:

  • Работоспособность проверялась для платформы 1С:Предприятие 8.3 (8.3.7.1917) и типовой конфигурации Бухгалтерия предприятия, редакция 3.0 (3.0.43.88)
  • Расширение требует загруженного в базу КЛАДР и заполнения адресов организаций с помощью КЛАДР
  • Показывает погоду тех населённых пунктов, которые есть в справочнике https://pogoda.yandex.ru/static/cities.xml

PS. Два слова о названии. Тренд в милоту и няшность был заложен сто лет назад Юрием Алексеевичем, который своему продукту дал замечательное название Магазька. Компания 1С со своими Договорчиками продолжела это славное дело. В общем, я тоже решил не отставать, поэтому и Погодка.

PPS. Идеи развития Погодки, критика и замеченные грамматические ошибки пожалуйста оставляйте в комментариях. Спасибо.

PPPS. И последнее. Тема информера на начальной странице нашими усилиями может получить развитие. Вот, например несколько идей: динамика курса валют, статус в Одноклассниках, количество сообщений во Вконтакте... Больше информеров хороших и разных.

погода прогноз погоды информер погода Яндекс

См. также

Управление дашбордами

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    17311    23    4    

37

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    11890    780    elcoan    47    

109

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    10361    157    acces969    31    

120

Модель состояния для MVC

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    4309    kalyaka    4    

31

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).

6000 руб.

18.01.2022    9182    1    2    

6

Программный интерфейс для доработки форм

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    10203    AtamanovYS    19    

142
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ben_art 13 10.03.16 13:52 Сейчас в теме
{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(2750)}: При выполнении операции над расширением "ПогодкаРасширениеДляБухгалтерии30" возникла ошибка:
Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено.
Ошибка блокировки объекта. Объект уже заблокирован:
компьютер: user_77-ПК, пользователь: art, сеанс: 25303, начат: 10.03.2016 в 13:48:49, приложение: Конфигуратор

Убедитесь, что все расширения закрыты в конфигураторе.
ВызватьИсключение ТекстОшибки;
2. infosoft-v 886 10.03.16 14:28 Сейчас в теме
(1) ben_art, попробуйте закрыть конфигуратор и запустить конфигурацию в режиме Предприятия.
3. ben_art 13 10.03.16 14:55 Сейчас в теме
т.е при открытом конфигураторе и расширении в нем не будет работать ? Другие то работают..
4. infosoft-v 886 10.03.16 15:38 Сейчас в теме
(3) ben_art, Войдите один раз в конфигурацию с установленным расширением в режиме предприятия и выполните рекомендации пункта 4 из этой публикации: Расширения конфигурации. Полезные советы для разработки
5. ben_art 13 11.03.16 14:37 Сейчас в теме
6. ben_art 13 11.03.16 14:37 Сейчас в теме
теперь новая ошибка
11.03.2016 14:35:25 Работа с Yandex. Не удалось получить данные с http://export.yandex.ru/weather-ng/forecasts/27612.xml по причине 001-Исключение при вызове метода HTTP соединение
10. shibanovan 66 12.03.16 15:01 Сейчас в теме
Моя ситуация идентична (6)
14. infosoft-v 886 13.03.16 16:00 Сейчас в теме
(10) shibanovan, коллега, похоже проблема на стороне Яндекса. Нашёл обсуждение в комментариях подобной проблемы http://seo-zona.ru/informer-pogody-delaem-sami-2015-06-06.html Судя по датам подобные проблемы у людей начались в то же время что и у нас. Думаю нужно дать пару дней на стабилизацию и после сделать вывод и принять решение.
15. infosoft-v 886 13.03.16 16:01 Сейчас в теме
(6) ben_art, коллега, посмотрите ответ 14. Подождём пару дней.
7. infosoft-v 886 11.03.16 15:14 Сейчас в теме
Сегодня погода Яндекса как то странно себя ведёт. Отвечает через раз. Вот картинка с попыткой открыть ваш прогноз в браузере.
Давайте понаблюдаем до конца дня. Потом буду думать, что делать.

Прикрепленные файлы:
8. shibanovan 66 12.03.16 13:54 Сейчас в теме
Прикольно. Качаю. А давайте и курс валют сюда же ?
12. infosoft-v 886 12.03.16 17:27 Сейчас в теме
(8) shibanovan, я об этом думал. В следующей версии постараюсь добавить.
9. shibanovan 66 12.03.16 14:12 Сейчас в теме
Хм. Проблема Возникла.
Функция ОтправитьЗапросGET хттпзапрос завершается с ошибкой
"Ошибка работы с Интернет: Server returned nothing (no headers, no data)"
Во вложении сделал скриншот с таблом
Прикрепленные файлы:
infosoft-v; +1 Ответить
11. infosoft-v 886 12.03.16 17:26 Сейчас в теме
(9) shibanovan, спасибо за обратную связь. Буду разбираться.
shibanovan; +1 Ответить
13. shibanovan 66 12.03.16 18:06 Сейчас в теме
Ещё новости по городу организации можно выводить )) Да, тема интересная )
16. shibanovan 66 23.03.16 16:04 Сейчас в теме
Похоже, проблема осталась ?
17. infosoft-v 886 24.03.16 08:58 Сейчас в теме
(16) shibanovan, да, к сожалению.
На новой неделе попробую внести изменения. Есть идея, как повысить стабильность.
Так же прорабатываю возможность получения прогноза погоды из другого источника.
18. webresurs 221 05.04.16 11:53 Сейчас в теме
Где найти "дополнительные сведения справочника "Организации"" для добавления ИДГородаДляИнформераПогоды ?

) Отключено было в Администратирование - Общие настройки


Как правильно добавить Дополнительное значение в Тип значения - что выбрать?
Число, Строка, Дополнительное значение и т.п.

Полагаю с изменением поставщика погоды foreca на Meteum изменился и адрес
с "http://export.yandex.ru/weather-ng/forecasts/%1.xml" на ???

извиняюсь через анонимайзер(из украины) открывает , а на прямую нет...

)) Заблокировали по географическому признаку для Россиян фига, а украинцам пож... редиски Яндекс разработчики
infosoft-v; +1 Ответить
19. infosoft-v 886 05.04.16 14:36 Сейчас в теме
(18) webresurs, Дополнительное сведение добавляется расширением самостоятельно при первом запуске, но на всякий случай, дополнительное сведение это строка.

Полагаю с изменением поставщика погоды foreca на Meteum изменился и адрес
с "http://export.yandex.ru/weather-ng/forecasts/%1.xml" на ???

извиняюсь через анонимайзер(из украины) открывает , а на прямую нет...
)) Заблокировали по географическому признаку для Россиян фига, а украинцам пож... редиски Яндекс разработчики


Я не знал таких подробностей. Спасибо. Подумаю, что можно сделать. Я правильно понимаю, что Украина продолжает надёжно получать данные с "http://export.yandex.ru/weather-ng/forecasts/%1.xml"?

Я сейчас разрабатываю версию 1_02 и там будет два провайдера прогноза погоды. Так что можно будет выбрать работающий.
20. webresurs 221 05.04.16 16:16 Сейчас в теме
(19)

- строка не добавилась, но появились пустые или разбитые строки, так как название компани -ООО "компания имя разделено" - и в кавычках

- открывал через cameleo ru - а там по украинский, прокси полагаю разные...
Может можно как то привязать через анонимайзер?
(http:/mv4ha33soq.pfqw4zdfpaxhe5i.cmle.ru/weather-ng/forecasts /%1.xml)

- будем ждать...1.02
23. infosoft-v 886 05.04.16 17:43 Сейчас в теме
(20) webresurs,
- строка не добавилась, но появились пустые или разбитые строки, так как название компани -ООО "компания имя разделено" - и в кавычках


Проверьте: Администрирование - Общие настройки - Дополнительные сведения Должно быть как на картинке: https://yadi.sk/i/-DOnVQIXqktaE

А в карточке организации должно быть так: https://yadi.sk/i/mJx4msBFqktkc
24. webresurs 221 05.04.16 18:06 Сейчас в теме
(23)

- Да так же, перепробовал все варианты, число, строка и т.п., но если браузер не видит, то и не чее маяться!

... вот что ответили разработчики Яшки

"Сервис export.yandex.ru существует сугубо для собственных продуктов и сервисов Яндекса и наших официальных партнеров. Он может в любой момент меняться или быть отключен. За всеми публичными API и технологиями, пожалуйста, обращайтесь на ресурс tech.yandex.ru.
"
21. webresurs 221 05.04.16 16:41 Сейчас в теме
Идея- количество сообщений на Почте.Яндекс или любой другой с переходом, открытием в браузер
Или через Встроенный браузер 1с или тут Браузер для 1С 8.2 (обычная и управляемая форма)

А тут описано как с РБК курс валют забирать

;-)
22. infosoft-v 886 05.04.16 17:28 Сейчас в теме
(21) webresurs, спасибо, идеи это классно. У меня сильно развяжутся руки на платформе 8.3.9 http://v8.1c.ru/o7/201603module/index.htm Тогда информер можно не втискивать в рамки одной строки а разместить в отдельной секции на жёлтом квадрате.
25. ben_art 13 08.04.16 16:56 Сейчас в теме
Маленькое предложение.
Было бы лучше видеть погоду не только на завтра
26. infosoft-v 886 08.04.16 18:04 Сейчас в теме
(25) ben_art, спасибо за предложение.
Сейчас отображается текущая погода и прогноз на завтра. В новой версии будет текущая погода и прогноз на пять дней.
27. Тайрин 25.05.16 15:02 Сейчас в теме
Здравствуйте.
Установила погодку в расширения и вышла ошибка после перезапуска программы: "Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)". Погодка не работает.

1С:Предприятие 8.3 (8.3.8.1652)
Бухгалтерия предприятия, редакция 3.0 (3.0.43.223)
28. infosoft-v 886 25.05.16 15:57 Сейчас в теме
(27) Тайрин, спасибо за сообщение об ошибке. Я поправлю расширение и дам вам знать.
29. infosoft-v 886 27.05.16 10:38 Сейчас в теме
(27)(25)(24)(16)(6) Информация от 27/05/2016:
канал получения погоды export.yandex.ru компанией Яндекс полностью закрыт.
Расширение "Погодка 1.01" больше не работает.
Работа над расширением "Погодка 2.01" начата.
Всем хорошего дня и хорошей погодки.
30. Fantasisto 27 19.04.18 16:47 Сейчас в теме
(29) Что там с Погодкой 2.01?)
31. infosoft-v 886 19.04.18 20:11 Сейчас в теме
(30) Версия 2.0 выпущена https://infostart.ru/public/801039/ работает на OpenWeatherMap
2.1 будет, если Яндекс даст доступ к своему API
32. Fantasisto 27 20.04.18 11:15 Сейчас в теме
Оставьте свое сообщение