Главная Материалы Пошаговый пример разработки конфигурации в 1С 8.2 (2 часть)

Пошаговый пример разработки конфигурации в 1С 8.2 (2 часть)

 

Быстрая пошаговая демонстрация разработки приложения на платформе 1С:Предприятие 8.2.

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

Простая система кадрового учета

 

1 часть Пошагового примера разработки конфигурации в 1С 8.2

 

26. Теперь создайте новый документ "ПриемНаРаботу". (установите курсор на ветку Документы и щелкнув правой кнопкой мыши выберите Добавить). Задайте имя документа ПриемНаРаботу. Перейдите на закладку Данные.

27. Добавьте реквизит "ФИО", укажите ему тип значения Строка и длина 100 символов.

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

Кстати, у любого документа уже есть два заранее заданных реквизита "Номер" и "Дата".

Далее нужно создать таким же образом, как и реквизит "ФИО", остальные реквизиты и укажите для каждого из них правильный тип:
• реквизит Должность - тип "СправочникСсылка.Должности"
• реквизит Оклад - тип Число, длина 10, точность 2
• реквизит ДатаПриема - тип Дата

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

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

Что конкретно произойдет при проведении документа, определяется программистом 1С. При проведении выполнится предопределенная процедура ОбработкаПроведения(). Именно в этой процедуре программист пишет программный код на языке 1С, которыйи совершает все изменения в системе. Сейчас нам нужно добраться до процедуры ОбработкаПроведения(). Она хранится в "Модуле объекта".

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

В результате откроется окно для редактирования текста программы.

28. На панели инструментов найдите пиктограмму "Процедуры и функции" и нажав на нее выберете "ОбработкаПроведения".

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

СпрСотр = Справочники.Сотрудники.СоздатьЭлемент();
СпрСотр.Наименование = ФИО;
СпрСотр.Должность = Должность;
СпрСотр.Оклад = Оклад;
СпрСотр.ДатаПриема = ДатаПриема;
СпрСотр.Записать();

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

Кстати, часто начинающие специалисты 1С забывают вызвать Записать(). Если вы не вызовете метод Записать(), то все ваши изменения не сохранятся в базе.

Обратите внимание, что каждый оператор в языке 1С заканчивается символом ";" (точка с запятой). После слова КонецПроцедуры точки с запятой нет, потому что это не оператор, а операторная скобка (есть такое понятие в 1С). Точки с запятой нет также после слов Цикл и Тогда, но после слов КонецЦикла и КонецЕсли обязательно ставьте точку с запятой. В данной программе мы не использовали ни циклы, ни условия.

Также обратите внимание как оформляются комментарии.

// это комментарий

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

29. Закройте окно модуля и сохраните конфигурацию.

Теперь можно попробовать принять нового сотрудника по всей форме.

30. Запустите 1С в режиме 1С:Предприятие. В панели навигации выберете "Прием на работу". Перед  нами откроется список документов "Прием на работу" и это список пока пустой.

31. Создайте новый документ. Откроется форма документа "Прием на работу" для ввода данных. Номер документа присвоится автоматически после его записи, дата документа - сегодняшнее число.

Введите все данные: ФИО сотрудника, укажите ему должность, оклад и дату приема на работу.

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

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

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

32. Создайте в Конфигураторе новый документ "Увольнение". Укажите, что он содержит реквизиты "Сотрудник" тип "СправочникСсылка.Сотрудники" и "ДатаУвольнения" тип Дата.

33. Напишите следующий текст в модуле документа в процедуре ОбработкаПроведения():

СпрСотр=Сотрудник.ПолучитьОбъект();
СпрСотр.ДатаУвольнения=ДатаУвольнения;
СпрСотр.Записать();

Рассмотрим записанный программный код более подробно.

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

34. Создадим журнал "КадровыеДокументы". Для этого установите курсор на ветку "Журналы документов" в дереве конфигурации и щелкните "Добавить". Задайте имя журнала.

На закладке "Данные" укажите регистрируемые документы: "ПриемНаРаботу" и "Увольнение".

Создадим новые графы:

  • Сотрудник – для документа "ПриемНаРаботу" это реквизит "ФИО", а для документа "Увольнение" - это реквизит "Сотрудник";
  • ДатаПриемаУвольнения – для документа "ПриемНаРаботу" это реквизит "ДатаПриема", а для документа "Увольнение" - это реквизит "ДатаУвольнения".

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

 

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

Для сравнения скажу, что написание такого же прикладного решения в другой среде или на другом языке программирования (Visual Basic или Delphi) займет в три или даже в пять раза больше времени и сил. Что бы там ни говорили недоброжелатели, но на 1С программы пишутся гораздно быстрее.

Скачать конфигурацию "Наши Кадры", создаваемую в рамках нашего Пошагового примера разработки конфигурации в 1С 8.2

 Дополнительный функционал конфигурации "Наши кадры" на платформе 1С

 

Количество просмотров: 108926

