Ввод на основании, контроль уникальности создаваемого документа.
Имеется Документ1 на основании его создается Документ2. Нужно сделать проверку на уникальность Документ2. Если Документ2 уже есть пересоздать с запросом у пользователя. "Документ2 уже имеется. Создать заново?".
Я понял, что в ОбработкеЗаполнения нужно отключить стандартную обработку и написать свою, но как написана стандартная я не знаю.
Можете написать пример, и нужно ли где-то еще писать кроме Обработки Заполнения?
Заранее благодарю.
Я понял, что в ОбработкеЗаполнения нужно отключить стандартную обработку и написать свою, но как написана стандартная я не знаю.
Можете написать пример, и нужно ли где-то еще писать кроме Обработки Заполнения?
Заранее благодарю.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Процедура КнопкаСоздатьНаОсновании(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| АвансовыйОтчет.Ссылка КАК Ссылка
|ИЗ
| Документ.АвансовыйОтчет КАК АвансовыйОтчет
|ГДЕ
| АвансовыйОтчет.ДокументОснование = &ТекущаяСсылка";
Запрос.УстановитьПараметр("ТекущаяСсылка", Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Документ2 уже имеется. Создать заново?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
Док = Выборка.Ссылка.ПолучитьОбъект();
Иначе
Док = Документы.АвансовыйОтчет.СоздатьДокумент();
КонецЕсли;
//Заполнение документа
КонецПроцедуры
Показать
(12)Можно спроцедуру в кнопке перезаписать вот так:
Процедура КнопкаСоздатьНаОсновании(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| АвансовыйОтчет.Ссылка КАК Ссылка
|ИЗ
| Документ.АвансовыйОтчет КАК АвансовыйОтчет
|ГДЕ
| АвансовыйОтчет.ДокументОснование = &ТекущаяСсылка";
Запрос.УстановитьПараметр("ТекущаяСсылка", Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Документ2 уже имеется. Создать заново?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
Док = Выборка.Ссылка.ПолучитьОбъект();
Иначе
Док = Документы.АвансовыйОтчет.СоздатьДокумент();
КонецЕсли;
Док.Заполнить(Ссылка);
КонецПроцедуры
Показать
Пока сделал так, В процедуре ПередЗаписью ищу документ с таким Основанием и удаляю его, если номер документа отличается от текущего.
В идеале конечно перезаписывать, но не знаю как правильно написать код чтобы заменить стандартные обработки.
Таже проблема и с написанием своей кнопки.
В идеале конечно перезаписывать, но не знаю как правильно написать код чтобы заменить стандартные обработки.
Таже проблема и с написанием своей кнопки.
Проверять на дубли при записи - это и есть самая что ни на есть методическая ошибка. Пользователь минут 15 топтал документ, делал подбор, указывал партии и много чего ещё навешанного в документе, а при записи ему типа ласково "а не пошли бы вы лесом со всей работой своей, потому как дубль"...?!
(20)Согласен. что при записи проверять на дубли не совсем правильно, но моем случае, я при открытии выдаю пользователю информацию что документ на основании уже был создан, а при записи спрашиваю пользователя "Перезаписать новым документом или нет?"
пользователь может посмотреть старый или перезаписать новым.
Задача не запретить дубль, а исключить возможность создания дубля.
пользователь может посмотреть старый или перезаписать новым.
Задача не запретить дубль, а исключить возможность создания дубля.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот