gifts2017

Автозагрузка валют

Опубликовал Денис Ханин (NiNAH) в раздел Обработки - Обработка справочников

Автоматическая загрузка валют в один клик (либо по расписанию) во всех конфигурациях на платформах 8.1 и 8.2, даже если разные логины, пароли и платформы, на которых они работают...

Обработка пригодится, если у вас много баз, в которых ежедневно нужно обновлять курсы валют. И чтобы не запускать каждую базу в отдельности, вводить в них логины и пароли, достаточно запустить всего одни ярлык на рабочем столе - в результате последовательно запустится каждая база без предложения ввести пароль, обновит валюты и закроется. А если и ярлык запускать не хочется, поможет "Планировщик заданий" Windows - все информационные базы будут обновлять валюты по заданному расписанию.

Принцип работы с обработкой:

  1. Обработка запускается в любой типовой конфигурации (либо с интегрированной БСП) на платформе 8.2, но для каждой конкретной базы есть возможность выбрать платфому 8.1 .
  2. На странице "Список валют" выбирираются валюты, которые будут загружаться во всех базах
  3. На странице "Файловые базы" выбираются базы присутствующие в списке баз 1С для текущего профиля - базы выбираются кнопкой выбора в каждой строко в колонке "Псевдоним". После выбора базы, автоматически вставляется полный путь к базе в соответвующее поле ("Путь к базе"), но никто не мешает путь к базе написать вручную. Затем необходимо указать логин и пароль для запуска выбранной информационной базы. И если не устраивает "Путь к файлу для запуска платформы", указанный вверху формы, можно еще указать для конкретной базы путь в поле "(необязательно) Файл запуска платформы".
  4. На странице "Клиент серверные базы" все аналогично предыдущей странице, только после выбора базы из списка, автоматически заполнятся поля в колонках "Имя сервера" и "Имя информационной базы".
  5. Страница "Лог загрузок" полностью оправдывает свое название.
  6. После нажатия кнопки "Создать ярлык на рабочем столе", соответственно создается ярлык "Автозагрузка курсов валют". Запуск ярлыка приводт к последовательному запуску каждой выбранной базы, загрузке выбранных валют. После загрузки валют каждая база закрывается.
    "Планировщик заданий" в Windows поможет автоматизировать и запуск этого ярлыка по произвольному расписанию, если в итоге надоест каждый день его запускать - как в итоге надоело и мне :)
  7. После создания ярлыка, повторное открытие обработки позволит редактировать текущие настройки, а не создавать настройки автозгрузки валют "с нуля".

Обратите внимание: Если база, в которой будет производиться загрузка валюты,  запускается в режиме управляемого приложения - алгоритм программы предполагает, что в указанную информационную базу внедрена "Библиотека стандартных подсистем", а в частности справочник "Валюты", в котором присутствует галочка "Загружается из Интернета" (например в 1С:Предприятие 3.0). В режиме обычного приложения алгоритм на БСП не расчитывает :) 

В любом случаи, если где-то не заработает, напишите какие конфигурации и какой режим запуска приложения.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
AutozagruzkaValut
.epf 39,74Kb
08.05.14
30
.epf 39,74Kb 30 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. Константин (constspb) 14.11.13 22:53
{ВнешняяОбработка.АвтозагрузкаВалют.МодульОбъекта(341)}: Ошибка при вызове метода контекста (Прочитать)
ТекстФайлСЛогом.Прочитать(ПутьКФайлуСЛогом);
по причине:
Ошибка доступа к файлу 'C:\Users\Administrator\Documents\_execute_valuta\log'
Права все есть, каталоги которые просит есть, но все равно ошибка... Конфигурация БП 2.0.53.8
2. Константин (constspb) 14.11.13 23:17
вроде разобрался, видимо определение профиля для Windows Server 2012 по другому должно быть прописано, прописал путь к профилю как C:\Temp
3. Денис Ханин (NiNAH) 15.11.13 07:06
(2) constspb, Спасибо за информацию, что в винсервере 2012 есть отличия с определением путей к профилям. К сожалению под рукой нет 2012 сервера - как посмотрю, что там изменилось, подправлю - тем более, что давно руки чешутся папку _execute_valuta прятать еще "дальше", чем в "Мои документы".
4. Test Testers (chetirepda) 30.04.14 10:59
Ошибка при запуске в обычном режиме приложения
{ВнешняяОбработка.АвтозагрузкаВалют.МодульОбъекта(350)}: Ошибка при вызове метода контекста (Записать)
ТекстФайлСЛогом.Записать(ПутьКФайлуСЛогом);
по причине:
Каталог не обнаружен 'C:\Users\Test\Documents\_execute_valuta\log'


Это связанно с тем, что не хватает проверки ПроверитьКаталогСФайламиНастроек(); при открытии обработки
Т.е. в Модуль "ФормаОбычная" в процедуру "ПриОткрытии()" нужно добавить проверку - "ПроверитьКаталогСФайламиНастроек();"
Получиться так -
Процедура ПриОткрытии()
	ПутьКФайлуДляЗапускаПлатформы=КаталогПрограммы()+"1cv8.exe";
	ПроверитьКаталогСФайламиНастроек();
	ОбновитьСписокВалют();
	ОбновитьСписокФайловыхБаз();
	ОбновитьСписокКлиентСерверныхБаз();
	ЭлементыФормы.ПолеЛога.Значение = ЗагрузитьЛог();
КонецПроцедуры
...Показать Скрыть


Далее, если базы клиент-серверные, будет следующая ошибка -
{ВнешняяОбработка.ЗагрузкаКурсовВалют.МодульОбъекта(268)}: Получение элемента по индексу для значения не определено
МассивДанныхСледующейБазы.Вставить(0,ЭлементМассива[Ном-1][5]);


Это связано с ошибкой в макете обработки. Его нужно выгрузить, добавить расширение .epf и изменить следующие строки в модуле макета -
МассивДанныхСледующейБазы = ЭлементМассива[Ном];
//добавить признак закрытия текущей базы
МассивДанныхСледующейБазы.Вставить(0,ЭлементМассива[Ном-1][5]);

на
МассивДанныхСледующейБазы = МассивКлиентСерверныхБаз[Ном];
//добавить признак закрытия текущей базы
МассивДанныхСледующейБазы.Вставить(0,МассивКлиентСерверныхБаз[Ном-1][5]);

Покрайне мере я думаю автор имел ввиду именно это :)
Далее нужно макет загрузить обратно в обработку и сохранить её.
5. Test Testers (chetirepda) 08.05.14 07:21
Кстати, лучше использовать следующую конструкцию при проверке текущей базы -
//было
//ПозицияПоиска = Найти(Врег(ТекущийЭлементДляПоиска), Врег(ТекущаяКлиентСервернаяБаза));
//стало
ПозицияПоиска = ?(Врег(ТекущийЭлементДляПоиска) = Врег(ТекущаяКлиентСервернаяБаза), 1,  0);


Иначе если одна база называется - Server\Buh_Copy, а вторая база - Server\Buh - то тогда будет вечный цикл.
6. Денис Ханин (NiNAH) 08.05.14 09:37
Обработка обновлена.
(5) chetirepda, спасибо за комментарии. Алгоритм по клиент-серверным базам писал вслепую, поэтому, когда на работе запустил, тоже наткнулся на ошибку с массивом МассивДанныхСледующейБазы - исправил точно также.
Твои замечания по поводу ПроверитьКаталогСФайламиНастроек() и ПозицияПоиска применил - надеюсь не против.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа