УПРАВЛІННЯ записи з ПРОГРАМИ

Управляти записами довідників, тобто додавати, видаляти, редагувати, вибирати, шукати і сортувати записи, можна, користуючись наявними в 1С методами Для довідників У цьому розділі ми розглянемо методи, що мають відношення до додавання, редагування та видалення записів

5511&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Додавання запису

Новий елемент і група додаються в довідник відповідно методами Новий і НоваяГруппа Вони застосовні тільки з перемінними типу Довідник, певними функцією СоздатьОбект Для запису нового елемента використовується спосіб Записати

ПрикладУ довіднику Сотруднікі_2 створюється група 03 Цех, в яку заноситься інформація про співробітника цього цеху

процедура Виконати () / / Повязана з кнопкою Пуск обробки Проба перем сСотр_2, кодЦеха

ОчістітьОкноСообщеній () кодЦеха = 3

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

/ / Типу СправочнікСотруднікі_2

сСотр_2 = СоздатьОбект (СправочнікСотруднікі_2) якщо сСотр_2НайтіПоКоду (кодЦеха, 0) = 1 тоді

Попередження (Цех з кодом + кодЦеха + вже є”) повернення

КонецЕсли

сСотр_2НоваяГруппа () / / Створюємо нову групу сСотр_2Код = кодЦеха / / І визначаємо її реквізити сСотр_2Наіменованіе = 0 + Рядок (кодЦеха) + Цех ; сСотр_23апісать () / / Записуємо нову групу

/ / Поточним елементом є щойно створена група 03 Цех

/ / Щоб занести співробітника в цю групу, необхідно застосувати

/ / Метод ІспользоватьРодітеля Його параметром має бути значення групи,

/ / Що має тип Довідник, що повертається, наприклад, методом ТекущійЕлемент

/ / Або задається імям обєкта-довідника

сСотр_2ИспользоватьРодителя (сСотр_2)

/ / Або

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

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

/ / Цей оператор повинен бути розміщений до виклику методу Новий сСотр_2ІспользоватьДату (РабочаяДата ())

сСотр_2Новий () / / Створюємо новий елемент

/ / Атрибут Код, якщо його не визначити, буде вирахувано автоматично

/ / Ми ж визначимо код явно, рівним, наприклад, 301 сСотр_2Код = Число (Рядок (кодЦеха * 100)) + 1

/ / Визначаємо інші реквізити нового елемента сСотр_2Наіменованіе = Безверхний Ігор Петрович; сСотр_20клад = 3100

сСотр_23апісать () / / Записуємо новий елемент

/ / Перегляд результату ОткрытьФорму(&quotСправочникСотрудники_2ФормаСписка&quot)

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

Результат наведено на рис 526

Рис 526 Новий підрозділ і новий співробітник

5512&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp ПЕРЕНЕСЕННЯ ЗАПИСИ В ІНШУ ГРУПУ

Якщо у наведеній в попередньому розділі процедурі не викликати метод ІспользоватьРодітеля, то новий співробітник потрапить на верхній рівень (рис 527) Щоб перемістити співробітника в третій цех, слід виділити співробітника та групу, що позначає цех, так, як це показано на рис 527, і скористатися іконкою

або відповідним пунктом меню в колонці Дії, або поєднанням клавіш

Ctrl+F5

Рис 527 Переклад нового співробітника в третій цех

Програмно переклад здійснюється в результаті виконання наступного коду:

у

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

/ / Знаходимо групу, в яку переноситься співробітник якщо сСотр_2НайтіПоКоду (3, 0) = 1 тоді

/ / Запамятовуємо посилання на знайдену групу гр = сСотр_2ТекущійЕлемент ()

/ / Знаходимо співробітника

якщо сСотр_2НайтіПоКоду (301, 0) = 1 тоді якщо сСотр_2Родітель = гр тоді

Попередження (сСотр_2Наіменованіе + вже працює в + гр) повернення

КонецЕсли

/ / Міняємо для нового співробітника значення атрибута Батько,

/ / Привласнюючи йому значення змінної гр, що має тип Довідник сСотр_2Родітель = гр

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

/ / Перегляд результату

ОткрытьФорму(&quotСправочникСотрудники_2ФормаСписка&quot) інакше

Попередження (Співробітник не найден”) КонецЕсли

інакше

Попередження (Група не знайдена”) КонецЕсли

