Продвинутый курс. Занятие №6
Первое занятие 1-го блока продвинутого курса.
Необходимо изучить следующие главы текущего блока.
Глава 1. Базовые приемы работы в конфигураторе.
Раздел справки о параметрах запуска приложения должен подсказать нужные ключи.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте
— залогиньтесь.
— залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись —
напишите нам на e-mail поддержки.
Задание выполнено.
При решении использовались методы, описанные в задании. Для просмотра результата синтаксического контроля использовался параметр OUT. Затруднение вызвала ошибка разделения доступа к файлу при выводе результата.
Задание выполнено.
Воспользовался рекомендованными в задании методами, а также методом ПолучитьСоединенияИнформационнойБазы для определения наличия работающих пользователей. Для выгрузки ИБ и тестирования/исправления проверяется наличие любых других соединений, для синтаксического контроля только наличие соединений в режиме Designer.
Все действия выполняются с помощью ЗапуститьПриложение с нужной строкой команды. В описании ключа /IBConnectionString не сразу дочитал про кавычки :), какое-то время потратил, пытаясь понять почему не запускается. Для вывода результата использую ключ /out с указанием имени файла, из которого затем читается результат операции.
Для проверки синтаксиса запускал приложение с параметром “ДождатьсяЗавершения” = Истина, но почему-то обработка не стопалась и пыталась читать файл, когда того еще не было. Пришлось использовать цикл в котором пытаюсь прочитать файл в конструкции Попытка-Исключение до удачного чтения, после чего показываю результат на форме.
Для того чтобы выполнить тестирование/исправление и выгрузку базы сразу после ЗапуститьПриложение выполняется безусловное закрытие текущего сеанса через ЗавершитьРаботуСистемы(Ложь). Тестировал на двух разных по мощности машинах, а так же в клиент-серверном варианте – всегда успевало закрыться текущее соединение и файл выгрузки успешно создавался. Но все равно не уверен, что такой метод 100% рабочий.
Домашнее задание выполнено.
Трудности возникли при попытке выгрузки/тестировании текущей базы. Стало сразу понятно, что единственный способ это сделать – как-то завершить пользовательский сеанс и сразу же запустить конфигуратор с нужными параметрами. Но я не догадался подправить конфигурацию и использовать событие “ПриЗавершенииРаботыСистемы”, возможно, сбила с толку формулировка ДЗ “разработайте внешнюю обработку”. В любом случае, очень интересное решение, теперь буду знать о таком способе.
Задание выполнил, но не совсем полностью.
Воспользовался рекомендованными в задании методами. Конструировал строку соединения с базой данных. Программно завершаю работу текущей базы данных в том случае если есть возможность установить монопольный режим, далее передаю параметр в ЗавершитьРаботуСистемы() для перезапуска , и в дополнительные параметры передаю сконструированную строку параметров в которой так же указываю перезапуск. в конструкции параметров указываю файл в который будет производится выгрузка /OUT -NoTruncate в итоге в файл выводится информация о том что было произведенна та или иная операция но когда автоматом загружается ИБ в пользовательском режиме так и не удалось получить данные из этого файла. Но, при всем при этом, если вручную запустить обработку то содержимое файла выводится в текстовый документ на форме.
Буду смотреть решение :) .
Задание выполнено. Для меня очень полезное задание :). Пришлось помучиться с запуском приложения через параметр /IBConnectionString: нужно не только расставить кавычки, но и убрать запятую в строке соединения. Результаты работы выводил через /DumpResult.
ДЗ выполнила. Пользовалась рекомендованными методами. Данные о соединении получала через метод СтрокаСоединенияИнформационнойБазы() с дальнейшим разбором в зависимости от варианта подключения БД.
Работают ли с базой пользователи проверяю по количеству сеансов ИБ, исключая свой.
ДЗ выполнила. Пользовалась рекомендованными методами. Данные о соединении получала через метод СтрокаСоединенияИнформационнойБазы() с дальнейшим разбором в зависимости от варианта подключения БД. Работают ли с базой пользователи проверяю по количеству сеансов ИБ, исключая свой.
Задание выполнено без особых затруднений. Подобные примеры помнится рассказывались в базовом курсе
Много интересного получил решая это ДЗ, но я его так и не решил. Все что у меня хорошо получилось, это программное получение строки для запуска в командной строке операционной системы. Если мою полученную строку ввести там, то получим результат. Но из текущей открытой базы, все тоже самое не работало. Для выгрузки БД в файл .dt следует завершить все сеансы работы пользователей и мой соответственно и запустить выгрузку, но командами завершить работу системы я и еще другими я этого не добился, буду ждать Вашего решения, так как задача очень интересная.
Используем реквизиты формы Пароль, ФайлОтчета, ТекстОтчета, СтрокаЗапуска. Для реквизитов Пароль и ФайлОтчета добавим поля ввода и настроим их для ввода пароля и выбора/чтения файла. Результат выполнения действия будем сохранять в файл отчета. Для просмотра отчета добавим на форму поле текстового документа ТекстОтчета. Настроим автоматическое сохранение значения реквизита ФайлОтчета.
СтрокаЗапуска заполняется в процедуре ПриСозданииНаСервере(), имеет вид:
“DESIGNER ”
+ ?(КлиентСервер,”/S “+АдресИБ,” /F “””+ПутьИБ+””””)
+ ” /N “+ИмяПользователя()
+ ?(ЗначениеЗаполнено(Пароль),” /P ” +Пароль,””)+” ”
Адрес или путь ИБ получаем с помощью метода СтрокаСоединенияИнформационнойБазы().
Для проверки наличия работающих пользователей используем функцию ВыполнениеВозможно() :Возврат ?(ПолучитьСоединенияИнформационнойБазы().Количество()>1,ложь, истина).
В процедуре выполнения действия проверяем возможность выполнения, формируем СтрокуДействия, используя СтрокуЗапуска и соответствующие параметры и ключи, с выводом результата в файл отчета. Для выгрузки резервной копии дополнительно выводим диалог выбора каталога выгрузки. Для запуска самого действия резервного копирования и тестирования используем вызов метода ЗавершитьРаботуСистемы(истина,истина,СтрокаДействия).
Синтаксический контроль не требует монопольного режима конфигуратора, для него можно не проверять возможность выполнения и использовать вызов метода ЗапуститьПриложение(СтрокаДействия,, истина ), дополнив СтрокуДействия вызовом программы: КаталогПрограммы()+”1cv8.exe”. Отчет можно сразу вывести в текстовый документ в форме обработки.
Возник вопрос, чем различаются ЗавершитьРаботуСистемы() и ПрекратитьРаботуСистемы(), кроме параметра “ЗапрашиватьВозможность”? Также при использовании параметров “/RunEnterprise /EXECUTE внешняя обработка” файл отчета создается, но не заполняется – не успевает завершиться запись в файл?
ПрекратитьРаботуСистемы – более жесткий метод, завершается работа безусловно, даже обработчики завершения не вызываются.
>файл отчета создается, но не заполняется
Поясните, пожалуйста, эту фразу.
Если не использовать параметр /RunEnterprise, файл, указанный в /Out, заполняется сообщениями о результате работы, при использовании этого параметра действия в конфигураторе выполняются, но файл лога оказывается пустым.
Файл лога заполняются, только если возникли ошибки.
Самое интересное, что в этот файл пишутся коды ошибок, которые никак не документированы.
Даже сами разработчики не смогли ответить сходу на вопрос, что означает код ошибки “101”.
Задание выполнила. Немного помучилась с двойными кавычками в параметрах запуска. Не сразу заметила параметр Out для сохранения служебных сообщений.
Готово! Только я вместо ЗапуститьПриложение() использовал ЗапуститьСистему(). В этом случае нам не нужно определять вариант (файловый или клиент-серверный). Поэтому метод СтрокаСоединенияИнформационнойБазы() и парсинг получившейся строки не нужны.