Проверка заполнения реквизита

1. user2121407 22.02.25 17:32 Сейчас в теме
Здравствуйте. Можете пожалуйста подсказать.
Как сделать так, чтобы при повторном нажатии кнопки Создать заказ поставщику(если заказ уже был создан), выдавало сообщение ("Заказ уже создан") и заказ не создавало. Попробовал несколько вариантов, но мне либо выдавало ошибку, либо выдавало не то, что мне надо. Буду очень благодарен
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107191 22.02.25 17:56 Сейчас в теме
(1)
Попробовал несколько вариантов, но мне либо выдавало ошибку, либо выдавало не то, что мне надо.

Попробуй во втором варианте поменять в запросе условие с И на ИЛИ.
Тогда не будет ошибки.
Точно!
3. miniogn 44 22.02.25 18:19 Сейчас в теме
(1) А как понимаешь, что заказ уже повторный?
4. user2121407 22.02.25 18:20 Сейчас в теме
(3) Если поле Заказ заполнено. Я попробовал процедуру ОбработкаПроверкиЗаполнения, но у меня уже есть процедура похожая и выдает ошибку.
7. user2116971 22.02.25 18:42 Сейчас в теме
(4)
Я попробовал процедуру ОбработкаПроверкиЗаполнения
А её предназначение ты вообще знаешь? Ты в курсе, что она ничего не знает про твою бизнес-логику?
Это платформенный метод, а не затычка. И у него есть свое собственное предназначение!
5. miniogn 44 22.02.25 18:31 Сейчас в теме
Создай у поля Заказ событие ПриИзменении и напиши, будет так как ты хочешь.
&НаКлиенте
Процедура ЗаказПриИзменении(Элемент)
    Если ЗначениеЗаполнено(Объект.Заказ) Тогда
        Объект.Заказ = неопределено;
        Сообщить("Заказ уже создан");
    КонецЕсли;
КонецПроцедуры
6. user2116971 22.02.25 18:40 Сейчас в теме
(5)
Если ЗначениеЗаполнено(Объект.Заказ) Тогда
        Объект.Заказ = неопределено;
        Сообщить("Заказ уже создан");
    КонецЕсли;

О! Тяжелая артиллерия в бой пошла!
Если поле заполнено - очищаем его нафиг!
И можно опять нажимать на кнопочку, да? Заказ-то ведь уже не создан...
8. miniogn 44 22.02.25 18:52 Сейчас в теме
(6) Работает согласно поставленной задаче. Протестирует, скорректирует задачу если не устроит.
Парусный корабль не плывет прямо к цели, если ветер встречный, а идет под углом, и это всё равно приближает его к цели.
user2121407; +1 Ответить
9. пользователь 22.02.25 19:24
Сообщение было скрыто модератором.
...
10. user2121407 22.02.25 21:08 Сейчас в теме
(8)Да, я при первой же попытке понял, что работает некорректно. Мне кажется, что при создании Заказа я должен заполнить ссылку ЗаказКлиента и там уже проверять есть ли вообще заказ
11. miniogn 44 22.02.25 21:14 Сейчас в теме
(10)
работает некорректно

работает корректно, согласно поставленной задаче. Запоминайте ответ, потом будете говорить бухам, что бы не переделывать пол программы за свой счет.
NicolasCage; user2121407; +2 Ответить
13. user1936660 23.02.25 10:30 Сейчас в теме
(11)
переделывать пол программы за свой счет
КоАП РФ Статья 6.21. Пропаганда нетрадиционных сексуальных отношений и (или) предпочтений, смены пола, отказа от деторождения.
Доиграетесь вы со своей неграмотностью...
Sashares; +1 Ответить
14. miniogn 44 23.02.25 11:21 Сейчас в теме
(13) Хорошо пусть будет половину программы
12. M_A_D 196 22.02.25 22:47 Сейчас в теме
Дак попробуй в ПриСозданииНаСервере сделать проверку на существующий заказ....
Если заказ есть, то уходи в отказ и выводи сообщение во владельца....
16. user2121407 24.02.25 17:15 Сейчас в теме
(12) Проверка делается с помощью запроса?
17. M_A_D 196 24.02.25 17:18 Сейчас в теме
(16) Я бы в ПриСозданииНаСервере искал существующий заказ поставщику, в котором документом основания является документ основания для текущего(нового ) заказа (Конечно же запросом проверка).
Если нашел что-то, то ухожу в отказ, только сообщение нужно отправлять во владельца формы, иначе пользователь не поймет почему не открылась форма нового документа.
18. user2116971 24.02.25 17:40 Сейчас в теме
(17) А я обычно номер автобуса проверяю перед посадкой в него. Чтобы на ходу не выпрыгивать.
20. user2121407 25.02.25 07:57 Сейчас в теме
Товарищи, всем спасибо. Сделал вот так:
Запрос = Новый Запрос;
    
    Запрос.Текст = 
    
    "ВЫБРАТЬ
    |ПриходнаяНакладная.ДокументОснование КАК ДокументОснование
    |ИЗ
    |Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
    |ГДЕ
    |ПриходнаяНакладная.ДокументОснование = &ЗаказПоставщику";
    Запрос.УстановитьПараметр("ЗаказПоставщику", Объект.Заказ);
    РезЗапрос = Запрос.Выполнить().Выбрать();
    
    Если РезЗапрос.Следующий() Тогда    
        
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ("Заказ уже создан");
    Сообщение.Сообщить();    
        
    Иначе    
        
        Если Объект.Запасы.Количество() > 0 Тогда 
        ЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
        ЗаполнитьЗначенияСвойств(ЗаказПоставщику, Объект);
    КонецЕсли;    
        Для Каждого ТекСтрока Из Объект.Запасы  Цикл
            
            ТекСтрокаЗаказПоставщику = ЗаказПоставщику.Запасы.Добавить();
            
            ЗаполнитьЗначенияСвойств(ТекСтрокаЗаказПоставщику,ТекСтрока);
            
        КонецЦикла;
Показать
15. miniogn 44 23.02.25 11:27 Сейчас в теме
(10)
проверять есть ли вообще заказ

Может надо как-то более гибко проверять, а то получается, если один раз выполнили заказ клиенту, то этому клиенту больше никогда нельзя будет выполнять заказ?
19. dehro 12 25.02.25 07:27 Сейчас в теме
Реквизит формы (или переменная формы), при создании заказа указывать истина.
При открытии формы значение реквизита устанавливать соответственно наличия заказа.

При нажатии кнопки проверять флаг
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот