Новости

Создание конфигурации для мини-системы торгового учета за 10 минут.

 

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

Для простоты сформируем пустую конфигурацию, чтобы не пришлось редактировать типовую, надо же уложиться в отведенное время!

Конфигурация состоит из трех частей: структуры метаданных, набора пользовательских интерфейсов и набора прав пользователей.

 

Постановка задачи. В первую очередь нас интересует структура метаданных. Наша гипотетическая фирма покупает и продает товары разных наименований, сотрудничает с различными организациями и хотя на сегодняшний день имеет всего один склад, уже завтра количество складов может увеличиться. Очевидно, нам понадобится ввести справочники Товар, Склад и Организация, чтобы иметь возможность использовать соответствующие списки данных. Справочник Товар, на всякий случай, пусть будет трехуровневым. Это позволит разделить все товары на группы (вдруг придется торговать не только сантехникой, а чем-то еще). В качестве документов будем использовать две накладные — приходную и расходную, предусмотрев для них один журнал. Для учета прихода и расхода товаров будем применять регистр остатков. Результаты торговой деятельности найдут свое отражение в отчете. Остальными типами метаданных для простоты пренебрегаем. Таким образом, мы получили расширенную постановку задачи.

 

Пример создания Справочника. Для начала займемся объектами метаданных типа Справочник, например, Товар. Использовав контекстно-зависимое меню, вызываем экранный диалог. (рис 2).

Рис. 2

Рис. 2

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

Меняем идентификатор Новый на Тов, для большинства значений управляющих элементов диалога оставляем значения по умолчанию: "Подчинен" (не подчинено), "Комментарий" (ничего не пишем, и так все ясно). Параметры "Автоматическая нумерация" и "Контроль уникальности" оставляем отмеченными. Это значит, что элементу, введенному в справочник, код будет присваиваться автоматически, при этом будет производиться проверка кода на уникальность. Параметры "Длина кода" (значение по умолчанию 5) определяет, что в справочнике Товары может храниться до 10000 наименований товаров. Если впоследствии окажется, что на самом деле список наименований товаров длиннее, этот параметр можно увеличить. "Длина наименования" (значение 25) означает, что максимально возможная длина названия элемента справочника равна 25 символам и также может быть увеличена в дальнейшем.

А вот количество уровней, в соответствии с поставленной задачей, увеличиваем и делаем равным 3. Параметр "Серии кодов" устанавливает диапазон проверки кода на уникальность. При значении "В пределах подчинения" уникальность будет проверяться только в пределах группы, в которую помещается новый товар. Параметр "Тип кода" имеет значение Числовой. Если бы было необходимо использовать сложную систему кодирования, например, использовать в качестве кода артикул швейных изделий (помимо цифр в них присутствуют также буквы и разделители), то параметр "Тип кода" имел бы значение Текстовый. Можно настроить также представление, в котором мы хотим видеть элементы справочника, "В виде кода" или "В виде наименования". Оставляем значение по умолчанию — "В виде наименования".

Теперь нужно подумать, какие следует ввести дополнительные реквизиты в справочник Товары. Пока что наш справочник можно представить в виде таблицы, в которой есть две колонки, код товара и его название. В таблице можно предусмотреть дополнительные поля для ввода информации. Целесообразно в качестве дополнительного реквизита использовать Цену Товара. При редактирования реквизита применяется диалог второго типа — палитра свойств. Для реквизита Цена задаем свойства "Тип значения" — Число, "Длина" — 10 (по умолчанию), и поскольку цена товара может меняться с течением времени, отмечаем опцию "Периодический".

Работа с Окном редактирования и Палитрой свойств при определении свойств других объектов метаданных происходит так же просто, хотя и имеет свои особенности. При создании Регистра "Регистр Тов" вводим измерения Товар (Тов) и Склад (Скл), в качестве ресурса нас интересует Количество (Кол) (рис 3).

Рис. 3

Рис. 3

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

О Документах. Перейдем теперь к созданию Документов и Журнала документов. В окне "Документ ПрихНакл" введем реквизиты шапки Организация (Орг) и Склад (Скл), а также реквизиты табличной части — Товар (Тов), Количество (Кол) и Сумма (Сум).

Находясь в окне редактирования "Документ ПрихНакл" нажимаем кнопку "Форма" и вызываем Редактор форм. (рис4).

 

Рис. 4

Рис. 4

Редактор форм.

Применяя Редактор форм, мы создаем экранные диалоги и печатные формы, которые будут доступны для конечного пользователя. Окно Редактора форм выполнено в виде рабочей книги, состоящей из листов трех типов: "Диалог", "Модуль" и "Таблица". Каждый лист имеет закладку со своим названием, которая всегда видна у нижнего обреза листов. Имя активного листа выделено жирным шрифтом. Это фактически совокупность трех редакторов.

    • Диалог — это редактор диалогов и служит для создания экранного диалога для работы пользователя с элементами данных. Лист этого типа может быть только один.
    • Модуль — это текстовый редактор и служит для создания алгоритма построения печатной формы элемента данных и процедур обработки действий пользователя при работе с диалогом. Лист этого типа может быть тоже только один.
    • Таблица — это табличный редактор и служит для создания шаблона печатной формы элемента данных. Листов этого типа может быть несколько или не быть совсем.

Окно редактора форм можно разделить на 2 или 4 подокна, в каждом подокне можно работать с любым из листов редактора форм. Можно, к примеру, создать несколько листов типа "Таблица" для описания различных форм элемента данных и задать для каждого листа уникальное имя. В дальнейшем при создании алгоритма можно использовать различные формы, созданные в окнах "Таблица".

Редактор диалогов.

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

В нашей конфигурации — это многоуровневый справочник товаров.

Редактирование диалога в общем виде заключается в размещении в пределах шаблона окна указанных выше элементов и редактировании их свойств. Для удобства при размещении можно использовать разметку. Одним из свойств, присущих элементу диалога, является свойство видимости.

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

При недостатке места в пределах шаблона "всплывающие" элементы могут накладываться друг на друга, и редактирование диалога очень усложняется. Для таких случаев в системе предусмотрен механизм слоев, работающий примерно так же, как в графических пакетах. Один слой обязательно активный, видимый, остальные, а их может быть любое количество, — пассивные, невидимые.

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

В окне Форма-Документ.ПрихНакл мы видим элементы, образованные по умолчанию. Это НомерДок, ДатаДок и таблица с колонками №, Тов, Кол и Сум. Вставим два Реквизита Диалога (меню, Команда Вставить) и в Палитре их свойств сделаем ссылки на идентификаторы Организация (Орг) и Склад (Скл). А в табличной части в свойствах поля Кол введем формулу (первое использование встроенного языка, до сих пор все делалось чисто визуальными средствами!)

Сум=Кол*Тов.Цена.Получить(ДатаДок)

Сумма в накладной теперь будет вычисляться как произведение количества товара на его цену, определенную датой документа (цена у нас может меняться). Теперь можно посмотреть, как этот элемент будет выглядеть в режиме исполнения, применив клавиатурную команду <Ctrl+R> или воспользовавшись меню.

А теперь зададим себе вопрос: "Где находятся данные, которые пользователь введет с помощью накладной?". Правильный ответ: "В документе накладная", потому что, хотя данные и введены, но они не попали в Регистр и, следовательно, не будут отражены в учете.

Можно в принципе вести учет и не используя механизм регистров. Но в этом случае при выполнении нового запроса программа будет вынуждена заново просматривать все накладные. А механизм регистров позволяет с самого начала легко организовать хранение данных в нужных разрезах.

Рис. 5

Рис. 5

Для того чтобы данные записывались в Регистр, нужно сформировать механизм проведения накладной. Пришла пора написать алгоритм проведения документа на встроенном языке системы в окне Модуль документа-Документ.Прих.Накл. (рис5). При его выполнении происходят следующие действия:

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

