Система 1С:Предприятие

Часть 1. Введение

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

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

Для того чтобы легче понять взаимодействие этих частей системы, сравним ее с проигрывателем компакт-дисков. Как вы хорошо знаете, проигрыватель служит для того, чтобы слушать музыку. «На вкус и цвет товарищей нет», поэтому существует множество разнообразных компакт-дисков, на которых записаны музыкальные произведения на любой вкус. Чтобы прослушать какую-либо композицию, нужно вставить компакт-диск в проигрыватель, и проигрыватель воспроизведет записанное на диске музыкальное произведение. Более того, современный проигрыватель компакт-дисков даже позволит вам записать собственную подборку музыкальных произведений, т.е. создать новый компакт-диск.

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

Возвращаясь к системе 1С:Предприятие, можно сказать, что платформа является своеобразным «проигрывателем», а конфигурация – «компакт-диском». Платформа обеспечивает работу конфигурации и позволяет вносить в нее изменения или создавать собственную конфигурацию.

Существует одна платформа (1С:Предприятие 8) и множество конфигураций. Для функционирования какого-либо прикладного решения всегда необходима платформа и какая-либо (одна) конфигурация (рис. 1.1).

Рис. 1.1. Конфигураций много, а платформа – одна

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

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

Здесь следует сказать о небольшой двойственности терминологии, которая будет использоваться в дальнейшем. Двойственность заключается в употреблении разных терминов для обозначения одного и того же предмета: конфигурация и прикладное решение. Оба эти термина обозначают ту часть системы 1С:Предприятие, которая работает под управлением платформы и которую «видят» все пользователи (бывает, конечно, что пользователи работают и с инструментальными средствами платформы, но это «продвинутые» пользователи). Употребление одного или другого термина зависит от контекста, в котором ведется изложение.

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

Термин прикладное решение является более общепринятым и понятным для пользователя системы 1С:Предприятие.

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

В качестве примера существующих прикладных решений можно перечислить следующие типовые решения:

q  1С:Бухгалтерия 8 — универсальная программа массового назначения для автоматизации бухгалтерского и налогового учета, включая подготовку обязательной (регламентированной) отчетности. Это готовое решение для ведения учета в организациях, осуществляющих любые виды коммерческой деятельности: оптовую и розничную торговлю, комиссионную торговлю (в том числе субкомиссию), оказание услуг, производство и т.д.

q  1С:Предприятие 8. Управление торговлей — в комплексе решает задачи управленческого и оперативного учета, анализа и планирования; автоматизирует торговые, финансовые и складские операции; обеспечивает современный уровень управления предприятием.

q  1С:Зарплата и Управление Персоналом 8 — предназначена для комплексной автоматизации расчета заработной платы и реализации кадровой политики предприятий. Это прикладное решение нового поколения, в котором учтены как требования законодательства, так и реальная практика работы предприятий, а также перспективные мировые тенденции развития подходов к мотивации и управлению персоналом.

q  1С:Предприятие 8. Управление производственным предприятием — является комплексным прикладным решением, охватывающим основные контуры управления и учета на производственном предприятии. Решение позволяет организовать комплексную информационную систему, соответствующую корпоративным, российским и международным стандартам и обеспечивающую финансово-хозяйственную деятельность предприятия.

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

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

Вот тут и выходит на передний план конфигурируемость системы, поскольку платформа, помимо управления работы конфигурацией, содержит средства, позволяющие вносить изменения в используемую конфигурацию. Более того, платформа позволяет создать свою собственную конфигурацию «с нуля», если по каким-либо причинам использование типовой конфигурации представляется нецелесообразным.

Обратите внимание, как мы в одном абзаце перешли от прикладного решения к конфигурации. Ничего не поделаешь: для пользователя понятнее так, а для разработчика – по-другому.

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

Для того чтобы обеспечить такие возможности, система 1С:Предприятие имеет различные режимы работы: 1С:Предприятие и Конфигуратор.

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

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

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

При установке системы 1С:Предприятие у вас не должно возникнуть никаких трудностей. Процесс установки подробно описан в брошюре 1С:Предприятие 8.1. Руководство по установке и запуску, входящей в комплект документации системы 1С:Предприятие 8.1.

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

Будьте внимательны! Для выполнения примера, содержащегося в книге, нам потребуется информационная база, содержащая пустую конфигурацию, а не база, созданная из шаблона (рис. 1.2)

Рис. 1.2. Создадим информационную базу с пустой конфигурацией

