Наряду с типами данных, которые определены на уровне платформы, конкретное прикладное решение может использовать уникальные типы данных, существующие только в этом конкретном прикладном решении. Причем технологическая платформа 1С:Предприятия 8.0 будет полностью поддерживать работу с этими типами данных точно так же, как и с типами, которые определены на уровне самой платформы.
Как правило, появление новых типов данных в прикладном решении связано с использованием прикладных объектов. На уровне технологической платформы поддерживается несколько классов прикладных объектов, которые сами по себе не могут быть использованы в конкретном прикладном решении. Например, можно перечислить такие классы прикладных объектов как Справочники, Документы, Регистры сведений, Планы видов характеристик и пр.
Для каждого класса прикладных объектов определена соответствующая ему базовая функциональность: типы таблиц базы данных, которые должны быть созданы для хранения данных, типовые формы, типовые объекты языка, наборы прав и пр.
Разработчик, создавая прикладное решение, не имеет возможности использовать эти классы напрямую, однако может добавить в свое прикладное решение новый объект конфигурации, наследующий всю функциональность того или иного класса.
Например, разработчик может добавить в свое прикладное решение новый справочник Номенклатура, который будет наследовать функциональность класса Справочники, или новый документ КассовыйОтчет, который будет наследовать функциональность класса Документы.
Сразу же после такого добавления разработчику становятся доступны новые типы данных, состав которых определяется принадлежностью объекта к тому или иному классу прикладных объектов.
Например, после создания нового справочника Номенклатура, становятся доступны следующие типы данных:
- СправочникМенеджер.Номенклатура;
- СправочникСсылка.Номенклатура;
- СправочникОбъект.Номенклатура;
- СправочникВыборка.Номенклатура;
- СправочникСписок.Номенклатура.
Еще один момент, на котором следует акцентировать внимание, проще всего продемонстрировать на примере.
Допустим, в прикладном решении созданы два новых справочника: Номенклатура и Цены. Несмотря на то, что оба эти объекта унаследовали функциональность соответствующего класса Справочники, и для них в прикладном решении был создан один и тот же состав типов данных, одноименные типы данных будут являться различными типами данных. Например, СправочникОбъект.Номенклатура и СправочникОбъект.Цены - это различные типы данных.
Так происходит потому, что разработчик может дополнительно к базовой функциональности, унаследованной от соответствующего класса, добавить свою, особенную для каждого объекта конфигурации. Например, оба упомянутых выше справочника могут содержать табличные части (это унаследовано от класса Справочники). Однако для справочника Цены разработчик не создаст ни одной табличной части, в то время как для справочника Номенклатура он создаст, например, три табличные части. Очевидно, что структура хранения данных типа СправочникОбъект.Номенклатура будет значительно отличаться от структуры хранения данных типа СправочникОбъект.Цены.
Для работы с такими типами данных (классами прикладных объектов) в системе реализована единая схема работы через объекты ":Менеджер". Объекты типа КонстантыМенеджер, СправочникиМенеджер, ДокументыМенеджер, ОбработкиМенеджер и аналогичные им предназначены для обращения к коллекции значений соответствующих менеджеров объектов конфигурации. Свойствами этих объектов являются другие объекты типа КонстантаМенеджер, СправочникМенеджер, ДокументМенеджер, которые, в свою очередь, предоставляют доступ к конкретным объектам (справочник, документ, константа).
Например:
СправочникиМенеджер - объект, обеспечивает доступ к менеджерам всех справочников конфигурации.
ВсеСправочники=Справочники; //в данном случае тип переменной ВсеСправочники будет СправочникиМенеджер.
"Справочники" - это свойство глобального контекста, с помощью которого идет обращение к менеджеру справочников конфигурации.
СправочникМенеджер.<имя> - объект, обеспечивает доступ к конкретному справочнику конфигурации.
СправочникКлиенты=Справочники.Клиенты; //тип переменной СправочникКлиенты будет СправочникМенеджер.
СправочникОбъект.<имя> - объект, обеспечивает доступ к конкретному элементу справочника, его свойствам и методам.
ЭлементСКодом1 = Справочники.Клиенты.НайтиПоКоду(1).ПолучитьОбъект(); //тип переменной ЭлементСКодом1 будет СправочникОбъект.
СправочникСписок.<Имя> - объект, предназначен для управления списком элементов справочника, отображаемых в табличном поле. Данный объект используется для визуального представления списка справочника.
Такая схема обращения является единой для всех объектов конфигурации.
Для выбора множества объектов используются объекты типа "СправочникВыборка", "ДокументВыборка" и т.д.
ВыборкаСправочника = Справочники.Клиенты.Выбрать(); //тип переменной ВыборкаСправочника будет СправочникВыборка.
Для объекта "КонстантыМенеджер" в системе предусмотрен метод СоздатьНабор() с возвращаемым значением типа "КонстантыНабор". Объект "КонстантыНабор" предназначен для управления набором указанных в параметрах метода СоздатьНабор() констант. Используя данный объект, можно прочитать и записать в одной транзакции значения для выбранных констант.
Набор = Константы.СоздатьНабор("Руководитель, ИНН");
Набор.Прочитать();
Набор.Руководитель = "Иванов И.И.";
Набор.ИНН = "1234567890";
Набор.Записать();
Для объектов "РегистрСведенийМенеджер", "РегистрНакопленияМенеджер", "РегистрБухгалтерииМенеджер", "РегистрРасчетаМенеджер" предусмотрен метод СоздатьНаборЗаписей() с возвращаемыми значениями РегистрСведенийНаборЗаписей, РегистрНакопленияНаборЗаписей и т.д.
К свойствам, реквизитам и методам описанных выше объектов обращаемся через точку. Например:
Код = Справочники.Контрагенты.НайтиПоКоду(1).Код;
//в данном примере мы обратились к методу справочника "НайтиПоКоду()"
//и к реквизиту элемента справочника "Код".
Рассмотрим подробнее работу с набором записей регистра сведений. Основная задача регистра сведений - хранить информацию, которая развернута по определенной комбинации измерений и, при необходимости, по времени. Из принципов работы регистра сведений вытекает то, что в системе может быть только одна запись с определенным набором и периодом измерений. Уникальность записей по набору измерений принципиально отличает регистры сведений от регистров накоплений, которые позволяют вводить несколько записей с одинаковым значением измерений и периодом. Строки регистра сведений, содержащие информацию о значениях ресурсов для определенных значений измерений, конкретного периода, регистратора, называются записями. Для считывания и занесения набора записей в базу данных служит объект "РегистрСведенийНаборЗаписей".
Некоторые методы объекта "РегистрСведенийНаборЗаписей":
- Добавить() - добавляет новую запись в набор.
- Количество() - получает количество записей в наборе.
- Прочитать() - считывает записи из базы данных по установленному отбору.
- Удалить() - удаляет запись из набора записей регистра сведений.
- Записать(<замещать>) - записывает набор записей в базу данных. В зависимости от переданного параметра, может быть выполнено добавление записей или их замещение. Если для регистра сведений, подчиненного регистратору, выполняется добавление записей, то после выполнения записи набор очищается. Для регистров сведений, у которого в конфигураторе установлен режим записи "Подчинение регистратору", при записи значение регистратора всегда устанавливается той ссылкой, по которой был установлен отбор этого набора записей, независимо от того, что было назначено в процессе работы с набором
Следует отметить, что если вызвать метод "Записать" с параметром Истина для набора записей регистра сведений, у которого независимый режим записи, не установив перед этим отбор, то все записи регистра сведений будут удалены и замещены на те записи, которые мы добавили в набор. Записать набор записей регистра сведений, у которого режим записи "Подчинение регистратору", не установив предварительно отбор нельзя, и в данном случае возникнет ошибка.
Для работы с классами прикладных объектов в системе также предусмотрены предопределенные процедуры-обработчики, которые автоматически выполняются при наступлении различных событий. Например, процедуры: "ПриЗаписи", "ПередЗаписью", "ПриУдалении", "ОбработкаПроведения" и др. Такие процедуры располагаются в модулях объектов. При этом следует отметить, что такие предопределенные процедуры-обработчики вызываются на выполнение независимо от того, как было вызвано указанное событие, программно или интерактивно.
При выполнении некоторых предопределенных процедур, например, "ОбработкаПроведения", выполняется неявная транзакция. Для отменынеявной транзакции используется выражение:
Отказ = Истина;
Где Отказ - это параметр предопределенной процедуры
Задание 4
В документе "Приказ об изменении цен" создайте в процедуре "ОбработкаПроведения" движения по регистру сведений "ЦеныРеализации".
Отладчик
Отладчик - вспомогательный инструмент, облегчающий разработку программных модулей системы 1С:Предприятие 8.0. Отладчик предоставляет следующие возможности:
- Пошаговое выполнение модуля;
- Расстановка точек останова;
- Прерывание и продолжение выполнения модуля;
- Возможность отладки нескольких модулей одновременно;
- Вычисление выражений для анализа состояния переменных;
- Просмотр стека вызовов процедур и функций;
- Возможность остановки по возникновению ошибки;
- Возможность редактирования модуля в процессе отладки;
- Замер производительности.
Отладчик является встроенным в конфигуратор инструментом. Для его использования необходимо, чтобы одновременно с конфигуратором была запущена отлаживаемая конфигурация в режиме "1С:Предприятие". Последовательность запуска программ не имеет значения.
Процесс отладки заключается в последовательном выполнении следующих действий:
- Запустите конфигуратор и откройте модуль, предназначенный для отладки;
- Расставьте в требуемых строках модуля точки останова;
- Запустите режим "1С:Предприятие" для выбранной конфигурации, если режим уже был запущен, то выполните команду "Отладка - Подключиться";
- Выполните действия, которые вызовут исполнение отлаживаемого модуля (например, проведите документ);
- Проведите пошаговое выполнение нужного вам фрагмента модуля.
Если конфигурация запущена в режиме 1С: Предприятие, то необходимо в конфигураторе выбрать пункт "Отладка - Подключиться". На экран выводится окно для выбора процесса. Обычно список содержит одну строку с указанием на запущенную в режиме 1С: Предприятие конфигурацию. Если запущено несколько приложений 1С:Предприятие с данной конфигурацией, то список может содержать несколько строк. Выбор процесса указывает Отладчику, какой процесс будет отлаживаться.
Для отладки модуля внешней обработки необходимо открыть файл внешней обработки в Конфигураторе, воспользовавшись пунктом "Файл - Открыть". В дальнейшем с модулем внешней обработки в Отладчике можно работать так же, как и с любым другим модулем.
Отладчик позволяет установить на конкретную строку модуля специальный маркер - точку останова, - при достижении которой исполнение программного модуля останавливается и управление передается отладчику. Точку останова можно установить в любой строке модуля, в любой момент работы с Отладчиком. В случае, если строка, на которой устанавливается точка останова, не содержит операторов (например, пустая строка), содержит неисполняемый текст (например, заголовок процедуры или функции, определение переменных) или является продолжением оператора, начатого на предыдущих строках, положение точки останова будут автоматически скорректировано.
Для управления точками останова используются команды меню "Отладка" или команды из контекстного меню, вызываемого из строки.
Точки останова могут быть безусловными или с условием. При достижении безусловной точки останова исполнение программного модуля останавливается в любом случае.
При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно:
Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает.
При большом количестве точек останова удобно использовать отдельное окно для работы с точками останова, позволяющее просматривать и редактировать их в едином списке:
После того, как при достижении точки останова управление прикладным решением передано отладчику, существует возможность дальнейшего исполнения модуля в нескольких режимах: пошаговое выполнения, исполнение вызова функции или процедуры, прерывание пошагового исполнения функции или процедуры, выполнения модуля до той строки, на которой стоит курсор или продолжение свободного выполнения модуля:
С помощью табло и диалога "Выражение" можно получить значения интересующих выражений. Стек вызовов позволяет проследить последовательность вызова процедур и функций.
В случае, если не хотим продолжить пошаговое выполнение модуля дальше, с помощью команды "Отладка - Продолжить отладку" разрешим системе 1С:Предприятие 8.0 свободное выполнение модуля (до следующей точки останова).
В случае, если требуется прервать процесс отладки в целом, снимите все точки останова со всех модулей и выполните команду "Отладка - Продолжить", если в данный момент сработала точка останова. Если необходимо прервать отладку только данного модуля, воспользуйтесь командой "Отладка - Прекратить".
Установленные точки останова запоминаются при закрытии конфигурации. Если снова открыть конфигурацию, то посмотреть список точек останова можно с помощью диалога "Точки остановки", вызываемого пунктом меню "Отладка - Список точек останова".
В процессе отладки допускается редактирование текущей конфигурации и сохранение изменений.
Внимание! Хотя в процессе отладки возможно редактирование отлаживаемого модуля, Отладчик не производит компилирование измененного кода - продолжается отладка кода конфигурации базы данных (на момент запуска отладчика или подключения). Для отладки изменений потребуется завершить работу в режиме "1С:Предприятие", сохранить изменения, обновить конфигурацию базы данных и повторно запустить Отладчик.
Режим замера производительности позволяет разработчику оценивать скорость работы как всей конфигурации в целом, так и отдельной ее части. В этом режиме измеряется частота использования конкретных участков кода и скорость их выполнения. Подобный анализ помогает выбирать наиболее оптимальный способ программной реализации алгоритмов работы системы, а также определять пути для повышения быстродействия прикладного решения.
Результат замера производительности представляет собой список ссылок на конкретные строки модуля, с указанием частоты их выполнения и длительности (абсолютного времени выполнения и относительного, в процентах от общего времени выполнения замеряемого участка):
Результаты замера можно видеть также непосредственно в окне с исходным текстом модуля. Щелчком мыши на выбранной строке списка можно перейти к тексту модуля, для которого на отдельном поле будет отображено количество вызовов и относительное время выполнения каждой строки:
Результаты замера могут быть отсортированы по любой из колонок, например, по количеству вызовов строки. Кроме этого, режим замера производительности позволяет производить выборочное суммирование строк замера, для получения суммарных характеристик выполнения некоторых строк.
Дополнительной возможностью является включение в замер или исключение из замера времени выполнения вызываемых процедур и функций. Использование этой возможности позволяет получать картину замера, максимально приближенную к реальной, в случае, когда из замеряемого модуля вызываются внешние по отношению к нему, процедуры.
Разработчик может сохранить результаты замера в файл для последующего анализа и сравнения с результатами других замеров.
Сервисные функции
Синтакс - помощник
"Синтакс - Помощник" - средство, облегчающее разработку модулей. Основная задача "Синтакс - Помощника" - предоставить специалисту, выполняющему конфигурирование системы 1С:Предприятие 8.0, оперативную подсказку по встроенному языку. Для вызова "Синтакс - Помощника" в режиме "Конфигуратор" служит пункт "Справка - Синтакс - Помощник".
Синтакс-Помощник состоит из содержания, индекса, справочной информации. Содержание представляет структуру справочной информации в виде дерева и предназначено для быстрого перехода к нужной теме справки.
Индекс содержит список ключевых слов справки и используется для поиска по справочной информации.
Справочная информация отображает собственно страницу с информацией по выбранной теме/режиму приложения. Информация может быть представлена на английском и русском языках. Возможен поиск по подстроке и перетаскивание готовых синтаксических конструкций в модуль. Комбинация клавиш для вызова Синтакс-Помощника - Ctrl+Shift+F1.
Подсказку по конкретному элементу языка (оператору, процедуре, функции, свойству, методу) можно получить, если поместить курсор в модуле на этот элемент языка и нажать клавиши Ctrl+F1. В Синтакс - Помощнике будет выдано описание выбранного элемента встроенного языка.
Синтаксический контроль
Редактируемый модуль может быть проверен на правильность использования синтаксических конструкций встроенного языка. Для выполнения синтаксического контроля модуля необходимо воспользоваться пунктом "Текст - Синтаксический контроль".
Синтаксический контроль выполняется в следующей последовательности:
- Общие модули;
- Модуль приложения;
- Модуль объекта;
- Модуль формы.
При этом контроль модулей выполняется, если модуль еще не проходил контроля или был изменен. При контроле проверяются только те модули, которые в списке расположены до данного модуля.
При наличии ошибок их список будет выдан в окне сообщений с указанием полного адреса месторасположения и описания ошибки. Для перехода к строке модуля, вызвавшей ошибку, следует дважды щелкнуть мышью по этому сообщению.
В режиме настройки параметров Конфигуратора (пункт "Сервис - Параметры" закладка "Текст модуля" реквизит "Проверять автоматически") можно включить режим автоматической проверки модуля. В этом случае, если модуль был изменен, при закрытии окна модуля или при сохранении конфигурации в целом будет выполняться синтаксический контроль модуля.
Для полного синтаксического контроля всех модулей конфигурации за один проход следует выбрать пункт "Конфигурация - Синтаксический контроль модулей".