КонецПроцедури / / Виконати

Зауваження  Оскільки в кожній групі код її підлеглого елемента повязаний з кодом групи, то при перенесенні елемента з однієї групи в іншу необхідно відповідним чином змінювати код елемента Алгоритм обчислення нового коду наведено в розд 5822 При інтерактивному переміщенні елемента з однієї групи в іншу його код слід модифікувати в зумовленою процедурі ПриПереносеЭлементаВДругуюГруппу модуля форми списку довідника Порядок її вживання розглянуто в розд 5126

5513&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Редагування запису

Редагуванню записи передує її пошук, який може бути виконаний одним з чотирьох таких методів: НайтіЕлемент, НайтіПоКоду, НайтіПоНаіменованію і НайтіПоРеквізіту

Зміна непериодического реквізиту здійснюється або в результаті присвоювання йому нового значення, або методом УстановітьАтрібут Зміна префікса коду здійснюється методом УстановітьНовийКод з числовим кодом застосовувати цю функцію сенсу не має

Періодичний реквізит також можна змінити простим привласненням або методом УстановітьАтрібут Однак попередньо до пошуку елемента методом ІспользоватьДату потрібно встановити дату запису такого реквізиту Якщо в коді метод ІспользоватьДату жодного разу для довідника не застосовувався, то для зміни значення періодичного реквізиту можна використовувати метод Встановити

Приклад Змінюється прізвище співробітника, код якого дорівнює 203, і ​​його оклад

процедура Виконати () / / Повязана з кнопкою Пуск обробки Проба перем сСотр_2, новФІО

ОчістітьОкноСообщеній ()

новФІО = Костіна Ольга Володимирівна;

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

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

/ / Шукаємо у всьому довіднику

якщо сСотр_2НайтіПоКоду (209, 0) = 1 тоді

якщо СокрЛП (сСотр_2Наіменованіе) = новФІО тоді Попередження (Стара і нова прізвища збігаються”) повернення.

КонецЕсли

сСотр_2Наіменованіе = новФІО

сСотр_20клад = 2900

//

Новий оклад

сСотр_23апісать ()

//

Записуємо зміни

інакше

Попередження (Співробітник не найден”) КонецЕсли

/ / Перегляд результату ОткрытьФорму(&quotСправочникСотрудники_2ФормаСписка&quot)

КонецПроцедури / / Виконати

Той же результат отримаємо, замінивши присвоювання на метод УстановітьАтрібут:

сСотр_2УстановітьАтрібут (Найменування, Костіна Ольга Володимирівна) сСотр_2УстановітьАтрібут (Оклад, 2900)

Також замість методів ІспользоватьДату і УстановітьАтрібут можна для періодичного реквізиту Оклад застосувати виклик

сСотр_20кладУстановіть (РабочаяДата (), 2900)

Зауваження   Якщо не задана дата періодичного реквізиту, то виникне помилка, супроводжувана повідомленням

Не визначена дата Елемент не може бути записаний

5514&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp ВИДАЛЕННЯ ЗАПИСІВ

Запис можна постачити позначкою для видалення, що вживається в 1С або в DBFфайлах, застосувавши метод Видалити відповідно з аргументом 0 або 1 Зняти позначку 1С дозволяє метод СнятьПометкуУдаленія Метод-функція ПометкаУдаленія поверне 1, якщо елемент має 1С-позначку видалення, або 0-в іншому випадку

ПрикладПозначається для видалення в сенсі 1С група 01/1 і всі її підлеглі елементи Потім знімається відмітка про видалення з елемента цієї групи, що має код 112

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

ОчістітьОкноСообщеній ()

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

/ / Шукаємо у всьому довіднику

якщо сСотр_2НайтиПоНаименованию (01/1, 0) = 1 тоді

/ / Якщо обрана кнопка Так

якщо Питання (Позначити для видалення групу, 4) = 6 тоді

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

/ / Шукаємо у всьому довіднику

якщо сСотр_2НайтіПоКоду (112, 0) = 1 тоді якщо сСотр_2ПометкаУдаленія () = 1 тоді

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

інакше

Попередження (Співробітник не найден”) КонецЕсли

КонецЕсли інакше

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

/ / Перегляд результату ОткрытьФорму(&quotСправочникСотрудники_2ФормаСписка&quot)

КонецПроцедури / / Виконати

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

*

*