После обновления программы Смета 2007 до версии 9.0.0.0 у некоторых пользователей при создании коммерческого предложения, договора подряда или при попытке открыть окно свойств любого документа, появляется сообщение об ошибке:
Ошибка загрузки списка Контрагентов:
Не удалось включить ограничения. По меньшей мере одна строка
содержит значение, нарушающее ограничения по отсутствию
пустых значений, уникальности или внешним ключам.
Кроме того, замечено, что при попытке сохранения изменений данных контрагента в
окне "Справочник контрагентов", эти изменения НЕ сохраняются.
Причина этих двух ошибок - одна, и кроется она в данных одного из контрагентов!
После обновления программы Смета 2007 до версии 9.0.0.0, программа предлагает
создать новую базу данных
и экспортировать в неё данные пользователя из "старых" файлов баз данных.
Процесс создания новой БД вробе бы проходит успешно, но после этого начинает
появляться описываемая ошибка, хотя в предыдущей версии программы (версии
8.6.10.56) такой ошибки не было. Данная ошибка возникает далеко не у всех пользователей программы Смета 2007. Мы не будем разбираться в причинах возникновения этой ошибки, а сразу займёмся её
исправлением!
Эта ошибка вызвана не ошибкой в самой программе Смета 2007, а ошибкой в данных пользователя, а точнее - в данных одного из контрагентов.
Поэтому весь процесс исправления этой ошибки будет заключаться в поиске этого контрагента
(или контрагентов).
Чтобы найти "виновника" будем удалять контрагентов по-одному и после удаления
очередного контрагента проверять, исчезла ошибка или нет. Если ошибка исчезла,
значит "виновником" этой ошибки был последний удалённый контрагент, если нет -
удаляем следующего контрагента и нова проверяем наличие ошибки. Так до тех пор,
пока не найдём "виноватого".
"Но, пока мы таким образом доберёмся до "виновного" мы можем удалить целую кучу
"не виновных"", - скажете вы! "Как же их потом восстановить?"
Давайте пройдём весь процесс по шагам!
После завершения работы Мастера создания базы данных, программа Смета 2007
подключается к вновь созданному файлу БД и с этого момента "работает" с ним.
Новый файл БД создаётся Мастером в той же папке, где ранее находился (да и
сейчас находится) "старый" файл БД "Prices.accdb". Если вы не переопределяли
ранее или в процессе работы Мастера путь к папке расположения БД, то вновь
созданный файл БД EstDB.accdb должен находиться в папке:
C:/Пользователи/[имя пользователя]/документы/Смета 2007/db/
Прежде, чем удалять контрагентов, сделайте копию файла "EstDB.accdb", можно прямо в эту же папку:
Рис.1 - Папка хранения файлов БД.
Таким образом вы сохраните исходную версию файла БД под именем "EstDB-копия.accdb", а
физически удалять контрагентов (в окне "Справочник контрагентов") мы будем из файла "EstDB.accdb", с которым работает программа.
Теперь открывайте Справочник контрагентов, слева в списке групп выберите "Все
контрагенты", чтобы отобразились все контрагенты, имеющиеся в справочнике,
и удалите первого по списку! Запомните, кого вы удалили!
Рис.2 - Окно "Справочник контрагентов".
После этого закройте окно Справочник контрагентов и проверьте, возникает ли
рассматриваемая нами ошибка. Для проверки достаточно попытаться открыть окно
свойств любого документа, в котором есть возможность выбора контрагента:
Заказчика или Подрядчика.
Если ошибка всё ещё происходит, значит тот контрагент, которого мы удалили, был
"не виновен"!
Забываем его! Снова открываем Справочник контргентов и удаляем следующего. Каждый
раз запоминаем последнего удалённого! Снова проверяем наличие ошибки.
Так продолжаем до тех пор, пока после удаления очередного контрагента не
обнаружим, что ошибки больше нет!
Таким образом мы нашли контрагента,
"виновного" в возникновении нашей ошибки - это последний из удалённых
контрагентов - помним его!
Теперь нам нужно быстро вернуть "безвинно" удалённых!
Откройте в проводнике папку, в которой содержатся файлы баз данных (см. рис.1).
Файл
"EstDB.accdb" из которого мы удаляли контрагентов можно удалить, он больше не
нужен, а файл "EstDB - копия.accdb" переименуйте в "EstDB.accdb", чтобы
снова сделать его файлом базы данных, с которым работает программа.
Откройте окно Справочник контрагентов. Очевидно, что вы увидите всех ранее
имевшихся там контрагентов. Кстати, наша ошибка также снова "на своём месте". Но, теперь мы
знаем, какой конкретно контрагент "виновен" в её возникновении - ведь мы его
ПОМНИМ!
Теперь нужно удалить конкретно "виновника" ошибки! После этого,
если он вам нужен, придётся добавить
его снова, но уже вручную.
На этом всё! Виновный найден, удалён, восстановлен, а ошибка исчезла!
P.S. Если после удаления конкретного "виновника" ошибка всё ещё происходит,
очевидно, что этот "виновник" был не один и нужно поискать других, повторив всю
описанную процедуру сначала.