Рис. 6

Рис. 6

Но можно почти ничего не писать, а воспользоваться Синтакс-Помощником (рис6) и копировать готовые конструкции языка оттуда, не забывая вставлять, там, где это нужно, необходимые параметры.

 

Синтакс-Помощник облегчает написание программных модулей, оперативно предоставляя подсказку специалисту по встроенному языку. В верхней части его окна в виде дерева находится список элементов языка: операторов, управляющих конструкций, процедур и функций, системных констант и др.

Для удобства все элементы объединены в тематические разделы. В нижней части окна появляется краткое описание элемента языка, выбранного в верхнем окне. В верхней части окна есть также список Шаблонов, где специалист может сохранить часто используемые фрагменты текста. Поскольку программа на встроенном языке представляет собой текст, то для ее редактирования применяют специальный Текстовый редактор.

Текстовый редактор.

Текстовый редактор системы можно использовать двояко, для работы с "просто" текстом и для написания и редактирования модулей. В первом случае он работает аналогично обычному тестовому редактору Windows, второе применение более интересно. Когда редактор вызывается для редактирования модулей, он автоматически начинает опознавать элементы встроенного языка и выделять их цветом. Для лучшего восприятия и отладки модулей удобно использовать синтаксический отступ для выделения лидирующими пробелами управляющих конструкций встроенного языка. Текстовый редактор может выполнять такое форматирование автоматически.

Когда в модуле много процедур и функций, то для поиска и перехода к нужной можно применить режим поиска процедур. Ну и, конечно, модуль может быть проверен на правильность использования конструкций языка (команда Синтаксический контроль, меню Действие). Если есть ошибки, то специалист увидит их в окне сообщений с указанием номеров строк, где они обнаружены.

Но вернемся опять к нашей задаче. Объект Расходная Накладная создается теперь очень просто. Для этого Приходную накладную скопируем в буфер и тут же вставим в конфигурацию. Получился объект с именем ПрихНакладная1.

Рис. 7

Рис. 7

Изменим название на РасхНакладная, предпоследнюю строчку в модуле обработки документа также заменим на ДвижениеРасходВыполнить.

Теперь нам осталось сформировать отчет о движении товаров в определенный период времени. Для этого в модуле отчета должны выполняться следующие действия:

  • Выполнить запрос с интересующими нас параметрами к Регистру.
  • Затем нужно сформировать таблицу.
  • Внести результаты запроса в сформированную таблицу.

 

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

 

Рис. 8

Рис. 8

Табличный редактор.

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

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

Сохраним созданную конфигурацию и перейдем теперь в режим исполнения. Откроем справочники и введем в них информацию. В справочнике Товары образуем группу Сантехника и поместим в нее Кран по цене 10 руб. и Смеситель по цене 20 руб. В справочнике Склад укажем, что у нас один склад и называется он Основной. Покупатель и Поставщик будут у нас в справочнике Организации. Введем документ Приходная накладная — Смеситель 5 штук и Кран 7 штук. По расходной накладной отпустим Кран в количестве 2 штуки и сформируем отчет(рис9). Мы видим в отчете данные о количестве товара, о его Приходе, Расходе и Остатке на конец периода в разрезах, интересующих нас.

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

Рис. 9

Рис. 9

Набор прав пользователей.

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

Создав Категории пользователей (Директор, Администратор, Главный Бухгалтер, Товаровед и т. д.), мы назначаем каждой категории права, соответствующие ее статусу. Остается ввести список пользователей (Иванов, Петров и, кажется, Сидоров) и каждого из них отнести к определенной категории.

Такой подход не только прост, но и гибок в использовании. При изменении полномочий для определенной категории пользователей нет необходимости в редактировании прав каждого пользователя, — нужно только отредактировать текущий набор прав этой категории или назначить ей новый набор прав.

Индивидуальный интерфейс пользователя.

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

Таким образом, визуальное проектирование с помощью встроенных инструментов системы облегчает создание конфигурации и делает этот процесс более наглядным.