Первое знакомство

Итак, запустим 1С:Предприятие в режиме конфигуратора. Перед вами окно конфигуратора. Именно с помощью этого инструмента мы будем создавать нашу конфигурацию.

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

Выполним первую команду, с которой начинается работа с любой конфигурацией, – Конфигурация 4 Открыть конфигурацию. На экране откроется…

Дерево конфигурации

Можно сказать, что дерево конфигурации – основной инструмент, с которым работает разработчик. Дерево конфигурации содержит в себе практически всю информацию о том, из чего состоит конфигурация (рис. 1.3).

Рис. 1.3. Дерево конфигурации

Наверняка у вас уже возник вопрос: почему в дереве что-то есть, если мы пока еще ничего не создавали? Дело в том, что для облегчения работы разработчика «все, из чего состоит конфигурация» сгруппировано, и сейчас дерево и показывает вам эти группы.

Если вы походите по дереву и понажимаете на , то увидите, что ни в одной группе ничего нет. Исключение составит лишь группа Общие 4 Языки, в которой вы обнаружите «нечто» под названием «Русский». Этот «Русский» платформа создала для вас сама, поскольку в данном случае конфигуратор использует русскоязычный интерфейс.

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

 

Объекты конфигурации

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

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

Для того чтобы систему 1С:Предприятие можно было быстро и легко настраивать на нужные прикладные задачи, все описание, которое содержит конфигурация, состоит из неких логических единиц, называемых объектами конфигурации.

Возможно, вы уже успели заглянуть в книгу 1С:Предприятие 8.1 Конфигурирование и администрирование, в которой дается краткое описание объекта конфигурации.

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

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

С одной стороны, объекты конфигурации представляют собой детали конструктора, из которого собирается конфигурация. Обычно в конструкторе существует некоторый набор деталей. Детали могут быть разного вида: длинные, короткие, квадратные, прямоугольные и т.д. Теперь представьте, что деталей каждого вида мы можем создавать столько, сколько нам нужно (скажем, 5 длинных и 3 коротких). Мы можем соединять детали между собой различными способами.

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

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

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

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

Так же «сложные» объекты конфигурации состоят из более «простых», и одни и те же «простые» объекты могут входить в состав сложных объектов. Такая структура позволяет упростить работу с объектами конфигурации, поскольку если мы знаем, как работать с каким-либо «простым» объектом, то в любом «сложном» объекте, в состав которого он входит, мы будем работать с ним все тем же образом.

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

Например, на каждом предприятии существуют различные документы, с помощью которых оно фиксирует факты совершения хозяйственных операций. Точно так же в конфигурации существуют объекты вида «Документ».

Кроме этого на каждом предприятии обязательно ведется список сотрудников, справочник номенклатуры или товаров. В конфигурации тоже есть специальные объекты вида «Справочник», которые позволяют разработчику создавать компьютерные аналоги таких списков.

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

Мы отойдем от такого «размытого» стиля изложения и в тех местах, где речь пойдет о конфигурации, будем использовать явное уточнение – объект конфигурации Справочник Сотрудники. Там же, где речь пойдет о базе данных, мы будем говорить просто: справочник Сотрудники.

Как работать с деревом конфигурации и как создать объект

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

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

После того как конфигурация открыта, ее состав появляется в окне дерева конфигурации. Это окно вы можете закрыть, как любое другое окно Windows, при этом конфигурация останется открытой (т.е. доступной для редактирования). Чтобы снова отобразить на экране окно дерева конфигурации, следует воспользоваться командой меню Конфигурация  Окно конфигурации.

Создать новый объект конфигурации можно несколькими способами, и вы всегда можете использовать наиболее понятный и удобный для вас.

Первый способ. Необходимо установить курсор на тот вид объектов конфигурации, который вас интересует, и в командной панели окна конфигурации нажать кнопку Действия  Добавить (рис. 1.4).

Рис. 1.4. Добавление нового объекта конфигурации

Второй способ. Вы можете воспользоваться контекстным меню, которое вызывается при нажатии на правую клавишу мыши.

Установите курсор на интересующий вас вид объектов конфигурации и нажмите правую клавишу мыши. В появившемся меню выберите пункт Добавить (рис. 1.5).

Рис. 1.5. Добавление нового объекта конфигурации

Теперь, взглянув на список кратких итогов главы, проверьте, насколько хорошо вы поняли изложенный материал.

После этого мы сможем с вами приступить к созданию первых объектов конфигурации.

ЧТО НОВОГО МЫ УЗНАЛИ

  • ·        что такое конфигурируемость системы 1С:Предприятие
  • ·        из каких основных частей состоит система
  • ·        что такое платформа и что такое конфигурация
  • ·        когда следует использовать термин конфигурация, а когда — прикладное решение
  • ·        для чего используются разные режимы запуска системы 1С:Предприятие
  • ·        что такое дерево конфигурации
  • ·        что такое объекты конфигурации
  • ·        что создает система на основе объектов конфигурации
  • ·        какими способами можно создать объект конфигурации


 

 

Часть 2. Справочник

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

Кроме этого вы узнаете еще об одном объекте конфигурации – Форма.

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

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

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

Создание справочника «Клиенты»

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

Так как наше ООО «На все руки мастер» оказывает услуги по ремонту бытовой техники, очевидно, что для ведения учета нам потребуется задать некоторую списочную информацию.

Для начала нам понадобится список сотрудников предприятия, которые будут оказывать услуги. Затем нам будет нужен список клиентов, с которыми работает наше ООО. После этого нам понадобится перечень услуг, которые может оказывать наше предприятие, и список материалов, которые могут быть израсходованы. Кроме этого нам потребуется список складов, на которых могут находиться материалы ООО «На все руки мастер».

Начнем с простых вещей – списка сотрудников и списка клиентов. Откроем в конфигураторе нашу учебную конфигурацию и создадим новый объект конфигурации Справочник.

Наша задача – создать справочник, в котором будут храниться наименования наших клиентов.

После того, как вы нажмете Добавить, система откроет окно редактирования объекта конфигурации.

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

На основании имени платформа автоматически создаст синоним – Клиенты. Свойство Синоним также есть у любого объекта конфигурации. Оно предназначено для хранения «альтернативного» наименования объекта конфигурации, которое будет использовано в элементах интерфейса нашей программы, то есть будет показано пользователю (рис. 2.1).

Рис. 2.1. Зададим имя и синоним справочника

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

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

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

Уникальность кодов платформа может отслеживать сама, поэтому от длины кода будет зависеть количество элементов, содержащихся в справочнике. Длина кода – 9 символов. В результате мы сможем использовать коды от 1 до 999999999 – этого вполне достаточно для нашего небольшого ООО «На все руки мастер».

Перейдем к длине наименования. 25 символов для нас явно мало, увеличим длину наименования до 50 (рис. 2.2).

Рис. 2.2. Согласимся с длиной кода и зададим длину наименования

Все остальные свойства объекта конфигурации Справочник мы оставим такими, как их предлагает система по умолчанию, и нажмем Закрыть.

Создание справочника «Сотрудники»

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

Вернемся в конфигуратор и создадим новый объект конфигурации Справочник. Назовем его Сотрудники.

Наша задача – создать справочник, имеющий табличную часть.

На закладке Данные зададим длину кода – 9, тип кода – Строка, длину наименования справочника равной 50 символам и добавим в справочник новую табличную часть с именем ТрудоваяДеятельность (рис. 2.8):

Рис. 2.8. Добавим в справочник «Сотрудники» новую табличную часть и зададим ее имя…

Создадим реквизиты табличной части ТрудоваяДеятельность (рис. 2.9):

•        Организация – тип Строка, длина 100,

•        НачалоРаботы – тип Дата, состав даты – Дата,

•        ОкончаниеРаботы – тип Дата состав даты – Дата,

•        Должность – тип Строка, длина 100:

Рис. 2.9. Создадим реквизиты табличной части справочника…


 

Для реквизитов НачалоРаботы и ОкончаниеРаботы мы выбрали состав даты – Дата, поскольку в системе 1С:Предприятие 8 значения типа Дата содержат как дату, так и время. В данном случае время начала и окончания работы нам безразлично.

Теперь нам следует выбрать вариант редактирования справочника. Очевидно, что редактирование в списке нам уже не подойдет, поскольку в списке мы не сможем редактировать табличную часть справочника и вводить информацию о трудовой деятельности.

Поэтому в справочнике Сотрудники мы выберем вариант редактирования справочника обоими способами – как в списке, так и в диалоге. Для этого перейдем на закладку Формы и установим соответствующий переключатель (рис. 2.10):

Рис. 2.10. Зададим вариант редактирования справочника…

Создание справочника Сотрудники завершено – теперь можно запустить 1С:Предприятие в режиме отладки и заполнить справочник.

