МОДУЛЬ ФОРМИ СПИСКУ ДОВІДНИКА ДІТИ

Містить зумовлену процедуру прочинене, яка обчислює і обновляющую в результаті виклику процедури ІзменітьВозраст значення реквізиту Вік всіх записів довідника Діти Запис про дитину старше 18 років позначається для видалення Якщо форма списку довідника Діти відкривається не з довідника-власника, а, наприклад, вбудованої функцій ОткритьФорму, то в якості власника форми встановлюється останній співробітник з довідника Сотруднікі_2, що має дані про дітей у довіднику Діти

процедура ІзменітьВозраст (Діти, дт) далі

/ / Обновляє, викликаючи процедуру ІзменітьВозраст,

/ / Значення реквізиту Вік в довіднику Діти роцедура відкриття ()

перем сСотр_2, Діти, послВлад, дт дт = ТекущаяДата ()

/ / Створюємо обєкт Діти Він необхідний, оскільки відкривається довідник Діти

/ / Не може бути перепозиціонувати

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

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

/ / Переміщаємося на перший елемент довідника Сотруднікі_2 сСотр_2ВибратьЕлементи ()

поки сСотр_2ПолучітьЕлемент () = 1 цикл якщо сСотр_2ЕтоГруппа () = 1 тоді

продовжити / / Пропускаємо групи довідника Сотруднікі_2 КонецЕсли

ДетиИспользоватьВладельца (сСотр_2ТекущійЕлемент ())

/ / Або простіше: ДетиИспользоватьВладельца (сСотр_2)

/ / Встаємо на першому, що відноситься до елементу-власнику запису довідника Діти,

якщо ДетіВибратьЕлементи () = 1 тоді

/ / Використовуємо зміннупослВлад при автономному відкритті

/ / Форми списку довідника Діти послВлад = сСотр_2ТекущійЕлемент ()

КонецЕсли ІзменітьВозраст (Діти, дт)

конецЦікла / / Поки сСотр_2ПолучітьЕлемент () = 1

/ / Якщо довідник Діти відкривається автономно, наприклад, так:

/ / ОткритьФорму (СправочнікДеті)

/ / То власник відсутня Встановимо в якості такого

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

/ / Метод форми списку довідника ІспользоватьВладельца, повертає поточний

/ / Елемент-власник форми списку довідника Діти Якщо власника немає якщо ПустоеЗначеніе (ІспользоватьВладельца ()) = 1 тоді

ІспользоватьВладельца (послВлад) КонецЕсли

Діти = 0 сСотр_2 = 0

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

/ / Обчислює і оновлює значення реквізиту Вік для записів довідника Діти,

/ / Підлеглих раніше заданому власнику процедура ІзменітьВозраст (Діти, дт)

перем НГР, НГТ, НМР, НМТ, чіслоЛет, чіслоМес

/ / Вибір елементів довідника Діти, повязаних з елементом-власником поки ДетіПолучітьЕлемент () = 1 цикл

НГР = ДатаГод (ДетіДатаРожденія)

НГТ = ДатаГод (ДТ) чіслоЛет = НГТ НГР

якщо чіслоЛет> 18 тоді

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

КонецЕсли

якщо чіслоЛет = 0 тоді

НМР = ДатаМесяц (ДетіДатаРожденія) НМТ = ДатаМесяц (ДТ)

чіслоМес = НМТ НМР якщо чіслоМес = 1 тоді

ДетіВозраст = 1 місяць

іначеЕслі (чіслоМес = 2) або (чіслоМес = 3) або (чіслоМес = 4) тоді

/ / Наприклад, 3 місяці

ДетіВозраст = рядок (чіслоМес) + місяця ; інакше / / чіслоМес > 4 або чіслоМес = 0

/ / Наприклад, 7 місяців

ДетіВозраст = рядок (чіслоМес) + місяців ; КонецЕсли

інакше / / чіслоЛет> 1

якщо чіслоЛет = 1 тоді ДетіВозраст = 1 рік

іначеЕслі (чіслоЛет = 2) або (чіслоЛет = 3) або (чіслоЛет = 4) тоді

/ / Наприклад, 3 роки

ДетіВозраст = рядок (чіслоЛет) + року ; інакше / / чіслоЛет> 4

// Наприклад, 7 років

ДетіВозраст = рядок (чіслоЛет) + років ; КонецЕсли

КонецЕсли

Деті3апісать () / / Не забуваємо зберегти дані конецЦікла / / Поки ДетіПолучітьЕлемент () = 1

КонецПроцедури / / ІзменітьВозраст

Обчислення і оновлення реквізиту Вік можна було б виконувати тільки для конкретного власника в зумовленою процедурі ПріВибореВладельца Тоді в зумовленою процедурі прочинене підлеглого довідника досить модифікувати реквізит ДетіВозраст тільки для записів, підлеглих елементу-власнику, який повертається методом ІспользоватьВладельца При такому підході модуль форми списку довідника буде мати наступний код:

процедура ІзменітьВозраст (Діти, дт) далі процедура ПріВибореВладельца (влад) далі

процедура відкриття () перем влад

влад = ІспользоватьВладельца () / / Отримуємо власника при відкритті

/ / Обчислюємо і оновлюємо значення реквізиту Вік для записів довідника Діти,

/ / Підлеглих власнику влад

ПріВибореВладельца (влад) КонецПроцедури / / прочинене

/ / Викликає процедуру ІзменітьВозраст, яка обчислює і оновлює

/ / Значення реквізиту Вік для записів довідника Діти, підлеглих власнику влад

процедура ПріВибореВладельца (влад) / / Зумовлена ​​процедура

перем Діти, дт / / Запускається при зміні елемента-власника дт = ТекущаяДата ()

/ / Створюємо обєкт Діти Він необхідний, оскільки відкривається довідник Діти

/ / Не може бути перепозиціонувати

Діти = СоздатьОбект (СправочнікДеті) ДетиИспользоватьВладельца (влад)

/ / Встаємо на першому, що відноситься до елементу-власнику запису довідника Діти

якщо ДетіВибратьЕлементи () = 1 тоді ІзменітьВозраст (Діти, дт)

КонецЕсли Діти = 0

КонецПроцедури / / ПріВибореВладельца

процедура ІзменітьВозраст (Діти, дт)

/ / Текст процедури див вище КонецПроцедури / / ІзменітьВозраст

Джерело: Бартеньев О В 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>

*

*