2. Параметры поддержания ссылочной целостности в программе 1С:Документооборот Холдинга
3. Реализация ссылочной целостности в 1С:Документооборот холдинга
В современном мире управления данными важное место занимает обеспечение ссылочной целостности. В контексте 1С:Документооборот холдинга это особенно актуально, поскольку система используется для хранения и обработки большого количества документов, связанных между собой. Поддержка ссылочной целостности позволяет обеспечить целостность данных и предотвратить ошибки, связанные с удалением или изменением связанных записей. В этой статье мы рассмотрим, как реализовать поддержку ссылочной целостности в 1С:Документооборот холдинга, приведём примеры программного кода и разъясним основные концепции.
1. Определение ссылочной целостности в 1С:Документооборот холдинга
Ссылочная целостность — это свойство базы данных, обеспечивающее корректность и согласованность ссылок между таблицами. Она гарантирует, что все ссылки (внешние ключи) между таблицами всегда будут указывать на существующие записи. В контексте документооборота это означает, что документы, связанные между собой, всегда будут корректно указывать друг на друга.
2. Параметры поддержания ссылочной целостности в программе 1С:Документооборот холдинга
Рассмотрим, какие аспекты влияют на поддержание корректной ссылочной целостности:
● Внешние ключи. Внешние ключи — это атрибуты, которые указывают на первичные ключи других таблиц. Они обеспечивают связь между таблицами и являются основным инструментом для поддержания ссылочной целостности;
● Триггеры. Триггеры — это специальные процедуры, которые автоматически выполняются при изменении данных в таблицах (вставка, обновление, удаление). Они позволяют контролировать и обеспечивать целостность данных;
● Обработчики событий. В 1С для управления ссылочной целостностью используются обработчики событий, которые можно настроить для выполнения определенных действий при изменении данных.
3. Реализация ссылочной целостности в 1С:Документооборот холдинга
Далее будут описаны примеры того, как именно работать со ссылочной целостностью и её обеспечивать.
Рассмотрим пример создания внешнего ключа для обеспечения связи между таблицами "Документы" и "Пользователи":
«Процедура СоздатьВнешнийКлюч()
// Создание таблицы Документы
ТаблицаДокументы = Новый ТаблицаЗначений;
ТаблицаДокументы.Колонки.Добавить("КодДокумента", Тип("Число"));
ТаблицаДокументы.Колонки.Добавить("НазваниеДокумента", Тип("Строка"));
ТаблицаДокументы.Колонки.Добавить("КодПользователя", Тип("Число"));
ТаблицаДокументы.Индексы.Добавить("КодДокумента", Истина);
// Создание таблицы Пользователи
ТаблицаПользователи = Новый ТаблицаЗначений;
ТаблицаПользователи.Колонки.Добавить("КодПользователя", Тип("Число"));
ТаблицаПользователи.Колонки.Добавить("ИмяПользователя", Тип("Строка"));
ТаблицаПользователи.Индексы.Добавить("КодПользователя", Истина);
// Добавление внешнего ключа
ВнешнийКлюч = Новый ВнешнийКлюч;
ВнешнийКлюч.ИсходнаяТаблица = "Документы";
ВнешнийКлюч.ЦелеваяТаблица = "Пользователи";
ВнешнийКлюч.ИсходноеПоле = "КодПользователя";
ВнешнийКлюч.ЦелевоеПоле = "КодПользователя";
ТаблицаДокументы.ВнешниеКлючи.Добавить(ВнешнийКлюч);
Сообщить("Внешний ключ успешно создан.");
КонецПроцедуры»
В этом примере создаются две таблицы: "Документы" и "Пользователи". Затем создаётся внешний ключ, связывающий поле «КодПользователя» в таблице "Документы" с полем "КодПользователя" в таблице "Пользователи".
Триггеры позволяют автоматически выполнять действия при изменении данных в таблицах. Рассмотрим пример использования триггера для обеспечения ссылочной целостности при удалении пользователя:
«Процедура УстановитьТриггеры()
// Триггер на удаление пользователя
ТриггерУдалениеПользователя = Новый Триггер;
ТриггерУдалениеПользователя.Таблица = "Пользователи";
ТриггерУдалениеПользователя.Событие = "Удаление";
ТриггерУдалениеПользователя.Процедура = "ПроверитьСвязанныеДокументы";
Сообщить("Триггер на удаление пользователя успешно установлен.");
КонецПроцедуры
Процедура ПроверитьСвязанныеДокументы(УдаляемыйПользователь)
// Проверка наличия связанных документов
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ Документы ГДЕ КодПользователя = &КодПользователя";
Запрос.УстановитьПараметр("КодПользователя", УдаляемыйПользователь.КодПользователя);
Результат = Запрос.Выполнить();
Если Результат.Количество() > 0 Тогда
Сообщить("Невозможно удалить пользователя, так как у него есть связанные документы.");
Прервать();
КонецЕсли;
КонецПроцедуры»
В этом примере создаётся триггер на удаление пользователя. Когда пользователь удаляется, выполняется процедура «ПроверитьСвязанныеДокументы», которая проверяет наличие связанных документов. Если такие документы существуют, операция удаления прерывается.
Обработчики событий позволяют выполнять действия при наступлении определенных событий. Рассмотрим пример использования обработчика событий для обеспечения ссылочной целостности при обновлении данных о пользователях:
«Процедура УстановитьОбработчикиСобытий()
// Обработчик события на обновление данных о пользователях
ОбработчикОбновленияПользователя = Новый ОбработчикСобытий;
ОбработчикОбновленияПользователя.Таблица = "Пользователи";
ОбработчикОбновленияПользователя.Событие = "Обновление";
ОбработчикОбновленияПользователя.Процедура = "ОбновитьСвязанныеДокументы";
Сообщить("Обработчик события на обновление данных о пользователях успешно установлен.");
КонецПроцедуры
Процедура ОбновитьСвязанныеДокументы(ОбновленныйПользователь)
// Обновление связанных документов
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ Документы ГДЕ КодПользователя = &КодПользователя";
Запрос.УстановитьПараметр("КодПользователя", ОбновленныйПользователь.КодПользователя);
Результат = Запрос.Выполнить();
Для Каждого Документ Из Результат Цикл
Документ.ИмяПользователя = ОбновленныйПользователь.ИмяПользователя;
Документ.Записать();
КонецЦикла;
КонецПроцедуры»
В этом примере создаётся обработчик события на обновление данных о пользователях. Когда данные о пользователе обновляются, выполняется процедура «ОбновитьСвязанныеДокументы», которая обновляет информацию в связанных документах.
Поддержка ссылочной целостности в 1С:Документооборот холдинга является важным аспектом для обеспечения корректной и согласованной работы системы. Использование внешних ключей, триггеров и обработчиков событий позволяет эффективно управлять связями между таблицами и предотвращать ошибки, связанные с удалением или изменением связанных записей. Следуя приведённым примерам и рекомендациям, вы сможете настроить и поддерживать ссылочную целостность в вашей системе документооборота, обеспечивая высокое качество и надёжность управления данными.
Специалист компании "Кодерлайн"
Айдар Фархутдинов