Автоматическое обновление конфигурации в узлах РИБ

14.07.12

Интеграция - Обмен между базами 1C

При поднятии РИБ одна из существенных проблем – как автоматически обновлять конфигурацию на периферийных узлах? Научить простых пользователей заходить в конфигуратор довольно проблематично. Предлагаю довольно простое, на мой взгляд решение с минимальными доработками в конфигурацию.

Информирование

Имеет смысл информировать пользователей о том, что с обменами пришло обновление конфигурации.

Для этого в модуле приложения достаточно вставить периодически вызываемую функцию вида:

 

Функция ПостояннаяПроверкаРедкая() Экспорт
    //Раз в 5 минут
    Если ПланыОбмена.ГлавныйУзел() <> НеопределеноТогда
        Если КонфигурацияИзменена() Тогда
            ксПредупреждение("Конфигурация базы данных изменена, чтобы не образовался простой в обменах, обновите конфигурацию или свяжитесь с поддержкой 1с!" + Символы.ПС +
            "Для обновления конфигурации на точке достаточно перезайти в 1С под Администратор1, при этом будет выдан запрос на обновление. " + ТекущаяДата());
        КонецЕсли;
    КонецЕсли;
КонецФункции

 

Когда придут изменения, будет выдано окошко вида:

Обновление

Само обновление выполняется в функции ОбновитьКонфигурациюБазыДанных. Ее можно вставить при начале работы приложения или добавить в пункт меню интерфейса. Когда пользователь увидит предупреждение, он сможет выполнить обновление, когда ему будет удобно:

Функция ОбновитьКонфигурациюБазыДанных() Экспорт
    //Если конфигурация изменена, тогда нужно выполнить ее обновление...
    флКонфигурацияИзменена = КонфигурацияИзменена();
    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();//File="C:\1cv8\Base".
    ЭтоФайловая = Найти(СтрокаСоединения, "File="); //Заменить потом на типовую функцию.

    Если флКонфигурацияИзменена И ЭтоФайловая Тогда    
        //Смотрим, чтобы в базе никого не сидело

        ~ПовторнаяПопыткаОбновления:

        флОбновлять = истина;
        Если ксВопрос(
            "Внимание! Пришли изменения конфигурации. " + Символы.ПС +
            "Рекомендуется их принять." + Символы.ПС +
            "Закройте все остальные 1С на всех компьютерах точки и нажмите ""ДА"" для Обновления." + Символы.ПС +
            "Если после нажатия ""ДА"" выскочит красное окно ошибки, закройте его (кнопка ""Закрыть"")." + Символы.ПС +
            "Если вы хотите продолжать работу без обновления (не рекомендуется) нажмите ""НЕТ""." + Символы.ПС +
            "Если вы не обновляете конфигурацию, обязательно сделайте это позже в ближайшее время."+ Символы.ПС +
            "ОБНОВИТЬ КОНФИГУРАЦИЮ?", РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да) = КодВозвратаДиалога.Нет Тогда
            флОбновлять = ложь;
        КонецЕсли;

        Если флОбновлять Тогда
              
            Попытка
                УстановитьМонопольныйРежим(Истина); 
            Исключение
                ксПредупреждение("Кто-то еще работает в базе, не могу захватить базу монопольно, обновить не получается, попробуйте еще раз! " + Символы.ПС + ОписаниеОшибки());
                Перейти ~ПовторнаяПопыткаОбновления;
            КонецПопытки;

            //Создаем и запускаем скрипт на обновление базы
            СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();//File="C:\1cv8\Base".
            СтрокаСоединения = СтрЗаменить(СтрокаСоединения, "File=", "F");
            СтрокаСоединения = СтрЗаменить(СтрокаСоединения, ";", "");

            КаталогПрограммы = КаталогПрограммы();
            ИмяФайлаПрограммы = КаталогПрограммы + "\1cv8.exe";                       
            КоманднаяСтрокаОбновления = """" + ИмяФайлаПрограммы + """ config /Visible /NАвтообмен /P"""" /UpdateDBCfg /" +СтрокаСоединения;  
            //КоманднаяСтрокаЗапуска = """" + ИмяФайлаПрограммы + """ enterprise /NКассир /" +СтрокаСоединения;

            //Запускаем только несколько раз, должно помочь
            ТекстСкрипта = "";
            Для Инд = 1 по 10 Цикл //10 попыток обновить конфигурацию
                ТекстСкрипта = ТекстСкрипта + КоманднаяСтрокаОбновления + Символы.ПС;
                ТекстСкрипта = ТекстСкрипта + "if not errorlevel 1 goto pend " + Символы.ПС;
            КонецЦикла;

            ТекстСкрипта = ТекстСкрипта + "
            |:pend";

            //ТекстСкрипта = ТекстСкрипта + КоманднаяСтрока + Символы.ПС;
            //ИмяФайлаСкрипта = КаталогВременныхФайлов() + "update_1s_counter_sap.cmd";
            ИмяФайлаСкрипта = КаталогВременныхФайлов() + "run.bat";
            Ф = Новый ТекстовыйДокумент();
            Ф.УстановитьТекст(ТекстСкрипта);
            Ф.Записать(ИмяФайлаСкрипта, КодировкаТекста.OEM);

            Попытка
                ЗапуститьПриложение(ИмяФайлаСкрипта,,ложь);      
            Исключение
                ксПредупреждение("Произошла ошибка запуска скрипта обновления: " + ИмяФайлаСкрипта + " Ошибка: " + ОписаниеОшибки());
                Перейти ~ПовторнаяПопыткаОбновления;
            КонецПопытки;

            //Завершаем работу 1С
            ЗавершитьРаботуСистемы(истина);
        КонецЕсли;
    КонецЕсли;
