Проверка на дубли при программном создании документа

1. waitklassik 09.06.21 09:07 Сейчас в теме
Подскажите как лучше сделать. Допустим есть документ из него программно создается другой документ и заполняется данными из первого документа. Как проверить на дубли второй документ что бы менеджеры не создавали по два три одинаковых документа?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ilnur75 09.06.21 09:12 Сейчас в теме
перед созданием документа 2 делать запрос к документам и искать тот у которого документ-основание документ 1. Если результат запроса пустой, тогда создавать документ 2, иначе выводить сообщение что документ уже создан и дубль недопускается.
5. waitklassik 09.06.21 09:33 Сейчас в теме
(2)Пример можете привести?
6. ilnur75 09.06.21 09:38 Сейчас в теме
7. waitklassik 09.06.21 09:41 Сейчас в теме
(6)самописная. Допустим в документах отгрузка необходимо провести проверку на дубли и если нет дублей создать документ отгрузка и заполнить данными из документа поступление.
8. ilnur75 09.06.21 09:48 Сейчас в теме
(7) добавьте для документа поступление ввод на основании - что на его основании создается документ отгрузка. В документе отгрузка добавьте реквизит документ-основание. Напишите конструктором код заполнения данных заполнения ввода на основании. Создайте документ отгрузка в режиме 1с. Потом когда у вас уже есть отгрузка, приступайте к проверке есть ли эта самая отгрузка.
10. waitklassik 09.06.21 09:58 Сейчас в теме
(8)ввод на основании не подходит. нужна проверка при создании и заполнении документа. Из документа 1 создаем документ 2 и заполняем данными из документа 1 все программно. Весь вопрос в том как проверить нет ли уже созданного документа 2.
11. user856012 13 09.06.21 10:01 Сейчас в теме
(10)
Из документа 1 создаем документ 2
Что в вашем понимании значит "из документа 1"? Или этот документ 1 является основанием для документа 2, или ссылка на него сохраняется в реквизите документа 2.

Если ни то, ни то, то задача не решается в принципе.
12. user856012 13 09.06.21 10:05 Сейчас в теме
(11)
Если ни то, ни то, то задача не решается в принципе.
Возражу сам себе. :)

Можно в документе 1 ввести реквизит - ссылку на документ 2 и заполнять его после создания документа 2. а при попытке создания проверять - заполнена ли ссылка: Если да - отказ в создании дубля.
15. waitklassik 09.06.21 10:08 Сейчас в теме
(12) я про это и спрашивал. Пример кода можете привести данной проверки?
17. user856012 13 09.06.21 10:12 Сейчас в теме
(15)
Пример кода можете привести данной проверки?
Лехко! ;)
Если ЗначениеЗаполнено(СсылкаНаДокумент2) Тогда
   Предупреждение("Такой документ уже создан!");
   Возврат;
КонецЕсли;
18. ilnur75 09.06.21 10:18 Сейчас в теме
(17) и будет менеджер методом тыка определять какой же документ указать.
19. user856012 13 09.06.21 10:27 Сейчас в теме
(18)
будет менеджер методом тыка определять какой же документ указать.
Почему "методом тыка"? Поскольку данные в документ 2 заполняются из конкретного документа 1, то не составляет труда в процедуре заполнения прописать в реквизит документа 1 ссылку на создаваемый документ 2.
20. ilnur75 09.06.21 10:41 Сейчас в теме
(19) к чему тогда проверка на заполнение этого реквизита?
23. bmk74 233 10.06.21 12:41 Сейчас в теме
(19)А если документ 2 пометят на удаление, либо вообще удалят, ваша проверка не сработает
24. user856012 13 10.06.21 12:57 Сейчас в теме
(23)
если документ 2 пометят на удаление, либо вообще удалят, ваша проверка не сработает
Не факт, что это вообще имеет значение - деталей постановки задачи автор не сообщил.

В качестве альтернативы могу предложить вставить в документ 1 текстовый реквизит, в который будет записываться не ссылка на документ 2, а его номер+дата.

