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





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

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

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

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

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

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

6 Comments

  1. constspb

    {ВнешняяОбработка.АвтозагрузкаВалют.МодульОбъекта(341)}: Ошибка при вызове метода контекста (Прочитать)

    ТекстФайлСЛогом.Прочитать(ПутьКФайлуСЛогом);

    по причине:

    Ошибка доступа к файлу ‘C:UsersAdministratorDocuments\_execute_valutalog’

    Права все есть, каталоги которые просит есть, но все равно ошибка… Конфигурация БП 2.0.53.8

    Reply
  2. constspb

    вроде разобрался, видимо определение профиля для Windows Server 2012 по другому должно быть прописано, прописал путь к профилю как C:Temp

    Reply
  3. NiNAH

    (2) constspb, Спасибо за информацию, что в винсервере 2012 есть отличия с определением путей к профилям. К сожалению под рукой нет 2012 сервера — как посмотрю, что там изменилось, подправлю — тем более, что давно руки чешутся папку _execute_valuta прятать еще «дальше», чем в «Мои документы».

    Reply
  4. chetirepda

    Ошибка при запуске в обычном режиме приложения

    {ВнешняяОбработка.АвтозагрузкаВалют.МодульОбъекта(350)}: Ошибка при вызове метода контекста (Записать)

    ТекстФайлСЛогом.Записать(ПутьКФайлуСЛогом);

    по причине:

    Каталог не обнаружен ‘C:UsersTestDocuments\_execute_valutalog’

    Это связанно с тем, что не хватает проверки ПроверитьКаталогСФайламиНастроек(); при открытии обработки

    Т.е. в Модуль «ФормаОбычная» в процедуру «ПриОткрытии()» нужно добавить проверку — «ПроверитьКаталогСФайламиНастроек();»

    Получиться так —

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

    Далее, если базы клиент-серверные, будет следующая ошибка —

    {ВнешняяОбработка.ЗагрузкаКурсовВалют.МодульОбъекта(268)}: Получение элемента по индексу для значения не определено

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

    Это связано с ошибкой в макете обработки. Его нужно выгрузить, добавить расширение .epf и изменить следующие строки в модуле макета —

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

    на

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

    Покрайне мере я думаю автор имел ввиду именно это 🙂

    Далее нужно макет загрузить обратно в обработку и сохранить её.

    Reply
  5. chetirepda

    Кстати, лучше использовать следующую конструкцию при проверке текущей базы —

    //было
    //ПозицияПоиска = Найти(Врег(ТекущийЭлементДляПоиска), Врег(ТекущаяКлиентСервернаяБаза));
    //стало
    ПозицияПоиска = ?(Врег(ТекущийЭлементДляПоиска) = Врег(ТекущаяКлиентСервернаяБаза), 1,  0);

    Иначе если одна база называется — ServerBuh_Copy, а вторая база — ServerBuh — то тогда будет вечный цикл.

    Reply
  6. NiNAH

    Обработка обновлена.

    (5) chetirepda, спасибо за комментарии. Алгоритм по клиент-серверным базам писал вслепую, поэтому, когда на работе запустил, тоже наткнулся на ошибку с массивом МассивДанныхСледующейБазы — исправил точно также.

    Твои замечания по поводу ПроверитьКаталогСФайламиНастроек() и ПозицияПоиска применил — надеюсь не против.

    Reply

Leave a Comment

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