Відмінність ресурсу від реквізиту (1с, 8
Питання Чим реквізит відрізняється від вимірювання - це зрозуміло всім. А ось чим реквізит відрізняється від ресурсу?
Відповідь Регістр відомостей - це вироджений випадок регістрів. Тому у нього «не все так», як у «справжніх» регістрів (накопичення, бухгалтерії, розрахунку). І щоб не плутатися далі будемо розглядати всі в кілька в спрощеному вигляді.
Спочатку подивимося, як працює «справжній» регістр, регістр накопичення. Регістр простий, два виміри, один ресурс і один реквізит (рис. 1).
Припустимо, в регістрі є чотири записи (рис. 2).
Це - основна таблиця регістру, тобто таблиця, яка містить записи, які були додані в регістр.
Ви можете отримати записи цієї таблиці і, природно, відібрати їх за допомогою одного з існуючих полів (рис. 3).
«Функція» регістра накопичення, грубо кажучи, полягає в тому, щоб підсумувати значення ресурсів. Причому це підсумовування виконується для всіх різних значень вимірів. Тобто, якщо ви попросите «функцію» цього регістра, то отримаєте наступний результат (рис. 4).
Тобто значення ресурсів для записів, що містять однакові значення вимірювань (в даному випадку значення1 і значення2) будуть підсумовані (9 + 1 = 10).
Зрозуміло, що коли ви отримуєте функцію, неможливо отримати будь-які реквізити, тому що, наприклад, незрозуміло, як можна «скласти» Заметка99 і Заметка1. Можна тільки «розгорнути функцію», і подивитися, з яких записів вона склалася, які у цих записів реквізити. Але сам результат «функції» не містить інформації про кожну із записів (рис. 5).
Тому реквізити - це деяка допоміжна інформація, яка нам не цікава, коли ми отримуємо «функцію» регістра. Але ця інформація може нам знадобитися, якщо ми захочемо подивитися, з яких записів склався результат цієї «функції».
Тепер подивимося на регістр відомостей. Візьмемо періодичний регістр відомостей з такою ж структурою і такими самими записами. Його основна таблиця буде виглядати наступним чином (рис. 6).
«Функцією» періодичного регістра відомостей є отримання найбільш ранніх або більш пізніх записів, на деяку дату по різним сполученням значень вимірів. Наприклад «функція» цього регістра на 29 число буде виглядати наступним чином (рис. 7).
Тобто для унікального поєднання значень вимірів буде обрана одна з існуючих записів основної таблиці, на відміну від регістру накопичення, в якому результатом функції була запис, не існуюча в основній таблиці (рис. 8).
Таким чином, «функція» періодичного регістра відомостей по своїй суті відрізняється від «функцій» «справжніх» регістрів. «Функція» «справжніх» регістрів повертає деяку інформацію про сукупність записів, а «функція» регістра відомостей полягає в тому, щоб вказати на одну з наявних записів. Зрозуміло, що в результаті такого «вказівки» ми можемо бачити і значення реквізиту. Тобто з будь-яким результатом функції буде однозначно пов'язане одне з значень реквізиту, а не кілька значень реквізиту, як для регістра накопичення. Тому, обчислюючи функцію періодичного регістра відомостей, можна, крім значень вимірів, як у «справжніх» регістрів, задати і значення реквізиту.
Якщо ж розглядати неперіодична регістр відомостей, то у нього взагалі немає «функції». Можна тільки записати дані в його основну таблицю, і прочитати їх. Незважаючи на це він так само має вимірювання, ресурси і реквізити. Тому що дані в цей регістр заносяться за тими ж правилами, як і в усі інші регістри: не може бути двох записів, з однаковими значеннями ключових полів (вимірювань, в даному випадку).
Тимчасові таблиці: Приклад отримання цін (1С: Бухгалтерія 8.1: Програмістові: Робота із запитами)