ЗМІНА СТРУКТУРИ І ФОРМ ДОВІДНИКА – ЧАСТИНА 3

к = 1

двеЦіфрУмнНаК = двеЦіфр

поки двеЦіфрУмнНаК < максКод цикл двеЦіфрУмнНаК = двеЦіфрУмнНаК * 10;

конецЦікла / / Поки

/ / Наступні цифри коду нового співробітника

послЦіфр = (максКод = 0, 1, максКод двеЦіфрУмнНаК / 10 + 1)

/ / Отже, код нового співробітника

Код = Число (Рядок (двеЦіфр) + Рядок (послЦіфр)) КонецПроцедури / / СоздатьКод

/ / ВводНового зумовлена ​​процедура, що викликається, якщо присутній

/ / В коді модуля форми, при введенні нового документа Використовуємо її для початкової

/ / Встановлення дати нового документа і дати прийому на роботу процедура ВводНового ()

ДатаДок = РабочаяДата ()

ДатаПріема = РабочаяДата () КонецПроцедури / / ВводНового

процедура відкриття () ОчістітьОкноСообщеній () ПріЗапісіПерепроводіть (1)

КонецПроцедури / / прочинене

Зауваження:

1&nbsp&nbsp&nbsp&nbsp&nbsp У формі списку для вибору довідника Сотруднікі_2, використовуючи яку ми визначаємо значення поля Підрозділи документа (див рис 534), в зумовленою процедурі прочинене розміщений виклик методу ВиборГруппи (1), що дозволяє вибирати групи Тому в загальному випадку ми можемо вибрати як підрозділ, так і співробітника Щоб поправити користувача, в процедуру СоздатьКод додані оператори, або здійснюють перехід від співробітника до підрозділу, або перешкоджають вибору підрозділи не того рівня (в нашому випадку це Цех 01) Ось вони:

/ / Якщо вибрано співробітник

якщо ПодразделеніеЕтоГруппа () = 0 тоді

/ / Знайдемо батьківську групу реквізит Підрозділ має тип Довідник

/ / Далі див процедуру СоздатьКод

/ / Перевіримо, що на наступному рівні підрозділи

/ / Якщо на наступному рівні підрозділ, то це не годитися інакше

КонецЕсли

/ / Далі див процедуру СоздатьКод

Більш досконалий спосіб вибору підрозділу по довіднику Сотруднікі_2 ми розглянемо в розд 743 при розробці документа Табель

2&nbsp&nbsp&nbsp&nbsp&nbsp Хоча реквізит Код довідника Сотруднікі_2 має числовий тип, виклик повідомити (ТіпЗначеніяСтр (сСотр_2 Код))

надрукує в рядку повідомлень слово Рядок Тому в процедурі СоздатьКод замість операторів присвоювання

кодПодр = сСотр_2Код максКод = сСотр_2Код

вжиті оператори

кодПодр = (ТіпЗначенія (сСотр_2Код) = 2, Число (сСотр_2Код), сСотр_2Код) максКод = (ТіпЗначенія (сСотр_2Код) = 2, Число (сСотр_2Код), сСотр_2Код)

перетворюють сСотр_2Код в число, якщо сСотр_2Код має символьний тип Згадавши, однак, що тип вираження в 1С визначається типом його першого операнда (розд 251), запишемо більш прості (за формою) оператори, в якихкодПодрі максКодмають числовий тип:

кодПодр = 1 * сСотр_2Код максКод = 1 * сСотр_2Код

5823&nbsp&nbsp&nbsp&nbsp МОДУЛЬ ДОКУМЕНТА ПРОВЕДЕННЯ І ВИДАЛЕННЯ ДОКУМЕНТА

При проведенні документа викликається створювана програмістом зумовлена ​​процедура модуля документа ОбработкаПроведенія У ній для нашого випадку враховуються такі стану документа:

1) проводиться новий документ

2) проводиться документ, з якого знято позначку видалення (при простановке позначки видалення документ стає непроведеним) Такий документ може мати відповідну йому запис у довіднику Сотруднікі_2

3) перепроводити раніше проведений документ

Видалення непроведеного документа про прийом на роботу за відсутності на нього посилань в інших обєктах можна виконати методом

Видалити (1)

відразу проставляє DBF-позначку про видалення При упаковці бази документ буде видалений з неї фізично

Видалення проведеного документа більш складний процес Тут можливі варіанти:

1) в системі немає посилань ні на документ (окрім посилання у створеній ним записи в довіднику Сотруднікі_2), ні на запис у довіднику Сотруднікі_2 (крім як у самому удаляемом документі)

2) такі посилання є, наприклад в журналі розрахунків Заробітна плата

У першому випадку слід видалити і документ, і породжену їм запис у довіднику Сотруднікі_2 У другому ні документ, ні запис у довіднику видаляти не можна, оскільки це призведе до порушення цілісності даних Оскільки аналіз посилань на призначені для видалення обєкти мається на 1С і здійснюється після вибору в меню Сервіс Видалення помічених обєктів, то для видалення документа слід використовувати підхід, при якому проставляється позначка 1С на видалення як документа, так і створеної ним в довіднику Сотруднікі_2 записи, а аналіз посилань оставляется 1С Код, який реалізує цей підхід, розташовується в зумовленою процедурі ОбработкаУдаленияПроведения, яка викликається при видаленні документа або при виконанні методу СделатьНеПроведенним

Код модуля документа з урахуванням вищенаведеного коментаря може бути таким:

