Руководство разработчика ПРАВО ТИРАЖИРОВАНИЯ ПРОГРАММНЫХ СРЕДСТВ И ДОКУМЕНТАЦИИ ПРИНАДЛЕЖИТ ФИРМЕ «1С» Приобретая систему «1С:Предприятие», вы тем самым даете согласие не допускать копирования программ и документации без письменного разрешения фирмы «1С». © ООО «1С», 1996 – 2013 Фирма «1С», Москва, 123056, а/я 64 Отдел продаж: Селезневская ул., 21, телефон: +7 (495) 737-92-57, факс: +7 (495) 681-44-07, e-mail: [email protected] URL: http://www.1c.ru, http://www.v8.1c.ru, http://users.v8.1c.ru Группа разработки программ – А. Алексеев, А. Безбородов, Д. Бескоровайнов, П. Василец, А. Виноградов, А. Волков, И. Гольштейн, Е. Горностаев, Г. Дамье, А. Даровских, О. Дерут, Н. Евграфов, Б. Евтифеев, Д. Зарецкий, Д. Ивашов, И. Коваленко, С. Копиенко, Н. Корсаков, С. Кравченко, В. Кудрявцев, П. Кукушкин, А. Кунченко, А. Лакутин, М. Лейбович, Г. Леонтьев, А. Лехан, А. Макеев, А. Медведев, Е. Митрошкин, С. Мурзин, С. Нуралиев, М. Отставнов, Д. Павленко, А. Плякин, А. Рукин, Д. Русанов, М. Саблин, Е. Силин, Д. Службин, А. Смирнов, В. Соколов, П. Солодкий, В. Сосновский, Д. Сысоенков, А. Топорков, В. Тунегов, А. Трубкин, В. Филиппов, А. Цилябин, В. Черемисинов, П. Чиков, А. Чичерин, А. Шевченко, А. Щербинин. Документация – В. Байдаков, В. Дранищев, Е. Королькова, А. Краюшкин, И. Кузнецов, М. Лавров, А. Моничев, А. Плякин, М. Радченко. Группа консультационной поддержки – О. Акулова, С. Алексеева, О. Багрова, О. Баклушина, Э. Гарифуллина, В. Давыдова, О. Дмитренко, Л. Ермакова, М. Ершова, Ю. Жестков, О. Завальская, Н. Заявлина, М. Звонилов, М. Иванова, Г. Коробка, Ю. Лаврова, С. Лепешкина, С. Мазурин, С. Марков, Ю. Мисан, А. Павликов, И. Панин, О. Пехтерева, С. Постнова, А. Прокуровский, Е. Романова, Г. Степаненко, Н. Степанов, Т. Токарева, Е. Широкова. Группа тестирования – Т. Акулова, А. Андриянова, Е. Антонова, М. Губко, Б. Зиатдинов, А. Капралова, С. Карасев, И. Карелин, А. Лапин, Е. Литвиненко, Е. Медведев, О. Ридер, Е. Ситосенко, Е. Смирнова, Е. Стеценко, Н. Шаргунова. Корректура – Е. Семененко. Верстка – О. Шестакова. Наименование книги: 1С:Предприятие 8.3. Руководство разработчика. Номер издания: 83.002.05 Дата выхода: 29 мая 2013 г. ЛИНИЯ КОНСУЛЬТАЦИЙ Для пользователей системы «1С:Предприятие 8» услуги линии консультаций предоставляются по линии информационно-технологического сопровождения (ИТС). Получение консультаций возможно только после регистрации программного продукта (для чего необходимо заполнить регистрационную анкету и выслать ее в фирму «1С») и оформления подписки на ИТС. В стоимость комплекта поставки программного продукта включено обслуживание по линии ИТС в течение периода, указанного в вашей регистрационной анкете. Купон на бесплатное обслуживание по линии ИТС, а также конверт с маркой и адресом входят в состав приобретенного вами комплекта программ. По истечении периода бесплатного обслуживания получение консультаций возможно только по договору на ИТС. Для заключения договора обращайтесь к партнерам фирмы «1С». Телефон и адрес электронной почты для консультаций указаны на диске ИТС. Линия консультаций работает с 9:30 до 17:30 по московскому времени, кроме суббот, воскресений и праздничных дней (по распорядку московских предприятий). Обращаясь к линии консультаций, следует находиться рядом со своим компьютером, иметь под рукой настоящее руководство и свою половину регистрационной анкеты. Желательно заранее уточнить типы используемого компьютера и принтера. Набрав телефон линии консультаций, вы должны услышать ответ дежурного сотрудника. После этого сообщите наименование вашей организации, номер вашего экземпляра системы (он обозначен на CD-ROM комплекта поставки и на вашей половине регистрационной анкеты) и, возможно, другую регистрационную информацию по запросу сотрудника линии консультаций. Названная вами информация будет проверена по данным, указанным в отосланной в фирму «1С» половине регистрационной анкеты. Отвечая на возникшие у вас вопросы, дежурный сотрудник может воспроизвести возникшую ситуацию на своем компьютере. Он даст вам рекомендации сразу же или после обсуждения с разработчиками. Вам не нужно просить к телефону конкретных специалистов: мы отвечаем за работу всего персонала. Работа линии консультаций регистрируется, поэтому при повторных обращениях по сложным проблемам вы можете сослаться на дату и время предыдущего разговора. МЫ ВСЕГДА РАДЫ ВАМ ПОМОЧЬ! Введение Настоящая книга является руководством по разработке прикладных решений для системы «1С:Предприятие». Данный документ предназначен для специалистов, занимающихся разработкой, модификацией и внедрением прикладных решений на платформе «1С:Предприятие». Структура Руководства Руководство содержит описание общей концепции системы «1С:Предприятие», а также рассказывает о приемах работы с объектами системы, о создании форм, командного интерфейса, использовании различных сервисных механизмов системы. Глава 1 описывает концепцию системы «1С:Предприятие»: заложенные в нее принципы, общая схема работы и другое. Глава 2 посвящена работе с конфигурацией в целом: редактированию свойств конфигурации, копированию объектов конфигурации, сохранению конфигурации, объединению конфигураций, вспомогательным режимам работы. Глава 3 описывает интерфейс приложения и его устройство. Глава 4 содержит общие сведения о встроенном языке, описание используемых типов данных, операторов и синтаксических конструкций, а также основные приемы работы со встроенным языком. Глава 5 посвящена основным объектам конфигурации и их особенностям. Глава 6 посвящена описанию командного интерфейса и порядку его разработки. Глава 7 содержит описание формы, ее составных частей, а также описание работы с формой из встроенного языка. Глава 8 содержит описание языка запросов и основные приемы работы с запросами во встроенном языке. Глава 9 рассказывает об общих принципах и особенностях работы с данными системы «1С:Предприятие». Глава 10 посвящена описанию системы компоновки данных. Глава 11 посвящена организации бухгалтерского учета в системе «1С:Предприятие». Глава 12 посвящена работе с механизмами периодических расчетов, используемых в системе «1С:Предприятие». Глава 13 описывает бизнес-процессы и задачи. Глава 14 содержит описание механизма анализа данных и прогнозирования. Глава 15 посвящена описанию механизма обмена данными. Глава 16 описывает механизм XDTO. Глава 17 дает описание механизма Web-сервисов. Глава 18 описывает механизм заданий. Глава 19 описывает средства полнотекстового поиска в базе данных. Глава 20 описывает работу с временным хранилищем данных и применение временного хранилища для операций с файлами. Глава 21 описывает работу с журналом регистрации. Глава 22 рассказывает о механизме криптографии. Глава 23 описывает работу с внешними источниками данных. Глава 24 посвящена описанию механизма разделения данных. Глава 25 описывает разработку приложений для мобильных устройств. Глава 26 рассказывает об использовании специализированного редактора форм, текстового редактора, редактора табличных документов, редактора карты маршрута и редактора картинок. Глава 27 посвящена отладке и тестированию конфигураций. Глава 28 описывает механизм сравнения и объединения конфигураций. Глава 29 посвящена организации и использованию групповой разработки конфигураций. Глава 30 посвящена описанию механизмов создания файлов поставки и обновления, а также комплекта поставки. Данная глава будет интересна разработчикам тиражных конфигураций. Также в данной главе описывается использование файлов поставки и обновлений для типовых конфигураций, находящихся на поддержке разработчиков пользовательских конфигураций. Глава 31 рассказывает о сервисных режимах: настройке параметров конфигуратора, работе с синтакс-помощником, настройке шаблонов, использовании встроенного калькулятора и календаря, сравнении файлов, особенностях работы с окнами, локализации конфигураций в системе «1С:Предприятие». Глава 32 описывает механизм подключения внешних компонентов. Глава 33 содержит рекомендации по разработке кроссплатформенных прикладных решений. ВНИМАНИЕ! В документации, поставляемой в электронном виде, отсутствует часть материала. Этот материал присутствует в печатной версии документации, поставляемой вместе с продуктом. Что вы должны знать Характер изложения материала данного Руководства предполагает, что вы знакомы с операционной системой компьютера, на котором работает система «1С:Предприятие» (Microsoft Windows 2000, Microsoft Windows XP, Microsoft Windows Vista, Microsoft Windows 7, далее – Microsoft Windows), и владеете базовыми навыками работы в ней. Вам должны быть знакомы следующие понятия и навыки: ● использование меню Пуск (Start) для вызова программ; ● приемы работы с окнами; ● приемы работы с мышью; ● стандартные приемы работы с текстом и табличными документами (электронными таблицами) – ввод текста, ввод значений в ячейки табличного документа, редактирование, форматирование, печать и др.; ● работа с меню; ● использование управляющих элементов диалогов; ● стандартные диалоги; ● понятие буфера обмена Microsoft Windows и приемы работы с ним (далее буфер обмена); ● настройка операционной системы Microsoft Windows с помощью панели управления. Если вы недостаточно хорошо владеете перечисленными выше понятиями и навыками, рекомендуем обратиться к документации по операционной системе. Книги документации В состав документации входят книги по технологической платформе «1С:Предприятие»: ● «1С:Предприятие 8.3. Руководство пользователя». Книга содержит описание общих приемов работы с программными продуктами, созданными на базе платформы «1С:Предприятие», и может не поставляться отдельно. Данная книга не поставляется в составе продукта «1С:Предприятие 8.3. Версия для обучения программированию». ● «1С:Предприятие 8.3. Руководство разработчика». Книга необходима для изменения и настройки конфигурации под особенности учета конкретной организации, а также для разработки новых конфигураций. ● «1С:Предприятие 8.3. Руководство администратора». Книга описывает администрирование системы «1С:Предприятие», включая информацию об особенностях построения клиент-серверных систем. Данная книга не поставляется в составе продукта «1С:Предприятие 8.3. Версия для обучения программированию». ● «1С:Предприятие 8.3. Клиент-серверный вариант. Руководство администратора». Книга описывает особенности работы системы «1С:Предприятие» с информационными базами в варианте клиент-сервер в части установки и эксплуатации. Данная книга не поставляется в составе продукта «1С:Предприятие 8.3. Версия для обучения программированию». ● Синтаксис встроенного языка и языка запросов представлен в книге «1С:Предприятие 8.3. Руководство разработчика». Описание объектной модели полностью включено в поставку в электронном виде (в разделах справки конфигуратора и синтакс-помощнике). Описание объектной модели также содержится в книге «1С:Предприятие 8.3. Описание встроенного языка», которая распространяется отдельно. ВНИМАНИЕ! Комплект поставки конкретного продукта может включать лишь некоторые из перечисленных книг документации. Методические материалы и дополнительные возможности Фирма «1С» осуществляет методическую поддержку освоения и внедрения системы программ «1С:Предприятие». Методическая поддержка включает в себя разнообразные формы предоставления информации, необходимой для грамотной и эффективной разработки и использования прикладных решений. Сопроводительные файлы комплекта поставки «1С:Предприятия» В процессе установки платформы «1С:Предприятие» выполняется копирование на жесткий диск ряда сопроводительных файлов, содержащих описание изменений, реализованных в данной версии платформы, и инструкции по переходу с предыдущих версий. Все сопроводительные файлы располагаются в каталоге установочных файлов конкретной версии системы «1С:Предприятие», в каталоге \docs\ru. Если при установке системы использовался каталог, предложенный по умолчанию, то эти файлы будут располагаться в каталоге C:\Program Files\1cv82\НомерВерсии\docs\ru. Здесь НомерВерсии означает номер установленной версии. Так, для версии 8.2.9.100 каталог будет иметь следующий вид: C:\Program Files\1cv82\8.2.9.100\docs\ru. ● V8Update.htm – в этом файле содержатся отличия текущей версии платформы от предыдущих версий и особенности перехода на новую версию. ИТС – информационно-технологическое сопровождение Фирма «1С» осуществляет платную методическую поддержку пользователей в рамках информационно-технологического сопровождения (ИТС) программ системы «1С:Предприятие». Ежемесячные выпуски ИТС содержат большое количество постоянно обновляемой информации, позволяющей более эффективно использовать продукты системы «1С:Предприятие». Отметим наиболее важные составляющие ИТС: ● обновления технологической платформы «1С:Предприятия» и прикладных решений; ● методические материалы по технологической платформе «1С:Предприятие»; ● методические материалы по типовым прикладным решениям фирмы «1С»; ● конфигурация «Конвертация данных» для настройки правил обмена между информационными базами «1С:Предприятия», имеющими различную конфигурацию; ● система стандартов и методик разработки конфигураций для платформы «1С:Предприятие» (предназначена для ознакомления партнеров и пользователей фирмы «1С» с техническими и проектными решениями, используемыми при разработке типовых конфигураций на платформе «1С:Предприятие»); ● советы линии консультаций, помогающие пользователям «1С:Предприятия» получить ответы на наиболее часто встречающиеся вопросы и избежать типичных ошибок; ● информация по обучению работе с платформой «1С:Предприятие» и прикладными решениями фирмы «1С»; ● демонстрационные ролики программных продуктов, позволяющие получить первое представление о возможностях прикладных решений; ● справочники по заполнению деклараций по налогам (налог на прибыль, НДС, налог на имущество, ЕСН, взносы в ПФР); ● обширная подборка бухгалтерской периодики, включая текущие выпуски журналов и архивы; ● база аналитических обзоров законодательства и арбитражной практики; ● рекомендации по составлению квартальной и годовой отчетности в «1С:Бухгалтерии»; ● справочник типовых хозяйственных операций хозрасчетного предприятия; ● справочник по оформлению расчетов с персоналом по оплате труда и правовым аспектам трудовых отношений; ● справочная правовая система «Гарант» – полный набор нормативных документов законодательства Российской Федерации, в том числе по бухгалтерскому учету, налогам и предпринимательству. Начиная с 2005 года, стандартный сервис по поддержке пользователей – подписчиков ИТС включает доступ к сайту поддержки пользователей системы «1С:Предприятие». Более подробно о проекте ИТС можно прочитать на сайте фирмы «1С»: http://www.1c.ru/rus/support/its/its.htm. Оставить заявку на демонстрацию дисков и приобретение подписки на ИТС можно на сайте фирмы «1С»: http://www.1c.ru/rus/support/its/zajavka.jsp. Оформить подписку на ИТС можно у партнеров фирмы «1С». Список партнеров, имеющих опыт массового обслуживания пользователей в рамках проектов ИТС, опубликован на сайте фирмы «1С»: http://www.1c.ru/rus/partners/service.jsp. Информация по «1С:Предприятию» Адрес сайта: http://v8.1c.ru/AllInfo. Данный сайт представляет собой набор ссылок на часто используемую информацию для следующих категорий пользователей: ● пользователи прикладных решений, ● разработчики прикладных решений, ● партнеры фирмы «1С». Сайт системы программ «1С:Предприятие» Адрес сайта: http://v8.1c.ru/. Сайт содержит информацию по технологической платформе системы «1С:Предприятие» и по типовым прикладным решениям, выпущенным фирмой «1С» на ее основе. Пользовательский сайт Адрес сайта: http://users.v8.1c.ru/. На сайте поддержки пользователей системы «1С:Предприятие» представлена информация о номерах версий платформы и конфигураций, дате их выхода, выпусках ИТС, на которых опубликовано обновление. По каждой версии представлена следующая информация: ● для технологической платформы: ● отличия данной версии от предыдущих и особенности перехода; ● ошибки, исправленные при выпуске данной версии; ● дистрибутив обновления; ● файл readme.htm; ● для прикладных решений: ● новое в релизе; ● полный список изменений; ● список основных изменений; ● порядок обновления; ● дистрибутив обновления; ● номер версии платформы, необходимой для использования релиза конфигурации. Также на пользовательском сайте публикуются рекомендации по администрированию системы «1С:Предприятие». Основное преимущество, которое дает пользователям «1С:Предприятия» поддержка на данном сайте, – это возможность обновления технологической платформы и прикладных решений через Интернет до получения дисков ИТС. Также на сайте публикуются дополнительные компоненты, используемые системой «1С:Предприятие» (например, СУБД PostgreSQL), а также тестовые версии платформы и прикладных решений. ВНИМАНИЕ! К сайту поддержки пользователей имеют право доступа зарегистрированные пользователи программных продуктов системы «1С:Предприятие». При этом пользователи продуктов, для которых предусмотрено обслуживание по линии информационнотехнологического сопровождения (ИТС), должны иметь действующую подписку на ИТС. Зарегистрироваться на сайте поддержки пользователей можно самостоятельно либо обратиться к партнеру фирмы «1С». Для самостоятельной регистрации необходимо с главной страницы сайта перейти по ссылке Самостоятельная регистрация пользователей по PIN-коду и выполнить указанные на сайте действия. В процессе регистрации потребуется PIN-код, входящий в комплект поставки программного продукта. Если в комплекте поставки отсутствует PIN-код для регистрации на сайте, следует обратиться к партнеру фирмы «1С». Для регистрации программного продукта необходимо заполнить регистрационную анкету на программный продукт (она является частью регистрационной карточки) и отправить ее в фирму «1С» по почте или факсу. Для оформления подписки на ИТС можно обратиться к любому из сервис-партнеров фирмы «1С». Список партнеров, имеющих опыт массового обслуживания пользователей в рамках проектов ИТС, опубликован на сайте фирмы «1С»: http://www.1c.ru/rus/partners/service.jsp. Принятые обозначения Для лучшего понимания излагаемого материала в настоящем Руководстве приняты некоторые общие приемы выделения отдельных элементов текста. Соглашение о таких приемах приведено ниже. Обозначения клавиш. Клавиши, такие как Enter, Esc, Del и подобные, будут обозначаться, как показано выше, без кавычек. Для ссылок на клавиши управления курсором (клавиши со стрелками) будет использоваться фраза клавиши управления курсором, когда необходимо сослаться сразу на все эти клавиши. Если необходимо упомянуть эти клавиши по отдельности, будут использоваться выражения Стрелка вверх, Стрелка вниз, Стрелка вправо и Стрелка влево. Комбинации клавиш. Когда для выполнения какой-либо команды необходимо нажать комбинацию из двух клавиш, она дается в виде Ctrl + F3. Обозначения кнопок. Наименования кнопок в форме будут даваться их названиями без кавычек, например, ОК, Отмена, Удалить и так далее. Ключевые слова встроенного языка. Ключевые слова встроенного языка системы «1С:Предприятие» выделяются шрифтом и пишутся так, как в программных модулях: РабочаяДата. В тексте также будут встречаться ссылки на описания разделов или элементов встроенного языка (свойства, методы и т. д.). С данными описаниями можно ознакомиться в справке (ветвь Встроенный язык). Описание действия с помощью меню. Для описания выбора пункта меню используется следующая конструкция: Меню – Подменю – Подменю –... – Пункт. Например: «Для выбора масштаба изображения используется пункт Таблица – Вид – Масштаб, что эквивалентно тексту: «Для выбора масштаба изображения используется пункт Масштаб подменю Вид меню Таблица главного меню программы». Если выбор осуществляется не из главного меню программы, то это указывается дополнительно. Режимы работы системы «1С:Предприятие». Система «1С:Предприятие» работает в двух режимах: настройки и проверки конфигурации (далее в Руководстве – режим Конфигуратор или конфигуратор, когда в Руководстве описывается работа по созданию или изменению конфигурации) и исполнения конфигурации (далее в Руководстве – режим 1С:Предприятие). В данном Руководстве пользователем будет называться специалист, выполняющий разработку или сопровождение конфигурации. Выражение %APPDATA% означает переменную окружения ОС Windows, которая содержит путь к каталогу (в профиле пользователя), где приложения хранят свои данные. В случае стандартной установки (и для пользователя Ivanov) этот путь выглядит следующим образом: C:\Documents and Settings\Ivanov\Application Data Для ОС Windows Vista и выше этот путь выглядит следующим образом: C:\Users\Ivanov\AppData\Roaming Выражение %LOCALAPPDATA% означает переменную окружения ОС Windows Vista и старше, содержащую путь к каталогу (в профиле пользователя), в котором находятся данные приложения, специфичные для пользователя. В случае стандартной установки (и для пользователя Ivanov) этот путь выглядит следующим образом: C:\Users\Ivanov\AppData\Local Глава 1. Концепция системы «1С:Предприятие» является универсальной системой автоматизации деятельности предприятия. За счет своей универсальности система «1С:Предприятие» может быть использована для автоматизации самых разных участков экономической деятельности предприятия: учета товарных и материальных средств, взаиморасчетов с контрагентами и др. 1.1. Конфигурируемость Основной особенностью системы «1С:Предприятие» является ее конфигурируемость. Собственно система «1С:Предприятие» представляет собой совокупность механизмов, предназначенных для манипулирования различными типами объектов предметной области. Набор объектов, структуры информационных массивов, алгоритмы обработки информации, соответствующих поставленной задаче, определяет конкретная конфигурация. Вместе с конфигурацией система «1С:Предприятие» выступает в качестве уже готового к использованию программного продукта, ориентированного на определенные типы предприятий и классы решаемых задач. Конфигурация создается и сопровождается (поддерживается) штатными средствами системы. Конфигурация обычно поставляется в качестве типовой для конкретной области применения, но может быть изменена, дополнена пользователем системы, а также разработана заново. Система «1С:Предприятие» обеспечивает поддержку типовых конфигураций стандартными средствами. 1.2. Функционирование системы Функционирование системы делится на два процесса – разработка (описание модели предметной области средствами системы) и исполнение (обработка данных предметной области). На этапе разработки производится: ● формирование структуры обрабатываемой информации; ● создание форм для ввода исходных данных, просмотра различных списков данных; ● организация хранения введенной и итоговой информации; ● написание отчетов и обработок; ● формирование командных интерфейсов для различных групп пользователей; ● формирование списка пользователей; ● назначение пользователям определенных прав. Результатом разработки является программный продукт (конфигурация), который представляет собой модель предметной области. В режиме Конфигуратор можно создавать новые конфигурации, редактировать имеющиеся, а также производить сравнение и объединение нескольких конфигураций. На этапе разработки система оперирует такими универсальными понятиями (объектами), как документ, журнал документов, справочник, реквизит, форма, регистр и другие. Совокупность этих понятий и определяет концепцию системы. В свою очередь, процесс конфигурирования распадается на несколько составляющих (деление носит условный характер), определяющих последовательность написания и назначение томов описания. Это «визуальное» конфигурирование (создание структуры конфигурации, форм диалогов и выходных документов, механизм работы пользователей с данными (интерфейс) и права доступа различных групп пользователей к различной информации) и написание программ на встроенном языке «1С:Предприятия» для обработки входных и выходных данных. На уровне системы определены сами понятия объектов и стандартные операции по их обработке. Средства конфигурирования позволяют описать структуру информации, входящей в эти объекты, и алгоритмы, описывающие специфику их обработки, для отражения различных особенностей учета. Информационная структура проектируется на уровне предусмотренных в системе типов обрабатываемых объектов предметной области (константы, справочники, документы, регистры, перечисления и др.). В процессе исполнения система уже оперирует конкретными понятиями, описанными на этапе конфигурирования (справочниками товаров и организаций, счетами, накладными и т. д.). При работе пользователя в режиме 1С:Предприятие обработка информации выполняется как штатными средствами системы, так и с использованием алгоритмов, созданных на этапе конфигурирования. 1.3. Основные понятия системы В этом разделе рассматриваются основные понятия, которыми оперирует система «1С:Предприятие». Данный раздел будет полезен тем, кто еще не знаком с системой «1С:Предприятие». Описание тех или иных механизмов будет сопровождаться примерами. Возможно, что в описании будут встречаться еще незнакомые вам понятия и термины. Продолжайте чтение: смысл используемых терминов будет ясен в процессе изложения, а для более подробной информации всегда можно обратиться к соответствующим главам настоящего Руководства. 1.3.1. Понятие «конфигурация» Основу концепции составляет понятие «конфигурация». Конфигурацией в системе «1С:Предприятие» называется совокупность взаимосвязанных составных частей: ● подсистемы; ● структуры учетных данных, их форм ввода, выбора, печати; ● состава механизмов учета итоговых данных и движений учетных данных; ● состава различных отчетов и обработок; ● командного интерфейса; ● набора ролей (прав доступа); ● набора общих процедур и функций (модуль приложения, модуль управляемого приложения, модуль внешнего соединения, модуль сеанса, общие модули), макетов табличных документов и др.; ● вспомогательных объектов: ● функциональных опций и их параметров; ● хранилищ настроек; ● средств работы с Web (Web-сервисы, WS-ссылки); ● различной вспомогательной информации (картинки, шаблоны, стили и т. д.). Фактически структура конфигурации является моделью предметной области. Создание конфигурации выполняется при помощи конфигуратора. Созданная конфигурация используется системой «1С:Предприятие» для реализации программного окружения, пригодного для выполнения необходимых учетных задач. Роли в системе «1С:Предприятие» определяют полномочия пользователей на работу с информацией, которая обрабатывается в системе. Совокупность предоставляемых пользователю полномочий определяется, как правило, кругом его обязанностей. Операция назначения ролей пользователю решает две основные задачи: ● с одной стороны, ограничивается круг пользователей конфиденциальной информации, которая, безусловно, всегда присутствует в любой системе учета; ● с другой стороны, запрет выполнения определенных операций (в первую очередь операций удаления и корректировки данных) позволяет в какой-то степени предотвратить возможные потери информации. Все составные части конфигурации тесно связаны между собой и требуют, как правило, согласованного внесения изменений (особенно это касается пользовательских прав). Так, назначение ролей может выполняться только для существующих объектов конфигурации (конкретных документов, журналов, справочников, отчетов). Добавление в структуру конфигурации нового объекта должно сопровождаться внесением соответствующих изменений в роли. Система учитывает назначение прав на объекты при построении командного интерфейса. Если, например, пользователю запрещен просмотр какого-либо справочника, то команда открытия формы списка этого справочника будет удалена из командного интерфейса автоматически. Формы также автоматически учитывают наличие прав при отображении форм. 1.3.2. Объект конфигурации Под объектом конфигурации в системе «1С:Предприятие» понимается формальное описание группы понятий (предметной области, средств взаимодействия пользователя с системой) со сходными характеристиками и одинаковым предназначением. Приведем такой пример. Объект конфигурации Справочникв системе «1С:Предприятие» предназначен для ведения списков однородных элементов данных – справочников, картотек, нормативных сборников и т. п. Использование объектов конфигурации этого типа позволяет организовать ведение любых справочников, необходимых для автоматизации деятельности предприятия. Как правило, объекты конфигурации типа Справочникявляются компьютерными аналогами реально существующих на предприятии видов справочников, например, справочника сотрудников или номенклатуры товаров, хотя могут использоваться и для организации списков, не имеющих явных физических аналогов. Следует иметь в виду, что объект конфигурации описывает не конкретное значение, а только его вид. Например, справочник Физические лица описывает не конкретного человека, а содержит перечень реквизитов (набор видов характеристик о физическом лице), а также формы для ввода их значений, формы просмотра списков и макеты для печати информации. Другими словами, в конфигурации создается схема описания, с помощью которой учитываются все однородные объекты предметной области (в приведенном примере справочника Физические лица одно описание используется как для Петрова, Иванова, так и для любого другого физического лица). Реализованный в системе «1С:Предприятие» при помощи объекта конфигурации компьютерный аналог конкретного понятия предметной области будем называть объектом конфигурации. 1.3.2.1. Свойства объекта конфигурации Каждый объект конфигурации обладает уникальным набором свойств. Этот набор описан на уровне системы и не может быть изменен в процессе настройки конфигурации задачи. Набор свойств объекта конфигурации определяется в основном его назначением в системе «1С:Предприятие». Главным свойством любого объекта конфигурации является имя – краткое наименование объекта конфигурации. При создании нового объекта конфигурации ему автоматически присваивается условное имя, состоящее из слова, определяемого по виду объекта, и цифры (например, при создании реквизита создается реквизит с именем Реквизит1, при создании документа – Документ1и т. д.). Это имя можно изменить в процессе редактирования свойств объекта конфигурации, при этом система отслеживает уникальность имен. Имя объекта конфигурации не может быть пустым и быть длиннее 255 символов. Некоторые свойства из всего набора свойств, присущих объекту конфигурации, доступны для редактирования и могут быть так или иначе изменены в процессе конфигурирования системы. Характер изменений и их пределы также задаются на уровне системы. Специалист, осуществляющий конфигурирование системы, целенаправленным изменением свойств объекта конфигурации может добиться требуемого поведения объекта при работе системы. Однако такие изменения не затрагивают сущности объекта и не позволяют добиться от него действий, не свойственных объектам данного типа. Приведем такой пример. Объект конфигурации Константав системе «1С:Предприятие» предназначен для хранения информации, которая не изменяется во времени или изменяется очень редко. При этом не важны предыдущие значения константы. Простым примером константы может служить название предприятия: оно, как правило, не меняется в процессе деятельности предприятия (если предполагается, что значения каких-либо учетных данных, изменяемых во времени, нужно выбирать с учетом времени, то для таких данных необходимо использовать не константу, а регистр сведений без измерений). Константа обладает большим набором редактируемых свойств, из которых наиболее важными являются: ● имя константы, ● синоним, ● комментарий, ● тип данных, ● режим управления блокировкой, ● ссылка, позволяющая открыть модуль менеджера константы. В наиболее общем случае значение в константу вводится один раз (как, например, название предприятия). С точки зрения использования константы не важно, что именно хранится в константе; главным является то, что константа сохранила записанное в нее значение. Способность сохранять введенное в нее значение – неотъемлемая особенность константы в системе «1С:Предприятие». Редактирование свойств константы на эту способность не влияет. 1.3.2.2. Основные виды объектов конфигурации Все объекты конфигурации, которые существуют в системе «1С:Предприятие», образуют несколько основных видов. Каждый вид объектов конфигурации представляет собой как раз те «строительные элементы», из которых будет создаваться конфигурация. Формально объекты конфигурации объединяются в виды в дереве конфигурации. Названия видов пользователь видит на первом уровне дерева конфигурации, когда открывает окно Конфигурация в конфигураторе. Рис. 1. Дерево метаданных Несмотря на отсутствие формального определения, названия видов объектов конфигурации широко используются при работе с системой «1С:Предприятие». Например, специалист, осуществляющий конфигурирование системы «1С:Предприятие», видит свою цель в разработке необходимого набора справочников, документов, отчетов, журналов, которые будут реализовывать требуемую систему учета. Конечный пользователь системы «1С:Предприятие» – руководитель, бухгалтер, менеджер, кладовщик – также оперирует конкретными справочниками, документами и т. д. для решения стоящих перед ним задач. Общение между двумя этими категориями пользователей также будет происходить в понятиях видов объектов конфигурации. Объект данных какого-либо вида является уже конкретным документом, отчетом, журналом, константой и так далее. Как правило, каждый объект используется для работы со вполне определенной информацией предметной области. Ниже приведена краткая характеристика основных видов объектов конфигурации системы «1С:Предприятие». Подробная информация об объектах конфигурации, объединяемых в каждом из этих видов, будет изложена далее. 1.3.2.2.1. Константы Для работы с постоянной и условно постоянной информацией в системе используются объекты типа Константа. Информация, хранящаяся в константах, редко изменяется, но, как правило, часто используется в работе. Например, в константах может храниться наименование предприятия, его ИНН, фамилии директора и главного бухгалтера и другая подобная информация. В системе может быть описано неограниченное количество констант. 1.3.2.2.2. Справочники Для работы с постоянной и условно постоянной информацией с некоторым множеством значений в системе используются объекты типа Справочник. Обычно справочниками являются списки материалов, товаров, организаций, валют, сотрудников и др. Механизм поддержки справочников позволяет спроектировать и поддерживать самые различные справочники. На этапе конфигурирования можно описать, какими свойствами обладает каждый конкретный справочник. К настраиваемым свойствам относятся, например, длина и тип кода, количество уровней иерархии, поддержка уникальности кодов, набор реквизитов справочника. Помимо кода и наименования, механизм работы со справочниками позволяет создавать набор реквизитов для хранения любой дополнительной информации об элементе справочника (например, для номенклатуры это может быть закупочная и отпускная цены, производитель, для сотрудника – должность, образование, адрес места жительства и т. д.), а также табличные части. В табличных частях хранится однотипная информация, число которой может быть переменным, например, описание комплектующих изделия, состав семьи сотрудника, телефоны организации и т. д. Для каждого справочника может быть задано несколько типов форм: элемента, группы, списка, выбора, выбора группы. По каждому типу форм может быть создано произвольное число форм. Для описания соподчиненных сущностей можно использовать подчиненные справочники. В этом случае в подчиненном справочнике каждый элемент «принадлежит» к определенному элементу справочника-владельца. В конкретной конфигурации создается необходимое количество справочников для хранения данных об объектах, используемых при автоматизации данной предметной области. Например, это могут быть справочники Организации, Товары, Сотрудникии т. д. 1.3.2.2.3. Перечисления Перечисления используются в системе «1С:Предприятие» для описания постоянных наборов значений, не изменяемых в процессе работы конфигурации. На этапе конфигурирования можно описать практически неограниченное количество видов перечислений. В отличие от справочника, значения перечислений задаются на этапе конфигурирования и не могут быть изменены на этапе исполнения. Типичными примерами перечислений являются виды оплаты (наличная, безналичная, бартер), статус клиента (постоянный, разовый) и т. д. Одной из главных особенностей перечислений, отличающей их от справочников, является то, что набор значений перечисления не изменяется при работе конечного пользователя с программой. Например, алгоритм конфигурации может быть ориентирован на то, что каждый клиент имеет один из двух статусов – либо постоянный, либо разовый. В этом случае указание статуса клиента выполняется путем выбора одного из значений перечисления. Пользователь не может добавить новый статус. В отличие от перечислений, для справочников конкретные значения обычно вводятся пользователем при работе с программой, например: наименования товаров, контрагентов и прочее. 1.3.2.2.4. Документы Документы предназначены для отражения хозяйственных событий предприятия, которые имеют отношение к автоматизируемой предметной области. Например, в конфигурации, предназначенной для учета торговых операций, могут быть такие документы, как счет, приходная накладная, расходная накладная и проч. При помощи документов отражаются и платежи с расчетного счета, и операции по кассе, и движения по складу, и прочие подобные события. В процессе конфигурирования настраивается произвольное количество видов документов. Типичными примерами видов документов являются такие, как Платежное поручение, Счет, Приходная накладная, Расходная накладная, Накладная на внутреннее перемещение, Приходный кассовый ордер и другие. Каждый вид документа предназначен для отражения своего типа событий. Это определяет его структуру и свойства, которые описываются в конфигурации. Каждый вид документа может иметь неограниченное количество реквизитов и табличный частей. Несколько табличных частей требуются в тех случаях, когда одним документом необходимо зарегистрировать разные по сути, но связанные события, например: отразить поступление товара на склад и зарегистрировать понесенные дополнительные затраты – оплату транспорта, грузчиков и др. Для документа создаются формы ввода – экранные аналоги реальных документов. Если в других формах используются данные документов, то для включения этой информации разрабатываются формы для выбора. Для просмотра списка документов одного вида создаются формы списков. Число форм неограниченно. Каждый документ также может иметь неограниченное число печатных форм. Все документы характеризуются номером, датой и временем. При настройке для документа также задается длина номера документа, условия поддержки уникальности номеров и другие. Документы играют центральную роль для основных механизмов, реализуемых системой. Все документы образуют единую хронологическую последовательность. Фактически она отражает реальную последовательность событий. Внутри даты последовательность документов определяется их временем, при этом время документа является не столько средством отражения реального (астрономического) времени ввода документа, сколько средством, позволяющим четко упорядочить документы внутри одной даты. Данные, вводимые в документ (в реквизиты и табличные части документа), обычно содержат информацию о происшедшем событии: например, в накладной – информацию о том, с какого склада, каких товаров и сколько отгружено, какие дополнительные затраты произведены при приобретении товаров. Для документа весьма важным действием является его проведение. Если документ не является «проводимым», это значит, что событие, которое он отражает, не влияет на состояние учета, который ведется в данной конфигурации. Если документ проводится, то он изменяет состояние тех или иных учитываемых данных. При проведении документ может отразить зафиксированное им событие в механизмах, реализуемых различными регистрами. Например, в торговом предприятии выписка клиенту счета на оплату не изменяет состояния товарных или денежных средств предприятия, так как счет в данном случае – это только выражение намерения клиента приобрести товар. В этом случае в конфигурации для учета торговых операций документ Счет может не отражаться на регистрах учета. Однако если выписка счета сопровождается резервированием товара для данного клиента, то в этом случае документ Счет должен отражаться на регистрах учета, так как операция выписки счета еще и «замораживает», временно выключает из оборота определенное количество товаров. В этом случае конфигурация для учета торговых операций должна уметь отслеживать зарезервированный товар. 1.3.2.2.5. Журналы документов Журналы документов предназначены для просмотра документов разных видов. Каждый вид документа может быть показан в нескольких журналах. Журнал документов не добавляет новые данные в систему, а является средством для отображения в едином списке документов нескольких видов. Например, может быть создан журнал Складские документы, в котором будут отображаться все приходные и расходные накладные и накладные на внутреннее перемещение. Для журнала могут быть определены графы журнала, предназначенные для отображения реквизитов документов разного вида, отнесенных к данному журналу. Например, журнал торговых документов может содержать графу Контрагент, в которой будет отражаться реквизит Комитент документа Прием на комиссию, реквизит Организация документа Приходная накладная и т. д. Каждый журнал может иметь неограниченное число форм визуального представления и печатных форм. 1.3.2.2.6. Отчеты и обработки Для описания отчетов и процедур обработки информации на этапе конфигурирования может быть создано неограниченное число отчетов и обработок. Отчеты и обработки могут иметь несколько форм, предназначенных, например, для ввода параметров формирования отчета или параметров обработки данных. Например, для выдачи складской справки – выбор конкретного склада. Алгоритм получения отчета может описываться с использованием встроенного языка или формироваться системой автоматически, в случае использования системы компоновки данных (см. здесь). Для вывода отчетов может быть использован как текстовый формат, так и специализированный табличный формат отчетов (макеты). Система также поддерживает возможность разработки внешних обработок, хранящихся не в самой конфигурации, а в отдельных файлах. 1.3.2.2.7. Планы видов характеристик В системе «1С:Предприятие» объекты Планы видов характеристик предназначены для описания множеств однотипных объектов аналитического учета. 1.3.2.2.8. Планы видов расчета Объекты данного вида предназначены для создания видов расчетов, используемых в механизмах периодических расчетов. 1.3.2.2.9. Планы счетов План счетов является одним из основных понятий бухгалтерского учета. Планом счетов называется совокупность синтетических счетов, предназначенных для группировки информации о хозяйственной деятельности предприятия. Информация, накапливаемая на таких синтетических счетах, позволяет получить полную картину состояния средств предприятия в денежном выражении. 1.3.2.2.10. Планы обмена Объекты данного вида предназначены для организации обмена данными между различными информационными базами, а также информационными базами и внешними программными системами. 1.3.2.2.11. Бизнес-процессы и задачи Позволяют создавать формализованные описания типичных последовательностей работ, выполняемых в организации, и на их основе формировать списки задач, которые необходимо выполнить тому или иному сотруднику организации в данный момент. Например, процесс продажи товара может быть представлен как последовательность выписки счета, его утверждения, получения наличной оплаты и отгрузки товара со склада. За выполнение каждого из этапов могут отвечать различные сотрудники. Таким образом, в любой момент времени можно определить, в каком состоянии находится процесс продажи товара и кто из сотрудников в данный момент должен выполнить какие-либо действия. 1.3.2.2.12. Регистры Регистры предназначены для хранения и обработки различной информации, отражающей хозяйственную или организационную деятельность предприятия и не имеющей объектной природы. В регистрах обычно хранится информация об изменении состояний объектов или другая информация, не отражающая непосредственно объекты предметной области. Например, в регистрах может храниться информация о курсах валют или информация о приходе и расходе товаров. В системе «1С:Предприятие» существует 4 вида регистров: ● регистры сведений, ● регистры накопления, ● регистры расчетов, ● регистры бухгалтерии. 1.3.2.2.13. Специализированные объекты конфигурации (ветвь «Общие») Помимо объектов, описывающих предметную область учета, конфигурация содержит ряд вспомогательных объектов, не относящихся непосредственно к деятельности предприятия, однако тесно связанных с функционированием самой системы. Это механизмы взаимодействия пользователей с системой «1С:Предприятие» (командный интерфейс, критерии отбора, права доступа различных групп пользователей к различной информации); вспомогательные объекты оформительского назначения, позволяющие производить конфигурирование на основе сформированных стилей; библиотеки картинок с учетом национального языка; модуль приложения и общие модули, в которых располагаются процедуры и функции, доступные из прочих модулей конфигурации; общие макеты печатных форм и многое другое. 1.3.2.3. Подчиненные группы объектов В зависимости от вида объекта конфигурации объект может иметь различные подчиненные группы объектов. Например, реквизиты, измерения, формы, табличные части и т. д. Состав подчиненных объектов зависит от типа объекта. Реквизиты – дополнительная информация об объекте, доступная только в пределах этого объекта. Табличные части – наборы дополнительной информации об объекте, представленной в виде таблицы. ВНИМАНИЕ! Число строк одной табличной части не может быть более 100 000. Реквизиты табличных частей – состав табличной части объекта, доступный только в пределах табличной части объекта. Формы – форма используется для ввода, просмотра и редактирования информации, хранящейся в объекте конфигурации, содержит модуль формы – программу на встроенном языке системы «1С:Предприятие». Способность иметь визуальное представление позволяет объекту конфигурации организовать интерактивное взаимодействие с пользователем. Характер такого взаимодействия разрабатывается специалистом, осуществляющим конфигурирование системы «1С:Предприятие», и определяется в основном типом объекта конфигурации. Для разработки форм в конфигураторе применяется комплексный редактор форм, позволяющий редактировать все компоненты формы во взаимосвязи. Каждый объект может иметь несколько форм. Команды – используются для выполнения различных операций с объектом. Команды бывают независимыми и параметризуемыми. Макеты – табличные, HTML или текстовые документы (также могут использоваться двоичные и Active-документы), предназначенные для формирования печатных форм объекта. Графы – графы журнала документов. Измерения – для регистров это объекты конфигурации, данные о которых учитываются в регистре. Ресурсы – данные, учитываемые в регистре. Группы подчиненных объектов не удаляются и не имеют редактируемых свойств. 1.3.2.4. Типизированные и типообразующие объекты Одним из основных свойств некоторых объектов конфигурации является Тип данных. Это свойство определяет, какого рода информацию может содержать объект конфигурации. Тип данных объекта конфигурации назначается при создании или редактировании свойств объекта в процессе настройки конфигурации. Объекты конфигурации, для которых может быть указан тип информации, содержащейся в объекте, в системе «1С:Предприятие» называются типизированными объектами конфигурации. Такие объекты конфигурации, как Справочник, Документ, Обработка, не являются типизированными объектами, так как содержат «комплексную» информацию и, в свою очередь, включают в себя типизированные объекты конфигурации. Типы данных, которые может принимать объект конфигурации, можно разделить на две группы. Первую группу составляют примитивные типы данных: Число, Строка, Датаи Булево. Соответственно, информация, хранящаяся в объекте конфигурации, может быть числом, произвольной строкой символов, датой или логической величиной. Кроме этих типов к примитивным типам относят NULL, Неопределенои Тип(подробнее см. раздел «Примитивные типы данных» справки по встроенному языку). Кроме этого, некоторые объекты конфигурации системы «1С:Предприятие» также могут образовывать типы данных. Например, константе может быть назначен тип данных ДокументСсылка. В этом случае значение константы будет представлять собой ссылку на один из существующих в системе «1С:Предприятие» документов. Объекты конфигурации, которые могут образовывать типы значений конфигурации, в системе «1С:Предприятие» называются типообразующими объектами конфигурации. Такими объектами в системе «1С:Предприятие» являются: ● справочники, ● документы, ● планы видов характеристик, ● планы счетов, ● планы видов расчета, ● планы обмена, ● бизнес-процессы, ● задачи, ● перечисления. Необходимо обратить внимание, что типообразующие объекты конфигурации образуют тип данных сразу после создания в конфигураторе объекта любого из таких типов. При этом появляются сразу три новых вида типов: Ссылка, Объекти Список. Например, когда в конфигураторе создается новый справочник, то в списке типов данных появляются новые типы данных: СправочникСсылка.<ИмяСправочника>, СправочникОбъект.<ИмяСправочника>и СправочникСписок.<ИмяСправочника>. Такие типы данных могут быть присвоены любому из типизированных объектов конфигурации. Некоторые данные могут иметь составной тип. Для этого в окне редактирования типа данных нужно установить флажок Составной тип данных и указать те типы, которые могут принимать данные. Кроме того, допускается выбор специального типа ЛюбаяСсылка. При выборе типа данных реквизита система, помимо выбора типов, определенных в конкретном прикладном решении, предоставляет разработчику возможность выбирать наборы типов. Наборами типов, например, являются ЛюбаяСсылка, СправочникСсылка, Характеристика.<имя>и др. Наборы типов, так же как и составной тип данных, содержат некий перечень типов, определенных в данном прикладном решении, однако, в отличие от составного типа, этот перечень формируется системой автоматически, в результате анализа метаданных. Например, в прикладном решении имеются справочники Номенклатураи Контрагенты. Если определен реквизит составного типа данных, в который входят типы СправочникСсылка.Номенклатураи СправочникСсылка.Контрагенты, то наряду с этим можно определить реквизит, содержащий набор типов СправочникСсылка. И в том и в другом случае можно хранить в реквизите ссылки как на справочник Номенклатура, так и на справочник Контрагенты. После добавления нового справочника Ценыв реквизите составного типа по-прежнему могут храниться только ссылки на справочники Номенклатураи Контрагенты, а в реквизите, описанном как набор типов, допускается хранение ссылки на любой из справочников, доступных в данной конфигурации, в том числе и на справочник Цены. При запуске прикладного решения набор типов преобразуется системой, как правило, в составной тип, содержащий все типы, которые должны входить в этот набор. Поэтому во втором случае в набор типов попадет и новый справочник Цены. Однако набор типов не всегда преобразуется системой в составной тип данных. Если оказывается, что в набор типов входит единственный тип значений, то набор типов будет преобразован в этот самый тип значений. Такая ситуация возможна, например, когда план видов характеристик (назовем его Свойства) имеет единственный тип значений в свойстве ТипЗначенияХарактеристик. Тогда набор типов Характеристика.Свойствабудет преобразован системой не в составной тип данных, содержащий один тип значений, а в тот единственный тип значений, который указан для плана видов характеристик. Эта особенность может быть важна, когда, например, выполняется проверка реквизита, тип которого описан как Характеристика.Свойства, на заполненность. Когда Характеристика.Свойствапреобразуется системой в составной тип данных, проверять нужно на значение Неопределено, а если Характеристика.Свойствапреобразуется в определенный тип значения, то проверять нужно на значение по умолчанию данного типа. 1.3.3. Командный интерфейс Командный интерфейс – это основное средство навигации пользователя по функциональности конфигурации. Командный интерфейс строится на основе подсистем. Разработчик конфигурации включает прикладные объекты в соответствующие подсистемы. На основе этой информации (структуры подсистем и привязки объектов к подсистемам) система автоматически строит командный интерфейс для пользователя. Пользователю отображается структура прикладного решения (иерархия подсистем) и предоставляются стандартные команды доступа к функциональности прикладных объектов (вызов списков справочников, документов, открытие отчетов, обработок и т. д.). Однако разработчик, разумеется, может отредактировать предлагаемое системой построение командного интерфейса (изменить порядок, видимость команд). Для этого предназначен редактор командного интерфейса, который вызывается как для конкретной подсистемы, так и для всех подсистем. Сами команды, включаемые в командный интерфейс (открытие списков, ввод новых объектов, открытие отчетов и т. д.), предоставляются системой автоматически. Но разработчик может создать свои команды, которые будут включаться в командный интерфейс. Цель создания интерфейса – обеспечить структурированный доступ пользователей к той информации, которая необходима им в соответствии с их обязанностями. 1.3.4. Форма Совокупность экранного диалога, модуля, реквизитов и команд называется формой. Большинство объектов конфигурации в системе «1С:Предприятие» могут иметь визуальную форму. В самом общем случае форма как объект конфигурации состоит из следующих частей: ● Экранный диалог, используемый для ввода и редактирования информации. ● Модуль формы – программа на встроенном языке системы «1С:Предприятие». Как правило, модуль формы выполняет обработку вводимой в диалог информации для целей входного контроля, выполнения расчетов и т. д. ● Список реквизитов. ● Команды, используемые в форме. Любая из этих составных частей формы может отсутствовать, то есть не содержать информации. С помощью формы можно реализовать интерактивное взаимодействие прикладного объекта с пользователем. Характер такого взаимодействия разрабатывается специалистом, осуществляющим конфигурирование системы «1С:Предприятие». Подробнее об устройстве формы см. здесь. Для разработки форм в конфигураторе применяется редактор форм, позволяющий редактировать все компоненты формы во взаимосвязи. 1.3.5. Модуль Модулем называется программа на встроенном языке системы «1С:Предприятие». Модули располагаются в заданных точках структуры конфигурации и вызываются для выполнения в заранее известные моменты работы системы «1С:Предприятие». Специалист, выполняющий конфигурирование системы, может использовать модули для описания сложных алгоритмов взаимодействия объектов конфигурации, для которых недостаточно имеющихся в конфигураторе визуальных средств. В конфигурации существует несколько видов модулей. Это модуль управляемого приложения, модуль обычного приложения, модуль внешнего соединения, модуль сеанса, общие модули, модули форм и модули объектов конфигурации (менеджеров значения констант, справочников, документов, планов видов характеристик, планов счетов, планов видов расчета, планов обмена, бизнес-процессов, задач, отчетов, обработок, наборов записей регистров), модули менеджеров объектов конфигурации (справочников, документов, планов видов характеристик, планов счетов, планов видов расчета, планов обмена, бизнеспроцессов, задач, отчетов, обработок, регистров сведений, регистров накопления, регистров бухгалтерии, регистров расчета, перечислений, журналов документов, хранилищ настроек), модули наборов записей (регистров сведений, регистров накопления, регистров бухгалтерии, регистров расчета), модули команд. Для доступа к модулю необходимо в контекстном меню объекта конфигурации выбрать пункт Открыть модуль... Для корневого объекта конфигурации выбирается модуль управляемого приложения, модуль сеанса, модуль внешнего соединения и модуль обычного приложения. Некоторые объекты (например, константы, журналы документов) не имеют модуля. Подробное описание назначений модулей см. в разделе «Что такое программный модуль?» справки по встроенному языку. В модулях объектов возможно объявление переменных, процедур и функций, которые будут доступны при работе с объектом извне во встроенном языке, дополняя контекст объекта. В этих модулях располагают процедуры обработки различных событий, например, ввода на основании. Также в них располагают различные процедуры, с помощью которых выполняются действия над объектом, инициированные вне данного объекта (например, выполнение печати). Модуль менеджера позволяет расширить функциональность менеджеров, предоставляемых системой, за счет написания процедур и функций на встроенном языке. Фактически это позволяет описать методы для объекта конфигурации (например, справочника), которые относятся не к конкретному экземпляру объекта базы данных, а к самому объекту конфигурации. Модуль менеджера не может иметь переменных и тела модуля. Если функции или процедуры модуля менеджера объявлены как экспортируемые, к ним можно будет получить доступ через менеджер объекта: // Модуль менеджера справочника Контрагент. Функция ПолучитьСписокДебиторов()... КонецФункции // Вызов из прикладного кода. Дебиторы = Справочники.Контрагент.ПолучитьСписокДебиторов(); 1.3.6. Макет Макетом в системе программ «1С:Предприятие» называется объект конфигурации, предназначенный для формирования печатных форм. Общие макеты печатных форм располагаются в ветви Макеты ветви Общие дерева конфигурации: печатные формы объектов конфигурации (справочников, документов, журналов документов, планов счетов, планов видов характеристик, планов видов расчетов, регистров, отчетов и обработок и других объектов) располагаются в подчиненных объектах Макеты, а также во внешних файлах (в этом случае должно быть установлено свойство табличного документа Макет). Макеты могут быть следующего типа: ● Табличный документ – предполагает использование стандартной технологии создания и использования макетов. Подготовка макета производится с помощью табличного редактора. ● Двоичные данные – используются двоичные данные. ● ActiveDocument – предполагает использование технологии OLE Active document. ● HTML-документ – предполагает использование редактора HTML-документа. ● Текстовый документ – предполагает использование текстового документа в качестве макета. Подготовка текстового макета производится с помощью редактора текстовых макетов. ● Географическая схема – предполагает использование географической схемы, подготовленной в редакторе географических схем, в качестве макета. ● Графическая схема – предполагает использование подготовленной в редакторе графической схемы. ● Схема компоновки данных – предполагает использование схемы компоновки данных, подготовленной в конструкторе. ● Макет оформления компоновки данных – предполагает использование макета оформления системы компоновки данных. 1.4. Варианты работы «1С:Предприятие» поддерживает два варианта работы: ● файловый, ● клиент-серверный. И в том и в другом варианте все прикладные решения работают полностью идентично. Файловый вариант работы в основном предназначен для персонального использования, в то время как клиент-серверный вариант – для использования в рабочих группах или в масштабе предприятия. 1.4.1. Файловый вариант Файловый вариант работы с информационной базой рассчитан на персональную работу одного пользователя или работу небольшого количества пользователей в локальной сети. В этом варианте все данные информационной базы (конфигурация, база данных, административная информация) располагаются в одном файле. Такой вариант работы обеспечивает легкость установки и эксплуатации автоматизированной системы. При этом для работы с информационной базой не требуются дополнительные программные средства, достаточно иметь операционную систему и «1С:Предприятие». Файловый вариант «1С:Предприятия» обеспечивает высокую целостность информационной базы и простое создание резервных копий. Исключена ситуация, когда пользователь может по ошибке (например, при копировании информационной базы) перепутать различные файлы информационной базы и привести таким образом систему в неработоспособное состояние. Кроме этого, резервное копирование может осуществляться на файловом уровне, путем простого копирования файла информационной базы. Однако, несмотря на легкость и простоту использования, файловый вариант обладает некоторыми ограничениями (см. здесь). 1.4.2. Клиент-серверный вариант Клиент-серверный вариант предназначен для использования в рабочих группах или в масштабе предприятия. Он реализован на основе трехуровневой архитектуры «клиентсервер». Программа, работающая у пользователя (клиентское приложение), взаимодействует с кластером серверов «1С:Предприятия», а кластер, при необходимости, обращается к серверу баз данных (Microsoft SQL Server, PostgreSQL, IBM DB2 или Oracle Database). При этом физически кластер серверов «1С:Предприятия» и сервер баз данных могут располагаться как на одном компьютере, так и на разных. Это позволяет администратору при необходимости распределять нагрузку между серверами. Использование кластера серверов «1С:Предприятия» позволяет сосредоточить на нем выполнение наиболее объемных операций по обработке данных. Например, при выполнении даже весьма сложных запросов программа, работающая у пользователя, будет получать только необходимую ей выборку, а вся промежуточная обработка будет выполняться на сервере. Обычно увеличить мощность кластера серверов гораздо проще, чем обновить весь парк клиентских машин. Другим важным аспектом использования 3-уровневой архитектуры является удобство администрирования и упорядочивание доступа пользователей к информационной базе. В этом варианте пользователь не должен знать о физическом расположении конфигурации или базы данных. Весь доступ осуществляется через кластер серверов «1С:Предприятия». При обращении к той или иной информационной базе пользователь должен указать только имя кластера и имя информационной базы, а система запрашивает соответственно имя и пароль пользователя. Подробнее с администрированием системы можно ознакомиться в книге «1С:Предприятие 8.3. Руководство администратора». Несмотря на то, что система «1С:Предприятие» старается скрыть от пользователя особенности поведения различных серверов баз данных, это не всегда удается. Особенности работы системы с тем или иным сервером баз данных см. здесь. Важной особенностью работы в клиент-серверном варианте является возможность работы сервера «1С:Предприятия» и серверов баз данных на различных операционных системах (семейство Windows и различные дистрибутивы Linux). 1.5. Технологические средства разработки Для описания специфических алгоритмов обработки информации и создания интерфейса, ориентированного на удобное представление описанных в конфигурации данных, в системе «1С:Предприятие» используются несколько технологических механизмов. Встроенный программный язык. Необходимость наличия встроенного языка определена концепцией настраиваемости системы. Синтаксис встроенного языка вполне отвечает стандартам высокоуровневых языков. Язык является предметно-ориентированным. Он поддерживает специализированные типы данных предметной области, определяемые конфигурацией системы. Работа с этими типами данных в языке организована с использованием объектной техники. Язык ориентирован на пользователей различной квалификации. В частности, его отличает мягкая типизация данных, обеспечивающая быстрое написание программных модулей, и жесткий контроль синтаксических конструкций, уменьшающий вероятность ошибок. Так как система сочетает в себе визуальные и языковые средства конфигурирования, использование встроенного языка в системе имеет событийно-зависимую ориентацию, то есть языковые модули используются в конкретных местах для отработки отдельных алгоритмов, настраиваемых в процессе конфигурации. Так, например, для документа можно описать алгоритм автоматического заполнения реквизитов при вводе нового документа. Данная процедура будет вызвана системой в нужный момент. Механизм запросов. Для получения произвольных отчетов сложной структуры в системе предусмотрен предметно-ориентированный механизм запросов. Данное средство опирается на существующую условно-переменную структуру информационной базы системы, что позволяет сравнительно просто описывать достаточно сложные запросы. Встроенный текстовый редактор используется для создания программных модулей на встроенном языке и для редактирования документов в текстовом виде. Одной из особенностей редактора является возможность контекстного выделения цветом синтаксических конструкций встроенного языка, а также группировка различных синтаксических конструкций. При наборе текстов на встроенном языке удобно пользоваться контекстной подсказкой и шаблонами. Благодаря тому, что встроенный язык системы имеет мощные средства манипулирования текстами, текстовый формат может быть успешно использован для обмена с другими системами самой различной информацией. Встроенный редактор форм. Работа с настраиваемыми структурами данных и работа в интерфейсе операционной системы Microsoft Windows вызывает необходимость произвольной настройки форм для ввода и редактирования информации. Для этого в системе «1С:Предприятие» существует встроенный редактор форм. Редактор позволяет оформить большинство окон, которые используются в системе для ввода и просмотра предметной информации (формы документов, справочников, настройки отчетов). Встроенный редактор табличных документов. Для всех выходных документов (первичных документов и отчетов) в системе предусмотрен единый формат – формат табличных документов. Редактор табличных документов – это мощное средство, сочетающее в себе оформительские возможности табличной структуры и векторной графики. Он может быть использован как для создания небольших документов с очень сложной структурой линий (типа платежного поручения), так и для объемных ведомостей, журналов и других подобных документов. Редактор табличных документов предоставляет пользователям богатый набор оформительских возможностей (шрифты, цвета, линии, узоры). Имеется возможность вывода информации в графическом виде (диаграммы). Одной из главных особенностей редактора табличных документов является ориентация на формирование отчетов при помощи встроенного языка системы «1С:Предприятие». Гибкое построение отчетов с его помощью становится возможным благодаря наличию механизма манипулирования именованными областями документа. Редактор табличных документов позволяет манипулировать не только горизонтальными, но и вертикальными областями, что делает возможным создание отчетов, масштабируемых не только в высоту, но и в ширину. Сочетание возможностей редактора с таким объектом, как система компоновки данных, позволяет создавать универсальные отчеты, которые дают возможность обрабатывать и представлять информацию в различных разрезах и различной детализации без дополнительного вмешательства разработчика. С другой стороны, табличный документ может выступать в качестве элемента управления формы и таким образом использоваться для ввода данных. Встроенный редактор картинок. Редактор позволяет создавать картинки произвольных размеров для использования их в качестве пиктограмм панели инструментов, картинок кнопок и других оформительских целей. Встроенный редактор HTML-документов. Редактор позволяет создавать пользовательские описания и имеет большие оформительские возможности (механизм гиперссылок, использование стилей, размещение картинок и т. д.). Конструкторы – вспомогательные инструменты, облегчающие разработку стандартных элементов системы «1С:Предприятие». В системе имеются, например, конструкторы форм констант, справочников, документов, журналов документов, отчетов и других объектов, конструкторы печатных форм, конструкторы движений регистров и другие. С помощью конструкторов производится не только формирование визуальных составляющих этих объектов, но и в некоторых случаях (ввод на основании, печать, выходная форма и др.) формируются программные модули. Система настройки пользовательского интерфейса. Для того чтобы интерфейс конкретной конфигурации системы полностью отражал настроенные структуры данных и алгоритмы, в системе «1С:Предприятие», помимо редактора диалоговых форм и табличных документов, предусмотрена возможность настройки командного интерфейса системы. При этом командный интерфейс автоматически учитывает права доступа пользователя, который вошел в систему. При этом пользователю будут показаны только те объекты системы, доступ к которым пользователю разрешен. Подсистемы. Конфигуратор позволяет на этапе проектирования в рамках одной конфигурации выделить различные подсистемы (например, торговый учет и исследовательский комплекс). Для каждой подсистемы можно указать объекты конфигурации, которые в нее входят. Допускается указывать принадлежность одного объекта к нескольким подсистемам. Фактически подсистемы определяют основные разделы конфигурации, с которыми будет работать пользователь. В связи с тем, что структура подсистем определяет интерфейс конфигурации, следует уделять вопросам проектирования подсистем (и их иерархии) особое внимание. Система настройки прав доступа (роли). Данная система позволяет описывать наборы прав, соответствующие должностям пользователей или виду деятельности. Структура прав определяется конкретной конфигурацией системы. Например, могут быть введены такие наборы прав, как Главный бухгалтер, Кладовщик, Менеджер, Начальник отдела. Кроме того, для объектов, хранящихся в базе данных (справочник, документы, регистры и т. д.), могут быть определены права доступа к отдельным полям и записям. Сам список пользователей создается уже для конкретной организации. Каждому пользователю назначается одна или несколько ролей, основной интерфейс и язык, используемые при работе с программой. Отладчик. Для удобства разработки конфигурации в системе предусмотрен отладчик. Отладчик позволяет прослеживать исполнение программных модулей конфигурации, замерять сравнительное время исполнения, просматривать содержимое переменных. Хранилище конфигураций. Для групповой разработки конфигурации разработчики используют механизм хранилища конфигурации. Он позволяет распределять права доступа по модификации объекта конфигурации и производить необходимые изменения одновременно, а не последовательно. Поддержка конфигураций. Для удобства проведения обновлений конфигураций предусмотрен механизм формирования разработчиками типовых конфигураций файлов поставки и комплектов поставки (включают программу установки), а также механизм обновления типовых конфигураций, находящихся на поддержке. Глава 2. Работа с конфигурацией В этой главе будут рассмотрены общие приемы работы с объектами конфигурации, которые применимы к объектам любых типов. Особенности создания и редактирования объектов конфигурации различных типов рассматриваются далее в соответствующих главах Руководства. В данной главе в основном рассматриваются визуальные средства управления объектами конфигурации, имеющиеся в конфигураторе. Описание встроенного языка представлено в справке по встроенному языку. О сохранении и восстановлении информационной базы данных см. книгу «1С:Предприятие 8.3. Руководство администратора» или «1С:Предприятие 8.3. Клиент-серверный вариант. Руководство администратора». В информационной базе системы «1С:Предприятие» хранятся две конфигурации: ● основная конфигурация (редактируемая, далее просто конфигурация), ● конфигурация базы данных. Конфигурация базы данных определяет структуру таблиц базы данных и всю функциональность, с которой работают пользователи. Основная конфигурация используется только для изменения. Это позволяет вносить и сохранять изменения в конфигурации в процессе работы пользователей. Произвести изменение в конфигурации базы данных в процессе работы пользователей нельзя. О работе с конфигурацией базы данных см. здесь. 2.1. Открытие конфигурации Работа с конфигурацией осуществляется в окне Конфигурация. Для открытия конфигурации нужно выбрать пункт Конфигурация – Открыть конфигурацию. На экран выводится окно Конфигурация. Рис. 2. Конфигурация Чтобы увеличить рабочую область для работы с различными объектами, окно Конфигурация можно временно закрыть. Закрытие окна Конфигурация не означает завершения работы с отдельными ее составляющими, открытыми для редактирования: закрывается не конфигурация, а окно конфигурации. Для открытия окна Конфигурация нужно выбрать пункт Конфигурация – Окно конфигурации. 2.2. Сохранение конфигурации В процессе редактирования конфигурации могут быть созданы новые, изменены существующие или удалены имеющиеся объекты, подчиненные объекты (формы, реквизиты и т. д.). Любое такое изменение приводит к модифицированности конфигурации. Признак модифицированности конфигурации «*» показывается в заголовке окна Конфигурация. Для сохранения конфигурации (без завершения работы с конфигурацией) нужно выбрать пункт Конфигурация – Сохранить конфигурацию. Пункт доступен, если конфигурация была изменена, в отличие от редакторов текстового, табличного и HTML-документов, для которых пункт доступен всегда. Сохранение измененной конфигурации возможно в любой момент времени, даже если запущен режим 1С:Предприятие или производится отладка. 2.3. Закрытие конфигурации Для закрытия конфигурации нужно выбрать пункт Конфигурация – Закрыть конфигурацию. При этом если конфигурация была модифицирована (были произведены изменения), то конфигуратор выводит сообщение: Конфигурация была изменена. Сохранить изменения? Для сохранения внесенных изменений выбрать кнопку Да. Закрытие конфигурации с сохранением произведенных изменений возможно в любой момент времени, даже если запущен режим 1С:Предприятие или производится отладка. 2.4. Сохранение конфигурации в файл Для сохранения конфигурации в файл на диск нужно выбрать пункт Конфигурация – Сохранить конфигурацию в файл. На экран выводится стандартный диалог выбора файла. Следует выбрать каталог и указать имя файла, в который будет записана конфигурация. Сохраненный файл конфигурации необходим для операции сравнения и объединения конфигураций (см. здесь). ПРИМЕЧАНИЕ. Если конфигурация стоит на поддержке, то в информационной базе всегда хранится конфигурация поставщика. 2.5. Загрузка конфигурации из файла Для полной замены текущей конфигурации на конфигурацию, сохраненную в файле, нужно выбрать пункт Конфигурация – Загрузить конфигурацию из файла. 2.6. Дерево объектов конфигурации Конфигурация представляется в виде древовидной структуры, каждая ветвь которой описывает определенную составляющую конфигурации. Объекты конфигурации в дереве конфигурации представлены своими именами. Например, в ветви Документы располагаются объекты всех документов, используемых в конфигурации, а ветвь РасходнаяНакладнаяописывает объект документа Расходная накладная, ветвь Общие – Роли – все роли (права доступа к информации), используемые для различных видов пользователей, а ветвь Менеджер – права доступа менеджера отдела продаж и т. д. Корневые ветви дерева объединяют объекты конфигурации, логически связанные между собой и имеющие общее назначение. Например, ветвь Документы объединяет объекты типа Последовательности, Нумераторыи, собственно, объекты конфигурации типа Документ. Все эти объекты предназначены для организации ввода документов в системе «1С:Предприятие». Для работы в конфигураторе удобно использовать клавиатуру. Перечень сочетаний клавиш, которые могут использоваться в конфигураторе, можно получить во встроенной справке (раздел называется Сочетания клавиш (Конфигуратор)). Объекты конфигурации в пределах «своей» группы объектов конфигурации можно расставить в требуемом порядке. В таком же порядке объекты конфигурации будут выдаваться в различных списках. Для перестановки объекта конфигурации необходимо выделить его в окне Конфигурация и использовать пункты меню Действия – Переместить вверх или Действия – Переместить вниз, а также Действия – Упорядочить список. Для удобства поиска в дереве конфигурации объекта, редактируемого в данный момент (окно редактирования объекта, формы, макеты, модули), следует использовать пункт меню Правка – Найти в дереве. Предварительно нужно сделать активным окно редактирования объекта. После выполнения команды в дереве конфигурации будет выбран объект, данные которого в данный момент редактируются. Поиск в дереве метаданных можно осуществить двумя способами: ● Начать набирать на клавиатуре наименования объекта (при этом поиск будет выполняться только в открытых ветках дерева). ● Использовать стандартный механизм поиска (для вызова окна поиска необходимо нажать Ctrl + F). В этом случае будет открыто окно Результаты поиска, из которого можно перейти к требуемому объекту метаданных. Наименования объектов конфигурации, а также подчиненных объектов (реквизитов, табличных частей, форм и т. д.) можно перетаскивать в модули и текстовые документы с помощью мыши стандартным образом. 2.7. Настройка сортировки дерева метаданных Данный режим предназначен для сортировки объектов конфигурации. За один раз могут быть отсортированы однотипные объекты конфигурации, подчиненные одному объекту конфигурации. Рис. 3. Сортировка метаданных Например, формы конкретного справочника. ● Сортировать по – выбор свойства, по которому будет выполняться сортировка: ● Имени. Сортировка будет выполнена по именам объектов конфигурации. ● Синониму. Сортировка будет выполнена по синонимам объектов конфигурации. ● Комментарию. Сортировка будет выполнена по комментариям объектов конфигурации. ● Направление сортировки – выбор направления сортировки: ● По возрастанию. Будет выполняться сортировка в порядке возрастания. ● По убыванию. Будет выполняться сортировка по убыванию. 2.8. Создание и удаление объекта конфигурации 2.8.1. Создание объекта конфигурации Управление большинством объектов конфигурации выполняется в окне Конфигурация. В этом разделе будут изложены общие приемы создания объектов конфигурации, применимые к объектам конфигурации любых типов. Для создания нового объекта конфигурации необходимо выполнить следующие действия: ● в дереве конфигурации выделить наименование типа объекта конфигурации или любого из существующих объектов конфигурации того типа, который должен быть у создаваемого объекта; ● выбрать пункт Действия – Добавить окна Конфигурация. Создание нового подчиненного объекта можно также производить следующим образом: ● открыть окно редактирования объекта (выбрать пункт Действия – Изменить окна Конфигурация); ● указать нужный вид подчиненного объекта; ● нажать кнопку Добавить. В результате этих действий на текущей ветви дерева конфигурации появится новый объект, а на экран для редактирования свойств этого объекта будет автоматически вызвана палитра свойств, если палитра еще не была открыта (о работе с палитрой свойств см. здесь). Для объектов, имеющих широкий набор редактируемых свойств, дополнительно к палитре свойств может вызываться окно редактирования (о работе в окне см. здесь). Новому объекту конфигурации присваивается условное имя, состоящее из слова, соответствующего типу создаваемого объекта, и числа – порядкового номера нового объекта конфигурации. Например, для нового справочника имя будет начинаться со слова «Справочник». Палитра свойств объекта будет содержать значения свойств, задаваемые по умолчанию. В конфигураторе контролируются имена объектов перед обновлением конфигурации базы данных и перед формированием поставки. Для объектов, которые могут иметь подчиненные объекты (например, справочник может иметь реквизиты, табличные части, формы и макеты), производится создание нужного числа и состава подчиненных объектов. Их формирование и настройка производятся с использованием различных средств конфигуратора. Для облегчения создания некоторых составных частей (запросов, макетов и процедур печати, движений регистров, ввода на основании) объектов в конфигураторе имеются различные конструкторы – вспомогательные инструменты, облегчающие процесс проектирования (подробнее см. здесь). Для тех типов объектов, которые могут иметь формы, в системе имеются конструкторы форм – вспомогательные инструменты, облегчающие разработку форм объектов. Конструктор форм запускается при создании новой формы (о работе с конструктором форм см. здесь). Для редактирования форм предназначен редактор форм (о работе с ним см. здесь). Редактирование макетов, которые основаны на табличном документе, производится редактором табличных документов (см. здесь). Для формирования макетов можно использовать конструктор печати (см. здесь) и конструктор выходных форм (см. здесь). Редактирование макетов, которые основаны на текстовом документе, производится редактором текстовых документов (см. здесь). Программы на встроенном языке, располагающиеся в модулях, создаются с использованием текстового редактора (см. здесь). Для создания нового объекта можно использовать механизм перетаскивания объектов с помощью мыши. При перетаскивании объекта (как в пределах «своей» ветки, так и за ее пределы) создается новый объект. При этом производится проверка возможности использования исходных свойств объекта в результирующем. Если результирующий объект поддерживает свойства, то они копируются. Пример успешного копирования: перенос реквизитов, макетов справочника в документ. При копировании того же справочника в объект типа Стильуспешно перенесутся только имя, синоним и комментарий. Если исходный объект содержит подчиненные объекты (реквизиты, формы, макеты и др.), то при перетаскивании на «подобный» уровень (например, перетаскивается объект Справочник.Валютыв ветвь Документы) скопируются реквизиты, формы, макеты и табличные части. При этом некоторые свойства составных частей могут быть изменены (например, для документа отсутствует свойство Родитель). 2.8.2. Удаление объекта конфигурации Для удаления объекта конфигурации нужно указать его в дереве конфигурации и выбрать пункт Действия – Удалить окна Конфигурация. Если на объект нет ссылок в других объектах конфигурации, объект удаляется. Если на объект есть ссылки (объект используется), то выдается сообщение: Объект не может быть удален, так как на него есть ссылки в других объектах! А в окне сообщений выводится список использования данного объекта. На рис. 4 приведен пример окна сообщений при попытке удаления документа ПриходТовара. Рис. 4. Служебные сообщения Для перехода к объекту, в котором используется ссылка на удаляемый объект, нужно дважды щелкнуть мышью наименование этого объекта в окне сообщений. 2.8.3. Ссылки на объект конфигурации С точки зрения взаимосвязи объекты конфигурации делятся на несвязанные (например, реквизит Закупочная цена, имеющий тип Число) и связанные (например, реквизит Единица измерения справочника Номенклатура, ссылающийся на справочник Единицы измерения). Часто бывает полезно знать, какие объекты конфигурации ссылаются на данный объект, а также выяснить, какие объекты связаны с данным объектом. Для этих целей используются команды Действия – Поиск ссылок на объект и Действия – Поиск ссылок в объекте окна Конфигурация. На экран выводится диалог (см. рис. 5). Рис. 5. Ссылки на объект В нем нужно указать область поиска (свойства, подчиненные объекты) и нажать кнопку ОК. Если ссылки есть, то при выполнении команды в окно сообщений выводится список ссылок. Если ссылок нет, то на экран выводится одно из предупреждений: ● Ссылок на данный объект не существует, ● Ссылок в объекте не обнаружено. Команда Действия – Поиск ссылок в объекте выводит перечень всех агрегатных типов, которые использованы в объекте. Для перехода по ссылке необходимо дважды щелкнуть мышью соответствующую строку с наименованием объектассылки в окне сообщений. 2.9. Палитра свойств Процесс редактирования объекта конфигурации заключается в изменении свойств объекта, чтобы добиться требуемого поведения объекта в процессе использования. Палитра свойств – это окно в виде набора свойств, которые можно определить для объекта конфигурации. Состав свойств зависит от типа редактируемого объекта. В этом разделе описываются основные приемы работы с палитрой свойств. Для вызова палитры свойств нужно указать объект конфигурации и выбрать пункт Правка – Свойства. В палитре свойств свойства объекта группируются по категориям. Числокатегорий и состав свойств, размещенных в каждой категории, зависит от вида рассматриваемого объекта. Например, для реквизита документа палитра свойств содержит только категории свойств Основные, Характеристики и Тип данных. Состав свойств категории также зависит от вида объекта. Даже в случае выбора одинаковых видов объектов состав свойств определяется индивидуальными настройками конкретных объектов. Например, для иерархического справочника в состав свойств табличного поля категории Использование дополнительно включаются свойства Дерево, Иерархический просмотр и другие. Состав свойств также зависит от выбранных значений других свойств. Например, в свойстве Типпри выборе примитивного типа Числодобавляются свойства, характеризующие выбранный тип: Длина, Точностьи Неотрицательное. Панель инструментов палитры свойств состоит из пяти кнопок (см. рис. 6). С помощью первых трех кнопок производится управление показом свойств. Рис. 6. Кнопки окна свойств Далее описываются кнопки панели: ● Сортировка по алфавиту. Производит вывод свойств объекта, отсортированных по алфавиту (кнопка нажата). Сами категории не показываются. ● Сортировка по категориям. Производит вывод свойств объекта, отсортированных по категориям (кнопка нажата). ● Показывать только важные. При нажатой кнопке выводятся только важные свойства объекта; при отжатой – все свойства. ● Отменить редактирование. Отмена изменений в текстовом поле свойства. ● Сохранить. Записать изменения в текстовое поле свойства. Категории свойств можно располагать в виде закладок или списком. При расположении свойств списком сами свойства могут быть представлены в виде списка по категориям или по алфавиту (при этом наименования категорий не показываются). Для выбора способа показа категорий (должен быть включен показ категорий – кнопка Сортировка по категориям нажата) в любом свободном месте окна палитры свойств нужно открыть контекстное меню и выбрать необходимый способ показа (Закладками или Списком). Если выбран способ показа Закладками, то кнопки (Сортировка по алфавиту и Сортировка по категориям) становятся недоступными. При выборе способа показа Закладками для перехода к свойствам другой категории необходимо щелкнуть мышью соответствующую закладку. Для возврата к режиму показа категорий списком в окне свойств контекстного меню нужно выбрать пункт Списком. Если выбран способ показа Списком, то свойства объекта располагаются по категориям или по алфавиту. Для расположения по алфавиту следует нажать кнопку Сортировка по алфавиту панели инструментов палитры свойств. Все свойства показываются подряд в алфавитном порядке. Для расположения по категориям нужно нажать кнопку Сортировка по категориям панели инструментов. Все свойства группируются по категориям в виде списка (одна под другой). Наименование категории показывается полужирным шрифтом. Слева от наименования расположена кнопка управления показом свойств, входящих в категорию. Кнопка позволяет скрыть или показать набор свойств. Двойной щелчок мыши по наименованию категории свойств приводит к сворачиванию всех остальных категорий и показу свойств данной категории. При нажатой кнопке Показывать только важные производится показ только важных (основных) свойств объекта (независимо от режима показа списком или закладками, по категориям или по алфавиту). Для просмотра всех свойств нужно снова нажать кнопку Показывать только важные. В зависимости от вида объекта его свойства бывают доступными или недоступными для изменения. Например, в текстовом документе свойства объекта предназначены только для показа числа строк и символов, а также статуса документа, но они недоступны для изменения. Каждое свойство в палитре свойств имеет наименование, а также развернутое пояснение. Режим получения развернутого описания устанавливается с помощью команды контекстного меню Пояснение, вызываемого в любом свободном месте палитры свойств (вне полей ввода). Если этот режим установлен, то при выборе свойства в нижней части палитры свойств выводится развернутое пояснение. Помимо пояснительного описания может выводиться имя свойства для доступа к значению из программного модуля. Для свойств, которые могут быть доступны с помощью средств встроенного языка, можно настроить их показ в виде наименования или в виде имен свойств. Например, свойство с наименованием Тип значения имеет имя ТипЗначения. Режим показа можно изменить с помощью команды Отображать имена свойств контекстного меню. Имена свойств показываются в соответствии с выбранным вариантом встроенного языка. ВНИМАНИЕ! Имена свойств объектов метаданных и объекта метаданных Конфигурация не отображаются. Способ ввода значений в палитре свойств зависит от типа редактируемого свойства. Рис. 7. Возможные действия Для текстовых реквизитов – это обычный ввод текста (можно использовать буфер обмена), для свойств типа «флажок» – щелчок мышью. Значения некоторых свойств выбираются из списков. Поля таких свойств имеют кнопку списка выбора (см. рис. 7). Если поле свойства имеет кнопку выбора (см. рис. 7), то при ее нажатии открывается окно, в котором производится выбор значения свойства (или его просмотр в случае, когда редактирование объекта невозможно, например, для не захваченных в хранилище конфигурации объектов или для объектов, находящихся на поддержке без возможности редактирования). К таким свойствам относится, например, выбор файла картинки, определение цвета и другие. По кнопке просмотра (см. рис. 7) для текстовых данных вызывается окно редактирования строки на разных языках, для событий – процедура модуля формы, отрабатывающая данное событие, для свойств из категории Представление – существующая форма объекта данных. По кнопке очистки (см. рис. 7) производится сброс значения указанного свойства. Кнопка регулирования (см. рис. 7) позволяет увеличивать или уменьшать числовое значение на 1 в сторону больших или меньших значений. Кнопки в полях могут комбинироваться. При начале редактирования любого текстового поля палитры свойств становятся доступными кнопки панели инструментов палитры свойств Отменить редактирование (см. рис. 6) и Сохранить (см. рис. 6). Нажатие кнопки отмены отменяет произведенные изменения. Нажатие кнопки сохранения сохраняет изменение. В палитре свойств могут располагаться ссылки, с помощью которых открываются связанные с выбранным объектом различные формы. Например, вызов справочной информации (описание) объекта конфигурации, различных форм, процедур модуля формы. Такие ссылки изображаются подчеркнутым текстом. Нажатие ссылки открывает окно, связанное с этой ссылкой. Если просматриваются свойства объекта, редактирование которого запрещено (например, объект не захвачен в хранилище (см. здесь), то допускается открытие диалога редактирования типа в режиме «только просмотр». 2.10. Окно «Дополнительно» Для удобства просмотра и установки основных интерфейсных свойств объекта конфигурации можно использовать окно Дополнительно. Для его открытия нужно выбрать пункт Правка – Дополнительно. Для просмотра свойств достаточно в окне Конфигурация выбрать требуемый объект. Его свойства будут сразу показаны в окне Дополнительно. Информация в окне распределена по закладкам. Для объектов метаданных допустимо включение объекта в те или иные подсистемы независимо от взаимной подчиненности подсистем. Объект может быть отнесен одновременно и к «родительской», и к подчиненной ей подсистемам. Это выполняется на закладке Подсистемы. Рис. 8. Закладка «Подсистемы» На закладке Права представлен список ролей и права каждой роли по данному объекту. Рис. 9. Закладка «Права» В табличном поле Ограничение доступа к данным редактируются ограничения доступа к данным на уровне отдельных полей и записей (подробнее см. здесь). На закладке Функциональные опции представлен список функциональных опций, существующих в системе. Можно отметить те функциональные опции, к которым привязан данный объект метаданных. Рис. 10. Закладка «Функциональные опции» Закладка Общие реквизиты позволяет указывать, в состав каких общих реквизитов входит текущий объект. Правила редактирования в этом окне одинаковы с правилами редактирования в окне Состав свойства общего реквизита. Рис. 11. Закладка «Общие реквизиты» На закладке Планы обмена представлен список планов обмена. В списке отметками указаны те планы обмена, в которых производится учет изменений по данному объекту. Рис. 12. Закладка «Планы обмена» На закладке Командный интерфейс можно редактировать видимость стандартных и пользовательских команд выбранного объекта метаданных в разрезе различных подсистем. Команды, входящие в начальную страницу, собраны в узел Рабочий стол. Рис. 13. Закладка «Командный интерфейс» На закладке Ввод на основании представлен список объектов, на основании которых может вводиться данный объект, и список объектов, являющихся основанием планов обмена. Рис. 14. Закладка «Ввод на основании» С помощью флажка Только выбранные можно отображать только выбранные объекты или все объекты, которые могут вводиться на основании, где выбранные объекты отмечены флажками. На закладке Настройка поставки можно выбрать правило поставки для выбранного объекта конфигурации, аналогично тому, как это делается в специальном диалоге настройки поставки (см. здесь). Рис. 15. Закладка «Настройка поставки» 2.11. Окно редактирования объекта Для основных объектов конфигурации (справочники, документы, журналы документов и др.) редактирование свойств объектов, управление составом подчиненных объектов, настройку взаимодействия объектов удобно производить с помощью окна редактирования объекта. В большинстве случаев окно редактирования объекта вызывается при выборе пункта Действия – Изменить окна Конфигурация. Редактируемые свойства располагаются на нескольких закладках. Каждая закладка содержит набор реквизитов для настройки свойств объекта определенного вида. Так, на закладке Основные вводятся свойства Имя, Синоним и Комментарий; на закладке Подсистемы указывается, в каких подсистемах используется данный объект. Переход по закладкам производится с помощью кнопок Далее > и < Назад. Кроме того, нужная закладка может быть выбрана указателем мыши. В форме есть кнопка Действия, при нажатии которой на экран выводится контекстное меню объекта. С помощью команд этого меню можно открыть нужную форму, модуль объекта (если есть), вызвать нужный конструктор и другие действия. Состав закладок и набор управляющих элементов на однотипных закладках может меняться в зависимости от типа объекта конфигурации. Например, для объекта Справочникокно редактирования выглядит следующим образом: Рис. 16. Закладка «Основные» На закладке Основные указываются свойства Имя, Синоним и Комментарий. Кроме того, на данной закладке задаются свойства, участвующие в формировании представления объекта в командном интерфейсе (подробнее см. здесь). На закладке Подсистемы указывается, в каких подсистемах используется данный объект. Допустимо включение объекта в те или иные подсистемы независимо от взаимной подчиненности подсистем. Объект может быть отнесен одновременно и к «родительской», и к подчиненной подсистемам. Отнесение объекта к подсистемам определяет, в каких фрагментах командного интерфейса будут отображаться команды редактируемого объекта. Подробнее о командном интерфейсе см. здесь. На закладке Данные создаются реквизиты, ресурсы, измерения, табличные части и реквизиты табличных частей, а также другие подчиненные объекты (в зависимости от типа объекта). Кроме того, на закладке могут содержаться другие элементы управления для настройки свойств, характерных для конкретных типов объектов. Так, для справочника определяется длина наименования и кода, указывается тип кода и основное представление элемента справочника. Рис. 17. Закладка «Данные» С помощью кнопок панели инструментов, расположенной над списками подчиненных объектов, производится добавление, удаление и упорядочивание этих объектов. Свойства подчиненных объектов задаются в палитре свойств. Если окно редактирования открыто для объекта, редактирование которого запрещено (например, объект не захвачен в хранилище (см. здесь)), то допускается открытие диалога редактирования типа в режиме «только просмотр». На закладке Формы ведется управление формами объекта и выбираются основные формы. Рис. 18. Закладка «Формы» Подробнее про основные и дополнительные формы см. здесь. В свойстве Ввод по строке указываются те реквизиты объекта, по которым система будет выполнять поиск информации. Подробнее про ввод по строке см. здесь. Свойство Быстрый выбор отвечает за режим выбора по умолчанию. Подробнее о работе данного свойства см. здесь. На закладке Команды имеется возможность задать пользовательские команды, связанные с данным объектом. Описание видов команд см. здесь. При добавлении новой формы запускается конструктор форм, с помощью которого производится выбор вида формы, подбор состава размещаемых в форме реквизитов и построение собственно формы. Подробнее о работе с конструктором форм см. здесь. Основные приемы редактирования формы см. здесь. На закладке Макеты ведется управление макетами объекта. При добавлении нового макета запускается конструктор макетов, с помощью которого создается макет. Подробнее о работе с конструктором макетов см. здесь. Ниже списка макетов располагается кнопка Конструкторы, при нажатии которой открывается подменю для выбора вида конструктора (состав конструкторов зависит от типа объекта): ● При выборе пункта Конструктор печати запускается конструктор печати, с помощью которого создается макет и процедура для печати. Подробнее о работе с конструктором печати см. здесь. ● При выборе пункта Конструктор выходной формы запускается конструктор выходных (отчетных) форм (см. здесь). На закладке Права определяются права по объектам данного типа для каждой созданной роли. Для прикладных объектов (справочники, документы, планы видов характеристик, планы счетов, планы видов расчета, регистры, бизнес-процессы и задачи) на закладке Планы обмена указывается список объектов типа ПланОбмена. Следует установить пометку для тех планов обмена, в которых учитываются изменения редактируемого объекта. На закладке Прочее расположены кнопки открытия модуля объекта, модуля менеджера, справочной информации, а также может располагаться кнопка Предопределенные для открытия списка предопределенных элементов объекта (для справочников, планов видов характеристик, планов счетов, планов видов расчетов). Также на закладке могут располагаться реквизиты управления блокировкой (см. здесь) и настройки использования полнотекстового поиска (см. здесь). Эти реквизиты присутствуют только для следующих прикладных объектов: ● справочники, ● документы, ● планы видов характеристик, ● планы счетов, ● планы видов расчета, ● регистры, ● бизнес-процессы, ● задачи. Некоторые объекты могут содержать специальные закладки, относящиеся только к данному типу объектов: ● для объекта типа Справочник– это закладки Иерархия, Владельцы, Нумерация; ● для объекта Документ– это Нумерация, Движения, Журналы и Последовательности; ● для объекта ПланыВидовХарактеристик– Иерархия; ● для объекта ПланыВидовРасчетов– Расчет и Ввод на основании; ● для объекта ПланыСчетов– Субконто; ● для объекта РегистрыРасчета– Перерасчеты; ● для объекта Задача– Адресация; ● для всех регистров – Регистраторы; ● для объектов, изменения которых могут учитываться планами обмена, – Обмен данными. 2.12. Создание раздела справочной информации К некоторым объектам конфигурации можно «прикрепить» текст, объясняющий назначение и порядок использования объекта. Такой текст называется пользовательским описанием. При работе с системой «1С:Предприятие» пользователь может вывести описание на экран для просмотра. Создание и корректировка пользовательского описания выполняются при помощи встроенного HTML-редактора, который можно вызвать из палитры свойств объекта по ссылке Открыть свойства Справочная информация. Создание и редактирование текста описания производятся средствами HTML-редактора. Чтобы установить название, в тексте главы следует создать заголовок первого уровня, используя тег <H1> языка разметки. Следует иметь ввиду, что тег <STYLE> (и его содержимое), который может быть указан при ручном редактировании текста справочной информации вне тега <BODY>, будет проигнорирован при отображении главы справки в режиме «1С:Предприятие». Если требуется применить какое-либо специальное оформление для страницы справочной информации, его определение следует выполнять внутри тега <BODY>. Если установлено свойство Включать в содержание справки, то для данного объекта в содержание справки может включаться элемент по значению синонима объекта. Независимо от установки данного свойства в список индексов (для поиска в справке) включается строка по значению синонима объекта. Следует помнить, что появление объекта в дереве содержания зависит от значения одноименного свойства у подсистем, в состав которых входит объект (см. здесь). 2.13. Работа с конфигурацией базы данных 2.13.1. Дерево объектов конфигурации базы данных Для просмотра структуры конфигурации базы данных, свойств, форм, макетов и другой информации об объектах можно открыть окно конфигурации базы данных. Для этого нужно выбрать пункт Конфигурация – Конфигурация базы данных – Открыть окно конфигурации БД. По виду оно не отличается от окна Конфигурация. Рис. 19. Конфигурация базы данных Приемы работы с объектами конфигурации базы данных совпадают с приемами работы в окне Конфигурация с тем лишь отличием, что все объекты доступны только для чтения (просмотра). 2.13.2. Обновление конфигурации базы данных В процессе редактирования конфигурации могут быть созданы новые, изменены существующие или удалены имеющиеся объекты. Текущая структура базы данных может быть отлична от структуры конфигурации. Отличие конфигураций показывается в заголовке окна Конфигурация символами <!>. ПРИМЕЧАНИЕ. Знак отличия <!> конфигураций появляется только после сохранения изменений в основной конфигурации. Однако после сохранения основной конфигурации можно продолжить внесение изменений, и в этом случае в заголовке окна Конфигурация будут присутствовать признаки изменения для обеих конфигураций. Чтобы выполнить приведение в соответствие конфигурации и конфигурации базы данных, необходимо произвести обновление конфигурации базы данных. Для этого нужно выбрать пункт Конфигурация – Обновить конфигурацию базы данных. Если основная конфигурация еще не была сохранена, то сначала конфигуратор выполнит ее сохранение, а потом произведет обновление конфигурации базы данных. Если при обновлении конфигурации базы данных было открыто окно сообщений, то оно очищается. ВНИМАНИЕ! Обновление конфигурации базы данных может потребовать прекращения работы всех пользователей. Перед обновлением можно сравнить конфигурации, а также провести их объединение. Если на момент выполнения обновления конфигурации базы данных выполнялась отладка, то после сохранения текущей конфигурации на экран выводится вопрос: Для обновления конфигурации базы данных необходимо прекратить отладку. Продолжить? При ответе Да отладка прекращается, и конфигурация базы данных обновляется. При ответе Нет не производится обновление, и отладка не прекращается. Обновление конфигурации базы данных требует монопольного доступа конфигуратора к информационной базе. В зависимости от наличия пользователей, работающих с базой данных, и их режимов работы, возможно несколько вариантов поведения системы: ● конфигуратор выдает сообщение об ошибке исключительной блокировки в том случае, если: ● используется файловый вариант базы данных; ● есть сеансы, подключенные к информационной базе без использования веб-сервера; ● нет сеансов, работающих через веб-сервер; ● обновление конфигурации требует реструктуризации базы данных. ● конфигуратор предлагает завершить все сеансы и повторить обновление, если: ● обновление конфигурации требует реструктуризации базы данных; ● с файловым вариантом информационной базы работают веб-клиенты или тонкие клиенты, подключенные через веб-сервер; ● в остальных случаях конфигуратор предлагает выполнить динамическое обновление. ПРИМЕЧАНИЕ 1. При выдаче диагностических сообщений указываются характеристики сеансов, которые мешают выполнению действия. Если количество сеансов меньше или равно 5, то выводится подробный список сеансов (с указанием имени компьютера, типа приложения и т. д.), в противном случае выводится общее число сеансов. ПРИМЕЧАНИЕ 2. Работа информационной базы в монопольном режиме не переводит базу данных Microsoft SQL Server в однопользовательский (single user) режим. ПРИМЕЧАНИЕ 3. Для ускорения процесса реструктуризации информационной базы, при использовании СУБД Microsoft SQL Server, рекомендуется режим восстановления для базы данных устанавливать в значение Простой или С неполным протоколированием. Смену режима можно выполнять или перед выполнением реструктуризации или на постоянной основе, если не требуется выполнять восстановление базы данных на произвольный момент времени. Перед сменой режима восстановления базы данных необходимо выполнить резервное копирование базы данных! Ошибка монопольного доступа Если система не может получить монопольный доступ, то имеется возможность только дождаться, пока пользователи будут отключены от информационной базы, и повторить операцию обновления. Рис. 20. Ошибка исключительной блокировки Завершение сеансов и попытка обновления Если для обновления конфигурации базы данных необходимо завершить все сеансы, то пользователю выдается сообщение (см. рис. 21). Рис. 21. Отключение сеансов для обновления Если выбрана команда Завершить сеансы и повторить, то у пользователя запрашивается подтверждение выбранного действия (Завершение сеансов приведет к аварийному завершению работы пользователей! Выполнить завершение сеансов?) и в случае утвердительного ответа происходит попытка завершения работы всех сеансов информационной базы. Затем выполняется попытка повторного сохранения конфигурации базы данных. Завершение всех сеансов приведет к аварийному завершению работы всех клиентских приложений. Возможны ситуации, когда завершение работы сеанса невозможно. В этом случае попытку обновления конфигурации базы данных можно либо выполнить позже, либо завершить работу сеансов другими способами (например, выполнив перезагрузку рабочих процессов). Динамическое обновление Если есть возможность выполнить динамическое обновление, пользователю выдается специальное сообщение (см. рис. 22). Рис. 22. Динамическое обновление Если выбрана команда Обновить динамически, то выполняется обновление без завершения работы пользователей. Предполагается, что выполненные изменения будут записаны динамически в виде версии изменений конфигурации (конфигурация базы данных при этом не изменяется). Допускается выполнение повторных изменений основной конфигурации. Если при очередной попытке обновления конфигурации базы данных может быть установлен монопольный режим работы, конфигуратор осуществляет обновление конфигурации базы данных с учетом всех изменений (как текущих, так и предыдущих). ПРИМЕЧАНИЕ. Если используется клиент-серверный вариант работы с информационной базой, то после обновления конфигуратор будет перезапущен. При этом все несохраненные изменения в текстовых, табличных и других документах будут утеряны. Если было выполнено динамическое обновление, то работающие в этот момент пользователи продолжают работать со старой конфигурацией. Для того чтобы начать работать с обновленной конфигурацией, пользователю необходимо перезапустить систему «1С:Предприятие». Для контроля и оповещения пользователей о произведенных динамических изменениях следует использовать метод глобального контекста КонфигурацияБазыДанныхИзмененаДинамически(). ПРИМЕЧАНИЕ. После выполнения обновления конфигурации базы данных все версии, созданные динамическим обновлением, будут удалены. Если были обнаружены изменения, требующие реструктуризации базы данных, то на экран выводится диалог со списком таких изменений для подтверждения обновления. Рис. 23. Реорганизация информации Для подтверждения сохранения нужно нажать кнопку Принять, для отказа – кнопку Отмена. 2.13.3. Фоновое обновление конфигурации базы данных 2.13.3.1. Общее описание Обновление конфигурации базы данных, которое связано с реструктуризацией базы данных, выполняемое для информационных баз большого объема, может занимать длительное время. Во время выполнения обновления, работать с информационной базой не возможно. Для того чтобы свести потери времени на эту операцию к минимуму, существует специальный режим, выполняющий обновление конфигурации базы данных в фоновом режиме. Фоновое обновление конфигурации базы данных характеризуется следующими особенностями: ● Доступно только в клиент-серверном варианте информационной базы; ● Может выполняться при закрытом конфигураторе. ● Большая часть фонового обновления конфигурации базы данных выполняется без монопольного доступа к базе данных (включая выполнение операции реструктуризации базы данных). ● Во время фонового обновления недоступны следующие операции: ● Редактирование конфигурации. ● Отладка прикладного решения. ● Выполнение операции обновления конфигурации базы данных. ● Не допускается использование методов УстановитьРежимАгрегатов(), УстановитьИспользованиеАгрегатов(), ПерестроитьИспользованиеАгрегатов(). ● Изменение содержимого плана счетов или плана видов расчета, если связанный с ним регистр бухгалтерии или регистр расчета участвует в операции фонового обновления. Попытка изменить содержимое таких планов счетов или планов вида расчета вызывает ошибку. ● Фоновое обновление конфигурации можно поставить «на паузу» длительностью не более 48 часов. Если «пауза» продлится более 48 часов – фоновое обновление будет отменено. ● Не поддерживается работа фонового обновления для конфигураций, находящихся в режиме совместимости с версией 8.1 (см. здесь). ● Не поддерживается работа фонового обновления конфигурации базы данных при работе на СУБД IBM DB2 9.1. Процесс фонового обновления конфигурации состоит из нескольких этапов: ● Фаза обработки: ● Выполняется длительное время. ● Запуск данной фазы может быть выполнен любым способом: ● Интерактивно, из конфигуратора; ● Из встроенного языка (с помощью соответствующих методов); ● С помощью режима пакетного запуска конфигуратора. ● Во время выполнения фазы пользователи могут работать с информационной базой. ● Выполняется реструктуризация основного объема данных для следующих объектов конфигурации: ● Справочники, ● Документы, ● Журналы документов, ● Регистры сведений, ● Регистры накоплений, ● Регистры бухгалтерии, ● Регистры расчета, ● Последовательности, ● Планы счетов, ● Бизнес-процессы, ● Задачи. ● Во время выполнения фазы обработки, система фиксирует все измененные данные для вышеперечисленных объектов, по аналогии с механизмами обмена данными. ● Фаза актуализации: ● Запускается автоматически, после окончания фазы обработки, с интервалом 1 минута. ● Во время выполнения фазы пользователи могут работать с информационной базой. ● Фаза состоит из автоматически повторяющихся итераций. Каждая итерация анализирует изменения, накопленные с момента выполнения предыдущей итерации (или завершения фазы обработки) и выполняет реструктуризацию накопленных изменений. ● Итерации завершаются в момент перехода к следующей фазе. ● Фаза принятия изменений: ● Требует монопольный доступ к информационной базе. ● Во время выполнения фазы пользователи не могут работать с информационной базой. ● Первым шагом этой фазы выполняется актуализация данных, накопленных с момента проведения последней, перед текущей фазой, итерации фазы актуализации. ● Затем выполняется реструктуризация данных, не участвующих в фазах обработки и актуализации. В этих данных не предполагается большого объема изменений, и их реструктуризация выполняется быстро. ● Следующим шагом выполняется принятие всех изменений, выполненных в базе данных. ● После этого обновление конфигурации базы данных завершается. Если фоновое обновление запущено так, что не требуется выполнения реструктуризации базы данных, то в этом случае все обновление выполняется в фазе принятия изменений, переход к которой возможен сразу после начала фонового обновления. Во время фонового обновления имеется возможность остановить работу сервера или поставить процесс фонового обновления «на паузу». После остановки сервера или после аварийного завершения рабочего процесса, обслуживающего системное фоновое задание, выполняющее обновление, создание первого сеанса будет происходить несколько большее время, нежели обычно. Это связано с восстановления фонового обновления. Однако сам процесс фонового обновления находится в приостановленном состоянии. Для продолжения работы необходимо возобновить работу фонового обновления. Такое поведение реализовано для того, чтобы не произошло зацикливание системы в том случае, если причиной аварийного завершения рабочего процесса, обслуживающего фоновое обновление, является собственно фоновое обновление. После восстановления работоспособности сервера, фоновое обновление конфигурации базы данных продолжает работу следующим образом: ● Если работа была прервана в фазе обработки, то процесс продолжается с последнего объекта конфигурации, обработка которого не была завершена. ● Если работа была прервана в фазе актуализации – незаконченная итерация начинается заново. СОВЕТ. Рекомендуется отменять запущенный процесс фонового обновления конфигурации базы данных в тех случаях, когда не планируется завершение фонового обновления конфигурации базы данных (например, процесс поставлен на бесконечную «паузу»). Выполнение данной рекомендации положительно скажется на характеристиках системы, т. к. не будет происходить регистрация изменений для выполнения фазы актуализации. При выполнении операции фоновой реструктуризации следует учитывать некоторые особенности работы системы: ● Если регистр бухгалтерии или накопления добавлен в состав разделителя, то данный регистр обрабатывается во время фазы принятия изменений. ● Если изменен тип независимого разделителя (см. здесь), то все объекты, входящие в состав этого разделителя, обрабатываются во время фазы принятия изменений. ● Если изменяется тип измерения, входящего в основной отбор независимого регистра сведений, то такой регистр обрабатывается во время фазы принятия изменений. 2.13.3.2. Диалог фонового обновления конфигурации базы данных Для вызова операции фонового обновления конфигурации базы данных нужно выбрать пункт меню Конфигурация – Конфигурация базы данных – Фоновое обновление конфигурации базы данных. Рис. 24. Диалог фонового обновления конфигурации базы данных Нажатие кнопки Запустить запускает фазу обработки. При этом в окне служебных сообщений отображается текст: Старт фонового обновления конфигурации БД прошел успешно Конфигурация недоступна для редактирования. Выполняется фоновое обновление конфигурации базы данных. После запуска фонового обновления конфигурация блокируется от изменения. Во время выполнения любой фазы, работу фонового обновления можно приостановить с помощью кнопки Приостановить. Для того, чтобы продолжить выполнение фонового обновления служит кнопка Продолжить. После окончания фазы обработки начинается фаза актуализации, во время выполнения которой можно перевести систему к выполнению фазы принятия изменений с помощью кнопки Завершить или отказаться от обновления с помощью кнопки Отменить. СОВЕТ. Рекомендуется отменять запущенный процесс фонового обновления конфигурации базы данных в тех случаях, когда не планируется завершение фонового обновления конфигурации базы данных (например, процесс поставлен на бесконечную «паузу»). Выполнение данной рекомендации положительно скажется на характеристиках системы, т. к. не будет происходить регистрация изменений для выполнения фазы актуализации. Флажок Разрешить динамическое обновление служит для того, чтобы определить, нужно ли при нажатии на кнопку Запустить попытаться выполнить динамическое обновление вместо запуска процесса фонового обновления конфигурации базы данных. Если этот флажок установлен, то сразу же после нажатия на кнопку Запустить будет производиться проверка на возможность выполнить динамическое обновление конфигурации. В случае, когда конфигурация допускает такую возможность, вместо фонового обновления конфигурации базы данных будет производиться динамическое обновление. Флажок Выполнять на сервере служит для того, чтобы определить, где будет выполняться запуск, завершение и отмена. Если этот флажок сброшен, то данные действия будут выполняться на стороне клиентского приложения, а если установлен – то на стороне сервера «1С:Предприятия». Кроме того, если установлен данный флажок, то можно выполнять обновление конфигурации только при наличии права ОбновлениеКонфигурацииБазыДанных, без установленного права Администрирование. 2.13.4. Сохранение конфигурации базы данных в файл Для сохранения конфигурации базы данных в файл на диск нужно выбрать пункт Конфигурация – Конфигурация базы данных – Сохранить конфигурацию БД в файл. На экран выводится стандартный диалог выбора файла. Необходимо выбрать каталог и указать имя файла, в который будет записана конфигурация базы данных. Сохраненный файл конфигурации базы данных необходим для операции сравнения и объединения конфигураций (см. здесь). 2.13.5. Сравнение конфигурации и конфигурации базы данных Если в процессе внесения изменений в конфигурацию требуется получить отчет об отличиях от конфигурации базы данных, то следует выбрать пункт Конфигурация – Конфигурация базы данных – Сравнить, объединить с конфигурацией БД. В случае необходимости можно восстановить измененные объекты. 2.13.6. Отказ от изменений в конфигурации Для отказа от изменений в конфигурации достаточно выбрать пункт Конфигурация – Конфигурация базы данных – Вернуться к конфигурации БД. ПРИМЕЧАНИЕ. Пункты меню Сохранить конфигурацию БД в файл... и Вернуться к конфигурации БД доступны даже в случае закрытой редактируемой конфигурации. Команда Вернуться к конфигурации БД по-прежнему недоступна, когда информационная база подключена к хранилищу конфигурации. 2.14. Запуск «1С:Предприятия» В конфигураторе предусмотрен запуск режима 1С:Предприятие. Для этого нужно выбрать пункт Сервис – 1С:Предприятие. Часто необходимо запустить «1С:Предприятие» в режиме отладки. Для этого существует команда Отладка – Начать отладку (подробнее про отладчик см. здесь). Если конфигурация была модифицирована (были произведены изменения), то конфигуратор выводит вопрос: Редактируемая конфигурация отличается от конфигурации базы данных. Произвести обновление конфигурации базы данных? Для сохранения внесенных изменений следует выбрать кнопку Да. Если выбрана кнопка Нет, то режим 1С:Предприятие запускается без сохранения конфигурации. В случае отказа на экран выводится вопрос: Конфигурация базы данных не соответствует сохраненной конфигурации. Продолжить? Если выбрана кнопка ОК, то запускается режим 1С:Предприятие с прежней конфигурацией базы данных. Если выбрана кнопка Отмена, то запуск режима 1С:Предприятие не производится. 2.15. Выгрузка и загрузка файлов конфигурации Механизм выгрузки и загрузки файлов конфигурации позволяет осуществлять выборочную выгрузку/загрузку некоторых свойств объектов конфигурации (модулей, макетов и справочной информации). Для выгрузки свойств нужно выбрать пункт Конфигурация – Выгрузить файлы конфигурации. Рис. 25. Выгрузить файлы конфигурации В открывшемся окне следует отметитьотметьте те объекты конфигурации, которые нужно выгрузить, указатьукажите вид выгружаемых данных и укажите каталог, в который будет осуществлена выгрузка. Для начала выгрузки нажатьнажмите кнопку Выполнить. Выгружаемые данные записываются в файлы с именами, соответствующими названию выгружаемого свойства. Расширение файла соответствует типу данных:. ● htm – для справки и макетов HTML-документа; ● txt – для модулей и макетов текстового документа; ● mxl – для макетов табличного документа; ● geo – для макетов географической схемы; ● grs – для макетов графической схемы; ● bin – для макетов двоичных данных. Картинки выгружаются в том формате, в котором они хранятся в конфигурации. Загружаются картинки всех поддерживаемых форматов (см. здесь). Для выгрузки/загрузки прав доступа необходимо выбрать требуемые роли (или все) и указать пункт Права в списке Обрабатывать. Права доступа выгружаются в формате XML. Файл выгрузки включает в себя собственно права доступа, ограничения доступа к данным и шаблоны ограничений доступа. При выгрузке файлов справки и макетов HTML-документов формируется отдельный файл для каждого языка, для которого определен макет. При этом код языка включается в имя файла перед его расширением: например, Документ.РасходТовара.Справка.ru.htm означает файл со справочной информацией на русском языке документа РасходТовара. Загрузка данных осуществляется выбором пункта Конфигурация – Загрузить файлы конфигурации. Действия в окне аналогичны действиям, описанным для режима выгрузки данных. При загрузке производится попытка загрузить файлы справки и макеты HTML-документов для каждого языка, определенного в прикладном решении. Если при загрузке обнаружен только один файл (без указания в наименовании кода языка), то он загружается для текущего языка конфигурации. 2.16. Выгрузка и загрузка конфигурации Данный механизм позволяет осуществлять выгрузку всех объектов конфигурации в xml-файлы и выполнить обратную загрузку. Все объекты конфигурации выгружаются в один или несколько файлов. Основным файлов в выгрузке является файл Configuration.xml, который содержит описание свойств собственно конфигурации. В отдельные файлы выгружаются: ● Объекты конфигурации – объекты верхнего уровня, и подчиненные объекты, отдельно захватываемые в хранилище конфигурации. Примеры имен файлов: ● Document.ПродажиТоваров.xml – описание объект конфигурации Документ.ПродажиТоваров. ● CommonPicture.ПодсистемаЗакупки.xml – описание объекта конфигурации ОбщаяКартинка.ПодсистемаЗакупки (но не сама картинка). ● Отдельные свойства – как правило, имеющие большой объем или сложную структуру. Примеры имен файлов: ● CommonPicture.ПодсистемаЗакупки.Picture.xml – описание картинки (но не сама картинка). ● DataProcessor.Путеводитель.Template.ГлавнаяСтраница.xml – описание макета, расположенного в обработке (но не сам макет). ● Значения отдельных свойств, являющиеся файлами известных форматов (но не XML). К таким файлам можно отнести модули форм, макеты, картинки. Примеры имен файлов: ● CommonPicture.ПодсистемаЗакупки.Picture.Picture.png – картинка, сохраненная в общие картинки под именем ПодсистемаЗакупки. ● Catalog.Товары.Form.ФормаЭлемента.Form.Module.txt – модуль управляемой формы элемента справочника Товары. ● DataProcessor.ПомощникСозданияОбменаДанными.Form.Форма.Form.КартинкаВторойИнформационнойБазы.Picture.png – абсолютная картинка содержащаяся в свойстве Pictureэлемента управляемой формы КартинкаВторойИнформационнойБазы. Объекты, не являющиеся объектами разработки сохраняются в файле родительского объекта, например, файл DataProcessor.ПечатьЭтикетокИЦенников.Template.КомпонентаПечатиШтрихкодовLinux32.Template.bin означает собственно внешнюю компоненту печати этикетов и ценников, расположенную в двоичном макете КомпонентаПечатиШтрихкодовLinux32. Специальным образом выгружаются следующие элементы: ● Модуль объекта – выгружается в виде текстового файла (если таковой может быть получен) или в бинарном виде. Пример имени файла: ● DataProcessor.ЖурналРегистрации.ObjectModule.txt – модуль объекта метаданных Обработка.ЖурналРегистрации. ● HTML – выгружается в виде набора файлов: корневой файл свойства, файлы HTML страниц, файлы картинок (если таковые имеются). Корневой файл содержит список HTML страниц входящих в документ. HTML файлы являются страницами входящими в документ. Каждая из них соответствует конкретному языку, определенному в конфигурации. Справка по объектам конфигурации является частным случаем выгрузки HTML. Примеры имен файлов (для свойства Справка): ● Catalog.Товары.Help.xml – корневой файл внешнего свойства справка объекта метаданных Справочник.Товары. ● Catalog.Товары.Help.ru.html, Catalog.Товары.Help.en.html –страницы справки для русского и английского языков соответственно. ● Catalog.Товары.Help.Картинка.png – файл картинки, содержащийся в HTML документе со справкой. ● Конфигурации поставщиков – выгружается как файл информации о конфигурациях поставщиков во внутреннем формате (не XML) и файлы конфигурации (.cf) для каждой конфигурации поставщика. Примеры имен файлов: ● Configuration.ParentConfigurations – файл информации о конфигурациях поставщиков. ● Configuration.ParentConfigurations.УправлениеТорговлей.cf – конфигурация поставщика УправлениеТорговлей. При выгрузке все ссылки на объекты метаданных, ссылки на поля, идентификаторы типов и т. д. выгружаются в виде имен (Catalog.Товары). Все идентификаторы выгружаются на английском языке – упоминание справочника Товары будет выглядеть Catalog.Товары, а не Справочник.Товары. Если в объектах конфигурации существуют ссылки на отсутствующие объекты конфигурации, то такие ссылки выгружаются в виде текстового представления идентификатора и при загрузке также будут восстановлены в ссылку на отсутствующий объект конфигурации (для сохранения идентичности двух конфигураций). Для реквизитов и элементов управляемой формы выгружаются внутренние идентификаторы, используемые, в частности, для сохранения и восстановления настроек. При выгрузке ролей выгружаются значения только тех прав, которые отличаются от значений по умолчанию в момент выгрузки. При определении значений прав по умолчанию используются свойства роли Устанавливать права для новых объектов и Устанавливать права для реквизитов и табличных частей по умолчанию. Значения этих флажков являются значениями по умолчанию для прав доступа на объекты конфигурации и прав доступа на реквизиты и табличные части, соответственно. ПРИМЕЧАНИЕ. Обычные формы и интерфейсы обычного приложения выгружаются в двоичном виде. При загрузке, если обнаружены ошибки в файлах, то будет сформировано окно со списком ошибок. Если ошибки не являются критичными, то можно нажать кнопку Принять. Выбрав строку с ошибкой – можно открыть файл, содержащий ошибку. 2.17. Работа с мобильным приложением Описание работы с мобильным приложением см. здесь. 2.18. Отчет по конфигурации В конфигураторе можно вывести в текстовом или табличном виде информацию обо всех объектах конфигурации. Для этого следует выбрать пункт Конфигурация – Отчет по конфигурации. На экран выводится диалог. В нем нужно выбрать тип (текстовый или табличный) и имя файла, в который предполагается сохранить описание структуры конфигурации. Рис. 26. Отчет по конфигурации Создание описания объектов конфигурации для сложных конфигураций может занимать продолжительное время. Если требуется получить отчет по отдельным объектам конфигурации, то в поле Объекты нужно нажать кнопку выбора и в открывшемся диалоге выбора объектов установить флажки у нужных объектов. Рис. 27. Выбор объектов для отчета по конфигурации Допускается отбор по подсистемам. После окончания создания описания конфигурации будет открыто окно с описанием в выбранном формате (текстовом или табличном). 2.19. Глобальный поиск и замена Режим глобального поиска и замены предназначен для поиска определенной строки во всех модулях, диалогах, табличных документах, описаниях конфигурации и внешних файлах (внешние отчеты и обработки, табличные документы). Найденный текст может быть заменен другим. Этот режим может быть использован, например, для поиска всех вызовов некоторой глобальной процедуры или обращения к какому-либо реквизиту в разных модулях. Вызов режима поиска осуществляется выбором пункта Правка – Глобальный поиск, а режима замены – выбором пункта Правка – Глобальная замена. В этих режимах используется один и тот же диалог. Если выбран режим поиска, то становятся недоступными реквизиты режима замены. Поэтому для краткости рассмотрим процедуру глобальной замены, а потом укажем особенности режима поиска. На экран будет выдан диалог для задания параметров поиска. Рис. 28. Окно глобальной замены В поле Искать этого диалога следует ввести образец для поиска или выбрать один из образцов, которые были использованы ранее в операциях поиска из списка истории. В поле Заменить нужно ввести текст, на который следует произвести замену найденного текста, или выбрать один из образцов, которые были использованы ранее в операциях замены из списка истории. Чтобы различать при поиске прописные и строчные буквы, требуется установить флажок Учитывать регистр. При установленном флажке Искать слово целиком будут найдены только целые слова, а не части слов. Если не требуется открытия редакторов при групповой замене (по кнопке Заменить все), то нужно установить флажок Не открывать редакторы при групповой замене. При любом состоянии флажка редактор будет открываться при нажатии клавиши Искать или Заменить. Ниже расположена панель, на закладках которой указывается, где следует искать указанный образец. На закладке Типы текстов помечаются типы объектов, в которых будет произведен поиск. Если конфигурация редактируется для режима запуска Управляемое приложение (см. здесь), то из списка объектов будут исключены пользовательские интерфейсы. На закладке Конфигурации можно указать с точностью до объекта разделы конфигураций, в которых будет произведен поиск. Рис. 29. Глобальный поиск В список конфигураций помимо основной включается конфигурация базы данных и конфигурации хранилища. Конфигурации хранилища должны быть открыты перед вызовом режима поиска или замены. Для указания набора объектов нужно установить переключатель Выбранные объекты и пометить те объекты, в которых будет произведен поиск. При первом запуске в списке по умолчанию установлены пометки всех объектов. Чтобы снять установку, следует снять флажок в строке с наименованием конфигурации. Затем можно указывать конкретные объекты для поиска. На закладке Файлы можно указать каталог и типы файлов, в которых может производиться поиск. Могут быть просмотрены следующие типы просматриваемых файлов: конфигурации, расположенные в файлах (сохраненные, файлы поставки), внешние отчеты и обработки, текстовые и табличные документы. Если каталог не указан (реквизит Каталог не заполнен), то поиск в файлах не осуществляется. Поиск может также производиться в открытых документах тех же типов. Для этого следует установить флажок Искать в открытых документах. Выбранную совокупность настроек можно сохранить для дальнейшего использования. Для этого в поле Область поиска нужно указать имя настройки. Для использования прежней настройки достаточно выбрать имя настройки в выпадающем списке. Сохраняются следующие настроки: настройки на закладке Типы текстов, состав объектов только для основной конфигурации на закладке Конфигурации и настройки на закладке Файлы. Если был запущен режим поиска, то для начала поиска нужно нажать кнопку Искать. В режиме глобального поиска можно прервать процесс нажатием Ctrl + Break. На экран в окно Результаты поиска будет выведен список найденных вхождений исходного текста. Рис. 30. Результат глобального поиска Если какой-либо модуль имеет ограничение доступа (см. здесь), то перед поиском исходного текста в данном модуле система запрашивает пароль доступа. Необходимо ввести правильный пароль или отказаться от ввода пароля. Если пароль не введен, то просмотр в данном модуле не производится. Результат поиска можно просмотреть, а к каждому найденному значению можно перейти, если выбрать в результате поиска нужную строчку и нажать клавишу Enter. Для просмотра следующего или предыдущего найденного значения можно воспользоваться пунктами Действия – Следующая позиция и Действия – Предыдущая позиция. Результат поиска (весь список) можно запомнить в буфер обмена с помощью команды Копировать контекстного меню окна или с помощью соответствующей кнопки панели инструментов окна результатов поиска, а также вывести в табличный или текстовый документ. Ширину колонок можно изменить стандартным приемом – с помощью указателя мыши при нажатой клавише Ctrl. Если был запущен режим замены, то в поле На текст указывается образец текста, на который следует заменить исходный текст, указанный в поле Заменить. Если перед заменой требуется посмотреть исходный текст, то для начала поиска следует нажать кнопку Пропустить. На экран выводится результат первого найденного исходного текста. Если нажать кнопку Пропустить, то текущий текст будет пропущен и на экран будет выведено очередное вхождение исходного текста в текущем окне или другое окно, содержащее исходный текст. Если при групповой замене не требуется открытия объектов, в которых обнаружено вхождение исходного текста, нужно установить флажок Не открывать редакторы при групповой замене. ВНИМАНИЕ! Во время просмотра результатов поиска изменить условия поиска нельзя. Структура выбора области поиска (типы текста, список объектов конфигураций, файлов и открытые документы) запоминается и при следующем открытии диалога восстанавливается. Если требуется сохранить несколько областей, то каждой области в реквизите Область поиска нужно присвоить имя. При повторном открытии окна поиска в списке областей достаточно выбрать нужную и выполнить поиск. 2.20. Настройка рабочей области конфигуратора Для создания и редактирования конфигурации требуется одновременное использование различных окон. Например, просмотр, выбор, добавление и удаление объектов конфигурации производятся в окне Конфигурация; редактирование свойств объектов и их составных частей производится в палитре свойств; получение справочной информации по встроенному языку – в окне синтакс-помощника; сообщения и результаты поиска выводятся в окне сообщений. Кроме того, каждый объект конфигурации в общем случае может состоять из различных частей, каждая из которых редактируется в отдельном окне. Одновременное открытие различных служебных окон заметно сужает рабочую область, предназначенную для редактирования прикладных объектов (формы, модули и макеты) и редактирования общих объектов конфигурации (модуль приложения и общие модули, макеты, стили, интерфейсы и др.). Для расширения рабочей области и удобства работы можно воспользоваться некоторыми рекомендациями по настройке различных панелей конфигуратора, наличию и поведению различных служебных окон, использованию режимов показа окон. 2.20.1. Настройка панелей Конфигуратор спроектирован таким образом, чтобы максимально использовать рабочую область за счет автоматического выбора нужных панелей инструментов для каждого вида окна. Так, при редактировании табличного документа конфигуратор предоставляет панель инструментов, предназначенную для выполнения команд по редактированию табличного документа; при переходе в окно, содержащее модуль формы, конфигуратор закрывает панель инструментов табличного документа и показывает панель инструментов текстового редактора. Пользователь может самостоятельно настроить состав панелей инструментов и их размещение на экране. Если при настройке стандартной командной панели на ней размещают команды, которые отсутствуют на этой панели по умолчанию, то возможна ситуация, когда после перезапуска конфигуратора порядок команд на командной панели будет изменен. В этом случае рекомендуется скрыть стандартную панель, а вместо нее создать дополнительную командную панель, разместив на ней требуемые команды в нужном порядке. Порядок команд на ней изменяться не будет. Помимо панелей инструментов внизу располагается Панель окон и Панель состояния. Каждая из них занимает отдельную строку и не может быть перемещена в другое место. Если какая-либо панель не нужна, то ее можно скрыть с помощь контекстного меню в любом месте любой панели. Панель показывается, если слева от ее названия установлен флажок, и скрыта, если флажок снят. Для изменения режима показа панели достаточно в контекстном меню выбрать строку с наименованием панели. Чтобы панель окон не занимала постоянно часть рабочей области программы, можно установить режим Автоматически прятать. При работе панель окон скрыта. Чтобы она появилась, нужно подвести указатель мыши к месту размещения панели. 2.20.2. Окно «Конфигурация» Окно Конфигурация может быть закрыто и открыто в любой момент времени. После выбора всех требуемых для работы окон окно Конфигурация может быть закрыто. Закрытие окна не приводит к окончанию работы с конфигурацией. Его можно открыть в любой момент. Первоначальное состояние окна Конфигурация – Прикрепленное. В этом состоянии оно «перекрывает» все окна, находящиеся в состоянии Обычное (большинство окон показываются в этом состоянии). Чтобы использовать область, занимаемую окном Конфигурация, его состояние можно изменить на Обычное (в этом случае другие окна будут показываться поверх окна Конфигурация) или на Прячущееся (если окно не нужно, оно скрывается автоматически, а при подведении к нему указатель мыши раскрывается). 2.20.3. Использование режимов показа окон В режиме Обычный окно может располагаться (его видно) только в пределах свободной рабочей области конфигуратора. Использование других режимов позволяет расширить рабочую область или рациональнее ее использовать. Кроме того, можно «вынести» окно за пределы рабочей области. Каждое окно (кроме калькулятора) в конфигураторе может быть переведено в режим Прячущееся. Этот режим позволяет без лишних действий выбрать нужное окно для просмотра и редактирования, переведя указатель мыши в строку с заголовком окна. Когда просмотр закончен, для сворачивания окна достаточно просто перевести указатель мыши на любое другое окно или заголовок другого прячущегося окна. Целесообразно в этом режиме использовать окна, работа с которыми носит кратковременный характер (синтакс-помощник, окно Конфигурация, окно сообщений и результатов поиска, а также окно прикладных объектов, табличных и текстовых документов, открываемых в основном для просмотра). Режим состояния окна Свободное позволяет поместить данное окно в любое место экрана, независимо от размеров и положения окна программы (конфигуратора). В режиме Прикрепляемое окно может быть прикреплено к другому окну, находящемуся в этом состоянии, или к одной из сторон окна, а также расположено поверх другого прикрепляемого окна (совмещенные окна). Рекомендуется совмещать такие окна, просмотр которых одновременно не требуется. Например, окно палитры свойств и окно синтакс-помощника или Табло и Стек вызовов во время отладки. Подробнее о режимах показа окон см. здесь. Глава 3. Интерфейс приложения Интерфейс приложения ориентирован на удобную работу пользователя и устроен таким образом, что, выполняя необходимые действия в прикладном решении, пользователь работает с различными формами. Каждая форма может быть открыта разными способами, которые будут рассмотрены далее. Для того чтобы получить доступ к той или иной форме, следует найти в интерфейсе прикладного решения нужную команду (открытия списка, формирования отчета, ввода документа и т. д.) и выполнить ее. Процесс поиска нужной команды называется навигацией по прикладному решению. Структура прикладного решения в приложении представляется пользователю в виде иерархии, которая формируется подсистемами и входящими в них объектами метаданных (см. здесь). Формы, в которых работает пользователь, могут отображаться различными способами: ● на начальной странице, ● в отдельном окне, ● в отдельной закладке, ● в однооконном режиме – интерфейс Такси. Режим открытия форм (в отдельных окнах или в закладках) определяется отдельной настройкой клиентского приложения и начинает действовать после перезапуска клиентского приложения. Рис. 31. Установка внешнего вида прикладного решения Эта настройка выполняется в диалоге настройки параметров клиентского приложения, который доступен с помощью команды Главное меню – Сервис – Параметры. После выбора необходимого варианта внешнего вида, система предложит перезапустить прикладное решение. Рис. 32. Предложение перезапуска при смене внешнего вида При нажатии кнопки Перезапустить будет произведен перезапуск прикладного решения и оно откроется в выбранном внешнем виде. В «1С:Предприятии» существует два вида окон: ● основное окно, ● вспомогательное окно. Каждый вид окон в «1С:Предприятии» предназначен для выполнения определенных задач. Основное окно приложения предназначено для навигации по прикладному решению и вызова различных команд. Вспомогательное окно предназначено для работы с объектами информационной базы (например, с документами или элементами справочников), построения отчетов или выполнения обработки данных. Роль вспомогательного окна может выполнять закладка, отображаемая в рабочей области основного окна. Главное меню основных и вспомогательных окон «1С:Предприятия» содержит только общие команды, не имеющие прикладной специфики, и не может быть изменено разработчиком конфигурации. 3.1. Открытие форм в отдельных окнах В этом режиме формы открываются во вспомогательных окнах. Каждое окно «1С:Предприятия» появляется на панели задач операционной системы и в переключателе окон по нажатию клавиш Alt + Tab. 3.1.1. Основное окно приложения При работе с «1С:Предприятием» используется одно основное окно приложения. Структура основного окна организована таким образом, чтобы пользователь эффективно осуществлял навигацию по приложению, т. е. быстро находил нужные разделы и команды. Рис. 33. Структура основного окна приложения Каждое состояние основного окна можно рассматривать как своеобразное рабочее место. Например, перейдя в раздел Товарные запасы, пользователь увидит набор команд для выполнения наиболее частых действий, связанных с управлением товарными запасами. 3.1.1.1. Панель разделов Панель разделов показывает список подсистем верхнего уровня и позволяет быстро переключаться между ними. Каждый раздел соответствует подсистеме (например, Продажи, Закупки, Запасы). Для повышения наглядности каждой подсистеме можно установить понятную картинку. Отсутствие картинки не препятствует отображению подсистемы в панели разделов. Первым разделом всегда является основной раздел, который называется Главное. На начальной странице собраны самые необходимые и часто используемые инструменты прикладного решения. Остальные разделы соответствуют подсистемам первого уровня иерархии. Панель разделов имеет возможность горизонтальной прокрутки, однако с помощью прав доступа можно ограничить набор разделов так, что прокрутка не потребуется. ПРИМЕЧАНИЕ. Если в панели разделов нет ни одного раздела (они недоступны или скрыты пользователем), то панель разделов автоматически скрывается и основное окно приложения автоматически переключается на рабочий стол конфигурации. 3.1.1.2. Панель навигации Панель навигации отображает структуру конфигурации в соответствии с разделом, выбранным в панели разделов. Если у подсистемы имеются подчиненные подсистемы, то они будут отображаться как группы с возможностью сворачивания. В дальнейшем подсистемы, подчиненные подсистемам верхнего уровня, мы будем называть подразделами. При нажатии на гиперссылки этой панели, как правило, происходит открытие форм списков. При этом формы открываются непосредственно в основном окне, замещая друг друга. Щелчок по гиперссылке приводит к открытию формы в рабочей области основного окна приложения. В панели навигации могут располагаться команды трех стандартных групп: Важное, Обычное и См. также. Команды группы Важное будут выделены полужирным шрифтом. Если какой-либо группы нет, то она пропускается. Если разработчик конфигурации определил собственные группы команд из категории Панель навигации, то они будут располагаться непосредственно перед группой См. также (которая всегда является самой последней группой в панели навигации). При отображении группы См. также действуют следующие правила: ● команды группы См. также из отображаемого раздела и всех его подразделов визуально размещаются в одном списке См. также; ● команды выводятся в порядке разделов и подразделов, который задан при конфигурировании; ● внутри разделов и подразделов команды выводятся в порядке, который задан при конфигурировании. Порядок разделов (подсистем верхнего уровня), подразделов (подчиненных подсистем) и команд в группе См. также панели навигации можно изменять в редакторе фрагмента командного интерфейса. 3.1.1.3. Панель действий Панель действий содержит команды, которые соответствуют текущему разделу, выбранному в панели разделов. Эти команды объединены в стандартные группы: Создать, Отчеты, Сервис и группы, созданные разработчиком. Группа Создать включает в себя команды создания новых объектов информационной базы, например, документов или элементов справочников. В этой группе размещаются команды создания для всех объектов, входящих в подсистему, однако по умолчанию видимость этих команд отключена. Разработчик должен включить видимость для наиболее часто используемых команд создания новых объектов. Группа Отчеты содержит команды открытия отчетов, а группа Сервис – команды открытия обработок. Если в какой-либо группе нет ни одной команды, то группа не показывается. Если разработчик конфигурации определил собственные группы команд, принадлежащие категории Панель действий, то они располагаются после группы Сервис. При отображении групп панели действий действуют следующие правила: ● команды одинаковых групп из отображаемого раздела и всех его подразделов визуально размещаются в одном списке; ● команды выводятся в порядке разделов и подразделов, который задан при конфигурировании; ● внутри разделов и подразделов команды выводятся в порядке, который задан при конфигурировании. Порядок разделов (подсистем верхнего уровня), подразделов (подчиненных подсистем) и команд в группах панели действий можно изменять в редакторе командного интерфейса. Высота панели действий по умолчанию зависит от количества команд в группах и не превышает трех строк при автоматическом определении высоты панели. Однако пользователь может произвольно изменять высоту с помощью разделителя, расположенного под панелью. Если при текущей высоте панели действий в ней не помещаются все команды какой-либо группы, то в правом нижнем углу группы будет размещена пиктограмма, по нажатию на которую будет раскрыто меню, содержащее все команды группы. 3.1.1.4. Информационная панель Информационная панель предназначена для обращения к последним данным, редактируемым пользователем, а также для отображения перечня последних оповещений (информация о тех или иных действиях, выполненных в системе). Подробнее см. здесь. 3.1.1.5. Область системных команд Область системных команд позволяет выполнять ряд действий, не зависящих от прикладной специфики конфигурации, но помогающих в управлении системой. Кроме того, в этой области расположены различные команды, помогающие в работе с окном. Рис. 34. Левая часть области системных команд В левой части области системных команд расположена кнопка вызова главного меню, а также команды перехода по точкам навигации и меню работы с избранным пользователя. Точка навигации – это фрагмент интерфейса основного окна приложения, в который можно перейти с помощью команд, расположенных в основном окне приложения. В «1С:Предприятии» избранное – это список ссылок, специально отобранных самим пользователем для быстрого перехода к тем или иным разделам конфигурации, точкам навигации, формам объектов информационной базы, а также формам отчетов и обработок. Существует возможность программного управления списком избранного. Для этого используется объект ИзбранноеРаботыПользователя. Данный объект можно получить из хранилища системных настроек. ПРИМЕЧАНИЕ. При работе с избранным следует помнить, что список избранного является одноуровневым. В список избранного нельзя добавить ссылку на стандартную функцию (вызываемую с помощью команды Главное меню – Все функции – Стандартные). Во вспомогательных окнах область системных команд выглядит другим образом (см. здесь). В правой части области системных команд расположены различные вспомогательные команды, которые помогают в работе с окном. Перечень команд может быть настроен с помощью соответствующего меню настройки. 3.1.2. Вспомогательное окно Вспомогательным называется окно, которое открывается для выполнения какого-либо действия, а не для навигации по всему приложению в целом. В таких окнах, например, открываются формы документов или элементов справочников, формы отчетов и обработок. Рис. 35. Структура вспомогательного окна приложения Закрытие вспомогательного окна не приводит к закрытию всего приложения. Вспомогательных окон может быть открыто сколько угодно, но для каждого объекта информационной базы (например, документа или элемента справочника) оно одно, т. е. нельзя открыть несколько окон для просмотра одного и того же документа, если это специально не предусмотрено в конфигурации. Во вспомогательном окне можно выделить основную форму – форму, которая отображается по умолчанию при открытии вспомогательного окна и которая открывается при нажатии на первую ссылку панели навигации формы. При нажатии на другие ссылки панели навигации формы будут открываться вспомогательные формы. 3.1.2.1. Панель навигации формы Панель навигации вспомогательного окна (панель навигации формы) позволяет просматривать различные сведения, логически связанные с данными, которые отображает основная форма окна. В панели навигации могут располагаться команды трех групп: Важное, Перейти и См. также. Команды, относящиеся к группам Важное и Перейти, будут объединены общим заголовком Перейти, при этом команды группы Важное располагаются первыми, выделены полужирным шрифтом и отделены от остальных команд, расположенных под заголовком Перейти, небольшим отступом. Если какой-либо группы нет, то она пропускается. Если разработчик конфигурации определил собственные группы команд из категории Панель навигации формы, то они будут располагаться непосредственно перед группой См. также (которая всегда является самой последней группой в панели навигации формы). Существует возможность возврата к основной форме. Для этого нужно нажать гиперссылку в верхней части панели навигации (выделена полужирным шрифтом). 3.1.2.2. Командная панель формы Командная панель формы содержит команды, непосредственно связанные с объектом, который отображается в основной форме. Существуют стандартные группы Важное и Создать на основании; кроме того, на панели могут размещаться группы, созданные разработчиком. Каждая команда из группы Важное будет отображаться своей кнопкой на панели. Группа Создать на основании будет оформлена в виде подменю панели. Также в виде подменю будут оформлены все группы команд, созданные разработчиком. Команды формы, такие как Сохранить и закрыть, будут расположены перед командами группы Важное. Если в какой-либо группе нет ни одной команды, то группа не показывается. Если разработчик конфигурации добавил в эту область собственные группы, то они располагаются после группы Создать на основании. 3.1.2.3. Область системных команд Левая часть области системных команд вспомогательного окна содержит только команду открытия главного меню и команды работы с избранным. В правой части расположены различные вспомогательные команды, которые помогают в работе с окном (например, команды получения и перехода по ссылке, вызова калькулятора, календаря и т. д.). Правая часть области может быть настроена с помощью соответствующего меню настройки. 3.2. Открытие форм в закладках В этом режиме формы открываются в качестве закладок рабочей области основного окна. Некоторые формы попрежнему открываются в отдельных окнах (например, окна выбора), но эти окна не появляются на панели задач. Форму, открытую в закладке, можно открыть во вспомогательном окне, если этого требует логика работы. В этом случае вспомогательное окно будет отображаться на панели задач операционной системы и будет доступно при переключении окон по Alt + Tab. 3.2.1. Основное окно приложения При работе с «1С:Предприятием» используется одно основное окно приложения. Структура основного окна организована таким образом, чтобы пользователь эффективно осуществлял навигацию по приложению, т. е. быстро находил нужные разделы и команды. Рис. 36. Основное окно с закладками Каждое состояние основного окна можно рассматривать как своеобразное рабочее место. Например, перейдя в раздел Финансы, пользователь увидит набор команд для выполнения наиболее частых действий, связанных с управлением товарными запасами. Каждая закладка, отображаемая в рабочей области основного окна, может быть закрыта (включая закладку Рабочий стол). Это можно сделать или с помощью контекстного меню (команда Закрыть), или нажав на синюю картинку в правой части каждой закладки. ПРИМЕЧАНИЕ. Закладка Рабочий стол всегда располагается первой среди закладок. Любую закладку (кроме закладки Рабочий стол) можно также открыть во вспомогательном окне. Для этого нужно воспользоваться командой Открыть в отдельном окне контекстного меню закладки. Заголовок закладки изменяет размер в зависимости от количества закладок в основном окне. При увеличении количества закладок размер заголовка закладки уменьшается, и заголовок может оказаться нечитаемым. В этом случае для получения списка открытых закладок можно воспользоваться специальной кнопкой, расположенной справа от закладок. Рис. 37. Список закладок Если в форме, открытой в закладке, выполняется открытие блокирующей (например, формы выбора) или модальной формы, то такая форма не отображается отдельной закладкой и не присутствует в списке окон на панели задач. Такая форма блокирует содержимое только той закладки, в которой такая блокирующая форма была открыта. При этом остается возможность переключаться между закладками. В случае переключения на закладку с открытой блокирующей формой она будет отображена на экране. 3.2.1.1. Панель разделов Панель разделов показывает список подсистем верхнего уровня и позволяет быстро переключаться между ними. Каждый раздел соответствует подсистеме (например, Продажи, Закупки, Запасы). Для повышения наглядности каждой подсистеме можно установить понятную картинку. Отсутствие картинки не препятствует отображению подсистемы в панели разделов. Первым разделом всегда является Рабочий стол. На рабочем столе собраны самые необходимые и часто используемые инструменты прикладного решения. Остальные разделы соответствуют подсистемам первого уровня иерархии. Панель разделов имеет возможность горизонтальной прокрутки, однако с помощью прав доступа можно ограничить набор разделов так, что прокрутка не потребуется. При переходе по разделам не меняется информация, отображаемая в рабочей области, но меняется содержимое панели навигации и панели действий. Рис. 38. Переключение подсистем и рабочая область ПРИМЕЧАНИЕ. Если в панели разделов нет ни одного раздела (они недоступны или скрыты пользователем), то панель разделов автоматически скрывается и основное окно приложения автоматически переключается на рабочий стол конфигурации. 3.2.1.2. Панель навигации Панель навигации отображает структуру конфигурации в соответствии с разделом, выбранным в панели разделов. Если у подсистемы имеются подчиненные подсистемы, то они будут отображаться как группы с возможностью сворачивания. В дальнейшем подсистемы, подчиненные подсистемам верхнего уровня, мы будем называть подразделами. При нажатии на гиперссылки этой панели, как правило, происходит открытие форм списков. При этом формы открываются непосредственно в основном окне, замещая друг друга. Щелчок по гиперссылке приводит к открытию формы в рабочей области основного окна приложения. В панели навигации могут располагаться команды трех стандартных групп: Важное, Обычное и См. также. Команды группы Важное будут выделены полужирным шрифтом. Если какой-либо группы нет, то она пропускается. Если разработчик конфигурации определил собственные группы команд из категории Панель навигации, то они будут располагаться непосредственно перед группой См. также (которая всегда является самой последней группой в панели навигации). При отображении группы См. также действуют следующие правила: ● команды группы См. также из отображаемого раздела и всех его подразделов визуально размещаются в одном списке См. также; ● команды выводятся в порядке разделов и подразделов, который задан при конфигурировании; ● внутри разделов и подразделов команды выводятся в порядке, который задан при конфигурировании. Порядок разделов (подсистем верхнего уровня), подразделов (подчиненных подсистем) и команд в группе См. также панели навигации можно изменять в редакторе фрагмента командного интерфейса. 3.2.1.3. Панель действий Панель действий содержит команды, которые соответствуют текущему разделу, выбранному в панели разделов. Эти команды объединены в стандартные группы: Создать, Отчеты, Сервис и группы, созданные разработчиком. Группа Создать включает в себя команды создания новых объектов информационной базы, например, документов или элементов справочников. В этой группе размещаются команды создания для всех объектов, входящих в подсистему, однако по умолчанию видимость этих команд отключена. Разработчик должен включить видимость для наиболее часто используемых команд создания новых объектов. Группа Отчеты содержит команды открытия отчетов, а группа Сервис – команды открытия обработок. Если в какой-либо группе нет ни одной команды, то группа не показывается. Если разработчик конфигурации определил собственные группы команд, принадлежащие категории Панель действий, то они располагаются после группы Сервис. При отображении групп панели действий действуют следующие правила: ● команды одинаковых групп из отображаемого раздела и всех его подразделов визуально размещаются в одном списке; ● команды выводятся в порядке разделов и подразделов, который задан при конфигурировании; ● внутри разделов и подразделов команды выводятся в порядке, который задан при конфигурировании. Порядок разделов (подсистем верхнего уровня), подразделов (подчиненных подсистем) и команд в группах панели действий можно изменять в редакторе командного интерфейса. Высота панели действий по умолчанию зависит от количества команд в группах и не превышает трех строк при автоматическом определении высоты панели. Однако пользователь может произвольно изменять высоту с помощью разделителя, расположенного под панелью. Если при текущей высоте панели действий в ней не помещаются все команды какой-либо группы, то в правом нижнем углу группы будет размещена пиктограмма, по нажатию на которую будет раскрыто меню, содержащее все команды группы. 3.2.1.4. Информационная панель Информационная панель предназначена для обращения к последним данным, редактируемым пользователем, а также для отображения перечня последних оповещений (информация о тех или иных действиях, выполненных в системе). Подробнее см. здесь. 3.2.1.5. Область системных команд Область системных команд позволяет выполнять ряд действий, не зависящих от прикладной специфики конфигурации, но помогающих в управлении системой. Кроме того, в этой области расположены различные команды, помогающие в работе с окном. Рис. 39. Левая часть области системных команд В левой части области системных команд расположена кнопка вызова главного меню, а также команды вызова меню функций и меню работы с избранным пользователя. В главном меню расположено меню Вид, которое позволяет настроить внешний вид окна приложения. Рис. 40. Меню «Вид» В частности, данное меню позволяет отключать видимость панели разделов, панелей навигации и действий. Это позволит увеличить место под формы и уменьшить вероятность появления полос прокрутки. Также следует обратить внимание на команду Скрыть все панели команд. После выполнения команды скрывается панель разделов, панель навигации и панель действий. Рис. 41. Скрытые панели команд Повторное выполнение команды возвращает скрытые панели. Нужно помнить следующую особенность: команда Скрыть все панели команд не будет работать, если панель разделов, панель навигации и панель действий скрыты с помощью меню Вид. Для ускорения и упрощения доступа к командам той или иной подсистемы служит специальный режим – Меню функций. Для вызова этого режима следует нажать специальную кнопку в области системных команд. Рис. 42. Меню функций Меню функций представляет собой панель разделов и специальную форму, которая содержит все команды выбранного раздела. Перечень разделов и состав команд соответствуют текущим настройкам пользователя. Первая колонка формы соответствует панели навигации, остальные колонки – группам панели действий выбранной подсистемы. Отображение панели разделов не зависит от того, в каком состоянии находится настройка Главное меню – Вид – Панель разделов. После выбора необходимой команды основное окно возвращается к тому виду, какой был до вызова меню функций. Состав команд обновляется, если в окне функций выбрать другой раздел. В «1С:Предприятии» избранное – это список ссылок, специально отобранных самим пользователем для быстрого перехода к тем или иным разделам конфигурации, точкам навигации, формам объектов информационной базы, а также формам отчетов и обработок. Существует возможность программного управления списком избранного. Для этого используется объект ИзбранноеРаботыПользователя. Данный объект можно получить из хранилища системных настроек. ПРИМЕЧАНИЕ. При работе с избранным следует помнить, что список избранного является одноуровневым. В список избранного нельзя добавить ссылку на стандартную функцию (вызываемую с помощью команды Главное меню – Все функции – Стандартные). Во вспомогательных окнах область системных команд выглядит другим образом (см. здесь). В меню Окна отображается основное окно, закладки окна и вспомогательные окна. Флажком отмечается: ● активное вспомогательное окно; ● активная закладка основного окна; ● собственно основное окно, если в нем не открыто ни одной закладки. В правой части области системных команд расположены различные вспомогательные команды, которые помогают в работе с окном. Перечень команд может быть настроен с помощью соответствующего меню настройки. Доступность и состав команд зависят от текущей формы в активной закладке. 3.2.2. Вспомогательное окно Описание вспомогательного окна см. здесь. 3.3. Интерфейс «Такси» В этом режиме формы в основном открываются в рабочей области основного окна. Некоторые формы попрежнему открываются в отдельных окнах (например, окна выбора), но эти окна не появляются на панели задач. Переключение между окнами с помощью сочетания клавиш Alt+Tab невозможно. Можно переключаться между открытыми формами с помощью специальных кнопок, присутствующих в заголовке всех форм, которые открыты в рабочей области основного окна приложения. 3.3.1. Основное окно приложения При работе с «1С:Предприятием» используется одно основное окно приложения. Структура основного окна организована таким образом, чтобы пользователь эффективно осуществлял навигацию по приложению, т. е. быстро находил нужные разделы и команды. В основном окне приложения не выполняется открытия форм (кроме рабочей области). Рис. 43. Основное окно в интерфейсе «Такси» При работе в интерфейсе Такси, в основном окно приложения могут произвольно располагаться несколько различных панелей (см. здесь). В рабочей области основного окна приложения отображаются все формы, с которыми работает пользователь. Исключением являются блокирующие формы, которые открываются в отдельных окнах. Если в форме, открытой в рабочей области, выполняется открытие блокирующей (например, формы выбора) формы, то такая форма отображается в виде отдельного окна, но не присутствует в списке окон на панели задач. В зависимости от режима открытия окна (см. здесь), будет заблокирована работа либо с формой-владельцем, либо со всем интерфейсом системы. При этом если вспомогательное окно открыто в режим блокировки окна-владельца, остается возможность открывать другие формы и использовать командный интерфейс прикладного решения. В случае переключения на форму, из которой открыта форма, блокирующая работу с владельцем, блокирующая форма будет отображена на экране. Рассмотрим более подробно составные части основного окна приложения. 3.3.1.1. Начальная страница Работа с прикладным решением начинается с начальной страницы. Рис. 44. Начальная страница На эту страницу прикладной разработчик располагает формы, которые наиболее востребованы (по его замыслу) в данном прикладном решении. Доступность форм на этой странице определяется правами доступа и функциональными опциями. Начальную страницу невозможно закрыть. Настройка интерфейса начальной страницы выполняется с помощью свойств конфигурации (см. здесь). Пользователь также может сформировать персональный состав начальной страницы из списка доступных форм, которые прикладной разработчик разрешил помещать на начальной странице. Для этого необходимо воспользоваться специальным диалогом настройки начальной страницы: Главное меню – Вид – Настройка начальной страницы. 3.3.1.2. Панель разделов Панель разделов показывает список подсистем верхнего уровня и позволяет быстро выбирать нужный набор функций. Каждый раздел соответствует подсистеме (например, Продажи, Закупки, Запасы). Для повышения наглядности каждой подсистеме можно установить понятную картинку. Отсутствие картинки не препятствует отображению подсистемы в панели разделов. Первым разделом всегда является Главное. В основном разделе собраны самые необходимые и часто используемые инструменты прикладного решения. Остальные разделы соответствуют подсистемам первого уровня иерархии. Рис. 45. Панель разделов Фактически, элемент панели разделов группирует команды системы, логически связанные с каким-либо направлением работы в рамках прикладного решения. Например, действия, связанные с управлением закупками (раздел Закупки), управлением товарными запасами (раздел Товарные запасы) и т. д. Панель разделов не является инструментом переключения автоматизированных рабочих мест. Панель разделов имеет возможность прокрутки. Состав панели разделов для конкретного пользователя определяется его правами доступа и установленными функциональными опциями. Видимость доступных разделов может регулироваться самим пользователем с помощью команды Главное меню – Вид – Настройка панели разделов. Действие при выборе раздела зависит от того, отображается в главном окне панель команд текущего раздела или нет (см. здесь): ● Панель не отображается. В этом случае выбор какого-либо раздела приводит к отображению на экране меню функций данного раздела. В этом случае текущий раздел никак не отображается на экране (когда закрыто меню функций). Рис. 46. Меню функций при выборе раздела ● Панель отображается. В этом случае при выборе раздела не будет открыто меню функций, но будет изменено содержимое панели команд текущего раздела. Если отображаемой информации не достаточно, то можно открыть меню функций повторным выбором раздела. Также в этом случае на панели разделов всегда отображается текущий раздел. Рис. 47. Панель команд текущего раздела Меню функций содержит команды панели навигации и панели действий. Из меню функций имеется возможность добавить какую-либо команду в избранное. Для этого достаточно нажать звездочку, расположенную слева от имени команды. Для того чтобы удалить команду из избранного, необходимо еще раз нажать на картинку звездочки. При открытии меню функций в правом верхнем углу отображаются гиперссылки для настройки панели навигации (гиперссылка Настройка навигации) и панели действий (гиперссылка Настройка действий) для данной подсистемы. Открыть меню функций можно несколькими способами: ● Выбором раздела; ● С помощью команды панели инструментов (см. здесь). ● С помощью клавиатуры: ● С помощью сочетания клавиш Ctrl+Shift+T; ● С помощью сочетания клавиш Alt+2. В этом случае курсор будет установлен на первую команду панели навигации; ● С помощью сочетания клавиш Alt+3. В этом случае курсор будет установлен на первую команду панели действий. ПРИМЕЧАНИЕ. Если в панели разделов нет ни одного раздела (они недоступны или скрыты пользователем), то панель разделов автоматически скрывается. 3.3.1.3. Панель команд текущего раздела Панель команд текущего раздела содержит команды, соответствующие текущему разделу. Рис. 48. Панель команд текущего раздела Панель команд текущего раздела: ● Команды панели навигации располагаются в начале панели. Команды группы Важное выделены полужирным шрифтом. В случае, когда панель отображается горизонтально, отображается максимально возможное количество команд (минимум одна). Если все команды не помещаются в панель – на панели отображается подменю Еще, которое содержит оставшиеся команды. Если панель расположена вертикально, то отображается не менее одной и не более 10 команд панели навигации. Если в панели присутствует подменю Еще – оно будет располагаться 11 элементом командой панели. ● После команд панели навигации располагаются подменю для всех непустых групп команд панелей навигации и панели действий выбранного раздела. 3.3.1.4. Панель открытых Данная панель содержит список форм, открытых в текущем сеансе работы с прикладным решением. Рис. 49. Панель открытых Первой открытой формой всегда является начальная страница (если она настроена в прикладном решении). Формы рабочей области начальной страницы не отображаются как отдельные формы в панели открытых. Нажатие картинки («крестик») в правом верхнем углу элемента панели приведет к закрытию формы, которая отображается соответствующим элементом. 3.3.1.5. История «1С:Предприятие» сохраняет историю работы пользователя, которую можно применять для быстрого доступа к недавно открытым, созданным или отредактированным объектам информационной базы (документам, элементам справочников и др.). История содержит навигационные ссылки на элементы прикладного решения, упорядоченные по времени использования. История может отображать в виде формы истории и в виде панели истории. Рис. 50. Форма истории Элементы списка группируются по датам, когда использовалась та или иная форма прикладного решения. В рамках даты элементы упорядочены по времени использования, которое отображается справа от представления элемента. История работы пользователя хранится в информационной базе. При этом в истории хранится только одна запись на один объект информационной базы (запись о последующем изменении замещает запись о предыдущем изменении данного объекта в течении дня). Хранится не более 400 записей для конкретного пользователя. Если число сохраненных элементов равно 400, то при добавлении новых элементов истории наиболее старые события истории удаляются. Если список истории достаточно большой, то облегчить поиск в нем можно с помощью поиска. Для ввода поискового запроса предназначено специальное поле в верхней части формы, доступ к которой возможен с помощью сочетания клавиш Ctrl+F или просто начав набирать требуемый текст. Если история отображается в панели основного окна (см. здесь), то такой список обладает следующими особенностями: ● Отсутствует группировка по датам и отображение времени использования объекта прикладного решения. ● При горизонтальном расположении панели в ней отображается столько элементов, сколько помещается в отведенном месте. ● При вертикальном расположении панели в ней отображается не более 10 первых элементов. ● При нажатии на заголовок панели (слово История) открывается форма истории. Открыть форму истории можно с помощью команды панели инструментов или сочетания клавиш Ctrl+Shift+H. Информация попадает в историю работы пользователя несколькими путями: ● При выполнении интерактивных операций (открытие, создание, запись); ● При отображении оповещения пользователя, в котором присутствует навигационная ссылка на какой-либо объект системы (в историю попадет объект, на который указывает навигационная ссылка). Подробнее о механизме оповещений см. здесь. ● При программном изменении истории работы пользователя через свойство глобального контекста ИсторияРаботыПользователя. Если выполняется программная запись или открытие объекта, то информация о таком объекте не попадет в историю. 3.3.1.6. Избранное Избранное содержит список навигационных ссылок на различные элементы прикладного решения, которые пользователь отметил для частого использования. Избранное может отображать в виде формы избранного и в виде панели избранного. Рис. 51. Форма избранного Среди добавленных элементов пользователь может выделить элементы, которые он использует чаще всего. Для этого необходимо нажать пиктограмму кнопки, расположенной слева от элемента. Такой элемент будет выделен полужирным шрифтом и при последующем открытии избранного будет расположен в верхней части панели и не будет изменяться своего положения. Также имеется возможность переименовать элемент или удалить его из списка. Если список избранного достаточно большой, то облегчить нахождение в нем нужного элемента можно с помощью функции поиска. Для ввода поискового запроса предназначено специальное поле в верхней части формы, доступ к которой возможен с помощью сочетания клавиш Ctrl+F или просто начав набирать требуемый текст. Если избранное отображается в панели основного окна (см. здесь), то такой список обладает следующими особенностями: ● Отсутствует возможности поиска, переименования, удаления и отметки важного элемента избранного. ● При горизонтальном расположении панели в ней отображается столько элементов, сколько помещается в отведенном месте. ● При вертикальном расположении панели в ней отображается не более 10 первых элементов. ● При нажатии на заголовок панели (слово Избранное) открывается форма избранного. Открыть форму избранного можно с помощью команды панели инструментов или сочетания клавиш Ctrl+Shift+B. Избранное недоступно, если у пользователя отсутствует право СохранениеДанныхПользователя(см. здесь). 3.3.1.7. Панель инструментов Панель инструментов предназначена для быстрого доступа к следующим функциям системы: ● Меню функций. Подробнее см. здесь; ● Избранное работы пользователя (если для текущего пользователя установлено право СохранениеДанныхПользователя(см. здесь). Подробнее см. здесь; ● История работы пользователя. Подробнее см. здесь; ● Форма полнотекстового поиска (если он включен). Подробнее см. здесь. Вышеприведенный список соответствует картинкам на панели инструментов. Рис. 52. Панель инструментов 3.3.1.8. Форма полнотекстового поиска Чтобы воспользоваться полнотекстовым поиском, система предоставляет специальную форму, которую можно вызвать из панели инструментов (см. здесь). Эта форма доступна только в том случае, если включен полнотекстовый поиск. Рис. 53. Форма полнотекстового поиска В правой части формы отображаются последние запросы, введенные данным пользователем. Для быстрого получения результата поиска, достаточно нажать гиперссылку с нужным текстом. При использовании полнотекстового поиска есть возможность применять специальный язык, описание которого см. здесь. Если прикладного разработчика не устраивает системная форма полнотекстового поиска, то он может ее заменить с помощью свойства конфигурации Основная форма поиска (см. здесь). Открыть форму полнотекстового поиска можно с помощью команды панели инструментов или сочетания клавиш Ctrl+Shift+F. 3.3.1.9. Область системных команд Область системных команд позволяет выполнять ряд действий, не зависящих от прикладной специфики конфигурации, но помогающих в управлении системой. Кроме того, в этой области расположены различные команды, помогающие в работе с системой. Рис. 54. Область системных команд В левой части области системных команд расположена кнопка вызова главного меню прикладного решения. В частности, главное меню содержит меню Вид, который позволяет управлять внешним видом основного окна приложения. Рис. 55. Меню «Вид» Данное меню позволяет настроить отображение панели разделов, выполнить настройку начальной страницы и расположение панелей. Также в этом меню расположена команда, позволяющая скрыть все панели основного окна приложения, кроме панели инструментов. Повторное выполнение команды возвращает скрытые панели. Панель инструментов будет располагаться в такой ориентации, как это задано пользователем в редакторе панелей. Рис. 56. Скрыть все панели В правой части области системных команд располагаются различные сервисные команды, помогающие работе с системой и не зависящие от используемого прикладного решения, например, команды печати, получения навигационной ссылки и перехода по ней и т. д. 3.3.1.10. Настройка панелей Интерфейс Такси позволяет выполнять настройку отображения и местоположения различных панелей в основном окне приложения. Для этого служит Редактор панелей. Для его вызова необходимо использовать команду главного меню приложения Главное меню – Вид – Редактор панелей.... Рис. 57. Редактор панелей Открыв редактор, пользователь имеет возможность перемещать мышью соответствующий элемент основного окна приложения (нижняя часть формы, выделенная серым фоном) в нужное место. Элементы следует перетаскивать внутрь светлых прямоугольников, выделенных серой линией. В этом случае панели будут находиться в разных строках или колонках. Можно перетащить элемент на уже существующий элемент. В этом случае элементы будут расположены в одной строке или колонке. В центре редактора отображается рабочая область начальной страницы. В нее невозможно поместить ни одну панель. Рис. 58. Пример расположения панелей Для удаления элемента, нужно перенести его со схемы обратно на элемент с серым фоном. Кроме рабочей области основного окна приложения, остальные элементы могут быть убраны из основного окна приложения. Например, можно создать минималистический интерфейс прикладного решения, когда в основном окне присутствуют только рабочая область, панели инструментов и панель открытых. Рис. 59. Минималистичный интерфейс При нажатии кнопки Стандартные, интерфейс будет приведен в состояние, которые прикладной разработчик задал с помощью свойства конфигурации Интерфейс клиентского приложения (см. здесь). 3.3.2. Вспомогательное окно Вспомогательное окно – это окно приложения, в котором открываются формы, созданные в прикладном решении. Вспомогательное окно может быть открыто в рабочей области основного окна приложения и в отдельном окне. Режим открытия вспомогательного окна приложения зависит от значения свойства формы Режим открытия окна (см. здесь). Рис. 60. Структура вспомогательного окна приложения Закрытие вспомогательного окна не приводит к закрытию всего приложения. Вспомогательных окон может быть открыто сколько угодно, но для каждого объекта информационной базы (например, документа или элемента справочника) оно одно, т. е. нельзя открыть несколько окон для просмотра одного и того же документа, если это специально не предусмотрено в прикладном решении. Во вспомогательном окне можно выделить основную форму – форму, которая отображается по умолчанию при открытии вспомогательного окна и которая открывается при нажатии на Главное панели навигации формы. При нажатии на другие ссылки панели навигации формы будут открываться вспомогательные формы. Кнопки управления формами располагаются во все вспомогательных формах. Эти кнопки имеют следующее назначение (слева направо): ● Кнопка перехода к начальной странице; ● Кнопки перехода к предыдущей/следующей форме предназначены для перехода по списку открытых окон. Кнопка перехода к следующей форме активизируется только после того, как хотя бы раз была нажата кнопка перехода к предыдущему окну. ● Кнопка помещения формы в список избранного (см. здесь). Если форма отсутствует в списке избранного – цвет звездочки соответствует фону формы. В противном случае звездочка будет окрашена в желтый цвет. Данная кнопка недоступна, если у пользователя отсутствует право СохранениеДанныхПользователя(см. здесь). 3.3.2.1. Панель навигации формы Панель навигации вспомогательного окна (панель навигации формы) позволяет просматривать различные сведения, логически связанные с данными, которые отображает основная форма окна. В панели навигации могут располагаться команды трех групп: Важное, Перейти и См. также. Общее расположение команд следующее: ● Первой командой всегда является команда Главное (выделена полужирным шрифтом), которая предназначена для открытия основной формы вспомогательного окна приложения. ● Затем следуют команды группы Важное. ● Затем следуют команд группы Перейти. ● Последними следуют команды группы См. также. Если разработчик конфигурации определил собственные группы команд из категории Панель навигации формы, то команды из этих групп будут располагаться непосредственно перед командами группы См. также (команды этой группы всегда располагаются в самом конце панели навигации формы). Если команды не помещаются на панели навигации, то последней командой панели будет выступать подменю Еще, в котором будут располагаться все команды, которые не поместились на отображаемой части панели навигации. 3.3.2.2. Командная панель формы Командная панель формы содержит команды, непосредственно связанные с объектом, который отображается в основной форме. Существуют стандартные группы Важное и Создать на основании; кроме того, на панели могут размещаться группы, созданные разработчиком. Каждая команда из группы Важное будет отображаться своей кнопкой на панели. Группа Создать на основании будет оформлена в виде подменю панели. Также в виде подменю будут оформлены все группы команд, созданные разработчиком. Команды формы, такие как Сохранить и закрыть, будут расположены перед командами группы Важное. Если в какой-либо группе нет ни одной команды, то группа не показывается. Если разработчик конфигурации добавил в эту область собственные группы, то они располагаются после группы Создать на основании. В том случае, если все команды командной панели не помещаются на форме, они помещаются в специальное подменю Еще, которое располагается последней командой панели. Исключением является кнопка вызова справки, которая располагается правее подменю Еще в том случае, если для формы установлена справочная информация. Глава 4. Встроенный язык «1С:Предприятие» является гибкой настраиваемой системой, с помощью которой можно решать широкий круг задач в сфере автоматизации деятельности предприятий. Специфические алгоритмы конфигурации описываются в конфигураторе системы «1С:Предприятие», в программных модулях, содержащих тексты на встроенном языке системы «1С:Предприятие». 4.1. Назначение и краткая характеристика встроенного языка Встроенный язык системы «1С:Предприятие» предназначен для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи. Встроенный язык (далее по тексту – язык) представляет собой предметно-ориентированный язык программирования, специально разработанный с учетом возможности его применения не только профессиональными программистами. В частности, все операторы языка имеют как русское, так и англоязычное написание, которое можно использовать одновременно в одном исходном тексте. Основной язык, описываемый в данной книге, – русский, однако для каждого оператора языка приводится его англоязычный синоним. При своей относительной простоте язык обладает некоторыми объектно-ориентированными возможностями, например, правила доступа к свойствам и методам специализированных типов данных (документам, справочникам и т. п.) подобны свойствам и методам объектов, используемых в других объектно-ориентированных языках. Однако специализированные типы данных не могут определяться средствами самого языка, а задаются в визуальном режиме. Типизация переменных в языке не жесткая, т. е. тип переменной определяется ее значением. Переменные не обязательно объявлять в явном виде. Неявным определением переменной является ее первое упоминание в левой части оператора присваивания. Возможно также явное объявление переменных при помощи соответствующего оператора. Допускается применение массивов, структур, соответствий и других универсальных коллекций значений. 4.2. Формат исходных текстов программных модулей 4.2.1. Что такое программный модуль Программные модули в конфигурации системы «1С:Предприятие» не являются самостоятельными программами в общепринятом понимании этого слова, поскольку они являются только частью всей конфигурации. Программный модуль – это текст на встроенном языке, в котором размещены тексты процедур и функций с необходимыми алгоритмами, вызываемые системой в определенные моменты работы. Поэтому программный модуль не имеет формальных границ своего описания типа: «Начало модуля» – «Конец модуля». Место размещения конкретного программного модуля предоставляется конфигуратором в тех точках конфигурации, которые требуют описания специфических алгоритмов функционирования. Эти алгоритмы следует оформлять в виде процедур или функций, которые будут вызваны самой системой в заранее предусмотренных ситуациях (например, при нажатии кнопки в диалоговом окне). Каждый отдельный программный модуль воспринимается системой как единое целое, поэтому все процедуры и функции программного модуля выполняются в едином контексте. 4.2.2. Контекст выполнения программного модуля Каждый программный модуль связан с остальной частью конфигурации. Эта связь называется контекстом выполнения модуля. Следует различать два вида контекста: ● глобальный контекст, ● локальный контекст выполнения конкретного модуля. 4.2.2.1. Глобальный контекст Глобальный контекст образуется: ● значениями свойств и методов глобального контекста; ● системными перечислениями и системными наборами значений (например, КодВозвратаДиалогаи Символы). Глобальный контекст виден всем программным модулям и определяет общую языковую среду конфигурации. 4.2.2.2. Локальный контекст Локальный контекст модуля образуется тем конкретным местом конфигурации задачи, для которого использован программный модуль. Локальный контекст виден только конкретному программному модулю и определяет для модуля набор непосредственно доступных модулю объектов, их свойств и методов. 4.2.3. Виды программных модулей В системе «1С:Предприятие» существуют несколько видов программных модулей. Они различаются по месту размещения и доступному контексту. 4.2.3.1. Модуль управляемого приложения Модулем управляемого приложения называется модуль, который автоматически выполняется в момент загрузки конфигурации, при старте системы «1С:Предприятие» в следующих режимах: ● тонкого клиента, ● веб-клиента, ● толстого клиента в режиме управляемого приложения. Модуль управляемого приложения предназначен для отработки действий, связанных с сеансом работы конечного пользователя (прежде всего обработки начала и окончания сеанса работы). Модуль управляемого приложения недоступен для процедур, работающих на сервере. В нем рекомендуется реализовывать только обработчики соответствующих событий. Процедуры и функции модуля управляемого приложения, а также переменные, для которых в заголовке указано ключевое слово Экспорт, являются доступными: ● в неглобальных клиентских общих модулях, ● клиентских процедурах и функциях модуля команды, ● клиентских процедурах и функциях модуля управляемой формы. В контексте модуля управляемого приложения доступны: ● часть глобального контекста, которая может исполняться в управляемом приложении; ● экспортируемые процедуры и функции любых клиентских общих модулей; ● экспортируемые процедуры и функции серверных неглобальных общих модулей, у которых установлено свойство Вызов сервера. 4.2.3.2. Модуль внешнего соединения Модуль внешнего соединения расположен, как и модуль приложения, в корневом разделе конфигурации. В нем располагаются процедуры-обработчики событий, которые инициализируются при старте и окончании работы системы в режиме внешнего соединения (СОМ-соединения). В модуле внешнего соединения возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны для внешнего приложения. Объекты «1С:Предприятия», доступные извне через COM-соединение: ● экспортируемые переменные и процедуры/функции модуля внешнего соединения; ● экспортируемые переменные и процедуры/функции общих модулей: ● включение и исключение модулей целиком выполняются с помощью установки свойств общих модулей; ● включение и исключение фрагментов общих модулей выполняются с помощью инструкций препроцессора; ● глобальный контекст «1С:Предприятия». Модуль присутствует только в сессии внешнего соединения. В данном режиме характерно полное отсутствие пользовательского интерфейса. 4.2.3.3. Модуль сеанса Модулем сеанса называется модуль, который автоматически выполняется при старте системы «1С:Предприятие» в момент загрузки конфигурации. Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Этот общий модуль всегда исполняется в привилегированном режиме сервера «1С:Предприятия». Установка параметров сеанса выполняется в обработчике события УстановкаПараметровСеанса(). Исполнение модуля сеанса происходит до начала исполнения модуля управляемого приложения (модуля внешнего соединения). Модуль сеанса может содержать только определения процедур и функций, может использовать процедуры из общих модулей конфигурации и не содержит экспортируемых процедур и функций. 4.2.3.4. Общие модули Общие модули располагаются в отдельной ветке дерева метаданных. Основным назначением общих модулей является содержание общих алгоритмов конфигурации, доступных из разных модулей. В общих модулях отсутствует раздел определения переменных и раздел основной программы, то есть они содержат только раздел процедур и функций (см. раздел «Структура программного модуля»). В любом общем модуле возможно объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации. Подробнее про общие модули см. здесь. 4.2.3.5. Модули прикладных объектов Набор прикладных объектов имеет собственные модули. К таким объектам относятся: ● Менеджеры значения константы, ● Справочники, ● Документы, ● Отчеты, ● Обработки, ● Планы видов характеристик, ● Планы счетов, ● Планы видов расчетов, ● Планы обмена, ● Бизнес-процессы, ● Задачи, ● Регистры. Модули располагаются в ветках конфигурации, в которых содержатся сами объекты, и являются свойствами объектов. Каждый объект имеет свой индивидуальный модуль. В этих модулях возможно объявление переменных, процедур и функций, которые будут доступны при работе с объектом извне во встроенном языке, дополняя контекст объекта. В контексте модуля прикладного объекта имеется доступ к реквизитам и табличным частям объекта, а также его методам и событиям. 4.2.3.6. Модули менеджеров объектов Каждый прикладной объект имеет менеджер, предназначенный для управления этим объектом как объектом конфигурации. С помощью менеджера можно создавать объекты, работать с формами и макетами. Модуль менеджера позволяет расширить функциональность менеджеров за счет введения процедур и функций на встроенном языке. Фактически это позволяет описать методы для объекта конфигурации (например, справочника), которые относятся не к конкретному экземпляру объекта базы данных, а к самому объекту конфигурации. Контекст модуля менеджера образуется: ● свойствами и методами глобального контекста; ● экспортируемыми процедурами и функциями глобальных общих модулей (если эти модули компилируются на сервере); ● экспортируемыми процедурами и функциями неглобальных общих модулей (если эти модули компилируются на сервере); ● локальным контекстом самого модуля. Модуль менеджера не может иметь переменных и тела модуля. Если функции или процедуры модуля менеджера объявлены как экспортируемые, к ним можно будет получить доступ через менеджер объекта. Например, опишем функцию в модуле менеджера справочника Контрагенты: Функция ПолучитьСписокДебиторов() Экспорт... КонецФункции Тогда вызов этой функции из прикладного кода будет выглядеть следующим образом: Дебиторы = Справочники.Контрагенты.ПолучитьСписокДебиторов(); 4.2.3.7. Модули форм Эти модули содержатся в формах конфигурации (см. здесь). Каждая форма имеет свой индивидуальный модуль. В этих модулях возможно объявление переменных, процедур и функций, которые будут доступны при работе с формой извне во встроенном языке, дополняя контекст формы. Контекст формы будет образован: ● локальным контекстом самого модуля формы, реквизитами формы, которой «принадлежит» модуль; ● свойствами и методами объекта УправляемаяФормавстроенного языка; ● свойствами и методами расширения формы, определяемого типом того объекта, данные которого содержатся в основном реквизите формы; ● глобальным контекстом, в том числе неглобальными общими модулями и экспортируемыми функциями и процедурами глобальных общих модулей, при этом нужно обеспечивать согласованность того, как описана процедура в модуле формы (&НаКлиенте, &НаСервереи т. д.), и того, какие свойства установлены у общего модуля (Клиент (управляемое приложение), Сервер и т. д.); ● экспортируемыми переменными, процедурами и функциями модуля управляемого приложения. 4.2.3.8. Модули команд Модуль команды предназначен для того, чтобы описать в нем на встроенном языке те действия, которые должна выполнить система при вызове команды. Модуль команды может содержать только описание процедур и функций. Модуль команды не может иметь переменных и тела модуля. Обработчик ОбработкаКоманды()обязательно должен предваряться директивой препроцессора &НаКлиенте, т. к. именно там начинается исполнение команды. Контекст клиентских процедур модуля команды образуется: ● глобальным контекстом, в том числе неглобальными общими модулями и экспортируемыми функциями и процедурами глобальных общих модулей, при этом нужно обеспечивать согласованность того, как описана процедура в модуле формы (&НаКлиенте, &НаСервереи т. д.), и того, какие свойства установлены у общего модуля (Клиент (управляемое приложение), Сервер и т. д.); ● локальным контекстом самого модуля команды. Контекст серверных процедур модуля команды образуется: ● свойствами и методами глобального контекста; ● экспортируемыми процедурами и функциями глобальных общих модулей, если эти модули компилируются на сервере; ● неглобальными общими модулями, если эти модули компилируются на сервере; доступны экспортируемые методы таких модулей; ● серверными методами модуля команды. В модуле команды можно описывать методы с ключевым словом Экспорт. Однако как-либо использовать их за пределами этого модуля нельзя. Из встроенного языка невозможно получить доступ к командам и, следовательно, к их контексту тоже. 4.2.4. Формат программного модуля Структуру программного модуля можно подразделить на следующие разделы: ● раздел определения переменных, ● раздел процедур и функций, ● раздел основной программы. В конкретном программном модуле любой из разделов может отсутствовать. Раздел определения переменных размещается от начала текста модуля до первого оператора Процедура, или оператора Функция, или любого исполняемого оператора. В этом разделе могут находиться только операторы объявления переменных Перем. Раздел процедур и функций размещается от первого оператора Процедураили оператора Функциядо любого исполняемого оператора вне тела описания процедур или функций. Раздел основной программы размещается от первого исполняемого оператора вне тела последней процедуры или функции до конца модуля. В этом разделе могут находиться только исполняемые операторы. Раздел основной программы исполняется в момент инициализации модуля. Обычно в разделе основной программы имеет смысл размещать операторы инициализации переменных какими-либо конкретными значениями, которые необходимо провести до первого вызова любой из процедур или функций модуля. Исходный текст программного модуля может состоять из операторов и комментариев. 4.2.4.1. Комментарии Комментарий используется для размещения в исходном тексте программного модуля всякого рода пояснений к работе модуля. Хорошим тоном программирования считается, когда исходный текст содержит исчерпывающий комментарий с описанием алгоритма. В режиме исполнения программы комментарии пропускаются. В тексте программного модуля комментарий начинается парой символов «//» и заканчивается концом строки. Это значит, что комментарий можно начинать с начала строки или записывать его после оператора на той же строке. После начала комментария нельзя писать оператор на той же строке, необходимо закончить комментарий концом строки. А=В; // Это – комментарий // Это тоже комментарий 4.2.4.2. Формат операторов Операторы имеют вид стандартного обращения к процедуре, за исключением оператора присваивания (А = В;) и синтаксических конструкций встроенного языка (например, таких как Для, Пока, Если). Между собой операторы обязательно следует разделять символом точка с запятой. Конец строки не является признаком конца оператора, т. е. операторы могут свободно переходить через строки и продолжаться на другой строке. Можно располагать произвольное число операторов в одной строке, разделяя их символом точка с запятой. Операторы языка в программном модуле можно подразделить на две категории: операторы объявления переменных и исполняемые операторы. Операторы объявления переменных создают имена переменных, которыми манипулируют исполняемые операторы. Любой исполняемый оператор может иметь метку, используемую в качестве точки перехода в операторе Перейти. В общем случае формат оператора языка следующий: ~метка:Оператор[(параметры)] [ДобКлючевоеСлово]; В качестве меток используются специальные идентификаторы, начинающиеся с символа тильда и состоящие из последовательности букв, цифр и символов подчеркивание. Чтобы пометить оператор, нужно поместить перед ним метку и следующий за ней символ двоеточие. ~метка:А=В; 4.2.4.3. Имена переменных, процедур и функций Именем переменной, объявленной процедуры или функции может быть любая последовательность букв, цифр и знаков подчеркивания, начинающаяся с буквы или знака подчеркивания. Вновь создаваемые имена не должны совпадать с зарезервированными словами языка или именами свойств, непосредственно доступных в текущем контексте. Распознавание имен переменных, процедур и функций ведется без учета регистра букв. 4.2.4.4. Язык написания программных модулей Встроенный язык системы «1С:Предприятие» является двуязычным. Почти все зарезервированные слова, имена типов значений, свойств, методов, событий имеют два имени: русское и английское. Исключение составляют слова, не имеющие аналогов в русском языке. В тексте программных модулей эти имена можно свободно смешивать, используя то русские, то английские имена без каких-либо ограничений. 4.2.4.5. Регистры букв при написании программных модулей Регистр букв (строчные или заглавные) при написании имен переменных, свойств, методов, процедур, функций, а также функций встроенного языка не имеет значения. 4.2.4.6. Зарезервированные слова Приведенные далее ключевые слова являются зарезервированными и не могут использоваться в качестве создаваемых имен переменных, реквизитов объектов конфигурации и объявляемых процедур и функций. В данном варианте языка каждое из ключевых слов имеет два представления – русское и английское. Русское имя Английское имя Если If Тогда Then ИначеЕсли ElsIf Иначе Else КонецЕсли EndIf Для For Каждого Each Из In По To Пока While Цикл Do КонецЦикла EndDo Процедура Procedure Функция Function КонецПроцедуры EndProcedure КонецФункции EndFunction Перем Var Перейти Goto Возврат Return Продолжить Continue Прервать Break И And Или Or Не Not Попытка Try Исключение Except ВызватьИсключение Raise КонецПопытки EndTry Новый New Выполнить Execute ПРИМЕЧАНИЕ. Регистр букв (строчные или заглавные) при написании не имеет значения. 4.2.5. Специальные символы, используемые в исходном тексте Сим вол Описание // Двумя знаками косая черта начинается комментарий. Комментарием считается весь текст от символа до конца текущей строки | Используется только в строковых константах в начале строки и означает, что данная строка является продолжением предыдущей (перенос строки) ~ Начало метки оператора : Окончание метки оператора ; Символ разделения операторов () В круглые скобки заключается список параметров методов, процедур, функций и конструкторов. Также они используются в выражениях встроенного языка [] С помощью оператора квадратные скобки производится обращение к свойствам объекта по строковому представлению имени свойства. Также возможно обращение к элементам коллекций по индексу или другому параметру , Разделяет параметры в списке параметров методов, процедур, функций и конструкторов "" Обрамляет строковые литералы '' Обрамляет литералы даты . Десятичная точка в числовых литералах. Разделитель, используемый для обращения к свойствам и методам объектов встроенного языка + Операция сложения. Операция конкатенации строк - Операция вычитания * Операция умножения / Операция деления % Получение остатка от деления. Допускается использование дробных значений делимого и делителя > Логическая операция Больше >= Логическая операция Больше или равно < Логическая операция Меньше <= Логическая операция Меньше или равно = Операция присваивания. Логическая операция Равно <> Логическая операция Не равно 4.3. Примитивные типы данных Во встроенном языке системы «1С:Предприятие» поддерживается набор примитивных типов данных. Для большинства примитивных типов данных предусмотрена возможность использования в тексте модуля литералов, то есть указание значения соответствующего типа непосредственно в модуле. // Пример использования литерала типа Строка А = "Моя строка"; // Пример использования литерала типа Булево Б = Истина; // Пример использования литерала типа Число В = 12345.6789; NULL Описание: Значения данного типа используются исключительно для определения отсутствующего значения при работе с базой данных, например, при соединении таблиц. Литералы: NULL Булево (Boolean) Описание: Значения данного типа имеют два значения – Истинаи Ложь, задаваемых соответствующими литералами. Значения данного типа возвращаются в качестве результата вычисления логических выражений. Примечание: В операциях сравнения встроенного языка используются логические выражения. Это означает, что в выражении сравнения не обязательно писать так: Если МояПеременная = Истина Тогда КонецЕсли; Достаточно написать так: Если МояПеременная Тогда КонецЕсли; Литералы: ● Истина(True), ● Ложь(False). Дата (Date) Описание: Значения данного типа содержат дату от Рождества Христова (с 01 января 0001 года) и время с точностью до секунды. Литералы: Строка цифр, заключенная в одинарные кавычки вида ‘ГГГГММДДччммсс’, где: ● ГГГГ– четыре цифры года (включая тысячелетие и век); ● ММ– две цифры месяца; ● ДД– две цифры даты; ● чч– две цифры часа (в 24-часовом формате); ● мм– две цифры минут; ● сс– две цифры секунд. Во встроенном языке в литерале типа Датаобязательно должно задаваться значение года, месяца и дня. Для задания даты, соответствующей началу отсчета, достаточно указать '00010101'. Допускается при указании литералов типа Датаопускать последние символы (секунды, минуты, часы и т. д.). Это означает, что данные параметры будут равны нулю (для времени) или единице (для даты). В литерале даты допускается использование различных разделителей. Пример: Дата('2008.03.23 10:45:23') = "23.03.2008 10:45:23" Число (Number) Описание: Числовым типом может быть представлено любое десятичное число. Определены основные арифметические операции над данными числового типа: сложение, вычитание, умножение и деление. ВНИМАНИЕ! Максимально допустимая разрядность числа – 32 знака. Литералы: Набор цифр, написанных непосредственно в тексте модуля вида: [+|-]{0|1|2|3|4|5|6|7|8|9}[.{0|1|2|3|4|5|6|7|8|9}] В качестве разделителя целой и дробной части используется точка. Пример: А = 15; Б = -968.612; Строка (String) Описание: Значения данного типа содержат строку произвольной длины в формате Unicode. Литералы: Литералы строкового типа представляют собой набор символов, заключенных в кавычки. Для задания в строке символа " (кавычка) необходимо записать две кавычки подряд (""). Кроме того, допускаются «многострочные» строковые константы. В исходном тексте многострочные константы могут задаваться двумя способами: ● Между фрагментами, представляющими отдельные строки многострочной строки, не должно встречаться никаких символов, за исключением пробелов, переводов строки и строк комментариев. ● Каждая отдельная составляющая не замыкается кавычками, а на каждой последующей строке помещен символ переноса строки «|» (вертикальная черта). В этом варианте комментарии допускаются, если строка начинается с символа комментария «//». Пример: // Пример строки МояСтрока = "Это правильная строка"; // Пример 1 многострочной строки МояМногострочнаяСтрока = "Это |правильная |многострочная |строка"; // Пример 2 многострочной строки МояМногострочнаяСтрока = "Это тоже" //Это комментарий "правильная" "многострочная" "строка"; // Пример 3 строки с кавычками НазваниеФирмы = "ООО ""Василек"""; Результат вывода на экран или печать строки НазваниеФирмы(пример 3) будет выглядеть следующим образом: ООО "Василек" Неопределено (Undefined) Описание: Значение данного типа применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Например, такое значение изначально имеют реквизиты с составным типом значения. Существует одно-единственное значение данного типа, задаваемое литералом. Литералы: Неопределено(Undefined) Тип (Type) Описание: Значения данного типа используются для идентификации типов значений. Это необходимо для определения и сравнения типов. Данный тип не имеет литералов и возвращается функциями встроенного языка ТипЗнчи Тип(см. ниже). 4.4. Оператор присваивания Оператор присваивания (=) Описание: Оператор присваивания (символ «=») означает присваивание значения <Источник>переменной, обозначенной как <Назначение>. Синтаксис: <Назначение> = <Источник>; Параметры: <Назначение> В качестве назначения может выступать переменная или свойство объекта встроенного языка, которое допускает запись. <Источник> Выражение, значение которого необходимо присвоить. Пример: А = В; Стр1 = "777"; ДатаДокумента = '20020717'; 4.5. Выражения языка Выражение – это математическая, логическая или строковая формула, состоящая из соответствующих операций, по которой вычисляется значение. Математическое и логическое выражение может стоять справа от знака равенства в операторах присваивания, быть параметром процедур или функций. Логическое выражение также может быть условием в управляющих конструкциях Если, Пока, Для. Выражения состоят из констант, переменных и функций, связанных символами логических и/или арифметических операций. 4.5.1. Арифметические операции В языке определены следующие виды арифметических операций. Название Выражение Сложение (Оп1 + Оп2) Вычитание (Оп1 – Оп2) Умножение (Оп1 * Оп2) Деление (Оп1 / Оп2) Остаток от деления (Оп1 % Оп2) Унарный минус (-Оп1) Арифметические операции имеют один или два операнда, в зависимости от типа которых операция имеет ту или иную семантику. Тот или иной семантический вариант операции определяется по первому операнду. В случае несовпадения типа второго операнда с требуемым значение преобразуется к требуемому типу в соответствии с правилами преобразования типов. Если тип первого операнда не соответствует ни одному из допустимых типов, то в зависимости от ситуации может производиться преобразование типов или возбуждаться состояние ошибки выполнения. Операция Описание действия Сложение определено для следующих типов операндов Число+ Число Дата+ Число(к дате прибавляется число секунд) Вычитание определено для следующих типов операндов Число– Число Дата– Число(от даты отнимается число секунд) Дата– Дата(результатом является разница между двумя датами, измеренная в секундах) Умножение Число* Число Деление Число/ Число Остаток от деления Число% Число 4.5.2. Операция конкатенации Операция конкатенации («+») используется для того, чтобы присоединить одну строку к другой. Длина результирующей строки равна сумме длин соединяемых строк. В случае несовпадения типа данных второго или последующих операндов со строковым типом их значение преобразуется к строковому типу в соответствии с правилами преобразования типов. ФИО = Фамилия + " " + Имя + " " + Отчество; 4.5.3. Логические операции Логическая операция сравнивает операнды и вырабатывает значение типа Булево: Истинаили Ложь. Существует два вида логических операций: операции сравнения и булевы операции. В операциях сравнения сравниваются два значения. Булевы операции выполняются над значениями типа Булево, реализуя булеву алгебру. Символы булевых операций могут комбинироваться, образуя составные операции. Операции сравнения: В языке определены следующие виды операций сравнения. Операция Выражение операции Больше Оп1 > Оп2 Больше или равно Оп1 >= Оп2 Равно Оп1 = Оп2 Не равно Оп1 <> Оп2 Меньше Оп1 < Оп2 Меньше или равно Оп1 <= Оп2 Операции сравнения определены для следующих типов операндов. Операция Выражение операции Больше Число> Число Строка> Строка Дата> Дата Больше или равно Число>= Число Строка>= Строка Дата>= Дата Меньше Число< Число Строка< Строка Дата< Дата Меньше или равно Число<= Число Строка<= Строка Дата<= Дата Равно Любой тип = Любой тип Не равно Любой тип <> Любой тип Булевы операции: В языке определены следующие виды булевых операций. И(AND) конъюнкция (булево И) ИЛИ(OR) дизъюнкция (булево ИЛИ) НЕ(NOT) логическое отрицание (булево отрицание НЕ) Логические выражения вычисляются слева направо. Для того чтобы избежать неоднозначности и управлять последовательностью операндов, следует применять круглые скобки. Уровни старшинства логических операций: Уровень 1 операнды, заключенные в скобки Уровень 2 НЕ Уровень 3 И Уровень 4 ИЛИ ПРИМЕЧАНИЕ. При вычислении логического выражения вычисляются только необходимые части выражения. Например, в выражении (Цена > 0) И ПроверкаСуммы(), если Цена <= 0, функция ПроверкаСуммы()не вызывается. 4.6. Операторы и синтаксические конструкции ? (вычислить выражение по условию) Описание: Позволяет вычислить одно из двух заданных выражений в зависимости от результата вычисления логического выражения. Синтаксис: ?(<Логическое выражение>, <Выражение 1>, <Выражение 2>) Параметры: <Логическое выражение> Логическое выражение, результат вычисления которого определяет одно из результирующих выражений, которые будут вычислены. Если результат его вычисления Истина, то будет вычисляться <Выражение 1>. Если результат Ложь, то <Выражение 2>. <Выражение 1> Результирующее выражение, которое будет вычисляться, если результат логического выражения Истина. <Выражение 2> Результирующее выражение, которое будет вычисляться, если результат логического выражения Ложь. Возвращаемое значение: Результат вычисления одного из результирующих выражений. Пример: Статус = ?(ПолучитьСкидку() > 10, "Особый клиент", "Обычный клиент"); Предупреждение(Статус); ВызватьИсключение (Raise) Описание: При использовании данной формы оператора вызывается новое исключение. Синтаксис: ВызватьИсключение <Выражение> Англоязычный синтаксис: Raise <Expression> Параметры: <Выражение> Результат вычисления выражения преобразуется к строке, и данная строка используется в качестве описания исключения. Пример: ВызватьИсключение "Документ не может быть проведен"; См. также: Описание оператора Попытка. Выполнить (Execute) Описание: Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения. ВНИМАНИЕ! Не рекомендуется реализовывать с помощью этого метода существенную часть функциональности прикладных решений. ПРИМЕЧАНИЕ. Исполняемый код не может содержать в себе отдельных процедур или функций, т. к. исполнение кода само по себе идет в рамках процедуры или функции, в которой использован этот оператор. А также не может содержать явного объявления переменных. Синтаксис: Выполнить(<Строка>) Англоязычный синтаксис: Execute(<Строка>) Параметры: <Строка> Строка, содержащая текст исполняемого кода. Пример: // Выводит в окно сообщений текущую дату Выполнить("Сообщить(ТекущаяДата())"); ДобавитьОбработчик (AddHandler) Описание: Добавляет обработчик события. При добавлении обработчика события производится проверка соответствия числа параметров события числу параметров метода, назначаемого в качестве обработчика. Синтаксис: ДобавитьОбработчик <Событие>, <ОбработчикСобытия>; Англоязычный синтаксис: AddHandler <Событие>, <ОбработчикСобытия>; Параметры: <Событие> Событие, которому добавляется обработчик. Событие задается в форме <Выражение>.<ИмяСобытия>, где: ● <Выражение>– произвольное выражение на встроенном языке. Его результатом должен быть объект, к событию которого добавляется обработчик. ● <ИмяСобытия>– идентификатор (имя) события. <ОбработчикСобытия> Процедура/функция-обработчик события. Обработчиком события может являться метод объекта встроенного языка. Тогда <ОбработчикСобытия>задается как <Выражение>.<ИмяОбработчика>, где: ● <Выражение>– произвольное выражение на встроенном языке. Его результатом должен быть объект, метод которого служит обработчиком события. ● <ИмяОбработчика>– имя метода обработчика события. Также в качестве обработчика события может быть задана процедура/функция, находящаяся в области видимости. В этом случае обработчик события задается как имя процедуры/функции. Имеется возможность оформлять подписку на одноименные (в COM-объектах) события, но с разным числом параметров. Для этого на встроенном языке необходимо создать несколько обработчиков (каждый с указанием уникального имени и с указанием нужного количества параметров), а механизм подписки сам выберет нужный обработчик для нужной подписки. Пример: Обработка = Обработки.КонтрольДокумента.Создать(); Накладная = Документы.Накладная.СоздатьДокумент(); ДобавитьОбработчик Накладная.ПриЗаписи, Обработка.ПриЗаписиДокумента; msword = Новый COMОбъект("Word.Application"); ДобавитьОбработчик msword.DocumentChange, ПриИзмененииДокумента; Процедура ПриИзмененииДокумента() Сообщить("Документ изменен"); КонецПроцедуры Пример с разными параметрами: // Обработчик без параметров Процедура ОбработкаСобытия() КонецПроцедуры // Обработчик с одним параметром Процедура ОбработкаСобытия2(Параметр) КонецПроцедуры // Объект может генерировать события как с параметром, // так и без параметров Объект = Новый COMОбъект("Test.Events"); ДобавитьОбработчик Объект.TestEvent, ОбработкаСобытия ДобавитьОбработчик Объект.TestEvent, ОбработкаСобытия2 Для (For) Описание: Оператор цикла Дляпредназначен для циклического повторения операторов, находящихся выполнения цикла значение <Выражение 1>присваивается переменной <Имя переменной>. при каждом проходе цикла. Величина приращения счетчика при каждом выполнении цикла <Имя переменной>меньше или равно значению <Выражение 2>. Условие выполнения цикла внутри конструкции Цикл– КонецЦикла. Перед началом Значение <Имя переменной>автоматически увеличивается равна 1. Цикл выполняется, пока значение переменной всегда проверяется вначале, перед выполнением цикла. Синтаксис: Для <Имя переменной> = <Выражение 1> По <Выражение 2> Цикл // Операторы [Прервать;] // Операторы [Продолжить;] // Операторы КонецЦикла; Англоязычный синтаксис: For <Имя переменной> = <Выражение 1> To <Выражение 2> Do // Операторы [Break;] // Операторы [Continue;] // Операторы EndDo; Параметры: <Имя переменной> Идентификатор переменной (счетчика цикла), значение которой автоматически увеличивается на 1 при каждом повторении цикла. Так называемый счетчик цикла. <Выражение 1> Числовое выражение, которое задает начальное значение, присваиваемое счетчику цикла при первом проходе цикла. По Синтаксическая связка для параметра <Выражение 2>. <Выражение 2> Максимальное значение счетчика цикла. Когда переменная <Имя переменной>становится больше чем <Выражение 2>, выполнение оператора цикла Дляпрекращается. Цикл Операторы, следующие за ключевым словом Цикл, выполняются, пока значение переменной <Имя переменной>меньше или равно значению <Выражение 2>. // Операторы Исполняемый оператор или последовательность таких операторов. Прервать Позволяет прервать выполнение цикла в любой точке. После выполнения этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла. Продолжить Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. КонецЦикла Ключевое слово, которое завершает структуру оператора цикла. Пример: // Перебор дней текущего месяца ПоследнийДеньМесяца = День(КонецМесяца(ТекущаяДата())); Для ТекДень = 1 по ПоследнийДеньМесяца Цикл Состояние("Обрабатывается день: "+ ТекДень); // Операторы обработки очередного дня месяца... КонецЦикла; Для каждого (For each) Описание: Оператор цикла Для каждогопредназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции, или может быть завершен досрочно при выполнении оператора Прервать. Синтаксис: Для каждого <Имя переменной 1> Из <Имя переменной 2> Цикл // Операторы [Прервать;] // Операторы [Продолжить;] // Операторы КонецЦикла Англоязычный синтаксис: For each <Имя переменной 1> In <Имя переменной 2> Do // Операторы [Break;] // Операторы [Continue;] // Операторы EndDo; Параметры: <Имя переменной 1> Переменная, которой при каждом повторении цикла присваивается значение очередного элемента коллекции. Из Синтаксическая связка для параметра <Имя переменной 2>. <Имя переменной 2> Переменная или выражение, предоставляющее коллекцию. Элементы этой коллекции будут присваиваться параметру <Имя переменной 1>. Цикл Операторы, следующие за ключевым словом Цикл, выполняются до тех пор, пока не будут перебраны все элементы коллекции. // Операторы Исполняемый оператор или последовательность таких операторов. Прервать Позволяет прервать выполнение цикла в любой точке. После выполнения этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла. Продолжить Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. КонецЦикла Ключевое слово, которое завершает структуру оператора цикла. Пример: // Перебор строк табличной части документа. Документ = Документы.РасходнаяНакладная.НайтиПоКоду(12345); // Проверим, найден нужный нам документ или нет Если Не Документ.Пустая() Тогда Для каждого СтрокаСостава из Документ.Состав Цикл Состояние("Строка: " + Документ.Состав.Индекс(СтрокаСостава)+1); // Операторы обработки очередной строки табличной части... КонецЦикла; КонецЕсли; Если (If) Описание: Оператор Еслиуправляет выполнением программы, основываясь на результаты одного или более логических выражений. Оператор может содержать любое количество групп операторов, возглавляемых конструкциями ИначеЕсли – Тогда. Синтаксис: Если <Логическое выражение> Тогда // Операторы [ИначеЕсли <Логическое выражение> Тогда] // Операторы [Иначе] // Операторы КонецЕсли; Англоязычный синтаксис: If <Логическое выражение> Then // Операторы [ElsIf <Логическое выражение> Then] // Операторы [Else] // Операторы EndIf; Параметры: <Логическое выражение> Логическое выражение. Тогда Операторы, следующие за Тогда, выполняются, если результатом логического выражения является значение Истина. // Операторы Исполняемый оператор или последовательность таких операторов. ИначеЕсли Логическое выражение, следующее за ключевым словом ИначеЕсли, вычисляется только тогда, когда условия в Еслии всех предшествующих ИначеЕслиоказались равны Ложь. Операторы, следующие за конструкцией ИначеЕсли– Тогда, выполняются, если результат логического выражения в данном ИначеЕслиравен Истина. Иначе Операторы, следующие за ключевым словом Иначе, выполняются, если результаты логических выражений в конструкции Еслии всех предшествующих конструкциях ИначеЕслиоказались равны Ложь. КонецЕсли Ключевое слово, которое завершает структуру оператора условного выполнения. Пример: Если ДеньНедели(ТекущаяДата()) = 6 Тогда Сообщить("Сегодня суббота."); ИначеЕсли ДеньНедели(ТекущаяДата()) = 7 Тогда Сообщить("Сегодня воскресенье."); Иначе Сообщить("Сегодня рабочий день."); КонецЕсли; Новый (New) Описание: Оператор позволяет создать значение указанного типа. Допустим только для тех типов, для которых разрешено создание новых значений. Для прикладных объектов необходимо использовать функциональную форму оператора Новый(вариант 2), так как при проверке модулей в конфигураторе не определены типы для прикладных объектов. Синтаксис (вариант 1): Новый <Имя типа>[(<Парам 1>,..., <Парам N>)] Параметры: Имя типа Указывается имя типа, значение которого создается. <Парам 1>,..., <Парам N> После имени типа в скобках могут указываться параметры, если они определены в конструкторах для данного типа. Допустимое количество параметров и их назначение указываются в описании конструкторов объекта. Пример: // Пример создания массива из трех элементов. Массив = Новый Массив(3); Синтаксис (вариант 2): Новый (<Тип>[, <Параметры конструктора>]) Параметры: Тип Имя типа или значение типа Тип. <Параметры конструктора> Массив параметров конструктора. Пример: ТипЗначения = Тип("КвалификаторыСтроки"); Параметры = Новый Массив(2); Параметры[0] = 20; Параметры[1] = ДопустимаяДлина.Переменная; КвалифСтр = Новый(ТипЗначения, Параметры); Перейти (Goto) Описание: Безусловная передача управления на другой оператор программы. Передает управление от одного оператора к другому. Область действия оператора ограничивается программным модулем, процедурой или функцией; он не может передать управление за пределы программного модуля, процедуры или функции. ПРИМЕЧАНИЕ 1. Метка в этом операторе не должна быть меткой перехода на оператор Процедураили Функция. ПРИМЕЧАНИЕ 2. Оператор безусловного перехода не может быть использован для передачи управления на операторы, находящиеся внутри конструкций: Пока– КонецЦикла, Для– КонецЦикла, Для каждого– КонецЦикла, Если– КонецЕсли, Попытка– Исключение– КонецПопыткиизвне этих конструкций. Синтаксис: Перейти <Метка>; Пример: Перейти ~Метка1;... ~ Метка1: Сообщить("Осуществлен переход по метке."); Перем (Var) Описание: Позволяет в явном виде объявить переменную. Синтаксис: Перем <Имя переменной 1> [Экспорт] [, <Имя переменной 2>,...]; Англоязычный синтаксис: Var <Имя переменной 1> [Export] [, <Имя переменной 2>,...]; Параметры: <Имя переменной 1>[, <Имя переменной 2>,...] Задается имя или имена объявляемых переменных. Экспорт Необязательное ключевое слово. Указывает, что данная переменная доступна при обращении к контексту этого модуля из других модулей. Данное ключевое слово необходимо указывать для каждой объявляемой переменной отдельно. Не имеет смысла при объявлении переменных отдельных процедур или функций. Пример: // Пример объявления одной переменной Перем А Экспорт; Перем Б; // Пример объявления нескольких переменных одним оператором Перем А, Б Экспорт; Неявное объявление переменных: В языке необязательно объявлять переменные в явном виде. Неявным определением переменной является первое ее появление в левой части оператора присваивания. Тип переменной определяется типом присвоенного ей значения. Не допускается использование в выражениях переменных, не объявленных ранее в явном или неявном виде. Область использования переменной: Область использования переменных зависит от места их определения в конфигурации. Существует три области, в которых можно объявить переменные: ● В разделе определения переменных программного модуля управляемого приложения. Это глобальные переменные. ● В разделе определения переменных модуля. Это переменные модуля. ● В процедуре или функции. Это локальные переменные. Глобальные переменные, объявленные с ключевым словом Экспорт, доступны для использования в исполняемых операторах, выражениях, в любой процедуре и функции любого клиентского программного модуля конфигурации. Переменные модуля доступны для использования в исполняемых операторах, выражениях, в любой процедуре и функции того программного модуля, в пределах которого они объявлены. Если они объявлены с ключевым словом Экспорт, то они доступны из других модулей через контекст модуля, в котором они объявлены. Локальные переменные доступны в пределах той процедуры или функции, в которой они объявлены. Если переменная определена как глобальная, то она видна из всех процедур и функций любого клиентского программного модуля конфигурации. Если же переменная определена внутри процедуры, то ее областью видимости является данная процедура или функция. Таким образом, если две переменные с одинаковыми именами используются в двух различных процедурах модуля и имя этой переменной не упоминается как глобальное, то это две различные переменные, локальные для процедур. Если же переменная определена как глобальная переменная, то любое использование имени этой переменной будет приводить к обращению к одной и той же переменной. Единственный способ создать для процедуры локальную переменную с именем, совпадающим с именем переменной, определенной как глобальная, – это объявить ее явно при помощи оператора Перем. Пока (While) Описание: Оператор цикла Покапредназначен для циклического повторения операторов, находящихся внутри конструкции Цикл– КонецЦикла. Цикл выполняется, пока логическое выражение равно Истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла. Синтаксис: Пока <Логическое выражение> Цикл // Операторы [Прервать;] // Операторы [Продолжить;] // Операторы КонецЦикла Англоязычный синтаксис: While <Логическое выражение> Do // Операторы [Break;] // Операторы [Continue;] // Операторы EndDo; Параметры: <Логическое выражение> Логическое выражение. Цикл Операторы, следующие за ключевым словом Цикл, выполняются, пока результат логического выражения равен Истина. // Операторы Исполняемый оператор или последовательность таких операторов. Прервать Позволяет прервать выполнение цикла в любой точке. После выполнения этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла. Продолжить Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. КонецЦикла Ключевое слово, которое завершает структуру оператора цикла. Пример: ВыборкаДок = Документы.РасходнаяНакладная.Выбрать(); // Цикл по всем документам Пока ВыборкаДок.Следующий() Цикл // Отобразим Документ в панели состояния Состояние("Обрабатывается документ №" + ВыборкаДок.Номер); // Операторы выполнения действий над документом КонецЦикла; Попытка (Try) Описание: Оператор Попыткауправляет выполнением программы, основываясь на возникающих при выполнении модуля ошибочных (исключительных) ситуациях, и определяет обработку этих ситуаций. В качестве ошибочных (исключительных) ситуаций воспринимаются ошибки времени выполнения модуля. Не предусмотрено определяемых пользователем исключений. Если при выполнении последовательности операторов попытки произошла ошибка времени выполнения, то выполнение оператора, вызвавшего ошибку, прерывается и управление передается на первый оператор последовательности операторов исключения. При этом управление будет передано даже в том случае, если ошибку вызвал оператор, находящийся в процедуре или функции, вызванной из операторов попытки. Если ошибка произошла в вызванной процедуре или функции, то ее выполнение будет прервано, а локальные переменные – уничтожены. Это справедливо для любой вложенности вызовов. После выполнения последовательности операторов исключения управление передается на следующий за ключевым словом КонецПопыткиоператор. Если же последовательность операторов попытки выполнилась без ошибок, то последовательность операторов исключения будет пропущена и управление также будет продолжено с оператора, следующего за ключевым словом КонецПопытки. Конструкции Попытка– Исключение– КонецПопыткимогут быть вложенными. При этом при возникновении исключительной ситуации управление передается на тот обработчик, в попытке которого произошла ошибка. Если же в последовательности операторов исключения этого обработчика выполняется оператор ВызватьИсключение, выполнение передается вышестоящему обработчику исключения и так далее. Если вышестоящего обработчика нет, исключительная ситуация обрабатывается системно с прекращением выполнения программного модуля. В выдаче диагностики помощь могут оказать встроенные функции ОписаниеОшибки()и ИнформацияОбОшибке()(см. описание функций встроенного языка). Синтаксис: Попытка // Операторы попытки Исключение // Операторы исключения [ВызватьИсключение;] // Операторы исключения КонецПопытки; Англоязычный синтаксис: Try // Операторы попытки Except // Операторы исключения [Raise;] // Операторы исключения EndTry; Параметры: // Операторы попытки Исполняемый оператор или последовательность таких операторов. Исключение Операторы, следующие за ключевым словом Исключение, выполняются, если при выполнении последовательности операторов произошла ошибка времени выполнения. // Операторы исключения Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию. ВызватьИсключение Оператор позволяет вызвать исключение в тех случаях, когда, несмотря на отработку исключительной ситуации, необходимо прервать выполнение модуля с ошибкой времени выполнения. Оператор допустим только внутри операторных скобок Исключение– КонецПопытки. Выполнение данного оператора прекращает выполнение последовательности операторов исключения, и производится поиск более «внешнего» обработчика исключения (при вложенных попытках). Если таковой есть, то управление передается на его первый оператор. Если нет, то исключительная ситуация обрабатывается системно, выдается сообщение о первоначально возникшей ошибке, а выполнение модуля прекращается. КонецПопытки Ключевое слово, которое завершает структуру оператора обработки исключительных ситуаций. Пример: Процедура СформироватьВExcel() Попытка // Пытаемся обратиться к программе MS Excel Табл = Новый ComObject("Excel.Application"); Исключение Предупреждение(ОписаниеОшибки()); Возврат; КонецПопытки; // Операторы формирования отчета... КонецПроцедуры Процедура (Procedure) Описание: Ключевое слово Процедураначинает секцию исходного текста, выполнение которого можно инициировать из любой точки программного модуля, просто указав ИмяПроцедуры()со списком параметров (если параметры не передаются, то круглые скобки, тем не менее, обязательны). Если в модуле приложения или общем программном модуле в теле описания процедуры использовано ключевое слово Экспорт, то это означает, что данная процедура является доступной из всех других программных модулей конфигурации. При выполнении оператора Возвратпроцедура заканчивается и возвращает управление в точку вызова. Если в тексте процедуры не встретился оператор Возврат, то после выполнения последнего исполняемого оператора происходит выполнение неявного оператора Возврат. Конец программной секции процедуры определяется по оператору КонецПроцедуры. Переменные, объявленные в теле процедуры в разделе Объявления локальных переменных, являются локальными переменными данной процедуры, поэтому доступны только в этой процедуре (за исключением случая передачи их как параметров при вызове других процедур, функций или методов). ПРИМЕЧАНИЕ. Ключевые слова Процедура, КонецПроцедурыявляются не операторами, а операторными скобками, поэтому не должны заканчиваться точкой с запятой (это может приводить к ошибкам выполнения модуля). Синтаксис: Процедура <ИмяПроцедуры>([[Знач] <Парам 1> [=<ДефЗнач>],...,[Знач] <Парам N> [=<ДефЗнач>]])[Экспорт] // Объявления локальных переменных; // Операторы; ... [Возврат;] // Операторы; ... КонецПроцедуры Англоязычный синтаксис: Procedure <ИмяПроцедуры>([[Val] <Парам 1> [=<ДефЗнач>],...,[Val] <Парам N>[=<ДефЗнач>]])[Export] // Объявления локальных переменных; // Операторы; ... [Return;] // Операторы; ... EndProcedure Параметры: <ИмяПроцедуры> Назначает имя процедуры. Знач Необязательное ключевое слово, которое указывает на то, что следующий за ним параметр передается по значению, т. е. изменение значения формального параметра при выполнении процедуры никак не повлияет на фактический параметр, переданный при вызове процедуры. Если это ключевое слово не указано, то параметр процедуры передается по ссылке, то есть изменение внутри процедуры значения формального параметра приведет к изменению значения соответствующего фактического параметра. <Парам 1>,..., <Парам N> Необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответствовать значениям передаваемых при вызове процедуры фактических параметров. В этом списке определяются имена каждого из параметров так, как они используются в тексте процедуры. Список формальных параметров может быть пуст. =<ДефЗнач> Необязательная установка значения параметра по умолчанию. Параметры с установленными значениями по умолчанию можно располагать в любом месте списка формальных параметров (подробнее см. раздел «Передача параметров процедур и функций»). Экспорт Необязательное ключевое слово, которое указывает на то, что данная процедура является доступной из других программных модулей. // Объявления локальных переменных Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры (см. оператор Перем). // Операторы Исполняемые операторы процедуры. Возврат Необязательное ключевое слово, которое завершает выполнение процедуры и осуществляет возврат в точку программы, из которой было обращение к процедуре. Использование данного оператора в процедуре необязательно. КонецПроцедуры Обязательное ключевое слово, обозначающее конец исходного текста процедуры, завершение выполнения процедуры. Возврат в точку, из которой было обращение к процедуре. Пример: Перем Глоб; // Описание процедуры Процедура МояПроцедура(Пар1, Пар2, Пар3) Экспорт Глоб = Глоб + Пар1 + Пар2 + Пар3; Возврат; КонецПроцедуры Глоб = 123; МояПроцедура(5, 6, 7); // Вызов процедуры УдалитьОбработчик (RemoveHandler) Описание: Удаляет обработчик события. При удалении обработчика события производится проверка соответствия числа параметров события числу параметров метода, назначенного в качестве обработчика. Синтаксис: УдалитьОбработчик <Событие>, <ОбработчикСобытия>; Англоязычный синтаксис: RemoveHandler <Событие>, <ОбработчикСобытия>; Параметры: <Событие> Событие, обработчик которого удаляется. Событие задается в форме <Выражение>.<ИмяСобытия>, где: ● <Выражение>– произвольное выражение на встроенном языке. Его результатом должен быть объект, обработчик события которого удаляется. ● <ИмяСобытия>– идентификатор (имя) события. <ОбработчикСобытия> Процедура/функция-обработчик события. Обработчиком события может являться метод объекта встроенного языка. Тогда <ОбработчикСобытия>задается как <Выражение>.<ИмяОбработчика>, где: ● <Выражение>– произвольное выражение на встроенном языке. Его результатом должен быть объект, метод которого служит обработчиком события. ● <ИмяОбработчика>– имя метода обработчика события. Также в качестве обработчика события может быть задана процедура/функция, находящаяся в области видимости. В этом случае обработчик события задается как имя процедуры/функции. Пример: УдалитьОбработчик Накладная.ПриЗаписи, Обработка.ПриЗаписиДокумента; Функция (Function) Описание: Ключевое слово Функцияначинает секцию исходного текста функции, выполнение которой можно инициировать из любой точки программного модуля, просто указав ИмяФункциисо списком параметров (если параметры не передаются, то круглые скобки, тем не менее, обязательны). Если в модуле приложения или общем программном модуле в теле описания функции использовано ключевое слово Экспорт, то это означает, что данная функция является доступной из всех других программных модулей конфигурации. Выполнение функции заканчивается оператором Возврат. Функции отличаются от процедур только тем, что возвращают ВозвращаемоеЗначение. Конец программной секции функции определяется по оператору КонецФункции. Вызов любой функции в тексте программного модуля можно записывать как вызов процедуры, т. е. в языке допускается не принимать от функции возвращаемое значение. Если ключевое слово Возвратв теле функции не указано или строка модуля, его содержащая, не выполнена, то функция возвращает значение типа Неопределено. Переменные, объявленные в теле функции в разделе Объявления локальных переменных, являются локальными переменными данной функции, поэтому доступны только в этой функции (за исключением случая передачи их как параметров при вызове других процедур, функций или методов). ПРИМЕЧАНИЕ. Ключевые слова Функция, КонецФункцииявляются не операторами, а операторными скобками, поэтому не должны заканчиваться точкой с запятой (это может приводить к ошибкам выполнения модуля). Синтаксис: Функция <ИмяФункции>([[Знач] <Парам 1>[=<ДефЗнач>],...,[Знач] <Парам N>[=<ДефЗнач>]])[Экспорт] // Объявления локальных переменных; // Операторы; ... Возврат <Возвращаемое значение>; // Операторы; ... КонецФункции Англоязычный синтаксис: Function <ИмяФункции>([[Val] <Парам 1>[=<ДефЗнач>],...,[Val] <Парам N>[=<ДефЗнач>]])[Export] // Объявления локальных переменных; // Операторы; ... Return <Возвращаемое значение>; // Операторы; ... EndFunction Параметры: <ИмяФункции> Назначает имя функции. Знач Необязательное ключевое слово, которое указывает на то, что следующий за ним параметр передается по значению, т. е. изменение значения формального параметра при выполнении функции никак не повлияет на фактический параметр, переданный при вызове функции. Если это ключевое слово не указано, то параметр функции передается по ссылке, то есть изменение внутри функции значения формального параметра приведет к изменению значения соответствующего фактического параметра. <Парам 1>,..., <Парам N> Необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответствовать значениям передаваемых при вызове функции фактических параметров. В этом списке определяются имена каждого из параметров так, как они используются в тексте функции. Список формальных параметров может быть пуст. =<ДефЗнач> Необязательная установка значения параметра по умолчанию. Параметры с установленными значениями по умолчанию можно располагать в любом месте списка формальных параметров (подробнее см. раздел «Передача параметров процедур и функций»). Экспорт Необязательное ключевое слово, которое указывает на то, что данная функция является доступной из других программных модулей. // Объявления локальных переменных Объявляются локальные переменные, на которые можно ссылаться только в рамках этой функции (см. оператор Перем). // Операторы Исполняемые операторы функции. Возврат <Возвращаемое значение> Ключевое слово, которое завершает выполнение функции и возвращает указанное значение в выражение, в котором используется функция. В качестве возвращаемого значения может выступать выражение или переменная, значение которого содержит результат обращения к функции. КонецФункции Ключевое слово, обозначающее конец исходного текста функции. Пример: Перем Глоб; // Описание функции Функция МояФункция(Пар1, Пар2, Пар3) Экспорт Глоб = Глоб + Пар1 + Пар2 + Пар3; Возврат Глоб; КонецФункции Глоб = 123; Рез = МояФункция(5, 6, 7); // Вызов функции 4.7. Основные приемы работы 4.7.1. Обращение к свойствам объектов Помимо основного обращения через точку, в языке системы «1С:Предприятие» предусмотрен механизм обращения к свойствам объектов по строке с именем свойства с помощью оператора [](квадратные скобки). Свойство объекта ([]) Описание: Такая конструкция позволяет обращаться к свойствам объектов так же, как это делается через точку с указанием имени свойства. Синтаксис: <Объект>[<Имя свойства>] Параметры: <Объект> Объект, к свойству которого идет обращение. <Имя свойства> Тип Строка. Имя свойства, к которому необходимо обратиться. Пример: Спр = Справочники.Номенклатура.НайтиПоКоду(ИскомыйКод); // Обращение к наименованию справочника по строке с именем свойства A = Спр["Наименование"]; // Обращение к наименованию справочника по имени свойства A = Спр.Наименование; // Оба эти обращения к свойству абсолютно равнозначны 4.7.2. Дополнение контекста объектов и форм В языке есть возможность при обращении к объектам и формам извне, из других программных модулей, обращаться к переменным, процедурам и функциям этих модулей, как к свойствам и методам самих объектов и форм. Можно обращаться к тем переменным, процедурам и функциям, которые объявлены с ключевым словом Экспорт. Для форм дополнительно возможно обращение к реквизитам формы. Пример: // Пример использования процедуры печати документов из журнала // документов. Допустим, у нас есть несколько различных документов, // причем у всех есть процедура Печать(). В модуле журнала // документов располагается кнопка "Печать", которая // вызывает процедуру печати текущего документа журнала. Процедура ПечатьНажатие(Элемент) // Получим текущий документ, на котором установлен курсор. ТекДок = ЭлементыФормы.ЖурналСписок.ТекущаяСтрока; // Получим основную форму текущего документа. ФрмТекДок = ТекДок.ПолучитьФорму(); // Вызовем процедуру печати, расположенную // в модуле формы документа. ФрмТекДок.Печать(); КонецПроцедуры 4.7.3. Передача параметров процедур и функций Передача параметров процедур и функций выполняется двумя способами. Один способ называется передачей по ссылке и представляет собой передачу не конкретного значения параметра, а адреса памяти (ссылки на переменную), где расположено это значение. Изменение переданного значения в вызываемой процедуре или функции приведет к изменению передаваемой переменной в вызывающем методе. Другой способ называется передачей по значению и представляет собой передачу копии значения параметра. В этом случае изменение переданного значения в вызываемой процедуре или функции не приведет к изменению значения передаваемой переменной в вызывающем методе. В то же время механизм передачи параметров процедур и функций зависит от того, какой вызов будет выполняться: ● вызов без передачи управления между клиентом и сервером (только на клиенте или только на сервере); ● вызов с передачей управления между клиентом и сервером. Подробнее рассмотрим каждый из способов вызова. 4.7.3.1. Вызов без передачи управления с клиента на сервер Если вызов происходит без передачи управления между клиентом и сервером (вызов происходит только на клиентской или только на серверной стороне), то по умолчанию параметры передаются по ссылке. При этом изменение формального параметра ведет к изменению соответствующего фактического параметра. С помощью модификатора Значперед именем формального параметра можно указать, что параметр передается по значению. В этом случае нельзя изменить значение фактического параметра путем присвоения формальному параметру какого-либо значения. &НаКлиенте Процедура МояПроцедура() А = 100; ПоСсылке(А); // Переменная А = 40, так как в теле процедуры значение // параметра Параметр1 изменено на 40. // Изменение переменной А произошло потому, что параметр передавался по ссылке А = 100; ПоЗначению(А); // Переменная А = 100, несмотря на то, что в в теле процедуры // значение параметра Параметр1 изменено на 40. // Изменение переменной А не произошло, так как параметр передавался по значению КонецПроцедуры &НаКлиенте Процедура ПоСсылке(Параметр1) Параметр1 = 40; КонецПроцедуры &НаКлиенте Процедура ПоЗначению(Знач Параметр1) Параметр1 = 40; КонецПроцедуры Однако необходимо помнить следующую особенность: если параметром передается агрегатный объект, то невозможно присвоить фактическому параметру другое значение, но возможно изменить сам переданный объект. Например, если в процедуру по значению передан массив, то можно очистить этот массив методом Очистить(), но нельзя изменить в вызывающей процедуре само значение параметра. &НаКлиенте Процедура МояПроцедура() Массив = Новый Массив; Массив.Добавить(12); Массив.Добавить(18); // В массиве есть два элемента ПоЗначению(Массив); // Массив пустой, но это по-прежнему массив, а не Число КонецПроцедуры // Параметр передается по значению &НаКлиенте Процедура ПоЗначению(Знач Параметр) // В массиве два значения Параметр.Очистить(); // В массиве нет значений! // Меняем формальный параметр Параметр = 14; // Изменено значение только формального параметра КонецПроцедуры Также следует учитывать особенности хранения переменных при организации вызовов: &НаКлиенте Процедура ТестоваяПроцедура() ЗначениеА = Новый Массив; ЗначениеА.Добавить(1); ЗначениеА.Добавить(2); ЗначениеБ = ЗначениеА; // обращение к любой переменной: ЗначениеА или ЗначениеБ вызывает // изменение одного и того же масива МояПроцедура(ЗначениеА, ЗначениеБ); // После завершения вызова процедуры обе переменные (ЗначениеА и ЗначениеБ) // ссылаются на один массив. // В массиве находятся следующие значения: // ЗначениеА[0] = ЗначениеБ[0] = "А" // ЗначениеА[1] = ЗначениеБ[1] = "Б" КонецПроцедуры &НаКлиенте Процедура МояПроцедура(Параметр1, Параметр2) // Несмотря на то, что параметров два, фактически работа происходит с одним массивом Параметр1[0] = 5; Параметр1[1] = 6; Параметр2[0] = "А"; Параметр2[1] = "Б"; КонецПроцедуры В данном примере следует обратить внимание на тот факт, что операция присваивания ЗначениеБ = ЗначениеА;(в процедуре ТестоваяПроцедура()) не приведет к созданию копии массива, который находится в переменной ЗначениеА. Обе переменные будут ссылаться на один и тот же массив! При этом в процедуру МояПроцедура()параметры передаются по ссылке, следовательно, при изменении двух разных формальных параметров происходит изменение одного физического массива. 4.7.3.2. Вызов с передачей управления с клиента на сервер Вызов процедур и функций с передачей управления между клиентом и сервером характерен тем, что в общем случае при таком вызове изменяется компьютер, на котором происходит работа вызываемого метода. Это происходит потому, что клиент работает на одном компьютере, а сервер – на другом. Следовательно, нельзя говорить о передаче параметров по ссылке, т. к. один компьютер не может получить прямого доступа к памяти другого компьютера. При работе в файл-серверном варианте клиент и сервер представляют собой один компьютер, но на логику взаимодействия это не влияет. Поэтому передача параметров в случае клиент-серверного взаимодействия происходит особым образом: ● При передаче управления с клиента на сервер (и обратно) всегда передаются копии параметров. При вызове серверной процедуры или функции с клиента происходит создание копии фактического параметра и передача этой копии на сторону сервера. При возврате управления с сервера на клиента также происходит создание копии формального параметра (с которым происходила работы в вызванной процедуре или функции) для передачи обратно на клиента. ● Если формальный параметр указан с модификатором Знач, то значение параметра будет передаваться только при вызове процедуры или функции и не будет передаваться обратно при возврате управления на клиента. ● Если для нескольких формальных параметров указывается одно и то же фактическое значение, то создается столько копий фактического значения, для скольких формальных параметров используется значение. ● Если в качестве формальных параметров указано значение одной и той же переменной, то после возврата управления с сервера значение этой переменной будет установлено в значение самого правого формального параметра (без модификатора Знач), который изменялся в вызываемой функции. &НаКлиенте Процедура ТестоваяПроцедура(Команда) ЗначениеА = Новый Массив; ЗначениеА.Добавить(1); ЗначениеА.Добавить(2); ЗначениеБ = ЗначениеА; // обращение к любой переменной: ЗначениеА или ЗначениеБ вызывает // изменение одного и того же масива // При вызове процедуры создается копия массива для каждого формального параметра СервернаяПроцедура(ЗначениеА, ЗначениеБ); // После завершения вызова процедуры: // 1. Переменные ЗначениеА и ЗначениеБ ссылаются на разные массивы // 2. В массивах находятся разные значения // ЗначениеА[0] = 5 // ЗначениеА[1] = 6 // ЗначениеБ[0] = "А" // ЗначениеБ[1] = "Б" КонецПроцедуры &НаСервере Процедура СервернаяПроцедура(Параметр1, Параметр2) // Так как передаются копии, для каждого формального параметра на сервере создан "свой" массив Параметр1[0] = 5; Параметр1[1] = 6; Параметр2[0] = "А"; Параметр2[1] = "Б"; // С сервера будут возвращаться копии переменных Параметр1 и Параметр2 КонецПроцедуры Следует всегда помнить о том, что при передаче параметров на сервер создается копия значения. Это позволит избежать труднодиагностируемых ошибок при работе системы. Рассмотрим пример: &НаКлиенте Процедура ТестоваяПроцедура(Команда) ЗначениеА = Новый Массив; ЗначениеА.Добавить(1); ЗначениеА.Добавить(2); ЗначениеБ = ЗначениеА; Структура = Новый Структура("Ключ1, Ключ2", ЗначениеА, ЗначениеА); СервернаяПроцедура(Структура); ЗначениеА[0] = 9; ЗначениеА[1] = 8; ЗначениеБ[0] = "C"; ЗначениеБ[1] = "D"; КонецПроцедуры &НаСервере Процедура СервернаяПроцедура(Параметр1) Параметр1.Ключ1[0] = "0"; Параметр1.Ключ1[1] = "1"; Параметр1.Ключ2[0] = "2"; Параметр1.Ключ2[1] = "3"; КонецПроцедуры После завершения вызова процедуры ТестоваяПроцедура()будет наблюдаться следующее состояние переменных: ● Массивы ЗначениеАи ЗначениеБидентичны и содержат значения «С» в первом элементе и значение «D» во втором элементе, т. к. переменная ЗначениеБуказывает на массив из переменной ЗначениеАи значения этих переменных не передавались на сервер. ● В переменной Структурабудут находиться два массива: ● Со значениями «0» и «1» для элементов массива, находящегося в элементе структуры с ключом Ключ1. ● Со значениями «2» и «3» для элементов массива, находящегося в элементе структуры с ключом Ключ2. ● Такое поведение будет обусловлено тем, что при вызове процедуры происходит создание копии не только самого параметра (переменная Структура), но и всех объектов, находящихся в этой структуре: два массива, которые изначально указывали на один массив со значениями элементов «0» и «1». 4.7.3.3. Общие особенности указания параметров Если параметру задано значение по умолчанию и он является последним в списке, то при вызове процедуры или функции его можно опускать в списке передаваемых фактических параметров и не ставить запятую перед опущенным параметром. Процедура МояПроцедура(Параметр1, Параметр2 = "по умолчанию")... КонецПроцедуры // При выполнении следующего вызова в процедуре "МояПроцедура", // значение параметра Параметр1 будет равно 1, // а значение параметра Параметр2 – "по умолчанию" МояПроцедура(1); Если параметру не задано значение по умолчанию, то при вызове процедуры или функции его можно опускать в списке передаваемых фактических параметров, но разделительную запятую нужно ставить. Если параметр при вызове процедуры опущен, то он принимает либо установленное по умолчанию значение (если оно есть), либо значение Неопределено. Процедура МояПроцедура(Параметр1, Параметр2, Параметр3 = "по умолчанию")... КонецПроцедуры // При выполнении следующего вызова в процедуре "МояПроцедура", // значение параметра Параметр1 будет равно 1, // значение параметра Параметр2 – Неопределено, // а значение параметра Параметр3 – "пример" МояПроцедура(1, , "пример"); Если при вызове метода, процедуры или функции параметры не передаются (пустой список параметров), то, тем не менее, круглые скобки обязательно требуется ставить. Не следует передавать с клиента на сервер (и обратно), а также выполнять сериализацию данных, содержащих циклические ссылки. В этом случае будет выдаваться ошибка и сеанс будет завершаться. При передаче с клиента на сервер и обратно строковых значений следует помнить, что эти значения не должны содержать символы, недопустимые с точки зрения спецификации XML версии 1.0 (http://www.w3.org/TR/xml/). СОВЕТ. На стороне сервера такую проверку можно выполнить с помощью функции НайтиНедопустимыеСимволыXML(). 4.7.4. Работа с коллекциями значений Ряд объектов в языке системы «1С:Предприятие» представляет собой коллекции значений. Большинство коллекций имеют набор схожих методов и свойств, таких как Количество(), Индекс(), Добавить(), Удалить()и т. д. В качестве свойств коллекции, как правило, выступают ее элементы. Для коллекций доступен обход элементов коллекции посредством конструкции Для каждого– Из– Цикл. Для большинства коллекций доступно обращение к элементам коллекции с помощью оператора [<Аргумент>](квадратные скобки). Как правило, в качестве аргумента передается индекс элемента коллекции. Индексирование элементов коллекции начинается с 0. Это означает, что индекс последнего элемента равен количеству элементов в коллекции минус 1. Если в процессе обхода коллекции происходит удаление или другие изменения состава элементов, то дальнейшее поведение системы не определено. Подробнее описание конкретных коллекций, их свойств, методов и приемов работы с ними см. в описаниях конкретных объектов. 4.7.5. Использование номеров и индексов В языке системы «1С:Предприятие» есть ряд объектов, отдельные части которых имеют нумерацию. К таким объектам, например, относится строка, символы которой имеют номер в строке, или табличный документ, строки и колонки которого имеют номер, и т. п. При обращении к частям объектов обычно используется понятие Номер. Номера начинаются с 1. При обращении к элементам коллекций используется понятие Индекс. Индексирование элементов коллекций начинается с 0. 4.7.6. Работа с системными перечислениями Во встроенном языке системы «1С:Предприятие» существует понятие системных перечислений. Они предназначены для определения некоторого ограниченного набора предопределенных значений. Доступ к системным перечислениям осуществляется как к свойствам глобального контекста его имени. Конкретные значения указываются через точку от имени системного перечисления. Системные перечисления используются, как правило, для задания значений параметров системных методов или свойств объектов, а также в качестве возвращаемых значений методов. 4.7.7. Работа с предопределенными значениями 4.7.7.1. С помощью менеджера объекта Получить предопределенное значение на стороне сервера «1С:Предприятия» можно с помощью менеджера соответствующего объекта. Строка, определяющая получаемый реквизит, имеет следующий вид: ТипПредопределенногоЗначения.ИмяОбъектаМетаданных.Значение Рассмотрим составляющие этой строки подробнее: ● ТипПредопределенногоЗначения– для получения предопределенных значений доступно указание следующих типов данных (написание во множественном числе): ● Справочники, ● ПланыВидовХарактеристик, ● ПланыСчетов, ● ПланыВидовРасчета, ● Перечисления. ● ИмяОбъектаМетаданных– указывается имя объекта метаданных так, как оно задано в конфигураторе. ● Значение– может быть одним из следующих: ● для перечислений указывается имя значения перечисления; ● для получения предопределенного значения указывается его имя, как оно задано в конфигураторе; ● ТочкиМаршрута.ИмяТочки– точка маршрута бизнес-процесса. В случае, если требуется получить точку маршрута бизнес-процесса, строка, описывающая получаемое значение, будет выглядеть следующим образом: БизнесПроцессы.ИмяОбъектаМетаданных.ТочкиМаршрута.ИмяТочкиМаршрута Пример: // Получение значения перечисления. Вид = Перечисления.ВидыТоваров.Товар; // Получение предопределенных данных справочника. Элемент = Справочники.Валюта.Рубль; // Точка маршрута бизнес-процесса Точка = БизнесПроцесс.Согласование.ТочкиМаршрута.Одобрение; 4.7.7.2. С помощью функции ПредопределенноеЗначение() В связи с тем, что на стороне клиента недоступны прикладные объекты, получение предопределенных реквизитов с помощью менеджеров объектов становится невозможным. Поэтому для их получения существует метод глобального контекста ПредопределенноеЗначение(). Параметром этого метода является строка, описывающая то, какое предопределенное значение требуется получить. Синтаксис описания предопределенного значения совпадает с синтаксисом оператора ЗНАЧЕНИЕязыка запросов (см. здесь). Строка, определяющая получаемый реквизит, имеет следующий вид: ТипПредопределенногоЗначения.ИмяОбъектаМетаданных.Значение Рассмотрим составляющие этой строки подробнее: ● ТипПредопределенногоЗначения– для получения предопределенных значений доступно указание следующих типов данных (написание в единственном числе): ● Справочник, ● ПланВидовХарактеристик, ● ПланСчетов, ● ПланВидовРасчета, ● Перечисление, ● БизнесПроцесс. ● ИмяОбъектаМетаданных– указывается имя объекта метаданных так, как оно задано в конфигураторе. ● Значение– может быть одним из следующих: ● для перечислений указывается имя значения перечисления; ● для получения предопределенного значения указывается его имя, как оно задано в конфигураторе; ● ТочкаМаршрута.ИмяТочки– точка маршрута бизнес-процесса; ● ПустаяСсылка– для получения пустой ссылки. В случае необходимости получить значение системного перечисления параметр метода будет выглядеть следующим образом: ИмяСистемногоПеречисления.ЗначениеСистемногоПеречисления. Например: ТипДиаграммы = ПредопределенноеЗначение("ТипДиаграммы.ВогнутаяПоверхность"); В случае, если требуется получить точку маршрута бизнес-процесса, строка, описывающая получаемое значение, будет выглядеть следующим образом: Пример: // Получение значения перечисления. Вид = ПредопределенноеЗначение("Перечисление.ВидыТоваров.Товар"); // Получение значения пустой ссылки. ПустаяСсылка = ПредопределенноеЗначение("Документ.РасходнаяНакл.ПустаяСсылка"); // Получение предопределенных данных справочника. Элемент = ПредопределенноеЗначение("Справочник.Валюта.Рубль"); // Точка маршрута бизнес-процесса Точка = ПредопределенноеЗначение("БизнесПроцесс.Согласование. ТочкаМаршрута.Одобрение"); 4.8. Особенности различных вариантов запуска системы Система «1С:Предприятие» может использоваться в файловом и клиент-серверном вариантах, во внешнем соединении, а также в виде Web-сервисов (см. здесь). Конфигуратор позволяет настроить использование процедур и функций общих модулей и модулей объектов для каждого варианта. 4.8.1. Исполнение процедур и функций Для указания разрешения применения процедур и функций различных модулей (про виды модулей см. здесь) используют инструкции препроцессору и директивы компиляции. 4.8.1.1. Различие инструкций препроцессора и директив компиляции Инструкции препроцессора и директивы компиляции предназначены для того, чтобы оставить в скомпилированном модуле только то, что действительно должно присутствовать в том или ином контексте. При этом инструкции препроцессора действуют на исходный текст модуля (т. е. удаляют из модуля текст, который не может там находится), а директивы компиляции действуют на структурные единицы программного кода (методы – процедуры или функции, а также объявления переменных). Фактически все программные модули, присутствующие в системе, можно разделить на две большие группы модулей: ● Модули, которые могут существовать (и выполняться) только в одном контексте, например, модуль управляемого приложения может выполняться только на стороне клиента (тонкого или веб-клиента). ● Модули, которые могут существовать (и выполняться) в нескольких контекстах. Такими модулями является модуль управляемой формы, модуль команды и общий модуль. Например, модуль управляемой формы может существовать в четырех экземплярах, при этом в процессе работы управление может передаваться между различными экземплярами модуля: ● клиентский контекстный модуль, ● серверный контекстный модуль, ● клиентский внеконтекстный модуль, ● серверный внеконтекстный модуль. При этом у модуля команды и общего модуля не может существовать контекстных экземпляров (в отличие от модуля формы). Поэтому некоторые модули могут компилироваться несколько раз, в зависимости от того, есть ли в этом модуле фрагменты кода, которые могут выполняться в том или ином контексте. Рассмотрим, какое влияние оказывают директивы компиляции и инструкции препроцессора на исходный программный текст модуля в процессе его преобразования в «исполняемый» код. Рассмотрим это на примере модуля управляемой формы. В момент создания формы формируется четыре экземпляра модуля формы и выполняется определение всех необходимых инструкций препроцессору для каждого экземпляра модуля. Затем происходит обработка каждого экземпляра модуля и исключение текста, обрамленного инструкциями препроцессора. Затем происходит компиляция получившегося программного кода в соответствии с контекстом и директивами компиляции. В результате получается исполняемый модуль. Предположим, в исходном тексте модуля формы встречается конструкция: &НаКлиенте Процедура РаботаСФайлами() #Если ВебКлиент Тогда // программный текст 1 // исполняется только на веб-клиенте #Иначе // программный текст 2 // исполняется на других типах клиента #КонецЕсли КонецПроцедуры Тогда будет выполнено следующее: ● Данная процедура будет компилироваться на любом клиенте (как следует из директивы компиляции). ● В то же время инструкции препроцессора будут определять, какой именно текст и на каком клиенте будет оставлен в модуле (и как следствие скомпилирован). В данном примере на веб-клиенте будет доступен только «программный текст 1», а на других клиентах – «программный текст 2». Однако если в модуле формы будет использован следующий код: #Если НаСервере Тогда &НаКлиенте Процедура Клиентская() КонецПроцедуры #КонецЕсли Тогда произойдет следующее: ● на сервере будет присутствовать исходный текст нашей процедуры, но он не будет скомпилирован, т. к. директива компиляции &НаКлиенте исключает возможность появления процедуры на стороне сервера; ● на клиенте не будет даже исходного текста нашей процедуры, т. к. его «вырежет» инструкция препроцессора, а значит, эта процедура не будет скомпилирована и не будет доступна для вызова. Исходя из описанного механизма и следует подходить к пониманию взаимодействия директив и инструкций, а также к их совместному применению. Также нужно отметить, что методы, отмеченные в программном модуле директивами &НаКлиентеНаСервереБезКонтекстаи &НаКлиентеНаСервере, попадут одновременно в разные экземпляры программных модулей. 4.8.1.2. Инструкции препроцессора Синтаксис инструкций препроцессору следующий: Инструкция препроцессору #Если <Логическое выражение> Тогда #ИначеЕсли <Логическое выражение> Тогда ... #Иначе #КонецЕсли Логическое выражение <Логическое выражение> = [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцесс Символ препроцессора <Символ препроцессора> = { Сервер | НаСервере | Клиент | НаКлиенте | ТонкийКлиент | ВебКлиент | ВнешнееСоединение | ТолстыйКлиентУправляемоеПр Булева операция <Булева операция> = {И | ИЛИ} Русское имя Английское имя #Если #If #Тогда #Then #Иначе #Else #ИначеЕсли #ElsIf #КонецЕсли #EndIf И AND ИЛИ OR НЕ NOT Сервер Server НаСервере AtServer Клиент Client НаКлиенте AtClient ТонкийКлиент ThinClient ВебКлиент WebClient ВнешнееСоединение ExternalConnection ТолстыйКлиентУправляемоеПриложение ThickClientManagedApplication ТолстыйКлиентОбычноеПриложение ThickClientOrdinaryApplication МобильноеПриложениеКлиент MobileAppClient МобильноеПриложениеСервер MobileAppServer Далее приведен перечень инструкций препроцессора и их краткое описание: ● Сервер, НаСервере– определяет сервер; ● Клиент, НаКлиенте– определяет любого клиента; ● ТонкийКлиент– определяет тонкого клиента; ● ВебКлиент– определяет веб-клиента; ● ВнешнееСоединение– определяет внешнее соединение; ● ТолстыйКлиентУправляемоеПриложение– определяет режим управляемого приложения толстого клиента; ● ТолстыйКлиентОбычноеПриложение– определяет обычный режим толстого клиента; ● МобильноеПриложениеКлиент– определяет клиентскую часть мобильного приложения; ● МобильноеПриложениеСервер– определяет серверную часть мобильного приложения. Далее приведена таблица, указывающая, какие инструкции препроцессора определены в каких режимах работы «1С:Предприятия»: Режим Сервер, Клиент, ТонкийКлиент ВебКлиент ТолстыйКлиентУправляемоеПриложение ТолстыйКлиентОбычноеПриложение НаСервере НаКлиенте В клиент-серверном варианте На стороне сервера + В толстом клиенте в обычном режиме + В толстом клиенте в управляемом режиме + В тонком клиенте + В вебклиенте + + + + + Во внешнем соединении В файл-серверном варианте В толстом клиенте в обычном режиме + + В толстом + клиенте в управляемом режиме + В тонком клиенте + На серверной + + + + стороне тонкого клиента В вебклиенте + + Во внешнем соединении В клиенте мобильного приложения На серверной стороне мобильного приложения + + Если используется неглобальный общий модуль, для которого установлено использование на клиенте (любом) и на сервере, то методы, заключенные в условие #Если Сервер Тогда #КонецЕсли, будут доступны только в том случае, если вызов этих методов выполняется со стороны сервера. Вызов таких методов со стороны клиента недоступен. Инструкции Сервери НаСервереполностью идентичны. Инструкции Клиенти НаКлиентеполностью идентичны. ПРИМЕЧАНИЕ. Перед передачей программного модуля на тонкий или веб-клиент сервер выполняет обработку инструкций препроцессора, находящихся в модуле. В ходе обработки текст на встроенном языке, который не исполняется на стороне вышеуказанных клиентов, заменяется на пробелы (т. е. фактически удаляется). При этом символы переноса строк и табуляции остаются на своих местах. 4.8.1.3. Директивы компиляции Синтаксис директивы компиляции следующий: Директива компиляции &<Директива> <Конструкция языка> Директива <Директива> = { НаКлиенте | НаСервере | НаСервереБезКонтекста | НаКлиентеНаСервереБезКонтекста | НаКлиентеНаСервере | Область | КонецОбласти } Конструкция языка <Конструкция языка> = { <Описание переменной> | <Описание процедуры> | <Описание функции> } Подробное описание конструкций языка см. здесь. Русское имя Английское имя НаКлиенте AtClient НаСервере AtServer НаСервереБезКонтекста AtServerNoContext НаКлиентеНаСервереБезКонтекста AtClientAtServerNoContext НаКлиентеНаСервере AtClientAtServer Область Region КонецОбласти EndRegion Далее приведен перечень директив компиляции и их краткое описание: ● НаКлиенте– означает, что метод выполняется на стороне клиента в контексте формы. Переменная существует все время жизни клиентской части формы. Из метода доступны клиентские переменные модуля формы. Допустимы вызовы любых методов. ● НаСервере– означает, что метод выполняется на стороне сервера в контексте формы. Переменная существует только во время вызова выполнения серверного вызова. Из метода доступны серверные переменные модуля формы. Допустимы вызовы: ● серверных; ● серверных внеконтекстных; ● клиент-серверных внеконтекстных методов; ● методов неглобальных серверных общих модулей. ● НаСервереБезКонтекста– означает, что метод исполняется на сервере вне контекста формы. Переменные не могут предваряться такой директивой компиляции. Из метода недоступны переменные модуля формы. Допустимы вызовы: ● серверных внеконтекстных; ● клиент-серверных внеконтекстных методов; ● методов не глобальных серверных общих модулей. ● НаКлиентеНаСервереБезКонтекста– означает, что метод исполняется как на клиенте, так и на сервере, вне контекста формы. Переменные не могут предваряться такой директивой компиляции. Из метода недоступны переменные модуля формы. Допустимы вызовы: ● серверных внеконтекстных; ● клиент-серверных внеконтекстных методов; ● методов неглобальных серверных общих модулей; ● методов неглобальных общих модулей с флажками Сервер и Клиент (управляемое приложение). ● НаКлиентеНаСервере– означает, что методы выполняются на клиенте и на сервере. Переменные не могут предваряться такой директивой компиляции. Допустимы вызовы: ● серверных внеконтекстных; ● клиент-серверных внеконтекстных методов; ● методов неглобальных серверных общих модулей; ● методов неглобальных общих модулей с флажками Сервер и Клиент (управляемое приложение). ● Область, КонецОбласти– не предназначены для указания места выполнения кода на встроенном языке. Служат для выделения фрагмента текста, который можно будет свернуть (аналогично процедурам, функциям и т. д.). Подробнее см. здесь. Ниже приведена таблица, показывающая, какие директивы компиляции доступны в каких модулях системы «1С:Предприятие»: Модуль формы Переменные модуля формы Модуль команды Общий модуль НаКлиенте + + + + НаСервере + + + + НаСервереБезКонтекста + НаКлиентеНаСервереБезКонтекста + НаКлиентеНаСервере + 4.8.2. Особенности использования объектов, их свойств и методов Каждый объект, метод или свойство встроенного языка (далее в этом разделе – объект) обладает определенной доступностью (см. синтакспомощник), которая определяет, где можно использовать объект, метод или свойство. Кроме того, в синтакс-помощнике указываются некоторые вспомогательные данные, которые могут помочь разработчику. Тонкий клиент – указывает, что объект доступен в тонком клиенте. Веб-клиент – указывает, что объект доступен в веб-клиенте. Сервер – указывает, что объект доступен на сервере «1С:Предприятия». Внешнее соединение – указывает, что объект доступен в режиме внешнего соединения. Толстый клиент – указывает, что объект доступен в толстом клиенте. Мобильное приложение (клиент) – указывает, что объект доступен в клиентской части мобильной платформы. Мобильное приложение (сервер) – указывает, что объект доступен на стороне сервера мобильной платформы. ВНИМАНИЕ! Если для объекта указано, что он недоступен для какого-либо из режимов запуска, то свойства и методы данного объекта также недоступны. Поэтому специального упоминания об этом при описании свойств и методов не приводится. ПРИМЕЧАНИЕ. Если объект недоступен на стороне какого-либо клиентского приложения, то в этом клиентском приложении также недоступен и тип этого объекта. Например, если в тонком клиенте недоступен объект СправочникОбъект.Контрагенты, то Тип("СправочникОбъект.Контрагенты") также недоступен в тонком клиенте. Сериализуется. Указывает возможность сохранения значения объектов (например, методами СохранитьЗначение()и ЗначениеВФайл()), сохранения параметров форм отчетов и обработок), а также помещения в ХранилищеЗначения. Данный объект может быть сериализован в/из XML. Указывает возможность поддержки чтения/записи значений данных системы «1С:Предприятие» в/из XML. Подробнее см. здесь. Возможен обмен с сервером. Указывает возможность обмена значениями данного типа между клиентом и сервером. ПРИМЕЧАНИЕ. Для управляемого режима запуска обмен между клиентом и сервером возможен для объектов, которые поддерживают XDTOсериализацию. Данный объект может быть сериализован в/из XDTO. Указывает на то, что данный тип имеет возможность отображения в модель данных XDTO. При этом указывается квалифицированное имя типа (типов) (указывается URI пространство имен и имя типа), в который отображается данный тип. Например, для типа ХранилищеЗначения: {http://v8.1c.ru/8/data/core}ValueStorage. Синтакс-помощник содержит информацию о кешировании результатов работы некоторых методов «1С:Предприятия». Например, для метода глобального контекста ПредопределенноеЗначение()будет указана следующая информация: Результат выполнения кешируется при первом обращении до изменения конфигурации или версии платформы. Глава 5. Объекты конфигурации В этой главе рассказывается о работе с конфигурацией в целом и о тех режимах и механизмах, которые используются для всех объектов конфигурации. Описание действий по созданию и настройке основных объектов конфигурации (константы, справочники, документы, последовательности, журналы, перечисления, отчеты, обработки, регистры), а также некоторых объектов, располагающихся в ветви конфигурации Общие (критерии отбора, стили), производится в документации на примере использования окна редактирования объекта (подробнее см. здесь). Аналогичные действия можно выполнять и в палитре свойств объектов. 5.1. Свойства конфигурации Конфигурация в целом имеет свои свойства, которые можно редактировать. Палитра свойств открывается для корневой ветки дерева конфигурации. Помимо основных свойств (см. здесь), присущих каждому объекту конфигурации, конфигурация имеет следующие рассмотренные ниже свойства. 5.1.1. Категория свойств «Основные» Основной режим запуска – выбирается режим запуска системы по умолчанию (Управляемое приложение или Обычное приложение). Для новой конфигурации устанавливается режим запуска Управляемое приложение. Также режим запуска можно изменять для пользователя системы (см. книгу «1С:Предприятие 8.3. Руководство администратора»). Данное свойство нельзя изменить, если свойство Режим совместимости установлено в значение Версия 8.1. Назначения использования – указывает назначение использования прикладного решения (Мобильное устройство или Персональный компьютер). Свойство доступно только в том случае, если свойство Основной режим запуска установлено в значение Управляемое приложение. В зависимости от выбранного назначения использования, изменяются возможности конфигуратора: ● Мобильное устройство – возможна разработка прикладного решения для работы на мобильном устройстве (подробнее см. здесь). При этом разработчику будет доступен ограниченный набор прикладных объектов (список ограничений см. здесь); ● Персональный компьютер – возможна разработка прикладного решения, не предназначенного для функционирования на мобильном устройстве и являющееся собой управляемое приложение; ● Установлены оба флажка (Мобильное устройство и Персональный компьютер) – возможна разработка прикладного решения, которое будет содержать объекты, доступные и на мобильном устройстве и в управляемом приложении на персональном компьютере. Следует иметь ввиду следующие особенности: ● Если среди назначений использования отсутствует Персональный компьютер, то: ● недоступна возможность изменения основного режима запуска; ● в палитре свойств (см. здесь) объектов конфигурации недоступны свойства, неиспользуемые на мобильной платформе; ● в качестве типов реквизитов могут выступать только типы объектов, доступные на мобильной платформе. ● Если среди назначений конфигурации присутствует Мобильное приложение, то: ● проверка модулей использует настройку для режима Мобильное приложение, этот режим, по умолчанию, предлагается для изменения при редактировании параметров; ● проверка конфигурации использует отдельно хранимую настройку выполняемых проверок; ● синтакс-помощник использует отдельно хранимую настройку наложенных отборов. Вариант встроенного языка – выбирается основной язык программирования (русский или английский). Выбор определяет, на каком языке будут формироваться языковые конструкции в модулях (например, при использовании синтакс-помощника) и выдаваться информация о примитивных типах данных. Вне зависимости от значения свойства можно использовать как русский, так и английский вариант языковых конструкций. При смене значения свойства вариант написания введенных языковых конструкций не изменяется. Основная роль – выбор основной роли конфигурации. Роль, указанная в этом свойстве, будет использоваться, если список пользователей конфигурации пуст и, таким образом, не проводится авторизация доступа при начале работы программы. В этом случае считается, что пользователь обладает административными правами вне зависимости от реального состояния права Администрирование в роли, указанной в качестве основной. Если не указана основная роль конфигурации и список пользователей пуст, то пользователь работает без ограничения прав доступа. Роли задаются в ветви дерева конфигурации Общие – Роли (см. здесь). Основной режим запуска должен соответствовать основной роли в части прав на запускаемые приложения. Так, если свойство Основной режим запуска установлено в значение Управляемое приложение, а для основной роли отключено право Тонкий клиент, то пользователь не сможет работать с прикладным решением с помощью тонкого клиента. Модуль управляемого приложения – по ссылке Открыть открывается окно редактирования модуля управляемого приложения (см. здесь). Модуль сеанса – по ссылке Открыть открывается окно редактирования модуля сеанса (см. здесь). Модуль внешнего соединения – по ссылке Открыть открывается окно редактирования модуля внешнего соединения (см. здесь). Использовать управляемые формы в обычном приложении – указывает необходимость использования управляемых форм в обычном режиме толстого клиента. При установке этого флажка изменяются правила выбора формы толстым клиентом (см. здесь), а также изменяются правила централизованной проверки конфигурации (см. здесь). ПРИМЕЧАНИЕ. Данное свойство доступно только в том случае, если режим редактирования конфигурации установлен в Управляемое приложение и обычное приложение. Использовать обычные формы в управляемом приложении – указывает необходимость использования обычных форм в управляемом режиме толстого клиента. При установке этого флажка изменяются правила выбора формы толстым клиентом (подробнее см. здесь), а также изменяются правила централизованной проверки конфигурации (подробнее см. здесь). ПРИМЕЧАНИЕ. Данное свойство доступно только в том случае, если режим редактирования конфигурации установлен в Управляемое приложение и обычное приложение. Дополнительные словари полнотекстового поиска – выбор общих макетов или констант, которые будут выступать в роли дополнительных словарей для полнотекстового поиска (см. здесь). Хранилище общих настроек – данное хранилище предназначено для хранения различных настроек прикладного решения. Платформа самостоятельно не записывает в данное хранилище никаких настроек. Хранилище, указанное в данном свойстве, должен использовать разработчик из встроенного языка, для того чтобы выполнять сохранение/восстановление прикладных настроек пользователя. Хранилище пользовательских настроек – в данное хранилище помещаются пользовательские настройки отчетов. Хранилище вариантов отчетов – в данное хранилище помещаются варианты отчетов. Хранилище настроек данных форм – в это хранилище сохраняются данные форм. Этим хранилищем можно пользоваться, например, для сохранения реквизитов обработок. При этом можно выбрать индивидуальное хранилище для каждого отчета и обработки. Хранилище пользовательских настроек динамических списков – в это хранилище сохраняются настройки динамических списков. Подробнее о хранилищах и работе с ними см. здесь. 5.1.2. Категория свойств «Представление» Командный интерфейс – по ссылке Открыть открывается редактор, который позволяет задавать видимость подсистем по умолчанию на начальной странице (в том числе в разрезе ролей). Рабочая область начальной страницы – по ссылке Открыть открывается форма настройки, которая позволяет указать, какие формы располагаются на начальной странице и по какому шаблону будет строиться рабочая область. Командный интерфейс основного раздела – по ссылке Открыть будет открыт диалог настройки командного интерфейса основного раздела. Картинка основного раздела – с помощью данного свойства можно изменить картинку основного раздела панели разделов. Интерфейс клиентского приложения – позволяет настроить расположение панелей по умолчанию для интерфейса Такси. Интерфейс будет принимать такой вид в том случае, когда в редакторе панелей (см. здесь) пользователь нажмет кнопку Стандартные. Основной язык – указывается основной язык конфигурации. Краткая информация – краткая информация о конфигурации. Подробная информация – подробная информация о конфигурации (допускается использование многострочного текста). Логотип – выбор логотипа. Выбор осуществляется в стандартном окне выбора картинки: Рис. 61. Выбор картинки ПРИМЕЧАНИЕ. Размер картинки для логотипа 64х64 точки или меньше. Тип картинки может быть любым из поддерживаемых системой «1С:Предприятие». Заставка – выбор заставки. Выбор осуществляется в стандартном окне выбора картинки. Картинка, используемая в качестве заставки, должна иметь размер 600x255 точек. Прозрачность не используется. Тип картинки может быть любым из поддерживаемых системой «1С:Предприятие». Авторские права – информация об авторе конфигурации. Адрес информации о поставщике – ссылка на информацию о поставщике конфигурации. Указывается в свойстве Авторские права. Может задаваться как с префиксом схемы (http://), так и без него. Адрес информации о конфигурации – ссылка на информацию о конфигурации. Может задаваться как с префиксом схемы (http://), так и без него. В окне О программе отображается следующая информация: Синоним конфигурации, свойство Адрес информации о конфигурации, свойство Авторские права, свойство Адрес информации о поставщике конфигурации. Основная форма констант – выбор основной формы для ввода и редактирования констант конфигурации. Эта форма выбирается из общих форм (см. здесь) в ветви конфигурации Общие – Общие формы. Подробнее про различные формы см. здесь. ПРИМЕЧАНИЕ. Данное свойство доступно только в том случае, если режим редактирования конфигурации установлен в Управляемое приложение и обычное приложение. Свойства Основная форма отчета, Основная форма настроек отчета и Основная форма варианта отчета позволяет указать общие формы, которые будут использоваться отчетами, у которых не указаны соответствующие формы. Например, можно создать общую форму отчета, содержащую некоторые возможности, которые должны присутствовать во всех отчетах прикладного решения, например, отправка сформированного отчета по электронной почте. Для решения такой задачи следует создать общую форму отчета, реализовать в этой форме необходимые команды и указать ее в свойстве конфигурации Основная форма отчета. После этого все отчеты, для которых не указана основная форма отчета, будут использовать созданную общую форму. Свойство Основная форма настроек динамического списка позволяет указать общую форму, с помощью которой будет выполняться редактирование настроек динамического списка в прикладном решении. Если данное свойство не заполнено – для редактирования настроек динамических списков будет использоваться автоматически генерируемая форма настроек. Свойство Основная форма поиска позволяет указать общую форму, которая будет использоваться вместо системной формы полнотекстового поиска, которая может быть вызвана в интерфейсе Такси из панели инструментов или с помощью сочетания клавиш. 5.1.3. Категория свойств «Разработка» В свойствах категории описываются данные о поставщике конфигурации и версии конфигурации (подробнее см. здесь). Адрес каталога обновлений – содержит адрес ресурса, который может использоваться для обновления прикладного решения. 5.1.4. Категория свойств «Справочная информация» Включать в содержание справки – если свойство установлено, то содержимое справочной информации включается в общее описание конфигурации. Справочная информация – по ссылке Открыть открывается окно редактирования описания конфигурации. 5.1.5. Категория свойств «Совместимость» Режим управления блокировкой данных – вариант управления блокировкой данных в транзакции (см. здесь). Режим автонумерации объектов – определяет, использовать повторно или нет автоматически полученные номера объектов, если они не записаны в базу данных. Значение данного свойства ОсвобождатьАвтоматическииспользуется для обеспечения режима работы нумерации, аналогичного версии «1С:Предприятие 8.0». Полученные автоматически номера и коды будут в дальнейшем использоваться, если объект, для которого они получены, не записан. Значение данного свойства НеОсвобождатьАвтоматическииспользуется для выбора режима работы, когда для объектов, требующих непрерывной нумерации, будет реализовано получение номеров при записи, а не при открытии формы. Режим использования модальности – указывает, можно в прикладном решении использовать методы, приводящие к открытию модальных окон или нельзя. Если свойство имеет значение Использовать – модальные окна можно использовать без ограничений. Если свойство имеет значение Не использовать – модальные окно нельзя использовать в данном прикладном решении. При попытке использования методов будет диагностироваться ошибка (в том числе и при синтаксическом контроле текста на встроенном языке). Вместо модальных окон следует использовать блокирующие окна (см. здесь). Если свойство имеет значение Использовать с предупреждением, то при использовании модальных окон ошибки диагностироваться не будут, но в окно сообщений будет выводиться сообщение о том, что использование модальных окон в данном режиме запрещено. При работе в таком режиме также следует заменить модальные окна блокирующие. Режим совместимости интерфейса – свойство управляет режимом интерфейса клиентского приложения: ● Версия 8.2 – клиентское приложение работает в интерфейсе версии 8.2. Переключение в интерфейс Такси невозможно. ● Версия 8.2. Разрешить Такси – по умолчанию используется интерфейс версии 8.2. Возможно переключение на интерфейс Такси с помощью диалога параметров, объект НастройкиКлиентскогоПриложенияили командной строки. ● Такси. Разрешить Версия 8.2 – по умолчанию используется интерфейс Такси. Возможно переключение на интерфейс версии 8.2 с помощью диалога параметров, объект НастройкиКлиентскогоПриложенияили командной строки. ● Такси – клиентское приложение работает в интерфейсе Такси. Переключение в режим интерфейса 8.2 невозможно. При использовании интерфейса версии 8.2 допустимо переключение между интерфейсом в отдельных окнах и интерфейсом в закладках. Если свойство Режим совместимости установлено в значение, большее значения Версия 8.3.2 (Не использовать, Версия 8.3.3 и выше), а свойство Режим совместимости интерфейса установлено в значение Версия 8.2 или Версия 8.2. Разрешить Такси, то для новых пользователей прикладного решения будет автоматически установлен интерфейс в закладках. Картинка БиблиотекаКартинок.Справкаотображается различными способами, если свойство Режим совместимости интерфейса установлено в значение Такси или Такси. Разрешить Версия 8.2 и в остальных случаях. Режим совместимости – свойство управляет поведением механизмов, которое в новой версии системы изменено по сравнению с предыдущими версиями. Данное свойство может принимать значения Версия 8.3.2, Версия 8.3.1, Версия 8.2.16, Версия 8.2.13, Версия 8.1 и Не использовать. Особенности работы системы в режиме совместимости с какой-либо версией см. здесь. Не поддерживается работа конфигурации с неизвестным режимом совместимости. Неизвестными режимами совместимости являются те, которые соответствуют функциональности, реализуемой в последующих версиях системы «1С:Предприятие». Например, если в версии 8.3.1 установить режим совместимости Не использовать, то он будет считаться неизвестным при открытии конфигурации в версии 8.2.16. При этом, если в версии 8.3.1 установить режим совместимости Версия 8.2.16, то при открытии конфигурации в версии 8.2.16 он будет отображаться как Не использовать. Если в конкретной версии не будет вводиться нового режима совместимости, то действие режима Не использовать будет аналогично предшествующей версии. При попытке запустить или загрузить конфигурацию с неизвестным режимом совместимости, будет выдаваться ошибка с указанием требуемой версии. Запрещена загрузка файлов 1cv8.dt, сформированных в версии 8.3.1 и выше, в «1С:Предприятии» младших версий (младше чем 8.3.1). Исключением является ситуация, когда в версии 8.3.1 свойство конфигурации Режим совместимости установлено в значение Версия 8.2.16. При конвертации конфигураций версии «1С:Предприятие 8.1» (и более ранних) свойство принимает значение Версия 8.1. В общем случае можно сказать, что при открытии конфигурацией более поздней версией «1С:Предприятия», свойство Режим совместимости будет устанавливаться в значение совместимости с предыдущей версией, если в новой версии введен такой режим. Если необходимо обеспечить работу прикладного решения сразу в нескольких версиях «1С:Предприятия» (в том числе и для которых есть режим совместимости), то в местах различного вызова кода рекомендуется вначале получать текущую версию платформы и затем сравнивать ее с режимом совместимости (если это необходимо). При этом не рекомендуется проверять режим совместимости на значение НеИспользовать. После того как информационная база была открыта с помощью версии 8.2.14, переход на версию 8.2.13 возможен только в том случае, если в конфигурации не использовались новые возможности версии 8.2.14. Для файлового варианта переход с версии 8.2.14 на версию 8.2.13 выполняется с помощью загрузки/выгрузки информационной базы. 5.2. Модуль управляемого приложения Модулем управляемого приложения называется модуль, который автоматически выполняется в момент загрузки конфигурации, при старте системы «1С:Предприятие» в следующих режимах: ● тонкого клиента, ● веб-клиента, ● толстого клиента в режиме управляемого приложения. Модуль управляемого приложения предназначен для отработки действий, связанных с сеансом работы пользователя (прежде всего обработки начала и окончания сеанса работы). Модуль управляемого приложения недоступен для процедур и функций, работающих на сервере. В нем рекомендуется реализовывать только обработчики соответствующих событий. Процедуры и функции модуля управляемого приложения, а также переменные, для которых в заголовках указано ключевое слово Экспорт, являются доступными: ● в клиентских неглобальных общих модулях, ● клиентских методах модулей форм, ● клиентских методах модулей команд. В контексте модуля управляемого приложения доступны экспортируемые процедуры и функции общих модулей. Модуль управляемого приложения, являясь частью конфигурации, сохраняется только в составе конфигурации. Использование пункта Файл – Сохранить приведет к выполнению процедуры сохранения сделанных изменений применительно ко всей конфигурации. 5.3. Модуль внешнего соединения В модуле внешнего соединения могут располагаться экспортируемые переменные, процедуры и функции, а также процедуры-обработчики событий ПриНачалеРаботыСистемы()и ПриЗавершенииРаботыСистемы(), используемые в режиме внешнего соединения (см. раздел «Средства интеграции и администрирования» справки по встроенному языку). 5.4. Модуль сеанса Модулем сеанса называется модуль, который автоматически выполняется при старте системы «1С:Предприятие», в момент загрузки конфигурации. Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Модуль сеанса всегда исполняется в привилегированном режиме в кластере серверов «1С:Предприятия». ВНИМАНИЕ! Модуль сеанса может содержать только определения процедур и функций. Модуль сеанса не содержит экспортируемых процедур и функций и может использовать процедуры из общих модулей конфигурации. Установка параметров сеанса выполняется в обработчике события УстановкаПараметровСеанса(). Исполнение модуля сеанса происходит после начала исполнения модуля приложения (модуля внешнего соединения), до вызова обработчика события ПередНачаломРаботыСистемы()(ПриНачалеРаботыСистемы()в случае модуля внешнего соединения). 5.5. Ветвь конфигурации «Общие» В этом разделе описываются такие объекты конфигурации, как Подсистемы, Общие модули, Параметры сеанса, Роли, Планы обмена, Критерии отбора, Подписки на события, Регламентные задания, Функциональные опции, Параметры функциональных опций, Хранилища настроек, Общие формы, Общие команды, Группы команд, Интерфейсы, Общие макеты, Общие картинки, пакеты XDTO, Web-сервисы, WS-ссылки, Стили, Языки. Эти объекты не описывают структуру данных и механизмы их обработки. Они предназначены для установки правил работы пользователей с данными, описания вспомогательных объектов, используемых для формирования различных форм, в механизме обмена данными, а также содержат общие модули и макеты печатных форм, доступные из любого модуля конфигурации. 5.5.1. Подсистемы Описание назначения подсистем см. здесь. ПРИМЕЧАНИЕ. Не рекомендуется задавать подсистеме имя Desktop. На структуру объектов ветви Подсистемы не накладывается никаких ограничений по числу и вложенности. Для просмотра объектов конфигурации, относящихся к определенному набору подсистем, в окне Конфигурация можно произвести настройку фильтра отбора объектов. Следует выбрать пункт Действия – По подсистемам окна Конфигурация и указать необходимый набор подсистем, а также установить дополнительные признаки отбора Включать объекты подчиненных подсистем и Включать объекты родительских подсистем. Рис. 62. Отбор по подсистемам В списке подсистем существует специальный пункт <Не входящие в подсистемы>, с помощью которого можно отобрать только те объекты, которые не принадлежат ни одной подсистеме. ПРИМЕЧАНИЕ. При установке отбора по подсистемам не показываются ключевые ветви дерева объектов конфигурации, в которых нет отобранных объектов. Принадлежность объектов конфигурации к определенной подсистеме определяет пользовательский интерфейс. Значение свойства объекта конфигурации Подсистемыдоступно в программе с помощью средств встроенного языка. Это предоставляет дополнительные возможности отбора данных. Команда контекстного меню Переместить подсистему позволяет изменить подчиненность подсистемы в иерархии подсистем. Для того чтобы «привязать» объекты метаданных к конкретной подсистеме (подсистемам), служит закладка Состав редактора подсистемы. Рис. 63. Состав подсистемы В верхней части окна перечислены все объекты конфигурации, которые могут быть отнесены к различным подсистемам. Отметка объекта галочкой (например, Организации на рис. 63) означает, что объект начинает входить в подсистему и появляется в нижней части окна. В нижней части окна перечислены все объекты, которые входят в редактируемую подсистему. Если свойство Включать в содержание справки установлено, то в содержание справки будет включена ветвь, отображающая справку по подсистеме и всем объектам, входящим в ее состав. Если свойство сброшено, то такая ветвь (описывающая подсистему и объекты, входящие в ее состав) в содержании справки будет отсутствовать, но справка по объектам, входящим в подсистему, будет доступна непосредственно в формах самих объектов. 5.5.2. Общие модули Объекты, расположенные в ветви дерева конфигурации Общие модули, предназначены для размещения в них текстов функций и процедур, которые могут вызываться из любого другого модуля конфигурации. ВНИМАНИЕ! Общий модуль может содержать только определения процедур и функций. Процедуры и функции общего модуля, для которых в заголовках указано ключевое слово Экспорт, являются одними из составных частей глобального контекста. Подробнее о написании процедур в общем модуле можно узнать в разделах «Формат исходных текстов программных модулей» и «Операторы» справки по встроенному языку. Для редактирования общего модуля необходимо в палитре свойств объекта типа Общие модули окна Конфигурация в свойстве Модуль щелкнуть мышью ссылку Открыть. Текст общего модуля будет выдан для редактирования в редакторе текстов системы «1С:Предприятие» в режиме редактирования текста программного модуля. Общий модуль, являясь частью конфигурации, сохраняется только в составе конфигурации. Свойство Глобальный определяет, являются ли экспортируемые методы общего модуля частью глобального контекста. Если свойство Глобальный установлено в значение Истина, то экспортируемые методы общего модуля доступны как методы глобального контекста. Если свойство Глобальный установлено в значение Ложь, то в глобальном контексте создается свойство с именем, соответствующим имени общего модуля в метаданных. Данное свойство доступно только для чтения. Значением данного свойства является объект ОбщийМодуль. Через данный объект доступны экспортируемые методы данного общего модуля. Таким образом, обращение к методам неглобальных общих модулей выглядит как XXXXX.YYYYY, где XXXXX– это имя свойства, соответствующее контексту общего модуля, а YYYYY– имя экспортируемого метода общего модуля. Пример: РаботаСТорговымОборудованием.ПодключитьСканерШтрихкодов(); 5.5.2.1. Различные контексты и общие модули С помощью свойств общих модулей и инструкций препроцессора можно организовать выполнение различных методов общих модулей в нужном контексте. Каждое свойство общего модуля отвечает за возможность компиляции (и исполнения) общего модуля в том или ином контексте. Доступны следующие свойства, отвечающие за контекст, в котором доступны методы общего модуля: ● Клиент (обычное приложение) – методы общего модуля будут доступны для толстого клиента в режиме обычного приложения; ● Клиент (управляемое приложение) – методы общего модуля будут доступны для тонкого клиента, вебклиента, а также для толстого клиента в режиме управляемого приложения; ● Сервер – методы общего модуля будут доступны на сервере; ● Внешнее соединение – методы общего модуля будут доступны во внешнем соединении. Если устанавливаются одновременно несколько свойств, то это означает, что методы общего модуля будут доступны в нескольких контекстах. Если у общего модуля установлено свойство Сервер и еще какое-либо свойство, то это означает, что общий модуль будет доступен одновременно на сервере и в выбранном клиенте. При этом необходимо понимать, что фактически это будет несколько вариантов скомпилированного кода (по числу выбранных клиентов и собственно для сервера). При этом если метод, расположенный в таком общем модуле, вызывается со стороны клиента, то будет использована клиентская копия общего модуля, а если с сервера – серверная. В этом случае с помощью директив препроцессора (подробнее см. здесь) можно «оградить» сервер от того кода, который на нем не может исполняться. Рассмотрим пример. В общем модуле (который может исполняться на тонком клиенте и на сервере) есть метод, который имеет несколько различное поведение на стороне тонкого клиента и на стороне сервера. Посмотрим, как это можно сделать: Процедура МетодОбщегоМодуля() Экспорт // Тут размещается различный важный код #Если ТонкийКлиент Тогда // Покажем предупреждение ПоказатьОповещениеПользователя("На клиенте"); #КонецЕсли КонецПроцедуры Тогда на стороне сервера код приобретет следующий вид: Процедура МетодОбщегоМодуля() Экспорт // Тут размещается различный важный код КонецПроцедуры А на стороне тонкого клиента код будет иметь следующий вид: Процедура МетодОбщегоМодуля() Экспорт // Тут размещается различный важный код // Покажем предупреждение ПоказатьОповещениеПользователя("На клиенте"); КонецПроцедуры Для передачи управления с клиента на сервер существует несколько способов: ● вызвать метод серверного общего модуля; ● в модуле формы или команды вызвать метод, который предваряется директивами компиляции &НаСервере, &НаСервереБезКонтекста(подробнее о модуле формы см. здесь). При этом из серверных процедур невозможно вызвать методы клиентских общих модулей (у которых не установлено свойство Сервер) и клиентские методы модуля формы или модуля команды. Управление вернется на клиента после того, как будет завершен самый внешний вызов серверного метода. Исключение составляют методы модуля формы и модуля команды, которые предваряются директивами компиляции &НаКлиентеНаСервере, &НаКлиентеНаСервереБезКонтекста(подробнее см. здесь). Также следует упомянуть следующие моменты: ● Если общий модуль доступен более чем для одного клиента, то при написании программного кода следует учитывать максимальные ограничения, которые могут накладываться клиентами, либо использовать инструкции препроцессора для «изоляции» кода, специфичного для того или иного клиента. ● Инструкции препроцессора также имеют смысл тогда, когда один общий модуль имеет несколько контекстов исполнения, например, внешнее соединение и тонкий клиент или (что встречается значительно чаще) какой-либо клиент и сервер. В этом случае инструкции препроцессора будут обрамлять интерактивный код, который невозможно использовать на сервере, но возможно на клиенте (см. пример выше). Подробнее об инструкциях препроцессора и директивах компиляции см. здесь и в разделе «Исполнение процедур и функций» справки по встроенному языку. Свойство Вызов сервера предназначено для управления возможностью вызова экспортируемых методов серверного общего модуля из клиентского кода. Если свойство установлено, то экспортируемые методы серверного общего модуля доступны для вызова со стороны клиента. Если свойство не установлено, то такие экспортируемые методы можно вызывать только из серверных методов (как методов серверных общих модулей, так и серверных методов модуля формы и модулей команд). СОВЕТ. Рекомендуется устанавливать в значение Ложьсвойство Вызов сервера в тех случаях, когда серверный общий модуль содержит методы, которые нежелательно вызывать с клиента (например, по причинам безопасности). ПРИМЕЧАНИЕ. Если одновременно установлены свойства Клиент (обычное приложение), Клиент (управляемое приложение), Внешнее соединение, то свойство Вызов сервера автоматически сбрасывается. Если устанавливается свойство Вызов сервера, то автоматически сбрасываются свойства Клиент (обычное приложение), Клиент (управляемое приложение) и Внешнее соединение, если эти свойства были установлены одновременно. Свойство Привилегированный предназначено для отключения контроля прав доступа при выполнении методов общего модуля. ПРИМЕЧАНИЕ. Если свойство Привилегированный установлено, то общему модулю автоматически устанавливается свойство Сервер и сбрасываются остальные свойства (Клиент (обычное приложение), Клиент (управляемое приложение) и Внешнее соединение). Привилегированный общий модуль может исполняться только на сервере. Подробнее о привилегированном режиме см. здесь. 5.5.2.2. Повторное использование возвращаемых значений Если общий модуль не является глобальным, то становится доступно свойство Повторное использование возвращаемых значений. Это свойство может принимать следующие значения: ● Не использовать – повторное использование возвращаемых значений для функций этого общего модуля не используется. ● На время вызова и На время сеанса – для общего модуля используется метод определения повторного использования данных. Суть этого метода заключается в том, что в ходе выполнения кода система запоминает параметры и результат работы функций после первого вызова функции. При повторном вызове функции с такими же параметрами, происходит возврат запомненного значения (из первого вызова) без выполнения самой функции. Если функция во время своего выполнения меняет значения параметров, то повторный вызов функции не будет это делать. Можно выделить следующие особенности сохранения результатов вызова: ● если функция выполняется на сервере и вызывается из серверного кода, то значения параметров и результат вызова запоминаются для текущего сеанса на стороне сервера; ● если функция выполняется на толстом или тонком клиенте, то значения параметров и результатов вызова запоминаются на стороне клиента; ● если функция выполняется на стороне сервера, а вызывается из клиентского кода, то значения параметров вызова запоминаются и на стороне клиента, и на стороне сервера (для текущего сеанса). Сохраненные значения удаляются: ● если свойство установлено в значение На время вызова: ● на стороне сервера – при возврате управления с сервера; ● на стороне клиента – при завершении работы процедуры или функции встроенного языка верхнего уровня (вызванной системой из интерфейса, а не из другой процедуры или функции встроенного языка); ● если свойство общего модуля установлено в значение На время сеанса: ● на стороне сервера – при окончании сеанса; ● на стороне клиента – при закрытии клиентского приложения. Сохраненные значения будут удалены: ● на сервере, в толстом клиенте, во внешнем соединении, в тонком клиенте и в веб-клиенте с обычной скоростью соединения – через 20 минут после вычисления сохраняемого значения или через 6 минут после последнего использования; ● в тонком клиенте и веб-клиенте с низкой скоростью соединения – через 20 минут после вычисления сохраняемого значения; ● при нехватке оперативной памяти в рабочем процессе сервера; ● при перезапуске рабочего процесса; ● при переключении клиента на другой рабочий процесс. После удаления значений вызов экспортируемой функции выполняется как при первом вызове. На выполнение процедур данное свойство общих модулей не влияет – процедуры выполняются всегда. Если у общего модуля установлено повторное использование возвращаемых значений, то на типы параметров экспортируемых функции накладывается ряд ограничений. Типы параметров могут быть только: ● Примитивными типами (Неопределено, NULL, Булево, Число, Строка, Дата). ● Любыми ссылками на объекты базы данных. ● Структурами со значениями свойств вышеперечисленных типов. В этом случае идентичность параметров контролируется «по содержимому» структур. Если у общего модуля свойство Повторное использование возвращаемых значений установлено в значение На время сеанса, то в значениях, возвращаемых функциями такого модуля, нельзя использовать значения типа МенеджерВременныхТаблиц. Если функция общего модуля, с установленным повторным использованием, вызываются из этого же самого общего модуля (например, с именем ОбщийМодуль), то следует помнить о следующей особенности: если функция вызывается по имени МояФункция(), то исполнение функции будет происходить при каждом вызове функции. Для того чтобы использовались сохраненные значения, функция следует вызывать по полному имени: ОбщийМодуль.МояФункция(). Метод глобального контекста ОбновитьПовторноИспользуемыеЗначения()удаляет все повторно используемые значения, как на стороне сервера, так и на стороне клиента, независимо от места вызова метода. После выполнения метода ОбновитьПовторноИспользуемыеЗначения()первый вызов функции будет выполнен полностью. 5.5.3. Параметры сеанса Параметры сеанса предназначены в основном для использования значений параметров в запросах и условиях ограничения доступа к данным для текущего сеанса. Использование параметров сеанса снижает время доступа к данным за счет исключения связанных таблиц. Настройка параметров сеанса производится в палитре свойств. Для каждого параметра сеанса определены два права доступа – Получениеи Установка(подробнее о правах см. раздел ниже). Если право Установкаснято, то инициализация данного параметра сеанса возможна только в общем модуле с установленным свойством Привилегированный или в модуле сеанса. Инициализация параметров сеанса может выполняться в модуле сеанса, в обработчике события УстановкаПараметровСеанса()(см. здесь). До инициализации параметр сеанса находится в состоянии Не установлено. При попытке чтения такого параметра сначала вызывается обработчик события УстановкаПараметровСеанса(). Если после вызова состояние параметра остается Не установлено, то вызывается исключение. Следует разделять области применения параметров сеанса и глобальных переменных модуля управляемого приложения (модуля внешнего соединения). Среди основных отличий параметров сеанса: ● Параметры сеанса являются объектами метаданных, что позволяет «1С:Предприятию» осуществлять повышенный контроль за их использованием. ● Параметры сеанса имеют тип. Набор типов параметров сеанса ограничен. Их важной общей чертой является невозможность изменения внутреннего состояния для объектов этих типов. ● Для установки или получения значения параметра сеанса текущий пользователь должен быть наделен соответствующим правом. ● В клиент-серверном варианте «1С:Предприятия» значения параметров сеанса хранятся на сервере и доступны как с сервера, так и с клиента. ● Параметры сеанса доступны как из встроенного языка «1С:Предприятия», например: ПараметрыСеанса.ТекущийПользователь = ИмяПользователя() Так и из ограничений доступа к данным, например: Документ.Отчет.Пользователь = &ТекущийПользователь В последнем случае для получения значения параметра сеанса у текущего пользователя наличия соответствующего права не требуется. ПРИМЕЧАНИЕ. Если параметру сеанса установлен один из следующих типов: ФиксированныйМассив, ФиксированнаяКоллекцияили ФиксированнаяСтруктура, то в качестве значения элемента коллекции может выступать значение Неопределено. 5.5.4. Роли и права доступа 5.5.4.1. Общая информация Каждый пользователь системы должен иметь свободный доступ к общей информации, такой как общие справочники, константы или перечисления. С другой стороны, необходимо, чтобы каждый пользователь имел дело только с той информацией, которая необходима ему для работы, и никак не мог своими неосторожными действиями повлиять на работу других пользователей или на работоспособность системы в целом. Конфигуратор системы «1С:Предприятие» предоставляет разработчикам развитые средства администрирования, предназначенные для решения указанных задач. Прежде всего, в процессе создания конфигурации создается необходимое число типовых ролей, описывающих полномочия различных категорий пользователей на доступ к информации, обрабатываемой системой. Роли могут быть заданы в достаточно широких пределах – от возможности только просмотра ограниченного числа видов документов до полного набора прав по вводу, просмотру, корректировке и удалению любых видов данных. В системе «1С:Предприятие» различают два типа прав – основные и интерактивные. Основные проверяются всегда, независимо от способа обращения к объектам информационной базы. Интерактивные проверяются при выполнении интерактивных операций (просмотр и редактирование в форме и т. д.). Доступные права доступа см. здесь (или в описании метода глобального контекста ПравоДоступа()в синтакс-помощнике). Если для объекта, данные которого представляются в форме, установлено (разрешено) право Просмотр, но не установлено право Редактирование, то в форме данный реквизит будет показан (элемент управления, связанный с данным объектом, отображает значение реквизита), но редактирование значения будет недоступно. Если снять право Просмотр, то при попытке открытия формы будет выдано предупреждение: Нарушение прав доступа!, и форма не будет открыта. В списке прав при редактировании роли следует обратить внимание на внутреннюю иерархию прав. Иерархия проявляется в виде «старшинства» прав. При снятии «старшего» права снимаются другие права («младшие»), связанные со «старшим» правом; и наоборот, при установке «младшего» права устанавливаются снятые «старшие» права. Так, при снятии права Просмотрснимается право Редактирование. Что вполне логично, так как нет смысла предоставлять право редактирования при невозможности показа элемента управления, связанного с данными. В общем случае права можно задавать: ● на всю конфигурацию в целом, ● объекты, ● реквизиты объектов, ● табличные части, ● реквизиты табличных частей, ● стандартные реквизиты. При создании новой роли устанавливаются следующие права доступа на корневой объект конфигурации: ТонкийКлиент, ВебКлиент, СохранениеДанныхПользователя, Вывод. 5.5.4.2. Привилегированный режим работы На сервере «1С:Предприятия» фрагменты кода могут исполняться как в обычном, так и в привилегированном режиме. В привилегированном режиме не выполняется проверка доступа на уровне записей, не производится контроль прав и разрешены любые операции, что ускоряет выполнение модулей. Для управления привилегированным режимом предназначен метод глобального контекста УстановитьПривилегированныйРежим(), который позволяет включать или выключать привилегированный режим. ВНИМАНИЕ! В клиент-серверном варианте вызов метода не оказывает влияния при работе на стороне клиента. По умолчанию привилегированный режим выключен. Количество включений привилегированного режима должно совпадать с количеством выключений. Однако если внутри процедуры или функции происходило включение привилегированного режима (один раз или более), но не происходило его выключение, то система автоматически выполнит выключение столько раз, сколько незавершенных включений было в покидаемой процедуре или функции Если в процедуре или функции вызовов метода УстановитьПривилегированныйРежим(Ложь)сделано больше, чем вызовов метода УстановитьПривилегированныйРежим(Истина), то будет вызвано исключение. Функция ПривилегированныйРежим()возвращает Истина, если привилегированный режим еще включен, и Ложь, если он полностью выключен. При этом не анализируется количество установок привилегированного режима в конкретной функции. Программная установка привилегированного режима может потребоваться в случае массированных операций с данными информационной базы, и при этом нет смысла проверять права доступа к данным. Например, существует пользователь, которому доверили выполнять пересчет цен товаров. Тогда в обработке, например, которая это выполняет, можно проверить право текущего пользователя выполнять данную обработку, а затем включить привилегированный режим и выполнить все необходимые операции с базой данных. При этом у пользователя может не быть прав на чтение цен. Но так как данная обработка не выдает пользователю самих цен, а только их пересчитывает, то поставленные задачи ограничения доступа будут также решены. Также существует возможность стартовать привилегированный сеанс. Это сеанс, в котором привилегированный режим установлен с самого начала работы системы. При этом во время работы метод ПривилегированныйРежим()будет всегда возвращать Истина, а возможность отключить привилегированный режим не поддерживается. Стартовать привилегированный сеанс может только пользователь, которому доступны административные права (право Администрирование). Запуск сеанса можно выполнить с помощью ключа командной строки запуска клиентского приложения UsePrivilegedModeили параметра строки соединения с информационной базой prmod. 5.5.4.3. Безопасный режим работы В случае необходимости использования на сервере «ненадежного» программного кода: внешние обработки или программный код, вводимый пользователем для использования в методах Выполнить()и Вычислить(), можно воспользоваться безопасным режимом работы. В безопасном режиме: ● Привилегированный режим отменяется. ● Переход в привилегированный режим игнорируется. ● Запрещены операции, приводящие к использованию внешних средств по отношению к платформе «1С:Предприятие»: ● Механизмы COM: ● COMОбъект(), ● ПолучитьCOMОбъект(), ● ОболочкаHTMLДокумента.ПолучитьCOMОбъект(). ● Загрузка внешних компонентов: ● ЗагрузитьВнешнююКомпоненту(), ● ПодключитьВнешнююКомпоненту(). ● Доступ к файловой системе: ● ЗначениеВФайл(), ● КопироватьФайл(), ● ОбъединитьФайлы(), ● ПереместитьФайл(), ● РазделитьФайл(), ● СоздатьКаталог(), ● УдалитьФайлы(), ● Новый Файл, ● Новый xBase, ● ЗаписьHTML.ОткрытьФайл(), ● ЧтениеHTML.ОткрытьФайл(), ● ЧтениеXML.ОткрытьФайл(), ● ЗаписьXML.ОткрытьФайл(), ● ЧтениеFastInfoset.ОткрытьФайл(), ● ЗаписьFastInfoset.ОткрытьФайл(), ● КаноническаяЗаписьXML.ОткрытьФайл(), ● ПреобразованиеXSL.ЗагрузитьИзФайла(), ● ЗаписьZipФайла.Открыть(), ● ЧтениеZipФайла.Открыть(), ● Новый ЧтениеТекста(), ● Новый ЗаписьТекста(), ● Новый Картинка(), если первый параметр – строка; ● Картинка.Записать(); ● Новый ДвоичныеДанные(); ● ДвоичныеДанные.Записать(); ● ФорматированныйДокумент.Записать(); ● ГеографическаяСхема.Прочитать(); ● ГеографическаяСхема.Записать(); ● ГеографическаяСхема.Напечатать(); ● ТабличныйДокумент.Прочитать(); ● ТабличныйДокумент.Записать(); ● ТабличныйДокумент.Напечатать(); ● ГрафическаяСхема.Прочитать(); ● ГрафическаяСхема.Записать(); ● ГрафическаяСхема.Напечатать(); ● ТекстовыйДокумент.Прочитать(); ● ТекстовыйДокумент.Записать(). ● Доступ к Интернету: ● Новый ИнтернетСоединение, ● Новый ИнтернетПочта, ● Новый ИнтернетПрокси, ● Новый HTTPСоединение, ● Новый FTPСоединение. ВНИМАНИЕ! При выполнении запрещенных операций во время выполнения генерирует исключение. ПРИМЕЧАНИЕ. Внешние отчеты и обработки, открываемые с помощью меню Файл – Открыть, выполняются в безопасном режиме, если у пользователя отсутствуют административные права доступа. Количество включений безопасного режима должно совпадать с количеством выключений. Однако если внутри процедуры или функции происходило включение безопасного режима (один раз или более), но не происходило его выключение, то система автоматически выполнит выключение столько раз, сколько незавершенных включений было в покидаемой процедуре или функции. Если в процедуре или функции вызовов метода УстановитьБезопасныйРежим(Ложь)сделано больше, чем вызовов метода УстановитьБезопасныйРежим(Истина), то будет вызвано исключение. Программная установка безопасного режима может потребоваться в том случае, когда разработчик конфигурации предполагает использование стороннего (по отношению к конфигурации) программного кода, надежность которого разработчик гарантировать не может. Примером такого кода является выполнение методов Выполнить()и Вычислить()в тех случаях, когда исполняемый код получается из внешнего мира. В этом случае хорошей практикой будет установка безопасного режима до выполнения этих методов: // Формируется программный код, который следует исполнить // Возможно, что код загружается из внешних источников // или введен вручную ИсполняемыйКод = ПолучитьВыполняемыйКодИзВнешнегоМира(); // Включим безопасный режим УстановитьБезопасныйРежим(Истина); // Выполним потенциально опасный код Выполнить(ИсполняемыйКод); // Выключим безопасный режим УстановитьБезопасныйРежим(Ложь); 5.5.4.4. Режимы удаления данных Система «1С:Предприятие» предоставляет пользователям возможность удаления лишней или устаревшей информации в двух режимах: ● непосредственное удаление объектов, при котором не производится анализ использования удаляемого объекта в других объектах базы данных; ● использование контроля ссылочной целостности, при котором объекты сначала помечаются на удаление, а затем производится контроль наличия ссылок на эти объекты в других объектах. Если пользователю разрешен режим непосредственного удаления, то в этом случае дополнительная ответственность ложится и на пользователя, выполняющего удаление объектов, и на разработчика (администратора системы), определяющего права пользователей и действия системы при неразрешенных ссылках. Работа системы без контроля ссылочной целостности может, например, быть использована специалистами в процессе отладки конфигурации. Если контроль ссылочной целостности не используется, то удаление объектов происходит непосредственно (без пометки на удаление) и появляется возможность образования неразрешенных ссылок. Самым радикальным способом установки режима контроля ссылочной целостности является отключение прав непосредственного удаления объектов в целом. Таким способом полностью исключается возможность в пределах данной конфигурации непосредственно удалять объекты. Пользователи будут иметь возможность только помечать объекты на удаление. Заметим, что также существует возможность непосредственного удаления объектов средствами встроенного языка. Поэтому элементы конкретной конфигурации могут выполнять непосредственное удаление в обход механизма контроля ссылочной целостности. В этом случае ответственность за целостность данных лежит на специалисте, выполняющем конфигурирование системы. 5.5.4.5. Правила сочетания ролей Роли обычно указываются для каждого вида деятельности. При включении в список пользователей нового пользователя (см. книгу «1С:Предприятие 8.3. Руководство администратора») ему может быть назначена определенная роль или совокупность ролей. В случае использования нескольких ролей алгоритм предоставления доступа по каждому объекту и виду права доступа (например, Пометка на удаление) будет работать следующим образом: ● если хотя бы в одной роли есть разрешение, то доступ будет открыт; ● если во всех ролях есть запрещение, то доступ будет закрыт. 5.5.4.6. Редактор прав доступа В левой части окна редактирования прав выводится дерево объектов конфигурации по всем подсистемам. В правой – список прав по выбранному объекту конфигурации в дереве конфигурации. Если для действия установлен флажок, то оно разрешено. Так, например, для пользователя с ролью МенеджерПоПродажамразрешен просмотр документа ПриходТовараи запрещено его интерактивное добавление. Рис. 64. Редактор прав доступа роли Состояние флажка Устанавливать права для новых объектов определяет, будут ли установлены права для этой роли на новые добавляемые объекты конфигурации (снят по умолчанию для новой роли). Состояние флажка Устанавливать права для реквизитов и табличных частей по умолчанию определяет, будут ли установлены права для этой роли на реквизиты (включая стандартные) и табличные части (включая стандартные) для новых объектов конфигурации (установлен по умолчанию). При изменении состояния флажка Устанавливать права для реквизитов и табличных частей по умолчанию система предлагает изменить (установить или сбросить) права доступа для всех реквизитов (включая стандартные) и табличных частей (включая стандартные) всех объектов конфигурации. В случае отказа от предлагаемого действия изменений в существующих объектах не происходит, а изменяется только поведение по умолчанию для новых объектов. При создании новой роли все права устанавливаются конфигуратором в следующее состояние: ● для объектов права не установлены; ● для реквизитов (включая стандартные) и табличных частей (включая стандартные) права установлены. Флажок Независимые права подчиненных объектов определяет, каким образом система будет учитывать состояние прав на родительский объект при определении прав на подчиненный объект. Если флажок установлен, то права родительского объекта не учитываются. Если флажок снят, то при определении права подчиненного объекта анализируется соответствующее право родительского объекта. Если у родительского объекта право отсутствует, у подчиненного объекта также отсутствует право, вне зависимости от состояния права у подчиненного объекта. Флажок Независимые права подчиненных объектов не отменяет того факта, что право на подчиненный объект требует наличия этого же права и на родительский. То есть для реквизита или табличной части нужно право на объект, для реквизита табличной части – на табличную часть и объект. Указанное свойство имеет влияние в том случае, если у пользователю назначено несколько ролей, права которых складываются «по ИЛИ». То есть, если в роли установлено свойство Независимые права подчиненных объектов и есть право только на реквизит, а в другой роли есть право только на объект, то после сложения прав ролей у пользователя будет право на реквизит При назначении прав доступа на реквизиты (табличные части) отчетов/обработок следует помнить следующую особенность: если у роли снят флажок Независимые права подчиненных объектов и для реквизита (табличной части) установлено право Редактирование, а для отчета/обработки право Просмотрне установлено, то считается, что и для реквизита (табличной части) право Редактированиене установлено. Если пользователю назначено несколько ролей, то проверка прав родительского объекта выполняется до того, как будет выполнено сочетание прав по ролям (для определения результирующего права на объект), см. здесь. Действие флажка Независимые права подчиненных объектов распространяется на следующие объекты: ● реквизиты (включая стандартные); ● табличные части (включая стандартные); ● реквизиты табличных частей (включая реквизиты стандартных табличных частей); ● команды. Чтобы изменить право доступа, в левом списке следует выбрать объект конфигурации, а в правом изменить состояние флажка в нужной строке вида действия. Если требуется изменить доступ сразу ко всем объектам выбранной ветви, нужно указать в левой части эту ветвь и изменить установку прав доступа. Описание каждой роли можно вывести в табличный или текстовый документ с помощью пункта Действия – Вывести список. 5.5.4.7. Просмотр и редактирование всех ролей Если в конфигурации используется несколько ролей, то для удобства просмотра и редактирования прав рекомендуется использовать окно Все роли. Для его открытия в дереве объектов конфигурации окна Конфигурация нужно указать ветвь Роли и в контекстном меню выбрать команду Все роли. Рис. 65. Окно редактирования «Все роли» В окне расположены три табличных поля. В первом (слева) производится выбор нужного объекта конфигурации. В первой колонке второго табличного поля выводится список прав по выбранному объекту. Другие колонки предназначены для указания использования каждого права для каждой существующей роли. Если для какой-нибудь роли требуется установить или снять все права, то достаточно в первой строке табличного поля установить или снять флажок разрешения. Если для какого-нибудь права требуется установить или снять его разрешение во всех ролях, то достаточно в первой колонке табличного поля установить или снять флажок разрешения. Поддерживается возможность перестановки колонок, соответствующих ролям. В третьем табличном поле редактируются условия доступа к данным на уровне отдельных полей и записей. 5.5.4.8. Ограничение доступа к данным 5.5.4.8.1. Общие замечания Механизм ограничений доступа к данным позволяет управлять правами доступа не только на уровне объектов метаданных, но и на уровне объектов базы данных «1С:Предприятия». Для ограничения доступа к данным могут быть использованы следующие объекты «1С:Предприятия»: ● роли, ● параметры сеанса, ● функциональные опции, ● привилегированные общие модули, ● ключевое слово РАЗРЕШЕННЫЕв языке запросов. Совместное использование перечисленных объектов позволяет обеспечить максимальную гибкость при необходимости разграничения прав доступа к данным между пользователями, выполняющими различные функции. Ограничения доступа к данным могут накладываться на следующие операции с данными (права доступа): чтение (право Чтение), добавление (право Добавление), изменение (право Изменение) и удаление (право Удаление). Текущий пользователь будет иметь возможность выполнить требуемую операцию в следующих случаях: ● Для операций чтения и удаления объект, находящийся в базе данных, должен соответствовать ограничению доступа к данным. ● Для операции добавления ограничению доступа к данным должен соответствовать объект, который планируется записать в базу данных. ● Для операции изменения ограничению доступа к данным должен соответствовать объект как до изменения (чтобы объект был прочитан), так и после изменения (чтобы объект был записан). При наложении ограничений доступа к данным следует помнить, что для операций изменения, добавления и удаления можно задать только одно условие, а для операции чтения можно задать более одного ограничения доступа к данным. Это означает, что для чтения разных полей объекта могут быть заданы разные условия, причем при задании условия можно указать как имя конкретного поля, так и специальное поле Прочие поля. В первом случае условие будет накладываться только в том случае, если в выборке (которой выполняется чтение данных) будет присутствовать поле, для которого задано ограничение, а во втором – ограничение будет накладываться для всех полей объекта, кроме полей, для которых ограничения заданы явным образом. При задании ограничения на конкретное поле, это поле будет считано в том случае, если ограничение выполняется, а при задании ограничения на Прочие поля, данные объекта будут прочитаны только в том случае, если ограничение выполняется для всех полей объекта, попавших в запрос чтения данных. Для объектов базы данных следующих видов могут быть наложены различные ограничения на разные виды изменений (добавление, модификацию, удаление): ● Планы обмена, ● Справочники, ● Документы, ● Планы видов характеристик, ● Планы счетов, ● Планы видов расчета, ● Бизнес-процессы, ● Задачи. Для следующих видов объектов базы данных возможно наложение ограничений на чтение не только всего объекта целиком, но и отдельных его полей: ● Планы обмена, ● Справочники, ● Документы, ● Журналы документов, ● Планы видов характеристик, ● Планы счетов, ● Планы видов расчета, ● Регистры сведений, ● Бизнес-процессы, ● Задачи. ВНИМАНИЕ! При обращении к полям объектов базы данных посредством свойств прикладных объектов из встроенного языка «1С:Предприятия» выполняется чтение всего объекта целиком, а не только значения используемого поля. Исключением является получение представления, когда будут прочитаны только значения полей, участвующих в формировании представления. Ограничения доступа содержатся в ролях, они могут быть указаны для большинства объектов метаданных и записываются на специальном языке, являющимся подмножеством языка запросов. 5.5.4.8.2. Язык ограничения доступа к данным Ограничения доступа к данным описываются на специальном языке, являющимся подмножеством языка запросов (подробное описание языка запросов см. здесь). Язык ограничения доступа к данным имеет следующие изменения относительно языка запросов: ● В запросе ограничения доступа к данным всегда присутствует одна таблица в качестве источника данных – это таблица объекта, на который накладывается ограничение (основной объект ограничения). ● Сокращено описание запроса. Язык ограничения доступа к данным использует только секции ИЗи ГДЕ языка запросов. Так, описание языка запросов выглядит следующим образом: <Описание запроса> ВЫБРАТЬ [РАЗРЕШЕННЫЕ] [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>] <Список полей выборки> [ИЗ <Список источников>] [ГДЕ <Условие отбора>] [СГРУППИРОВАТЬ ПО <Поля группировки>] [ИМЕЮЩИЕ <Условие отбора>] [ДЛЯ ИЗМЕНЕНИЯ [<Список таблиц верхнего уровня>]] В то время как описание языка запросов ограничения доступа к данным выглядит следующим образом: <Описание запроса> [Псевдоним таблицы основного объекта ограничения] [ИЗ <Список источников>] [ГДЕ <Условие отбора>] Описание списка источников см. здесь. Описание условий отбора см. здесь. При этом следует помнить, что во вложенных запросах, используемых в языке ограничения доступа к данным, ограничен набор допустимых возможностей (см. здесь); ● В качестве элементов условий можно указывать параметры сеанса (см. здесь) и функциональные опции (см. здесь); ● В любом месте запроса ограничения доступа к данным допустимо использование шаблонов, упрощающих написание ограничений (см. здесь). Главной частью ограничения является условие, которое вычисляется для каждой записи таблицы базы данных, на которую накладывается ограничение доступа к данным. Запись считается доступной в том случае, если в результате работы условия для одной записи таблицы основного объекта ограничения получена не пустая таблица (т.е. таблица, в которой 1 или более записей). Если в результате работы условия получается пустая таблица – запись, для которой условие исполнилось таким образом, считается недоступной. Причем изменение записи таблицы основного объекта ограничения считается допустимым, если запись не противоречит ограничению, указанному для права, как до выполнения операции изменения, так и после выполнения этой операции. Поля таблиц В ограничениях доступа к данным можно использовать: ● Поля таблиц объекта, для которого описывается ограничение доступа к данным. Например, если ограничение накладывается на чтение элементов справочника Контрагенты, то в ограничении могут использоваться поля справочника Контрагентыи его табличных частей. В частности, наиболее простые ограничения на чтение элементов справочника Контрагентымогут выглядеть так: ГДЕ Наименование = "Кирпичный завод" Или так: ГДЕ Продукция.Наименование = "Кирпич красный" Где Продукция– это табличная часть справочника Контрагенты. ● Поля таблиц объектов, доступных по ссылкам в основном объекте ограничения. Например, если реквизит ОсновнойМенеджерсправочника Контрагентыимеет тип ссылки на справочник Пользователи, то ограничение доступа может иметь, например, следующий вид: ГДЕ ОсновнойМенеджер.Код = "Иванов" Или: ГДЕ ОсновнойМенеджер.ФизическоеЛицо.Наименование = "Петровский" ● Поля таблиц объектов, связанных с основным объектом ограничения некоторыми условиями и выражения над ними. Например, на чтение элементов справочника Контрагентыможет быть наложено следующее ограничение: Контрагенты ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи ПО Контрагенты.ОсновнойМенеджер.Наименование = Пользователи.Наименование ГДЕ Пользователи.ФизическоеЛицо.Наименование = "Петровский" В этом ограничении используются поля элементов справочника Пользователи, связанных с данным элементом справочника Контрагентыпо значению полей Наименование. Вложенные запросы Вложенные запросы используются для формирования наборов записей, которые могут использоваться: ● для связывания с таблицей основного объекта ограничения; ● для использования в качестве операнда операций сравнения Вили НЕ В. Во вложенных запросах могут использоваться любые средства языка запросов, кроме: ● оператора В ИЕРАРХИИ; ● предложения ИТОГИ; ● результаты вложенных запросов не должны содержать табличные части; ● некоторых виртуальных таблиц, в частности ОстаткиИОбороты. В следующем примере ограничения на чтение из справочника Контрагенты, вложенный запрос используется в качестве набора записей для связывания с основным объектом ограничения: Контрагенты ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Пользователи.Наименование, Пользователи.ФизическоеЛицо ИЗ Справочник.Пользователи КАК Пользователи ГДЕ Пользователи.Код > "Петечкин") КАК Пользователи ПО Контрагенты.ОсновнойМенеджер.Наименование = Пользователи.Наименование ГДЕ Пользователи.ФизическоеЛицо.Наименование = "Петровский" В следующем примере приведено ограничение на чтение из справочника ПаспортныеДанныеФизЛиц, в котором вложенный запрос используется в качестве операнда операции сравнения В: ПаспортныеДанныеФизЛиц ГДЕ ПаспортныеДанныеФизЛиц.ФизЛицо В (ВЫБРАТЬ РАЗЛИЧНЫЕ Работники.ФизЛицо КАК ФизЛицо ИЗ РегистрСведений.Работники КАК Работники) Если во вложенном запросе необходимо получить данные из табличной части, то в разделе ИЗвложенного запроса необходимо обращаться непосредственно к табличной части. Например, вместо: ВЫБРАТЬ Ссылка КАК Ссылка, Продукция.Наименование КАК НаименованиеПродукции ИЗ Справочник.Контрагенты в качестве запроса, вложенного в ограничение, следует использовать: ВЫБРАТЬ Ссылка КАК Ссылка, Наименование КАК НаименованиеПродукции ИЗ Справочник.Контрагенты.Продукция Параметры сеанса В составе запросов ограничения доступа к данным могут входить параметры сеанса. Например, на чтение элементов справочника ГруппыПисемЭлектроннойПочтыможет быть задано следующее ограничение доступа: ГДЕ Владелец.ДоступКУчетнойЗаписи.Пользователь = &ТекущийПользователь И Владелец.ДоступКУчетнойЗаписи.Администрирование = ИСТИНА Где ТекущийПользователь– это параметр сеанса (см. здесь). Функциональные опции В составе запросов ограничения доступа к данным могут входить функциональные опции. Могут использоваться только не зависящие от параметров функциональные опции. Например, если у справочника Номенклатураесть реквизит ОсновнойСклад, то ограничение на чтение данного реквизита может выглядеть следующим образом: ГДЕ &УчетПоСкладам = ИСТИНА Где УчетПоСкладам– это функциональная опция (см. здесь). Особенности использования В ограничениях на объекты базы данных следующих типов могут быть использованы не все поля основного объекта данных ограничения: ● в регистрах накопления ограничения доступа могут содержать только измерения основного объекта ограничения; ● в регистрах бухгалтерии в ограничениях можно использовать только балансовые измерения основного объекта ограничения. ПРИМЕЧАНИЕ. Если в условиях ограничения доступа к данным оборотного регистра накопления используются измерения, не входящие в итоги, то при обращении к виртуальной таблице оборотов не используются хранимые итоги и запрос выполняется полностью по таблице движений. 5.5.4.8.3. Действия ограничения доступа Ограничения доступа проверяются при любом выполнении соответствующих операций над объектами базы данных (из диалогов, из встроенного языка, посредством запросов) и могут действовать одним из двух способов: ● Все. Способ «все» подразумевает, что некоторая операция над данными (из диалогов, из встроенного языка или посредством запросов) должна быть выполнена над всеми подразумеваемыми данной операцией объектами базы данных. Если при выполнении такой операции должны быть прочитаны или изменены объекты базы данных, для которых не выполняются соответствующие ограничения доступа, то операция завершается аварийно из-за нарушения прав доступа. ● Разрешенные. Способ «разрешенные» подразумевает, что при выполнении операции над данными должны быть прочитаны только те объекты базы данных, которые удовлетворяют соответствующим ограничениям доступа. Объекты базы данных, не удовлетворяющие ограничениям доступа, при выполнении такой операции считаются отсутствующими и на результат операции не влияют. Ограничения доступа к данным накладываются на объекты базы данных в момент обращения «1С:Предприятия» к базе данных. В клиент-серверном варианте «1С:Предприятия» наложение ограничений выполняется на сервере «1С:Предприятия». Способ действия ограничений, выбираемый для выполнения каждой операции над данными, определяется назначением этой операции и степенью ответственности ее результатов. В частности, способ «разрешенные» используется при отображении динамических списков и некоторых других интерактивных действиях. Способ «все» используется при выполнении любых операций с прикладными объектами из встроенного языка «1С:Предприятия», в том числе при любых изменениях объектов базы данных. Поэтому, например, могут возникнуть затруднения при построении отбора для метода Выбрать()менеджеров справочников, документов и других с последующим обходом результата в том случае, если на соответствующий объект установлено достаточно сложное ограничение, поскольку не всякое условие в ограничении прав доступа может быть адекватно представлено в виде отбора для метода Выбрать(). В запросах способом действия ограничений доступа к данным можно управлять. Для этого в языке запросов предусмотрено ключевое слово РАЗРЕШЕННЫЕ. Если в запросе не указано РАЗРЕШЕННЫЕ, то ограничения действуют способом «все». Если слово РАЗРЕШЕННЫЕуказано, то выбирается способ «разрешенные». Важно, что если в запросе не указано ключевое слово РАЗРЕШЕННЫЕ, то все отборы, заданные в этом запросе, не должны противоречить ни одному из ограничений на чтение объектов базы данных, используемых в запросе. При этом если в запросе используются виртуальные таблицы, то соответствующие отборы должны быть наложены и на сами виртуальные таблицы. Пример: ВЫБРАТЬ КонтактнаяИнформацияСрезПервых.Представление ИЗ РегистрСведений.КонтактнаяИнформация.СрезПоследних(, Тип = &Тип) КАК КонтактнаяИнформацияСрезПервых ГДЕ КонтактнаяИнформацияСрезПервых.Тип = &Тип При использовании объектной техники не поддерживается получение доступа к данным в режиме РАЗРЕШЕННЫЕ. Предполагается, что объектная техника используется для наиболее ответственных операций над данными, в том числе для их изменения. Для получения при помощи объектной техники всех данных, независимо от установленных ограничений, можно выполнять необходимые действия в привилегированном модуле или от имени пользователя с полными правами. Средств получения только разрешенных данных в объектной технике не предусмотрено. 5.5.4.8.4. Механизм наложения ограничений Любая операция над данными, хранимыми в базе данных, в «1С:Предприятии» в конечном счете приводит к обращению к базе данных с некоторым запросом на чтение или изменение данных. В процессе исполнения запросов к базе данных внутренние механизмы «1С:Предприятия» выполняют наложение ограничений доступа. При этом: ● Формируется список прав (чтение, добавление, изменение, удаление), список таблиц базы данных и список полей, используемых этим запросом. ● Из всех ролей текущего пользователя выбираются ограничения доступа к данным для всех прав, таблиц и полей, задействованных в запросе. При этом если какая-нибудь роль не содержит ограничений доступа к данным какой-нибудь таблицы или поля, то это значит, что в данной таблице доступны значения требуемых полей из любой записи. Иначе говоря, отсутствие ограничения доступа к данным означает наличие ограничения ГДЕ Истина. ● Получаются текущие значения всех параметров сеанса и функциональных опций, участвующих в выбранных ограничениях. Для получения значения параметра сеанса от текущего пользователя не требуется наличие права на получение этого значения. Однако если значение некоторого параметра сеанса не было установлено, то произойдет ошибка и запрос к базе данных выполнен не будет. На получение функциональных опций оказывает влияние свойство функциональной опции Привилегированный режим (см. здесь). Если это свойство сброшено, то текущий пользователь должен обладать правами на чтение объекта, в котором хранится функциональная опция. ● Ограничения, полученные из одной роли, объединяются операцией И. ● Ограничения, полученные из разных ролей, объединяются операцией ИЛИ. ● Построенные условия добавляются к SQL-запросам, с которыми «1С:Предприятие» обращается к СУБД. При обращении к данным со стороны условий ограничения доступа проверка прав не выполняется (ни к объектам метаданных, ни к объектам базы данных). Причем механизм добавления условий зависит от выбранного способа действия ограничений «все» или «разрешенные». Способ «все» При наложении ограничений способом «все» к SQL-запросам добавляются условия и поля так, чтобы «1С:Предприятие» могло получить информацию о том, были ли в процессе исполнения запроса к базе данных использованы данные, запрещенные для данного пользователя или нет. Если запрещенные данные были использованы, то инициируется аварийное завершение запроса. Наложение ограничений доступа способом «все» схематически представлено на рис. 66: Рис. 66. Способ «все» Способ «разрешенные» При наложении ограничений способом «разрешенные» к SQL-запросам добавляются такие условия, чтобы запрещенные текущему пользователю записи не оказывали влияния на результат запроса. Иначе говоря, при наложении ограничений в режиме «разрешенные» запрещенные данному пользователю записи считаются отсутствующими, что схематически представлено на рис. 67: Рис. 67. Способ «разрешенные» 5.5.4.8.5. Другие объекты, связанные с ограничениями доступа к данным При разработке конфигураций с использованием ограничений доступа к данным могут оказаться полезными такие объекты метаданных, как параметры сеанса, функциональные опции и общие модули с флажком Привилегированный. Параметры сеанса Параметры сеанса могут использоваться в ограничениях доступа к данным аналогично тому, как в запросе могут использоваться параметры запроса. Функциональные опции Не зависящие от параметров функциональные опции могут использоваться в ограничениях доступа к данным аналогично тому, как в запросе могут использоваться параметры запроса. Привилегированные общие модули Если для общего модуля установлен флажок Привилегированный, то исполнение процедур и функций этого модуля приобретает важную специфику: ● В клиент-серверном варианте «1С:Предприятия» привилегированным может быть только тот модуль, который исполняется на сервере. ● Исполнение процедур и функций привилегированного модуля и всего, что из них вызвано, выполняется при выключенной системе ограничения прав, как к объектам метаданных, так и к данным. Таким образом, из привилегированного модуля может быть выполнена любая операция над любыми объектами даже в том случае, если текущий пользователь не имеет соответствующих прав. Привилегированные модули предназначены для начальной установки значений параметров сеанса, используемых в ограничениях доступа к данным. Еще общие модули могут быть использованы для некоторых целостных действий над данными со стороны пользователя с ограниченными правами. Например, если в функции пользователя входит ввод и проведение документов, но пользователь не должен иметь доступа к данным, на которые влияет проведение документа, то выполнение операции проведения может быть вынесено в привилегированный модуль. Это позволит пользователю проводить документы без предоставления ему прав на другую информацию (регистры, например). Привилегированный режим Имеется возможность программной установки привилегированного режима при работе с данными. Программная установка привилегированного режима может потребоваться в случае массированных операций с данными информационной базы, и при этом нет смысла проверять права доступа к данным. Описание привилегированного режима см. здесь. 5.5.4.8.6. Использование препроцессора При редактировании текста ограничения доступа к данным возможно использование инструкций препроцессора. Доступны следующие инструкции: #ЕСЛИ <Выражение> #ТОГДА #ИНАЧЕЕСЛИ <Выражение> #ТОГДА #ИНАЧЕ #КОНЕЦЕСЛИ <Выражение>– произвольное логическое выражение на встроенном языке, результат которого имеет тип Булево. Выражение может содержать: ● операции сравнения <, >, <=, >=, =, <>; ● логические операции И, ИЛИ, НЕ; ● параметры сеанса – используется синтаксис &Параметр, где Параметр– имя параметра сеанса. Если результатом выражения инструкции #ЕСЛИили #ИНАЧЕЕСЛИявляется значение Истина, то в результирующий текст инструкции ограничения доступа помещается текст, расположенный после ключевого слова #ТОГДА. Если же результатом выражения является значение Ложь, то текст, расположенный после ключевого слова #ТОГДА, не помещается в текст инструкции ограничения доступа. Текст, расположенный после инструкции #ИНАЧЕ, будет помещен в результирующий текст ограничения доступа, если ни одно из ранних условий не было выполнено. ПРИМЕЧАНИЕ. Если текст ограничения доступа к данным содержит инструкции препроцессора, то такое ограничение не проходит проверку синтаксиса при редактировании и не может быть изменено при помощи конструктора. Пример: #ЕСЛИ &ТекущийПользователь <> "Климова" #ТОГДА <текст ограничения доступа> #КОНЕЦЕСЛИ Здесь ТекущийПользователь– параметр сеанса типа СправочникСсылка.Пользователи. Такая конструкция означает, что условие для установки ограничения доступа будет проверяться для всех пользователей из справочника, кроме пользователя Климовой. 5.5.4.8.7. Шаблоны текста ограничения доступа Роль может содержать список шаблонов ограничения доступа, которые описываются на закладке Шаблоны ограничений формы роли. Также шаблоны ограничения доступа можно редактировать в редакторе группового редактирования ограничений доступа и шаблонов (см. здесь). Каждый шаблон ограничения доступа имеет имя и текст. Имя шаблона подчиняется обычным правилам для имен, принятых в системе «1С:Предприятие». Текст шаблона содержит часть текста на языке ограничения доступа к данным и может содержать параметры, которые выделяются при помощи символа "#". После символа "#" могут следовать: ● Одно из ключевых слов: ● Параметр, после которого в скобках указывается номер параметра в шаблоне; ● ТекущаяТаблица– обозначает вставку в текст полного имени таблицы, для которой строится ограничение; ● ИмяТекущейТаблицы– обозначает вставку в текст полного имени таблицы (как строковое значение, в кавычках), к которой применяется инструкция, на текущем варианте встроенного языка; ● ИмяТекущегоПраваДоступа– содержит имя права, для которого выполняется текущее ограничение: ЧТЕНИЕ/READ, ДОБАВЛЕНИЕ/INSERT, ИЗМЕНЕНИЕ/UPDATE, УДАЛЕНИЕ/DELETE; ● имя параметра шаблона – означает вставку в текст ограничения соответствующего параметра шаблона; ● символ "#" – обозначает вставку в текст одного символа "#". В выражении ограничения доступа могут содержаться: ● Шаблон ограничения доступа, который указывается в формате #ИмяШаблона("Значение параметра шаблона 1", "Значение параметра шаблона 2",...). Каждый параметр шаблона заключается в двойные кавычки. При необходимости указания в тексте параметра символа двойной кавычки следует использовать две двойные кавычки. ● Функция СтрСодержит(ГдеИщем, ЧтоИщем). Функция предназначена для поиска вхождения строки ЧтоИщем в строке ГдеИщем. Возвращает Истинав случае, если вхождение обнаружено и Ложь– в противном случае. ● Оператор +для конкатенации строк. Для удобства редактирования текста шаблона на закладке Шаблоны ограничений в форме роли нужно нажать кнопку Установить текст шаблона. В открывшемся диалоге ввести текст шаблона и нажать кнопку ОК. Система «1С:Предприятие» выполняет проверку синтаксиса текстов шаблонов, проверку синтаксиса использования шаблонов и макроподстановку текстов шаблонов ограничения доступа роли в текст запроса. Макроподстановка шаблона заключается: ● в замене вхождений параметров в тексте шаблона на значения параметров из выражения использования шаблона в тексте ограничения; ● в замене выражения использования шаблона в тексте запроса на получившийся текст шаблона. При вызове конструктора запроса для условия, содержащего шаблоны ограничения доступа, выдается предупреждение о замене всех шаблонов. Далее приведены примеры шаблонов ограничений: Имя шаблона Шаблон Тело шаблона Итого = #Параметр(1) Использование Где #Шаблон("10") Результат Где Итого = 10 Имя шаблона Шаблон1(ВидДокумента) Тело шаблона ВидДокумента = #ВидДокумента Использование Где #Шаблон1(""Накладная"") Результат Где ВидДокумента = "Накладная" Имя шаблона Шаблон2 Тело шаблона ВидДокумента = #Параметр(1) ## #Параметр(2) Использование Где #Шаблон2(""Накладная"", "1"") Результат Где ВидДокумента = "Накладная # 1" Имя шаблона Шаблон3 Тело шаблона ВидДокумента = #Параметр(3) Использование Где #Шаблон3("","",""Накладная"") Результат Где ВидДокумента = "Накладная" 5.5.4.8.8. Общие рекомендации по ограничению прав Чтобы гибко управлять доступом пользователей к данным в соответствии с функциями при установке ограничений доступа к данным, рекомендуется придерживаться следующих принципов: ● Нужно выбрать совокупность информации (может быть зависимой от текущего пользователя), для которой целесообразна предварительная подготовка. Выбранная информация должна, с одной стороны, максимально упростить ограничения доступа к данным, а с другой стороны, не должна иметь слишком большой объем. Распределить ее по параметрам сеанса. ● Установить значения параметров сеанса в обработчике УстановкаПараметровСеанса()модуля сеанса. ● Задать ограничения доступа к тем данным, для которых это оправданно (данные являются секретными или наиболее важными для сохранения целостности системы). Необходимо иметь в виду, что установка ограничения доступа может привести к замедлению любого обращения к этим данным. Излишняя сложность ограничений также может привести к замедлению. ● При необходимости обеспечить выполнение некоторого ограниченного количества операций над данными со стороны пользователя, которому полный доступ к этим данным давать нецелесообразно, вынести эти действия в привилегированные модули или явно включать и выключать привилегированный режим в соответствующих местах программного кода (см. здесь). ● Доступ к данным при различных проверках, выполняемых системой при записи объектов, выполняется в привилегированном режиме (см. здесь). Это позволяет не отключать ограничения в правах на уровне записей для соответствующих полей, если работа конфигурации с этими данными планируется только в управляемом режиме: ● для справочников при проверке родителя, владельца и уникальности кода; ● для документов, бизнес-процессов и задач при проверке уникальности номера; ● для планов обмена отключена при проверке уникальности кода; ● для планов счетов и планов видов характеристик при проверке родителя и уникальности кода. При создании запроса ограничения к данным следует помнить о некоторых ограничениях и особенностях: ● Если для объектной таблицы заданы ограничения доступа к данным и в запросе к данным используется объединение с такой таблицей, то в условии соединения (секция запроса ПО) не допускается использование табличной части объекта с заданным ограничением доступа. ● Если в запросе указана таблица, у которой в запросе не используется ни одного поля, то на эту таблицу накладываются все ограничения доступа к данным. Например, запрос ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Справочник.Контрагентыбудет исполнен с учетом всех ограничений доступа, заданными для справочника Тест. Ограничения накладываются «по ИЛИ». Это значит, что будут доступны все записи, доступные хотя бы по одному условию. Если для каких-то полей не задано условий, то запрос будет выполнен для всех записей таблицы. Если в запросе используется таблица верхнего уровня, то ограничения, заданные для колонок вложенных таблиц, не накладываются. Если в запросе используется вложенная таблица, то накладываются ограничения как для вложенной таблицы, так и для таблицы верхнего уровня. Например, запрос ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Справочник.Контрагенты.Договорабудет исполнен с учетом всех ограничений для справочника Контрагенты, а также с учетом ограничений, относящихся к табличной части Договора. ● Если доступ к полям, необходимым для получения представления ссылочного объекта метаданных, запрещен с помощью ограничений доступа к данным или доступ к объекту запрещен на уровне прав доступа, то получение представления такого объекта не влияет на ход текущей транзакции. 5.5.4.8.9. Конструктор ограничения доступа к данным Для вызова конструктора в табличном поле Ограничения доступа к данным в колонке Ограничение доступа нужно перейти в режим редактирования и нажать кнопку выбора. На экран выводится форма конструктора: Рис. 68. Закладка «Таблицы и поля» конструктора ограничений С его помощью производится формирование условий для установки ограничения доступа к данным. На закладке Таблицы и поля следует выбрать нужные объекты и перенести их в раздел Таблицы и Поля. Если указано несколько таблиц, то в конструктор добавляется закладка Связи. Рис. 69. Закладка «Связи» конструктора ограничений На закладке Связи формируются условия, которые накладываются на связи между полями таблиц. Для ввода нового условия нужно нажать кнопку Добавить и в колонке Таблица1 выбрать одну из таблиц. В колонке Таблица2 выбрать таблицу, поля которой связаны с полями первой. Ниже списка условий расположены элементы управления, с помощью которых формируется условие связи таблиц. Если выбран простой тип условия, то в Поле1 и Поле2 выбираются связанные поля указанных таблиц и задается условие сравнения. Если выбраны поля, сравнение которых не производится, то в строке списка условий в колонке Условие связи выводится текст: Неверно заполненное условие. На закладке Условия, если требуется, нужно указать условия, по которым будет выполняться отбор исходных данных. Рис. 70. Закладка «Условия» конструктора ограничений По каждому выбранному полю необходимо выбрать вид условия и указать наименование параметра. В качестве параметра допускается использование параметра сеанса. Разрешается указывать несколько условий. В этом случае в колонке Условие табличного поля условий текст условия выводится в несколько строк. В любой момент создания запроса текст запроса можно просмотреть, нажав кнопку Запрос. 5.5.4.8.10. Групповое редактирование ограничений прав доступа и шаблонов Режим группового редактирования ограничений прав доступа и шаблонов вызывается командой Все ограничения доступа контекстного меню ветки Роли. В открывшейся форме присутствуют две закладки: Ограничения доступа и Шаблоны ограничений. Рис. 71. Все ограничения прав доступа и шаблоны На закладке Ограничения доступа можно просматривать все введенные ограничения доступа в общем списке (по всем ролям, объектам, правам, комбинациям полей). Существует возможность добавлять ограничение доступа сразу для нескольких ролей, объектов, прав и комбинаций ролей. Можно фильтровать список по различным критериям. Рис. 72. Отбор ограничений доступа Режим группового редактирования позволяет удалять выделенные в списке ограничения. Существует возможность редактировать выделенные ограничения. При этом можно заменять состав полей и/или ограничение доступа. Режим группового редактирования позволяет также копировать выделенные ограничения в другие роли. Рис. 73. Копирование ограничений На закладке Шаблоны ограничений можно видеть все шаблоны ограничения доступа, присутствующие в прикладном решении, при этом из собственно текста шаблона в таблице отображаются только первые 10 строк, которые завершаются символом "...", если текст шаблона более 10 строк. В окне редактирования шаблона будет отображаться полный текст шаблона. Рис. 74. Все шаблоны ограничения доступа Существует возможность добавлять шаблон ограничения доступа сразу для нескольких ролей. Имеется возможность отбирать необходимые шаблоны с помощью набора критериев, а также по значению текущей колонки. Рис. 75. Отбор шаблонов ограничения доступа При необходимости имеется возможность выполнить копирование одного или нескольких шаблонов в другие роли. Рис. 76. Копирование шаблонов Также редактор предоставляет возможность редактировать выделенные шаблоны. При этом можно изменять наименование и сам текст шаблона. 5.5.5. Общие реквизиты Общий реквизит – это реквизит, добавляемый ко всем или многим объектам конфигурации. Общий реквизит может использоваться в двух сценариях: ● Как общий реквизит, т. е. для упрощения указания реквизита, который присутствует во всех или многих объектах конфигурации, в которых этот реквизит сохраняет свой смысл и тип. В качестве примера такого использования общего реквизита можно привести поле произвольного комментария в документах прикладного решения. ● Как составная часть разделения данных – специального механизма, позволяющего разделить все хранимые данные, а также работу прикладного решения на отдельные части. При этом у общего реквизита включается разделение данных. В качестве примера такого использования можно привести понятие абонента, когда в одной физической информационной базе могут независимо работать различные «владельцы» данных, при этом пользователи такого прикладного решения будут считать, что в информационной базе кроме «их» данных нет больше ничего. Подробнее о механизме разделения данных см. стр. 1123. Для того чтобы создать общий реквизит, необходимо создать объект конфигурации Общий реквизит. Это можно сделать в режиме Конфигуратор обычным способом, то есть в окне конфигурации следует выбрать пункт Общие, далее Общие реквизиты и добавить новый объект. Рис. 77. Создание общего реквизита В результате будет создан объект конфигурации Общий реквизит, который можно использовать для включения общего реквизита в необходимые объекты конфигурации. Режим работы общего реквизита задается с помощью свойства Разделение данных. Если это свойство установлено в значение Не использовать, то созданный объект конфигурации будет использоваться только как реквизит, входящий в состав нескольких (или всех) объектов конфигурации. Если свойство установлено в значение Разделять, общий реквизит будет использоваться в качестве разделителя данных (см. стр. 1123). Список объектов конфигурации, в состав которых входит общий реквизит, определяется с помощью свойств Состав и Автоиспользование (или соответствующая закладка в окне Дополнительно (см. здесь)). Рис. 78. Общий реквизит без разделения Если свойство Автоиспользование установлено в значение Использовать, то созданный общий реквизит будет автоматически добавлен во все существующие объекты конфигурации (для которых возможно использование общих реквизитов), а также будет автоматически добавляться во все вновь создаваемые объекты конфигурации. В том случае, если свойство Автоиспользование установлено в значение Не использовать, автоматического добавления реквизита происходить не будет, а для выбора объектов, в состав которых необходимо включить общий реквизит, следует воспользоваться свойством Состав. Этим же свойством следует воспользоваться в том случае, если при автоматическом использовании общего реквизита существуют объекты, в которых общий реквизит добавлять не следует. Рис. 79. Состав общего реквизита Окно редактирования состава общего реквизита разделено на две части: ● в верхней части указаны все объекты конфигурации, которые могут входить в состав общего реквизита; ● в нижней части – объекты, настройки которых отличаются от настроек по умолчанию, определяемых значением свойства Автоиспользование общего реквизита: ● если свойство установлено в значение Использовать, то нижняя часть окна содержит список объектов, не входящих в состав общего реквизита; ● если свойство установлено в значение Не использовать, то нижняя часть окна содержит список объектов, входящих в состав общего реквизита. Редактирование можно осуществлять как в верхней, так и в нижней части окна, при этом редактируемый объект конфигурации будет перемещаться между частями окна, в зависимости от значения в колонке Использование. Для каждого объекта конфигурации колонка Использование может принимать одно из трех значений: ● Автоматически – означает, что назначение объекта конфигурации общему реквизиту зависит от значения свойства Автоиспользование общего реквизита: ● Использовать означает, что объект конфигурации входит в состав общего реквизита; ● Не использовать означает, что объект конфигурации не входит в состав общего реквизита. ● Использовать – означает, что объект конфигурации входит в состав общего реквизита вне зависимости от значения свойства Автоиспользование. ● Не использовать – означает, что объект конфигурации не входит в состав общего реквизита вне зависимости от значения свойства Автоиспользование. Таким образом, с помощью редактора свойства Состав можно, например, выборочно исключать некоторые объекты из состава общего реквизита, несмотря на то, что для него установлено автоиспользование. В состав общего реквизита (не находящегося в режиме разделения данных) могут входить следующие объекты конфигурации: ● справочники, ● документы, ● журналы документов, ● планы видов характеристик, ● планы счетов, ● планы видов расчета, ● бизнес-процессы, ● задачи, ● регистры сведений, ● регистры накопления, ● регистры бухгалтерского учета, ● регистры расчета, ● планы обмена, ● внешние источники данных. При записи документа общему реквизиту журнала присваивается значение общего реквизита документа или значение NULL, если документ не входит в состав общего реквизита. Общий реквизит может использоваться в ограничениях доступа к данным (см. стр. 233). Включать внешние источники данных в состав общего реквизита имеет смысл в том случае, когда общий реквизит является разделителем (см. здесь). С особенностями использования внешнего источника данных, входящего в состав разделителя, можно ознакомиться в соответствующем разделе (см. здесь). Общий реквизит может быть составного типа. СОВЕТ. Не следует использовать общие реквизиты для описания данных, которые являются частью бизнеслогики конкретных объектов. Общие реквизиты отображаются в редакторе формы при редактировании форм объектов, входящих в состав общего реквизита, и могут быть размещены на форме. 5.5.6. Планы обмена План обмена используется для реализации механизмов обмена данными. План обмена: ● содержит информацию об узлах, которые могут участвовать в обмене данными; ● определяет состав данных, которыми будет производиться обмен; ● указывает, следует ли задействовать механизм распределенной информационной базы при обмене. В одном прикладном решении может существовать несколько планов обмена, каждый из которых может описывать свой порядок обмена данными. Например, если выполняется обмен данными с удаленными складами и удаленными офисами, то, скорее всего, будут существовать два плана обмена (один – для обмена со складами, другой – для офисов), поскольку состав данных, которыми производится обмен со складами, будет значительно «уже», чем состав данных, предназначенных для обмена с офисами. Описание механизмов обмена данными см. здесь. 5.5.7. Критерии отбора Критерии отбора – одна из составляющих механизма отбора информации. С их помощью специалист, осуществляющий конфигурирование системы, создает предопределенные правила отбора. В режиме 1С:Предприятие по этим правилам будет выполняться отбор информации в списках. В окне редактирования объекта Критерий отбора нужно указать имя, синоним и комментарий. Тип критерия отбора может быть любым из стандартных типов или определенных как объекты дерева конфигурации. Допускается включение реквизитов с составным типом, заданным как СправочникСсылка, ДокументСсылкаи т. д., а также реквизитов с составным типом, определенным планом видов характеристик (Характеристика...). При создании типа критерия отбора следует указать те типы, по которым требуется производить отбор. На закладке Состав по этому типу будет сформирован состав объектов конфигурации, содержащих данные, тип которых входит в тип критерия отбора. В списке требуется установить отметку для тех реквизитов, по которым будет производиться данный отбор. Чтобы критерий отбора выполнял свои функции, в конфигураторе для него должен быть создан список (закладка Состав), состоящий из реквизитов справочников и документов. На состав списка не накладывается практически никаких ограничений: например, в отличие от графы журнала, для критерия отбора можно выбрать несколько реквизитов одного документа и реквизитов табличной части документа. Критериев отбора может быть произвольное число, а каждый критерий может иметь несколько форм представления результатов отбора. Этот механизм полезен в случае поиска различной информации. Например, требуется отобрать все документы, в которых используется (в реквизитах и табличных частях) определенный контрагент. При этом можно учитывать и другие условия отбора информации (например, поиск ведется только среди проведенных документов или в определенном интервале дат и т. д.). ПРИМЕЧАНИЕ. При открытии формы отбора следует передавать в нее параметр Отборс установленным значением отбора (элемент Значение). Подробнее о параметрах формы см. здесь. Критерий отбора может иметь произвольное число форм для визуального представления результатов отбора. Для оперативности получения информации по отбору вызов формы можно разместить в пользовательском меню или на панели инструментов. Если форм критерия отбора несколько, то в свойстве Основная форма указывается та форма, которая будет вызываться по умолчанию. Если в конфигурации определено несколько подсистем, нужно выбрать ту, к которой относится данный критерий отбора. Можно указать несколько различных подсистем. Для вызова формы критерия отбора система размещает соответствующую команду в панели навигации формы. 5.5.8. Подписки на события Подписки на события позволяют назначать обработчики событий для одного объекта или группы объектов встроенного языка. При добавлении новой подписки на событие, кроме общих свойств объектов конфигурации, следует указать источник события, само событие, обработчик которого назначается, и процедуру, являющуюся обработчиком этого события. Источниками событий могут являться прикладные объекты, наборы записей регистров, менеджеры объектов конфигурации. Допускается как множественный выбор объектов, являющихся поставщиками событий, так и выбор всех объектов одного типа (например, все документы). Выбор события осуществляется из выпадающего списка, причем список содержит те события, которые присутствуют во всех выбранных объектах. Если таких событий нет, список будет пуст. Выбор обработчика события выполняется в окне, содержащем процедуры, которые могут быть назначены в качестве обработчика события. Такие процедуры должны удовлетворять следующим требованиям: ● процедура должна быть расположена в общем модуле; ● у общего модуля, в котором расположена процедура, должны быть заданы следующие свойства: ● флажок Глобальный снят; ● флажок Клиент (обычное приложение) установлен; ● флажок Клиент (управляемое приложение) снят; ● флажок Сервер установлен; ● флажок Внешнее соединение установлен. ● количество параметров процедуры должно быть на единицу больше, чем количество параметров, которое имеет обработчик выбранного события (т. к. дополнительно к параметрам, передаваемым в обработчик события, передается еще и объект-источник данного события). При наступлении указанного события выполняется следующая последовательность действий: ● сначала отрабатывается событие в самом объекте и вызывается обработчик события, определенный в модуле объекта или набора записей; ● если в процессе выполнения обработчика параметр Отказустановлен в значение Истинаили вызвано исключение, действие прерывается; ● затем в произвольном порядке вызываются внешние обработчики, назначенные для данного события; ● если в процессе выполнения назначенного обработчика параметр Отказустановлен в значение Истинаили вызвано исключение, действие прерывается. В качестве источника в назначенный обработчик передается сам объект (набор записей), вызвавший событие. Назначенные обработчики событий вызываются в том же контексте, что и действие, вызвавшее событие. Если выполнение назначенного обработчика нужно перенести на сервер, следует вызывать в коде обработчика процедуру общего модуля, исполняемую на сервере. Назначение обработчиков событий доступно также и средствами встроенного языка. Для этого используются операторы ДобавитьОбработчики УдалитьОбработчик. У объектов, которые могут являться источниками событий, есть свойство ДополнительныеСвойстватипа Структура, позволяющее хранить информацию между вызовами событий, например, новый или старый это объект. 5.5.9. Регламентные задания 5.5.9.1. Основные возможности механизма заданий Основными возможностями механизма заданий являются: ● определение регламентных процедур на этапе программирования системы; ● выполнение заданных действий по расписанию; ● выполнение вызова заданной процедуры или функции асинхронно, т. е. без ожидания ее завершения; ● мониторинг хода выполнения заданий; ● управление заданиями (отмена, блокировка выполнения и др.); ● возможность ожидания завершения одного или нескольких заданий. 5.5.9.2. Фоновые задания Механизм фоновых заданий реализуется средствами встроенного языка. Фоновые задания предназначены для выполнения прикладных задач асинхронно. Они могут порождать дочерние фоновые задания, например, для распараллеливания сложных вычислений по различным рабочим серверам кластера в клиент-серверном варианте работы. Существует возможность ограничить выполнение фоновых заданий, имеющих одинаковые методы, по определенному прикладному признаку. Программное создание и управление фоновыми заданиями возможны из любого соединения пользователя с информационной базой системы «1С:Предприятие». Фоновое задание выполняется от имени пользователя, который его создал. 5.5.9.3. Регламентные задания Регламентные задания представляют собой неотъемлемую часть конкретного прикладного решения и описываются на этапе конфигурирования. Рис. 80. Расписание фоновых заданий Для каждого регламентного задания может быть задано расписание, в соответствии с которым регламентное задание будет автоматически запущено на исполнение. В системе «1С:Предприятие» поддерживаются однократные и периодические расписания. Можно задать дату начала и окончания выполнения, дневное, недельное и месячные расписания. Расписание можно задать как на этапе конфигурирования, так и на этапе выполнения (в режиме 1С:Предприятие). В процессе запуска регламентное задание порождает фоновое задание, которое и выполняет реальную обработку. Регламентное задание может выполняться от имени заданного пользователя и имеет возможность перезапуска (например, в случае непредвиденного завершения работы). В утилите администрирования клиент-серверного варианта работы автоматическое выполнение регламентных заданий может быть запрещено для конкретной информационной базы. 5.5.9.4. Особенности выполнения регламентных заданий В клиент-серверном варианте работы запуск регламентных заданий по расписанию осуществляет менеджер кластера. Таким образом, даже если с информационной базой не установлено ни одного клиентского соединения, регламентные задания будут выполняться (при условии, что они не запрещены для конкретной информационной базы). Особенность выполнения фоновых заданий в файловом и клиент-серверном вариантах см. здесь. 5.5.10. Функциональные опции и параметры функциональных опций 5.5.10.1. Назначение Функциональные опции позволяют разработчику описать возможности прикладного решения, которые можно оперативно включать или выключать на этапе внедрения и/или в процессе работы системы. Например, возможность работы с дополнительными свойствами товаров можно выделить в отдельную функциональную опцию. Тогда если отключить эту возможность, в интерфейсе прикладного решения «пропадут» все связанные (с дополнительными свойствами товаров) возможности. Система способна автоматически учитывать состояние сделанных настроек – скрывать выключенные возможности, делая интерфейс приложения более ясным и понятным для пользователя. При разработке возникают ситуации, когда значение функциональной опции должно зависеть от неких параметров, например, валютный учет ведется не у всех организаций. Для реализации такой зависимости служат Параметры функциональных опций – объекты, параметризующие функциональные опции. 5.5.10.2. На что влияют функциональные опции Функциональные опции могут оказывать влияние: ● На пользовательский интерфейс – при выключении каких-либо функциональных опций система скрывает в пользовательском интерфейсе все элементы, относящиеся к ней. При этом затрагиваются следующие элементы интерфейса: ● глобальный командный интерфейс; ● реквизиты формы (в том числе колонки реквизита формы типа ТаблицаЗначенийили ДеревоЗначений); ● команды формы; ● отчеты, реализованные с помощью системы компоновки данных. ВНИМАНИЕ! Если клиентское приложение работает с файловым вариантом информационной базы через вебсервер, то изменение функциональной опции приведет к изменению пользовательского интерфейса только после перезапуска веб-сервера (перезапуск клиентского приложения не вызовет изменение пользовательского интерфейса). ● На алгоритмы, написанные на встроенном языке – имеется возможность программно получать значения функциональных опций и использовать их в различных условиях, например, для уменьшения объема вычислений. ВНИМАНИЕ! Функциональные опции и их параметры не влияют на состав базы данных. Все таблицы и поля присутствуют в базе данных независимо от состояния функциональных опций. 5.5.10.2.1. Глобальный командный интерфейс Влияние функциональных опций на глобальный командный интерфейс заключается в том, что система скрывает команды всех объектов, относящихся к выключенным опциям. Например, если значение функциональной опции Закупкиравно значению Ложь, то будут скрыты команды открытия раздела Закупки, создания документа ПриходТовара, открытия списка ПриходТовараи т. д. В свою очередь, опция Закупкиможет учитывать значение параметра функциональной опции, например, Организация. Изменяя с помощью методов встроенного языка значение этого параметра, можно изменять состояние функциональной опции, а, следовательно, и видимость элемента интерфейса. Также следует учитывать следующие особенности формирования командного интерфейса: ● Команда будет исключена из командного интерфейса в том случае, если реквизит, являющийся параметром команды, отключен функциональной опцией. ● Команда будет исключена из командного интерфейса в том случае, если тип параметра команды отключен функциональной опцией. Если тип параметра команды составной, то команда становится недоступной тогда, когда отключаются все типы параметра. 5.5.10.2.2. Форма В форме функциональные опции могут влиять на реквизиты и команды формы и (как следствие) изменять видимость связанных с ними элементов формы (поля и колонки – для реквизитов формы, кнопки – для команд формы). При разработке формы необходимо учитывать следующие особенности поведения системы: ● Отключается реквизит формы ссылочного типа, если объект конфигурации, образующий этот тип, отключен функциональной опцией. Реквизит формы составного типа отключается в том случае, если функциональные опции отключают все составляющие типы. ● Отключается реквизит формы типа <Вид>Объект(например, основной реквизит формы), если объект конфигурации, образующий этот тип, отключен функциональной опцией. ● Таблица формы будет отключена, если она отображает данные реквизита формы, отключенного функциональной опцией. ● В диалоге выбора типов (например, для полей ввода, связанных с реквизитами составного типа) отсутствуют типы, если объекты конфигурации, формирующие эти типы, отключены функциональной опцией. Информация о типах, отключенных функциональными опциями, кэшируется на стороне клиента и очищается через 20 минут или во время вызова метода ОбновитьИнтерфейс(). ВНИМАНИЕ! В отличие от командного интерфейса, значения параметров функциональных опций устанавливаются только для конкретного экземпляра формы. 5.5.10.2.3. Система компоновки данных Система компоновки данных в основном используется для построения отчетов. Функциональные опции влияют на состав данных, которые выводятся в отчет, и на состав настроек отчета, доступных пользователю. Например, если выключена функциональная опция Валютный учет, то в отчете, выводящем реестр документов Приход товара, будет отсутствовать колонка Валюта и Валютная сумма, а в настройках будет отсутствовать возможность отбора, группировки, сортировки и т. д. по полю Валюта. Подробнее о влиянии функциональных опций на доступность полей в отчете, построенном на системе компоновки данных, см. здесь. 5.5.10.2.4. Характеристики Функциональные опции оказывают влияние на видимость полей формы, которые отображают значение характеристики объекта. Для этого необходимо включить в состав функциональной опции реквизит, хранящий значение характеристики. Рассмотрим пример. Характеристики используются для справочника Товары, виды характеристик хранятся в плане видов характеристик Характеристики, а значения – в качестве ресурса регистра сведений ЗначенияХарактеристик. Ресурс входит в состав функциональной опции УчетХарактеристик. Рис. 81. Влияние функциональных опций на характеристики В случае отключения функциональной опции УчетХарактеристикв формах отключается видимость полей (колонка Значение и поле Значение), отображающих значения характеристик, как показано на рис. 81. 5.5.10.3. Общая схема работы Механизм функциональных опций включает в себя два типа объектов метаданных: Функциональная опция и Параметры функциональных опций. Функциональная опция представляет собой объект метаданных, который может непосредственно влиять на состав интерфейса приложения (если функциональная опция хранит свое значение в реквизите типа Булево). С помощью объектов этого типа можно скрыть элементы, которые относятся к недоступной функциональности. Например, опция Валютный учет может скрыть справочник Валюты, поле Валютаиз документов, колонку Валютная сумма из отчетов. Источником значения функциональной опции является объект метаданных, выбранный в качестве свойства Хранение, например, это может быть константа. В случае хранения значения функциональной опции в реквизите справочника или ресурсе регистра сведений требуется дополнительная информация, которая указывает на то, как именно выбрать значение опции. Для этой цели предусмотрен отдельный объект метаданных – Параметры функциональных опций. Можно сказать, что параметры функциональных опций являются осями координат пространства значений функциональных опций. Причем один параметр функциональных опций может определять значение «своей» оси координат одновременно для множества функциональных опций. Рис. 82. Параметризуемая функциональная опция Рассмотрим пример: допустим, суммовой учет зависит от склада, принадлежащего конкретной организации (см. рис. 82). В нашей информационной базе можно вести учет от имени разных организаций и на разных складах. Для хранения значений функциональных опций создадим регистр сведений, где измерениями (осями координат) будут: ● Организация(соответствующего типа); ● Склад(соответствующего типа). Ресурсом регистра сведений будет значение функциональной опции суммового учета. Тогда общая структура конфигурации будет выглядеть следующим образом: ● Регистр сведений СуммовойУчет: ● измерение Организация; ● измерение Склад; ● ресурс СуммовойУчет, имеющий тип Булево. ● Параметр функциональных опций Организация. Свойство Использованиеуказывает на измерение Организациярегистра сведений СуммовойУчет. ● Параметр функциональных опций Склад. Свойство Использованиеуказывает на измерение Складрегистра сведений СуммовойУчет. ● Функциональная опция СуммовойУчет. Свойство Хранениеуказывает на ресурс СуммовойУчетрегистра сведений СуммовойУчет. В результате для того, чтобы определить необходимость ведения суммового учета, нам необходимо в каждом конкретном случае указать значения параметров функциональных опций (Организацияи Склад) и получить значение функциональной опции. Так, в примере, показанном на рис. 82, для Организации 1 и Склада 1 суммовой учет разрешен, а для Организации 2 и Склада 1 суммовой учет запрещен. 5.5.10.4. Взаимодействие с другими объектами Функциональные опции могут быть назначены следующим объектам конфигурации: ● Подсистемы, ● Общие команды, ● Общие формы, ● Константы, ● Критерии отбора, ● Справочник, ● Документ, ● Журнал, ● План счетов, ● План видов характеристик, ● План видов расчета, ● Бизнес-процесс, ● Задача, ● Планы обмена, ● Отчет, ● Обработка, ● Регистр накопления, ● Регистр сведений, ● Регистр бухгалтерии, ● Регистр расчета, ● Команда, ● Реквизит объекта метаданных, ● Табличная часть, ● Реквизит табличной части, ● Признак учета, ● Признак учета субконто, ● Реквизиты адресации, ● Измерение регистра, ● Ресурс регистра. Также функциональные опции могут влиять на видимость элементов формы. 5.5.10.5. Создание 5.5.10.5.1. Создание функциональной опции Для того чтобы создать функциональную опцию, необходимо создать объект конфигурации Функциональная опция. Это можно сделать в режиме Конфигуратор обычным способом, то есть в окне конфигурации следует выбрать пункт Общие, далее Функциональные опции и добавить новый объект. Рис. 83. Создание функциональной опции В результате будет создан объект конфигурации Функциональная опция, который можно использовать для назначения функциональных опций другим объектам метаданных. Рис. 84. Хранение значения функциональной опции Кроме имени объект имеет обязательное для заполнения свойство – Хранение. В редакторе для него можно выбрать один из объектов, который будет являться источником значения опции. В список доступных объектов входят: ● константы, ● реквизиты справочников, ● ресурсы регистров сведений. Ограничение на тип источника значения опции нет, но для управления интерфейсом пригодны только те функциональные опции, которые хранят свои значения в реквизитах, имеющих тип Булево. Значения функциональных опций с другими типами доступны только для анализа на встроенном языке. Свойство Привилегированный режим при получении отвечает за способ получения (и кеширования) значения функциональной опции. Рис. 85. Привилегированный режим при получении значения функциональной опции Если данное свойство установлено, то значение функциональной опции получается в привилегированном режиме. Полученное значение кешируется для всех сеансов, связанных с данной информационной базой. Если свойство Привилегированный режим при получении сброшено, то получение значения функциональной опции выполняется в обычном режиме. Кеширование выполняется для текущего сеанса. Кешируется как значение (если его удалось получить), так и признак невозможности получения значения (в том случае, если значение получить не удалось). Кеш сбрасывается при изменении значений параметров сеанса. СОВЕТ. Рекомендуется устанавливать свойство Привилегированный режим при получении для всех случаев, когда значение функциональной опции не содержит конфиденциальную информацию. 5.5.10.5.2. Создание параметра функциональных опций Для того чтобы создать параметр функциональной опции, необходимо создать объект конфигурации Параметры функциональных опций. Это можно сделать в режиме Конфигуратор обычным способом, то есть в окне конфигурации следует выбрать пункт Общие, далее Параметры функциональных опций и добавить новый объект. Кроме имени, параметр имеет обязательное свойство Использование. В нем указывается набор объектов, значения которых будут определять то, как следует выбирать значение функциональной опции. В список доступных объектов входят справочники и измерения регистра сведений. Для каждого параметра функциональных опций в данном списке можно выбрать один справочник (из всего перечня справочников) и по одному измерению каждого регистра сведений. ВНИМАНИЕ! Нельзя использовать один и тот же объект метаданных в нескольких параметрах функциональных опций. 5.5.10.6. Использование 5.5.10.6.1. Назначение объектам метаданных Объект метаданных (например, справочник) можно отнести к одной или нескольким функциональным опциям. Для этого служит свойство Функциональные опции, которое содержит ссылки на созданные в конфигурации функциональные опции. Рис. 86. Назначение функциональной опции объекту Список доступных опций ограничен только теми опциями, для которых в свойстве Хранениеназначен объект с типом значения Булево. ВНИМАНИЕ! Если объекту не назначена ни одна функциональная опция, то он считается видимым всегда. В противном случае объект считается видимым, если хотя бы одна из назначенных ему функциональных опций является включенной (т. е. функциональные опции сочетаются «по ИЛИ»). 5.5.10.6.2. Назначение реквизитам и командам формы Объекты, принадлежащие форме (Реквизиты и Команды), также можно задействовать в механизме функциональных опций. Рис. 87. Назначение функциональной опции команде Сделать это можно в редакторе формы, установив свойство Функциональные опции для требуемого объекта. Состояние функциональных опций будет влиять на отображение объектов формы точно так же, как это происходит в случае объектов метаданных. Например, в случае с командой, отключенной с помощью функциональной опции, будут убраны все связанные с ней кнопки. Если реквизиту формы или команде не назначена ни одна функциональная опция, то реквизит формы или команда считается видимой всегда. В противном случае реквизит формы или команда считается видимой, если хотя бы одна из назначенных ему функциональных опций является включенной. 5.5.10.6.3. Использование в механизме ограничения доступа к данным В условиях механизма ограничения доступа к данным (см. здесь) Функциональные опции могут использоваться точно так же, как и Параметры сеанса (см. здесь). Допустимо использовать только не зависящие от параметров опции, то есть те, которые привязаны к константам. ВНИМАНИЕ! Системой контролируется уникальность имен между параметрами сеанса и функциональными опциями. 5.5.10.6.4. Определение значения функциональной опции Значение функциональной опции определяется объектом, который указан в свойстве Хранение. В случае константы используется ее значение. Для опции, связанной с реквизитом справочника или ресурсом регистра сведений, – значения, хранящиеся в этих объектах. Для того чтобы найти конкретный объект, который хранит значение функциональной опции, необходима дополнительная информация – набор значений параметров функциональных опций. Если опция хранится в реквизите справочника, параметр должен содержать ссылку на конкретный элемент справочника. Если опция хранится в ресурсе регистра сведений, должны быть указаны значения всех измерений регистра. В этом случае каждое измерение должно характеризоваться своим параметром. Если для функциональной опции, имеющей тип Булево, заданы не все параметры, то выполняется сложение «по ИЛИ» всех значений с незаданными параметрами. Например, если функциональная опция хранится в регистре сведений с измерениями Организацияи Склади задано только измерение Организация, то значение функциональной опции будет равно Истина, если хотя бы у одного из складов, перечисленных в измерении Склад, значение функциональной опции будет равно значению Истина. Для функциональной опции, имеющий тип, отличный от Булево,ситуация с не полностью заданными параметрами приводит к генерации исключения. Методы встроенного языка позволяют получить значение опции, как в зависимости от переданных параметров, так и для параметров, установленных для командного интерфейса или конкретной формы. Если функциональная опция привязана к ресурсу периодического регистра сведений, то система использует срез последних для получения значения опции. Если требуется получать значение опции на какую-либо другую дату, необходимо указать значение для параметра функциональных опций Период(Period), имеющий тип Дата, который будет использоваться как дата получения среза. Этот параметр не нужно создавать в метаданных. Он предоставляется системой автоматически. При использовании параметризованных функциональных опций следует учитывать следующие особенности поведения: ● В формах списков колонка реквизита, связанного с параметризованной функциональной опцией, будет отображаться, если в информационной базе хранится хотя бы одно включенное значение данной функциональной опции. ● Если необходимо, чтобы при открытии формы реквизиты, связанные с функциональными опциями, были отключены по умолчанию, то нужно установить значения этих параметров в значения, отсутствующие в информационной базе (для справочников – пустая ссылка, для регистров сведений – значения измерений, для которых нет записей). В этом случае функциональная опция будет иметь значение Ложь. ● В том случае, когда в качестве параметра указана ссылка на группу (если типа параметра функциональной опции допускает создание групп), а не ссылка на элемент, поведение системы будет следующим: ● если реквизит, в котором хранится значение функциональной опции, используется как для элемента, так и для группы, то значение функциональной опции будет определяться значением этого реквизита. ● если реквизит, в котором хранится значение функциональной опции, не используется для группы, то при получении значения функциональной опции c помощью методов ПолучитьФункциональнуюОпцию(), ПолучитьФункциональнуюОпциюФормы()и ПолучитьФункциональнуюОпциюИнтерфейса()будет возращено значение NULL. Если, параметризованная таким значением, функциональная опция оказывает влияние на пользовательский интерфейс, то система будет воспринимать ее как выключенную (функциональная опция будет иметь значение Ложь). ● Для командообразующих объектов метаданных возможно установить привязку к параметризованной функциональной опции. В командном интерфейсе команды таких объектов будут отображаться только в том случае, если есть хотя бы одна комбинация параметров функциональных опций, при которых значение функциональной опции равно Истина. Однако с помощью метода УстановитьПараметрыФункциональныхОпцийИнтерфейса()можно задать конкретные значения параметров функциональных опций, и тогда видимость команд будет определяться именно заданными параметрами. ● Динамический список автоматически использует функциональные опции, используемые формой. Если реквизиты, которые используются в запросе динамического списка, будут отключены при заданной комбинации параметров функциональных опций, данные по ним не будут выбраны и отображены в динамическом списке, а реквизит будет удален из списков доступных реквизитов в диалоге настройки отображения данных динамического списка (в режиме 1С:Предприятие). 5.5.10.7. Работа с функциональными опциями во встроенном языке Методы глобального контекста ПолучитьФункциональнуюОпцию()и ПолучитьФункциональнуюОпциюИнтерфейса() возвращают значение функциональной опции. Разница между ними заключается в том, что первый метод позволяет указать набор параметров функциональных опций, а второй – возвращает значение функциональной опции исходя из параметров, заданных для командного интерфейса. В форме есть свой метод, который возвращает значение опции для параметров, указанных в рамках формы, – ПолучитьФункциональнуюОпциюФормы(). Для обновления глобального командного интерфейса следует явным образом вызывать метод УстановитьПараметрыФункциональныхОпцийИнтерфейса(). Командный интерфейс будет обновлен с учетом нового состояния функциональных опций. ПРИМЕЧАНИЕ. Если значение функциональной опции изменяется в базе данных, то автоматического обновления глобального командного интерфейса и открытых в это время форм не происходит. Для этого следует использовать метод ОбновитьИнтерфейс()после записи значений функциональных опций в базу данных. Следует помнить, что установка параметров функциональных опций (и выполнение метода ОбновитьИнтерфейс()) приводит к следующим последствиям: ● для каждой формы вызывается закрытие всех вспомогательных форм (с вызовом соответствующих обработчиков); ● формы, отказавшиеся от закрытия, не закрываются; ● происходит обновление состава элементов основной формы; ● если на момент обновления интерфейса активной формой была основная, происходит отображение основной формы в соответствии с новым составом элементов; ● если на момент обновления интерфейса активной формой была вспомогательная форма, то: ● будет выполнена команда открытия вспомогательной формы, если после обновления интерфейса она является доступной; ● в противном случае обновляется состав элементов основной формы и выполняется ее отображение; ● если на момент обновления интерфейса активной формой была вспомогательная форма, открытая с помощью команды, не относящейся к панели навигации формы, то вместо этой формы будет обновлен состав элементов основной формы и выполнено ее отображение. Для того чтобы обновить конкретную форму, следует либо заново открыть ее, либо вызвать метод УстановитьПараметрыФункциональныхОпцийФормы(), при этом вышеописанная последовательность действий отрабатывает только для той формы, в контексте которой вызвана установка параметров функциональных опций формы. Параметры не обязательно указывать все сразу, можно изменить значение конкретного параметра или набора параметров выборочно. Но эффективнее осуществляется именно групповая установка значений одним вызовом. Для получения значений параметров необходимо вызвать соответствующую функцию (ПолучитьПараметрыФункциональныхОпцийИнтерфейса()или ПолучитьПараметрыФункциональныхОпцийФормы()), которая вернет установленные параметры в виде структуры, где ключом будет выступать имя параметра. При открытии форма автоматически использует параметры функциональных опций, установленных для командного интерфейса. 5.5.11. Определяемые типы Определяемый тип – это специальный объект конфигурации, который предназначен для определения типа данных, который описывает часто используемую сущность или с высокой степень вероятности может изменяться при внедрении прикладного решения. В качестве примера можно рассмотреть универсальную подсистему, предназначенную для хранения контактной информации. В состав этой подсистемы входит регистр сведений, который хранит эту информацию. В этом регистре есть измерение, которое указывает, для какого объекта хранится контактная информация. В качестве значения измерения может выступать контрагент, собственная организация, физическое лицо и т. д. Причем тип (с именем СправочникиОрганизацийИФизическихЛиц), описывающий этот объект хранения, может встречаться не только в качестве типа измерения регистра. В процессе внедрения прикладного решения состав такого типа может изменяться – в него могут добавляться новые справочники или из его состава могут исключаться «лишние» типы. Если вместо типа СправочникиОрганизацийИФизическихЛициспользовать составной тип в каждом месте, где используется такая сущность, то придется везде изменять состав типов. Это сложно и существует возможность забыть о каком-либо реквизите с нужным составным типом. Если использовать составной тип, то в процесс доработки прикладного решения будет необходимо изменить только определение составного типа (и, естественно, все фрагменты прикладного кода, где этот тип используется). Все реквизиты, для которых в качестве типа указан тип СправочникиОрганизацийИФизическихЛиц, будут изменены автоматически. Определяемый тип обладает следующими особенностями: ● Может быть составным; ● Не может входить в состав типа значения плана видов характеристик; ● Не может входить в состав составного типа данных другого реквизита. Для описания типа на строенном языке следует использовать конструкцию вида ОпределяемыйТип.<ИмяОпределяемогоТипа>. ПРИМЕЧАНИЕ. Если требуется использовать прикладное решение с младшими версиями системы «1С:Предприятие» (младше версии 8.3.3), то следует удалить из конфигурации все определяемые типы. 5.5.12. Хранилища настроек Для сохранения информации о настройках пользователя, которые должны сохраняться между сеансами работы, в платформе реализованы хранилища настроек. Существует два вида хранилищ настроек: ● Стандартное хранилище – хранилище, используемое системой по умолчанию и хранящее данные в системных таблицах информационной базы. ● Хранилища настроек – специальные объекты метаданных, которые описывают хранение данных в некотором объекте информационной базы. Например, в этом объекте может быть описана работа с настройками, которые хранятся в справочнике. Платформа использует следующие хранилища: ● Системное хранилище – в данное хранилище система сохраняет все возможные настройки, которые нужны для работы платформы. К данным настройкам относятся настройки размеров форм, настройки печати табличного документа и т. п. Полный перечень настроек, сохраняемых в системном хранилище, (см. стр. ) здесь. В качестве системного хранилища настроек всегда используется стандартное хранилище настроек. То есть данные системного хранилища всегда сохраняются в системной таблице информационной базы. ● Хранилище общих настроек – данное хранилище предназначено для хранения различных настроек прикладного решения. Платформа самостоятельно не записывает в данное хранилище никаких настроек. Данное хранилище должен использовать разработчик из встроенного языка, для того чтобы выполнять сохранение/восстановление прикладных настроек пользователя. ● Хранилище пользовательских настроек отчетов – в данное хранилище помещаются пользовательские настройки отчетов. ● Хранилище вариантов отчетов – в данное хранилище помещаются варианты отчетов. ● Хранилище настроек данных форм – в это хранилище сохраняются данные форм. Этим хранилищем можно пользоваться, например, для сохранения реквизитов обработок. При этом можно выбрать индивидуальное хранилище для каждого отчета и обработки. ● Хранилище пользовательских настроек динамического списка – в это хранилище сохраняются пользовательские настройки динамического списка. При разработке конфигурации имеется возможность определить собственные хранилища настроек для всех хранилищ, кроме системного хранилища. Для этого необходимо создать объект хранилища настроек в соответствующей ветке дерева метаданных и затем указать его в нужном свойстве конфигурации. Свойства объекта Конфигурация имеют те же имена, что и вышеперечисленные хранилища. Данные хранилищ могут храниться как в системной таблице информационной базы, так и в некотором специальном объекте информационной базы, например, в справочнике или регистре сведений. Например, можно создать в конфигурации объект хранилища настроек и указать в свойстве конфигурации, что данное хранилище следует использовать для хранения настроек отчетов. Таким образом, настройки отчетов будут сохраняться не в системной таблице, а в некотором объекте, например, в справочнике, что дает возможность организовать работу с едиными настройками отчетов, реализовать систему прав, обмен настройками и т. п. Создавать собственное хранилище имеет смысл в тех случаях, когда необходима особая структура хранения настроек, необходимы специальные механизмы управления настройками, требуется обмен настройками в рамках распределенной базы данных ((см. стр. ) здесь) и других аналогичных случаях. ПРИМЕЧАНИЕ. Для хранения настроек рекомендуется выбирать такие объекты, для которых системой поддерживается способ идентификации, при котором идентифицирующий реквизит можно преобразовать в строку и обратно без потери данных. В качестве примера можно привести справочник и стандартный реквизит Код, уникальный во всем справочнике. 5.5.12.1. Общие принципы работы хранилища настроек Объект метаданных ХранилищеНастроекпредназначен для обеспечения хранения прикладных настроек конфигурации. За счет реализации обработчиков событий и создания форм объекта выполняется модификация механизма работы с настройками таким образом, что изменяется место хранения настроек (вместо системных таблиц используются объекты конфигурации, которые создал разработчик) и визуальные механизмы работы с настройками. В конфигурации может быть определено произвольное количество хранилищ настроек. Хранилище настроек может использоваться как только для программной работы, так и для программной и интерактивной работы. В первом случае для обеспечения необходимой функциональности требуется обязательная реализация обработчиком модуля объекта ХранилищеНастроек: ● ОбработкаСохранения– содержит реализацию метода Сохранить(). В данном обработчике необходимо выполнить сохранение настройки в некоторый объект. Например, в элемент справочника. ● ОбработкаЗагрузки– содержит реализацию метода Загрузить(). В данном обработчике необходимо получить настройки из некоторого объекта. Например, из элемента справочника. ВНИМАНИЕ! Если не реализовать тот или иной обработчик, то будет недоступно выполнение действия, которое обработчик реализует. Например, если не реализовать обработчик ОбработкаСохранения, будет недоступно сохранение настроек. В процессе разработки хранилища разработчик самостоятельно определяет, каким образом будет идентифицироваться объект хранилища, тем самым определяя тип параметра. Например, если настройки сохраняются в справочнике, то в качестве ключа настройки можно использовать поле Кодили значение Ссылка (элемента справочника). Если для работы с настройками требуется интерактивность (формы сохранения и восстановления настроек), то необходимо реализовать формы сохранения и восстановления настроек и заполнить соответствующие свойства объекта ХранилищеНастроек(Форма сохранения и Форма загрузки). ВНИМАНИЕ! Реализация форм сохранения и восстановления настроек является обязательной для выполнения интерактивных операций. Программное сохранение и восстановление настроек возможно и без реализации этих форм. Когда пользователь применяет команды сохранения или загрузки настроек, система получает соответствующую форму объекта хранилища настроек и отображает ее на экране. Например, при сохранении настроек отчета система будет использовать форму сохранения того объекта метаданных, который указан в качестве хранилища настроек отчетов (непосредственно у самого отчета или у всей конфигурации). При этом форме будут переданы параметры, более подробную информацию о которых можно получить в описании объекта ОписаниеНастроекв синтакс-помощнике. При создании формы с помощью конструктора необходимые параметры будут автоматически добавлены в список параметров формы. В формах следует использовать переданные параметры и соответствующим образом фильтровать список настроек. Так, следует отображать только настройки для указанного в параметре КлючОбъектаобъекта настройки (например, отчета). Если пользователь выбрал настройку, то результатом работы формы должно быть значение типа ВыборНастроек. В этом значении, в свойстве КлючНастроек, должен находиться ключ выбранной настройки (например, код элемента справочника или другой, идентифицирующий настройку параметр), а в свойстве ДополнительныеСвойства– дополнительная информация, которую пользователь мог указать в форме: Закрыть(Новый ВыборНастроек(КлючСохраняемойНастройки)); ВНИМАНИЕ! Не поддерживается сохранение настройки в стандартном хранилище настроек, если длина ключа объекта превышает 256 символов; длина ключа настроек превышает 128 символов; длина имени пользователя превышает 64 символа. 5.5.12.2. Создание объекта метаданных Для создания Хранилища настроек следует создать одноименный объект конфигурации. Это можно сделать в ветке Общие, пункт Хранилища настроек. Рис. 88. Создание хранилища настроек 5.5.12.3. Стандартное хранилище настроек Стандартное хранилище настроек представляется во встроенном языке объектом СтандартноеХранилищеНастроекМенеджер. Данный объект реализует тот же набор методов, что и объект ХранилищеНастроекМенеджер, и дополнительно реализует методы: ● ПолучитьСписок()– метод получения списка настроек для выбранного объекта настройки; ● Удалить()– удаление определенной настройки выбранного объекта настройки. Стандартное хранилище сохраняет настройки в системных таблицах информационной базы. В качестве ключа объекта настройки и в качестве ключа настройки системное хранилище настроек принимает строку. В качестве настроек системное хранилище принимает любое значение, которое может быть помещено в хранилище значений. ПРИМЕЧАНИЕ. При использовании методов Сохранить(), Удалить()и УстановитьОписание()объекта СтандартноеХранилищеНастроекМенеджерследует учитывать, что если объект, к которому относятся настройки (например, форма), в текущем сеансе уже использовался, то изменения произойдут только в следующем сеансе. СОВЕТ. При существенном программном изменении настроек (например, при копировании настроек от одного пользователя другому) рекомендуется предложить пользователю выполнить перезапуск клиентского приложения. 5.5.12.4. Сохранение настроек форм Разработчик может управлять сохранением данных форм в настройках. Для этого при разработке формы ему необходимо воспользоваться следующими свойствами формы: ● Сохранение данных формы в настройках – при помощи данного свойства разработчик формы может включить возможность сохранения данных формы (с возможностью выбора настройки, в которую будут сохраняться данные). Если у формы включена необходимость сохранения, то форма предоставляет команды сохранения/загрузки настроек. ● Автоматическое сохранение данных в настройках – указывает необходимость автоматического сохранения настроек при закрытии формы и восстановлении при открытии формы. При этом не важно, используется или нет список настроек. Если для формы установлена возможность сохранения данных, то необходимо указать, какие реквизиты формы должны сохраняться (колонка Сохранение на закладке Реквизиты редактора формы). При сохранении настроек в качестве ключа объекта используется полное имя формы. В настройках сохраняется объект типа Соответствие, в котором в качестве ключей находятся пути к сохраняемым реквизитам, а в качестве значений – их (реквизитов) значения. 5.5.12.5. Сохранение настроек отчетов У объектов Отчет и Внешний отчет имеются свойства метаданных Хранилище вариантов и Хранилище настроек. В данных свойствах указывается, в какие хранилища нужно сохранять варианты и настройки отчета соответственно. Если хранилища не указаны, то используются хранилища, указанные в свойствах конфигурации. Если в свойствах конфигурации также не указаны конкретные объекты ХранилищеНастроек, то используется системное хранилище. Форма отчета предоставляет команды сохранения и загрузки вариантов и настроек отчетов. При необходимости сохранять в настройках компоновки данных или пользовательских настройках компоновки данных некоторую дополнительную информацию можно воспользоваться свойствами ДополнительныеСвойства объектов НастройкиКомпоновкиДанныхи ПользовательскиеНастройкиКомпоновкиДанных. Свойство ДополнительныеСвойствапредставляет собой объект типа Структура. 5.5.12.6. Сохранение настроек динамических списков Пользовательские настройки динамических списков сохраняются в хранилище, которое указано в свойствах конфигурации (ХранилищеПользовательскихНастроекДинамическихСписков). Если в свойствах конфигурации не указано хранилище настроек, то используется системное хранилище. Возможностью автоматического сохранения пользовательских настроек динамического списка управляет свойство Автоматическое сохранение пользовательских настроек реквизита формы типа ДинамическийСписок. Когда свойство установлено в значение Истина, пользовательские настройки автоматически сохраняются при закрытии формы и загружаются при ее открытии. Форма динамического списка предоставляет команды сохранения и загрузки пользовательских настроек. Также динамический список предоставляет команду для установки стандартных настроек. В случае выполнения данной команды в динамический список попадут настройки, которые находятся в свойстве Список.КомпоновщикНастроек.Настройки. Для динамического списка возможен вызов события ПриОбновленииСоставаПользовательскихНастроекНаСерверев следующих случаях: ● При открытии формы динамического списка; ● После завершения редактирования пользовательских настроек, если изменился состав настроек. 5.5.12.7. Порядок разработки хранилища настроек Далее приводится рекомендованный порядок разработки хранилищ настроек: 1. Определяется, какое хранилище (см. начало раздела) будет использоваться. Например, будет реализовано хранилище настроек данных форм конфигурации. 2. Определяется перечень объектов метаданных, которые будут использовать это хранилище, и определяется перечень хранимой в хранилище информации, ее структура и типы. Эта информация поможет нам правильно выбрать объект метаданных, в данных которого будут храниться наши настройки. 3. На основании информации из п. 2 создается объект (и его структура), который будет хранить настройки. Пусть наши настройки хранятся в элементах справочника. Так как в нашем случае структура сохраняемых данных крайне разнородна, то нет смысла реализовывать отдельный набор реквизитов для хранения настроек каждой формы. Поэтому настройки будут храниться в реквизите справочника типа ХранилищеЗначения. 4. Создается объект типа ХранилищеНастроек, и для него выполняется реализация форм сохранения и загрузки. Тем самым обеспечивается интерактивность при сохранении и восстановлении настроек. 5. Для созданного объекта ХранилищеНастроеквыполняется реализация обработчиков событий, связанных с сохранением и восстановлением настроек. Если не выполнить эту операцию, то не будут происходить собственно операции чтения/записи настроек. Для решения этой задачи нужно реализовать обработчики событий ОбработкаСохраненияи ОбработкаЗагрузкив модуле созданного объекта типа ХранилищеНастроек. 6. В объектах, выделенных в п. 2 (или в свойствах конфигурации), заполняются соответствующие свойства, тем самым указывая объектам, в каких хранилищах будут храниться настройки. В нашем примере необходимо заполнить свойство конфигурации Хранилище настроек данных форм ссылкой на объект, созданный на шаге 4. 7. При необходимости выполняется реализация обработчиков событий, связанных с сохранением и восстановлением настроек в тех прикладных объектах, где это необходимо. 5.5.12.8. Работа с хранилищем настроек из встроенного языка В данном примере рассматривается копирование настроек текущего пользователя другим пользователям системы. В качестве источника настроек используется ХранилищеСистемныхНастроек. ПРИМЕЧАНИЕ. Пример, приведенный ниже, не является законченным. Он предназначен для демонстрации работы с стандартным хранилищем настроек. Список имен пользователей передается параметром процедуры СкопироватьНастройки()в виде массива. Процедура СкопироватьНастройки(СписокПользователей) ОписаниеНастроек = Новый ОписаниеНастроек; ВыборкаНастроек = ХранилищеСистемныхНастроек.Выбрать(); Пока ВыборкаНастроек.Следующий() Цикл Для каждого Пользователь Из СписокПользователей Цикл ОписаниеНастроек.Представление = ВыборкаНастроек.Представление; ХранилищеНастроек.Сохранить(ВыборкаНастроек.КлючОбъекта, ВыборкаНастроек.КлючНастроек, ВыборкаНастроек.Настройки, ОписаниеНастроек, Пользователь); КонецЦикла; КонецЦикла; КонецПроцедуры 5.5.13. Общие формы Механизм общих форм позволяет использовать формы, доступные из любого модуля текущей конфигурации. Подробно о порядке работы с редактором форм см. здесь. Если необходимо разместить команду открытия общей формы в командном интерфейсе, то сделать это можно с помощью свойства Использовать стандартные команды. Команда открытия общей формы будет размещена в командном интерфейсе тех подсистем, которым принадлежит общая форма. Если общая форма входит в состав функциональной опции и функциональная опция отключена, то стандартная команда общей формы не отображается в командном интерфейсе. Если создается общая форма, которая будет использоваться в качестве формы отчета, настроек отчета или варианта, то не рекомендуется для такой формы устанавливать свойство Использовать стандартные команды. 5.5.14. Общие команды В данной ветке разработчик может создавать команды, не имеющие объектной специфики или служащие для выполнения действий с объектами, которые не используют стандартные команды. Описание командного интерфейса см. здесь. Описание команд см. здесь. 5.5.15. Группы команд В данной ветке разработчик может создавать собственные группы команд. Созданная группа будет размещаться в той части командного интерфейса, который определен свойством команды Категория. Группа команд может быть размещена: ● в панели навигации, ● панели навигации формы, ● панели действий, ● командной панели формы. Описание командного интерфейса см. здесь. Описание команд см. здесь. 5.5.16. Общие макеты Механизм общих макетов (печатных форм, форм отчетов, справочных данных и т. д.) позволяет создавать шаблоны печатных форм, доступные из любого модуля текущей конфигурации. Подробно о порядке работы с редактором табличных документов см. здесь. 5.5.17. Общие картинки Конфигуратор позволяет включать в конфигурацию графические изображения – картинки. Картинки можно размещать в некоторых элементах управления, в формах, в макетах, а также обращаться к ним при помощи встроенного языка системы «1С:Предприятие». Если картинку планируется использовать в качестве пиктограммы в меню, панели инструментов, табличном документе и т. п., важно задать ей правильный размер, чтобы она отображалась без искажений. Рекомендуемый размер картинок: ● для пиктограмм – не более 16x16 точек; ● для использования в табличном поле – не более 14x14 точек; ● в качестве картинки кнопки выбора поля редактирования – не более 9x9 точек; ● для картинки, которая будет использована в качестве представления подсистемы, – не более 48x48 точек. СОВЕТ. Если картинку предполагается использовать в нескольких местах, ее размер разумно ограничить меньшим значением. Для работы с картинками предназначено окно Библиотека картинок. Для его вызова в окне Конфигурация нужно указать ветвь Общие картинки и в контекстном меню выбрать пункт Все картинки. На экран выводится окно ведения списка картинок (см. рис. 89). Рис. 89. Библиотека картинок Для добавления новой картинки следует нажать кнопку Добавить. На экран выводится окно, в котором можно выбрать картинку из файла или открыть редактор картинок и создать новую картинку, а также выбрать или изменить для картинки прозрачный фон. Для выбора готовой картинки нужно нажать кнопку Выбрать из файла и выбрать файл, в котором расположена подготовленная заранее картинка. Система «1С:Предприятие» позволяет использовать картинки форматов bmp, gif, jpg, png, tiff, ico и метафайлы (wmf, emf). СОВЕТ. Для картинок, которые будут использоваться в качестве пиктограмм в интерфейсе (см. рекомендованные размеры картинок в начале раздела), рекомендуется использовать форматы, поддерживающие сжатие без потерь (png и gif), для того чтобы избежать искажения и минимизировать трафик между клиентом и сервером. Нужно задать имя, по которому данная картинка будет выбираться средствами встроенного языка. Рис. 90. Свойства картинки Чтобы картинка при вставке хорошо вписывалась в элемент управления или форму, желательно установить ей прозрачный фон. Для этого в качестве цвета фона при редактировании картинки достаточно выбрать любой не используемый в картинке цвет, сформировать изображение и сохранить картинку. Для существующей картинки можно указать любой цвет. Благодаря установленной прозрачности данного цвета сквозь него становятся видны детали той части формы, которую закрывает область картинки. Для установки прозрачного фона нужно нажать кнопку Установить прозрачный фон. Указатель мыши изменит вид. Подвести курсор к той части картинки, цвет которой нужно сделать прозрачным, и щелкнуть левой кнопкой мыши. Выбранный цвет становится прозрачным. Для снятия прозрачности следует нажать кнопку Убрать прозрачность. Кнопки Установить прозрачный фон и Убрать прозрачность доступны только для картинок форматов bmp, jpg и tiff. Для картинок в остальных форматах данные кнопки недоступны. Подобные действия можно выполнить с помощью ссылки Открыть в свойстве Картинка. На экран выводится окно выбора картинки. Рис. 91. Выбор картинки Для редактирования картинки нужно нажать кнопку Редактировать. Запускается редактор картинок (подробнее см. здесь). 5.5.18. XDTO-пакеты Механизм XDTO является универсальным способом представления данных для взаимодействия с различными внешними источниками данных и программными системами. Подробнее об использовании механизма XDTO см. здесь. 5.5.18.1. Импорт схемы XML в глобальную фабрику XDTO Для того чтобы импортировать схему XML из файла .xsd в глобальную фабрику XDTO, следует выделить в дереве конфигурации ветку XDTO и выполнить команду контекстного меню Импорт XML-схемы... Рис. 92. Импорт XML-схемы После указания требуемого файла .xsd будет выполнена проверка существования в дереве конфигурации пакетов XDTO, пространства имен которых совпадают с импортируемыми из файла. Если такие пакеты существуют, то будет отображен список этих пакетов и предложено указать те пакеты, которые должны быть обновлены (по умолчанию существующие пакеты не обновляются). Рис. 93. Выбор пространств имен После этого будет выполнен импорт, в результате которого новые пакеты XDTO будут добавлены в дерево конфигурации, а пакеты, отмеченные для обновления, обновлены. 5.5.18.2. Экспорт схемы XML-данных конфигурации Для того чтобы экспортировать схему XML, соответствующую типам данных конфигурации (без учета пакетов XDTO, созданных в дереве конфигурации), в файл .xsd, следует выделить в дереве конфигурации ветку XDTO и выполнить команду контекстного меню Экспорт XML-схемы данных конфигурации... Рис. 94. Экспорт схемы конфигурации После выбора каталога и указания имени файла будет выполнен экспорт схемы XML в указанный файл. 5.5.18.3. Экспорт схемы XML-пакета XDTO Для того чтобы экспортировать схему XML, соответствующую существующему пакету XDTO, в файл .xsd, следует выделить в дереве конфигурации требуемый пакет XDTO и выполнить команду контекстного меню Экспорт XML-схемы... Рис. 95. Экспорт XML-схемы пакета XDTO После этого будет выполнена проверка выгружаемого пакета XDTO. Если будут обнаружены ошибки, соответствующие сообщения будут выведены в окно сообщений, а процедура экспорта будет прервана. В случае успешной проверки будет предложено выбрать каталог и имя файла .xsd, после чего схема XML будет экспортирована в указанный файл. 5.5.18.4. Проверка пакета XDTO Для того чтобы проверить пакет XDTO, следует выделить в дереве конфигурации требуемый пакет XDTO и выполнить команду контекстного меню Проверить пакет. В результате будет выполнена проверка модели пакета XDTO (описание правил проверки см. здесь). Если будут обнаружены ошибки, соответствующие сообщения будут выведены в окно сообщений. 5.5.18.5. Окно редактирования пакета XDTO Редактирование пакета XDTO выполняется в окне редактирования пакета XDTO. Рис. 96. Окно редактирования пакета XDTO При добавлении нового пакета XDTO в дерево конфигурации окно редактирования пакета XDTO открывается автоматически. Для того чтобы открыть окно редактирования для существующего пакета XDTO, следует выделить в дереве конфигурации требуемый пакет XDTO и выполнить команду контекстного меню Открыть пакет. 5.5.18.5.1. Иерархическая структура пакета XDTO Окно редактирования пакета XDTO содержит иерархическую структуру пакета XDTO, отображенную в виде дерева. В корне дерева расположен идентификатор пакета XDTO, содержащий URI пространства имен данного пакета. На первом уровне иерархии могут располагаться следующие элементы пакета: ● Директивы импорта – перечень директив импорта. Каждая директива импорта представляет собой ссылку на другой пакет, содержащий типы, на которые так или иначе ссылается данный пакет. При работе с данным пакетом XDTO средствами встроенного языка данный перечень директив импорта будет доступен в виде объекта КоллекцияПакетовXDTO, содержащегося в свойстве Зависимости пакета XDTO. ● Типы значений – перечень типов значений XDTO, которые содержит пакет XDTO. ● Типы объектов – перечень типов объектов XDTO, которые содержит пакет XDTO. ● Свойства – перечень свойств пакета XDTO. Представляет собой объявления объектов/значений, которые могут являться корневыми элементами документов XML, принадлежащих URI пространству имен данного пакета XDTO. ● Каждый тип значения XDTO описывается иерархической структурой и может содержать в своем составе следующие элементы: ● Образец – описывает один фасет XDTO типа Образец. ● Перечисление – описывает один фасет XDTO типа Перечисление. Каждый тип объекта XDTO описывается иерархической структурой, которая может содержать в своем составе набор свойств объекта. 5.5.18.5.2. Свойства пакета XDTO Редактирование свойств пакета XDTO выполняется в палитре свойств. Если палитра свойств открыта для пакета XDTO, выделенного в дереве конфигурации, то в ней будут содержаться следующие свойства: Имя, Синоним, Комментарий, Подсистемы и URI пространства имен. Кроме этого, палитра свойств будет содержать ссылку Пакет, по которой можно перейти в окно редактирования пакета XDTO. Рис. 97. Свойства пакета XDTO Если палитра свойств открыта для пакета XDTO, выделенного в окне редактирования пакета XDTO (корневой элемент), то она содержит единственное свойство – URI пространства имен. Это свойство задает URI пространства имен пакета XDTO, к которому принадлежат все определенные в этом пакете типы. 5.5.18.5.3. Свойства директивы импорта Редактирование свойств директивы импорта выполняется в палитре свойств. Для директивы импорта палитра свойств содержит единственное свойство – Пространство имен. Это свойство задает URI пространства имен импортируемого пакета. Рис. 98. Свойства директивы импорта 5.5.18.5.4. Свойства типа значения XDTO Редактирование свойств типа значения XDTO выполняется в палитре свойств. Рис. 99. Свойства значения XDTO Для типа значения XDTO палитра свойств содержит следующие свойства: ● Имя – имя типа значения XDTO. ● Базовый тип – базовый тип для данного типа значения XDTO. ● Вариант – вариант простого типа (атомарный тип, список, объединение). Если значение установлено, то должно не противоречить значениям Тип элемента и Типы объединения. ● Тип элемента – тип элемента списка в случае, когда тип значения XDTO определяется списком. При этом все фасеты и свойство Типы подчиненных должны быть пустыми. ● Типы объединения – список типов, образующих объединение в случае, когда тип значения XDTO определяется объединением. Объединяться могут только типы значений XDTO. При этом все фасеты и свойство Тип элемента должны быть пустыми. ● Длина – фасет длины. ● Минимальная длина – фасет минимальной длины. ● Максимальная длина – фасет максимальной длины. ● Пробельные символы – фасет пробельного символа. ● Минимум, включающий границу – фасет минимума, включающего границу. ● Минимум, не включающий границу – фасет минимума, не включающего границу. ● Максимум, включающий границу – фасет максимума, включающего границу. ● Максимум, не включающий границу – фасет максимума, не включающего границу. ● Общее количество цифр – фасет общего количества цифр. ● Количество цифр дробной части – фасет количества цифр дробной части. 5.5.18.5.5. Свойства типа объекта XDTO Редактирование свойств типа объекта XDTO выполняется в палитре свойств. Рис. 100. Свойства объекта XDTO Для типа объекта XDTO палитра свойств содержит следующие свойства: ● Имя – имя типа объекта XDTO. ● Базовый тип – базовый тип для данного типа объекта XDTO. Это может быть только тип объекта XDTO. ● Открытый – признак, является ли тип объекта XDTO открытым. Данное свойство показывает, может ли экземпляр объекта XDTO содержать дополнительные свойства, не определенные в его типе. ● Абстрактный – признак, является ли тип объекта XDTO абстрактным. ● Смешанный – свойство показывает, имеет ли соответствующий объект XDTO смешанное содержание. Если значение свойства Смешанный равно Истина, то значение Последовательный обязательно равно Истина, так как смешанное содержание невозможно смоделировать без применения последовательности XDTO. ● Упорядоченный – признак, является ли порядок следования элементов, представляющих значения свойств, строго соответствующим порядку следования свойств в типе объекта XDTO. Если свойство Упорядоченный имеет значение Ложь, то на входе порядок следования элементов XML не контролируется, а на выходе определяется порядком следования свойств, если только свойство Последовательный не имеет значение Истина. ● Последовательный – это свойство показывает, содержит ли экземпляр соответствующего объекта XDTO последовательность XDTO. Данный признак равен значению Истинав тех случаях, когда порядок следования вложенных элементов XML не может однозначно определяться порядком следования свойств в типе или соответствующий объект XDTO имеет смешанное содержание. Последовательность XDTO позволяет задать в явном виде порядок следования элементов, как они будут представлены в документе XML. Для объектов типов, у которых свойство Последовательный установлено в значение Ложь, порядок следования вложенных элементов соответствует порядку следования свойств. 5.5.18.5.6. Свойства свойств типа объекта XDTO Редактирование свойства свойств типа объекта XDTO выполняется в палитре свойств. Рис. 101. Палитра свойств типа XDTO Для типа объекта XDTO палитра свойств содержит следующие свойства: ● Имя – имя свойства. В пределах одного типа объекта XDTO имена свойств должны быть уникальными. ● Тип – тип свойства. Может быть как типом значения XDTO, так и типом объекта XDTO. ● Минимальное количество – минимальное количество значений свойства. Минимальное количество значений свойства может принимать значения >= 0. Естественно, значение Минимальное количество должно быть меньше или равно значению Максимальное количество (если, конечно, Максимальное количество не равно -1); ● Максимальное количество – свойство типа объекта XDTO может быть определено как содержащее одно или множество значений. Свойство считается содержащим одно значение, если свойство Максимальное количество равно 1. Если же свойство Максимальное количество больше 1, то считается, что свойство может содержать множество значений. Такое свойство в структуре объекта моделируется как список. Свойство Максимальное количество показывает максимальное количество значений свойства. Максимальное количество > 1 может быть задано только для свойств, представляемых в виде элемента XML. ● Возможно пустое – показывает, может ли свойство принимать неопределенное значение. Свойство Возможно пустое, равное Истина, может быть определено только для свойств с формой представления Элемент. Если Максимальное количество > 1, неопределенное значение является допустимым для элемента списка значений свойства. ● Фиксированное – указывает, является ли значение свойства фиксированным. Если установлено в значение Истина, то само фиксированное значение можно получить через свойство По умолчанию. ● По умолчанию – значение свойства по умолчанию. Тип значения по умолчанию может быть только типом значения XDTO. При этом данное значение должно быть совместимо с типом свойства (быть того же типа, что и тип свойства или же унаследованного типа). При создании объекта XDTO свойство, если оно допускает единственное значение, принимает значение по умолчанию. Для свойств с множеством значений список значений изначально пуст, независимо от того, определено или нет значение по умолчанию. ● Форма – форма представления свойства в XML. Это может быть Текст, Элемент или Атрибут. Если формой представления является Атрибут или Текст, то значение свойства Максимальное количество не может быть больше 1. Если свойство принимает значение Текст, то значение свойства Минимальное количество также должно быть равным 1. У одного типа только одно свойство может иметь форму представления Текст, при этом остальные свойства должны иметь форму представления Атрибут. ● Локальное имя – локальное имя, используемое для представления свойства. Для свойств с формой представления Текст – пустая строка. 5.5.18.5.7. Глобальное свойство Редактирование свойств глобального свойства выполняется в палитре свойств. Рис. 102. Палитра свойств глобального свойства Для глобального свойства палитра свойств содержит следующие свойства: ● Имя – имя глобального свойства. В пределах одного типа объекта XDTO имена глобальных свойств должны быть уникальными. ● Ссылка – ссылка на корневое определение свойства пакета. ● Тип – тип глобального свойства. ● Минимальное количество – минимальное количество значений свойства. Если Минимальное количество = 0, то значение свойства может быть не установлено. ● Максимальное количество – максимальное количество значений свойства. Если Максимальное количество равно -1, то количество значений свойства неограниченно. ● Возможно пустое – показывает, может ли свойство принимать неопределенное значение. ● Фиксированное – указывает, является ли значение свойства фиксированным. ● По умолчанию – значение свойства по умолчанию. Лексическое представление значения свойства должно соответствовать правилам проверки типа данного свойства. ● Форма – форма представления свойства в XML. Это может быть Текст, Элемент или Атрибут. ● Локальное имя – локальное имя, используемое для представления свойства. 5.5.19. Web-сервисы Механизм Web-сервисов позволяет использовать «1С:Предприятие» как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать «1С:Предприятие» с другими промышленными системами использованием сервисно-ориентированной архитектуры. Подробнее об использовании механизма Web-сервисов см. здесь. 5.5.19.1. Добавление Web-сервиса Для того чтобы добавить Web-сервис в дерево конфигурации, следует выделить ветку Общие – Web-сервисы и выполнить команду контекстного меню Добавить. В результате выполнения команды будет открыто окно редактирования Web-сервиса (см. здесь). На закладке Прочее окна редактирования Web-сервиса следует установить следующие параметры: ● URI пространства имен – содержит URI пространства имен Web-сервиса. Каждый Web-сервис может быть однозначно идентифицирован по своему имени и URI пространству имен, которому он принадлежит. ● Пакеты XDTO – перечень пакетов XDTO, типы которых могут использоваться в качестве типов возвращаемого значения операций и типов параметров операций Web-сервиса. ● Имя файла публикаций – имя файла описания Web-сервиса, который расположен на веб-сервере (о публикации Web-сервисов см. книгу «1С:Предприятие 8.3. Руководство администратора»). Для получения доступа к Web-сервису необходимо использовать адрес, который формируется следующим образом: <Имя хоста веб-сервера>/<Имя виртуального каталога>/ws/<Имя Web-сервиса> или <Имя хоста вебсервера>/<Имя виртуального каталога>/ws/<Адрес Web-сервиса>. Так, если виртуальный каталог имеет имя DemoWS, имя Web-сервиса в конфигураторе указано как ДемонстрацияРаботыWS, а в качестве адреса указано DemoWorkWS, то обращение к Web-сервису можно выполнять одновременно по двум адресам (для получения доступа с локальной машины): http://localhost/DemoWS/ws/ДемонстрацияРаботыWS или http://localhost/DemoWS/ws/DemoWorkWS. Кроме этого, на закладке содержится кнопка Модуль, которая позволяет открыть для редактирования модуль Web-сервиса. 5.5.19.2. Иерархическая структура Web-сервиса Каждый Web-сервис, описываемый в дереве конфигурации, может содержать набор операций. Каждой операции должна соответствовать экспортируемая процедура, описанная в модуле Web-сервиса. Рис. 103. Описание Web-сервиса В свою очередь, каждая операция может содержать набор параметров, имена которых должны соответствовать именам параметров процедуры, описывающей данную операцию. 5.5.19.3. Операции Web-сервиса На закладке Операции выполняется добавление операции Web-сервиса. Редактирование свойств операции выполняется в палитре свойств. Рис. 104. Свойство операции Web-сервиса Тип возвращаемого значения – тип значения, которое возвращает операция Web-сервиса. Может являться типом значения XDTO или типом объекта XDTO. Возможно пустое значение – показывает, может ли возвращаемое значение принимать неопределенное значение. В транзакции – показывает, будет ли выполняться код модуля Web-сервиса в транзакции или нет. Если свойство установлено, то при вызове Web-сервиса автоматически будет начата транзакция, а при завершении транзакция будет либо зафиксирована, либо произойдет откат транзакции (в зависимости от результатов выполнения). Если свойство не установлено, при начале исполнения модуля Web-сервиса транзакция начата не будет. Имя процедуры – имя процедуры модуля Web-сервиса, которая будет выполнена при вызове данного свойства. 5.5.19.4. Параметры операции На закладке Операции для указанной операции нужно осуществить задание параметров операции Web-сервиса. Редактирование свойств параметра выполняется в палитре свойств. Рис. 105. Свойства параметра операции Тип значения – тип значения параметра операции Web-сервиса. Может являться типом значения XDTO или типом объекта XDTO. Возможно пустое значение – показывает, может ли значение параметра операции принимать неопределенное значение. Направление передачи – определяет направление передачи данных с помощью данного параметра. Возможные значения: ● Входной – означает, что параметр может использоваться только для передачи данных Web-сервису. ● Выходной – означает, что параметр может использоваться как для передачи данных, так и для их получения от Web-сервиса. 5.5.19.5. Указание типов, определяемых системой Чтобы в Web-сервисе воспользоваться типами, определяемыми системой «1С:Предприятие» (например, в параметрах и возвращаемом значении операций), нужно в конфигурации определить пакеты XDTO и для каждого пакета указать в его списке импортируемых пакетов (свойство Директивы импорта) набор пакетов платформы, в которые эти типы входят. URI пространства имен для указания типа содержится в статье синтакспомощника по объекту данного типа. 5.5.19.6. Публикация Web-сервисов Публикация Web-сервисов описывается в книге «1С:Предприятие 8.3. Руководство администратора». 5.5.20. WS-ссылки Система «1С:Предприятие» может использовать веб-сервисы, предоставляемые другими поставщиками, с помощью статических ссылок, создаваемых в дереве конфигурации. 5.5.20.1. Добавление WS-ссылки Для того чтобы добавить статическую ссылку на внешний веб-сервис в дерево конфигурации, следует выделить ветку WS-ссылки и выполнить команду контекстного меню Добавить или соответствующую команду меню Действия. Рис. 106. Добавление WS-ссылки В открывшемся окне следует ввести URL описания добавляемого веб-сервиса, например: http://users.v8.1c.ru/ws/products.1cws?wsdl. ПРИМЕЧАНИЕ. При добавлении WS-ссылки следует помнить, что «1С:Предприятие» удаляет из введенного URL завершающий символ «/», в силу чего URL http://localhost/ws/ws-service/?wsdl и URL http://localhost/ws/wsservice?wsdl с точки зрения «1С:Предприятия» будут считаться идентичными. 5.5.20.2. Иерархическая структура WS-ссылки Просмотр иерархической структуры WS-ссылки выполняется в окне просмотра WS-ссылки. Значения свойств элементов ссылки можно просмотреть в палитре свойств. Для того чтобы открыть окно просмотра WS-ссылки, следует выделить в дереве конфигурации требуемую WSссылку и выполнить команду контекстного меню Свойства. После этого в палитре свойств воспользоваться ссылкой WS-ссылка, которая открывает окно просмотра WS-ссылки. Рис. 107. WS-ссылка Окно просмотра содержит иерархическую структуру WS-ссылки, отображенную в виде дерева. На первом уровне иерархии могут располагаться: ● Модель данных – содержит перечень пакетов XDTO, описывающих структуру типов, используемую вебсервисами, на которые ссылается данная WS-ссылка. ● Web-сервисы – перечень Web-сервисов, на которые ссылается данная ссылка. Просмотр структуры и свойств модели данных выполняется аналогично работе с пакетами XDTO (см. здесь), за исключением того, что редактирование свойств пакетов, отображаемых в окне просмотра WS-ссылки, невозможно. Просмотр структуры WS-ссылки выполняется аналогично работе с Web-сервисами, за исключением того, что для каждого Web-сервиса отображаются поддерживаемые точки подключения Web-сервиса, для которых, в свою очередь, отображается список операций и параметров каждой операции. Рис. 108. Структура Web-сервиса Различные точки подключения Web-сервиса позволяют выполнять операции, используя различные протоколы. 5.5.21. Элементы стиля Объекты конфигурации Элементы стиля предназначены для единообразного оформления различных элементов формы в тех случаях, когда недостаточно того оформления, которое автоматически предлагает «1С:Предприятие». Например, требуется цвет каких-либо надписей в формах конфигурации сделать одинаковым. В этом случае логично создать элемент стиля, задать ему цвет и использовать созданный элемент для установки цвета текста элемента формы. Рис. 109. Использование элемента стиля Элементы стиля могут быть трех разных видов: ● Цвет, ● Шрифт, ● Рамка. ПРИМЕЧАНИЕ. Системные элементы стиля недоступны для выбора в качестве значений пользовательских элементов стиля. В диалоге выбора шрифта в тонком клиенте в списке шрифтов присутствуют шрифты, установленные на текущем компьютере, и перечень специальных шрифтов, заключенных в угловые скобки (<>). Если выбран шрифт <Шрифт текста>, то будет использоваться шрифт интерфейса «1С:Предприятия», остальные шрифты соответствуют соответствующим шрифтам операционной системы. В начале списка размеров шрифта <Шрифт текста> присутствует элемент <>. Выбор этого размера шрифта (его значение равно 0) означает, что будет использован размер шрифта интерфейса «1С:Предприятия». Начертание шрифта (жирный, наклонный и т. д.) по умолчанию берется из стиля, но может быть изменено пользователем без каких-либо ограничений. При выборе другого шрифта внесенные пользователем изменения размера или начертания не сохраняются и устанавливаются в значения по умолчанию. Имеется возможность программного доступа к значению элемента стиля с помощью свойства Значение. Пример: Метаданные.ЭлементыСтиля.ЦветОтрицательного.Значение 5.5.22. Языки Объекты конфигурации Языки предназначены для создания интерфейса программы на различных языках. Для каждого объекта конфигурации типа Языки резервируется отдельная строка для тех реквизитов метаданных, для которых допускается представление на разных языках. Рассмотрим пример формы для элемента справочника Номенклатура. Для языка Русский надписи формы выглядят так: Рис. 110. Форма на русском языке Если в ветви Языки создано несколько объектов (например, Русский и Английский), то для смены языка нужно выбрать пункт Конфигурация – Язык редактирования конфигурации. В открывшемся окне выбора языка выбрать язык просмотра конфигурации. Рис. 111. Выбор языка редактирования конфигурации Аналогичный результат можно получить с помощью кнопки выбора языка, расположенной в панели состояния справа от кнопок CAP и NUM (правый нижний угол основного окна конфигуратора). Конфигуратор заменит текст надписей на варианты надписей выбранного языка. Рис. 112. Форма на английском языке Разумеется, текст надписей должен быть заранее введен для каждого элемента управления. Для ввода текста в палитре свойств элемента управления Надписьв свойстве Заголовок(Текстили Синоним, в зависимости от типа элемента управления) нужно нажать кнопку «лупа» (см. рис. 113). На экран выводится окно Строки на разных языках. Рис. 113. Строки на разных языках СОВЕТ. В конфигурации нет ограничений на число языков. Однако не следует создавать объекты типа Языки «с запасом», т. к. создать объект Язык можно в любой момент. В свойстве Код языка указывается код языка, например, EN для языка Английский. Если в конфигурации определено два и более объекта типа Языки, то для свойства Синоними Заголовок элемента управления появляется кнопка редактирования текста на разных языках (в виде лупы). Первый объект языка программа создает в соответствии с выбором языка (страны) при создании новой информационной базы. Чтобы сформировать текстовое представление реквизита для отображения в форме, используется следующее правило: ● Выполняется получение заголовка отображаемого объекта на языке конфигурации текущего пользователя. Если заголовок задан, используется именно он. ● Выполняется попытка получения синонима отображаемого объекта на языке конфигурации текущего пользователя. Если синоним задан, используется именно он. ● Дальнейшее зависит от вида отображаемого объекта: ● для стандартных реквизитов получается представление на языке локализации платформы; ● для объектов, созданных прикладным разработчиком, используется имя объекта так (и на том языке), как оно задано в конфигурации. ВНИМАНИЕ! Если тексты в свойствах Синонимили Заголовоквведены, то изменение кода языка в свойстве Код языка приведет к «потере» введенных текстов (тексты остаются для прежнего значения кода). Тексты «восстанавливаются» при указании прежнего значения кода языка. Для редактирования текстов и выполнения задач локализации (создания интерфейса на другом языке) следует использовать режим Редактирование текстов интерфейса (см. здесь). В том случае, если предполагается использовать прикладное решение на мобильных устройствах, рекомендуется указывать коды языков в соответствии со стандартом ISO 639 (http://www.iso.org/iso/ru/language_codes). В противном случае при проверке конфигурации будет выдаваться предупреждение. 5.6. Общие свойства объектов конфигурации Данный раздел содержит описание общих свойств объектов метаданных. 5.6.1. Основные свойства Практически все объекты конфигурации имеют следующие свойства, располагающиеся в категории свойств Основные: ● Имя – имя объекта конфигурации. Имя должно состоять из одного слова, начинаться с буквы и не содержать специальных символов, кроме «_». По имени объекта производится доступ и управление объектом конфигурации средствами встроенного языка. Имена объектов конфигурации не должны совпадать с зарезервированными словами языка запросов (список зарезервированных слов см. здесь). ● Синоним – помимо имени можно указать также его синоним. Если конфигурация создается для использования на разных языках, то следует указать синонимы на используемых языках. При работе с системой «1С:Предприятие» синоним будет выдаваться в различных списках выбора, заголовках окон, текстах надписей, при формировании интерфейсов с учетом текущего языка. Синоним не имеет ограничений на использование символов. Если синоним не задан, выбирается имя. ПРИМЕЧАНИЕ. Имя или синоним, выдаваемые пользователю, также называются представлением объекта конфигурации. ● Комментарий – произвольная строка символов. Как правило, расшифровывает и поясняет имя объекта. 5.6.2. Представление объектов метаданных Для многих объектов метаданных реализована возможность задавать различные представления объекта. Это сделано для того, чтобы разработчик имел возможность задать представление стандартных команд, их подсказок, а также заголовков форм. Рис. 114. Представление объектов ● Представление объекта (для регистра – записи): ● название одного объекта (например, Расчетный счет); ● используется в представлении стандартной команды (создание объекта). ● Расширенное представление объекта (для регистра – записи) используется для формирования заголовка формы объекта. Например, Расчетный счет организации. ● Представление списка: ● название списка объектов (например, Расчетные счета); ● используется в представлении стандартной команды (команда открытия списка объектов). ● Расширенное представление списка – используется для формирования заголовка формы списка (например, Расчетные счета организации). ● Расширенное представление – заголовок формы отчета или обработки (например, Отчет о взаиморасчетах по расчетным счетам). ● Пояснение – используется для формирования подсказки к стандартным командам (например, Расчетные счета наших организаций). ● Картинка – картинка для представления подсистемы в панели разделов. Следует учитывать, что заполнение свойств, связанных с представлением объектов и списков, необходимо только в тех случаях, когда требуется несколько уточнить информацию, отображаемую для объекта по умолчанию. Например, существует справочник Товары(Имя объекта метаданных – Товары, Синоним объекта метаданных – Товары), элементами которого могут быть товары и услуги. Но в текстах команд вы хотите использовать единственное число для команды (создать товар) и не хотите отражать информацию об услугах, т. к. она «удлиняет» текст команды. В то же время в форме объекта вы хотите указать пользователю, что в данной форме можно редактировать и товары, и услуги. В этом случае имеет смысл свойство Представление объекта заполнить текстом Товар, а свойство Расширенное представление объекта заполнить текстом Товар (услуга). Тогда команда создания элемента справочника товары будет выглядеть как Товар: создать, а заголовок формы – Товар (услуга). Подробную информацию о том, какие из вышеперечисленных свойств каким объектам метаданных соответствуют см. здесь. Там же можно получить информацию о правилах формирования текстов стандартных команд, подсказок команд и заголовков форм. 5.6.3. Произвольное представление данных Стандартное представление данных, которое формирует система, может не устраивать пользователя. Например, если с системой работают пользователи, говорящие на разных языках и объекты системы содержат всю необходимую информацию также на разных языках. Например, для товаров существует два названия: на русском и на английском языке. А выводить нужный текст необходимо в зависимости от кода локализации сеанса. Также нужно, чтобы представление на нужном языке генерировалось везде, где формируется представление объекта: динамический список, отчет и т. д. Для реализации этой задачи существует специальный механизм, позволяющий разработчику определить реквизиты, которые участвуют в формировании представления, а также описать алгоритм, по которому формируется представление объекта. Данная возможность доступна для следующих объектов конфигурации: ● Планы обмена, ● Справочники, ● Документы, ● Планы видов характеристик, ● Планы счетов, ● Планы видов расчета, ● Бизнес-процессы, ● Задачи, ● Таблицы внешних источников данных. Механизм формирования представления состоит из двух этапов: определение реквизитов, участвующих в формировании представления и собственно формирование представления. Для определения списка реквизитов используется обработчик события ОбработкаПолученияПолейПредставления менеджера соответствующего объекта. Обработчик вызывается при первой попытке получения представления выбранного объекта, и результат работы сохраняется на время сеанса. В данном обработчике необходимо заполнить массив Поляименами реквизитов, которые будут участвовать в формировании представления. Если параметр СтандартнаяОбработкав обработчике будет установлено в значение Истина, то после завершения работы обработчика, массив Полябудет очищен и заполнен полями, используемыми для формирования стандартного представления данного объекта. В противном случае система будет использовать только те значения, которые были помещены в массив Поля. ПРИМЕЧАНИЕ. Примеры, приведенные ниже, не являются законченным. Они предназначены для демонстрации механизмов работы с произвольным представлением. Допустим, что в справочнике Товарыесть реквизиты РусскоеНаименование, АнглийскоеНаименованиеи Артикул, которые должны участвовать в формировании представления. В этом случае обработчик получения полей представления (в модуле менеджера справочника Товары) будет выглядеть следующим образом: Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) Поля.Добавить("РусскоеНаименование"); Поля.Добавить("АнглийскоеНаименование"); Поля.Добавить("Артикул"); СтандартнаяОбработка = Ложь; КонецПроцедуры При необходимости получения представления система вызывает обработчик события ОбработкаПолученияПредставленияв менеджере соответствующего объекта. В этот обработчик передаются значения реквизитов, участвующих в формировании представления. Программный код, расположенный в обработчике, выполняет формирование текста представления. ВНИМАНИЕ! Обработчик события ОбработкаПолученияПредставлениявызывается при любой необходимости получения представления какого-либо объекта информационной базы. Избыточные данные, или неправильный выбор данных для формирования представления, может привести к существенному замедлению работы системы. Обработчик ОбработкаПолученияПредставленияформирует представление и возвращает его с помощью параметра Представлениеобработчика. Данные, необходимые для формирования представления, передаются с помощью параметра Данные. Данныепредставляют из себя структуру, где ключом является имя реквизита, а значением – значение реквизита для текущего объекта. Если параметр СтандартнаяОбработкаустановить в значение Истина, то система попытается сформировать стандартное представление для текущего объекта, исходя из переданных данных. Если в параметре Данныеотсутствуют реквизиты, необходимые для формирования стандартного представления, то представлением будет пустая строка. Рассмотрим пример формирования представления для двуязычного справочника Товары: Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КодЛокализацииСеанса = ВРег(ТекущийКодЛокализации()); Если Найти(КодЛокализацииСеанса, "RU") <> 0 Тогда Текст = Данные.РусскоеНаименование; ИначеЕсли Найти(КодЛокализацииСеанса, "EN") <> 0 Тогда Текст = Данные.АнглийскоеНаименование; Иначе Текст = Данные.РусскоеНаименование; КонецЕсли; Представление = Текст + "(" + Данные.Артикул + ")"; КонецПроцедуры Следует помнить, что если в обработчике ОбработкаПолученияПредставлениябудет совершена ошибка встроенного языка, то возможна ситуация, когда работа приложения будет аварийно завершена. 5.6.4. Стандартные реквизиты Для того чтобы на уровне конфигурации переопределять некоторые интерфейсные свойства (такие как синоним, проверка заполнения и т. д.) стандартных реквизитов (например, Код, Наименование, Родитель) и стандартных табличных частей (например, ВидыСубконто, БазовыеВидыРасчета) прикладных объектов, существует возможность настройки этих свойств. Рис. 115. Стандартные реквизиты Для этого в палитре свойств ряда объектов существуют команды, открывающие списки стандартных реквизитов и стандартных табличных частей (см. рис. 115). Такие команды доступны для тех объектов, у которых имеются стандартные реквизиты и стандартные табличные части. С помощью палитры свойств можно переопределять некоторые свойства стандартных реквизитов таким образом, чтобы они более полно соответствовали требованиям решаемой прикладной задачи. Например, для свойства Владелецсправочника РасчетныеСчетаможно задать синоним Контрагент. Тогда во всех формах представление этого реквизита (Владелец) по умолчанию будет выглядеть как «Контрагент:». В том случае если свойства стандартного реквизита (или стандартной табличной части) не заданы, будут использованы свойства стандартных реквизитов по умолчанию. По своему набору свойств стандартный реквизит практически ничем не отличается от любого другого реквизита, за исключением того, что нельзя изменить: ● имя стандартного реквизита, ● тип стандартного реквизита, ● имя стандартной табличной части, ● индексирование стандартного реквизита. ВНИМАНИЕ! Наличие описания стандартного реквизита не меняет его имени, то есть все обращения к реквизиту во встроенном языке и в языке запросов остаются неизменными. 5.6.5. Предопределенные данные 5.6.5.1. Общая информация Предопределенные данные – это элементы прикладных объектов, которые создаются в конфигураторе и обращение к ним возможно по имени, без предварительного поиска. Предопределенные данные имеет смысл создавать в том случае, если какой-либо элемент данных будет нужен постоянно и требуется упростить обращение к этому элементу из программного кода. Например, в справочнике Товарыможно завести предопределенный элемент Услуга, обращение к которому будет выглядеть следующим образом: Справочники.Товары.Услуга. Предопределенными могут быть как элементы, так и группы элементов. Группы можно создавать в тех случаях, когда предопределенные элементы создаются в иерархических объектах, например в иерархическом справочнике. Предопределенные данные могут быть созданы: ● для справочников (см. здесь), ● планов счетов (см. здесь), ● планов видов характеристик (см. здесь), ● планов видов расчета (см. здесь). После создания предопределенного элемента в конфигураторе, возможность создания или обновления связанного с ним элемента данных определяется комбинацией двух значений: ● Значение свойства объекта конфигурации ОбновлениеПредопределенныхДанных. Устанавливается в конфигураторе; ● Значение свойства объекта в информационной базе. Получить и установить значение этого свойства можно в режиме «1С:Предприятие» с помощью методов ПолучитьОбновлениеПредопределенныхДанных()и УстановитьОбновлениеПредопределенныхДанных(). Свойство может принимать три значения: ● Не обновлять автоматически – в этом случае система не выполняет создание или обновление элемента данных при создании или изменении предопределенных данных. Следует понимать, что если для объекта конфигурации установлено такое свойство, то при обращении к предопределенным данным может генерироваться исключение, т. к. отсутствует элемент данных, связанный с предопределенным элементом; ● Обновлять автоматически – в этом случае система автоматически создаст (или обновит существующие) элементы данных для новых (или измененных) предопределенных данных; ● Авто – система автоматически определяет необходимость выполнения обновления. Обновление не будет выполняться в следующих случаях: ● Если в свойствах объекта конфигурации (в метаданных) свойство ОбновлениеПредопределенныхДанных установлено в значение Не обновлять автоматически, при этом значение, установленное в режиме «1С:Предприятие», значения не имеет. ● Если в свойствах объекта конфигурации (в метаданных) свойство ОбновлениеПредопределенныхДанных установлено в значение Обновлять автоматически, а с помощью метода УстановитьОбновлениеПредопределенныхДанных()установлено значение Не обновлять автоматически. ● Если значение Авто установлено и в метаданных и в режиме «1С:Предприятие», и действие выполняется в подчиненном узле распределенной информационной базы (см. здесь). Действие, которое будет выполнять система, определяется с помощью операции «И» между свойством объекта конфигурации и свойством объекта, заданным в режиме «1С:Предприятие». При этом следует понимать, что для определения действия (создавать или не создавать) не принимают участие значения Авто. Вначале они разрешаются в одно из двух значений: Не обновлять автоматически или Обновлять автоматически и уже эти значения участвуют в операции «И». Связь элемента данных и элемента предопределенных данных осуществляется с помощью свойства ИмяПредопределенныхДанных. С помощью этого свойства имеется возможность выполнять следующие действия: ● Связывать элемент предопределенных данных с элементов данных. Для этого следует присвоить свойству ИмяПредопределенныхДанныхимя предопределенного элемента данных, который надо связать с данными: ЭлементСсылка = Справочник.Товары.НайтиПоНаименованию("Услуга доставки "); Объект = ЭлементСсылка.ПолучитьОбъект(); Объект.ИмяПредопределенныхДанных = "Услуга"; Объект.Записать(); В результате этой операции, предопределенному элементу Услугасправочника Товарыбудет сопоставлен элемент данных с именем Услуга доставки. При записи объекта проверяется, что в информационной базе не существует другого элемента данных с именем предопределенных данных, установленного в значение, с которым записывается элемент данных. ● «Отключить» элемент данных от элемента предопределенных данных. Для этого необходимо присвоить свойству ИмяПредопределенныхДанныхпустую строку и записать элемент: Объект = Справочник.Товары.Услуга.ПолучитьОбъект(); Объект.ИмяПредопределенныхДанных = ""; Объект.Записать(); Если попробовать обратиться к предопределенному элементу Справочник.Товары.Услугапосле выполнения вышеприведенного примера, то будет сгенерировано исключение. Таким образом, процесс смены элемента данных, связанного с предопределенными данными, выполняется в два этапа: ● Выполняется «отключение» существующего элемента данных от предопределенного элемента; ● Выполняется связывание нового элемента данных с предопределенным элементом. Создание элементов данных, связанных с предопределенными данными, может быть выполнено одним из трех способов: ● Автоматически, во время реструктуризации информационной базы. Это происходит в следующем случае: ● Разрешено автоматическое создание и обновление предопределенных данных; ● Предопределенные данные ранее создавались в данной области данных или информационной базе. ● Автоматически, при первом обращении к таблице, хранящей данных объекта конфигурации. Создание предопределенных элементов в этом случае будет выполняться при условии, что создание предопределенных элементов не запрещено. ● С помощью встроенного языка, указав свойство ИмяПредопределенныхДанныхпри создании элемента данных. Этот способ можно использовать, если автоматическое создание предопределенных элементов запрещено в свойствах объектов конфигурации. Обновление данных, связанных с предопределенными, будет выполняться в том случае, если разрешено автоматическое обновление предопределенных данных, предопределенные данные связан с реальными данными и предопределенные данные изменены в конфигураторе. Во всех остальных случаях информация, введенная в конфигураторе, не будет перенесена в информационную базу. Изменение порядка следования предопределенных элементов в плане счетов и плане видов характеристик в связанных данных не обрабатывается, т. е. порядок элементов в данных будет таким же, каким он задан в метаданных. Данные, введенные пользователем (не предопределенные) будут располагаться после предопределенных. Если в конфигураторе выполнено удаление элемента предопределенных данных, то будет выполнено следующее: ● Элемент данных, связанный с элементом предопределенных данных, будет помечен на удаление. ● В списке субконто элемента плана счетов будут удалены соответствующие записи. ● В списках ведущих, базовых и вытесняющих видов расчета будут удалены соответствующие записи. Если в прикладном решении отключено автоматическое обновление предопределенных данных, то удаление предопределенного элемента приводит к изменению в связанном объекте данных (если таковой есть). Значение свойства ИмяПредопределенныхДанныхзаменяется значением #xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx– это уникальный идентификатор удаленного элемента метаданных. В обычной ситуации свойству ИмяПредопределенныхДанныхнельзя присвоить имя указанного выше вида. Исключением являются две ситуации: ● Если при записи объекта данных свойство ОбменДанными.Загрузкаустановлено в значение Истина; ● Изменяется объект, существующий в базе данных, для которого уже указано такое имя. 5.6.5.2. Работа в распределенной информационной базе При работе в режиме распределенной информационной базы вместе с конфигурацией передаются предопределенные элементы. Собственно элементы данных, связанные с предопределенными данными, передаются обычным образом, с помощью плана обмена. При этом автоматическое создание предопределенных данных в периферийной информационной базе не произойдет, подробное описание причины см. здесь. ВНИМАНИЕ! Если данные, связанные с предопределенными элементами, оказались получены в подчиненном узле раньше, чем конфигурация со связанными предопределенными элементами, то автоматического «связывания» данных и предопределенных данных не произойдет. Для этого потребуется повторно выгрузить из центральной в периферийную информационную базу нужные элементы данных. Если начальный образ периферийной информационной базы создается до того, как с главной информационной базой начали работать, можно воспользоваться специальным методом ИнициализацияПредопределенныхДанных() для создания предопределенных элементов, чтобы они автоматически попали в периферийную информационную базу. Метод надо вызывать до того, как выполнено создание начального образа. Если используется универсальный механизм обмена данными, то следует учитывать следующие особенности: ● При записи объекта данных, который в базе-источнике является предопределенным, система проверяет наличие такого же имени предопределенных данных в типообразующем объекте конфигурации. Если такое имя есть – объект будет загружен без изменений. Если такого имени нет – в объекте при загрузке будет очищено свойство ИмяПредопределенныхДанных. Например, выполняется универсальный обмен данными между одинаковыми информационными базами. В каждой информационной базе существует справочник Номенклатура. В каждой информационной базе в этом справочнике содержится предопределенный элемент Услуга. Ссылки на эти объекты данных разные. Тогда при загрузке произойдет следующее: система обнаружит наличие в базе-приемнике предопределенный элемент Услугаи выполнит загрузку с сохранением свойства ИмяПредопределенногоЭлемента. Это будет возможно в том случае, если перед записью элемента свойство ОбменДанными.Загрузкаустановлено в значение Истина. В противном случае будет вызвано исключение. Однако при попытке обратиться в базе-приемнике к предопределенному элементу Услуга, произойдет ошибка, т. к. в системе не может быть двух объектов, связанных с одинаковым предопределенным элементом. Не следует допускать возникновения такой ситуации. Прикладной разработчик должен самостоятельно обрабатывать попытку загрузки объекта данных с дублирующим именем предопределенных данных. ● При записи объекта данных, у которого имя предопределенных данных ссылается на удаленный элемент (имеет вид #xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), то такой элемент будет записан в любом случае. При этом система не позволит записать два объекта, ссылающиеся на один удаленный предопределенный элемент (с одинаковым значением имени предопределенных данных), кроме как в случае, когда перед записью элемента свойство ОбменДанными.Загрузкаустановлено в значение Истина. 5.6.5.3. Работа в режиме разделения Описание особенностей работы в разделенной информационной базе см. здесь. 5.6.6. Ввод по строке Для прикладных объектов (справочники, документы, планы видов характеристик, планы счетов, планы видов расчета, регистры, бизнес-процессы и задачи, а также планы обмена) в свойстве Ввод по строке можно указать те реквизиты, по которым выполняется поиск. Если ввод по строке разрешен (заданы соответствующие реквизиты), то допустимо в поле ввода соответствующего типа не выполнять выбор из формы объекта, а ввести информацию, которая содержится в заданных реквизитах объекта. Рис. 116. Ввод по строке Например, у нас есть справочник Номенклатура, в котором находится несколько товаров, начинающихся со слова Bosch. Тогда, введя в поле ввода номенклатуры слово bosс, мы получим список товаров, которые начинаются с этого слова (см. рис. 116). В качестве реквизитов, по которым будет выполняться поиск, могут выступать: ● Для справочников, планов видов характеристик, планов счетов, планов видов расчета, планов обмена – Коди Наименование. ● Для документов – Номер. ● Для бизнес-процессов и задач – Номери Наименование. ● Реквизиты, имеющие тип Числоили Строка, для которых свойство Индексировать имеет значение Индексировать или Индексировать с доп. упорядочиванием. Примером последних может служить поле для ввода артикула, штрихкода, ИНН. Для формирования списка реквизитов нужно нажать кнопку выбора и в открывшемся диалоге перенести в левый список те поля, по которым может производиться ввод по строке. Рис. 117. Настройка ввода по строке Если полей несколько, то установить порядок их следования. При поиске по строке поиск выполняется в полях в той последовательности, в которой они приведены в данном диалоге. Например, для элемента справочника Номенклатураввод может осуществляться как по коду, так и по артикулу. Если значение кода одного элемента совпадет со значением артикула другого, то в список найденные значения попадут в том порядке, в котором указаны при настройке. ВНИМАНИЕ! При выполнении поиска данных (во время ввода по строке) действуют ограничения доступа к данным (см. здесь). 5.6.6.1. Особенности поведения поля ввода При вводе данных в поле ввода следует учитывать некоторые особенности работы со списком выбора. Если в результате набора текста система однозначно идентифицирует объект, который пользователь хочет ввести, то происходит автоматическая подстановка найденного объекта в поле ввода. Если в результате набора обнаружено несколько объектов, начинающихся с введенного текста, то список этих объектов будет расположен в выпадающем списке (не более 50 элементов). Во время ввода пользователь может с помощью кнопок Стрелка вверх и Стрелка вниз передвигаться по списку, при этом продолжая набор текста в самом поле. В этом случае для осуществления выбора требуется выбрать необходимый элемент и подтвердить выбор нажатием кнопки Enter или Tab. 5.6.6.2. Программное формирование списка выбора Если разработчика не устраивает, каким образом формируется список выбора, он может переопределить его самостоятельно. Сделать это можно двумя способами: ● Непосредственно в форме – в этом случае особое формирование списка выбора будет работать только для этого, единственного поля. Для этого необходимо определить обработчики событий НачалоВыбора, АвтоПодбори ОкончаниеВводаТекста. ● В модуле менеджера соответствующего объекта – в этом случае особое формирование списка выбора будет выполняться для всех полей ввода, в которых вводятся значения используемого объекта. Если поле связано с данными, имеющими тип ссылки на прикладной объект (например, СправочникСсылка, ПеречислениеСсылкаи т. д.), то список выбора можно сформировать или в модуле менеджера соответствующего объекта, или с помощью обработчиков модуля формы. В остальных случаях список выбора можно сформировать только с помощью обработчиков модуля формы. Подробнее остановимся на втором способе. Для программного формирования списка выбора необходимо переопределить обработчик события ОбработкаПолученияДанныхВыбораменеджера объекта. Обработчик получает набор параметров, определяющих условия формирования списка выбора. Набор параметров представляет собой структуру, которая содержит: ● Строку поиска – текстовую строку, содержащую текст, который пользователь ввел в поле ввода. Данный параметр присутствует всегда. ● Отбор – структура, которая описывает отбор так, как его описывает параметр формы Отбордля расширения формы для динамического списка. Данный параметр присутствует всегда. ● Свойство, которое указывает режим выбора групп и элементов (передается только для иерархических списков). ● Кроме этого, в структуре передаются элементы, которые заданы в свойствах элемента формы – Связи параметров выбора (см. здесь) и Параметры выбора (см. здесь). Кроме того, в обработчик передается переменная, в которую следует вернуть сформированный список выбора, и параметр СтандартнаяОбработка, который определяет поведение системы после того, как произойдет выход из обработчика. Если разработчик устанавливает параметр СтандартнаяОбработкав значение Ложь, то ему необходимо самому полностью формировать список выбора (учитывая ограничение в 50 отображаемых элементов). Если флажок стандартной обработки установить в значение Истина, то можно предоставить системе возможность сформировать список выбора, но при этом можно модифицировать параметры выбора (добавить дополнительные значения отбора, изменить режим выбора групп и элементов и т. д.). ПРИМЕЧАНИЕ 1. Если система сама формирует список выбора, при формировании списка учитываются ограничения доступа к данным (см. здесь). ПРИМЕЧАНИЕ 2. Примеры, приведенные ниже, не являются законченным. Они предназначены для демонстрации различных механизмов получения списков выбора. Так, следующий код в случае любого текста, вводимого пользователем, будет предоставлять выбор из трех товаров, с кодами 00000002, 00000003 и 00000004. Пример: Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) ДанныеВыбора = Новый СписокЗначений; ДанныеВыбора.Добавить(Справочники.Товары.НайтиПоКоду("00000002")); ДанныеВыбора.Добавить(Справочники.Товары.НайтиПоКоду("00000003")); ДанныеВыбора.Добавить(Справочники.Товары.НайтиПоКоду("00000004")); СтандартнаяОбработка = Ложь; КонецПроцедуры В следующем примере отбор, который сформировало поле ввода, будет расширен установкой дополнительного отбора так, чтобы в список выбора не попали услуги. При этом все формирование списка выбора берет на себя система. Пример: Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) Параметры.Отбор.Вставить("Вид", Перечисления.ВидыТоваров.Товар); КонецПроцедуры В качестве последнего примера рассмотрим упрощенный случай реализации отбора полностью средствами встроенного языка. В этом примере будет рассмотрен отбор товаров, название которых начинается со строки, введенной пользователем в поле ввода. Пример: Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Товары.Ссылка как Товар |ИЗ | Справочник.Товары КАК Товары |ГДЕ | Товары.Наименование ПОДОБНО &Наименование"; Запрос.УстановитьПараметр("Наименование", Параметры.СтрокаПоиска + "%"); Результат = Запрос.Выполнить(); ТаблицаРезультатов = Результат.Выгрузить(); МассивТоваров = ТаблицаРезультатов.ВыгрузитьКолонку("Товар"); ДанныеВыбора = Новый СписокЗначений; ДанныеВыбора.ЗагрузитьЗначения(МассивТоваров); СтандартнаяОбработка = Ложь; КонецПроцедуры Также следует обратить внимание на еще один способ формирования списка выбора: передачу в качестве значения элемента списка значений не ссылки на искомый объект (как в примерах выше), а структуру особого содержания. Эта структура состоит из следующих элементов: ● Значение– собственно значение выбираемого элемента. Элемент структуры с таким именем должен быть обязательно. ● ПометкаУдаления– признак, что выбираемое значение помечено на удаление в информационной базе. Элемент структуры с таким именем не является обязательным. ● Предупреждение– строка с текстом предупреждения, которое отобразит «1С:Предприятие» при выборе такого элемента из списка значений. Элемент структуры с таким именем не является обязательным. Если в структуре свойство ПометкаУдаленияравно значению Истинаи не указано свойство Предупреждение, то система автоматически сформирует текст предупреждения. Если свойство Предупреждениеуказано, то отображается именно оно. Следует помнить, что текст Предупреждениезавершается вопросом Продолжить? и отображается в качестве вопроса с вариантами ответа Да и Нет. Далее будет показана модификация предыдущего примера, в котором для складов с установленным в значение Истинареквизитом НеИспользоватьбудет сформировано предупреждение Этот склад не должен использоваться. Также можно совмещать в одном списке выбора и значения типа Структура, и простые значения. Пример: Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДанныеВыбора = Новый СписокЗначений; // Сформируем список с предупреждениями Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Склады.Ссылка, | Склады.Наименование, | Склады.НеИспользовать |ИЗ | Справочник.Склады КАК Склады"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Структура = Новый Структура("Значение", ВыборкаДетальныеЗаписи.Ссылка); // Заполним предупреждение Если ВыборкаДетальныеЗаписи.НеИспользовать Тогда Структура.Вставить("Предупреждение", "Этот склад не должен использоваться!"); КонецЕсли; Элемент = ДанныеВыбора.Добавить(); Элемент.Значение = Структура; Элемент.Представление = ВыборкаДетальныеЗаписи.Наименование; КонецЦикла; КонецПроцедуры ПРИМЕЧАНИЕ. Если представления элементов (в том числе и элементов структуры с именем Значение) не указаны в явном виде, то они будут получены автоматически. 5.6.7. Формы Форма – это объект, созданный для ввода или просмотра какой-либо информации, а также для управления различными процессами. С помощью форм программа запрашивает у пользователя ту информацию, которая необходима ей для дальнейшей работы, либо выдает какую-либо информацию пользователю для просмотра и редактирования. В тех случаях, когда необходимо обеспечить функционирование конфигурации одновременно в обычном и управляемом режимах, можно использовать дополнительные формы объектов метаданных. При этом «1С:Предприятие» будет автоматически выбирать для использования ту форму, которая соответствует текущему режиму работы. Рис. 118. Основные и дополнительные формы Тонкий клиент и веб-клиент оперируют только управляемыми формами. Значит: ● если обе назначенные формы – управляемые, то будет открыта та форма, которая назначена как основная; ● если среди назначенных форм есть только одна управляемая, будет открыта именно она; ● если управляемая форма не назначена, она будет сгенерирована автоматически. Толстый клиент при выборе формы старается выбрать форму, которая максимально соответствует текущему режиму запуска: ● если никакие формы не назначены, то будет сгенерирована: ● в обычном режиме – обычная форма; ● в управляемом режиме – управляемая форма; ● если назначена только одна форма, то именно она и будет открыта; ● если назначены две формы, обычная и управляемая, то будет открыта: ● в обычном режиме – обычная форма; ● в управляемом режиме – управляемая форма. ● если назначены две обычные или две управляемые формы, то будет открыта та форма, которая назначена основной. Двойной комплект форм можно использовать в тех случаях, когда вы переводите вашу конфигурацию из неуправляемого в управляемый режим, либо когда необходимо, например, часть возможностей конфигурации сделать доступными в веб-клиенте (или тонком клиенте). В этом случае можно реализовать необходимые возможности в управляемых формах и указать их в качестве дополнительных форм. Тогда при работе в режиме веб-клиента (или тонкого клиента) будут использоваться нужные формы (управляемые). Однако следует учитывать, что на получение форм по умолчанию в толстом клиенте оказывают влияние свойства конфигурации Использовать управляемые формы в обычном приложении и Использовать обычные формы в управляемом приложении: ● Если свойство конфигурации Использовать управляемые формы в обычном приложении имеет значение Ложь, то в толстом клиенте, в обычном режиме, при получении формы по умолчанию обязательно должна быть получена обычная форма. Если ни основная, ни дополнительная форма не является обычной, то генерируется обычная форма. Однако если задана основная форма констант (свойство Основная форма констант), то будет использовать именно она, вне зависимости от состояния флажка Использовать управляемые формы в обычном приложении. ● Если свойство конфигурации Использовать обычные формы в управляемом приложении имеет значение Ложь, то в толстом клиенте, в управляемом режиме, при получении формы по умолчанию обязательно должна быть получена управляемая форма. Если ни основная, ни дополнительная форма не является обычной, то генерируется управляемая форма. Если в результате открывается форма, которая автоматически сгенерирована системой и режим запуска клиентского приложения отличается от режима запуска, установленного в свойстве конфигурации Основной режим запуска, то формы объектов и формы наборов записей открываются в режиме Только просмотр. Также в формах списков и формах объектов будут отсутствовать команды Создать на основании, а в формах списков – команда Создать, если для выполнения этих команд системе необходимо автоматически сгенерировать форму, подходящую для текущего режима запуска и режим запуска клиентского приложения отличается от режима запуска, установленного в свойстве конфигурации Основной режим запуска. Если в качестве основного режима запуска прикладного решения выбрано управляемое приложение, то для каждой управляемой формы прикладного решения можно выбрать назначение формы. Свойство формы Назначения использования эквивалентно (по составу и применению) аналогичному свойству конфигурации (см. здесь). Поведение редактора формы зависит от пересечения множеств назначений конфигурации и конкретной формы. Если в пересечении отсутствует значение Персональный компьютер, то: ● В палитре свойств недоступны свойства реквизитов, параметров, команд, элементов, которые не поддерживаются мобильной платформой; ● Недоступно редактирование контекстного меню элемента формы; ● Недоступно редактирование расширенной подсказки для элемента формы; ● Недоступны те виды полей формы, которые не поддерживаются мобильной платформой (см. здесь); ● Редактор настроек динамического списка не позволяет разворачивать доступные поля (связано с тем, что на мобильной платформе динамический список работает строго с одной таблицей). Если в назначении формы отсутствует значение Мобильное приложение, то она не включается в конфигурацию мобильного приложения. 5.6.8. Команды Для выполнения операций, связанных с конкретным объектом метаданных, существуют команды этого объекта. При этом непараметризованные команды объекта будут доступны в командном интерфейсе тех подсистем, в состав которых входит объект метаданных. Если команда является параметризованной, то она будет доступна в тех формах, которые содержат реквизиты формы (включая подчиненные реквизиты первого уровня основного реквизита формы) того же типа, что и тип параметра команды. Для команд требуется написать процедуру выполнения команды. Для этого служит модуль команды, в котором необходимо реализовать обработчик ОбработкаКоманды(). Данная процедура должна предваряться директивой &НаКлиенте, так как выполнение команды происходит в клиентском приложении. Однако другие процедуры и функции, расположенные в модуле команды, могут предваряться другими директивами, если это необходимо для выполнения команды. Подробнее про директивы компиляции см. здесь. Модуль команды может содержать, например, открытие формы отчета с предварительно установленным ему параметром для вывода на печать карточки определенного бухгалтерского счета или открытие формы списка товаров с установленным отбором по виду товара. Если команда, принадлежащая группе Панель навигации, должна открывать одну и ту же форму в разных закладках, следует при получении (или открытии) формы указывать ключ уникальности или ключевой параметр формы. ПРИМЕЧАНИЕ. Если команда расположена в панели навигации основного окна приложения (см. здесь), то повторный выбор этой команды не приведет к ее (команды) повторному выполнению. Это относится и к стандартным командам, и к командам, созданным в конфигурации. 5.6.9. Механизм заполнения реквизитов новых объектов Существует возможность заполнения реквизитов новых объектов при интерактивном создании (кроме копирования), при вводе на основании, при использовании методов ОткрытьФорму()/ПолучитьФорму()или при явном вызове метода Заполнить(). Это заполнение может выполняться: ● значениями отбора при вводе из списка; ● конкретными значениями, указанными в конфигурации в свойствах реквизитов (значения заполнения); ● значениями, которые разработчик указал в обработчике события ОбработкаЗаполнения(). Механизм обработки заполнения реализован для следующих объектов: ● планы обмена, ● справочники, ● документы, ● планы видов характеристик, ● планы счетов, ● планы видов расчета, ● наборы записей регистров сведений, ● бизнес-процессы, ● задачи. Для получения данных заполнения в обработчике ОбработкаЗаполнения()существует параметр ДанныеЗаполнения. В зависимости от того, каким образом вызван обработчик, значение параметра ДанныеЗаполненияможет принимать разные значения: ● Ввод на основании – в качестве значения параметра передается ссылка на объект-основание. При этом значение параметра ДанныеЗаполнениябудет являться ссылкой на объект-основание базы данных. ● Ввод из списка с установленным отбором – в качестве значения параметра передается структура, элементами которой становятся используемые элементы отбора с установленным видом сравнения Равно или В списке (при этом в списке находится единственное значение). При создании нового документа из формы журнала документов элементы отбора по графам журнала предварительно преобразуются таким образом, чтобы в качестве имени элемента структуры ДанныеЗаполнениявыступало имя реквизита документа, а не имя графы журнала. ● Ввод нового объекта или записи без использования отбора – значение параметра равно Неопределено. ● Ввод нового объекта или записи с помощью глобальной команды – значение параметра равно Неопределено. ● Программное выполнение методов ОткрытьФорму()/ПолучитьФорму() – в случае, если исполнение методов ОткрытьФорму()/ПолучитьФорму()приводит к созданию формы нового объекта, в качестве значения параметра обработчика ДанныеЗаполнениябудет передано значение (типа Структура) параметра формы ЗначенияЗаполнения. Если параметр ЗначенияЗаполненияне задан в параметрах формы, то значение параметра обработчика будет равно Неопределено. ● Программный вызов метода объекта Заполнить() – в качестве значения параметра передается та информация, которая передана в качестве параметра метода Заполнить(). ПРИМЕЧАНИЕ. Операция интерактивного создания нового объекта с помощью копирования обрабатывается в обработчике ПриКопировании()соответствующего объекта. На заполнение реквизитов из данных заполнения оказывает влияние свойство Заполнять из данных заполнения реквизита объекта метаданных. Если это свойство имеет значение Истина, то реквизиты будут заполняться системой из данных заполнения автоматически. Если свойство имеет значение Ложьили в данных заполнения нет необходимого значения, то система будет пытаться заполнить реквизит из свойства Значение заполнения. ВНИМАНИЕ! Разработчик может управлять заполнением стандартных реквизитов объектов наравне с самостоятельно созданными реквизитами. Например, можно запретить заполнение стандартного реквизита Родитель, и тогда он не будет автоматически заполняться текущей группой. Если после исполнения обработчика ОбработкаЗаполнения()параметр СтандартнаяОбработкаравен значению Истина, то система автоматически заполнит те реквизиты (включая стандартные), для которых в метаданных установлены свойства Заполнять из данных заполнения или Значение заполнения и которые не заполнены в обработчике (значение равно значению по умолчанию для типа реквизита). Свойство Заполнять из данных заполнения автоматически устанавливается системой для некоторых стандартных реквизитов ряда объектов: ● для справочников – реквизиты Родительи Владелец; ● для планов счетов, планов видов характеристик и планов видов расчета – реквизит Родитель; ● для регистра сведений – ведущие измерения; ● для стандартных реквизитов остальных объектов данное свойство автоматически не устанавливается. При этом данные для стандартного заполнения берутся системой из одноименных реквизитов данных, передающихся в параметре ДанныеЗаполнения. Данные заполнения передаются в создаваемую форму объекта в качестве стандартного параметра формы ЗначенияЗаполненияи передаются из этого параметра расширением формы для заполнения объекту. Также имеется возможность программно задать параметр формы ЗначенияЗаполнениянового объекта, при этом будут выполнены все действия, которые исполняются при интерактивном создании объекта. ПРИМЕЧАНИЕ. При программном создании нового объекта обработка заполнения системой автоматически не вызывается. Для вызова обработчика заполнения существует метод Заполнить(). Значение заполнения – это свойство реквизита объекта метаданных, позволяющее задать значение по умолчанию, которое может принимать реквизит при интерактивном создании объекта. ВНИМАНИЕ! Заполнение реквизитов из свойства Значение заполнения происходит после вызова обработчика ОбработкаЗаполнения(). Реквизит будет заполнен в том случае, если его значение не заполнено ранее (в обработчике ОбработкаЗаполнения()или механизмом стандартного заполнения). Тип значения заполнения совпадает с типом реквизита. При этом в качестве значения этого свойства можно указывать значения примитивных типов или предопределенные данные. 5.6.10. Проверка заполнения реквизитов В информационной системе данные могут вноситься множеством различных способов, и часто они могут быть некорректны. Поэтому при разработке решения бывает необходимо прилагать много усилий на реализацию проверки правильности вводимых данных и уведомления пользователя о некорректности введенной информации. Механизм проверки заполнения позволяет существенно упростить процесс разработки конфигураций. Платформа поддерживает автоматическую проверку указанных реквизитов прикладных объектов и форм, а также позволяет выполнить процесс проверки в модуле. Платформа выполняет автоматическую проверку заполнения: ● констант; ● справочников, документов, отчетов, обработок, планов видов характеристик, планов счетов, планов видов расчета, бизнес-процессов, задач: ● реквизитов и стандартных реквизитов, ● табличных частей, ● реквизитов и стандартных реквизитов табличных частей; ● наборов записей регистров бухгалтерии, регистра сведений, регистра накопления, регистра расчета, перерасчетов, последовательностей: ● измерений, ● ресурсов, ● реквизитов и стандартных реквизитов; ● реквизитов форм; ● реквизитов форм отчетов; ● реквизитов форм обработок. ПРИМЕЧАНИЕ. Проверка заполнения реквизитов выполняется аналогично функции ЗначениеЗаполнено(). Проверка заполнения табличных частей подразумевает, что табличная часть считается заполненной, когда в ней присутствует хотя бы одна строка. Проверка заполнения может быть вызвана двумя способами: ● вызовом метода ПроверитьЗаполнения()(у объекта или формы); ● автоматически. ВНИМАНИЕ! Если свойство конфигурации Режим совместимости установлено в значение Версия 8.1, то автоматическая проверка заполнения не работает. 5.6.10.1. Установки по умолчанию По умолчанию свойство устанавливается в значение Выдавать ошибку для следующих стандартных реквизитов: ● ПланОбмена– Наименование; ● Справочник– Владелец, Наименование; ● Документ– Дата; ● ПланВидовХарактеристик– Наименование; ● ПланСчетов– Код, Наименование; ● ПланСчетов.ВидыСубконто– ВидСубконто; ● ПланВидовРасчета– Наименование; ● ПланВидовРасчета.ВедущиеВидыРасчета– ВидРасчета; ● ПланВидовРасчета.БазовыеВидыРасчета– ВидРасчета; ● ПланВидовРасчета.ВытесняющиеВидыРасчета– ВидРасчета; ● РегистрСведений– Период; ● РегистрНакопления– Период; ● РегистрБухгалтерии– Период; ● РегистрРасчета– ПериодРегистрации, ВидРасчета, ПериодДействияНачало, ПериодДействияКонец; ● БизнесПроцесс– Дата; ● Задача– Наименование. 5.6.10.2. Порядок работы Автоматическая проверка заполнения вызывается расширением формы перед интерактивной записью всех объектов, кроме документов, бизнес-процессов, отчетов и обработок. Для этих объектов определено следующее поведение: ● для документов: ● проверка заполнения вызывается расширением формы перед проведением, если свойство Проведение установлено в значение Разрешить; ● проверка заполнения вызывается расширением формы перед записью, если свойство Проведение установлено в значение Запретить; ● для бизнес-процессов проверка заполнения вызывается расширением формы перед стартом; ● для отчетов проверка заполнения вызывается расширением формы при нажатии кнопки Сформировать; ● для обработок проверка заполнения вызывается расширением формы в случаях, если нажаты кнопки, связанные со стандартными командами формы OK, Да, Повторить, Пропустить. Если реквизит является основным реквизитом формы следующих типов: СправочникОбъект, ДокументОбъект, ОтчетОбъект, ПланВидовХарактеристикОбъект, ПланСчетовОбъект, ПланВидовРасчетовОбъект, БизнесПроцессОбъект, ЗадачаОбъект, то для значения такого реквизита также будет вызвана проверка заполнения. Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство Проверять заполнение автоматически. В этом случае вначале будет вызван обработчик ОбработкаПроверкиЗаполненияНаСервере()формы, а затем обработчик ОбработкаПроверкиЗаполнения()модуля объекта. ВНИМАНИЕ! Если у формы свойство Проверять заполнение автоматически установлено в значение Истинапри выполнении стандартных команд Записать (Провести для документов и т. д.), а также стандартных команд формы OK, Да, Повторить, Пропустить, будет вызван метод ПроверитьЗаполнение(). В противном случае проверка заполнения не вызывается ни для формы, ни для объекта. Процесс проверки заполнения происходит следующим образом: ● Формируется список имен реквизитов формы, для которых возможна проверка заполнения и для которых свойство ПроверкаЗаполненияустановлено в значение ВыдаватьОшибку. В этот список не будут включены имена реквизитов, тип которых не поддерживает проверку заполнения (например, СправочникОбъект), но будет включено имя основного реквизита формы. В автоматически формируемый список реквизитов не будут включены реквизиты формы, отключенные с помощью функциональных опций. ● Вызывается обработчик события формы ОбработкаПроверкиЗаполненияНаСервере, в котором разработчик может описать свой алгоритм проверки заполнения или изменить состав проверяемых реквизитов. В обработчик будет передан сформированный список имен реквизитов. Если в обработчике необходимо добавить к списку какие-либо реквизиты, это можно сделать только для реквизитов вышеперечисленных типов (для которых возможна проверка заполнения в форме) и основного реквизита. Добавление в список имен реквизитов объектного типа (например, СправочникОбъект) вызовет исключение при дальнейшей автоматической проверке. Добавление в список имени несуществующего реквизита вызовет исключение при дальнейшей автоматической проверке. ● После завершения работы обработчика события механизм проверки заполнения получает обратно список имен, проверяемых реквизитом (который, возможно, был изменен в обработчике). Система анализирует список реквизитов и проверяет заполненность каждого реквизита. Если реквизит является основным реквизитом объектного типа (например, Объекттипа СправочникОбъект), будет вызвана проверка заполнения самого объекта. Если реквизит является реквизитом объектного типа, но не основным, будет вызвано исключение. Разработчик имеет возможность влиять на процесс проверки путем определения в модуле объекта, набора записей и в модуле формы обработчика события ОбработкаПроверкиЗаполнения. Определив обработчик события, разработчик получает полный контроль над проверкой заполнения. В параметре ПроверяемыеРеквизитыобработчик получает массив реквизитов, для которых в режиме Конфигуратор указано, что они должны проверяться. Разработчик может произвольно модифицировать этот массив: ● удалять те реквизиты, проверку заполнения которых он реализует сам или считает, что их не нужно проверять в данный момент; ● добавлять необходимые реквизиты, для которых должна выполниться проверка заполнения. В случае если разработчика не устраивает стандартная процедура проверки, он может написать алгоритм проверки сам и, используя объект СообщениеПользователю, сообщить об имеющихся проблемах пользователю. Если в процессе проверки разработчик вывел пользователю сообщения об ошибках, необходимо установить параметр Отказв значение Истина, чтобы уведомить платформу о том, что текущее действие не может быть завершено. Параметр события ПроверяемыеРеквизитысодержит имена атрибутов в следующем формате: ● для реквизитов и констант – ИмяРеквизита, например, Поставщик; ● для табличных частей – ИмяТабличнойЧасти, например, Товары; ● для реквизитов табличных частей – ИмяТабличнойЧасти.ИмяРеквизита, например, Товары.Номенклатура; ● для реквизитов форм – ИмяРеквизита, например, ДокументОбъект. Для реквизитов, входящих в состав функциональных опций (см. здесь) без параметров, значение опции учитывается при проверке заполнения. Если функциональная опция включена, то реквизит будет включен в список проверяемых реквизитов; если опция выключена, реквизит не будет включен в список проверяемых реквизитов. Это значит, что отключенное поле не будет передано через параметры ПроверяемыеРеквизитыв ОбработкаПроверкиЗаполнения. Реквизиты, входящие в состав функциональной опции с параметрами (см. здесь), всегда включаются в список проверяемых реквизитов (параметр ПроверяемыеРеквизиты). Удаление реквизита из списка проверяемых реквизитов в таких случаях необходимо выполнять в обработчике ОбработкаПроверкиЗаполнения. Для этого следует получить значение функциональной опции, указав в качестве параметров необходимые данные объекта. 5.6.10.3. Правила отображения отметки незаполненного На отображение отметки незаполненного влияют следующие свойства элементов конфигурации: ● свойство Проверка заполнения реквизита или стандартного реквизита объекта метаданных; ● свойство Проверка заполнения реквизита формы; ● свойство Автоотметка незаполненного элемента формы; ● свойство ОтметкаНезаполненногоэлемента формы (доступно только для программного изменения). Свойство элемента формы Автоотметка незаполненного может быть установлено в значение: ● Авто – отметка будет отображаться, если у реквизита формы или реквизита (стандартного реквизита) объекта метаданных свойство Проверка заполнения установлено в значение Выдавать ошибку и реквизит, связанный с элементом формы, содержит пустое значение. ● Да – отметка будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка заполнения. ● Нет – отметка не будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка заполнения. При начале интерактивного изменения поля ввода отметка незаполненного перестает отображаться, при этом значение свойства ОтметкаНезаполненногоне изменяется. Отображение отметки восстанавливается (если это необходимо) после того, как в поле ввода завершено интерактивное редактирование или установлено значение. При этом свойство ОтметкаНезаполненногоможет быть изменено системой в том случае, если свойство АвтоОтметкаНезаполненногоустановлено в значение Истина: ● если значение в поле не заполнено, то свойство ОтметкаНезаполненногобудет установлено в значение Истина; ● если в поле значение заполнено, то свойство ОтметкаНезаполненногобудет установлено в значение Ложь. ПРИМЕЧАНИЕ. Если свойство ОтметкаНезаполненногоустановлено у таблицы, то для таблицы, в которой нет строк, будет подсвечена первая строка, а для заполненной таблицы – все строки. Кроме того, отметка незаполненного также будет отображена, если в окне сообщений есть сообщение (см. здесь), связанное с конкретным полем формы, вне зависимости от установленных свойств элемента формы и связанных с ним реквизитов. После очистки окна сообщений отметка незаполненного снимается у тех элементов формы, значение свойства ОтметкаНезаполненногокоторых равно значению Ложь. 5.6.11. Индексирование реквизитов объектов Большинство прикладных объектов конфигурации имеют в составе подчиненных объектов группу Реквизиты. В этой группе указываются дополнительные характеристики объектов. В режиме 1С:Предприятие часто требуется осуществлять отбор данных по значению какого-либо реквизита или сортировать списки данных по реквизитам. Средства «1С:Предприятия» позволяют выполнить подобную задачу, однако если данных достаточно много, такая задача может выполняться долго. Чтобы ускорить эту работу, следует реквизитам, по которым будет выполняться отбор или сортировка, устанавливать свойство Индексировать. Если свойство установлено (выбрано значение Индексировать или Индексировать с доп. упорядочиванием), то подобные задачи будут выполняться эффективнее. Для примитивных типов реквизитов указание индексирования предоставляет пользователям средство сортировки списка по щелчку мыши в области заголовка колонки. Наряду с сортировкой по реквизиту или отбором данных по значению какого-либо реквизита часто требуется, чтобы в результирующем списке данные были дополнительно отсортированы по основному представлению (наименованию или коду), т. е. в пределах одного значения реквизита записи были отсортированы по представлению. Добиться правильного результата можно, если выбрано значение индексирования Индексировать, а в условиях сортировки списка указаны реквизит и представление. Если возникает необходимость минимизации времени таких отборов или сортировки, то для реквизита следует выбрать значение индексирования Индексировать с доп. упорядочиванием (если выбор такого значения возможен). ВНИМАНИЕ! Механизм дополнительного упорядочивания будет эффективно использоваться только в том случае, когда в режиме 1С:Предприятие в условиях сортировки списка указан определенный порядок сортировки: сначала по реквизиту, а затем по представлению. Если такие условия сортировки не задаются, то использование значения Индексировать с доп. упорядочиванием не имеет смысла, т. к. оно будет эквивалентно обычному индексированию, однако размер индекса при этом будет больше. Индексирование с дополнительным упорядочиванием используется для реквизитов справочников, документов, планов видов характеристик, планов счетов, планов видов расчетов. Для реквизитов регистров допускается использование обычного индексирования. 5.6.12. Права Права доступа к объектам конфигурации можно редактировать как с помощью редактора прав доступа ролей (см. здесь), так и с помощью окна редактирования объекта (см. здесь). В окне редактирования объекта выполняется настройка прав доступа для данного объекта во всех ролях, которые существуют в системе. Имеется возможность задавать права доступа: ● для собственно объектов метаданных, ● табличных частей, ● реквизитов объектов. 5.6.13. Быстрый выбор За способ выбора объектов при заполнении полей ввода отвечают свойства Способ выбора и Быстрый выбор. Свойство Быстрый выбор отвечает за режим выбора по умолчанию. Свойство доступно только в том случае, если свойство Способ выбора имеет значение Обоими способами. Покажем работу свойств Быстрый выбор на примере. Допустим, у нас есть справочник Склады. У него свойство Способ выбора равно Обоими способами, а также установлено свойство Быстрый выбор. В этом случае по умолчанию выбор из значений справочника Складыво всей конфигурации будет осуществляться в режиме быстрого выбора. Если отключить свойство Быстрый выбор, то выбор по умолчанию станет Из формы. Также имеется возможность явного переопределения режима выбора для реквизита объекта метаданных и/или элемента формы. Для этого достаточно изменить значение Авто свойства Быстрый выбор на значение Использовать – для разрешения быстрого выбора или Не использовать – для запрещения быстрого выбора. По умолчанию свойство Быстрый выбор реквизита объекта метаданных и элемента формы установлено в значение Авто. Таким образом, получается трехуровневая схема управления режимом выбора: 1. Вначале платформа анализирует свойство Быстрый выбор элемента формы. 2. Если свойство равно Авто, то оно анализируется у реквизита объекта. 3. В случае равенства Авто выполняется анализ свойств Способ выбора и Быстрый выбор прикладного объекта, соответствующего типу реквизита. Если на каком-то из первых двух уровней (элемент формы и реквизит объекта) значение свойства Быстрый выбор отлично от Авто, анализ прекращается и выполняется выбор в определенном режиме. ПРИМЕЧАНИЕ. Если свойство Способ выбора прикладного объекта равно Из формы или Быстрый выбор (но только не Обоими способами), то установка свойств Быстрый выбор реквизита и элемента формы никак не влияет на способ выбора. 5.6.14. Связи параметров выбора Связи параметров выбора – данное свойство позволяет указать список реквизитов, которые будут поставлять значения, используемые при выборе значения реквизита, при открытии формы выбора, при отображении списка быстрого выбора и при выполнении ввода по строке. В качестве примера можно привести выбор договора с контрагентом. Вначале осуществляется выбор контрагента, а затем выполняется выбор договора только из списка договоров выбранного контрагента. Причем отбор автоматически изменяется при смене контрагента. Для того чтобы ограничить выбор, реквизиту в свойстве Связи параметров выбора устанавливается соответствие имени реквизита, по которому будет выполняться фильтрация выбираемых значений, и реквизита, из которого будет браться значение фильтрации. Рис. 119. Связи параметров выбора Значения, указанные в данном свойстве, будут переданы в открываемую форму через структуру Параметры(см. здесь). При этом значение колонки Имя будет соответствовать ключу элемента структуры, а значение реквизита, указанное в колонке Реквизит, – значению элемента структуры. Если в колонке Имя указано значение вида Отбор.Владелец, то будет создан параметр формы Отбор(типа Структура). В этой структуре будет создан элемент с ключом Код и значением, полученным из реквизита, указанного в колонке Реквизит (в нашем примере – Поставщик). Если имя у какого-либо элемента свойства Связи параметров выбора совпадает с именем какого-либо элемента свойства Параметры выбора (см. здесь), то приоритет отдается элементу из свойства Связи параметров выбора в том случае, если значение поля, указанного в элементе Связи параметров выбора, переданное в функцию ЗначениеЗаполнено(), возвращает Истина. При этом элемент из свойства Параметры выбора игнорируется. Также в окне редактирования связей параметров выбора можно задать режим очистки поля при изменении полей связи. Если значение свойства Режим изменения связанного значения равно Очищать, то поле будет очищено при интерактивном изменении значения связи (изменением считается также повторный выбор значения, ранее находившегося в поле) до наступления события ПриИзменении. В противном случае (значение свойства равно Не изменять) поле не будет очищено. Очистка происходит вне зависимости от реального изменения значения в элементе связи и выполняется до вызова обработчика события ПриИзменении. Если поле отображает данные таблицы (колонка таблицы или отдельное поле, связанное с текущими данными), то очистка такого поля производится, если источником данных для таблицы формы является ДанныеФормаКоллекцияили ДанныеФормыСтруктураСКоллекцией. Если реквизит, который нужно очистить, связан с табличными данными, а реквизит связи не является табличными данными, то очищаются значения во всех строках таблицы, где расположен реквизит, для которого выполнена настройка связей параметров выбора. Реквизит не может быть очищен, если он связан с колонкой реквизита типа ДинамическийСписок. Для стандартного реквизита Родительподчиненного справочника возможна ситуация, когда свойство Связи параметров выбора будет изменено системой автоматически. Это изменение происходит в следующих случаях: ● когда у справочника изменяется состояние подчиненности; ● когда у справочника изменяется значение свойства Иерархический справочник. Это изменение происходит следующим образом: ● если справочник является подчиненным и иерархическим, то для реквизита Родительв свойство Связи параметров выбора добавляется параметр Имя: Отбор.Владелец – Реквизит: Владелец; ● в противном случае параметр Имя: Отбор.Владелец – Реквизит: Владелец удаляется из списка параметров свойства Связи параметров выбора стандартного реквизита Родитель. Рассмотрим пример: на форме есть поле Покупательи поле РасчетныйСчетПокупателя. Для поля РасчетныйСчетПокупателясвойство СвязиПараметровВыбораустановлено в значение Объект.Покупатель, которое будет устанавливаться в поле отбора Владелец. Рис. 120. Очистка связанных элементов формы Тогда при интерактивном изменении значения поля Покупательбудет происходить автоматическая очистка значения поля РасчетныйСчетПокупателя. 5.6.15. Параметры выбора Параметры выбора – данное свойство позволяет указать значения параметров, которые будут применяться при выборе значения реквизита. Параметры выбора будут выполняться при открытии формы выбора, при отображении списка быстрого выбора и при выполнении ввода по строке. Например, необходимо ограничить выбор только теми товарами, у которых реквизит Видравен значению Перечисление.ВидыТоваров.Услуга. Для конкретного значения отбора можно указать список значений. Для этого при редактировании колонки Значение следует выбрать тип Фиксированный массив. Рис. 121. Параметры выбора Значения, указанные в данном свойстве, будут переданы в открываемую форму через структуру Параметры. При этом значение колонки Имя будет соответствовать ключу элемента структуры, а колонка Значение – значению элемента структуры. Если в колонке Имя указано значение вида Отбор.Код, то будет создан параметр формы Отбор(типа Структура). В этой структуре будет создан элемент с ключом Код и значением Значение. Если имя у какого-либо параметра свойства Связи параметров выбора (см. здесь) совпадает с именем какоголибо параметра свойства Параметры выбора, то приоритет отдается элементу из свойства Связи параметров выбора (параметр из свойства Параметры выбора игнорируется). Приоритет будет отдан в том случае, если значение поля, указанного в параметре Реквизитсвойства Связи параметров выбора, является заполненным (функция ЗначениеЗаполнено()для этого значения возвращает значение Истина). ПРИМЕЧАНИЕ. Значения, указанные в свойстве реквизита Параметры выбора, также используются динамическим списком и системой компоновки данных. При выборе значения субконто в ячейке таблицы, связанной с набором записей регистра бухгалтерии, автоматически устанавливается параметр выбора для поля Владелец, только если данный вид субконто имеет тип справочника дополнительных значений субконто. Значением параметра выбора является соответствующий вид субконто. 5.6.16. Прочее Свойство Использовать стандартные команды определяет возможность включения стандартных команд (например, команды открытия списка справочника) этого объекта в командный интерфейс. Если свойство имеет значение Ложь, то стандартные команды не будут отображаться системой, и включить объект в интерфейс можно только с помощью команды, созданной в конфигураторе. Свойство Форма выбора устанавливает форму, которая будет применяться для выбора значения реквизита. Используется для реквизитов, тип которых образован объектом метаданных, имеющим понятие форма. Например, у справочника Товарыесть несколько форм выбора, при этом для стандартного реквизита Родитель необходимо использовать особую форму. Для реализации такого поведения нужно указать эту особую форму в свойстве Форма выбора стандартного реквизита Родитель(подробнее про стандартные реквизиты см. здесь). Формат – для типов Число, Булево, Датапозволяет задать формат, с помощью которого при выводе будут отображаться данные реквизита. Формат редактирования – свойство позволяет задать формат редактирования данных типов Число, Булево, Дата. Связь по типу – устанавливает связь с реквизитом, ограничивая тип вводимых значений для поля ввода. Настройка связи по типу имеет смысл для реквизитов с составным типом данных, логически связанных с другим реквизитом типа ПланВидовХарактеристик.Ссылка, в том числе для связи реквизита, содержащего субконто с реквизитом, который содержит значение типа Ссылка на план счетов. Элемент связи по типу содержит номер вида субконто для случая, если реквизит, с которым выбрана связь по типу, имеет значение типа Ссылка на план счетов. Например, есть два реквизита – ВидХарактеристикии Характеристика. У реквизита ВидХарактеристики– тип ПланВидовХарактеристикВидыХарактеристикТоваров.Ссылка; у реквизита Характеристика– тип Характеристика.ВидыХарактеристикТоваров. В свойствах реквизита Характеристикаможно установить свойство Связь по типу – ВидХарактеристики. Тогда тип выбираемого значения будет определяться типом, который задан для выбранного значения плана видов характеристик. 5.7. Константы В системе «1С:Предприятие» константы предназначены для хранения постоянной или условно-постоянной информации. Такая информация либо совсем не изменяется в процессе деятельности предприятия, либо изменяется достаточно редко. Наиболее простой пример подобной информации – название организации, которое, как правило, не меняется. Основная причина использования констант заключается в том, что в них один раз заносится какая-либо информация, которая затем может использоваться при формировании документов, в расчетах, при построении отчетных форм. Значение константы время от времени может редактироваться. Рассмотрим такой пример. Наиболее часто на документах предприятия встречается подпись директора и главного бухгалтера. Естественно, что эти должностные лица должны самостоятельно ставить подписи. Но помимо самой подписи в документах требуется ее расшифровка – фамилия подписавшего документ. Конечно, можно ввести фамилии директора и главного бухгалтера непосредственно в формы документов. Но если какаялибо из фамилий изменится, то придется вновь редактировать все бланки документов и исправлять фамилии. Поэтому гораздо удобнее создать в конфигурации две константы – для хранения фамилий директора и главного бухгалтера, ввести эти фамилии в константы один раз, а в многочисленных бланках документов использовать имена констант для получения их значений. При смене директора или главного бухгалтера достаточно внести изменения только в константы – ввести в них новые фамилии, и все изменения автоматически будут отражены в тех местах, где эти константы используются. ВНИМАНИЕ! При изменении значения константы прежнее значение теряется. Для получения прежних значений данных вместо константы нужно использовать регистр сведений без измерений. Конфигуратор системы «1С:Предприятие» позволяет создавать практически неограниченное количество констант для хранения любой нужной информации. 5.7.1. Свойства константы Для работы с константами предназначена ветвь Константы дерева конфигурации. Свойства константы редактируются в палитре свойств. Необходимо обратить внимание, что константа является типизированным объектом конфигурации. Тип – указывается тип константы. Тип константы может быть любым из стандартных типов конфигурации (Дата, Число, СправочникСсылка, ДокументСсылкаи т. д.) или составным (состоящим из набора различных типов). В зависимости от выбранного типа палитра свойств может содержать дополнительные свойства, уточняющие выбранный тип. Если форму редактирования константы необходимо показать в командном интерфейсе, то следует установить свойство Использовать стандартные команды. В этом случае команда открытия редактора константы будет отображена в тех подсистемах, к которым отнесена константа. Форма редактирования константы задается с помощью свойства Основная форма (подробнее см. здесь). Формы для ввода констант создаются в ветви Общие формы (см. здесь). 5.8. Справочники При заполнении бланка какого-либо документа часто требуется указывать информацию, выбирая значение из заранее заданного списка. Возьмем в качестве примера анкету, которую требуется заполнять при поступлении на работу. При заполнении графы Место рождения необходимо указать населенный пункт. Хотя общее количество населенных пунктов достаточно большое, список всех населенных пунктов все-таки ограничен. Фактически место рождения можно указать, выбрав из подобного списка нужный населенный пункт. Такой список и представляет собой справочник. Таким образом, можно сказать, что справочник является списком возможных значений того или иного реквизита документа (в широком смысле слова «документ»). Справочники используются в тех случаях, когда необходимо исключить неоднозначный ввод информации. Например, для того, чтобы покупатель, продавец, кладовщик, директор понимали, о каком товаре идет речь, каждый должен называть его одинаково. И в этом случае необходим справочник. Обычно в торговом предприятии он имеет вид прайс-листа, а если такой справочник хранится в компьютере, то в него заносят всю возможную номенклатуру товаров, с которыми работает торговая фирма. Система «1С:Предприятие» позволяет вести практически неограниченное количество необходимых справочников. Каждый справочник представляет собой список однородных экземпляров объектов: сотрудников, организаций, товаров и т. д. Каждый такой экземпляр объекта будем называть элементом справочника. Следует иметь в виду, что в конфигурации создается структура справочника, а собственно его содержимое – элементы справочника – вводится пользователем при работе с программой. В процессе конфигурирования описывается структура информации, которая будет храниться в справочнике, разрабатывается экранное и, если необходимо, печатное представление справочника, задаются различные особенности его «поведения». Как правило, справочники имеют предопределенные реквизиты код и наименование, при этом код может иметь тип Числоили Строка. Система «1С:Предприятие» предоставляет широкие возможности по работе с кодами элементов справочника: автоматическое присвоение кодов, автоматический контроль уникальности кода и другие. Справочник в системе «1С:Предприятие» может быть иерархическим. Существуют два вида иерархии: иерархия групп и элементов и иерархия элементов. В первом случае все данные справочника будут разделяться на два вида: «просто» элементы справочника и группы справочника. Группы – это логическое объединение элементов справочника. Примером иерархического справочника может служить справочник товаров, где группами являются виды товаров («Сантехника», «Бытовая химия» и т. д.), а элементами – конкретные товары («Смеситель», «Зеркало», «Стиральный порошок»). Использование иерархических справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в иерархическом справочнике можно переносить из одной группы в другую. Для справочников с видом иерархии Иерархия элементов группы как самостоятельный вид отсутствуют. Их роль выполняют сами элементы. Отличительной особенностью таких справочников является функциональность всех элементов. Примером справочника данного вида может служить справочник подразделений. Каждое подразделение описывается одинаковым набором реквизитов и при этом логически может содержать другое подразделение или входить в него. Для иерархических справочников конфигуратор позволяет установить ограничение числа уровней справочников, или допускается неограниченное число уровней вложенности. Помимо кода и наименования для справочника можно создать набор реквизитов, позволяющих хранить дополнительную информацию об элементе справочника. Например, справочник Контрагентыможет содержать такие сведения, как полное наименование контрагента, его ИНН, фамилии директора и главного бухгалтера и другую информацию. Если объект предметной области, которой соответствует справочник, имеет не только такие «простые» свойства, например, полное наименование или ИНН, но и составные (списочные) свойства, справочнику может быть создан набор табличных частей. Например, в справочнике Контрагентыможет быть создана табличная часть для списка телефонных номеров контрагента. Имена реквизитов справочника не должны совпадать ни с одним именем реквизита из какой-либо табличной части. Для работы с информацией, хранящейся в справочнике, можно создать экранные формы. Могут быть созданы отдельные формы для просмотра списка элементов справочника, для редактирования элемента справочника, формы для выбора из справочника нужного элемента. Конфигуратор позволяет создать несколько форм одного типа, например, формы для выбора из справочника нужного элемента, и использовать разные формы в разных случаях. Рекомендуется создавать разные формы для отображения списка элементов и для выбора элементов справочника. 5.8.1. Свойства справочника Для работы со справочниками предназначена ветвь Справочники дерева конфигурации. При создании нового справочника открывается окно редактирования объекта (см. здесь). Иерархический справочник – если свойство установлено, то справочник имеет иерархическую структуру и становится доступным свойство Вид иерархии и Ограничение количества уровней иерархии. Вид иерархии – определяется, какой вид иерархии используется в данном справочнике. При выборе вида Иерархия групп и элементов для справочника определяются два вида элементов: группы и элементы. Группы предназначены только для объединения других групп и элементов справочника. Обычно для описания группы достаточно кода, наименования и родителя (ссылка на верхний уровень). Элемент справочника помимо этих реквизитов может содержать другие реквизиты, указанные на закладке Данные. Для справочников с этим видом иерархии можно создать формы группы и формы элемента. При выборе вида Иерархия элементов все элементы справочника равнозначны. Примером справочников такого вида могут служить справочники подразделений и статьи затрат. Размещать группы сверху – свойство становится доступным, если выбрано значение Иерархия групп и элементов. Если свойство Размещать группы сверху установлено, то при отображении справочника в виде иерархического списка группы окажутся в верхних строчках списка, а элементы справочника будут располагаться ниже. Если это свойство не установлено, расположение групп и элементов будет подчиняться установленным правилам сортировки (по коду, наименованию и пр.). Например, при создании новой группы с кодом большим, чем у всех имеющихся групп и элементов (при сортировке по коду), в первом варианте эта подгруппа окажется нижней среди групп, но выше остальных элементов справочника; во втором варианте она займет самую нижнюю строчку. Следует отметить, что установка или снятие свойства Размещать группы сверху не влияет на показ справочника в виде неиерархического списка. Количество уровней иерархии – свойство становится доступным, если установлено свойство Ограничение количества уровней иерархии. Справочники в системе «1С:Предприятие» могут иметь более одного уровня вложенности. Если свойство Ограничение количества уровней иерархии не установлено, то максимальное количество уровней вложенности справочника неограниченно. Владельцы – это свойство требует подробного объяснения. Любой справочник может использоваться как сам по себе, так и быть подчиненным какому-либо другому справочнику или справочникам. Например, справочник договоров может использоваться отдельно, а может быть связан со справочником организаций. Чтобы подчинить справочник другому, уже существующему в системе, в поле Список владельцев справочника следует нажать кнопку редактирования и в открывшемся окне выбора объекта отметить те справочники, которые являются владельцами данного справочника. Каждый такой справочник в системе «1С:Предприятие» называется владельцем, а сам справочник – подчиненным. В отличие от многоуровневого справочника, в котором все элементы имеют одинаковую структуру, использование механизма подчиненных справочников позволяет связать элементы разной структуры. В этом случае каждый элемент подчиненного справочника будет логически связан с одним из элементов справочникавладельца. Для справочников, которые имеют нескольких владельцев, у разных элементов могут быть владельцы разного типа, но у одного элемента может быть только один владелец. Использование подчинения – позволяет управлять ограничением, накладываемым на владельцев. Могут использоваться только элементы, только группы или и группы, и элементы. Если у справочника несколько владельцев, то ограничение применяется ко всем владельцам. Длина кода – свойство устанавливает максимальную длину кода элемента справочника. Конфигуратор позволяет установить длину кода равной 0. Это может понадобиться в тех случаях, когда код элемента справочника не используется. При назначении этого свойства желательно реально определить возможную длину кода. Однако следует иметь в виду, что в процессе эксплуатации конфигурации, если потребуется, длину кода можно увеличить. ПРИМЕЧАНИЕ. Максимальная длина кода равна 50. Длина наименования – в свойстве устанавливается максимально возможная длина наименования элемента справочника. Конфигуратор позволяет установить длину наименования равной 0. Это означает, что у справочника не будет наименования. ПРИМЕЧАНИЕ. Максимальная длина наименования равна 150. Серии кодов – свойство позволяет установить диапазон проверки кода на уникальность и автоматическое присвоение кодов. Если выбрана установка Во всем справочнике, то при автоматическом присвоении кода или при вводе кода пользователем вручную его уникальность будет проверяться среди всех элементов справочника. Установка В пределах подчинения справедлива только для иерархических и подчиненных справочников. В этом случае уникальность кода будет проверяться системой только в пределах той группы и того элемента справочника-владельца, в которую вводится новый элемент справочника или редактируется уже существующий элемент. При установке серии кодов В пределах подчинения нормальной является ситуация, когда находящиеся в разных группах элементы справочника имеют одинаковые коды. Это следует учитывать, если требуется переносить элементы многоуровневого справочника из одной группы в другую. При совпадении кода переносимого элемента с кодом уже существующего элемента в группе будет выдано предупреждение, и элемент не будет перенесен. При установке серии кодов В пределах подчинения владельцу в иерархических подчиненных справочниках обеспечивается автоматическая нумерация и контроль уникальности кодов среди элементов с одинаковым владельцем, но различными родителями. Тип кода – свойство позволяет выбрать тип значения для кода элемента справочника: Числоили Строка. Выбор строкового типа кода бывает полезным, когда используется сложная система кодирования, и код может включать помимо цифр также буквы и символы-разделители. Наиболее характерный пример – использование в качестве кодов артикулов для швейных изделий. Следует обратить внимание, что выбор строкового типа кода не исключает возможности автоматического присвоения таких кодов. Для самого первого элемента система формирует код вида 001 (количество нулей зависит от установленной длины кода), то есть код представляет собой строку символов, но все символы в этой строке являются цифрами. При вводе других элементов в справочник система будет продолжать присваивать коды аналогичным образом – 002, 003 и т. д. Если требования к ведению справочника предполагают непременное использование смешанных буквенноцифровых кодов, то для целей автоматической нумерации можно использовать коды вида AA001. Здесь первая часть кода – символы АА – является текстовым префиксом, а вторая часть – символы 001 – будет интерпретироваться системой как число и использоваться при автоматическом присвоении очередного кода. Например, если самым первым кодом в справочник введен АА001, то следующим автоматически присвоенным кодом будет АА002, затем – АА003, и так далее по возрастанию. Текстовый префикс можно задать вручную (при вводе в справочник нового элемента ввести такой «составной» код) или использовать возможности установки префикса из встроенного языка системы «1С:Предприятие» (метод УстановитьНовыйКод()). Допустимая длина кода – доступно в том случае, если свойство Тип кода установлено в значение Строка. С помощью свойства можно регулировать, строка какой длины будет хранить код. Если значение свойства равно Фиксированная, то длина строки, содержащая код элемента справочника, всегда будет равна значению, указанному в свойстве Длина кода. В противном случае длина строки будет равна реальному количеству символов, формирующих код элемента. Реквизиты. Любой новый справочник можно представить в виде таблицы, которая имеет две колонки: код элемента справочника и его наименование. Система «1С:Предприятие» помимо кода и наименования позволяет хранить дополнительную информацию об элементе справочника. При редактировании справочника можно описать набор дополнительных реквизитов, предназначенных для хранения таких дополнительных сведений. При показе справочника на экране эти реквизиты могут представляться в виде колонок табличного поля формы списка справочника. Кроме этого, сведения, хранящиеся в реквизитах, можно использовать при формировании в различных расчетах, при формировании отчетов и так далее. Используя механизм реквизитов справочника, легко организовать, например, картотеку сотрудников. Для этого достаточно для справочника Сотрудникисоздать реквизиты для хранения сведений об образовании, паспортных данных и прочей кадровой информации. С помощью встроенных средств поиска в справочнике при использовании конфигурации нужная информация о сотруднике может быть легко найдена. Табличные части. Для описания некоторых данных, относящихся к справочнику и не используемых самостоятельно, используют табличные части. Примером табличной части может служить состав семьи сотрудника (данные по каждому члену семьи описываются в реквизитах табличной части, а число членов семьи может быть произвольным), послужной список сотрудника и т. д. Если бы в приведенном примере сведения по составу семей сотрудников могли использоваться самостоятельно, то их можно было бы выделить в отдельный справочник, подчиненный справочнику Сотрудники. Основное отличие табличной части от подчиненного справочника в том, что на элементы справочника можно ссылаться, а на строки табличной части – нет. При обращении к элементу справочника он весь, вместе со всеми табличными частями, считывается из базы данных в память. Если табличная часть содержит достаточно большое количество строк, это может ухудшить производительность системы. Поэтому табличную часть стоит использовать, если не нужно хранить ссылки на элементы и количество элементов ограничено. Каждый справочник может иметь неограниченное число табличных частей. Автонумерация. Установка свойства приводит к тому, что вновь введенному элементу в справочнике код будет присваиваться при записи. Автоматически присвоенный код можно исправить. Контроль уникальности. Если код используется для однозначной идентификации конкретного элемента в справочнике, он должен быть уникальным (не должен повторяться). Если свойство Контроль уникальности установлено, проверка кода на уникальность будет проводиться автоматически при вводе в справочник нового элемента. Основное представление – в свойстве задается представление элементов справочника. Например, значения типа СправочникСсылка, введенные в реквизит документа, справочника или константу, будут представляться в виде кода или наименования элемента справочника в зависимости от данного свойства. Для форм списков данная колонка становится колонкой по умолчанию. При открытии списка эта колонка становится активной. Ввод на основании. На закладке Ввод на основании указывается, какие объекты конфигурации могут являться основанием для объектов данного типа и для каких объектов объекты данного типа могут являться основанием. По кнопке Конструктор ввода на основании запускается конструктор создания процедуры ввода на основании. Подробнее о работе с конструктором см. здесь. Примером ввода на основании может служить ввод документа Передача на реализацию на основании элемента справочника Товары. 5.8.2. Свойства реквизитов справочника Помимо основных свойств реквизиты справочника имеют следующие свойства: ● Тип – указывается тип данных реквизита. ● Использование – для иерархических справочников определяет использование реквизита для групп и элементов. 5.8.3. Предопределенные элементы справочника Разработчик конфигурации может создать для справочников набор предопределенных элементов и групп элементов (для иерархических справочников). Эти элементы не могут быть удалены пользователями в режиме 1С:Предприятие. Форма для ввода предопределенных элементов открывается нажатием кнопки Предопределенные на закладке Прочие окна редактирования объекта конфигурации. В конфигураторе вводятся только основные свойства элемента (имя, код и наименование). Имя элемента можно использовать в выражениях встроенного языка. Значения других реквизитов предопределенного элемента вводятся в режиме 1С:Предприятие. Визуально предопределенные элементы справочников в режиме 1С:Предприятие отличаются от элементов, созданных пользователями, видом пиктограммы. ВНИМАНИЕ! Для справочника, имеющего владельца, нельзя создать предопределенные элементы. И наоборот, справочнику, имеющему предопределенные элементы, нельзя назначить владельца. 5.9. Документы Документ – одно из основных понятий системы «1С:Предприятие». При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях. В большинстве своем документы, которые создаются в процессе настройки конфигурации задачи, являются электронными аналогами стандартных бумажных документов, однако использование этого типа данных может выходить далеко за рамки простой фиксации информации о хозяйственных операциях. Каждый документ содержит информацию о конкретной хозяйственной операции и характеризуется своим номером, датой и временем. Дата и время – наиболее важные характеристики документов, так как позволяют устанавливать строгую временную последовательность совершения операций. В конфигурации описывается только структура документа, конкретные экземпляры документов вводятся при работе с программой пользователем. Например, созданный в конфигурации документ Накладная при работе с системой «1С:Предприятие» позволит формировать накладные, которые будут иметь разное содержание, но одинаковый набор реквизитов, одинаковую логику поведения и так далее. Далее для простоты вместо термина «структура документа» будет использоваться термин «документ», подразумевая под этим средства для ввода и визуализации документа. Конфигуратор позволяет описать структуру документа, организовать формы для ввода информации в документ и описать алгоритм построения печатных форм документа. Помимо даты, времени и номера документа можно создать набор реквизитов, позволяющих хранить дополнительную информацию. Если объект предметной области, которой соответствует документ, имеет не только такие «простые» свойства, как, например, дату, номер и итоговую сумму, но и составные (списочные) свойства, документу может быть создан набор табличных частей. Например, в документе Расходная накладная может быть создана табличная часть для списка продаваемой номенклатуры. Для работы с документами в конфигурации может быть создано необходимое количество списков документов одного вида и журналов документов разного вида. Форма списка отличается от формы журнала в первую очередь тем, что в списке отсутствует колонка Вид документа (т. к. список содержит документы одного вида), а журнал обычно содержит эту колонку. При создании документа можно указать перечень журналов, в которых будет осуществляться работа с документами этого вида. Для документов разных видов можно указывать один журнал, что позволяет произвольным образом группировать документы в журналах. Назначенные документу журналы можно менять. Документы могут изменять состояние регистров учета (проводиться). Если документ проведен, то данные, которые указал пользователь при вводе документа, отразились в учетных регистрах системы – изменились остатки товаров на складах, изменилась задолженность перед контрагентом и т. д. Документы могут проводиться в реальном времени (оперативное проведение) и прошлой датой (неоперативной проведение). 5.9.1. Свойства документа Для работы с документами предназначена ветвь Документы дерева конфигурации. На этой же ветви располагаются служебные объекты конфигурации – нумераторы и последовательности. В этом разделе будут описаны специфические свойства документа в дополнение к общим свойствам объектов конфигурации, описание которых см. здесь. Свойства документа редактируются в палитре свойств или окне редактирования (см. здесь). Данные по документу в окне редактора распределены по закладкам. На закладке Основное размещены основные данные по документу. На закладке Данные вводятся реквизиты и табличные части. В палитре свойств каждому реквизиту помимо основных свойств указывают тип. Если требуется обеспечить быстрый поиск или отбор нужной информации по реквизитам документа, для реквизитов нужно установить свойство Индексировать (подробнее см. здесь). На закладке Нумерация объединены данные, которые используются для назначения правил нумерации документов. У любого документа существуют обязательные реквизиты, которые создаются автоматически и которые удалить нельзя, – это дата, время и номер документа. В отличие от даты и времени, для номера документа можно задать несколько параметров, которые будут управлять поведением этого реквизита при работе с документами создаваемого вида. Совокупность этих параметров будет определять правила нумерации документов при работе системы «1С:Предприятие». Автонумерация – установка свойства приводит к тому, что вновь введенному документу номер будет присваиваться автоматически. Автоматически присвоенный номер можно исправить. Нумератор – документу может быть назначен нумератор из числа уже существующих в конфигурации. Для назначения документу нумератора из числа существующих в конфигурации следует выбрать имя нумератора в свойстве Нумератор. В этом случае прочие элементы группы Нумерация документа окна, за исключением свойства Автонумерация, становятся недоступными, то есть правила нумерации документов данного вида будут полностью определяться назначенным нумератором. О создании и свойствах нумераторов см. здесь. Использование нумераторов позволяет организовать сквозную нумерацию документов разных видов. Для этого всем документам, для которых требуется иметь сквозную нумерацию, должен быть назначен один нумератор. Контроль уникальности и присвоение очередного номера будут выполняться с учетом всех документов, для которых назначен этот нумератор. Длина номера – устанавливает максимальную длину номера документа. Тип номера – свойство аналогично свойству Тип кода справочника (см. здесь). Допустимая длина номера – доступно в том случае, если свойство Тип номера установлено в значение Строка. С помощью свойства можно регулировать, строка какой длины будет хранить номер. Если значение свойства равно Фиксированная, то длина строки, содержащая номер документа, всегда будет равна значению, указанному в свойстве Длина номера. В противном случае длина строки будет равна реальному количеству символов, формирующих номер документа. Контроль уникальности – если это свойство установлено, то при вводе нового документа его номер проверяется на уникальность в пределах, установленных в свойстве Периодичность. Периодичность – свойство устанавливает пределы контроля уникальности номеров документов и период повторяемости номеров. Если свойство Контроль уникальности номеров документов установлено, то в свойстве Периодичность указывается, в каких пределах будет осуществляться этот контроль. При установленном свойстве Автонумерация система «1С:Предприятие» будет присваивать очередной порядковый номер каждому новому документу. После завершения периода, установленного в свойстве Периодичность, нумерация документов начнется с 1. На закладке Движения производится настройка поведения при проведении и отмене проведения документа. Проведение – свойство устанавливает, разрешено ли проведение документа при записи. Если выбрано Разрешить, то документ осуществляет движения регистров (изменяет их состояние). Другим следствием такого выбора будет автоматический вызов обработчика события ОбработкаПроведенияпроведения документа в режиме 1С:Предприятие, возникающего при нажатии кнопки формы документа, для которой при конфигурировании выбрано предопределенное действие Записать и закрыть (обычно кнопка ОК). Для формирования обработчика события ОбработкаПроведенияможно воспользоваться конструктором движения регистров (см. здесь), кнопка вызова которого расположена на закладке Движения окна редактирования объекта Документ. Оперативное проведение – свойство устанавливает, разрешено ли оперативное проведение документа. Для документов с разрешенным оперативным проведением при выборе не текущей даты проведение осуществляется в неоперативном режиме, т. к. учитывается уже свершившийся факт, который не требует контроля, осуществляемого в оперативном режиме (например, проверка остатка, указанного в расходной накладной товара). Если для документа разрешено Оперативное проведение, то при создании нового документа время документа «нулевое». При проведении система получает оперативную отметку времени, которая может совпадать с текущей датой и текущим временем, а может быть и больше, чем текущее время, и присваивает ее документу, после чего осуществляется оперативное проведение. Более подробно об оперативной отметке времени см. здесь. В случае редактирования документа с установленным свойством Оперативное проведение время уже отличается от текущего, поэтому при проведении (указана текущая дата) документа на экран выводится запрос о виде проведения. Если на вопрос о виде проведения выбрать Оперативное проведение, то для документа устанавливается текущее время. Если при редактировании изменить время (например, указать будущее время текущего дня), то система также установит текущее время. Если на вопрос о виде проведения выбрать Неоперативное проведение, то, когда формат даты не предусматривает ввода времени, в документе указывается время начала дня. Удаление движений – свойство доступно, если в свойстве Проведение выбрано Разрешить. Оно задает режим удаления всех записей при перепроведении или отмене проведения документа, которые документ записал в процессе проведения: ● Режим Удалять автоматически означает, что удаление производится системой при выполнении повторного проведения уже проведенного документа (перед записью новых движений) и при отмене проведения документа. ● Режим Не удалять автоматически означает, что удаление движений выполняется программно в специальных случаях. Этот режим используется, если нужно управлять удалением и при проведении, и при отмене проведения. ● Режим Удалять автоматически при отмене проведения означает, что система будет автоматически удалять движения только при отмене проведения. При перепроведении движения не будут удаляться автоматически. Этот режим устанавливается по умолчанию. Если свойство Удаление движений у документа установлено в значение Не удалять автоматически или Не удалять автоматически при отмене проведения, то для избежание дублирования информации, следует выполнять очистку наборов записей коллекции Движениявначале операции проведение. Запись движений при проведении – свойство определяет поведение системы при создании движений во время проведения документа: ● Режим Записывать выбранные (режим по умолчанию) означает, что набор записей коллекции движения будет записан только в том случае, если свойство набора Записыватьустановлено в значение Истина(вне зависимости от того, были модифицированы записи набора или нет). ● Режим Записывать модифицированные (устанавливается при конвертации из версий «1С:Предприятие 8.1» и более ранних) означает, что записаны будут те наборы записей, которые были модифицированы (для них система автоматически установит свойство Записыватьв значение Истина). По окончании записи документа система ставит всем наборам записей, регистрирующим движения документа, свойство Записыватьв исходное состояние, даже если запись завершилась неудачно. Заполнение последовательности – выбирается режим автоматического заполнения последовательностей. В окне редактирования на закладке Последовательности определяется вхождение документа в последовательности. В окне редактирования документа на закладке Журналы можно отметить те журналы документов, в которых при работе пользователя с системой «1С:Предприятие» будут отражаться документы данного вида. Необходимые формы журналов документов могут быть созданы потом. На закладке Ввод на основании размещено два списка объектов конфигурации. В верхнем списке необходимо указать объекты, на основании которых может вводиться документ, а в нижнем – для которых данный документ является основанием при вводе нового объекта. ВНИМАНИЕ! Документ может вводиться как на основании другого документа, так и на основании объектов другого вида (элементов справочника, плана видов характеристик, плана счетов и плана видов расчета). И наоборот, документ может являться основанием для ввода не только другого документа, но и объектов другого вида. Для создания процедуры, осуществляющей подготовку данных создаваемого объекта на основании образца, следует воспользоваться специальным конструктором, описание которого см. здесь. На закладке Права имеется возможность установки привилегированного режима при проведении (свойство Привилегированный режим при проведении) и/или при отмене проведения документа (свойство Привилегированный режим при отмене проведения): ● Если свойство установлено, то соответствующее действие (проведение или отмена проведения) система будет выполнять всегда в привилегированном режиме (при вызове проведения или отмены проведения на стороне сервера и в файловом варианте). Однако привилегированный режим не будет установлен, если проведение (или отмена проведения) документа выполняется в клиент-серверном варианте на стороне толстого клиента. В привилегированном режиме выполняется: ● Автоматическое удаление движений. ● Автоматическая запись движений. ● Соответствующий обработчик (ОбработкаПроведенияили ОбработкаУдаленияПроведения). Однако запись объекта выполняется в обычном (непривилегированном) режиме. ● Привилегированный режим включается системой после выполнения записи объекта перед началом проведения (перед удалением движений, если они удаляются автоматически). Аналогично и при отмене проведения. ● При создании новых документов свойства имеют значение Истина, если в свойствах конфигурации указан основной режим запуска – управляемое приложение, и Ложь, если основным режимом запуска указан обычный. 5.9.2. Механизм проведения документов Информация, отражающая хозяйственную деятельность предприятия, хранится в регистрах (см. здесь). Документы могут изменять состояние регистров. Этот процесс называется проведением. Данный механизм является рекомендуемым механизмом изменения состояния регистров. Проведение может выполняться в оперативном или неоперативном режиме (свойство Оперативное проведение). ПРИМЕЧАНИЕ. Как правило, механизм оперативного проведения используется для решения задач оперативного учета. 5.9.2.1. Оперативное и неоперативное проведение Механизм оперативного проведения предназначен для того, чтобы разделить случаи, когда документ проводится в реальном времени, и случаи, когда проведение документа отражает уже свершившийся факт. Проведение в реальном времени необходимо тогда, когда ввод и проведение документа не просто фиксируют в системе произошедшее событие, а участвуют в его формировании, помогая оператору правильно ввести информацию. Разумеется, это имеет смысл только в тот момент, когда данное событие происходит в реальной жизни. Классическим примером является ввод и проведение документа, отражающего продажу товаров со склада. При вводе такого документа в задачу оператора входит не только правильный ввод списка товаров, которые приобретает покупатель, но и выполнение различных проверок. Прежде всего, необходимо проверить, что запрашиваемый товар имеется на указанном складе. При этом очень важно, чтобы проверка учитывала тот факт, что одновременно с этим оператором работают и другие операторы, которые могут одновременно выписывать те же самые товары. Соответственно, задачей системы является не допустить продажу одного и того же товара двум покупателям. Кроме того, может потребоваться и проверка доступного покупателю размера кредита или наличие факта оплаты счета, а также другие самые разнообразные проверки. В то же время если документ вводится задним числом, то есть в момент его ввода известно, что такое событие уже произошло в жизни предприятия, например, конкретный товар уже отгружен клиенту, необходимость в таких проверках отпадает, и нужно просто отразить в учете произошедшее событие. В этом случае проведение документа только фиксирует событие, а не участвует в его формировании. Таким образом, задача механизма оперативного проведения заключается в разделении этих двух вариантов проведения и с точки зрения пользователя, чтобы он понимал, какой вид проведения выполняется, и с точки зрения алгоритма проведения документа, чтобы тот отработал действия, соответствующие текущему варианту проведения. Следовательно, оперативность или неоперативность проведения документа определяется по его дате. Если дата проводимого документа совпадает с текущей датой, то система будет проводить такой документ в оперативном режиме, не задавая вопросов, и в обработке проведения об этом можно узнать, чтобы выстроить определенный алгоритм проведения документа. 5.9.2.2. Расширение формы и проведение Кроме свойства документа Оперативное проведение существует возможность задания режима проведения у расширения формы документа. Свойство Использовать режим проведения может принимать следующие значения: ● Неоперативный – документ всегда будет проводиться в неоперативном режиме. Если отсутствуют права на неоперативное проведение, будет выдано исключение. ● Оперативный – документ всегда будет проводиться в оперативном режиме. Если отсутствуют права на неоперативное проведение, то будет выдано исключение при попытке провести документ прошлого периода. ● Запрашивать – система всегда будет запрашивать текущий режим проведения. ● Автоматически – в этом случае система работает по следующему алгоритму: ● если дата документа меньше текущей, выполняется неоперативное проведение; ● если дата документа равна текущей, выполняется оперативное проведение; ● если дата документа больше текущей, выдается исключение; ● если невозможно провести документ в выбранном режиме (не хватает прав доступа и т. д.), также будет выдано исключение; ● если на стороне клиента режим проведения неизвестен, то в параметр РежимПроведенияобработчика события ПередЗаписьюбудет передано значение Неопределено. Одной из задач оперативного проведения документов является размещение документов в хронологическом порядке на шкале времени. Такое размещение необходимо, в частности, для того, чтобы корректно списывались остатки по регистрам остатков (см. здесь) оперативного учета. Для размещения документов используются такие понятия, как момент времени и оперативная отметка времени. Рассмотрим эти понятия более подробно. Для определения положения документа на оси времени используется реквизит документа Дата, который содержит время с точностью до секунды. Это позволяет контролировать последовательность записи документов. Однако при большом объеме создаваемых документов вероятна ситуация, когда несколько документов будут иметь одинаковое значение даты (т. е. будут созданы в течение одной секунды). Как в этом случае определить последовательность созданных документов? 5.9.2.3. Момент времени Для обработки подобных ситуаций существует понятие момент времени. Момент времени представляет собой совокупность даты, времени и ссылки на объект базы данных. Он позволяет однозначно идентифицировать любой объект ссылочного типа базы данных на оси событий, но имеет смысл в основном только для документов. Кроме того, момент времени позволяет идентифицировать и необъектные данные, например, записи регистров, подчиненных регистратору. Понятие момента времени реализовано во встроенном языке при помощи универсального объекта МоментВремени. Для нескольких документов, имеющих одинаковую дату и время, последовательность их на оси событий определяется системой исходя из ссылок на эти документы. Она может не совпадать с последовательностью создания документов, и она недоступна для изменения пользователем, то есть нельзя каким-либо образом повлиять на последовательность документов внутри одной секунды или «вычислить», что один документ создан раньше, а другой – позже. 5.9.2.4. Оперативная отметка времени Оперативная отметка времени – это значение типа Дата. Оперативная отметка времени – это «основа», которая собственно и позволяет выполнять оперативное проведение документов. Оперативная отметка времени создается системой каждый раз при оперативном проведении документа. Ее значение формируется исходя из текущей даты сеанса и последней созданной оперативной отметки. 5.9.2.5. Поясное время При работе системы в различных часовых поясах необходимо учитывать эту особенность при получении оперативной отметки времени. Например, когда в единой информационной базе, физически расположенной в одном городе (часовом поясе), ведется учет нескольких удаленных предприятий (например, филиалы холдинга), которые расположены в других городах (и других часовых поясах). В этом случае необходимо, чтобы для каждого филиала выдавалась своя отметка времени. Для учета часовых поясов существует понятие часового пояса информационной базы и часового пояса сеанса. Часовой пояс информационной базы определяет часовой пояс, который по умолчанию будет установлен для нового сеанса. При создании информационной базы часовой пояс информационной базы не определен. Однако может быть установлен с помощью метода глобального контекста УстановитьЧасовойПоясИнформационнойБазы(). Информация о часовом поясе информационной базы сохраняется в базе данных и не меняется при операциях загрузки/выгрузки информационной базы. При создании начального образа информационной базы (с помощью механизмов распределенной информационной базы, см. здесь) в создаваемый образ переносится часовой пояс информационной базы, из которой создается образ. Если часовой пояс информационной базы не задан, то используется часовой пояс компьютера, на котором установлен сервер «1С:Предприятия» (в клиент-серверном варианте), или часовой пояс локального компьютера (в файловом варианте). Часовой пояс сеанса описывает тот часовой пояс, в котором работает конкретный сеанс. По умолчанию часовой пояс сеанса равен часовому поясу информационной базы. Часовой пояс сеанса может быть установлен с помощью метода глобального контекста УстановитьЧасовойПоясСеанса(). Часовой пояс сеанса сохраняется до конца сеанса. Используется для определения текущей даты сеанса и получения оперативной отметки времени. 5.9.2.6. Получение оперативной отметки времени В ходе оперативного проведения система изменяет время документа таким образом, чтобы очередной документ, проводимый в оперативном режиме, имел бы момент времени более поздний, чем у предыдущего оперативно проведенного документа. Для этого используется понятие оперативной отметки времени. Оперативная отметка получается системой автоматически при оперативном проведении, но может быть получена во встроенном языке в явном виде с помощью метода ПолучитьОперативнуюОтметкуВремени()на основании текущей даты сеанса. Текущая дата сеанса равна дате компьютера, приведенной к часовому поясу сеанса. Под приведением понимается пересчет местного времени компьютера в поясное время, заданное часовым поясом сеанса. Пересчет выполняется через универсальное координированное время (UTC). Все пользователи обращаются к единому механизму оперативной отметки времени, а механизм выдает каждому пользователю очередную отметку. Механизм получения оперативной отметки времени обеспечивает получение даты, большей, чем предыдущая отметка, полученная этим или другим пользователем в данном часовом поясе. В качестве оперативной отметки система, как правило, возвращает текущее время сеанса. Однако если текущее время больше или равно последней выданной какому-либо пользователю отметке, то возвращается значение на секунду большее, чем значение последней выданной отметки. Таким образом, обеспечивается получение при каждом обращении значения, по возможности соответствующего текущему времени, но в обязательном порядке большего, чем предыдущее полученное значение. Следует помнить, что различные сеансы с одинаковым часовым поясом будут использовать одно и то же время для получения оперативной отметки времени. Таким образом, будет существовать столько несвязанных оперативных отметок времени, сколько уникальных часовых поясов будет установлено в качестве часовых поясов сеансов. 5.9.3. Нумераторы Нумератор представляет собой объект конфигурации, описывающий правила нумерации документов: тип и длину номера документа, его периодичность, необходимость контроля уникальности. Основное назначение нумератора – обеспечить возможность сквозной нумерации документов разного вида. Для этого таким документам назначается одинаковый нумератор. 5.9.3.1. Управление списком нумераторов Для работы с объектами конфигурации типа Нумератор предназначена ветвь дерева конфигурации, которая расположена «внутри» ветви Документы и начинается у ключевого слова Нумераторы. 5.9.3.2. Свойства нумератора В этом разделе будут описаны специфические свойства нумераторов в дополнение к общим свойствам объектов конфигурации, описание которых см. здесь. Рис. 122. Свойства нумератора Тип номера – выбирается тип значения для номера документа – числовой или текстовый. Выбор текстового типа номера бывает полезным, когда используется сложная система нумерации документов, и номер документа может включать, помимо цифр, также буквы и символы-разделители. Длина номера – устанавливает максимальную длину номера документа. Периодичность – свойство устанавливает две важные характеристики нумератора: пределы контроля уникальности номеров документов и период повторяемости номеров. Если свойство Контроль уникальности номеров документов установлено, свойство Периодичность устанавливает, в каких пределах осуществлять этот контроль. Например, если установлена периодичность В пределах дня, то уникальность номеров документов будет контролироваться в пределах суток: на следующие сутки номера документов могут повторяться, но в пределах суток они будут уникальны. При установленном свойстве Автонумерация (см. здесь) система «1С:Предприятие» будет присваивать очередной порядковый номер каждому новому документу. После завершения периода, установленного в свойстве Периодичность, нумерация документов начнется с 1. Контроль уникальности – если это свойство установлено, то при вводе нового документа его номер проверяется на уникальность в пределах, установленных в свойстве Периодичность. 5.9.4. Последовательности документов Последовательности документов являются вспомогательными объектами конфигурации. Они предназначены для обеспечения проведения определенных документов в строгой хронологической последовательности. Все документы в системе «1С:Предприятие» образуют единую хронологическую последовательность. Для этого каждый документ имеет дату и время. Даже если два документа имеют одинаковую дату и одинаковое время, они все равно располагаются в определенной последовательности, определяемой моментом их ввода в систему. Дата и время документа могут быть изменены. Таким образом, независимо от порядка ввода документов они могут быть расположены в последовательности, отражающей реальную последовательность происходивших в хозяйственной жизни предприятия событий, которые данные документы отражают. В системе «1С:Предприятие» в процессе проведения документ выполняет некоторые действия, которые отражаются данным документом в различных механизмах учета, поддерживаемых «1С:Предприятием». Алгоритм проведения документа, как правило, отражает в учете данные, записанные в самом документе (в его реквизитах и табличных частях). Однако в некоторых случаях алгоритм проведения документа анализирует также и текущие итоги, используя их при проведении. Например, если документ списывает товары или материалы по средней себестоимости, то для определения суммы списания алгоритм проведения будет анализировать остатки товаров (материалов) на момент документа. Если списание выполняется по методам LIFO или FIFO, то алгоритм проведения будет анализировать существующие остатки товаров (материалов) в разрезе партий на момент позиции документа, определяемой датой и временем проведения документа. Очевидно, что документы, основывающиеся при проведении на данные итогов, должны проводиться строго последовательно. Однако на практике из-за ошибок при вводе информации и несвоевременного поступления документов часто приходится вводить или исправлять документы задним числом. Разумеется, в этом случае движения регистров, сформированные всеми последующими документами (расположенными после того, который был исправлен), становятся некорректными. Например, если выяснилось, что в одной из приходных накладных, введенных в начале месяца, было неверно указано количество товара, то во всех последующих расходных накладных, списывающих имеющиеся в наличии партии, необходимо заново проанализировать остатки с учетом внесенных изменений и заново записать движения регистров. То есть все документы, анализирующие остатки и расположенные после измененного документа, должны быть перепроведены. Для автоматического контроля необходимости перепроведения документов используются объекты ветви Последовательности. Каждый введенный в конфигурации объект Последовательность обеспечивает контроль за порядком проведения документов указанных видов. Таким образом, в системе может существовать несколько независимых последовательностей. 5.9.4.1. Управление списком последовательностей Работа по созданию объектов конфигурации типа Последовательность ведется в окне Конфигурация. Для последовательности отведена отдельная ветвь дерева конфигурации, которая расположена «внутри» ветви Документы и начинается у ключевого слова Последовательности. 5.9.4.2. Свойства последовательности документов В этом разделе будут описаны специфические свойства пос