Выполните пункт меню Отладка  Продолжить отладку, на вопрос системы (рис. 2.11):

Рис. 2.11. Диалоговое окно с вопросом

ответьте Да, на последующие вопросы ответьте так же, как и ранее.

В появившемся окне программы откройте справочник Сотрудники и убедитесь, что установлен режим редактирования справочника в диалоге (меню Действия  Редактировать в диалоге или аналогичная иконка в командной панели).

Создайте сотрудников Гусакова Николая Дмитриевича, Делового Ивана Сергеевича и Симонова Валерия Михайловича, как показано на рисунках. Обратите внимание, что строки табличной части справочника можно сортировать по содержимому любой из колонок или располагать в произвольном порядке, используя иконки командной панели (рис. 2.12, 2.13, 2.14):

Рис. 2.12. Заполнение элемента справочника «Сотрудники»

Рис. 2.13. Можно управлять порядком расположения строк табличной части

Рис. 2.14. Заполнение элемента справочника «Сотрудники»

Теперь мы можем приступить к созданию следующего справочника – Номенклатура.

 

 

СОЗДАНИЕ СПРАВОЧНИКА «НОМЕНКЛАТУРА»

Справочник Номенклатура будет содержать информацию об услугах, которые оказывает ООО «На все руки мастер», и о тех материалах, которые при этом могут быть использованы.

Этот справочник не будет сложным Единственная особенность, которой он будет обладать, – это наличие иерархической структуры. Для того чтобы справочником было удобно пользоваться, мы сгруппируем услуги в одну группу, а материалы – в другую. Кроме этого, поскольку ООО «На все руки мастер» оказывает самые разные услуги, они также будут логически собраны в несколько групп. То же самое можно сказать и про материалы.

Наша задача будет состоять в создании иерархического справочника. Создадим новый объект конфигурации Справочник и назовем его Номенклатура. Перейдем на закладку Иерархия и установим флаг Иерархический справочник (рис. 2.15).

Рис. 2.15. Сделаем справочник иерархическим…

На закладке Данные зададим длину кода – 9, тип кода – Строка, длину наименования справочника равной 100 символам.

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

Создадим две группы в корне справочника: Материалы и Услуги (меню Действия  Новая группа) (рис. 2.16):

Рис. 2.16. Созданные группы в справочнике «Номенклатура»

В группе Материалы создадим пять элементов (рис. 2.17):

 Строчный трансформатор Samsung,

 Строчный трансформатор GoldStar,

 Транзистор Philips 2N2369,

 Шланг резиновый,

 Кабель электрический:

Рис. 2.17. Добавление элементов в группу «Материалы»

В группе Услуги тоже создадим несколько элементов - услуги по ремонту телевизоров (рис. 2.18):

 Диагностика,

 Ремонт отечественного телевизора,

 Ремонт импортного телевизора.

И услуги по установке стиральных машин:

 Подключение воды,

 Подключение электричества:

Рис. 2.18. Добавление элементов в группу «Услуги»

Теперь разнесем услуги по двум смысловым группам: услуги по ремонту телевизоров и услуги по установке стиральных машин. Для этого в группе Услуги создадим еще две группы: Телевизоры и Стиральные машины (рис. 2.19):

Рис. 2.19. Добавление групп «Телевизоры» и «Стиральные машины»

Для того чтобы переместить услуги в соответствующие группы, в окне списка установим курсор на ту услугу, которую мы хотим переместить, и выполним команду Действия  Переместить в группу. В открывшемся окне выберем новую группу (рис. 2.20):

Рис. 2.20. Переместим услугу «Диагностика» в группу «Телевизоры»…

Аналогичным образом переместите в группу Телевизоры услуги Ремонт отечественного телевизора и Ремонт импортного телевизора. Услуги Подключение воды и Подключение электричества переместите в группу Стиральные машины.

Затем в группе Материалы создайте две группы: Радиодетали и Прочее. В группу Прочее поместите Кабель электрический и Шланг резиновый. Остальные материалы переместите в группу Радиодетали.

 

 

СОЗДАНИЕ СПРАВОЧНИКА «СКЛАДЫ»

В заключение мы создадим справочник Склады, который будет содержать информацию о складах, используемых ООО «На все руки мастер». Этот справочник будет содержать один предопределенный элемент – склад Основной, на который будут поступать все материалы.

