Клюєв В.В.

http://prof1c.kklab.ru

Підлеглі довідники

Швидше за все Ви вже неодноразово помічали у звичайних типових конфігураціях, взаємопов'язані між собою довідники, коли при виборі елемента довідника(довідник1) значення іншого довідника(довідник2) «фільтрується» за цим значенням - тобто вибираються значення, що належать тільки поточному елементу довідника1; Наприклад - це Довідник «Підрозділи», власником якого є Довідник «Організації».

Для того, щоб відразу вникнути в суть того, що відбувається, давайте подивимося, що відбувається на практиці. Для цього, ви можете створити порожню конфігурацію з нуля, або зайти в будь-яку наявну копію інформаційної бази і в конфігураторі створити 2 довідники.

Довідник1 та Довідник2. У довіднику2 перейдіть на вкладку «Власники» та виберіть власника - «Довідник1», дивіться як показано на малюнку.

Тепер при створенні елементів у «Довіднику2» система проситиме ввести власника довідника1. Є опція - Використання підпорядкування - коли задається підпорядкування Елементів, груп або груп та елементів.

Здавалося б, все просто, але проблеми виникають у користувачів. Користувач при відкритті «Довідника2» бачить усі елементи в абсолютно незрозумілому порядку, та й до того ж, якщо ви працювали з типовими конфігураціями, то могли помітити, що безпосередньо у довіднику «Підрозділи» ви ніде не задаєте власника, а при відкритті довідника можете вибирати організацію та залежно від цього отримувати елементи, підпорядковані тій чи іншій організації; при цьому під час створення елемента довідника «Підрозділи» за умовчанням ви отримаєте того власника, якого обрали у формі списку підрозділів.
Отже приступимо, і створимо Форму списку для нашого Довідника2, поки надайте це 1С, не вносячи жодних змін, пізніше ми підкоригуємо створену конструктором форму.
У «Довіднику2» перейдіть на вкладку Форми та додайте (+) нову Форму списку довідника та натисніть Готово.

Створимо реквізит форми з типом даних «Довідник1.Посилання», з ім'ям «Відбір Довідник1», та перетягнемо цей реквізит на форму, задайте заголовок «Довідник1».


Тепер, щоб «це чудо» запрацювало, необхідно написати код, який виконуватиме відбір при виборі Елемента Довідника1.

8.2, 8.3 Керовані форми

Для того, щоб відобразити у формі списку довідника лише необхідні нам елементи за вибраним елементом Довідника1, необхідно програмно зробити відбір - за вибраним елементом, для цього скористаємося зумовленою процедурою елемента управління Відбір Довідник1, і напишемо код, який виконує зазначену задачу.
У верхній частині виберіть «Відбір Довідник1» натисніть на праву клавішу миші і виберіть «Властивості», у вікні знайдіть властивість «Зміни» і натисніть лупу, тим самим перейшовши в модуль форми; автоматично створюється процедура «Відбір Довідник1ПіЗміні(Елемент)»

У процедурі введіть наступний текст:

& НаКлієнті Процедура ВідбірДовідник1ПриЗміні(Елемент) Список. Відбір. Елементи. Очистити(); // ЕлементОтбору = Список. Відбір. Елементи. Додати(Тип(" ЕлементВідборуКомпонівкиДаних" ) ) ; а.РежимВідображення = РежимВідображенняЕлементаНалаштуванняКомпонуванняДаних Недоступний;КінецьПроцедури

8.2 Звичайні форми


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

Процедура Довідник1ПриЗміні(Елемент) ЕтаФорма. Відбір. Власник. Значення = Довідник1. Посилання; Ця форма. Відбір. Власник. Використання = Істина; Ця форма. ЕлементиФорми. Довідник Список. Налаштування Відбору. Власник. Доступність = Брехня; //(?) КінецьПроцедури

Передостаннім рядком(?) – забороняємо змінювати відбір при відкритті параметрів відбору користувачем – лише через елемент керування!

Відео (без звуку – все зрозуміло без звуку)

Продовження одинесної теми, відповіді на книгу Радченка, заняття 2 та 3.

Навіщо використовується об'єкт конфігурації "Підсистема"?
Підсистема – основний елемент для побудови інтерфейсу 1С:Підприємство. Підсистеми виділяють у конфігурації функціональні частини, куди логічно розбивається прикладне рішення.

Як описати логічну структуру за допомогою підсистем?
За допомогою поділу на функціональні частини, що є окремими предметними областями.

Як керувати порядком виведення та відображення підсистем у конфігурації?
Правий клік миші по конфігурації, вибираємо команду "Відкрити командний інтерфейс конфігурації", поміняти позиції можна за допомогою стрілок.

Що таке вікно редагування об'єкта конфігурації та в чому його відмінність від панелі властивостей?

Вікно редагування - переважно використовується для створення нових об'єктів.
Палітра якостей - не прив'язано до конкретного об'єкта конфігурації.

Заняття 3.

Навіщо призначений об'єкт конфігурації Довідник?
Довідник призначений для роботи зі списками даних, опис їх властивостей і структури.

Які характерні риси об'єкта конфігурації Довідник?
Довідник складається із елементів; Кожен елемент є окремим записом у таблиці, що зберігає інформацію з цього довідника;
Елемент може містити додаткову інформацію, яка докладніше описує цей елемент - однаковий всім елементів довідника - реквізит; Реквізит є об'єктом конфігурації;

Для чого використовуються реквізити та табличні частини довідника?
Реквізити використовують для опису додаткової інформації, що описує елемент довідника;
Таблична частина використовується для опису інформації елемента довідника, однаковою структурою, але різною за кількістю.

Навіщо потрібні ієрархічні довідники та що таке Батько?
Ієрархічні довідники потрібні для угруповання елементів довідника за якоюсь ознакою чи принципами. Розрізняються кілька типів ієрархій: ієрархія груп та елементів- елемент довідника, що представляє групу - батько для всіх елементів та груп, що входять до цієї групи;
Ієрархія елементів- батько не є групою елементів довідника, а безпосередньо сам елемент.

Навіщо потрібні підлеглі довідники та що таке Власник?
Елементи одного довідника можуть бути підпорядковані елементам іншого довідника, і в такому випадку встановлюється зв'язок одним до багатьох. Так само може бути використаний зв'язок один до одного, коли кожен елемент підлеглого довідника пов'язаний з одним з елементів довідника-власника.

Які основні форми існують у довідника?
Форма елемента – для редагування або створення елемента довідника;
Форма групи – для редагування або створення групи довідника;
Форма списку – для відображення списку елементів у довіднику;
Форма вибору групи - для вибору однієї із групи довідника;

Що таке визначені елементи довідника?
Елементи довідника, які у конфігураторі, дані елементи користувач видалити неспроможна; Служать для зберігання інформації завжди незалежно від дій користувача;

Чим із погляду конфігурації відрізняється типовий елемент від зумовленого?
На визначені елементи можуть бути зав'язані алгоритми роботи конфігурації, отже, система додає ці елементи до структури бази даних сама, без участі користувача.

Як користувач може відрізнити звичайний елемент від певного?
За допомогою піктограми

Як створити об'єкт конфігурації довідник та описати його структуру?
Створити новий довідник – структура – ​​на вкладках ієрархія, дані, малюнки сюди

Як додати новий елемент до довідника?
Через режим 1С: Підприємство.

Як створити групу довідника?
Через режим 1С: Підприємство

Як перемістити елемент із однієї групи до іншої?
Правий клік по елементу, "перемістити до групи"

Навіщо потрібна основна конфігурація та конфігурація Бази даних?
Основна конфігурація – конфігурація для розробника. Конфігурація Бази даних - для роботи з користувачами.

Як змінити конфігурацію Бази даних?
Ніяк. Можна лише провести оновлення до стану основної конфігурації.

Як пов'язані об'єкти конфігурації та об'єкти бази даних?
Об'єкти конфігурації описують сховища, таблиці. А об'єкти Бази даних - записи, що містяться у цих таблицях.

Що таке підлеглі конфігураційні об'єкти?
Реквізити, табличні частини та ін.

Для чого потрібна перевірка заповнення реквізитів у довідника?
Щоб користувач не міг пусті або некоректні записи.

Що таке швидкий вибір та коли його використовувати?
Для вибору елементів не з окремої форми, а з списку, що випадає, заповненого елементами цього довідника.

Як відобразити довідник та визначити його подання у різних розділах інтерфейсу програми?
Щоб відобразити - правий клік за довідником, вкладка "Змінити", вкладка "Підсистеми".
Подання довідника - вкладка "Основні", потім Загальні - підсистеми - всі підсистеми. сюди малюнки

Як відобразити команди створення нового елемента довідника в інтерфейсі підсистем?
Загальні – підсистеми – всі підсистеми – галка "Номенклатура: створити"

Як редагувати командний інтерфейс підсистеми?
Загальні – підсистеми – всі підсистеми. Угорі - поле "Командний інтерфейс"

Які стандартні панелі використовуються в інтерфейсі програми та як виконати налаштування розташування цих панелей у конфігураторі та в режимі «1С:Підприємство»?

Панель розділів; панель команд поточного розділу (якщо вони задані; містить команди, що відповідають виділеному розділу; на початку панелі розташовані команди, що дозволяють відкрити будь-які списки, а потім команди, що дозволяють створити нові елементи даних, сформувати якийсь звіт або виконати обробку); панель інструментів та інформаційна панель (панель вибраного, панель історії, панель відкритих...).
Налаштування розташування цих панелей у конфігураторі виконується таким чином:
Виділимо корінь дерева об'єктів нашої конфігурації, натисканням правої кнопки миші викличемо контекстне меню та виберемо пункт "Відкрити інтерфейс клієнтської програми". У вікні праворуч знаходиться список всіх стандартних панелей прикладного рішення. Перетягуванням їх у ліву частину вікна або видаленням їх звідти налаштуємо бажане відображення панелей.
Налаштування розташування цих панелей у режимі «1С:Підприємство» здійснюється так:
Головне меню -> Вид -> Налаштування панелей -> Виділенням та перетягуванням мишею налаштуємо бажане відображення панелей.


Довідники 1С - спеціалізований об'єкт дерева метаданих, який слугує для зберігання статичної інформації довідкового характеру. Наприклад, у типових конфігураціях можна побачити такі види: , номенклатура, співробітники, основні засоби і т.д. Інформація у довідниках зазвичай не змінюється. Довідники надалі використовуються практично у всіх об'єктах обліку як розріз обліку чи довідкова інформація.

Нижче розглянемо налаштування та проектування довідника з конфігуратора на прикладі довідника «Номенклатура».

Вкладка «Основні»

На вкладці «Основні» вказується ім'я, синонім, представлення об'єктів, опис призначення.

Вкладка «Ієрархія довідника»

Тут встановлюється ієрархічність довідника.

Ієрархія в 1С 8.3 буває двох типів - груп та елементів» та « елементів«. Відрізняється тим, що у першому випадку батьком (папкою) може лише папка (група), тоді як у другому випадку батьком може бути елемент.

"Розміщувати групи зверху" - прапор відповідає за відображення груп у формі списку.

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

Вкладка «Власники»

Довідник може бути підпорядкований іншому довіднику. З погляду конфігурування 1С 8.3 це, що з підлеглого елемента стає обов'язковим реквізит «Власник». Приклад такого зв'язку довідників у типових конфігураціях "Номенклатура - Одиниці Вимірювання", "Контрагенти-Договори Контрагентів".

Власником довідника можуть бути такі об'єкти метаданих: , .

Вкладка «Дані»

Отримайте 267 відеоуроків з 1С безкоштовно:

Найважливіша вкладка з погляду програміста. На ній зазначаються реквізити довідника.

Довідник має набір стандартних реквізитів, які не редагуються програмістом 1С 8.2, список їх можна побачити, натиснувши кнопку «Стандартні реквізити»:

Зупинюся на кожному детальніше:

  • Це група— реквізит із типом булево, що показує, група це чи елемент. Доступний лише у ієрархічному довіднику. Зверніть увагу, значення цього реквізиту неможливо змінити у режимі 1С: Підприємство.
  • Код— реквізит, тип чи рядок (зазвичай рядок). Номер автоматично присвоюється системою. Як правило, розраховується як (попередній код +1). Рекомендую використовувати саме рядковий тип, оскільки сортування числових значень відбувається негаразд, як потрібно. Можна використовувати як подання довідника у списку та полях введення. Як правило, використовується для пошуку елемента під час введення по рядку. Якщо Вам потрібно забрати поле Код, вкажіть у довжині рядка нуль.
  • Найменування- Реквізит, обов'язковий до заповнення, рядкового типу. Максимальна довжина рядка – 150 символів. Можна використовувати як подання довідника у списку та полях введення. Як правило, використовується для пошуку елемента під час введення по рядку. Якщо Вам потрібно забрати поле Найменування, вкажіть у довжині рядка нуль.
  • Батько- Реквізит, що має тип ДовідникПосилання.<ИмяТекущегоСправочника>. Доступний лише у ієрархічному довіднику. Вказує на вищого батька в ієрархії. Якщо елемент або група знаходяться в корені довідника, вказується значення Довідник.<ИмяТекущегоСправочника>. Порожнє Посилання.
  • Власник- Посилання на елемент-власник поточного елемента (групи) довідника. Доступний тільки у підпорядкованому довіднику 1С.
  • Позначка Видалення- Реквізит з типом бульова. Відповідає за відображення позначки видалення в системі. Позначений на видалення елемент вважається непридатним для використання, проте на ньому можуть залишатися старі рухи документів.
  • Посилання- Поле рядкового типу. У цьому реквізиті зберігається унікальний ідентифікатор об'єкта GUID. Те, що в системі ми бачимо у візуальному відображенні під назвою «посилання», — це лише уявлення об'єкта. Не можна змінити.
  • Зумовлений— тип булево, відображає, чи є елемент зумовленим, це пізніше. Не можна змінити.

На вкладці «Дані» також вказується подання довідника в системі, до версії 8.2.16 подання могло бути лише Кодом або Найменуванням. У нових версіях платформи (починаючи з 8.3) подання можна описати самостійно в модулі менеджера за допомогою обробника «Обробка ОтриманняПодання».

Вкладка «Нумерація»

Тут вказуються налаштування довідника щодо нумерації. Рекомендується використовувати саме автонумерацію. Контроль унікальності — прапор, який допомагає, якщо потрібно зробити код унікальним. Якщо зі встановленим прапором Ви спробуєте записати елемент довідника з неунікальним кодом, у 1С Ви отримаєте повідомлення «Код довідника став неунікальним».

Серія кодів визначає, як нумерувати довідник, можна ввести нумерацію довідника в розрізі власника. Наприклад, контрагент «Роги і копита» матиме свою нумерацію договорів — «1, 2, 3» тощо.

Вкладка «Форми»

Тут описуються форми довідника. Якщо конфігурація запускається як у звичайному, так і керованому режимі, тоді вкладок із формами за замовчуванням буде дві: «основні» та «додаткові» — для звичайного та керованого програми різні.

На цій сторінці є важлива властивість довідника - ««. Це дуже зручна функція 1С 8, що дозволяє при заповненні даних у полі введення не заходити до довідника, а набрати його найменування, код або т.п. і вибрати зі списку потрібний елемент. Виглядає це так:

Вкладка «Інше»

На вкладці можна отримати швидкий доступ до основних модулів довідника – модуля об'єкта та модуля менеджера.

На сторінці також можна визначити список визначених елементів довідника. Це елементи, які неможливо видалити у режимі Підприємства. До певних елементів можна звернутися у конфігураторі безпосередньо, на ім'я, наприклад: Довідники.Номенклатура.Послуга.

На цій вкладці також визначається режим блокування – автоматичний або керований. Використання повнотекстового пошуку, а також довідкова інформація про довідник, доступна в режимі 1С: Підприємства.

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

Призначення довідників
Довідник є списком можливих значень того чи іншого реквізиту. Довідники використовуються у випадках, коли необхідно виключити неоднозначне введення інформації.Наприклад, для того, щоб покупець, продавець, комірник, директор розуміли, про який товар йдеться, кожен має називати його однаково. І в цьому випадку потрібний довідник. Зазвичай у торговому підприємстві має вигляд прайс-листа, і якщо такий довідник зберігається у комп'ютері, то нього заносять всю можливу номенклатуру товарів, із якими працює торгова фірма.

Система 1С:Підприємство дозволяє вести практично необмежену кількість необхідних довідників. Кожен довідник є список однорідних об'єктів: співробітників, організацій, товарів тощо. буд. Кожен такий об'єкт називається елементом довідника.

З погляду користувача, слід пам'ятати, що у Конфігураторі створюється не сам довідник, як список значень, а розробляється заготівля довідника, його шаблон. У процесі конфігурування описується структура інформації, яка зберігатиметься в довіднику, розробляється екранне і, якщо необхідно, друковане уявлення довідника, задаються різні особливості його поведінки.

Атрибути довідників

Як обов'язкові реквізити кожен довідник має Коді Найменування. Код елемента довідника може бути як числовим, і текстовим. Система 1С: Підприємство надає широкі можливості роботи з кодами елементів довідника: автоматичне присвоєння кодів, автоматичний контроль унікальності коду та інші.

Крім коду та найменування, у довідниках системи 1С:Підприємство може зберігатися будь-яка додаткова інформація про елемент довідника. Для зберігання такої інформації у довіднику може бути створений список реквізитів. Використовуючи механізм реквізитів довідника, легко організувати, наприклад, картотеку працівників.Наприклад, довідник Співробітникимайже напевно матиме атрибути Посада, Окладта інші.Фірма 1С передбачила програмістів і ввела в усі довідникидва вже задані атрибути: Коді Найменування. Справді, практично будь-який об'єкт із реального життя містить ці атрибути. Наприклад, для співробітників кодом виступає табельний номер, а найменуванням - прізвище, ім'я, по батькові (ПІБ).

Типи даних

Для кожного атрибуту довідника потрібно вказати тип даних, наприклад, " число", "рядок", "дата(у версії 8.0 є ще тип Бульово - Істина або Брехня). Це базові типи, але можна вказати і складні типи даних. Наприклад атрибут Посадамає тип даних Посади. У цьому випадку значення цього атрибуту будуть вибиратися з довідника Посади. Так реалізується найпростіший зв'язок між довідниками, коли значення атрибутів одного довідника вибираються з іншого довідника.

Ієрархічні довідники

Список елементів довідника в системі 1С:Підприємство може бути багаторівневим. У цьому випадку всі рядки довідника розділятимуться на 2 види: «просто» елементи довідника та групидовідник. Групи дозволяють переходити на рівні багаторівневого довідника. Використання багаторівневих довідників дозволяє організувати введення інформації до довідника з потрібним ступенем деталізації. Елементи та групи елементів у багаторівневому довіднику можна переносити з однієї групи до іншої.

Підлеглі довідники

Між довідниками може бути встановлене ставлення підпорядкованості. У термінах реляційних баз даних, між таблицями встановлюється зв'язок "один-багатьом". У цьому випадку кожен елемент підлеглого довідника буде пов'язаний з одним із елементів довідника-власника. Іноді можна сказати, що елементи одного довідника належатьелементам іншого. Наприклад, у системі може бути довідник Податкові Пільги. Тоді його можна зробити підлеглим довіднику Співробітники. Це означає, що "Співробітник володіє податковими пільгами".

Довідник Співробітники

Довідник Податкові пільги

  • Іванов Іванов Іванов
  • Петров Петро Петрович
  • Свєтлов Михайло Петрович
  • Цвєтков Антон Васильович

( власник Петров Петро Петрович)

  • Пільга ветеранам
  • Пільга на дітей
  • Іванов Іванов Іванов
  • Петров Петро Петрович
  • Свєтлов Михайло Петрович
  • Цвєтков Антон Васильович

( власник Свєтлов Михайло Петрович)

  • Пільга афганцям

Табличні частини (тільки версія 8.0)

У версії 8.0 з'явилася можливість елемента довідника мати кілька табличних частин. Цю можливість рекомендується використовувати для відображення інформації, пов'язаної з даним елементом, але не має об'єктної сутності (для яких рекомендується завести підлеглий довідник). Наприклад, для спр. Товари може бути заведена таблична частина ОдиниціВимірювання, для довідника Співробітники можуть бути заведені табличні частини Освіта та Склад Сім'ї. Робота з табличними частинами схожа роботу з підлеглими довідниками крім те, що табличні частини неможливо знайти типами, отже вже не можна створити реквізит типу Освіта.

Порівняння довідників з іншими об'єктами

Об'єкт

Подібності

Відмінності

Константи зберігає значення, зберігається у базі даних Довідник зберігає не одне значення, а цілий перелік однорідних об'єктів.
Документи зберігається у базі даних, має реквізити, документи можуть бути підпорядкованими один одному Довідник зберігає нормативно-довідкову інформацію, а документи відбивають події реального світу. Зазвичай значення реквізитів документів вибираються із довідників. Документ зазвичай проводиться, документ обов'язково має дату та час, документ може містити табличну частину, чого немає у довідниках (у версії 8.0 довідники та документи можуть мати по кілька табличних частин). Довідники можуть бути багаторівневими, у довіднику можуть бути періодичні реквізити, чого немає у документах (у версії 8.0 періодичних реквізитів немає, а є періодичні регістри відомостей).
Перерахування зберігається у БД, зберігає список значень Безліч значень у довідник вводить користувач у режимі Підприємство, а для перерахувань перелік значень задається розробником у режимі Конфігуратор. Переліки зазвичай використовуються в операторах Якщо.
ТаблицяЗначень має рядки та колонки (не зберігається в БД) ТаблицяЗначень призначена для зберігання проміжних даних у пам'яті комп'ютера, що виникають під час роботи програми. Таблиця значень може зберігати різнорідні об'єкти, а довіднику всі елементи одного типу. Таблиці значень неможливо знайти багаторівневими чи підлеглими друг другу.
СписокЗначень зберігає список значень (не зберігається у БД) Список значень може зберігати різнорідні об'єкти, а довіднику всі елементи одного типу

