Продвинутый курс. Домашнее задание №6

Новое задание по 1-му блоку продвинутого курса.

Для выполнения рекомендуется изучить следующие главы 1-го курса.
Глава 1. Базовые приемы работы в конфигураторе.
Раздел справки о параметрах запуска приложения должен подсказать нужные ключи.

В этой же теме необходимо написать отчет о выполнении задания.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.

комментариев 79 на “Продвинутый курс. Домашнее задание №6”

  1. Филимонов Юрий 30.11.2010 в 08:28

    Задание выполнил, все оказалось очень просто.
    Ключи запуска конфигуратора очень подробно описаны в справке.

    Проверку наличия других пользователей сделал временной установкой монопольного режима.

  2. ДЗ 6 выполнил. Особых проблем не возникло. Вызывается 1cv8  с ключом designer и ключами из раздела справки о ключах в пакетном режиме. Информация о результате вызова выводится в файл при помощи ключа out

  3. Готово.

  4. ДЗ выполнено.

  5. Сергей Калмыков 29.11.2010 в 18:35

    Задание выполнил для файлового варианта базы. Пришлось еще раз почитать справку по пакетному запуску конфигуратора. Ключи запуска копировал прямо из справки.

  6. Задание выполнено. Проблем не возникло.
    Синтаксический контроль: ЗапуститьПриложение(“C:\Program Files\1cv82\common\1cestart.exe DESIGNER /F”””+Путь+””” /N”””+Пользователь+””” /P”””+Пароль+””” /CheckModules -ThinClient /Outd:\8.2\dz6.txt”)
    Выгрузка базы: ЗапуститьПриложение(“C:\Program Files\1cv82\common\1cestart.exe DESIGNER /F”””+Путь+””” /N”””+Пользователь+””” /P”””+Пароль+””” /DumpIB D:\8.2\dz6.dt”)
    Тестирование базы: ЗапуститьПриложение(“C:\Program Files\1cv82\common\1cestart.exe DESIGNER /F”””+Путь+””” /N”””+Пользователь+””” /P”””+Пароль+””” /IBCheckAndRepair -ReIndex -LogIntegrity -RecalcTotals /Outd:\8.2\dz62.txt”)

  7. Ну тут уже все написали… Можно сказать, что выехал на чужом опыте…

  8. Андрей Антипенко 29.11.2010 в 11:42

    Задание выполнил, ожидал где-то “подводного” камня.. но все обошлось:-)

  9. Игорь Серков 29.11.2010 в 09:30

    Задание выполнил. Не думал, что существует столько ключей.

  10. Выполнено.

  11. Выполнено

  12. spec20091c 28.11.2010 в 12:37

    Задание выполнил. Сложностей не возникло, за исключением
    правильной расстановки кавычек и слэшей при формировании командных строк.
    В качестве справки по ключам использовал синтакс-пормощник.

    1. Синтаксический контроль выполнется без проверки количества сеансов.

    «C:\Program Files\1cv82\common\1cestart.exe» DESIGNER
    /FC:\Базы\Задание6 /N Администратор /CheckModules -ThinClient
    -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication
    /Out c:\Базы\Файлы\syntaxКоntrol.txt

    Результаты записываются в текстовый файл.

    2. Создание резервной копии.
    Анализируется результат выполнения функции ПолучитьСоединенияИнформационнойБазы() и если
    количество соединений больше одного вылетает сообщение о невозможности выгрузки ИБ,
    иначе выполняется выгрузка.

    «C:\Program Files\1cv82\common\1cestart.exe DESIGNER
    /FC:\Базы\Задание6 /NАдминистратор /DumpIB c:\Базы\1cBaza.dt /out c:\Базы\Файлы\dump.txt

    3. Тестирование и исправление ИБ.
    Аналогично 2-му пункту.

    «C:\Program Files\1cv82\common\1cestart.exe» DESIGNER
    /FC:\Базы\Задание6 /NАдминистратор /IBCheckAndRepair -ReIndex
    -LogAndRefsIntegrity -BadRefCreate -BadDataCreate /Out c:\Базы\Файлы\Test.txt

  13. Шумаев Алексей 28.11.2010 в 02:28

    Задание выполнено. С выполнением поставленной задачи вопросов не возникло.
    Формирую строку запуска конфигуратора из 3 частей:
    1.КаталогПрограммы() + “1cv8.exe DESIGNER /IBConnectionString ” + СтрокаСоединения + “/N” + ТекущийПользователь()
    2.Далее в зависимости от выполняемой задачи (CheckModules, DumpIB, IBCheckAndRepair) с параметрами…
    3. Сохранение результата  в файл (/Out)
    Далее выполняется команда системы и завершается текущий сеанс.
    Хотел добавить еще действие в параметры запуска конфигуратора, чтобы после выполнения автоматически запускалось приложение и открывался лог-файл. Делал с помощью параметра “/RunEnterprise”… Не получилось… Все время повторно запускается конфигуратор…

  14. Задание выполнено.
    На форме присутствуют поля для ввода пользователя и пароля, от которого будет идти запуск приложения, а также пути к файлам.
    Нужные ключи берем из синтакс-помощника.
    Пункт 1:
    Не важно работают ли пользователи, выполняем без проверки. Пишем в текстовый файл результаты. Читаем текстовый файл.
    Пункт 2:
    С помощью функции ПолучитьСоединенияИнформационнойБазы() проверяем количество сеансов, если больше одного (текущего) сообщаем о невозможности обновления. Иначе запускаем выгрузку и закрываем себя – ЗавершитьРаботуСистемы(Ложь, Истина)
    Пункт 3:
    Тоже самое, что и во втором пункте. Пишем в текстовый файл результаты тестирования и исправления.

  15. Задание выполнил, сложностей не возникло.

  16. Леонид 26.11.2010 в 18:17

    ДЗ выполнил.
    Предусмотрен вариант работы как с текущей базой, так и с другими базами. Все сделано при помощи строки параметров запуска, которая формируется в зависимости от реквизитов установленных в форме.
    Особых проблем не возникло.

  17. Задание выполнил.
    1. Вначале сделал обработку где пользователь прописывает путь к базе данных для файлового варианта и кнопки с соответствующими командами и с необходимыми параметрами командной строки. Вывод идет в файл (/Out имя файла). Количество пользователей проверяю подключившись к данной базе по СОМ и использую ПолучитьСоединенияИнформационнойБазы().Количество().
    2. Второй вариант сделал для текущей базе путь к базе вытащил из СтрокаСоединенияИнформационнойБазы() и после ЗапуститьПриложение() делаю ЗавершитьРаботуСистемы.
    3. Клиент-серверный вариант не делал, но проблем думаю не будет, нужно только использовать не параметр File, а другие типа Srvr,Ref.

  18. Задание выполнил. Тема знакома, никаких сложностей не возникло. Правда пришлось поднять материалы МГ базового курса + еще раз пересмотреть вторую редакцию по работе с формами.  К сожалению, констатирую тот факт, в среднем, на данный момент мне нужно времени в раз 5 больше, чтобы решить какую-то задачку на управляемой форме, нежели на обычной. Надеюсь, опыт свое возьмет :)

  19. ДЗ №6. Внешняя обработка «Утилита администрирования». Возможность выбора файловой или серверной базы. 3 опции: выгрузка базы, тестирование и исправление и синтаксический контроль.
     
    Перед выполнением операции проверяется, работают ли пользователи с выбранной базой (с помощью процедуры СтрокаСоединенияИнформационнойБазы() с использованием COMObject(“V82.Application”)), если кто-то работает, то выдается сообщение о невозможности выполнения операции.
     
    Пример командной строки для выгрузки базы:
     
    “C:\Program Files\1cv82\common\1cestart.exe DESIGNER /FC:\1c\Риб1 /Nадминистратор /DumpIB c:\1c82.dt /out c:\dump.txt
     
    Пример командной строки для тестирования и исправления базы:
     
    “C:\Program Files\1cv82\common\1cestart.exe” DESIGNER /FC:\1c\Риб1 /Nадминистратор /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -BadRefCreate -BadDataCreate /Out c:\check.txt
     
    Пример командной строки для синтаксического контроля базы:
     
    “C:\Program Files\1cv82\common\1cestart.exe” DESIGNER /FC:\1c\Риб1 /Nадминистратор /CheckModules -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication /Out c:\syntax.txt

    • «C:\Program Files\1cv82\common\1cestart.exe DESIGNER /FC:\1c\Риб1 /Nадминистратор /DumpIB c:\1c82.dt /out c:\dump.txt
      Платформа в ошибку валится при выполнении данной команды у меня :)

  20. ДЗ № 6 выполнила.
    Создала внешнюю обработку.
    Считаю, что нельзя допускать одновременного запуска регламентных операций, поэтому сделала отдельные кнопки на форме для запуска. Разработкой  красивого интерфейса не занималась, не в этом суть задания.
    Для определения вида ИБ и путей к базе использую метод СтрокаСоединенияИнформационнойБазы().
    Выгрузку делаю той базы, из которой производится запуск обработки. Чтобы закрыть пользовательский режим нужно после вызова процедуры ЗапуститьПриложение выполнить закрытие текущего сеанса с помощью процедуры ЗавершитьРаботуСистемы(Ложь). У меня во всех случаях пользовательский сеанс успевал закрыться до запуска выгрузки.
    Проверила обработку в файловом и клиент-серверном вариантах базы. Все работает.

  21. Александр Горлов 25.11.2010 в 07:49

    Может быть я не совсем понял. Тут все активно используют метод СтрокаСоединенияИнформационнойБазы(). В ДЗ предусматривалась ведь возможность произвести указанные действия с любой информационной базой, а не только с текущей?

    • Через COM можно обратиться этим методом и другой ИБ.

  22. Александр Горлов 25.11.2010 в 07:37

    В общем, задание выполнено.
    Результат представлен скриншотом.
    Конечно же, можно улучшать инструмент, например, пользователей выбирать из выпадающего списка, а не вводить вручную.
    В окно сообщений выводится содержимое текстового файла лога, куда перенаправлен при вызове вывод сообщений.
    Столкнулся со следующей проблемой: совместное использование ключей не работает. Так, при установке “Синтаксический контроль” + “Выгрузка”, срабатывает только выгрузка (в лог сведения о выполнении синтакс-контроля не выводятся), а “Выгрузка” + “ТиИ” отрабатывает опять только последнее (файл выгрузки не создается). Приходится вызывать конфигуратор несколько раз отдельно. Есть ли другой выход? Или ключи действий всегда имеют приоритет и не выполняются последовательно за один вызов?

  23. Добрый вечер!
    Задание выполнено.
    1. Сделал обработку с каталогом результата, списком выбора возможных действий и текстом команды запуска.
    2. При изменении типа действия меняется текст команды
    3. Количество рабочих пользователей определяю как ПолучитьСеансыИнформационнойБазы().Количество()
    4. Сами операции логично реализовать не через ЗапуститьПриложение, а через ЗавершитьРаботуСистемы, установку 2 параметра в истину, а в третьем переопределить строку запуска, что я и сделал. Но так как в задании написано сделать через ЗапуститьПриложение то сделал для учебных целей еще и так, хотя первый вариант намного симпатичнее.
    5. Поймал небольшой глюк – при использовании ЗавершитьРаботуСистемы при создании лог-файла (/Out) вылетает ошибка совместного доступа к данному файлу, но файл при этом создается правильный.  Правда, релиз у меня не последний, возможно в самых актуальных этого нет.

  24. Выполнил. Главное в задании – внимательность к ковычкам и слешам ))

    • Александр Горлов 25.11.2010 в 07:30

      И не говорите! А еще к пробелам – особенно между ключем и значением этого ключа…

  25. Моя обработка работает только, если указать другую базу. Я думаю – это логичное поведение. При указании другой базы все процедуры отрабатывают корректно – создается файл dt и файлы txt. При попытке вызова обработки из проверяемой-выгружаемой-тестируемой базы получается следующее. Проверка синтаксиса отрабатывает, файл txt формируется. Выгрузка не работает, файл dt не формируется, в текстовом файле – “Ошибка исключительной блокировки информационной базы”. Это естественно – ведь мой сеанс активен. При тестировании – аналогично -” Не удалось переключить доступ в монопольный режим Имеются работающие пользователи. ”
    Если переключаюсь  ПриСозданииНаСервере в монопольный режим – другие ошибки. “Ошибка разделенной блокировки информационной базы”

    • Исправила,  доделала. Теперь можно выбирать базу и работать с ней. Вечно тороплюсь

  26. ДЗ выполнено: через ПолучитьСеансыИнформационнойБазы() проверяю наличие других пользователей + пакетный запуск с ключами

    • Александр Горлов 25.11.2010 в 07:40

      А у Вас получилось выгрузить текущую базу, из которой обработка запускается?

      • Естественно, что базу приходится закрывать перед этим…

  27. Коллеги, у меня вопрос : Как организовали выдачу результата ? В условии задания стоит “с выдачей результата”. У меня операции выполняются, но выдачу результата реализовать не смог. Я так понимаю имеется ввиду служебные сообщения которые выдаются при ТИИ :
    Объект изменен: ПланВидовХарактеристик.ВидыСубконто
    Объект изменен: ПланОбмена.УниверсальныйОбмен
    Объект изменен: ПланОбмена.РИБ
    Принятие изменений…
    Тестирование закончено

    При Синтаксическом контроле:
    Синтаксических ошибок не обнаружено!
     
    В выполнение задания помогла встроенная справка: Параметры командной строки в пакетном режиме запуска конфигуратора. Предварительно устанавливаю монопольный режим, затем выполняю операции ТИИ, Синтаксис, Выгрузки информационной базы.
     

    • Александр Горлов 25.11.2010 в 07:43

      Запуск с ключем /Out и файлом лога на диске, который после отработки затем выводить при помощи Сообщить().
      Только придется заставить процедуру ЗапуститьПриложение() ждать окончания операции, т.к. по умолчанию управление передается дальше без ожидания…

  28. выполнено, в файловом варианте. особых проблем, на которых следует остановится не было.

    • Александр Горлов 25.11.2010 в 07:43

      А у Вас получилось выгрузить текущую базу, из которой обработка запускается?

  29. Алексей Иванов 24.11.2010 в 16:44

    Задание выполнил.
    Использовал рекомендуемую процедуру ЗапуститьПриложение().
    Строку запуска получал функцией СтрокаСоединенияИнформационнойБазы().
    Вывел на форму реквизит для указания пути к каталогу, в который выгружаются файл dt и текстовый файл с результатами проверки.
    После запуска конфигуратора процедурой ЗапуститьПриложение() работу 1С в пользовательском режиме завершаю.
    Ключи запуска конфигуратора взял из справки конфигуратора.

    • Александр Горлов 25.11.2010 в 07:46

      После запуска конфигуратора процедурой ЗапуститьПриложение() работу 1С в пользовательском режиме завершаю.
      А если пользовательский режим не успеет закрыться до начала выгрузки конфигуратором?

  30. progr-2008 24.11.2010 в 16:38

    Сделала.
    Только для файлового – сервера нет.
    Использовала справку для ключей.
    Долго составляла правильные пути из СтрокаСоединенияИнформационнойБазы() в части кавычек и пробелов через Лев, Прав, СтрДлина, СтрЗаменить.

  31. Илья Чернов 24.11.2010 в 13:58

    Выполнено.
    Дольше всего возился с кавычками…

  32. Задание выполнил используя ключи пакетного запуска.
    http://i009.radikal.ru/1011/65/ff149f4e5144.jpg

    Вопросы:
    1) Когда выдается сообщение о блокировке базы, дальше то что делать? Точнее чтобы выполнить Дамп или Тестирование и Исправление надо заходить в другую базу и от туда запускать Обработку, но тогда не понятно зачем проверять СтрокаСоединенияИнформационнойБазы() мы то уже в другой базе…
    2) Возможно это было где то в ответах мастер-группы, почему сохраняя внешнюю обработку в папке, при повторном закрытии и открытии, все равно открывается старая обработка, помогает перезапуск тонкого клиента.

  33. elitekGAVA 24.11.2010 в 08:01

    Выполнено.

  34. ДЗ выполнено.
    Проверил работу только в файловом варианте, все пункты выполняются.

  35. Кудрявцев Олег 23.11.2010 в 20:38

    Задание выполнил.
    Файловая или серверная база – определял с помощью поиска в строке, возвращаемой процедурой СтрокаСоединенияИнформационнойБазы().
    Далее пытался установить монопольный режим. Если попытка удавалась, значит других пользователей нет (другого способа не вспомнил).
    Попытка
    УстановитьМонопольныйРежим(Истина);
    Исключение
    Сообщить(“Невозможно установить монопольный режим. Работают другие пользователи”);
    Возврат Ложь;
    КонецПопытки;
    Возврат Истина;
    Ключи запуска конфигуратора – в справке. Интересное задание.
     

  36. В процедуре ПриСозданииНаСервере проверяю, если   ПолучитьСеансыИнформационнойБазы().Количество() больше 1, тогда не запускаем обработку.
    Далее 3 кнопки: приведу код одной, например для синтаксического контроля:
    <code>&НаКлиенте
    Процедура СинтаксическийКонтроль(Команда)
     ИмяФайла = “E:\Books\1c\ВидеоУроки\ДЗ\Продвинутый\6\Sintax.txt”;
     ЗапуститьПриложение(“C:\Program Files\1cv82\common\1cestart.exe DESIGNER /IBConnectionString “””+СтрокаСоединенияИнформационнойБазы()+
          “”” /N “”Администратор”” /CheckModules -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication /Out “””+
          ИмяФайла+””””);
    КонецПроцедуры
    </code>
    Единственная проблема, что открывается окно запуска баз и там нужно нажать кнопку Конфигуратор. Возможно нужно использовать другое приложение, а не 1cestart.exe.

    • Это значит, что авторизация не проходит…или путь к базе не верен. СтрокаСоединенияИнфБазы() возвращает строку, которую нужно обработать перед помещением её в команндную строку для запуска. Как минимум там в конце стоит лишняя “;” и Вместо “File=” я оставлял просто “F”. Посмотрите мой пост

  37. Задание выполнено
    Проверяю, работают ли пользователи, если нет – то кнопки выполнения регламентных действий на форме доступны
    После выбора каталога  запуск конфигуратора с ключами – помогла справка
    Параметры командной строки в пакетном режиме запуска конфигуратора

  38. Правильно ли я понял, что для решения ДЗ необходимо изучить данную главу:

    Глава 1. Приемы работы в конфигураторе.
    – Использование буфера обмена при работе в конфигураторе.
    – Проектирование базы данных.
    – Виды связей между таблицами.
    –  Применение связи «Один-ко-многим».
    –  Реализация связи «Многие-ко-многим».
    –  Связь «Один-к-одному».
    Если да, то как то невяжется с ДЗ.  Если нет то укажите материал для изучения.
    За ранее извиняюсь если просто ступил.

    • Напрямую глава 1 не относится к выполнению ДЗ, но изучить ее нужно в любом случае.
      Сделал указание на дополнительный материал.

  39. Хотя даже если НЕ делать проверку на наличие активных подключений, то вся информация будет содержаться в файле логов.

  40. Начало ДЗ звучит как-то странно :)
    Компания планирует вести независимый управленческий и регламентированный учет. С
    целью
    Разработайте внешнюю обработку “Утилита администрирования”.

    • Жесть :))
      Исправлено, Сергей.

      • Задание выполнено.
        Первоначально определяю, работают ли другие пользователи. Если нет, то разрешаю выполнть регламентные операции.
        При открытии формы определяю СтрокуСоединенияСИБ и устанавливаю флаг – файловая-ли база
        СтрокаСоединенияИБ = СтрокаСоединенияИнформационнойБазы();
        Если Найти(СтрокаСоединенияИБ,”File”) тогда
        ФайловаяБаза = Истина;
        Иначе
        ФайловаяБаза = Ложь;
        КонецЕсли;
        Далее делаю три команды (тестировал только на файле – нет возможности пока развернуть сервер, но логика такая же)
         
        Например для архивирования
        Процедура СоздатьАрхивнуюКопию(Команда)
        Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
        ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(Режим);
        Если ДиалогВыбораКаталога.Выбрать() Тогда
        Каталог = ДиалогВыбораКаталога.Каталог;
        Если ФайловаяБаза тогда
        ЗапуститьПриложение(“””C:\Program Files\1cv82\common\1cestart.exe””” + ” CONFIG /” + СтрЗаменить(Лев(СтрокаСоединенияИБ,СтрДлина(СтрокаСоединенияИБ)-1),”ile=”,””) + ” /N” + “””Администратор””” + ” /DumpIB” + “””” + Каталог + “\1c.dt””” + ” /OUT” + “””” + Каталог + “\LOG.txt””” );
        Иначе
        //Запуск для серверной базы
        КонецЕсли;
        ЗавершитьРаботуСистемы(Ложь, Ложь);
        Иначе
        Сообщить(“Не выбран каталог”);
        КонецЕсли;

        Естественно с проверкой, а не работает ли кто-то…
        Ну и аналогично для Синтаксиса и ТиИ
        Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
        ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(Режим);
        Если ДиалогВыбораКаталога.Выбрать() Тогда
        Каталог = ДиалогВыбораКаталога.Каталог;

        Если ФайловаяБаза тогда
        ЗапуститьПриложение(“””C:\Program Files\1cv82\common\1cestart.exe””” + ” CONFIG /” + СтрЗаменить(Лев(СтрокаСоединенияИБ,СтрДлина(СтрокаСоединенияИБ)-1),”ile=”,””) + ” /N” + “””Администратор””” + ” /CheckModules” + ” /OUT” + “””” + Каталог + “\Sin.txt””” );
        Иначе
        //Запуск для серверной базы
        КонецЕсли;
        Иначе
        Сообщить(“Не выбран каталог”);
        КонецЕсли;
         
         
        Ключи для ТиИ
        /IBCheckAndRepair [-ReIndex]
        [-LogIntergrity] [-RecalcTotals]
        [-IBCompression]
        [-TestOnly | [-BadRefCreate |
        -BadRefClear | -BadRefNone]
        [-BadDataCreate |
        -BadDataDelete] ]

         
         
         

      • И еще…не совсем понятно. Рекомендовано перед ДЗ посмотреть первую главу. Может я не очень внимательно смотрел, каюсь, но там нет информации, достаточной для выполнения ДЗ?! Если бы я НЕ настраивал выгрузку ИБ через командную строку ранее, то даже определить где искать было бы затруднительно.

        • Главу это изучить нужно, хоть она и не сильно поможет в решении.
          А чем дополнительно можно воспользоваться написал в записи :)