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





Автоматическая загрузка валют в один клик (либо по расписанию) во всех конфигурациях на платформах 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 не будет опубликован. Обязательные поля помечены *