Основи програмування

Створення та запис нового елемента

Пошук елемента довідника


//наприклад, у наказі про звільнення
СпрСотр. ЗнайтиЕлемент(Співробітник);

СпрСотр. ЗнайтиПоКоду(123);
СпрСотр. ЗнайтиПо Найменуванню("Іванов Іван Іванович");
СпрСотр. ЗнайтиПо Реквізиту("Оклад", 5000);

//якщо елемент знайдено, він стає поточним і можна прочитати так:

Якщо СпрСотр.ЗнайтиПо Найменуванню("Іванов Іван Іванович")=1 Тоді
........ЗнайденийСотр = СпрСотр. ПоточнийЕлемент();
КінецьЯкщо;


//у версії 8.0 якщо елемент знайдено, він повертається, інакше повертається Невизначено

ЗнайденийСотр = СпрСотр. ЗнайтиПоКоду(123);
ЗнайденийСотр = СпрСотр. ЗнайтиПо Найменуванню("Іванов Іван Іванович");
ЗнайденийСотр СпрСотр. ЗнайтиПо Реквізиту("Оклад", 5000);

ЗнайденийСотр = СпрСотр.ЗнайтиЗа найменуванням ("Іванов Іван Іванович");
Якщо ЗнайденийСотр = Невизначено Тоді
.....//елемент не знайдено
КінецьЯкщо;

Видалення елемента довідника

СпрСотр. видалити(1); //безпосереднє видалення

СпрСотр. видалити(0); //помітка видалення
СпрСотр. ЗнятиПоміткуВидалення();


Позначка = СпрСтр. Позначка Видалення(); //зверніть увагу: це метод


СпрСотр. видалити(); //безпосереднє видалення

СпрСотр. ВстановитиПоміткуВидалення (Істина); // позначка на видалення
СпрСотр. ВстановитиПоміткуВидалення (Брехня); //зняти позначку на видалення

//можна перевірити, чи позначений елемент видалення
//є властивість ПозначкаВидалення, воно має тип Бульово - Істина або Брехня

Позначка = СпрСтр. Позначка Видалення; //зверніть увагу: ця властивість
Якщо Позначка = Істина Тоді
.....//елемент позначений для видалення
КінецьЯкщо;

Перебір елементів довідника


СпрСотр. Вибрати Елементи();
Поки що СпрСотр. ОтриматиЕлемент() = 1 Цикл
...
...Повідомити("Співробітник" + СпрСотр.Найменування);
КінецьЦикл;


вибірка = Довідники. Вибрати();
Поки що вибірка. Наступний() = 1 Цикл
... //Дії з черговим елементом
КінецьЦикл;


Батько
Перебір елементів усередині групи. Група в термінах 1С - це "батько".


СпрСотр.ЗнайтиПо Найменуванню("Працюючі");
Працюючі = СпрСотр.ПоточнийЕлемент();
СпрСотр. Використовувати Батька(працюючі);
//Далі, наприклад, цикл по співробітникам (див. вище)
...



ГрупаПрацюючі = СпрСотр.ЗнайтиПо Найменуванню("Працюючі");
вибірка = СпрСотр. Вибрати(ГрупаПрацюючі);
Поки що вибірка. Наступний() = 1 Цикл
... //Дії з черговим елементом
...Повідомити("Співробітник" + вибірка.Найменування);
КінецьЦикл;

Власник
Перебір елементів довідника, що належать елементу іншого довідника.
Один довідник підпорядкованийіншому довіднику, наприклад, спр. ПодатковіПільги підпорядкований справ. Співробітники.

Періодичні реквізити
Читання та запис періодичних реквізитів.
Встановлює дату вибірки періодичних реквізитів для всього довідника.


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

Катег = СпрСотр.Категорія. Отримати(Дака);

//Так ми встановимо співробітнику категорію
//на певну дату
СпрСотр.Категорія. Встановити(Дака, НоваКатегорія);

//можна встановити дату вибірки періодичних
//Реквізитів для всього довідника
СпрСотр. ВикористатиДату(Дака);

//тоді нижче вже не можна використовувати Встановити та Отримати
//доступ до періодичних реквізитів стає
//такий, як до звичайних реквізитів
Катег = СпрСотр.Категорія;
СпрСотр.оклад = 6000;

У версії 8.0 немає періодичних реквізитів. Замість них необхідно використовувати регістри відомостей, розгорнуті у часі.

Екранні форми довідників

Форма списку довідника

Для зручності роботи користувачів із довідником на етапі конфігурування можна створити декілька видів екранних формдля показу довідника. Залежно від контексту виклику довідника можна встановити певний діалог для роботи з ним.

Краще один раз побачити, ніж сто разів почути, тому нижче для прикладу наведено форму списку довідника.




Модуль форми списку містить процедури та функції, що діють у контексті цієї форми (у контексті об'єкта Довідник).

Зумовлені процедури викликаються системою 1С при настанні певних подій. Наперед визначені процедури викликаються системою 1С при настанні певних подій, тому вони є обробниками подій. У версії 8.0 ім'я процедури може бути будь-яке, що необов'язково збігається з ім'ям події. Крім того, у версії 8.0 перелік подій для всіх об'єктів був значно розширений.

Подія

Опис

При відкритті Викликається під час відкриття форми списку довідника. Можна встановити початкові значення для змінних, перевірити права користувача на відкриття даного довідника і т.д.
При Закритті Викликається під час закриття форми списку довідника.
ПріЗаписи

Викликається під час запису елемента довідника, якщо елементи вводяться прямо у вигляді списку, а чи не у вигляді елемента. Це використовується для довідників із простою структурою, наприклад, довідник Посади. У цій процедурі можна перевірити дані, що вводяться на наявність помилок.

Приклад, довідник Посади

При Виборі Батька (Нов Батько) Викликається під час виборів батька (групи). У цій процедурі можна перевірити права користувача на перегляд елементів цієї групи.
ПриВиборіВласника(НовВласник) Викликається під час виборів власника довідника-господаря. Має сенс, якщо цей довідник підпорядкований іншому.
При Установці Відбору (Реквізит, Значення) Зумовлена ​​процедура при інтерактивній установці відбору будь-яким способом (відбір, швидкий відбір, відбір за значенням, історія відбору) та при відключенні відбору.
ПриВиборіРядки() Режим обробки вибору рядка (подвійне клацання миші або клавіша Enter) включається у формі списку довідника, журналу документів, рахунків, журналу операцій, журналу проводок за допомогою методу Форма. Тоді при виборі рядка буде викликатись ця зумовлена ​​процедура.


Сортування

У формі списку довідника елементи можуть бути відсортовані в різному порядку: за кодом, найменуванням або за будь-яким реквізитом, у якого в Конфігураторі встановлено прапорець Сортування.Задати тип сортування можна програмно методом Сортування (Спосіб, Прапорь Дозволу Зміни)


Процедура ПріВідкриття()
...... Сортування("Код",0); //сортування за кодом, користувач змінити не може
КінецьПроцедури

Процедура ПріВідкриття()
......ДовідникСписок.Порядок.Установити("Найменування Asc, Картка Asc");
......// Питання читачам: як заборонити користувачеві змінювати порядок сортування?
КінецьПроцедури

Відбір

У вигляді списку довідника елементи може бути відфільтровані, тобто. Користувачеві будуть показані лише потрібні елементи. Програмно встановити відбір можна методом Установити Відбір (Реквізит, Значення). Для цього у реквізиту має бути встановлений прапорець "Відбір з реквізиту" у Конфігураторі .

Статичний фільтр (тільки версія 7.7)

У 1С 7.7 не можна встановити відбір за періодичним реквізитом або кількома реквізитами одночасно (складний фільтр). У цьому випадку виходом із положення може бути метод Використати СписокЕлементів. Цьому методу потрібно передати перелік елементів, які мають бути показані. Попередньо цей перелік потрібно сформувати.

Процедура ПоказатиПрацівників()

СписокЕлементів = створитиОб'єкт("СписокЗначень");

СпрСотр.ВибратиЕлементи();

.....Якщо (СпрСотр.Батько = групаПрацюючі) І (СпрСотр.Посада=длжТесник) Тоді
...........СписокЕлементів.ДодатиЗначення(СпрСотр.ПоточнийЕлемент());
.....КінецьЯкщо;
КінецьЦикл;

ВикористовуватиСписокЕлементів(Список Елементів);

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

Форма елемента та форма групи

Якщо довідник має складну структуру, його елементи зручніше редагувати в окремому вікні, а не в списку. Нижче наведено форму елемента довідника Співробітники.


У формі елемента довідника також є зумовлені процедури (події):

Події

Опис

При відкритті() Викликається під час відкриття форми елемента довідника. Можна встановити початкові значення для змінних, перевірити права користувача на відкриття даного елемента довідника і т.д.
При Закритті() Викликається під час закриття форми елемента довідника.
Записи()

Викликається під час запису елемента довідника. У цій процедурі можна перевірити дані, що вводяться на наявність помилок.

приклад, довідник Співробітники

Процедура ПріЗапису
....Якщо Категорія.Вибраний()=0 Тоді
.........Попередження("Не вказано категорію співробітника!");
.........СтатусПовернення(0);
.....КінецьЯкщо;
КінецьПроцедури

ВступНового() Викликається під час інтерактивного введення нового елемента довідника. У цій процедурі можна перевірити права користувача створення нових елементів довідника, а також задати початкові значення реквізитів.

Слід зазначити, що у версії 8.0 список подій всіх об'єктів значно розширено.

Створення та запис елемента

Програмне створення елемента довідника

Нижче довідник Співробітники програмно додається новий співробітник до групи Працюючі. У довіднику заповнюється поля Найменування, Дата Прийому та пара періодичних реквізитів.



СпрСотр. новий();


СпрСотр. Записати();
//Установка періодичних реквізитів можлива лише після запису елемента
СпрСотр.Категорія.Установити (СпрСотр.ДатаПріема, ктгСумісники);
СпрСотр.Посада.Встановити (СпрСотр.ДатаПріема, длж Тесляр);

а можна зробити красивіше:

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.Використовувати Батька (грпПрацюючі);
СпрСотр.ВикористовуватиДату(ДатаПріема); //увага!
СпрСотр.Новий();
СпрСотр.Найменування = "Іванов Іван Іванович";
СпрСотр.ДатаПріема = "01.01.2002";
//доступ до періодичних реквізитів стає такою самою, як до звичайних
СпрСотр.Категорія = ктгСумісники;
СпрСотр.Посада = длж Тесляр;
СпрСотр.Записати();

Нов = Довідники. Співробітники. Створити Елемент ();
Нов. Батько = грпРаботаючі;
Нов.Найменування = "Іванов Іван Іванович";
Нов.ДатаПріема = "01.01.2002";
Нов.Записати();

//У версії 8.0 немає періодичних реквізитів

Програмне створення груп

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");

СпрСотр. НоваГрупа();

СпрСотр. Записати();

СпрСотр.НоваГрупа();

СпрСотр.Записати();

Нов = Довідники. .Створити групу();

Нов. Записати();

Нов = Довідники["Співробітники"] .Створити групу();
Нов.Найменування = "Працюючі";
Нов. Записати();

Увага!

Транзакції

При створенні безлічі елементів довідника для прискорення роботи можна укласти цикл транзакцію. При цьому реальне створення всіх елементів відбудеться лише за командою Зафіксувати транзакцію(). Під час виконання транзакції довідник блокується.

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
Розпочати транзакцію();

Для НОМ = 1 По 100 Цикл
.....СпрСотр.Новий();
.....СпрСотр.Найменування = "Новий" + Рядок(Ном);
.....СпрСотр.Записати();
КінецьЦикл;

Зафіксувати транзакцію();


СпрСотр = Довідники.
Розпочати транзакцію();

Для НОМ = 1 По 100 Цикл
.....Нов = СпрСотр.СтворитиЕлемент();
.....Нов.Найменування = "Новий" + Рядок(Ном);
.....Нов.Записати();
КінецьЦикл;

Зафіксувати транзакцію();

Перебір елементів

Простий перебір

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
Режим = 0; // Вибирати без урахування ієрархії, 1 - з урахуванням (за умовч.)
СпрСотр. Вибрати Елементи(Режим);
Поки що СпрСотр. ОтриматиЕлемент()=1 Цикл
.....<действия с очередным элементом/группой>
КінецьЦикл;

Фільтрування (відбір)

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
РежимІєрархії = 1; //1- вибирати з урахуванням ієрархії, 0 - без урахування
Режим Груп = 0; //0 - не включати у вибірку групи, 1 - включати
Ім'я Реквізиту = "Рік"; //У конфігураторі у реквізиту повинен бути встановлений прапорець Відбір
Значення = 1980;
СпрСотр. ВибратиЕлементиПоРеквізиту(Ім'я Реквізиту, Значення, Режим Ієрархії, Режим Груп);
Поки СпрСотр.ОтриматиЕлемент()=1 Цикл
.....<действия с очередным элементом>
КінецьЦикл;

Фільтрування у циклі

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.Використовувати Батька (грпПрацюючі);
СпрСотр.ВикористовуватиДату(РобочаДата());
СпрСотр. Вибрати Елементи();
Поки що СпрСотр. ОтриматиЕлемент()=1 Цикл

Якщо СпрСотр.Посада<>длжТесляр Тоді
....Продовжити; //Цього співробітника пропускаємо, перейти на початок циклу
КінецьЯкщо;

<действия с очередным элементом>

КінецьЦикл;

Порядок сортування

Перед вибіркою можна встановити порядок сортування такими методами:

ПорядокКодів()
ПорядокНайменований()
ПорядокРеквізиту(Ім'яРекв) //у реквізиту має бути встановлений прапорець Сортування в Конфігураторі
Зворотній порядок()

Наприклад, нижче відкривається вибірка співробітників, відсортованих за номерами за спаданням:

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.ПорядокКодов();
СпрСотр.ЗворотнийПорядок();
СпрСотр.ВибратиЕлементи();

Запит до довідника

Перебір елементів довідника можна організувати через запит. Часто це буває зручніше, якщо застосовується складна умова відбору чи угруповання елементів. Детальніше див. Запити

Пошук елемента

Пошук елемента

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
Якщо СпрСотр. ЗнайтиЕлемент(ВибрСотр) = 1 Тоді
....//елемент стає поточним
....СпрСотр.Батько = грпРобітники;
....СпрСотр.Записати();
КінецьЯкщо;

Пошук за кодом

Якщо СпрСотр. ЗнайтиПоКоду(1) = 1 Тоді
....ЕлементАбоГрупа = СпрСотр.ПоточнийЕлемент();
КінецьЯкщо;

Пошук за найменуванням

Якщо СпрСотр. ЗнайтиПо Найменуванню("Робота")=1 Тоді
....грпПрацюючі = СпрСотр.ПоточнийЕлемент();
КінецьЯкщо;

Режим = 1; // 1 - пошук усередині встановленого підпорядкування (батька) (за умовч.); 0 - пошук у всьому довіднику
ПрапорПошуку = 0; //1 - знайти точну відповідність; 0 - знайти найменування за першими символами (за замовчуванням)
СпрСотр.Використовувати Батька (грпПрацюючі);
Якщо СпрСотр.ЗнайтиПо Найменуванню("Ів",Режим,ПрапорПошуку)=1 Тоді
....ПершийПрацюючийІв = СпрСотр.ПоточнийЕлемент();
КінецьЯкщо;

Пошук з реквізиту

Ім'я Рекв = "Рік"; //у реквізиту має бути встановлений прапорець Сортування у конфігураторі
ПрапорГлобПоиска = 1; // 1 - шукати у всьому довіднику, 0 - шукати у межах підпорядкування
Якщо СпрСотр. ЗнайтиПо Реквізиту(Ім'я Рекв, 1980, Прапор Глоб Пошуку) = 1 Тоді
.....ЗнайденийЕлемент = СпрСотр.ПоточнийЕлемент();
КінецьЯкщо;

Пошук елемента у циклі

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.Використовувати Батька (грпПрацюючі);
СпрСотр.ВикористовуватиДату(РобочаДата());
СпрСотр. Вибрати Елементи();
Поки що СпрСотр. ОтриматиЕлемент()=1 Цикл

Якщо СпрСотр.Посада = длж Тесляр Тоді
....Прервати; //Знайшли працюючого тесляра! вийти з циклу
КінецьЯкщо;

КінецьЦикл;
<действия с найденным элементом>

Запит до довідника

Пошук елемента довідника можна організувати через запит. Часто це буває зручніше, якщо застосовується складна умова відбору. Детальніше див. Запити

Видалення елементів

Безпосереднє видалення

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.НайтиЭлемент(ВибрСотрудник);
СпрСотр.Видалити(); //безпосереднє видалення

Увага! Якщо ви виконуєте безпосереднє видалення елемента, слідкуйте, щоб на нього не було посилань в інших об'єктах. Наприклад, співробітник, що видаляється, може використовуватися в документі Відпустка. При його видаленні посилальну цілісність бази даних буде порушено. У цьому випадку рекомендується користуватися позначкою на видалення.

Можна програмно отримати список об'єктів, що містять посилання на об'єкт, що видаляється методом Знайти Посилання (об'єкт).

Позначка на видалення

Для контролю цілісності посилення бази даних видалені елементи всього лише позначаються на видалення. Потім спеціальною командою меню Операції => "Видалення помічених об'єктів" в монопольному режимі система 1С проконтролює цілісність посилань і фізично видалить елементи з бази даних, якщо на них немає посилань в інших об'єктах.

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.НайтиЭлемент (ВибрСотрудник);
СпрСотр.Видалити (0); //помітка видалення

//можна перевірити, чи позначений елемент видалення
//функція повертає 1 - якщо помічений, 0 - якщо ні
Позначка = СпрСтр. Позначка Видалення();

//можна зняти позначку видалення
СпрСотр.НайтиЭлемент (ВибрСотрудник);
СпрСотр. ЗнятиПоміткуВидалення();

Транзакції

При видаленні безлічі елементів довідника для прискорення роботи можна укласти цикл транзакцію. При цьому реальне видалення (позначка на видалення) всіх елементів відбудеться лише за командою Зафіксувати транзакцію (). Під час транзакції довідник блокується.

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
Розпочати транзакцію();

СпрСотр.ВибратиЕлементи();
Поки СпрСотр.ОтриматиЕлемент()=1 Цикл
......СпрСотр.Видалити(0); //помітка видалення
КінецьЦикл;

Зафіксувати транзакцію();

Ієрархічні довідники

Список елементів довідника у системі 1С:Підприємство може бути багаторівневим. У цьому випадку всі рядки довідника розділятимуться на 2 види: «просто» елементи довідника та групи довідника. Групи дозволяють переходити на рівні багаторівневого довідника. Можлива кількість рівнів вкладеності довідника задається у конфігураторі.

Використання багаторівневих довідників дозволяє організувати введення інформації до довідника з потрібним ступенем деталізації. Елементи та групи елементів у багаторівневому довіднику можна переносити з однієї групи до іншої.

Увага! Ієрархічнийдовідник - це також багаторівневийдовідник, або довідник з групами.
Група довідника в 1С часто називається " батько".

Програмне створення групи

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");

СпрСотр. НоваГрупа();
СпрСотр.Найменування = "Працюючі";
СпрСотр. Записати();

СпрСотр.НоваГрупа();
СпрСотр.Найменування = "Звільнені";
СпрСотр.Записати();

Увага! У Конфігураторі можна задати для реквізиту те, що він дійсний лише елемента, лише групи чи обох. Наприклад, поле ДатаПрийому не має сенсу для групи Працюючі. Тому не варто звертатися до реквізитів елементів, якщо ви працюєте з групою та навпаки.

Встановлення поточної групи


СпрСотр. Використовувати Батька(ГрППрацюючі); //тепер ми всередині групи Працюючі
СпрСотр.ВибратиЕлементи(); //відкрити вибірку елементів групи Працюючі

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр. Використовувати Батька(ГрППрацюючі);
СпрСотр.Новий(); //Створення нового елемента в групі Працюючі

Якщо довідник багаторівневий, то буде корисним застосування таких методів та атрибутів, які дозволяють отримати інформацію про поточний елемент довідника:

Метод/атрибут

Опис

Рівень()

Цей спосіб повертає рівень поточного елемента. Наприклад, для співробітника, який перебуває у групі Працюючі, ми отримаємо число 2.

Приклад виведення ієрархічного довідника у вигляді дерева:

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.ВибратиЕлементи();

//вивести відступ відповідно до глибини вкладеності елемента
Для Ном=1 По СпрСотр.Рівень() Цикл
.....Повідомити(".....");
КінецьЦикл;

КінецьЦикл;

Це група() Цей метод повертає 1, якщо поточний елемент довідника є групою, або 0 якщо не є групою.

Наприклад, виведення співробітників (групи не виводяться):

СпрСотр = Створити Об'єкт ("Довідник. Співробітники");
СпрСотр.ВибратиЕлементи();
Поки СпрСотр.ОтриматиЕлементи()=1 Цикл

Якщо СпрСотр.ЦеГрупа()=1 Тоді
......Продовжити; //групи пропускаємо, перейти на початок циклу
КінецьЯкщо;
Повідомити (СпрСотр.Найменування);

КінецьЦикл;

НалежитьГрупі(...) Метод перевіряє, чи належить зазначеній групі поточний елемент довідника (незалежно від того, на якому рівні він знаходиться).
Повертає: 1 – якщо елемент належить зазначеній групі, 0 – якщо ні.

Приклад, виведення товарів, що належать до групи Спиртне, незалежно від того чи входять вони до підгруп Шампанське, Пиво, Горілка, Вино і т.д.:




.....Повідомити(СпрТовари.Найменування);
КінецьЯкщо;

КінецьЦикл;

атрибут Батько

Цей атрибут містить батьків поточного елемента довідника, тобто. групу, де знаходиться поточний елемент. Доступний для читання та запису.

Приклад, перенесення всіх товарів з групи Спиртне до групи Розпродаж:

СпрТовари = Створити Об'єкт ("Довідник.Товари");
СпрТовари.ВибратиЕлементи();
Поки СпрТовари.ОтриматиЕлементи()=1 Цикл

Якщо СпрТовари.НалежитГрупе(грпСпиртное)=1 Тоді
.....СпрСотр.Батько = грпРозпродаж;
.....СпрСотр.Записати();
КінецьЯкщо;

КінецьЦикл;

А можна зробити красивіше і перенести всю групу Спиртне до групи Розпродаж, тоді всі підгрупи та елементи також перенесуться до групи Розпродаж.

СпрТовари = Створити Об'єкт ("Довідник.Товари");
СпрТовари.НайтиЭлемент(грпСпиртное);
СпрТовари.Батько = грпРозпродаж;
СпрТовари.Записати();

ПовнийКод()

Повертає рядок, що містить повний код вибраного елемента довідника з усіма вищими рівнями, розділеними символом "/".

Наприклад, "2/7/123"

Повне найменування()

Повертає рядок, що містить повну назву вибраного елемента довідника з усіма вищими рівнями, розділеними символом "/".

Наприклад, "Спиртне/Шампанське/Радянське"

Можливість вибору групи у реквізиті діалогу

Часто зручно для реквізитів на формі, що мають тип Довідник, відключити можливість вибору групи. Тоді в даному полі може бути вибрано лише елемент і не може бути обрана група. Загалом, простіше один раз спробувати, аніж кілька разів пояснювати.

Форма.ВибрСотрудник. ВибірГрупи(0); //Вимкнути можливість вибору групи

Підлеглі довідники

Довідник- власник, це також довідник- господар.
Довідник-власник та підлеглий довідник також називаються пов'язанимидовідниками.
У термінах реляційних баз даних довідник-власник - батьківська таблиця, підпорядкований довідник - це дочірня таблиця.

Призначення підлеглих довідників

Будь-який довідник може використовуватися як сам собою, так і бути підлеглим якомусь іншому довіднику. Наприклад, довідник договорів може використовуватися окремо, а може бути пов'язаний із довідником організацій.

Щоб підпорядкувати довідник якомусь із довідників, які вже існують у системі, у полі «Підпорядкований» слід вибрати найменування цього довідника. Такий довідник у системі 1С:Підприємство називається власником.

На відміну від багаторівневого довідника, у якому всі елементи мають однакову структуру, використання механізму підлеглих довідників дозволяє пов'язати елементи різної структури. У цьому випадку кожен елемент підпорядкованого довідника буде пов'язаний з одним із елементів довідника-власника.

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

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

Якщо відкрити підлеглий довідник, не вибравши елемент-власник, то у вікні підпорядкованого довідника не відображатиметься жодного елемента, а в заголовку вікна буде видано повідомлення "Не заданий елемент-власник".

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

Встановлення поточного власника


СпрДоговори.ВикористовуватиВласника(ВибрКонтрагент);
СпрДоговори.ВибратиЕлементи(); //відкриваємо вибірку за договорами обраного контрагента
<...>

Інформація про поточний елемент

Якщо довідник підпорядкований, то буде корисним застосування таких методів та атрибутів, які дозволяють отримати інформацію про поточний елемент довідника:

Атрибут

Опис

атрибут Власник

Цей атрибут містить власника поточного підпорядкованого елемента довідника, тобто. елемент довідника-господаря, до якого належить цей елемент. Атрибут доступний для читання та запису.

Приклад, перенесення всіх договорів від одного корагента до іншого (довідник Договори підпорядкований довіднику Контрагенти):

Договори = Створити Об'єкт ( "Довідник. Договори");
СпрДоговори.ВикористовуватиВласника(Контрагент1);
СпрДоговори.ВибратиЕлементи();
Поки СпрДоговори.ОтриматиЕлементи()=1 Цикл

СпрДоговори.Власник = Контрагент2;
СпрДоговори.Записати();

КінецьЦикл;


Періодичні реквізити

Увімкнення опції «Періодичний» дозволяє вказати для реквізиту довідника збереження історії змін його значення. Такий реквізит у системі 1С:Підприємство називається періодичним і має таку властивість: на відміну від «звичайних» (не періодичних) реквізитів, система 1С:Підприємство зберігає значення такого реквізиту за датами їх зміни. При зверненні до значення такого реквізиту на деяку дату видається його значення цю дату, чи, якщо таке відсутня, - найближчу попередню дату, яку встановлювалося значення реквізиту.

Подібна властивість реквізиту довідника дозволяє, наприклад, легко організувати збереження історії зміни курсів у довіднику валют.

До періодичного реквізиту можна звертатися за допомогою вбудованої мови системи 1С:Підприємство - отримувати та записувати значення реквізиту на вказану дату. Однак, слід мати на увазі, що при отриманні значення реквізиту на якусь дату витягується його значення на зазначену або (якщо значення на зазначену дату відсутня) на найближчу попередню дату, а запис значення періодичного реквізиту завжди виконується на зазначену дату.

У режимі конфігурації для періодичного реквізиту можна викликати вікно «Історія». Це вікно є таблицею, що складається з двох граф: дата зміни значення реквізиту довідника і значення на цю дату. Вікно «Історія» дозволяє редагувати історію змін значення реквізиту безпосередньо: вводити нові рядки, редагувати чи видаляти наявні.

Методи періодичних реквізитів
//Так ми дізнаємося, яка була у співробітника категорія на певну дату
Катег = СпрСотр.Категорія.Отримати (НекаяДата);

//Так ми встановимо співробітнику категорію на певну дату
СпрСотр.Категорія.Встановити (НекаяДата, НоваКатегорія);

Увага! Ці методи можна застосовувати, якщо раніше не застосовувався метод Використати Дату

Встановлення дати вибірки періодичних реквізитів

//можна встановити дату вибірки періодичних реквізитів для всього довідника
СпрСотр. ВикористатиДату(Дака);

// Тоді нижче вже не можнавикористовувати методи Встановити та Отримати
//доступ до періодичних реквізитів стає такою самою, як до звичайних реквізитів
Катег = СпрСотр.Категорія;
СпрСотр.оклад = 6000;

Об'єкт "Періодичний"

Для роботи з історією періодичного реквізиту зручно використовувати об'єкт "Періодичний".

Наприклад, вивести історію кар'єри співробітника за поточний рік:

ІсторіяКар'єри = СтворитиОб'єкт("Періодичний");
ІсторіяКар'єри.ВикористовуватиОб'єкт("Посада",ВибрСпівробітник);
ІсторіяКар'єри.
Поки ІсторіяКар'єри.ОтриматиЗначення()=1 Цикл
....Повідомити(Рядок(ІсторіяКар'єри.ДатаЗнач) + " " + Рядок(ІсторіяКар'єри.Значення));
КінецьЦикл;

За допомогою об'єкта Періодичний можна також редагувати та видаляти значення. Повний список методів див. у Синтакс-помічнику.

Проведення документів

Під час проведення документа часто потрібно встановити нове значення періодичного реквізиту певну дату. Це називається рухом документа. У цьому випадку слід застосовувати метод Встановити Реквізит Довідника:

ВстановитиРеквізитДовідника(Співробітник, "Посада", НоваПосада, ДатаПереміщення);

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

Якщо документ має табличну частину і ви хочете, щоб рухи документа були прив'язані до номера рядка документа, тоді слід застосовувати метод Прив'язувати рядок.

Процедура ОбробкаПроведення()

ВибратиРядки();
Поки ОтриматиСторок()=1 Цикл

Прив'язувати рядок(Номер рядка);
ВстановитиРеквізитДовідника(Співробітник, "Посада", НоваПосада, ДатаПереміщення);

КінецьЦикл;

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

Підбір із довідника

Функція підбору дозволяє вибирати кілька значень із довідника чи іншого об'єкта, не закриваючи його.Наприклад, є документ Витратна Накладна, в якому користувач може вказати декілька товарів.

Організація підбору

Синтаксик: ВідкритиПідбір(<Объект>,<ИмяФормы>,<КонтекстФормы>,<ФлагМножВыбора>,<ТекЗнач>)

ВідкритиПідбір("Довідник.Номенклатура","ФормаДляПідбору",Конт,1);


...НовийРядок();
...Товар = Елемент;
КінецьПроцедури

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

ВідкритиПідбір("Довідник.Номенклатура","ФормаДляПідбору",Конт,1);
Конт.Використовувати Батька (грпСпіртне);

Процедура ОбробкаПідбору(Елемент,КонтФорми)
...НовийРядок();
...Товар = Елемент;
КінецьПроцедури

Встановлення та отримання значень із підбору

КонтФормиПідбору. ВстановитиЗначенняУПідборі(<ИмяРеквизита>,<Значение>)

<ИмяРеквизита>- Рядок з ім'ям реквізиту форми підбору значення;
<Значение>- Значення реквізиту.

КонтФормиПідбору. ОтриматиЗначенняЗПідбору(<Выражение>)

<Выражение>- рядковий вираз, значення якого обчислюється в контексті форми підбору та повертається як результат.

Інші корисні методи

Метод

Опис

Вид() Встановити чи рахувати поточну назву виду довідника. Повертає поточну назву виду довідника, як вона вказана в Конфігураторі, наприклад "Співробітники". Установка виду довідника можлива реквізитів типу " Довідник " , тобто. довідник невизначеного виду.
Вигляд() Отримати власне уявлення виду довідника, як він заданий в конфігураторі.
Повертає рядкове значення, що містить уявлення користувача виду довідника (синонім).
ВстановитиАтрибут(Ім'яРеквізиту, Значення) Встановити значення реквізиту на його ім'я.
<ИмяРеквизита>- рядкове вираз, що містить ім'я реквізиту, як воно задано у конфігураторі.<Значение>- Вираз, що містить значення реквізиту.
ОтриматиАтрибут(Ім'яРеквізиту) Отримати значення реквізиту на його ім'я. Повертає значення реквізиту.
Вибраний()

Повертає 1 – якщо елемент довідника вибраний, 0 – якщо не вибраний. Часто застосовується для перевірки помилок, щоб усі необхідні дані були вказані.

Вибрати(...) Виклик діалогу, щоб вибрати елемент довідника.
Повертає: 1 – якщо елемент обраний; 0 - якщо не вибрано. Вибраний елемент стає поточним.

Читання структури довідників

Цикл за довідниками

КолвоДовідниківВКонфігурації = Метадані.Довідник();
Для Ном=1 to КолвоДовідниківВКонфігурації Цикл

кфгСпр = Метадані. Довідник (Ном);
Ідентифікатор = кфгСпр.Ідентифікатор ();
ПовнийІдентифікатор = кфгСпр.ПовнийІдентифікатор();
Синонім = кфгСпр.Сінонім();

Здрастуйте, дорогі наші колеги та партнери. За останній місяць до нас надійшло кілька запитань від користувачів програми 1С Бухгалтерія 8.3 із проханням допомогти налаштувати у програмі список номенклатури, як було у 8.2. Тобто у старій програмі вони могли бачити у списку номенклатури артикул чи код номенклатурної позиції. Це було дуже зручно. А ось у 8.3 нічого не видно та незрозуміло. Насправді все дуже просто налаштувати. Тому ми вирішили написати невелику інструкцію з налаштування довідників у програмі 1С Бухгалтерія 8.3, але цей алгоритм застосовується у будь-якій конфігурації 1С.

Отже, у розділі "Довідники" відкриємо довідник "Номенклатура".

У списку ми бачимо назву номенклатури, в якому немає відомостей про артикулі товару. Щоб змінити подання довідника, скористаємося налаштуванням його форми. Відкривши по кнопці "Ще" список команд, у самому низу знайдемо "Змінити форму".

У формі, що відкрилася, нам представлені всі реквізити довідника, які можна вивести на екран.

Встановивши відповідний прапорець, наприклад «Код» та «Артикул», ми отримаємо список номенклатури, в якому відображено код і артикул.

Однак у такому вигляді деяким користувачам довідник також не подобається. Вони хочуть бачити номер та артикул перед назвою товару. Це також дуже легко вирішується. Знову відкриваємо форму налаштування списку та за допомогою синіх стрілок на панелі інструментів пересуваємо реквізит вгору чи вниз, залежно від того, як ми хочемо бачити список. Також можна перетягувати реквізити за допомогою лівої кнопки миші.

Ось тепер список номенклатури такий, як ви хотіли його бачити.

Експериментуйте з параметрами списку. Не бійтеся. Все, що я написала, можна використовувати в будь-якій конфігурації на керованих формах і в будь-якому довіднику, наприклад, вивести на екран КПП у довіднику «Контрагенти» або номер договору в довіднику «Договори». Не бійтеся, що ви щось «зламаєте» у програмі.

В крайньому випадку вас завжди врятує можливість «Встановити стандартні налаштування», яка знаходиться в налаштуванні форми в розділі «Ще»

І ще. Іноді телефонують клієнти з таким запитанням: «Я на щось натиснула і в мене тепер найменування не за абеткою. Поверніть усе, як у мене було». Це питання також легко вирішується. У кожному довіднику в рядку заголовка табличної частини завжди є «чарівна стрілочка», яка вказує стовпець, яким встановлено сортування і напрямок цього сортування.

Змінити напрямок сортування можна просто клікнувши за цією стрілкою і тоді список буде відсортовано, наприклад, від Я до А. Якщо ж ми хочемо, щоб сортування товарів було за кодом, то для цього треба клікнути мишкою на назві відповідного стовпця «Код» та «Чарівна стрілочка» переміститься в інший стовпець.

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