Простейший кадровый учет
Сейчас мы создадим мини-систему кадрового учета сотрудников предприятия. Она позволит принимать и увольнять сотрудников, а также работать с кадровыми документами.
Каждая конфигурация должна храниться в отдельном каталоге (папке).
1. Создайте новую папку на любом диске, например, "C:\Учебная"
2. Запустите 1С:Предприятие. Откроется список информационных баз.
1С:Предприятие может работать с несколькими базами данных на одном компьютере. Например, в одной базе ведется кадровый учет, в другой базе - учет товаров, в третьей - бухгалтерский учет для Фирмы А, в четвертой - бухгалтерский учет для фирмы Б.
3. Нажмите кнопку Добавить. Укажите имя информационной базы, как оно будет отображаться в списке баз, например "Учебная". Имя базы может быть произвольным, от него ничего не зависит.
4. В следующем поле укажите путь к папке, которую вы создали на 1 шаге. Нажмите кнопку "…", войдите в папку и нажмите Выбрать.
Папка может располагаться на локальном жестком диске компьютера, например "C:\Учебная" или на другом компьютере в сети, например, "\\SERVER\KADR". При этом должны быть предоставлены полные права доступа к этой папке (чтение, запись и т.д.).
5. Нажмите ОК. В списке информационных баз появится новая строка. Для ее редактирования можно нажать кнопку Изменить. Например, информационную базу перенесли в другое место или вы хотите задать другое название для информационной базы. Для удаления информационной базы из списка нужно нажать кнопку Удалить. При этом информационная база удаляется из списка, но не удаляется физически с диска.
6. Укажите режим запуска Конфигуратор.
1С может запускаться в четырех режимах:
7. Нажмите ОК для запуска базы в режиме конфигуратор.
8. Так как в созданной папке пока ничего нет, то 1С спросит в каком формате будет храниться база данных: В файлах DBF или на SQL-Server Укажите формат "Файлы DBF" и нажмите ОК.
9. Запустится конфигуратор. Откройте дерево конфигурации, в котором мы будем работать очень часто. Для этого щелкните меню Конфигурация => Открыть конфигурацию или кнопочку . Появится окно дерева конфигурации. Задайте ему нормальные размеры.
В этом окне представлены все объекты конфигурации, такие как справочники, документы, отчеты и т.д. Для раскрытия какой-то ветки нужно два щелкнуть на плюсике или два раза щелкнуть на ее названии.
Создание объектов конфигурации
10. Установите курсор на строку Справочники и щелкните кнопку (или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников.
Конструктуры предназначены для помощи программисту в выполнении определенных действий. Только что мы увидели конструктор справочников. В 1С есть еще конструктур документов, конструктор отчетов, конструктор запросов и т.д. Все действия, которые делает конструктор, можно выполнить вручную, но возможно, что с конструктором будет быстрее. Если вам конструктор не нужен (или не нравится), тогда снимите флажок "Использовать конструкторы при создании новых объектов". В данном Учебнике мы все будем делать вручную, поскольку только так можно стать настоящим программистом и выжать из 1С все, на что она способна (или он? кстати, какого рода слово "1С". Это он, она или оно?).
11. Снимите флажок " Использовать конструкторы при создании новых объектов" и нажмите кнопку Отмена для закрытия конструктора. Он будет сопротивляться, но вы будьте настойчивы!
Потом вы всегда можете опять запустить конструктор из меню Конструкторы, но мы будем стараться делать все ручками.
12. Опять установите курсор на строку Справочники и щелкните кнопку (или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников уже не откроется, а появится обычное окно для редактирования структуры справочника.
13. Задайте идентификатор справочника (имя), например сейчас мы создадим справочник "Должности".
Идентификатор справочника очень важен, поскольку он будет использоваться при программировании. Его нельзя будет исправить просто так, поскольку придется также исправить все места в программе, где используется этот справочник. Относитесь к идентификатору справочника очень серьезно. Идентификатор должен быть лаконичным, понятным, отражающим содержимое справочника, например: "Страны", "Сотрудники", "Товары" и т.д.
Заметьте, что общепринятым правилом является множественное число в имени справочника, но это не обязательно. Например, вы можете создать справочник "АдреснаяКнига". В идентификаторах объектов, а также в названиях переменных не может быть пробелов, но могут быть цифры и знак подчеркивания. Идентификатор не может начинаться с цифры. Правильное название объектов, переменных - признак хорошего стиля программирования и залог успеха. Будьте профессионалами в этом деле!
14. Задайте длину наименования 30 символов.
У каждого справочника есть уже заранее заданные два поля "Код" и "Наименование". Вы можете редактировать длину наименования, длину кода, а тажке тип кода: Числовой/Текстовый.
15. Закройте окно структуры справочника Должности.
14. На всякий случай сохраните конфигурацию, чтобы ваш труд не пропал даром, если вдруг отключится электричество или прямо сейчас наступит конец света.
1С обнаружит, что конфигурация абсолютно новая и у нее нет даже такой вещи, как словаря данных! Пусть создает этот словарь, если он ей очень нужен.
Нажмите Да.
Так как мы редактировали структуру информационной базы, то 1С попросит разрешение на реорганизацию информационной базы. В больших конфигурациях (программах) это может быть очень длительный и сложный процесс, у нас пока все просто.
Нажимаем Да.
1С проанализирует структуру базы и покажет окно со списком изменений.
Нажмите кнопку "Принять".
После реорганизации базы появится сообщение "Реорганизация информациии закончена ".
15. Создадим справочник Сотрудники. (Установите курсор на Справочники и щелкните кнопку Новый). Задайте имя справочника (идентификатор) "Сотрудники".
16. Задайте длину наименования 100 символов.
В наименовании у нас будет храниться ФИО сотрудника. Иногда бывают довольно длинные имена, например "Александровский-Петровский Александр Александрович".
17. В этом справочнике у нас будет еще одно поле (реквизит, атрибут) Должность. Список реквизитов сейчас пустой. Нажмите кнопку Добавить, откроется окно редактирования свойств реквизита. Кстати, реквизит, атрибут и поле - это в принципе одно и то же. Просто нужно привыкнуть к слову "реквизит".
18. Задайте имя реквизита "Должность". Укажите тип реквизита "Справочник.Должности", который мы создали раньше. Это говорит о том, что значения данного реквизита будут выбираться из справочника Должности. Нажмите ОК.
19. Создайте реквизит Оклад (тип Число, Точность 2 знака после запятой)
20. Создайте реквизиты ДатаПриема и ДатаУвольнения (тип Дата)
21. Сохраните конфигурацию (на всякий случай).
Теперь у нас есть два справочника и можно ввести некоторые данные.
22. Запустите 1С:Предприятие в режиме Предприятие. Это можно сделать прямо из Конфигуратора, нажав кнопку . Появится окно 1С:Предприятие.
23. Откройте справочник Должности. Для этого щеклните меню Операции => Справочники => Должности. Откроется окно справочника.
Для более быстрого доступа к справочнику позже мы создадим меню, а пока только так.
24. Введите несколько должностей, используя кнопку или клавишу INS. Например, Директор, Бухгалтер, Программист.
Заметьте, что коды присваиваются автоматически, хотя их можно редактировать. При этом необходимо соблюдать уникальность кодов. Параметры уникальности можно настраивать в конфигураторе, например можно ее вообще отключить, если она не нужна.
По умолчанию установлена сортировка по Наименованию. Это позволяет набрать первые буквы названия должности и курсор автоматически перейдет на нужную должность. Можно установить и другой тип сортировки: по коду или по реквизиту. Для этого нужно щелкнуть правой кнопкой и выбрать Сортировка. Мы этого делать не будем и оставим все, как есть.
25. Закройте справочник Должности и откройте справочник Сотрудники. (Щеклните меню Операции => Справочники => Сотрудники).
26. Заведите нескольких сотрудников. Например, Иванов - директор, Петров - Бухгалтер, Сидоров - Программист.
Заметьте, что при указании должности открывается справочник Должности. Для выбора должности вам нужно два раза на нее щелкнуть.
В реальной жизни принятие сотрудника на работу производится кадровым документом "Приказ о приеме на работу". Поэтому сейчас мы это организуем.
27. Закройте 1С:Предприятие и запустите базу в режиме Конфигуратор.
28. Теперь создайте новый документ "ПриемНаРаботу". (установите курсор на Документы и щелкните Новый). Задайте имя документа ПриемНаРаботу.
29. Добавьте реквизит шапки "ФИО", укажите ему тип значения Строка и длина 100 символов. Нажмите ОК.
У документа есть шапка и табличная часть. В шапке содержатся реквизиты, которые относятся к документу в целом, например НомерДок, ДатаДок и т.д. В табличной части содержатся строки. Например, один документ Накладная содержит информацию по нескольким товарам. Такая ситуация в 1С предусмотрена. (правда не предусмотрена ситуация, когда в документе есть две или даже несколько табличных частей)
Кстати, у любого документа уже есть два заранее заданных реквизита шапки "НомерДок" и "ДатаДок".
Далее нужно создать таким же образом, как и реквизит "ФИО", остальные реквизиты и укажите для каждого из них правильный тип:
30. У документа должна быть удобная форма для ввода данных. Нажмите кнопку "Форма" в нижней части окна.
31. Так как мы сюда зашли в первый раз, то 1С предлагает автоматически создать форму документа.
Мы договорились все делать вручную, поэтому нажимаем Отмена.
32. Нам нужно создать форму следующего вида:
- Установите подходящие размеры формы.
· Разместите на форме текстовую надпись "Прием на работу". Для этого щелкните на кнопку внизу и затем на форме. - Укажите размер шрифта побольше, это же все-таки заголовок. Для этого щелкните правой кнопкой на надписи, выберите Свойства, щелкните вкладку Шрифт, снимите флажок "Шрифт по умолчанию" и укажите размер шрифта 12, Можете еще что-нибудь указать, например Цвет, жирность и т.д. Не бойтесь экспериментировать, мы же пока только учимся. нажмите ОК.
- Добавьте поле НомерДок на форму. Для этого щелкните кнопку появится окно. В нем установите флажок у реквизита шапки НомерДок, нажмите ОК и щелкните в каком-нибудь месте формы. Там появится поле НомерДок. Задайте ему размеры и перетащите в нужное место формы.
· Добавьте рядом текстовое поле с надписью "№".
· Аналогичным образом разместите на форме остальные реквизиты: ДатаДок, ФИО, Должность. Не забудьте рядом с ними разместить текстовые надписи.
· Кнопки ОК и Закрыть разместите по центру формы (по горизонтали). Для этого выделите их мышкой (обе одновременно) и щелкните кнопку . Попробуйте там и другие кнопки ради интереса. - Для открытия журнала документов Прочие щелкните Операции => Журналы документов => Прочие. Откроется журнал документов.
- Щелкните кнопку или нажмите клавишу INS. Откроется форма документа "Прием на работу" для ввода данных. Номер документа присвоится автоматически, дата документа - сегодняшнее число.
- Введите все данные: ФИО сотрудника, укажите ему должность и оклад.
· Нажмите кнопку ОК. Сначала документ будет записан, а потом проведен. При проведении сработает процедура ОбработкаПроведения и в справочник Сотрудники добавится новая строка. Проверьте это. - Напишите следующий текст в модуле документа в процедуре ОбработкаПроведения():
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НайтиЭлемент(Сотрудник);
СпрСотр.ДатаУвольнения = ДатаУвольнения;
СпрСотр.Записать(); - Нажмите кнопку и затем "Построить". Конструктур автоматически создаст все пункты меню.
- Меню можно сразу протестировать, как оно будет выглядеть для пользователя. Для этого нажмите кнопку "Пуск", появится тестовое окно. Посмотрите на меню и закройте тестовое окно.
- Кстати, вы можете попробовать научиться редактировать пункты меню. Смелее экспериментируйте. Например, перетащите пункт меню Кадровые документы в пункт Документы, а пункт Журналы документов удалите. Отделите журнал от документов разделителем. Мне кажется, так будет удобнее.
- Закройте редактор меню.
Кстати, рядом с этой кнопкой есть и другие элементы управления, которыми мы будем пользоваться в дальнейшем: кнопки, поля, переключатели, флажки и т.д.
Теперь в этот документ можно будет вводить данные о новом сотруднике. Затем пользователь нажмет кнопку ОК и ваша программа должна добавить в справочник Сотрудники новый элемент (новую строку). При нажатии ОК документ сначала будет записан, а потом будет проведен.
Проведение документов - очень важное понятие. Провести документ для пользователя означает пустить его в дело. При проведении документа совершаются изменения в информационной базе: добавлются данные в таблицы, увеличиваются или уменьшаются остатки товаров на складе, создаются новые бухгалтерские проводки и т.д.
Что конкретно произойдет при проведении документа определяется программистом. При проведении выполнится предопределенная процедура ОбработкаПроведения(). Именно в этой процедуре программист пишет программу, которая и совершает все изменения в системе. Сейчас нам нужно до нее добраться. Она хранится в "Модуле документа".
Для открытия модуля документа закройте экранную форму документа. На экране останется окно структуры документа. Внизу есть кнопка "Модуль документа", вот на нее и нажмите. Откроется окно для редактирования текста программы.
Там уже есть процедура ОбработкаПроведения, но внутри нее пока ничего существенного. Напишите там следующий текст, пока не вникая в его смысл.
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.Новый();
СпрСотр.Наименование = ФИО;
СпрСотр.Должность = Должность;
СпрСотр.Оклад = Оклад;
СпрСотр.ДатаПриема = ДатаПриема;
СпрСотр.Записать();
Хотя, если присмотреться, то можно кое-что понять. Первая строка обращается к справочнику Сотрудники. Вторая строка создает новый элемент, пока пустой. Потом заполняются реквизиты справочника, данные берутся из документа и переносятся в справочник. И в конце происходит запись измененного элемента в справочник.
Кстати, часто начинающие программисты забывают вызвать Записать(). Не попадайте в эту ловушку! Если вы не вызовете метод Записать(), то все ваши изменения не сохранятся в базе.
Обратите внимание, что каждый оператор в языке 1С заканчивается символом ";" (точка с запятой). После слова КонецПроцедуры точки с запятой не, потому что это не оператор, а операторная скобка (есть такое понятие в 1С). Точки с запятой нет также после слов Цикл и Тогда, но после слов КонецЦикла и КонецЕсли обязательно ставьте точку с запятой. В данной программе мы не использовали ни циклы, ни условия.
Также обратите внимание как оформляются комментарии.
// это комментарий
Комментарии не учитываются компилятором и предназначены для человека, которому нужно разобраться в программе. Комментариев не должно быть слишком много и слишком мало. Программа сама по себе должна быть понятна, без комментариев. Но в сложных местах в комментариях можно пояснить логику работы программы. Написание комментариев и понятных программ - тоже признак хорошего тона. Будьте в этом деле профессионалами!
· Закройте окно модуля и окно структуры документа. Сохраните конфигурацию.
Теперь можно попробовать принять нового сотрудника по всей форме.
· Запустите 1С в режиме Предприятие.
Все документы хранятся в журналах документов. Может быть вы не обратили внимание, но для документа "ПриемНаРаботу" был задан журнал по умолчанию "Прочие". Потом мы создадим специальный журнал для всех кадровых документов, а пока будем пользоваться тем, что есть.
Если вдруг выскочит ошибка, значит вы неправильно написали программу. Опять запускайте Конфигуратор и все перепроверяйте.
Можно сделать так, чтобы 1С проверяла программу на синтаксические ошибки автоматически при сохранении конфигурации. Для этого в Конфигураторе щелкните меню Сервис => Параметры и установите флажок "Проверять ошибки автоматически".
Заметьте, что отсутствие синтаксических ошибок не гарантирует того, что программа правильная. В ней по-прежнему могут быть ошибки. Такие ошибки могут выскочить при выполнении программы, а могут быть очень скрытые. Ошибки - главная беда программистов. Но еще большая беда - неправильное понимание требований заказчика.
Теперь организуем правильное увольнение сотрудников с помощью кадрового приказа.
· Создайте в Конфигураторе новый документ "Увольнение".
· Укажите, что он содержит реквизиты шапки "Сотрудник" тип "Справочник.Сотрудники и "Дата увольнения" тип Дата.
· Создайте для него удобную форму для ввода данных.
Первая строка создает ссылку на справочник Сотрудники. Вторая строка ищет в справочнике того сотрудника, который будет уволен. Следующая строка устанавливает ему дату увольнения. И последняя строка записывает сделанные изменения в справочнике.
Создадим журнал "КадровыеДокументы". Для этого установите курсор на "Журналы документов" в дереве конфигурации и щелкните Новый. Задайте имя журнала. Здесь больше ничего не трубуется.
Теперь откройте окно для редактирования структуры документа "ПриемНаРаботу". В верхней части окна измените журнал "Прочие" на журнал "КадровыеДокументы"
То же самое проделайте для документа Увольнение.
Сохраните конфигурацию на всякий случай.
Теперь создадим пользовательское меню. В окне конфигурации внизу есть вкладка Интерфейсы.
Для каждой категории пользователей программы может быть заведен свой собственный интерфейс. Интерфейс включает пункты меню и кнопки на панели инструментов. Например, кадровику необязательно залезать в зарплату сотрудников.
Создайте новый Интерфейс и назовите его Администратор. Интерфейс появится в списке интерфейсов.
Щелкните дважды на интерфейсе и выберите "Редактировать меню". Откроется окно редактора меню.
У него есть замечательная кнопка , которая автоматически создает все пункты меню. Сделаем исключение и воспользуемся помощью конструктора меню, потому что нам нужно создать обычное меню для доступа ко всем объектам без всяких заморочек. Если нужно сделать что-нибудь более интересное, например, добавить разделители, перегруппировать пункты меню, то это нужно будет делать вручную.
Сохраните конфигурацию и запустите ее. Проверьте работу документа Увольнение и пощелкайте меню.
На этом создание простейшей системы для кадрового учета завершено. Она позволяет принимать и увольнять сотрудников. Конечно, все очень неудобно. Уволенные хранятся вместе с работающими в одном списке. Реквизитов для хранения информации очень мало, нет печатных форм документов, нет кнопочек на панели инструментов, нет кадрового перемещения - куча пробелов в нашей системе. Но это же только простейшая кадровая система и она уже работает!
Для сравнения скажу, что написание такой же системы на другом языке программирования Visual Basic или Delphi займет в два-три раза больше времени и сил. Что бы там ни говорили недоброжелатели, но на 1С программы пишутся в несколько раз быстрее.