/ / Виконує проведення документа, тобто додає або коригує запис

/ / В довіднику Сотруднікі_2, повязує запис довідника з документом, а

/ / Документ з відповідним записом довідника Сотруднікі_2 процедура ОбработкаПроведенія ()

перем сСотр_2, гр, прапор, флаг2

сСотр_2 = СоздатьОбект (СправочнікСотруднікі_2)

/ / Зберігаємо в гр підрозділ, куди приймається або переводиться співробітник сСотр_2НайтіЕлемент (Підрозділ)

гр = сСотр_2ТекущійЕлемент () прапор = Проведено ()

/ / Знаходимо в довіднику Сотруднікі_2 запис, з якою повязаний даний наказ

флаг2 = сСотр_2НайтіЕлемент (Співробітник)

якщо прапор + флаг2 = 0 тоді / / Якщо документ не проведено

сСотр_2Новий () / / І не знімається позначка на видалення

КонецЕсли

сСотр_2Родітель = гр / / Фіксуємо підрозділ (батька)

/ / Визначаємо і зберігаємо неперіодичні реквізити сСотр_2Наіменованіе = ПІБ

сСотр_2Код = Код сСотр_2Образованіе = Освіта сСотр_2ПріказПріем = ТекущійДокумент () сСотр_23апісать ()

/ / Встановлюємо звязок документа з записом довідника Сотруднікі_2

Співробітник = сСотр_2ТекущійЕлемент ()

/ / Записуємо періодичний реквізит Оклад з привязкою до документа УстановитьРеквизитСправочника (Співробітник, Оклад, Оклад, ДатаПріема)

/ / Знімемо, якщо вона є, позначку видалення запису про співробітника

/ / В довіднику Сотруднікі_2 Така позначка може зявитися при видаленні

/ / Документа, що народив цю запис (ом процедуру ОбработкаУдаленияПроведения) якщо (флаг2 = 1) і (сСотр_2ПометкаУдаленія () = 1) тоді

сСотр_2, СнятьПометкуУдаленія () КонецЕсли

якщо прапор = 0 тоді / / Якщо документ не проведено

/ / Обмежуємо час показу вікна з попередженням трьома секундами Попередження (Документ проведений”, 3)

інакше

Попередження (Документ перепроведен”, 3) КонецЕсли

КонецПроцедури / / ОбработкаПроведенія

/ / Викликається при видаленні документа або при виконанні методу СделатьНеПроведенним процедура ОбработкаУдапенияПроведения ()

перем сСотр_2, прапор

сСотр_2 = СоздатьОбект (СправочнікСотруднікі_2) прапор = сСотр_2НайтіЕлемент (Співробітник)

якщо прапор = 1 тоді

/ / Позначаємо для видалення запис у довіднику Сотруднікі_2 сСотр_2Удаліть (0)

КонецЕсли

КонецПроцедури / / ОбработкаУдаленияПроведения

Зауваження:

1 Попереднє визначення процедури модуля документа ОбработкаПроведенія і ОбработкаУдаленияПроведения 1С виконує з використанням транзакцій (розд 843), під час яких блокуються DBF-таблиці, в транзакціях беруть участь При многопользовательском режимі роботи блокування породжує конфліктні ситуації: інший користувач не може проводити або видаляти аналогічні документи Щоб знизити ймовірність конфліктів, в процедури ОбработкаПроведенія і ОбработкаУдаленияПроведения не слід включати виклики процедур, що припиняють обчислення, наприклад, такий, як Попередження, замінюючи її на виклик процедури Повідомлення

2 Реквізит наказу про прийом Співробітник після проведення документа дозволяє безпосередньо звертатися до створеної ним в довіднику Сотруднікі_2 записи, наприклад, так:

док = СоздатьОбект (ДокументПріказОПріеме) прапор = докНайтіПоНомеру (2, Дата (0))

якщо прапор = 1 тоді

/ / ДокСотруднікОбразованіе значення реквізиту Освіта в довіднику

/ / Сотруднікі_2 для співробітника, проведеного наказом № 2

Повідомити (докСотруднікОбразованіе) / / Надрукував Вища інакше

Попередження (Наказ № 2 не знайдений”) КонецЕсли

Тепер, коли є всі процедури, керуючі документом про прийом на роботу, включимо пункти Наказ про прийом і Зміна окладу (документ для цього пункту буде створений нижче), що викликають відповідно команди

ДокументыПриказОПриемеВвести і ДокументыИзменениеОкладаВвести

в колонку Документи меню інтерфейсу Учень, звязавши їх відповідно з акселераторами Alt + б і Alt +7 (рис 535), і додамо колонку Журнали з пунктом Кадрові накази, що дозволяє при допомоги команди

ЖурналыПриказыКадровыеОткрыть

відкрити журнал, який зберігає створені документи

Рис 535 Модифіковане меню інтерфейсу Учень

Збережемо зміни, відкриємо 1С: Підприємство і введемо декілька документів

5824&nbsp&nbsp&nbsp&nbsp ВИКЛИК ДОКУМЕНТА ІЗ ФОРМИ СПИСКУ ДОВІДНИКА СОТРУДНІКІ_2

Поки що із записом довідника Сотруднікі_2 може бути повязаний тільки один документ Наказ про прийом на роботу Для його виклику з форми списку довідника

Джерело: Бартеньев О В 1С: Підприємство: програмування для всіх Базові обєкти та розрахунки на одній дискеті М: Діалог-МІФІ, 2005 464 с

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*