Добрый день!
Есть документ1 в котором есть ТЧ. И в этой тч есть ссылки на другие документы2. И в них хранится ссылка на документ1 в котором они есть.
Подскажите, как удалить ссылку на документ1 из документа 2 при удалении последнего из ТЧ?
Надо сравнивать тч до удаления и после и если есть разночтения, то удалять ссылки?
---
Как то сложно.
Перед записью по ссылке получать ТЧ со старыми данными, сравнить с данными текущей ТЧ и заполнить например, массив ДокументыКУдалению.
В при записи обработать ДокументыКУдалению - очистить ссылку на этот документ.
Вряд ли там высоконагруженная система.
---
Каким образом происходит удаление строк из ТЧ: интерактивно пользователем?
Если ошиблись?
---
Пользователем.
Если ошиблись, то заново добавят. На это случай при записи ссылка записывается. У меня сложность в том, что если удали из ТЧ.
---
Не рассматривали вариант документ и регистр сведений? :)
---
Это мне кажется еще сложнее чем просто сравнить ТЧ до всего и после.
---
Надо сравнивать тч до удаления и после и если есть разночтения, то удалять ссылки?
это правильный ответ, элементарная операция.
---
Ага, и перепроводить эти документы в закрытом периоде (потому что набор строк изменился).
Самоубийца?
---
Не, это такой документ, что участвует в закрытых периодах.
---
Глаша, ты до сих пор не понимаешь смысла хронологии хозяйственных операций?

Ну так сделай запрос, найди все документы, в которых есть есть ссылка на удаляемый - и перепиши их.
Проблема-то в чем?
---
Так мы сам документ не удаляем. Удаляется только ссылка на него в реквизите.
И вопрос в том в какой момент это все делать. Я сначала думала, что нужно смотреть на процедуру удаление из ТЧ.
Но по идее могут же не удалять из ТЧ ничего, а просто перевыбрать в ТЧ, заменив один документ вторым.
---
В первом приближении как-то так:
1. добавить ТЧ документу "УдаленныеДокументы", записывать в нее ссылки из удаленных строк.
2. Добавить регистр сведений "Документы к обработке" и писать в него сам документ при наличии записей в "УдаленныеДокументы".
3. Регламентным заданием получать список документов, ссылки на которые нужно удалить из документов, ссылки на которые имеются в "УдаленныеДокументы" и обрабатывать соотвественно. По окончанию обработки очищать ТЧ и РС от обработанного документа.
---
Как то сложно.
Перед записью по ссылке получать ТЧ со старыми данными, сравнить с данными текущей ТЧ и заполнить например, массив ДокументыКУдалению.
В при записи обработать ДокументыКУдалению - очистить ссылку на этот документ.
Вряд ли там высоконагруженная система.
---
Ну да. Я тоже думала, что сравнивать тч документа до и после. И в случае если какого дока нет, то очищать этот реквизит со ссылкой.
---
потому что максимально асинхронно привык решать задачи :)
---
Спасибо!
Регламент не очень хочется. Потому что придется его не знаю, каждую минуту что ли запускать. Потому что смысл, чтобы один и тот же документ1 не мог быть выбранным в разных доках2
---
Потому что смысл, чтобы один и тот же документ1 не мог быть выбранным в разных доках2
Это не так работает. То что вы хотите сделать не поможет в решении данной задачи.
---
Зачем так часто? Если есть задача не плодить дубли в ТЧ, то она решается кардинально по-другому.
---
Не дубли в одной ТЧ, а просто чтобы нельзя было выбрать в разных документах в ТЧ один и тот же документ. Я думаю самое удобное это хранить ссылку на документ в реквизите и тогда будет понятно, что он уже занят в какой то ТЧ.
А часто так, потому что мало ли наклепают за время пока регламент не отработал таких документов.
---
Ваша задача решается абсолютно другим способом:
1. При изменении Документ2 в ТЧ Документ1 выполняется проверка по всем остальным документам, в случае наличия - сообщаем, что уже указан в таком-то документ1 и меняем на пустую ссылку.
2. Перед записью документа1 проверяется ссылки на документы из ТЧ, во всех остальных ТЧ документ1, кроме текущего и при наличии запись отменяется с указанием в каком документ1 есть ссылка на такой-то там документ2.
---
При изменении Документ2 в ТЧ Документ1 выполняется проверка по всем остальным документам
1. При изменении будет обрабатывать все случаи? Ну например заменили документ в ТЧ, удалили из него, скопировали строку? Или например множественно удаление? Я как то нарывалась на случаи, что процедура при изменении не всегда отрабатывала.
---
Как напишешь - так и будет.
---
При изменении будет обрабатывать все случаи? Ну например заменили документ в ТЧ, удалили из него, скопировали строку?
"ПриИзменении" для самого реквизита ТЧ будет работать в случаях, когда в реквизите как-либо произошло изменение значения, даже в случае изменения на то же, что и было

При удалении/добавлении строки ТЧ, в том числе копированием - отрабатывает "ПриИзменении" для ТЧ.

Лично я пока плохо представляю себе, зачем выполнять проверку для удаленных(даже в случае множественного) строк - их же и так удалили.
---
А потом человек не стал записывать текущий документ. Но уже поздняк метаться - связанные документы уже откорректированы и записаны.
ПриИзменении() патамушта.
---
по ходу пьесы выяснилось, что ничего никуда писать не надо, все нужно контролить при добавлении ссылок на документы в ТЧ текущего редактируемого документа.
---
Не уверен, что пьеса уже окончена...
---
как это не нужно? Нужно. Нужно, чтобы при удалении документа из ТЧ удалялась ссылка на документ.
---
так, стоп.
Если не будет возможности добавить в тч документ, содержащийся в тч другого документа, зачем очищать какие-то там ссылки непонятно где? Их просто не будет.
Если на данный момент уже есть такие случаи, то они исправляются единожды, после введения ограничения на повторное добавление.
---
Сообщение было скрыто модератором.
---
Да ваще :-)
---
Гай Ричи нервно курит, блин....
---
Для дальнейшей работы понадобится.
---
я решительно не понимаю, что значит "для дальнейшей работы понадобится", если таких ситуаций просто не возникнет в будущем
---
Долго писать :-) Это будет просто проще.
Например сейчас надо будет еще выводить в списке документов этот признак. Понятно, что можно допилить список. Еще будут выгружать документы в другую базу которые уже есть в какой то ТЧ.
При добавлении строк будет проще этот момент будет отследить.
Ну и мне так больше нравится, чтобы при работе с этими документами все время не делать запрос в запросе и проверять во всех документах. Их будет много. А можно просто в запросе отбирать по признаку и все.
Сейчас в одном документе есть под 700 строк в ТЧ, это же будет просто долго если при добавлении каждой строки проверять и еще и на предмет вхождения в другой документ.
---
ну как зачем? Удалить ссылку в реквизите.