Програми для обліку

Українське програмне забезпечення з відкритим кодом

Довідники

Дописи

Програми для обліку / Довідники

26.04.2024 13:34 Довідники

Робота з табличною частиною

Робота з табличною частиною на прикладі довідника Блокнот

На прикладі довідника Блокнот.

Довідник Блокнот містить табличну частину Коментарі з полями Автор, Коментар та Додано. Додаємо новий запис в цю табличну частину.

Записи в табличній частині підпорядковуються власнику - запису довідника Блокнот.
Для початку потрібно знайти запис довідника Блокнот.
Пошук вказівника на запис по коду
Блокнот_Pointer? блокнот_Pointer = await new Блокнот_Select().FindByField(Блокнот_Const.Код, "000003");

Отримання об'єкту
Блокнот_Objest? блокнот_Objest = await блокнот_Pointer.GetDirectoryObject();

Новий запис табличної частини Коментарі
Блокнот_Коментарі_TablePart.Record НовийКоментар = new Блокнот_Коментарі_TablePart.Record()
{ Автор = "Автор ABCD", Коментар = "Новий коментар автора ABCD", Додано = DateTime.Now };


Додаю новий запис табличної частини в колекцію записів
блокнот_Objest.Коментарі_TablePart.Records.Add(НовийКоментар);

Запис табличної частини (таблична частина записується окремо від власника якому вона належить)
await блокнот_Objest.Коментарі_TablePart.Save(false);

Важливо! Функція Save() табличної частини приймає один параметр clear_all_before_save який вказує чи потрібно очищати попередні записи в базі даних перед записом колекції записів. Це корисно коли потрібно добавляти нові записи в табличну частину не зчитуючи перед тим всю колекцію, в іншому випадку якщо колекція була зчитана, потрібно вказати true для перезапису всієї табличної частини

C#
async Task ДодатиКоментар()
{
    Блокнот_Pointer? блокнот_Pointer = await new Блокнот_Select().FindByField(Блокнот_Const.Код, "000003");
    if (блокнот_Pointer != null)
    {
        Блокнот_Objest? блокнот_Objest = await блокнот_Pointer.GetDirectoryObject();
        if (блокнот_Objest != null)
        {
            Блокнот_Коментарі_TablePart.Record НовийКоментар = new Блокнот_Коментарі_TablePart.Record()
            {
                Автор = "Автор ABCD",
                Коментар = "Новий коментар автора ABCD",
                Додано = DateTime.Now
            };

            блокнот_Objest.Коментарі_TablePart.Records.Add(НовийКоментар);
            await блокнот_Objest.Коментарі_TablePart.Save(false);
        }
    }
}

Зчитування табличної частини

Зчитування колекції записів з табличної частини в колекцію Records
await блокнот_Objest.Коментарі_TablePart.Read();

Обхід колеції та вивід на консоль
foreach(var Коментар in блокнот_Objest.Коментарі_TablePart.Records) { ... }

C#
async Task ПрочитатиКоментарі()
{
    Блокнот_Pointer? блокнот_Pointer = await new Блокнот_Select().FindByField(Блокнот_Const.Код, "000003");
    if (блокнот_Pointer != null)
    {
        Блокнот_Objest? блокнот_Objest = await блокнот_Pointer.GetDirectoryObject();
        if (блокнот_Objest != null)
        {
            await блокнот_Objest.Коментарі_TablePart.Read();
            foreach(var Коментар in блокнот_Objest.Коментарі_TablePart.Records)
                Console.WriteLine(Коментар.Додано + " " + Коментар.Автор + " " + Коментар.Коментар);
        }
    }
}

Модифікація записів табличної частини

Зчитування колекції записів з табличної частини в колекцію Records
await блокнот_Objest.Коментарі_TablePart.Read();

В циклі модифікуємо назву Автора
foreach (var Коментар in блокнот_Objest.Коментарі_TablePart.Records)
Коментар.Автор = "@" + Коментар.Автор;


Записати всю колекцію (попередні записи у базі даних будуть очищені clear_all_before_save = true)
await блокнот_Objest.Коментарі_TablePart.Save(true);

C#
async Task МодифікуватиКоментарі()
{
    Блокнот_Pointer? блокнот_Pointer = await new Блокнот_Select().FindByField(Блокнот_Const.Код, "000003");
    if (блокнот_Pointer != null)
    {
        Блокнот_Objest? блокнот_Objest = await блокнот_Pointer.GetDirectoryObject();
        if (блокнот_Objest != null)
        {
            await блокнот_Objest.Коментарі_TablePart.Read();
            foreach (var Коментар in блокнот_Objest.Коментарі_TablePart.Records)
                Коментар.Автор = "@" + Коментар.Автор;

            //Записати всю колекцію
            await блокнот_Objest.Коментарі_TablePart.Save(true);
        }
    }
}

© accounting.org.ua - 2024