Урок 3.
"Оптимизация процесса конфигурирования".

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

В практике этот процесс очень трудоемкий, т.к. если у Вас работает десять пользователей, Вы можете столкнуться с тем, что пока одного выгоняли из базы - два других туда вошли. Кроме этого, возможно, что после того, как пользователи зайдут в базу после обновления, обнаружится ошибка в модуле и придется снова все повторить. Зная занятость наших бухгалтеров, можно быть уверенным, что  после нескольких повторов "выход-вход" можно нарваться на неприятности. Как с этим бороться? Существует несколько эффективных способов. О них мы сегодня и поговорим

Один их самых эффективных способов  - использовать в модулях конструкцию  #ЗагрузитьИзФайла <имяфайла.txt>.  Эта команда загружает модуль из текстового файла при ИНИЦИАЛИЗАЦИИ модуля.  А модуль инициализируется не при загрузке базы, а в момент обращения к нему: при открытии документа - инициализируется модуль формы документа, при проведении документа - модуль проведения, при открытии справочника - инициализируется модуль соответствующей формы списка справочника, при открытии элемента справочника -- инициализируется модуль формы элемента. Таким образом, если мы несколько раз откроем документ, то его модуль формы документа будет  несколько раз инициализирован. А если мы в промежутках между открытиями документа будем исправлять модуль, хранящийся во внешнем файле, то модуль может быть каждый раз - разный!   При этом сохранение конфигурации выполнять не требуется: в конфигурации в нужном месте стоит "#ЗагрузитьИзФайла" по этому   наш файл исправно загружается при каждой инициализации модуля. Особенность: команда "#загрузитьИзФайла"  должна располагаться в первой позиции первой строки модуля. Она не работает в середине модуля!
Полезный совет: создайте в папке базы папку "ВнешниеФайлы" и складывайте туда все загружаемые модули. Это поможет избежать путаницы. Кроме этого, обзывайте фалы осмысленно. Например "СчетФорма.txt", "СчетПров.txt", "ВыпискаФ", "ВыпискаП". Пример команды:
#ЗагрузитьИзФайла СчетФорма.txt   // обратите внимание: НЕТ НИКАКИХ КАВЫЧЕК! Файл в этом случае лежит в папке базы.
#ЗагрузитьИзФайла РабочиеФайлы\СчетЗаУслугиПр.txt //Файл "счетЗаУслуги.txt" находится в папке "РабочиеФайлы".

Важно: глобальный модуль инициализируется только один раз - при входе в систему. По этому записывать его во внешний файл нет смысла.

Еще один способ - он является более известным. Отчеты надо делать внешними. Особенно это актуально в процессе отладки. Внешний отчет создается легко: в конфигураторе меню "Файл" - "Новый". В открывшемся окне укажите "Внешний отчет". После этого работаете с ним, как  с обычным  отчетом. При сохранении надо будет указывать имя файла.  В режиме предприятия через меню "Файл" - "Открыть" - открывайте файл внешнего отчета и тестируйте его. Так же внешний отчет в режиме предприятия можно открыть с помощью обработки "Дополнительные возможности". Она должна быть у Вас в меню "Сервис", если конфигурация не очень старая.
После того, как Вы добились от отчета, чего хотели - зайдите в конфигуратор, откройте в конфигурации раздел с отчетами. Если правой клавишей щелкнуть   по любому из отчетов, то откроется меню.   Там будут "Сохранить как внешний отчет...", "Заменить на внешний отчет...", "Вставить внешний отчет...". Выберите нужный пункт и сохраните конфигурацию после этого.

И еще один совет. Все печатные формы можно так же как и модули хранить во внешних файлах. Печатные формы при этом можно будет изменять не зависимо от всей конфигурации. Как это осуществить: Когда работаете с печатной формой - используете объект "ТАБЛИЦА". Этот объект имеет метод ИсходнаяТаблица(ИмяПечатнойФормы);   В качестве имени печатной формы можно указать имя таблицы, имя общей таблицы или имя файла, где хранится таблица.  Таким образом, чтобы таблица подгружалась из внешнего файла, достаточно добавить уже существующий модуль несколько строк:

    Таб=СоздатьОбъект("Таблица");
    ИмяФайлаПечатнойФормы = КаталогИБ()+"РабочиеФайлы\ПФ_ПД-4.mxl";
    Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы)=1 Тогда
        Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы);
    конецЕсли.

В приведенном примере печатная форма хранится в папке "РабочиеФайлы" в файле "ПФ_ПД-4.mxl".  
Полезный совет: внешние печатные формы, так же как и внешние модули, удобно хранить в отдельной папке внутри папки базы.

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

При использовании внешних файлов - возникает одна проблема: архивирование базы. Эта проблема решаема. Но об этом в следующий раз.

Hosted by uCoz