Наша задача – создать справочник, содержащий предопределенные элементы. Откроем конфигуратор и создадим новый объект конфигурации Справочник с именем Склады. На закладке Данные установим длину кода – 9 и тип кода – Строка. Перейдем на закладку Прочее и нажмем кнопку Предопределенные. Система откроет список предопределенных элементов справочника. Сейчас он пуст, поэтому выполним команду Действия  Добавить и создадим предопределенный элемент с именем Основной (рис. 2.21):

Рис. 2.21. Заполнение предопределенного элемента справочника

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

Запустим 1С:Предприятие в режиме отладки и откроем справочник Склады. Добавим в справочник еще один склад, который назовем Розничный (рис. 2.22):

Рис. 2.22. Элементы справочника «Склады»

Обратите внимание, что система отмечает различными пиктограммами простой и предопределенный элементы справочника. Несмотря на то что можно изменить код или наименование у обоих элементов, пометка на удаление (или удаление) возможна только для простых элементов справочника. При попытке пометить на удаление предопределенный элемент система выдаст предупреждение (рис. 2.23):

Рис. 2.23. Системное предупреждение

Таким образом, теперь мы можем обозначить две характерные особенности предопределенных элементов:

§     на предопределенные элементы могут опираться алгоритмы работы конфигурации (т.к. возможно обращение к ним из встроенного языка по имени),

§     предопределенные элементы являются объектами базы данных, которые нельзя удалить в режиме 1С:Предприятия.

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

Обычные элементы «непостоянны» для конфигурации. В процессе работы пользователя они могут появиться, исчезнуть. Поэтому конфигурация хоть и может отличить их друг от друга, но рассчитывать на них в выполнении какихлибо алгоритмов она не может в силу их «непостоянства».

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

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

ОСНОВНАЯ КОНФИГУРАЦИЯ

И КОНФИГУРАЦИЯ БАЗЫ ДАННЫХ

До сих пор мы не углублялись в структуру системы 1С:Предприятие 8, но теперь пришло время сказать об этом несколько слов.

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

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

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

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

Таким образом, взаимодействие двух конфигураций можно представить следующим образом (рис. 2.24):

Рис. 2.24. Взаимодействие двух конфигураций

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

Если разработчик редактирует основную конфигурацию и редактируемый вариант основной конфигурации отличается от того, который сохранен, в заголовке окна дерева конфигурации появляется признак модифицированности конфигурации (*) – рис. 2.25:

Рис. 2.25. Заголовок окна дерева конфигурации

Если сохраненный вариант основной конфигурации отличается от конфигурации базы данных, в заголовке окна дерева конфигурации появляется знак отличия конфигураций (<!>) – рис. 2.26:

Рис. 2.26. Заголовок окна дерева конфигурации

Для сохранения основной конфигурации следует воспользоваться командой Конфигурация  Сохранить конфигурацию, а для обновления конфигурации базы данных необходимо выполнить команду Конфигурация  Обновить конфигурацию базы данных. При выполнении команды Отладка  Начать отладку система сама сначала сохраняет основную конфигурацию, а затем производит ее сравнение с конфигурацией базы данных. В случае если конфигурации отличаются, выдается запрос на обновление конфигурации базы данных, который вы видели в предыдущих примерах.

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

Таким образом, система старается облегчить жизнь разработчика и автоматизировать часто выполняемые операции.

Важным фактом является то, что именно в момент обновления конфигурации базы данных система создает (модифицирует) в базе данных те структуры хранения данных, которые мы описали в виде объектов конфигурации.

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

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

Палитра свойств

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

Если помните, мы использовали палитру свойств, когда создавали табличную часть и реквизиты табличной части объекта конфигурации Справочник Номенклатура.

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

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

В этом случае палитра свойств откроется и будет закреплена на рабочей области конфигуратора. Однако есть удобная возможность «открепить» палитру свойств (используя символ кнопки в заголовке окна палитры свойств – рис. 2.27):

Рис. 2.27. «Открепим» палитру свойств…

В этом состоянии, при наведении курсора мыши на любое другое окно, палитра свойств будет сворачиваться на дополнительную панель в правой части экрана (по умолчанию) (рис. 2.28):

Рис. 2.28. Кнопка на дополнительной панели

А при наведении курсора мыши на символ свернутой палитры свойств она будет открываться.

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


 

 

Объект конфигурации «Документ»

 

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

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

Свойства документа отличается от свойств всех остальных объектов базы данных. Документ обладает способностью проведения. Факт проведения документа означает, что событие, которое он отражает, повлияло на состояние учета. До тех пор, пока документ не проведен, состояние учета неизменно, и документ – не более чем черновик, заготовка. Как только документ будет проведен – изменения, вносимые документом в учет, могут вступить в силу и состояние учета может быть изменено.

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

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

Каждый документ, как правило, содержит информацию, которая подробнее описывает этот документ. Например, каждый документ ПриходнаяНакладная может содержать информацию о поставщике товаров, складе, на который приходуется товар, и т. д. Набор такой информации является одинаковым для всех документов одного вида, и для описания такого набора используются реквизиты объекта конфигурации Документ, являющиеся подчиненными объектами конфигурации. Большинство реквизитов объекта конфигурации Документ разработчик создает самостоятельно, однако у каждого объекта конфигурации Документ существуют два поля «по умолчанию»: Дата и Номер документа. Поскольку тип данных Дата содержит дату и время с точностью до секунды, этот реквизит и определяет в основном положение документа на оси времени.

 

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

Для «визуализации» документа существует несколько основных форм.

Таблица 3.1. Основные формы документа

Конфигуратор

База данных

Объект конфигурации Документ

Документ

Основная форма объекта

Форма документа

Основная форма списка

Форма списка документов одного вида

Основная форма для выбора

Форма для выбора из списка документов одного вида

Оперативное и неоперативное проведение

Факт проведения документа и необходимость поддержания актуальной последовательности документов на оси событий порождают два различных способа проведения документов: оперативное и неоперативное проведение.

С оперативным проведением документов связано понятие оперативной отметки времени.

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

Если последняя оперативная отметка меньше текущего времени, в качестве новой оперативной отметки принимается текущее время.

Если последняя оперативная отметка равна или больше текущего времени, в качестве новой оперативной отметки принимается значение на одну секунду большее, чем старая оперативная отметка времени.

Таким образом, если у объекта конфигурации Документ установлено свойство оперативного проведения, последовательность действий системы будет следующей: при создании нового документа система будет устанавливать ему текущую дату и «нулевое» время.

При проведении такого документа (с текущей датой) система установит в качестве даты документа оперативную отметку времени. Если отменить проведение документа и затем провести его снова (не изменяя даты), система установит документу новую оперативную отметку времени.

Если же попытаться перепровести документ, то будет выдан запрос о виде проведения (оперативное или нет).

В случае оперативного проведения система установит новую оперативную отметку времени, а при неоперативном проведении время документа будет сохранено прежним.

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

Типообразующие объекты

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

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

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

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

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

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

Создание документа «ПриходнаяНакладная»

После того, как мы познакомились с объектом конфигурации Документ, создадим несколько таких объектов, чтобы иметь возможность фиксировать события, происходящие в нашем ООО «На все руки мастер».

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

Для отражения этих событий в базе данных мы создадим два документа: Приходная накладная и Оказание услуги. Документ ПриходнаяНакладная будет фиксировать факт поступления в нашу организацию необходимых материалов, а документ ОказаниеУслуги – фиксировать оказание услуг и расход материалов, которые используются при оказании этих услуг.

Создадим новый объект конфигурации Документ. Зададим имя документа – ПриходнаяНакладная. Нажмем Далее.

Создадим реквизит документа с именем Склад и типом СправочникСсылка.Склады (рис. 3.1):

Рис. 3.1. Создание реквизита документа


 

После этого добавим табличную часть с именем Материалы и создадим у нее четыре реквизита (рис. 3.2):

§      Материал с типом СправочникСсылка.Номенклатура,

§      Количество с типом Число, длиной 15, точностью 3, неотрицательное,

§      Цена с типом Число, длиной 15, точностью 2, неотрицательное,

§      Сумма с типом Число, длиной 15, точностью 2, неотрицательное.

Рис. 3.2. Создадим табличную часть и опишем ее реквизиты

Перейдем на закладку Нумерация и зададим длину номера – 9 и тип номера – Строка.

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

Пока в нашей базе данных нет ни одного документа ПриходнаяНакладная, поэтому создадим новый документ (создать новый документ можно при помощи пункта меню Действия  Добавить, соответствующей иконки или клавишей Insert) (рис. 3.3).

Рис. 3.3. Добавим новый документ при помощи меню или иконки

Система автоматически присвоит номер новому документу, и нам останется только заполнить табличную часть. Заполним ее материалами для ремонта телевизоров так, как показано на рисунке (рис. 3.4):

Рис. 3.3. Добавим новый документ при помощи меню или иконки

Система автоматически присвоит номер новому документу, и нам останется только заполнить табличную часть. Заполним ее материалами для ремонта телевизоров так, как показано на рисунке (рис. 3.4):

Рис. 3.4. Заполнение документа «ПриходнаяНакладная №1»

Нажмем OK.

Аналогичным образом мы создадим второй документ, который будет приходовать следующие материалы для установки стиральных машин (рис. 3.5):

Рис. 3.5. Заполнение документа «ПриходнаянНакладная №2»

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

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

Создание формы документа

Прежде всего, следует заметить, что до сих пор мы использовали предопределенные формы объектов, которые система 1С:Предприятие создавала для нас сама «по умолчанию».

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

Вернемся в конфигуратор и откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная. В этом окне нас интересует закладка Формы. Как мы видим, ни одна из основных форм документа пока не задана.

Для того чтобы создать форму документа, нажмем на символ лупы в поле ввода (рис. 3.6):

Рис. 3.6. Создадим форму документа…

Система вызовет еще один полезный инструмент разработчика – конструктор форм. Этот инструмент также построен по принципу «мастеров»:  ввод данных в определенной последовательности и передвижение кнопками Далее и Назад (рис. 3.7).

Рис. 3.7. Конструктор форм

Выберем тип формы ФормаДокумента и нажмем кнопку Готово, согласившись тем самым со всем, что нам предложила система.

Обратите внимание, что в дереве объектов конфигурации у объекта конфигурации Документ ПриходнаяНакладная появилась форма ФормаДокумента, а на экране открылось окно редактора форм, содержащее эту форму (рис. 3.8):

Рис. 3.8. Новая форма документа и окно редактора форм

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


 

 

Сейчас мы обратим свое внимание только на те элементы управления, которые нас интересуют, – это три поля ввода, расположенные в колонках Количество, Цена и Сумма (рис. 3.9):

Рис. 3.9. Интересующие нас элементы управления…

Мы хотим, чтобы каждый раз, когда меняется значение в поле Количество или в поле Цена, в поле Сумма автоматически устанавливалось значение, равное Количество * Цена. Очевидно, что для этого нужно написать на встроенном языке команду, похожую на Сумма = Количество * Цена, которая будет выполняться при изменении значения поля Количество или Цена. Но как «поймать» эти моменты изменения?

Создание процедуры обработки события в модуле формы

Щелкните правой кнопкой мыши на поле ввода в колонке Количество и откройте для него палитру свойств (пункт контекстного меню Свойства). Прокрутите список до конца, и вы обнаружите перечень событий, которые могут быть связаны с этим полем ввода.

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

Среди событий, связанных с полем ввода, найдите событие При изменении. Это событие возникает после изменения значения поля ввода.


 

Щелкните по кнопке с лупой в конце поля ввода, и система создаст заготовку процедуры обработчика этого события в модуле нашей формы (рис. 3.10).

Рис. 3.10. Выберем событие «При изменении», и система создаст заготовку процедуры в модуле формы…


 

Модуль – это «хранилище» для текста программы на встроенном языке. В конфигурации существует большое количество модулей, которые расположены в различных ее точках. Они могут принадлежать некоторым объектам конфигурации (например, формам), а могут существовать сами по себе (принадлежать всей конфигурации в целом). Текст программы, содержащийся в модулях, будет использоваться платформой в заранее известные моменты работы системы 1С:Предприятие.

В модуль формы, в процедуру МатериалыКоличествоПриИзменении() добавим следующий текст (листинг 3.1):

Листинг 3.1. Процедура МатериалыКоличествоПриИзменении()

СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;

СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

В версии 1С:Предприятие 8.2 вместо ЭлементыФормы нужно использовать Элементы.

Листинг 3.1a. Процедура МатериалыКоличествоПриИзменении() для программы 1С версии 8.2 и 8.3

СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;

СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

 

Объясним назначение этих строк.

В первой строке мы обращаемся к программному объекту ЭлементыФормы. Этот объект является коллекцией значений, содержащей все элементы управления, расположенные на нашей форме. Каждый элемент управления формы можно получить, указав его имя в качестве свойства объекта ЭлементыФормы. В данном случае мы обращаемся к элементу управления с именем Материалы (ЭлементыФормы.Материалы).

