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

27.05.16

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

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Погодка 1.01. Расширение конфигурации Бухгалтерия 3.0.43
.cfe 51,24Kb
19
19
1 SM
Скачать Купить за 1 850 руб.

Погодка это расширение конфигурации Бухгалтерия предприятия 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 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    17678    24    6    

38

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

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    5467    smielka    37    

96

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

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

27.12.2023    12512    789    elcoan    47    

110

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

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

2 стартмани

10.04.2023    10697    158    acces969    31    

120

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

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

1 стартмани

05.07.2022    4630    kalyaka    6    

32

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

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

6000 руб.

18.01.2022    9388    1    2    

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

Убедитесь, что все расширения закрыты в конфигураторе.
ВызватьИсключение ТекстОшибки;
2. infosoft-v 903 10.03.16 14:28 Сейчас в теме
(1) ben_art, попробуйте закрыть конфигуратор и запустить конфигурацию в режиме Предприятия.
3. ben_art 13 10.03.16 14:55 Сейчас в теме
т.е при открытом конфигураторе и расширении в нем не будет работать ? Другие то работают..
4. infosoft-v 903 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 903 13.03.16 16:00 Сейчас в теме
(10) shibanovan, коллега, похоже проблема на стороне Яндекса. Нашёл обсуждение в комментариях подобной проблемы http://seo-zona.ru/informer-pogody-delaem-sami-2015-06-06.html Судя по датам подобные проблемы у людей начались в то же время что и у нас. Думаю нужно дать пару дней на стабилизацию и после сделать вывод и принять решение.
15. infosoft-v 903 13.03.16 16:01 Сейчас в теме
(6) ben_art, коллега, посмотрите ответ 14. Подождём пару дней.
7. infosoft-v 903 11.03.16 15:14 Сейчас в теме
Сегодня погода Яндекса как то странно себя ведёт. Отвечает через раз. Вот картинка с попыткой открыть ваш прогноз в браузере.
Давайте понаблюдаем до конца дня. Потом буду думать, что делать.

Прикрепленные файлы:
8. shibanovan 66 12.03.16 13:54 Сейчас в теме
Прикольно. Качаю. А давайте и курс валют сюда же ?
12. infosoft-v 903 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 903 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 903 24.03.16 08:58 Сейчас в теме
(16) shibanovan, да, к сожалению.
На новой неделе попробую внести изменения. Есть идея, как повысить стабильность.
Так же прорабатываю возможность получения прогноза погоды из другого источника.
18. webresurs 222 05.04.16 11:53 Сейчас в теме
Где найти "дополнительные сведения справочника "Организации"" для добавления ИДГородаДляИнформераПогоды ?

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


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

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

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

)) Заблокировали по географическому признаку для Россиян фига, а украинцам пож... редиски Яндекс разработчики
infosoft-v; +1 Ответить
19. infosoft-v 903 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 222 05.04.16 16:16 Сейчас в теме
(19)

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

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

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


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

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

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

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

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

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

;-)
22. infosoft-v 903 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 903 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 903 25.05.16 15:57 Сейчас в теме
(27) Тайрин, спасибо за сообщение об ошибке. Я поправлю расширение и дам вам знать.
29. infosoft-v 903 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 903 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 Сейчас в теме
Оставьте свое сообщение