И тогда проверять не только заполненность этого реквизита, но и существование такого документа через Документы.Документ2.НайтиПоНомеру() - если нету, то можно создавать.

Опять-таки, можно и тут придумать возражения - а если документ перенумеруют или изменят его дату? На этот случай см. выше - автор про это промолчал.
25. bmk74 233 10.06.21 13:23 Сейчас в теме
(24) Да если честно автор по моему сам не поймет чего хочет, чем не устраивает его "документ основание" вообще не понял...
26. user856012 13 10.06.21 14:05 Сейчас в теме
(25)
чем не устраивает его "документ основание" вообще не понял...
Ну не хочет он ввода на основании!.. почему-то.

В принципе, это тоже реквизит документа 2, только скрытый (системный). Его недостатком можно считать разве что то, что удалять документы 1 станет труднее - на них будут ссылки в документах 2, как раз ДокументОснование.

Если проблема в этом, то вариант в (24) - оптимален.
27. bmk74 233 10.06.21 14:46 Сейчас в теме
(26)Да можно тупо Уникальный Идентификатор(документа) записывать, и поиск по ГУИДУ ..и ссылочной зависимости не будет, и поиск однозначный..но вообще все это хрень, лучше регистра накопления пока нет ничего :) с его остатками
13. waitklassik 09.06.21 10:06 Сейчас в теме
(11)Из документа 1 по нажатию кнопки создается документ 2. Документ 2 частично заполняется данными из документа 1. Все работает. Вопрос в том как перед созданием документа 2 проверить нет ли документа с такими же данными уже созданного?
14. user856012 13 09.06.21 10:08 Сейчас в теме
(13)
как перед созданием документа 2 проверить нет ли документа с такими же данными уже созданного?
Для этого должна быть какая-то связь между документами. Варианты, какая связь - расписаны выше.
16. ilnur75 09.06.21 10:11 Сейчас в теме
(13) вечный цикл, см.пост 1
21. user856012 13 09.06.21 10:45 Сейчас в теме
(20)
к чему тогда проверка на заполнение этого реквизита?
Ответ на ваш вопрос - в (13):
Из документа 1 по нажатию кнопки создается документ 2
Что непонятно? На пальцах: чтобы проверить, нажималась ли кнопка в данном документе.
28. DWZ2 11.06.21 06:42 Сейчас в теме
(11) Можно тупо сравнить товарный состав или покупателя, например. Товарный состав лучше сравнивать где-то на 80% совпадений.
3. Lenten 25 09.06.21 09:13 Сейчас в теме
во втором документе сделать ссылку на первый (например как на документ основание). И по этой ссылке проверять.
4. Albert_2008 09.06.21 09:29 Сейчас в теме
Добавить строковый реквизит (Идентификатор) в документ , который будет заполнятся при записи. Ну и по потом по нему проверять - есть ссылки или нет.
9. coollerinc 185 09.06.21 09:48 Сейчас в теме
У вас всегда на основании поступления может быть только одна отгрузка? Вообще в типовых для этого используют остаточный регистр. ТоварыКОтгрузке. Допустим документ поступление делает движение приход, а отгрузка Расход. При провдении отгрузки проверяется остаток. Если ушел в минус, тогда, что то не так. И создавать документ нельзя. Это позволит создавать несколько отгрузок с разными товарами из поступления, на основании поступления.
22. Basoiii 10.06.21 09:14 Сейчас в теме
Настроить критерии отбора, во время заполнения по 1 документу, проверять запросом по критерию отбора связанные документы по типу документа. Правда это дополнительная проверка будет, с настроенным критерием можно просто в документе открыть отчет по связанным документам и проверить все созданные в связке доки.

Собственно сама настройка критерия отбора займет пару минут, В сам критерий отбора добавить тип данных(документ 1) который будет искать (если его нет) и состав дополнить нужным документом(2 док), предварительно добавив в этот документ(2) реквизит с типом 1 документа.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)