• 1с підприємство регістри відомостей. Пошук та читання у регістрі відомостей

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

    Типовий приклад використання регістру відомостей - зберігання інформації про курс валют у розрізі валюти та періоду.

    Розглянемо докладніше властивості та налаштування регістру відомостей.

    Дві основні властивості регістра відомості Періодичністьі Режим запису.

    Це унікальні властивості регістра відомостей, яких більше немає в жодному об'єкті метаданих. Розглянемо їх докладніше.

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

    Періодичність може приймати такі значення:

    • Неперіодичний
    • В межах секунди
    • В межах дня
    • У межах місяця
    • У межах кварталу
    • В межах року

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

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

    А одна з головних особливостей періодичного регістру відомостей — можливість набувати готових значень «Зрізу перших» та «Зрізу останніх». Ця інформація дозволяє дуже швидко отримати з бази даних інформацію про останнє (перше) встановлене значення на певну дату.

    Режим запису регістру відомостей

    У 1С 8.2 та 8.3 ця властивість може бути або у значенні «Незалежний», або - «Підпорядкування реєстратору». У першому випадку запис можна буде зробити як програмно, так і з форми списку регістру відомостей. У другому випадку обов'язковим є вказівка ​​документа-реєстратора запису. Це накладає певні обмеження, але водночас відкриває нові можливості.

    Властивості вимірювання регістру відомостей

    Також слід звернути увагу на палітру властивостей вимірів регістра відомостей 1С 8.3. Особливо на прапори Ведуче та Основний відбір:

    • Провідне— властивість виміру, що передбачає інформацію про те, що значення цього виміру запис регістру немає сенсу. Насправді це означає, що система при видаленні значення з вимірювання видаляє ще й запис регістру з «Ведучим» виміром. Може бути встановлений лише один вимір.
    • Основний відбір— якщо регістр є незалежним, за цими вимірами встановлюватиметься реєстрація змін для плану обміну. Аналогічно використання Основний відбір за періодомвключає основний відбір для період періодичних регістрів.

    Програмний запис у регістр відомостей 1С

    Додати нові записи в регістр відомостей можна двома способами – за допомогою менеджера запису та за допомогою набору записів. Перший випадок підійде для одиночної запису, другий - для двох і більше записів.

    Використання менеджера запису:

    НовийЗапис = РеєстриДовідок.КурсиВалют.СтворитиМенеджерЗаписи();
    НовийЗапис.Валюта = Довідники.Валюти.ЗнайтиЗа найменуванням («USD»);
    НовийЗапис.Період = Дата(31,12,2016);
    Новий Запис. Курс = 100;
    Новий Запис.Кратність = 1;
    НовийЗапис.Записати();

    Використання набору записів регістра відомостей 1С:

    НовийНабірЗаписів = РеєстриДовідок.КурсиВалют.СтворитиНабірЗаписів();
    //якщо ви не встановите відбір - видаляться всі записи регістра відомостей
    НовийНабірЗаписів.Відбір.Валюта.Встановити(Долар, Істина);
    НовийНабірЗаписів.Відбір.Період.Встановити(Дата(31,12,2016), Істина);
    //формуємо безпосередньо запис набору
    НовийЗаписНабору = НовийНабірЗаписів.Додати();
    НовийЗаписНабору.Валюта = Довідники.Валюти.ЗнайтиЗа найменуванням («USD»);
    НовийЗаписНабору.Період = Дата(31,12,2016);
    НовийЗаписНабору.Курс = 100;
    НовийЗаписНабору.Кратність = 1;
    НовийНабірЗаписів.Записати();

    Існує кілька видів регістрів в 1С:

    • Нагромадження, що зберігають залишки або обороти у числовому вигляді;
    • Розрахунки, що зберігають види розрахунків та самі розрахунки, зазвичай використовуються для розрахунку зарплати;
    • Бухгалтерії з даними про бухгалтерські розрахунки як Дт-Кт;
    • Регістри інформації.

    На останніх ми зупинимося детальніше, оскільки вони дозволяють компілювати дані з БД щодо розрізів вимірювань. Наприклад, у «Цінономенклатури» зберігаються дані для конкретної номенклатури та характеристики за певним видом цін.

    Рис.1 Регістр «Цінономенклатури»

    Характеристики

    Регістр буває як періодичним, і неперіодичним, коли потрібно зберігати послідовність змін. Але якщо все-таки зберігати потрібно, то встановлюється, в межах якого періоду програма встановить контроль унікальності записів: посекундно, за день, місяць, квартал і рік.


    Рис.2 Періодичність та режим запису

    Якщо спробувати створити два записи в межах одного періоду, програма видасть помилку "Запис із такими ключовими полями існує!" і не дасть зробити запис до бази даних.

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


    Рис.3 Режими запису

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

    Запис до регістру відомостей 1С

    Рядки у регістрі з періодом та реєстратором, що містять інформацію про ресурси у розрізі вимірювань, називаються записами.

    Щоб додати запис до регістру, використовуються або менеджер записів, або набір записів. Якщо записи в регістрі мають спільний ключ, необхідно використовувати НабірЗаписів. А для запису одного запису, якщо в регістрі всі записи унікальні, необхідно використовувати МенеджерЗаписи.

    Приклад запису під час використання об'єкта РеєстрДовідівНабірЗаписів.

    Використання менеджера запису:

    НовийЗапис = РеєстриДовідок.КурсиВалют.СтворитиМенеджерЗаписи(); НовийЗапис.Валюта = Довідники.Валюти.ЗнайтиЗа найменуванням («USD»); НовийЗапис.Період = Дата(31,12,2016); Новий Запис. Курс = 100; Новий Запис.Кратність = 1; НовийЗапис.Записати();

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

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

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

    НовийНабірЗаписів = РеєстриДовідок.ЦіниНоменклатури.СтворитиНабірЗаписів(); НовийНабірЗаписів.Відбір.Реєстратор.Встановити(Посилання); НовийЗаписНабору = НовийНабірЗаписів.Додати(); НовийЗаписНабору.Період = Посилання.Дата; НовийЗаписНабору.Номенклатура = Посилання.Номенклатура; НовийЗаписНабору.Ціна = Посилання.Ціна; НовийНабірЗаписів.Записати();

    Приклад запису через менеджер запису:

    Запис = РеєстриДовідок.КурсиВалют.СтворитиМенеджерЗаписи(); Запис.Період = Дата; Запис. Курс = Курс; Валюта = Валюта; Запис.Записати();

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

    Щоб знайти у регістрі відомостей запис та прочитати його, потрібна допомога запитів. Наприклад, нам треба отримати ціни, внесені певним реєстратором:

    ВИБРАТИ Ціни Номенклатури.

    Зміна та видалення записів

    Щоб видалити запис регістру відомостей, наприклад, усі курси валюти EUR, скористайтесь наступним кодом:

    СтруктураОтбора = новий Структура("Валюта", Довідники.Валюти.ЗнайтиПо найменуванню("EUR")); Вибірка = Регістри Відомостей. Курси Валют. Вибрати (, Структура Відбору); Поки Вибірка.Наступний() Цикл МенеджерЗаписи = Вибірка.ОтриматиМенеджерЗапису(); Вибірка.ОтриматиМенеджерЗаписи().Видалити(); КінецьЦикл;

    Для швидкого та повного очищення регістру можна використовувати наступний код:

    НовийЗапис = РеєстриДовідок.ТестовийРегістр.СтворитиНабірЗаписів(); НовийЗапис.Записати();

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

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

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

    • Найменування
    • Виробник
    • Упаковка
    • Ціна закупівлі

    У регістри записуються підсумки операцій, які у системі. Кожен із документів записує свої результати. Такі записи називають Рухами. За ними можна провести сортування та порівняння даних.

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

    Налаштування в 1С 8.3 регістрів відомостей

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

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

    Як у 1С 8.3 зробити запис у регістр відомостей

    Записи у регістрах є наслідком проведення операцій у різних частинах програми. Але є можливість зробити безпосередні зміни. Для цього передбачена можливість запису в регістр відомостей 1С 8.3 програмно (нехай прикладом є аналітика коливань валютних курсів):

    • Скористайтеся Менеджером Запису для виконання однієї дії:

    НовийЗапис = РеєстриДовідок.КурсиВалют.СтворитиМенеджерЗаписи();

    НовийЗапис.Валюта = Довідники.Валюти.ЗнайтиЗа найменуванням («UA»);

    НовийЗапис.Період = Дата(30,07,2018);

    Новий Запис. Курс = 50;

    Новий Запис.Кратність = 1;

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

    • Візьмемо Набір Записів для кількох вступів:

    НовийНабірЗаписів = РеєстриДовідок.КурсиВалют.СтворитиНабірЗаписів();

    //Увага! Тут важливо зазначити критерії відбору. В іншому випадку всі зроблені раніше записи зникнуть.

    НовийНабірЗаписів.Відбір.Валюта.Встановити(Гривна, Істина);

    НовийНабірЗаписів.Відбір.Період.Встановити(Дата(30,07,2018), Істина);

    //Тепер можна розпочати записування самого набору

    НовийЗаписНабору = НовийНабірЗаписів.Додати();

    НовийЗаписНабору.Валюта = Довідники.Валюти.ЗнайтиПо найменуванню(«UA»);

    НовийЗаписНабору.Період = Дата(30,07,2018);

    НовийЗаписНабору.Курс = 50;

    НовийЗаписНабору.Кратність = 1;

    НовийНабірЗаписів.Записати();

    Як видалити регістр відомостей 1с 8.3

    У програмі 1с 8.3 додати запис до регістру відомостей щодо легко. Тепер розглянемо варіант видалення. Візьмемо гіпотетичний варіант, де необхідно видалити інформацію про Організацію. У цьому випадку параметр Видалена Організація матиме своє посилання.

    Виконуємо такі дії:

    • Код 1C v 8.х
    • НабірЗаписів = РеєстриДовідок.Об'єктиБудівництваОрганізацій.СтворитиНабірЗаписів();
    • НабірЗаписів.Отбор.Організація.
    • Набір Записів. Записати ();

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

    Зауважте, що вибірку такого набору записів встановлюють виключно на рівність.

    Регістри відомостей 1Сце структурований набір даних із вимірами та ресурсами. Призначений для зберігання періодичної інформації.

    Періодичність

    Інформація зберігається в розрізі вимірів та періоду. Регістру відомостей можна задати періодичність:

    • Неперіодичний
    • за реєстратором
    • секунда
    • тиждень
    • місяць
    • квартал

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

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

    Реєстратори

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

    Документи, які будуть у ролі реєстраторів, може бути дещо. Для того, щоб додати реєстратор, потрібно зайти у властивості потрібного регістру відомостей, перейти на вкладку «Реєстратори» та встановити галочки навпроти документів, які виконуватимуть роль реєстратора.

    Подивитися рухи, які робить реєстратор можна з документа. Для цього потрібно зайти в документ, що Вас цікавить, натиснути: Перейти - Рухи документа по реєстратору.

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

    Унікальність записів

    Унікальність запису залежить від періоду та вимірів. Наприклад, якщо ви хочете записати в регістр «Ціни номенклатури» запис з однаковими вимірами, в той самий день, то у вас це не вийде і програма викличе помилку, оскільки періодичність регістру в межах дня.

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

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

    Форми

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

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

    Додавати форми необхідно в конфігураторі, зайшовши в регістр відомостей, у вкладці «Форми» і натиснути на «лупу» у потрібного типу форми. Далі відкриється вікно, де можна налаштувати поля майбутньої форми (розташування, назви та прописати функціонал).


    Вимірювання, ресурси та реквізити

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

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

    Ресурси призначені для зберігання сумової інформації: кількість, ціна і т.д. Ресурси надалі отримуватимемо на певний період часу (якщо регістр періодичний), за вимірами.

    Реквізити, як правило, призначені для зберігання додаткової інформації, вони не беруть участь в унікальності запису. Наприклад, в реквізити можна заносити таку інформацію як автор, коментар і т.д.

    З регістром відомостей можна робити такі действия:

    • Видалення запису в регістрі відомостей 1С

    Особливості

    — Унікальність записів за набором вимірів: кожен запис у регістрі відомостей — це нове значення ресурсу.

    — Записи регістру відомостей можуть бути як періодичними, так і ні.

    — Реєстр відомостей може бути залежним та незалежним від реєстратора.

    — Є можливість зробити зріз перших та останніх записів на потрібну дату. Це реалізовано віртуальними таблицями: «СрезПерших» та «ЗрезОстанніх». Для використання цих таблиць можна скористатися як відбором, і запитом (у конструкторі запитів ви введіть ці віртуальні таблиці і можете зробити з них запит). Ці таблиці будуть доступними, якщо регістр відомостей періодичний.

    Регістр "Ціни номенклатури" - періодичний регістр відомостей, записи проводитися за реєстратором.

    На зображенні видно, що періодичність встановлена ​​не більше дня. Отже, ціну можна змінити один раз на день за унікальними протягом дня вимірами.

    Реєстр підпорядкований документу "Встановлення цін номенклатури". Отже, запис у регістр походить із цього документа. Рухи за конкретним документом можна переглянути із форми документа «Встановлення цін номенклатури».

    Регістр призначений для зберігання інформації щодо ціни номенклатури, з вимірами «Тип цін», «Номенклатура» та «Характеристика номенклатури». Провідним вимірами є всі три поля виміру, за ним можна буде робити відбір під час вибірки.

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