Этот элемент управления отображает строки табличной части нашего документа. Получить ту строку, в которой в настоящее время осуществляется редактирование, можно при помощи свойства программного объекта ТабличноеПолеТекущиеДанные. Таким образом, в результате выполнения первой строки переменная СтрокаТабличнойЧасти будет содержать объект ДокументТабличнаяЧастьСтрока.ПриходнаяНакладная.Материалы, в котором находятся редактируемые данные.

Во второй строке вычисляется сумма как произведение количества и цены. Объект ДокументТабличнаяЧастьСтрока.<имя> позволяет обратиться к данным конкретной колонки, указав имя колонки в качестве свойства объекта (например, СтрокаТабличнойЧасти.Количество).

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

Замечательно. Но теперь хотелось бы и для поля Цена сделать то же самое. А если заглянуть вперед, то мы увидим, что подобное автоматическое заполнение поля Сумма может нам понадобиться и в других документах. Поэтому лучше будет поместить расчет суммы в некотором «общедоступном» месте, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм.

Для описания таких «общедоступных» мест служат объекты конфигурации Общий модуль, расположенные в ветке Общие Общие модули. Процедуры и функции, содержащиеся в этих модулях, могут быть доступны для любых объектов конфигурации.

Создание процедуры обработки события в общем модуле

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

Создадим объект конфигурации Общий модуль в ветке Общие  Общие модули и назовем его РаботаСДокументами. Он будет содержать следующий текст (листинг 3.2):

Листинг 3.2. Процедура РассчитатьСумму()

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

КонецПроцедуры

 

Важно! Во-первых, в программе 1С версии 8.2 и 8.3 в начале модуля необходимо добавить строчку &НаКлиенте. Таким образом текст общего модуля будет следующим:

 

&НаКлиенте

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

КонецПроцедуры

 

 

Во-вторых, в палитре свойств общего модуля РаботаСДокументами обязательно следует поставить флажок напротив пункта "Клиент(Управляемое приложение)".

 

 

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

Затем в модуле нашей формы изменим текст нашего обработчика (листинг 3.3):

Листинг 3.3. Процедура МатериалыКоличествоПриИзменении()

Процедура МатериалыКоличествоПриИзменении(Элемент)

СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;

РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

КонецПроцедуры

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

Проверим, как это работает, и убедимся, что ничего не изменилось.

Теперь осталось и для поля Цена установить такой же обработчик. Так как однажды мы уже написали в модуле формы нужную нам процедуру, то мы просто могли бы сопоставить ее также и другому событию другого элемента управления, расположенного в форме. Однако стандарты разработки конфигураций фирмы «1С» не допускают такого решения.

Согласно стандартам разработки фирмы «1С», у каждого события должен быть свой обработчик. Если одинаковые действия должны выполняться при изменении разных элементов управления (например, при нажатии нескольких кнопок), то в этом случае следует поступать следующим образом:

- создается отдельная процедура (функция), выполняющая необходимые действия;

- для каждого элемента управления создается отдельный обработчик с именем, назначаемым по умолчанию;

- из каждого обработчика вызывается требуемая процедура (функция).

Поэтому мы создадим обработчик события При изменении для поля ввода, которое расположено в колонке Цена, и повторим в нем вызов процедуры РассчитатьСумму из общего модуля (листинг 3.4):

Листинг 3.4. Процедура МатериалыЦенаПриИзменении()

Процедура МатериалыЦенаПриИзменении(Элемент)

 

СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;

//  

РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

 

КонецПроцедуры

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

 

Создание документа «Оказание услуги»

 

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

q  создать новый объект конфигурации Документ ОказаниеУслуги с реквизитами:

§      Склад, тип СправочникСсылка.Склады,

§      Клиент, тип СправочникСсылка.Клиенты,

§      Мастер, тип СправочникСсылка.Сотрудники,

q  создать табличную часть этого документа ПереченьНоменклатуры с реквизитами:

§      Номенклатура, тип СправочникСсылка.Номенклатура,

§      Количество, тип Число, длина 15, точность 3, неотрицательное,

§      Цена, тип Число, длина 15, точность 2, неотрицательное,

§      Сумма, тип Число, длина 15, точность 2, неотрицательное,

q  создать основную форму документа,

q  для полей ввода колонок Количество и Цена создать обработчик события ПриИзменении, в котором вызывать процедуру РассчитатьСумму() из общего модуля РаботаСДокументами.

В результате документ ОказаниеУслуги будет выглядеть следующим образом (рис. 3.11):

Рис. 3.11. Документ «ОказаниеУслуги»

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

Количество посещений

Website counter