КонецФункции

 

Суть работы алгоритма обновления – сначала проверяется, что все пользователи вышли из 1С, потом закрывается текущий сеанс, формируется командный файл run.bat со скриптом обновления конфигуратора и вызывается 10 раз. Процесс вызова конфигуратора в режиме обновления визуализируется, чтобы пользователи полностью могли контролировать и осознавать процесс.

 

Информационное сообщение с инструкцией пользователю по обновлению имеет вид:

Если не получилось заблокировать 1С, выдается сообщение вида:

См. также

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 36520 руб.

04.08.2015    159665    363    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134919    722    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68413    178    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34167    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46283    196    64    

157

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231389    124    327    

295

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9205    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20234    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dimk@a 14.07.12 20:41 Сейчас в теме
Здоровское решение. Недавно делал распределенную базу и уже довелось ее обновлять с подключением по удаленке к узлам. При слеюущем обновлении добавлю эту функцию. Спасибо!
2. fixin 4252 14.07.12 20:56 Сейчас в теме
(1) ндык, че мы только не пробовали. оказалось, самый простой вариант такой.
3. baldorc 4 15.07.12 01:30 Сейчас в теме
Хорошее решение, при случае использую не задумываясь :)
4. Kyrales 144 15.07.12 06:15 Сейчас в теме
Хорошая идея. Можно проверку немного модифицировать:

Функция ПостояннаяПроверкаРедкая() Экспорт

//Раз в 5 минут

Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда
Если КонфигурацияИзменена() Тогда

Если РольДоступна("ПолныеПрава") или РольДоступна("ПравоОбновленияКонфигурации") Тогда
ОбновитьКонфигурациюБазыДанных();
иначе
Предупреждение("Конфигурация базы данных изменена, чтобы не образовался простой в обменах, обновите конфигурацию!" + Символы.ПС +
"Для обновления конфигурации на точке достаточно перезайти в 1С под Администратор (или пользователем с администраторскими правами), при этом будет выдан запрос на обновление. " + ТекущаяДата());
КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецФункции
5. fixin 4252 15.07.12 10:04 Сейчас в теме
(4) можно и автоматом. Но не всегда прокатит автоматика. Если открыто две 1с-ки, то конфа не обновится автоматом, а сообщение о том, что не удалось обновить, будет доставать.
хотя согласен, можно попытаться обновить, а если не получится монопольный доступ, уже тогда сообщать.
Но лучше решение об обновлении все же принимать пользователю. Не всегда обновление проходит автоматом, и запускающийся каждые 10 минут конфигуратор будет доставать.
6. WKBAPKA 214 16.07.12 08:54 Сейчас в теме
поставил плюс т.к. самому было в лом разбираться, в типовых предусмотрено авто. обновление...
но со стилистикой надо что то делать :)

Функция ПостояннаяПроверкаРедкая()

после редкая на ум приходит не хорошее слово :)

>Когда придут изменения будет выдано окошко вида

окошко вида )

> Закройте все остальные 1С на всех компьютерах точки :)

ну и использовать GoTo признак плохого тона в программировании...
vlasin; DrAku1a; yansen; +3 Ответить
11. fixin 4252 16.07.12 12:39 Сейчас в теме
(6) не буквоедствуйте.
Как сделано автообновление в типовых, не помню уже. У меня типовая ут 10.3, автообновления там нет, правда древний релиз.
Окошко вида - потому что текст там может быть другой, зависит от организации.
Использовать GoTo можно, нам об этом рассказывали в универе, где я учился на программиста. Альтернатива циклу while true в небольших участках кода - вполне.
23. sa1m0nn 28 18.07.12 09:28 Сейчас в теме
(11)

Хорошая идея, спасибо, +2.

ЗЫ: Но про ГоТо сказали правильно - это моветон (меня реально высаживает :)). Используйте вызов процедуры.
7. zamichnik 16.07.12 09:08 Сейчас в теме
Весьма симпатичная идея, большое спасибо!
Непременно воспользуюсь :)
8. Cyberboy 119 16.07.12 10:45 Сейчас в теме
А пользователь который делает обмен должен иметь полные права? У меня на РИБ узлах есть пользователь Обновление, при запуске этого пользователя, автоматом запускается обновление с главным узлом и после прохождения обновления сеанс пользователя завершается, у всех остальных пользователей стоит ограничение в правах. Будет при таком методе запускать "Автоматическое обновление конфигурации в узлах РИБ" у пользователя "Обновление"?
10. fixin 4252 16.07.12 12:36 Сейчас в теме
(8) есть два права. первое - это право на изменение конфы. без него файл с изменениями конфы не прочитается и дело до "ОбновитьКонфигурацию" даже не дойдет. Проще решить эту пролему, запуская обмен данными в привелигированном модуле, т.к. право на изменение конфы - весьма опасное, его нельзя давать на точках.

Второе право - это право на обновление конфигурации БД. Его можно дать даже пользователю без пароля, как у меня, "Автообмен".
9. glek 119 16.07.12 10:48 Сейчас в теме
12. ak0710 162 16.07.12 13:54 Сейчас в теме
Ваш способ конечно хорош, у каждого это идея приходит по разному , год или два назад Я настраивал авто обмен в одной фирме у них была типовая ИБ , и не было смысла убирать замок с конфигурации.
Каждую ночь в головной базе производилась выгрузка планов обмена например в 23.00 (отключались все пользователи , делался бэкап перед этим)
В базе филиала :
В 01:00 в базе филиала запускалось чтение плана обмена (перед чтение отключение всех пользователей и бэкап)
В 01:30 1С с командной строкой /UpdateDBCfg
В 02:00 повторное чтение и выгрузка

Обмен с 6ти филиалами работает по сей день, здесь обновление проходило 1 раз ночью .

Ваш случай очень удобен если обмен проходит по несколько раз в день , а если одного раза достаточно , то не обязательно трогать конфигурацию.
13. fixin 4252 16.07.12 14:08 Сейчас в теме
(12) в моем случае компьютеры на ночь выключаются, т.е. все должно происходить с выгоном пользователей...
но я думаю, можно и на скриптах написать, чтобы не менять конфу, почему бы нет... ;-)
14. ak0710 162 16.07.12 14:23 Сейчас в теме
(13) Я за то чтобы как можно меньше всего трогать в типовой конфигурации , можно добавить просто еще командную строку с отключением ПК после обмена , каждый сам выберет что ему надо , возможно ваш способ Я тоже когда нибудь использую
15. fixin 4252 16.07.12 15:09 Сейчас в теме
(14) у нас обновление конфы происходит не только ночью, а в любой момент.
16. kiros 52 16.07.12 15:52 Сейчас в теме
Да, идея очень достойная, мы реализовывали так, если динамическое обновление, то автоматически обновлялось, и стандартная обработка требовала от пользователей перезайти (со счетом до 3-х, т.е. не больше трех раз можно отказаться от пере захода в 1с). А в случае монопольного обновления инициировали блокировку подключения с отсрочкой 5 минут, и опять же стандартными средствами получалось выгнать, после чего спокойно обновлялись и снимали блокировку, как то так :)
17. fixin 4252 16.07.12 16:35 Сейчас в теме
(16) ну дык печатайте на ИС и зарабатывайте плюсики. ;-) Я не претендую на идеал, но система рабочая.
18. Программулькин 301 17.07.12 10:12 Сейчас в теме
Честно сказать - полная какашка!, но минус ставить не буду ибо как вариант имеет права на жизнь.

Во первых, это же : автоматическое обновление конфигурации!, какие нахрен окошки на "да" и "нет", какое нафиг "не могу захватить монопольно" - бред! У меня если пришли обновления, то всем сообщение о сохранении документов и баста - счётчик тикает, далее всех кидает и обновляет, причём во время обновления хрен кто зайдет.Обновилось, пожалуйста, работайте, вмешательство рук человека 0, особенно юзеров!
правда минус есть, пришлось внести изменения в конфу: добавлены 4 процедуры 1 константа и 1 форма и 1 роль

Во вторых, " КаталогПрограммы = КаталогПрограммы();" тоже бред. Обновил платформу и всё, приплыли, файл не найден!
У меня у юзеров тупо диск вставил запустил батник и всем 15м платформа новенькая легла без всяких там вопросов "могу" "не могу". Похер на антивири и фаерволы, за исключением вистовской попрошайки о том кто запустил файл, и то настраиваешь на низкий уровень и попёр!

обмен раз в 40 минут, тобишь всегда актуальная база и конфа.
AfterEarth; yoyoman; papami; +3 Ответить
19. fixin 4252 17.07.12 11:15 Сейчас в теме
(18) понты так и сверкают. Так где же ваша замечательная программма? В файловой версии конечно, можно поставить убивцу 1с на все компьютеры точки (2-3 штуки). Но нужно управление этим убивцем, короче задача излишне усложняется. Про КаталогПрограммы я ваш нюанс не понял, как бе. В общем, готов рассмотреть ваш супер-пупер-вариант, когда он тут появится. Пока это только проджэкт, который критиковать невозможно за его отсутствием в мире реальном.
20. Программулькин 301 17.07.12 12:24 Сейчас в теме
(19)
ниии, мой вариант далёк от идеала, просто он приближён к автоматизму и тоже имеет право на жизнь, тобишь влияние человеческого фактора 0. К вашему же варианту замечания я нарисовал, просто мне есть с чем сравнить, вот и всё.
Я тоже пробовал юзать КаталогПрограммы(), но не вышло. Она использует "C:\Program Files\1cv82\8.2.**.порядковый номер.", допустим "C:\Program Files\1cv82\8.2.15.317", при обновлении платформы в 1с8 старая платформа остается, и добавляется новая. Итог: в каталоге C:\Program Files\1cv82\8.2.15.317 имеем несколько папок 8.2.15.317, 8.2.15.318,8.2.15.319 и тд + common и conf. Так вот при обновлении платформы, Ваш путь к файлу слетит, и файл будет не найден. В 7ке такое прокатывало, но там по-моему было что-то вроде КаталогИБ() или как то так, тобишь каталог с базой, но тогда исключается клиент-серверный вариант, но это уже лирика. Свой метод пока выкладывать не намерен, ибо лень. В данном случае я использовал жёский путь:"C:\Program Files\1cv82\common\имя файла", ибо, при использовании автоматической установки платформы на клиенте, путь стандартный и не меняется.



вот кусок
Процедура СчетчикВремени() Экспорт

