16.07.2024 Айдар Фархутдинов 2801
Поддержка ссылочной целостности в системе 1С:...
Содержание:

   

В современном мире управления данными важное место занимает обеспечение ссылочной целостности. В контексте 1С:Документооборот холдинга это особенно актуально, поскольку система используется для хранения и обработки большого количества документов, связанных между собой. Поддержка ссылочной целостности позволяет обеспечить целостность данных и предотвратить ошибки, связанные с удалением или изменением связанных записей. В этой статье мы рассмотрим, как реализовать поддержку ссылочной целостности в 1С:Документооборот холдинга, приведём примеры программного кода и разъясним основные концепции.  


1.    Определение ссылочной целостности в 1С:Документооборот холдинга


Ссылочная целостность — это свойство базы данных, обеспечивающее корректность и согласованность ссылок между таблицами. Она гарантирует, что все ссылки (внешние ключи) между таблицами всегда будут указывать на существующие записи. В контексте документооборота это означает, что документы, связанные между собой, всегда будут корректно указывать друг на друга.


2.    Параметры поддержания ссылочной целостности в программе 1С:Документооборот холдинга


Рассмотрим, какие аспекты влияют на поддержание корректной ссылочной целостности:

●      Внешние ключи. Внешние ключи — это атрибуты, которые указывают на первичные ключи других таблиц. Они обеспечивают связь между таблицами и являются основным инструментом для поддержания ссылочной целостности;

●      Триггеры. Триггеры — это специальные процедуры, которые автоматически выполняются при изменении данных в таблицах (вставка, обновление, удаление). Они позволяют контролировать и обеспечивать целостность данных;

●      Обработчики событий. В 1С для управления ссылочной целостностью используются обработчики событий, которые можно настроить для выполнения определенных действий при изменении данных.  


3.    Реализация ссылочной целостности в 1С:Документооборот холдинга


Далее будут описаны примеры того, как именно работать со ссылочной целостностью и её обеспечивать.

Рассмотрим пример создания внешнего ключа для обеспечения связи между таблицами "Документы" и "Пользователи":


«Процедура СоздатьВнешнийКлюч()

    // Создание таблицы Документы

    ТаблицаДокументы = Новый ТаблицаЗначений;

    ТаблицаДокументы.Колонки.Добавить("КодДокумента", Тип("Число"));

    ТаблицаДокументы.Колонки.Добавить("НазваниеДокумента", Тип("Строка"));

    ТаблицаДокументы.Колонки.Добавить("КодПользователя", Тип("Число"));

    ТаблицаДокументы.Индексы.Добавить("КодДокумента", Истина);

 

    // Создание таблицы Пользователи

    ТаблицаПользователи = Новый ТаблицаЗначений;

    ТаблицаПользователи.Колонки.Добавить("КодПользователя", Тип("Число"));

    ТаблицаПользователи.Колонки.Добавить("ИмяПользователя", Тип("Строка"));

    ТаблицаПользователи.Индексы.Добавить("КодПользователя", Истина);

 

    // Добавление внешнего ключа

    ВнешнийКлюч = Новый ВнешнийКлюч;

    ВнешнийКлюч.ИсходнаяТаблица = "Документы";

    ВнешнийКлюч.ЦелеваяТаблица = "Пользователи";

    ВнешнийКлюч.ИсходноеПоле = "КодПользователя";

    ВнешнийКлюч.ЦелевоеПоле = "КодПользователя";

    ТаблицаДокументы.ВнешниеКлючи.Добавить(ВнешнийКлюч);

 

    Сообщить("Внешний ключ успешно создан.");

КонецПроцедуры»


В этом примере создаются две таблицы: "Документы" и "Пользователи". Затем создаётся внешний ключ, связывающий поле «КодПользователя» в таблице "Документы" с полем "КодПользователя" в таблице "Пользователи".


Триггеры позволяют автоматически выполнять действия при изменении данных в таблицах. Рассмотрим пример использования триггера для обеспечения ссылочной целостности при удалении пользователя:


«Процедура УстановитьТриггеры()

    // Триггер на удаление пользователя

    ТриггерУдалениеПользователя = Новый Триггер;

    ТриггерУдалениеПользователя.Таблица = "Пользователи";

    ТриггерУдалениеПользователя.Событие = "Удаление";

    ТриггерУдалениеПользователя.Процедура = "ПроверитьСвязанныеДокументы";

 

    Сообщить("Триггер на удаление пользователя успешно установлен.");

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

 