Комментарии

  • <p>Теперь доступна для скачивания и сама конфигурация, создаваемая в рамках нашего пошагового примера!&nbsp;</p>
    02 июля 2013 , 15:58
  • <p>Спасибо за пошаговый пример, все получается красиво. Когда будет следующий пример?</p>
    03 июля 2013 , 11:43
  • <p>Следующим хочу сделать пошаговый пример по разработке конфигурации на платформе 8.3. Прежде всего для того, чтобы вы поняли, что серьезных изменений ни в конфигурировании объектов, ни в программировании на языке 1С в новой версии нет. Думаю будет познавательно.&nbsp;<span style="font-size: 1em; line-height: 1.5;">А вообще в планах сделать еще пошаговый пример простой бухгалтерии и простого складского учета. Но это после оформления уроков курса.</span></p>
    03 июля 2013 , 12:15
  • Нашел небольшую ошибку. На последнем скриншоте первая Дата (дата оформления документа) и вторая Дата (дата фактического приёма/увольнения) совпадают. Фактически в обоих местах стоит дата оформления. Видимо нельзя называть графу "резервированными" Дата и Номер, т.к. после того как я переименовал графу в ДатаПриёмаУвольнения всё заработало нормально.
    10 июля 2013 , 11:58
  • <p><a href="http://1c-uroki.ru/user/1281" style="border: 0px none; border-collapse: collapse; font-family: 'Lucida Sans Unicode', 'Lucida Sans', 'Lucida Grande', Verdana, Geneva, sans-serif;">Diableri</a>&nbsp;спасибо. Ошибку в примере исправил.</p>
    10 июля 2013 , 12:48
  • <p>И все же не совсем понятно. Переменная СпрСотр в модуле документа ПриемНаРаботу и в модуле документа Увольнение это одна и таже переменная указывающая на Справочники.Сотрудники ?</p><p>СпрСотр = Справочники.Сотрудники.СоздатьЭлемент();</p><p>СпрСотр=Сотрудник.ПолучитьОбъект();</p>
    27 июля 2013 , 20:28
  • <p>Для Александра. Если ли мы просто хотим, чтобы в форме списка справочника сотрудники при открытии формы была открыта группа &quot;Работающие&quot;, то в модуле формы нужно будет написать код в процедуре ПриОткрытии() и создать новую функцию (Работающие()). Вот итоговый код модуля формы списка справочника сотрудники:&nbsp;</p><p><span style="font-size: 1em; line-height: 1.5;">&amp;НаКлиенте</span></p><div>Процедура ПриОткрытии(Отказ)</div><div>ПеремРаботающие = Работающие();</div><div>Элементы.Список.ТекущийРодитель=ПеремРаботающие;</div><div>КонецПроцедуры</div><div>&nbsp;</div><div>&amp;НаСервере&nbsp;</div><div>Функция Работающие()</div><div>Возврат (Справочники.Сотрудники.НайтиПоНаименованию(&quot;Работающие&quot;));<span class="Apple-tab-span" style="white-space:pre"> </span></div><div>КонецФункции</div><div>&nbsp;</div><div>ПС: Логика кода: При открытии справочника мы переменной ПеремРаботающие присваиваем значение - ссылку на группу Работающие. Для этого мы вызываем функцию на сервере, которая нам и возвращает ссылку на группу работающие. А затем делаем текущей группой группу Работающие. :) Как видите все очень просто.&nbsp;Надеюсь, что более-менее понятно, все необходимые знания постараюсь дать в 5 уроке :)</div>
    05 августа 2013 , 16:17
  • <p>Цитирую вопрос Александра: &quot;<span style="font-family: 'Lucida Sans Unicode', 'Lucida Sans', 'Lucida Grande', Verdana, Geneva, sans-serif; font-size: 1em; line-height: 1.5;">Для Влада. Присваивание переменной СпрСотр = Справочники.Сотрудники.СоздатьЭлемент();&nbsp;мне понятно. А вот присваивание переменной СпрСотр=Сотрудник.ПолучитьОбъект(); не совсем&quot;.&nbsp;</span></p><p><span style="font-family: 'Lucida Sans Unicode', 'Lucida Sans', 'Lucida Grande', Verdana, Geneva, sans-serif; font-size: 1em; line-height: 1.5;">Почему же не понятно. Когда мы используем метод &quot;Создать объект()&quot; - мы создаем новый элемент справочника и сразу же этот новый жлемент (пока еще пустой) присваиваем переменной СпрСотр. Во втором случае у нас в документе есть ссылка на элемент (конкретную запись) в справочнике сотрудники и мы используя эту ссылку открываем даный элемент для изменения. Вот метод &quot;получить объект()&quot; и открывает нам конкретного сотрудника для изменения.</span></p><p><span style="font-family: 'Lucida Sans Unicode', 'Lucida Sans', 'Lucida Grande', Verdana, Geneva, sans-serif; font-size: 1em; line-height: 1.5;">PS: я планирую сделать отдельный раздел по синтаксису 1С и наиболее часто используемым методам и параметрам. Думаю все сразу станет понятно. Ну и плюс с 5 урока у нас начинается изучение синтаксиса :)</span></p>
    12 августа 2013 , 10:36
  • <p>Для Влада. Но мы ведь форму для списка справочника сотрудники не создавали. Создать?</p>
    14 августа 2013 , 08:34
  • <p>Для Александра. Конечно нужно создать форму списка справочника. Иначе мы просто не сможем описать никакие процедуры этой формы, в частности процедуру ПриОткрытии().</p>
    14 августа 2013 , 10:18