Константы.ВремяВСекундахДоВыбросаИзБазы.Установить(Константы.ВремяВСекундахДоВыбросаИзБазы.Получить()-1);

КонецПроцедуры

Процедура СообщенияОВремени() Экспорт

ОстСекунд = Константы.ВремяВСекундахДоВыбросаИзБазы.Получить();
//не скажу формулу перевода
чч = xx;
мм = xx;
сс = xx;

Если ОстСекунд > 0 Тогда
ФормаОстаткаВремени.ЭлементыФормы.КоличествоСекунд.Значение = "До конца работы сеанса осталось"+Символы.ПС+Дата(так фигню всякую можно вставить,чч,мм,сс);
Если ФормаОстаткаВремени.Открыта() Тогда
ФормаОстаткаВремени.Обновить();
Иначе
ФормаОстаткаВремени.Открыть();
КонецЕсли;
ИначеЕсли ОстСекунд <= 0 Тогда
ФормаОстаткаВремени.ЭлементыФормы.КоличествоСекунд.Значение = "БАЙ-БАЙ";
ОтключитьОбработчикОжидания("СообщенияОВремени");
// Если раньше выйти то блокировка установится "Истина"
Константы.БлокировкаВхода.Установить(Ложь);
//строка которая выкидывает
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;

КонецПроцедуры

Процедура ЗакрытиеСеанса() Экспорт

Если КонфигурацияИзменена() Тогда
Если РольДоступна("gvАвтообмен") тогда
Файл1 = Новый Файл("C:\Program Files\1cv82\common\UpdateDBCfg.bat");
Если Файл1.Существует() Тогда
//Проверка на последнего пользователя
ТекущийРежим = СоединенияИБ.ПараметрыБлокировкиСеансов(Истина);
КоличествоСеансов = ТекущийРежим.КоличествоСеансов;
Если КоличествоСеансов <= 1 Тогда
ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина;
ЗапуститьПриложение("C:\Program Files\1cv82\common\UpdateDBCfg.bat");
Иначе
Возврат;
КонецЕсли;

Иначе
ОтправитьПисьмо();
Сообщить("Файл UpdateDBCfg.bat не обнаружен!")
КонецЕсли;
Иначе
Если НЕ Константы.БлокировкаВхода.Получить() Тогда
Константы.БлокировкаВхода.Установить(Истина);
Константы.ВремяВСекундахДоВыбросаИзБазы.Установить(61);
КонецЕсли;
ПодключитьОбработчикОжидания("СчетчикВремени",1);
ПодключитьОбработчикОжидания("СообщенияОВремени",1);
ОтключитьОбработчикОжидания("ЗакрытиеСеанса");
КонецЕсли;
Иначе
//после сохранения снимается режим блокировки
Константы.БлокировкаВхода.Установить(Ложь);
КонецЕсли;

КонецПроцедуры

Процедура НачатьПроверкуНаРазличияКонфигураций() Экспорт
ПодключитьОбработчикОжидания("ЗакрытиеСеанса",15);
КонецПроцедуры

Процедура ОтправитьПисьмо()
Сообщить ("Письмо Отправлено");
//а пока пытаюсь обучит 8.2 обучить работать на ssl протоколах (stunel не предлагать)
КонецПроцедуры
21. fixin 4252 17.07.12 13:28 Сейчас в теме
(20) все равно про каталог программы не догнал. разве в 82 он не показывает на каталог, из которого запущен exe-файл?
Дядя, а если у пользователя запущен отчет или 1С повис, 1с у вас автоматом не выйдет. Это я так, на всякий случай намекаю как бе. Из практики.
22. Программулькин 301 18.07.12 04:00 Сейчас в теме
(21) "все равно про каталог программы не догнал" ---faspalm...Тяжелый случай, делаю последнюю попытку.При обновлении платформы каталог программы меняется, т.е. создается новый.
"разве в 82 он не показывает на каталог, из которого запущен exe-файл?" именно так! После обновления у вас будет новый каталог, а бантик останется в старом!
1.Если у юзера повис 1с, то да согласен,ни хрена не выйдет, НО обмен 1 раз в 40 минут, за 40 минут юзер перезапустит свой висяк, и обмен состоится.
2.Если "отчёт" и любая другая транзакция, то , в этом вся прелесть в отличии от штатной блокировки, она ждет когда закончится "отчёт", и врубает счетчик, и обмен, опять же таки, состоится. Это уже проверено на практике.
24. fixin 4252 18.07.12 10:37 Сейчас в теме
(22) и что, функция КаталогПрограммы() не вернет этот каталог? А что она вернет? Я по-прежнему не догоняю че-та... Ну даже если вернет базовый каталог, в нем можно замутить поиск EXE-файла, в чем проблема-то.

Юзверь может и перезапустит, а может и нет, может он ваще ушел домой с работы...

(23) Гото - не моветон. В умелых руках. Я вам как программист, получивший высшее образование по специальности, говорю.
30. sa1m0nn 28 23.07.12 10:55 Сейчас в теме
(24)
>> Я вам как программист, получивший высшее образование по специальности, говорю.

Вы, наверное, один тут программист с высшим образованием :)
31. fixin 4252 23.07.12 16:29 Сейчас в теме
(30) без понятия. речь идет о высшем профильном образовании.
32. sa1m0nn 28 24.07.12 08:36 Сейчас в теме
(31)

Тысяча извинений за офф...
Вероятно, я на сантехника учился...
Да и Эдсгеру Дейкстре, наверно, далеко до Ваших преподавателей...
http://ru.wikipedia.org/wiki/GOTO
Тысяча извинений, это всего лишь моё скромное мнение.
33. fixin 4252 24.07.12 11:33 Сейчас в теме
(32) курите раздел "Оправданное применение" по вашей ссылке. Мы изучали GoTo в рамках курса "Структурное программирование". Вы бы еще на BREAK ополчились, это тот же скрытый GoTo. В своем коде я использую Goto вместо цикла Repeat Until, которого нет в 1С, и это его нормальное применение. Оно более наглядно, чем замена на While (true)
daedal; vadimlp77; VZhulanov; +3 Ответить
74. rrustam11983 01.06.18 13:23 Сейчас в теме
(33) Программисту который использует GoTo нужно забить гвоздь в голову
75. fixin 4252 01.06.18 17:23 Сейчас в теме
(74) скорее програмисту, который не знает чем отличается плохой GOTO от хорошего.
25. Программулькин 301 18.07.12 12:22 Сейчас в теме
ыыыы "и что, функция КаталогПрограммы() не вернет этот каталог? А что она вернет? " да все верно, она именно это и сделает. Вот что у тебя получится: текущая платформа 8.2.15.317. Ты туда кидаешь свой бантик. Юзаешь КаталогПрограммы() - результат: все работает. Далее проходит месяц. Устанавливаем платформу новую. И вуаля, Ты уже юзаешь новый каталог программы, а именно: 8.2.15.318, где нет твоего бантика, результат - ошибка.Так понятно?
Если и так не понятно, то снеси все платформы, установи одну сделай обмен, а затем обнови платформу и увидишь ошибку, если ошибки не будет, тогда ты гений, и тогда обязан поделится как ты такое провернул!
Далее:
"Юзверь может и перезапустит, а может и нет, может он ваще ушел домой с работы... " - 90% случаев перезапустит, ибо ему 1с нужна, а вот если зависло и он ушёл домой, это да - косяк. Дык я и говорю, что мое решение далеко от идеала, НО в твоем случае это тоже косяк )), тоже не пройдет обновление :))) у тя есть решение такой проблемы?
26. fixin 4252 18.07.12 12:42 Сейчас в теме
(25) я батник создаю при каждом запуске автоматически из кода программы, а не кидаю туда. Как-то так. Так что никаких проблем у меня с этим не возникнет. Так что у меня косяков нету. Пользователя задолбает напоминалка и он обновится. Проверено на пользователях.
27. fieryfist 15 19.07.12 10:42 Сейчас в теме
отличная публикация, как раз настраиваю РИБ искал что-то подобное. Подскажите как настроить вызов функции ПостояннаяПроверкаРедкая() каждые пять минут, я сделал это через регламентное задание, но это не удобно т.к. сообщение выдается только пользователю для регламентных заданий, а у нас всегда запущено два сеанса.
28. fixin 4252 19.07.12 11:02 Сейчас в теме
(27) Через ПодключитьОбработчикОжидания
astraborz; fieryfist; +2 Ответить
29. Созинов 19.07.12 13:46 Сейчас в теме
Спасибо, возьмем на заметку.
34. maria7777777 14 25.07.12 09:00 Сейчас в теме
Да идея не плохая, но вот пользователям на удаленных точках полные права не могу дать, противоречит корпоративной безопасности...
35. fixin 4252 25.07.12 11:22 Сейчас в теме
(34) а зачем им полные права, не понял?
36. CnupT 69 27.07.12 06:23 Сейчас в теме
Не совсем понял, как согласуются
Для обновления конфигурации на точке достаточно перезайти в 1С под Администратор1

и
КоманднаяСтрокаОбновления = """" + ИмяФайлаПрограммы + """ config /Visible /NАвтообмен /P"""" /UpdateDBCfg /" +СтрокаСоединения;

Т.е. они сначала заходят под Администратор1, потом программа заходит под Автообмен? Зачем так сложно?
38. fixin 4252 27.07.12 08:21 Сейчас в теме
(36) Администратор1 - это логин для работы под пользователем. Пароль пустой.
Автообмен - это пользователь, если зайти под которым, то произойдет автообмен и 1с сразу же выйдет. Сейчас думаю, что можно было бы и без этого обойтись, в принципе. Пароль пустой.


(37) через обработчик ожидания. запускается периодически проверка, если автообмена давно не было (по истории обмена смотрим), то создаем скрипт, сохраняем его во временный файл, запускаем скрипт, а из скрипта коннектимся к 1с по ком-соединению и выполняем в ком-соединении обмен. Только такой расклад позволяет запустить автообмен полностью в невидимом режиме, чтобы юзверь его не видел. и юзверь может его снять через диспетчер задач, если чё.
AfterEarth; +1 Ответить
37. CnupT 69 27.07.12 06:29 Сейчас в теме
И еще момент. Как у Вас на точках организован сам процесс периодического обмена?
Пользователи держат включенными 2 окна 1с, или планировщиком Windows запускается?
Просто 2 окна крайне неудобно, а раз в NN минут открывающееся и закрывающееся окно
1С и того хуже.
Всю голову сломал как бы это покрасивше реализовать. Пока что с помощью v82.Automation
добился того, чтобы 1С висела себе в памяти без видимых проявлений, но при обновлении
конфигурации ее же выгружать надо, потом опять как-то загружать...
39. yoyoman 06.08.12 09:30 Сейчас в теме
А у нас как:
Около 20 рибов, обмены идут раз в 15-20 минут.
Cтандартное назначенное задание средствами Windows Server 2003, которое инициирует вход в 1с под пользователем Obmen. В настройках обмена стоит: Выполнять обмен при входе в систему пользователя Obmen.
Назначенное задание инициирует два таких запуска, один с ключом /UpdateDBCfg, а второй без.
При динамическом обновлении никаких проблем не возникает, и в течение дня всегда актуальные обмены. Не динамические обновления стараемся делать ночью. Ночью все серваки перезагружаются и активных сеансов 1с не остается. (также можно обычным батником в одну строчку перезапускать службу 1с).
Если же надо срочно не динамически обновиться средь бела дня, в каталоге обмена валяется psexec.ехе. Через него рассылается сообщение пользователям (через netsend) о предупреждении завершения сеансов 1с. Через psexec же перезапускается служба (или через taskkill убиваются все процессы 1с.ехе) и выполняется вход в 1с с ключом /UpdateDBCfg. Миссия выполнена. Изменений в конфигурации никаких. Все сделано тройкой батников по паре строк в каждом батнике.
40. fixin 4252 06.08.12 10:32 Сейчас в теме
(39) много отличий у нас с вами. я тоже сначала делал батником.
Но у меня есть нюансы:
1. Машины работают только днем
2. Обновления конфы чаще всего тоже приходят днем
3. Из-за глюков 1с задания, запущенные под фоновым пользователем винды имеют свойство зависать и только перезагрузка спасает, а потом она опять стартует и опять виснет. Поэтому отказался от запуска под фоновым юзверем...
4. Прописывать в 1С ручками windows-пользователя root на каждой из 40 узлов РИБ как-то стремно. Проще назначить пользователя с авторизацией из 1с, а не винды.
... и еще много нюансов.

Как-то так... Так что я понимаю ваш ура-оптимизм, но в реальной жизни все сложнее бывает
41. yoyoman 06.08.12 10:54 Сейчас в теме
1) Можно утром же обновлять, в 9 утра пришли на работу. В 9:01 обновление конфы, в 9:02 все радуются
2) У нас тоже днем идет в диапазоне 15-20 минут. С одним РИБом, и того каждые 2-3 минуты.
3) У нас за 4 года крайне редко случаются подобные проблемы, но легко мониторятся и лечатся обычным schtasks (запускаемым в пакетном режиме). Если перезагражать компьютер из-за зависшего назначенного задания - проблемы тогда надо искать в винде, а не в 1с.
4) В чем стремно? я не совсем понял, пользователь обмена то 1совский. Назначенное задание лишь под этим пользователем инициирует вход.
42. fixin 4252 06.08.12 11:07 Сейчас в теме
(41) ха, наивный чукотский юноша. у клиента 40 магазинов с самым разным временем открытия, к тому же обновления обычно происходят в середине дня, а не в начале и не в конце. Это как бы не проблема, можно предупреждать пользователя сделать обмен, тем же net send, как бы...

А как у тебя сделан выход из под пользователя obmen, или он так и болтается открытым после автообмена? или ты его насильно прибиваешь?

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

У меня не было задачи не менять конфу, поэтому я все сделал через 1с, в том числе и для того, чтобы не напрягать админов, ручные настройки заданий требуют времени, все задачи запускаются из самой 1с и все в шоколаде. Это возможно, потому что в течении дня 1с обычно открыта...

По поводу виндового пользователя - я подумал, что obmen у тебя виндовый пользователь, ну да ладно... ;-)
43. 1С_Мастер 61 06.09.12 12:05 Сейчас в теме
Перейти ~ПовторнаяПопыткаОбновления;


Таки я дико извиняюсь, но при всем уважении к автору, за использование goto надо руки вырывать.
44. fixin 4252 06.09.12 12:24 Сейчас в теме
(43) оператор гото допустимо использовать, но не всегда. там где использовал я - допустимо
45. 1С_Мастер 61 06.09.12 13:03 Сейчас в теме
(44)А какова необходимость использовать goto там, где без него можно прекрасно обойтись?
46. fixin 4252 06.09.12 13:32 Сейчас в теме
(45) стилистическая необходимость. Т.к. в 1с отсутствует цикл UNTIL, а GOTO смотрится красивее и проще вместо замены цикла UNTIL бесконечным циклом с брик.
47. relanium86 14 04.06.13 12:21 Сейчас в теме
Никто не пробовал если запускать через скрипт в режиме обновления конфигурации, если есть возможность динамического обновления, если в базе работают пользователи отработает скрипт?
48. sdv88 87 26.06.13 16:58 Сейчас в теме
а как проверить пройдет ли динамическое обновление или нет?
49. Linx-p 09.10.13 11:24 Сейчас в теме
(48) sdv88, проверить прошло ли обновление можно запустив обмен ;)
50. Muppo 26.05.15 09:45 Сейчас в теме
А есть вариант не с файловым обновлением а серверным с БД?
51. fixin 4252 26.05.15 13:38 Сейчас в теме
(50) Muppo, нету. Сами напишите, несложно.
52. Xershi 1474 19.04.16 10:19 Сейчас в теме
Я так понимаю уже тут спецы определили какой вариант самый лучший, чтобы эту операцию (выполнение обмена на автомате при изменении конфигурации в ЦБ) выполнять на автомате?

Подскажите лучшее решение?
А то сегодня ручками все проделал. Не охота каждый день убивать на это 20 минут))
53. fixin 4252 19.04.16 12:35 Сейчас в теме
(52) ну у меня ваще автоматом делается.
1. отключается главный узел.
2. через командную строку загружается конфа целиком.
3. подключается главный узел.

но это если целиком конфу пихать.


а так все же описано, берите скрипт и юзайте.
54. Xershi 1474 19.04.16 12:53 Сейчас в теме
(53) об этом и речь. У нас может и 2 раза на день конфа обновиться. А может быть день и не обновляем. Как разработки внедряем.

Как такой вариант обставить?

Пока в нашей удаленке пользователи не работают. Но в будущем планируется.

Ознакомился со статьей, но я так понимаю всю работу делает батник?

У вас есть более развернутая статья со всеми примерами? А то пока это задача на втором плане, но хотелось бы разобрать вопрос в кратчайшие сроки!
55. fixin 4252 19.04.16 14:11 Сейчас в теме
(54) куда уж развернутее. Если Вы не понимаете смысла этой статьи, боюсь у Вас не хватает понимания механизмов работы РИБ.
56. Xershi 1474 19.04.16 14:21 Сейчас в теме
(55) речь идет об
run.bat

В статье нет разбора этого файла. Вот что более развернуто интересует.
57. fixin 4252 19.04.16 17:26 Сейчас в теме
(56) А что run.bat?
В нем несколько раз запускается обновление конфигурации базы данных, чтобы полученная конфа была принята (10 попыток вроде).
Командная строка вида:
config /Visible /NАвтообмен /P"""" /UpdateDBCfg /" +СтрокаСоединения;
58. Xershi 1474 21.04.16 09:42 Сейчас в теме
(57) а попытки для чего? Конфа же один раз обновляется для чего 10 раз?
59. fixin 4252 21.04.16 13:22 Сейчас в теме
(58) батник запускается после выхода из 1С.
вообще можно вместо батника юзать скрипт vbs, батник то туповат.
Повторение потому что 1с медленно освобождает файл базы, поэтому первые 1-2 прогона могут не сработать, файл базы еще заблокирован после выхода из 1с.
AfterEarth; +1 Ответить
60. Xershi 1474 21.04.16 14:51 Сейчас в теме
(59) у меня например 1С работает через компоненту с пауршел. Суть в том что в винде нужно скрипт написать, который отработает определенный сценарий запуска 1С?
61. fixin 4252 21.04.16 15:40 Сейчас в теме
(60) да. хоть пауэршелл, хоть bat, хоть vbs-скрипт, без разницы. Главное чтобы 1с после выхода запустила скрипт.
62. Xershi 1474 21.04.16 16:39 Сейчас в теме
(61) а текст скрипта ты в (57) написал полный?
Что туда конкретно запихнуть?
63. fixin 4252 22.04.16 13:57 Сейчас в теме
(62) да, там 10 раз запускается 1с с ключом "config /Visible /NАвтообмен /P"""" /UpdateDBCfg /" +СтрокаСоединения;", для того, чтобы принять изменения конфигурации. Т.е. чтобы обновить конфигу, ключ: UpdateDBCfg
64. Xershi 1474 29.04.16 09:47 Сейчас в теме
(63) посмотрел, как сделан механизм в БП2, сейчас вожусь с адаптацией для любой конфигурации. У нас просто конфа еще с 8.1 и там нет некоторых модулей. А так будет универсальный механизм, скачал подсистему поставил и не паришься!
65. Xershi 1474 29.04.16 17:11 Сейчас в теме
В типовой выполняется такой код:
//Окончаение завершения работы пользователей
		//Обновление конфигурации ИБ                	
		Sh = Новый COMОбъект("WScript.Shell");
		//Обновим конфигурацию БД
		LineExe = """" + v8exe + """ CONFIG /S" + ServerName + ":" + Формат(KlasterPortNumber,"ЧГ=0") + "\" + InfoBaseName + " /N""" + InfoBasesAdminName + """ /P""" + InfoBasesAdminPass + """ /WA- /UpdateDBCfg /UC""" + LockPermissionCode;
		Sh.Run(LineExe, 5, True);
		


Почему он его с первого раза не обновляет?
66. Xershi 1474 29.04.16 17:30 Сейчас в теме
/Visible

Добавил ключ видимости, он получается что просто не успевает открыть конфигуратор?
67. Xershi 1474 29.04.16 17:41 Сейчас в теме
//Окончаение завершения работы пользователей
			//Обновление конфигурации ИБ                	
			Sh = Новый COMОбъект("WScript.Shell");
			//Обновим конфигурацию БД
			LineExe = """" + v8exe + """ CONFIG /Visible /S" + ServerName + ":" + Формат(KlasterPortNumber,"ЧГ=0") + "\" + InfoBaseName + " /N""" + InfoBasesAdminName + """ /P""" + InfoBasesAdminPass + """ /WA- /UpdateDBCfg /UC""" + LockPermissionCode+"/Out"+"D:\Bukanov\РИБ\dump.txt"+" -NoTruncate";
			Sh.Run(LineExe, 0, True);
			


Добавил /Out"+"D:\РИБ\dump.txt"+" -NoTruncate, как и было в изначальной версии, с файлом не хотел мудрить, тогда операция идет долго и гарантировано обновляет конфигурацию.
В понедельник поиграюсь еще, но думаю я почти закончил подсистему.
68. fixin 4252 30.04.16 00:38 Сейчас в теме
69. Xershi 1474 02.05.16 16:45 Сейчас в теме
(68) кстати подскажи как правильно реализовать такую штуку:
Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда
		
		Если КонфигурацияИзменена() Тогда			
			
			ОтключитьОбработчикОжидания("ПроверкаНаОбновлениеРИБ");
			
			СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
			Если СтрЧислоВхождений(ВРег(СтрокаСоединения), "FILE=") Тогда
				#Если Клиент Тогда
					Предупреждение("Конфигурация базы данных изменена, чтобы не образовался простой в обменах, обновите конфигурацию или свяжитесь с поддержкой 1с!" + Символы.ПС +
					"Для обновления конфигурации на точке достаточно перезайти в 1С под Администратором, при этом будет выдан запрос на обновление. " + ТекущаяДата());
				#КонецЕсли 				
				ОбработкаОбновлениеКонфигурации = Обработки.ОбновлениеКонфигурации.Создать();
				ФормаОбработки = ОбработкаОбновлениеКонфигурации.ПолучитьФорму();
				ФормаОбработки.Открыть(); 
			Иначе				
				МодульРегламентныхЗаданий.ОбновлениеКонфигурации();				
				#Если Клиент Тогда
					Предупреждение("Конфигурация базы данных изменена, чтобы не образовался простой в обменах, завершите работу!" + Символы.ПС +
					"Конфигурация будет обновлена автоматически: " + Строка(ТекущаяДата()+300));
				#КонецЕсли				
			КонецЕсли;			
			
		КонецЕсли;
		
	Иначе
		
		ОтключитьОбработчикОжидания("ПроверкаНаОбновлениеРИБ");
		
	КонецЕсли;
Показать


Т.е. в чем вопрос: Как правильно запустить процедуру 1 раз в клиент-серверном варианте?
Делать проверку заблокирована ли база? Если она уже заблокирована, значит считать что обновление пошло? Но когда я отлаживал, скрипт вылетал в ошибки (криво 1С скрипт написали) и база будет заблокирована и не обновлена.

70. fixin 4252 03.05.16 10:23 Сейчас в теме
(69) запускай в цикле и анализируй ответ.
71. Xershi 1474 03.05.16 12:31 Сейчас в теме
(70) анализ через что делать. Пользователей много, а если что пойдет не так чем восстановить без участия администратора?
72. fixin 4252 03.05.16 21:36 Сейчас в теме
(71) а что там восстанавливать то? можно проанализировать ситуацию и предложить пользователю обновить конфигурацию или выйти, например.
73. sir 11 20.02.17 12:50 Сейчас в теме
У меня вот что получилось , немного подредактировал процедуру

запускается в фоновом задании, если конфигурация изменена

СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
		
		Попытка
			УстановитьМонопольныйРежим(Истина); 
		Исключение
			//ЗаписатьВЖурнал("Обновление ИБ","Не удалось установить монопольный режим. "+ ОписаниеОшибки(),Истина);
		КонецПопытки;
					
		КаталогПрограммы  = КаталогПрограммы();
		ИмяФайлаПрограммы = КаталогПрограммы + "1cv8.exe";
		ИмяФайлаПрограммы = СтрЗаменить(ИмяФайлаПрограммы,"Program Files\","Program Files (x86)\");
							
		КоманднаяСтрокаОбновления = """" + ИмяФайлаПрограммы + """ DESIGNER /UpdateDBCfg -server /IBConnectionString" +СтрокаСоединения+" /N"+Пользователь+" /P"+Пароль; 
		СтрокаСоединения = СтрЗаменить(СтрокаСоединения,"""","""""");
		КомандаЗапускаПриложения  = " /RunEnterprise ""ENTERPRISE /IBConnectionString" +СтрокаСоединения+" /N"+Пользователь+" /P"+Пароль+" /DisableStartupMessages /CUpLoad"" "; 
		
		КоманднаяСтрокаОбновления = КоманднаяСтрокаОбновления +  КомандаЗапускаПриложения;
				
		//ЗаписатьВЖурнал("Обновление ИБ", "КоманднаяСтрокаОбновления  "+КоманднаяСтрокаОбновления);
		
		ТекстСкрипта = "chcp 1251"+Символы.ПС+"taskkill /F /IM 1cv8.exe"+Символы.ПС;
		Для Инд = 1 по 10 Цикл 
			ТекстСкрипта = ТекстСкрипта + КоманднаяСтрокаОбновления + Символы.ПС;
			ТекстСкрипта = ТекстСкрипта + "if not errorlevel 1 goto pend " + Символы.ПС;
		КонецЦикла;
		
		ТекстСкрипта = ТекстСкрипта + "
		|:pend";
		
		ИмяФайлаСкрипта = КаталогВременныхФайлов() + "UpdateDBCfg.bat";
		ФайлСкрипта = Новый ТекстовыйДокумент();
		ФайлСкрипта.УстановитьТекст(ТекстСкрипта);
		ФайлСкрипта.Записать(ИмяФайлаСкрипта,КодировкаТекста.OEM);
		
		//ЗаписатьВЖурнал("Обновление ИБ", "ИмяФайлаСкрипта  "+ИмяФайлаСкрипта);
		
		Попытка
			ЗапуститьПриложение(ИмяФайлаСкрипта,,ложь);      
		Исключение
			//ЗаписатьВЖурнал("Обновление ИБ", ОписаниеОшибки(),Истина);
		КонецПопытки;
		
	
Показать
Оставьте свое сообщение