Процедура ПроверитьСвязанныеДокументы(УдаляемыйПользователь)

    // Проверка наличия связанных документов

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ Документы ГДЕ КодПользователя = &КодПользователя";

    Запрос.УстановитьПараметр("КодПользователя", УдаляемыйПользователь.КодПользователя);

    Результат = Запрос.Выполнить();

 

    Если Результат.Количество() > 0 Тогда

        Сообщить("Невозможно удалить пользователя, так как у него есть связанные документы.");

        Прервать();

    КонецЕсли;

КонецПроцедуры»


В этом примере создаётся триггер на удаление пользователя. Когда пользователь удаляется, выполняется процедура «ПроверитьСвязанныеДокументы», которая проверяет наличие связанных документов. Если такие документы существуют, операция удаления прерывается.


Обработчики событий позволяют выполнять действия при наступлении определенных событий. Рассмотрим пример использования обработчика событий для обеспечения ссылочной целостности при обновлении данных о пользователях:


«Процедура УстановитьОбработчикиСобытий()

    // Обработчик события на обновление данных о пользователях

    ОбработчикОбновленияПользователя = Новый ОбработчикСобытий;

    ОбработчикОбновленияПользователя.Таблица = "Пользователи";

    ОбработчикОбновленияПользователя.Событие = "Обновление";

    ОбработчикОбновленияПользователя.Процедура = "ОбновитьСвязанныеДокументы";

 

    Сообщить("Обработчик события на обновление данных о пользователях успешно установлен.");

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

 

Процедура ОбновитьСвязанныеДокументы(ОбновленныйПользователь)

    // Обновление связанных документов

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ * ИЗ Документы ГДЕ КодПользователя = &КодПользователя";

    Запрос.УстановитьПараметр("КодПользователя", ОбновленныйПользователь.КодПользователя);

    Результат = Запрос.Выполнить();

 

    Для Каждого Документ Из Результат Цикл

        Документ.ИмяПользователя = ОбновленныйПользователь.ИмяПользователя;

        Документ.Записать();

    КонецЦикла;

КонецПроцедуры»


В этом примере создаётся обработчик события на обновление данных о пользователях. Когда данные о пользователе обновляются, выполняется процедура «ОбновитьСвязанныеДокументы», которая обновляет информацию в связанных документах.


Поддержка ссылочной целостности в 1С:Документооборот холдинга является важным аспектом для обеспечения корректной и согласованной работы системы. Использование внешних ключей, триггеров и обработчиков событий позволяет эффективно управлять связями между таблицами и предотвращать ошибки, связанные с удалением или изменением связанных записей. Следуя приведённым примерам и рекомендациям, вы сможете настроить и поддерживать ссылочную целостность в вашей системе документооборота, обеспечивая высокое качество и надёжность управления данными.

 

 

 Специалист компании "Кодерлайн"

Айдар Фархутдинов

Наши проекты

ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"
ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"

Отрасль:
Деятельность больничных организаций

Внедренное типовое решение:
БИТ:Управление медицинским центром 8

- Управление отношениями с клиентами (CRM)
- Делопроизводство
- Ведение но...

АО "Нижегородский водоканал"
АО "Нижегородский водоканал"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

-Кадровый учет
-Расчет зарплаты
-Регламентированная отчетность
-Подбор ...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

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

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Бухгалтерский учет
- Расчет зарплаты и кадровый учет
- Налоговый учет ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО "ДЕКОР"
ООО «ДЕКОР»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Управление персоналом и кадровый учет (HRM):
- Кадровый учет
- Расчет зарпл...

ООО «Иви.ру»
ООО «Иви.ру»

Отрасль:
Медиаиндустрия

Внедренное типовое решение:
1С:Управление корпоративными финансами

Подсистема казначейства
Модуль бюджетного контроля по ДДС ...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Автоматизация контроля исполнительской дисциплины на базе ПП «1С:Документооборот 8 ПРОФ»
ООО «ФСК Лидер»

Отрасль:
Строительство и девелопмент

Внедренное типовое решение:
1С:Документооборот 8 ПРОФ

- Делопроизводство;
- Учет и хранение документов;
- Учет и контроль исполне...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:

- Совместная работа по внедрению разных решений, в том числе «1С:ERP Управление...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение