Расскажу о причинах такого решения.
Dervish
30/08/2012 18:05
#
Первоначально я, собственно, и не планировал вводить такое ограничение. Как уже справедливо отмечалось, проблема вызвана именно введением поддержки нескольких планов счетов. Итак, представим, что будет происходить, если такого ограничения нет.
Допустим, мы в разных ветках создаем два счета с одинаковым названием в одной и то же валюте и программа разрешает это сделать. После этого мы включаем поддержку нескольких планов счетов и создаем новый план с названием... Ну пусть будет оригинальное названием "Новый план". Поскольку все счета должны входить в этот план счетов, они, конечно же, добавляются в корневую папку этого плана. И мы получаем два совершенно неотличимых счета.
Есть еще одна проблема, связанная с экспортом и импортом. Дело в том, что при экспорте и импорте счет, по которому передаются данные (выгружаются или загружаются) должен быть однозначно идентифицирован. И если раньше можно было указывать путь к этому счету, например, "\Все счета\Наличные\RUR - Наличные" то с введением планов счетов, вообще говоря, становится непонятно, какой именно план счетов использовать для идентификации счета и что делать если в одной папке окажутся два счета с одинаковым названием и валютой (а такое будет происходить, как в приведенном выше примере, при создании нового плана счетов).
Поэтому и было принято решение ввести требование уникальности названия счета.
Способы обхода? Пожалуй, единственный способ, это просто сделать названия счета уникальными. Можно, например, путем добавления какого-то спецсимвола. Например, символ "#" перед названием счета может обозначать поставщика. Либо так и написать: "Поставщик ИЧП Иванов И.И.". Других путей я не вижу. Равно как и не вижу каких-то других решений, которые позволили бы снять требования к уникальности названий счетов.
И последнее, насчет сообщения, которое выдает программа при попытке добавить счет с уже существующей парой (название, валюта). Это моя ошибка, конечно, следует исправить это сообщение.
Сергей, спасибо за разъяснения
Dimnick
30/08/2012 18:52
#
Теперь все стало немного понятнее )
Хорошо, видимо, на самом деле придется обходиться каким-то символом-идентификатором для придания счету уникальности.
Уникальность по названию?
latan
02/09/2012 13:34
#
Неужели Вы не используете внутри базы никаких уникальных идентификаторов? Ну что-то типа кода или guid'а, которые не видны пользователю, но используются программой при работе? Поделитесь секретом, пожалуйста. Просто любопытно
Использую, конечно.
Dervish
17/09/2012 16:40
#
Проблема не в том, что счета неотличимы для программы, программа как раз прекрасно их различает. Проблема в том, что (а) пользователь не сможет различить эти счета и (б) во время экспорта выгружается лишь название счета и его валюта, что может привести к огромной путанице при импорте. Выгружать же внутренний уникальный идентификатор мне не хочется. Он уникален для одного файла данных и в другом будет совсем другим. GUID не использую. Но даже если б использован, все равно мне представляется, что счета должны быть различимы по паре (название, валюта).