Надо сделать проверку заполнения полей.

1. user1136603 18.03.19 12:43 Сейчас в теме
Есть ТБ. Нужно что бы при нажатия на кнопку сохранить или при нажатия чего либо, происходила проверка заполненности вкладок "Номенклатура", "Количество", "Подразделение получатель" и "Ставка НДС".
Я знаю что можно поставить галку выдавать ошибку в реквизите, но этот способ не подходит. Т.к есть еще одна форма и если оставить типовым то другая форма выдает , то что реквизиты не заполнены.
Подскажите как реализовать это.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
8. arsen_botashev 18.03.19 14:28 Сейчас в теме
Для каждого Элемент из ТвояТЧ Цикл
Если НЕ ЗначениеЗаполнено(Элемент.Номенклатура) Тогда
Сообщить("Вы не заполнили Номенклатуру!");
Отказ = Истина;
КонецЕсли;
КонецЦикла;

(1)
alex-l19041; +1 Ответить
3. oleg-x 27 18.03.19 12:49 Сейчас в теме
Обходи циклом табличную часть и проверяй заполненность.
Или, по каждой колонке ищи пустую ссылку, при условии что нет составных типов.
Если найдена пустая ссылка, то отказ.
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура",Справочники.Номенклатура.ПустаяСсылка());
НайдСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если НайдСтроки.Количество() > 0 Тогда
	Отказ = Истина;
КонецЕсли;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dmitrij-2 45 18.03.19 12:45 Сейчас в теме
(1) Если ЗначениеЗаполнено(Объект.ТвойРеквизит) Тогда ...
8. arsen_botashev 18.03.19 14:28 Сейчас в теме
Для каждого Элемент из ТвояТЧ Цикл
Если НЕ ЗначениеЗаполнено(Элемент.Номенклатура) Тогда
Сообщить("Вы не заполнили Номенклатуру!");
Отказ = Истина;
КонецЕсли;
КонецЦикла;

(1)
alex-l19041; +1 Ответить
3. oleg-x 27 18.03.19 12:49 Сейчас в теме
Обходи циклом табличную часть и проверяй заполненность.
Или, по каждой колонке ищи пустую ссылку, при условии что нет составных типов.
Если найдена пустая ссылка, то отказ.
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура",Справочники.Номенклатура.ПустаяСсылка());
НайдСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если НайдСтроки.Количество() > 0 Тогда
	Отказ = Истина;
КонецЕсли;
4. user1136603 18.03.19 12:55 Сейчас в теме
(3)Процедуру когда вызывать эту?
5. oleg-x 27 18.03.19 12:58 Сейчас в теме
Перед записью в модуле формы, что бы не нагружать систему при перепроведение.
alex-l19041; +1 Ответить
6. Kovekh 18.03.19 13:32 Сейчас в теме
(5) А не лучше ли ОбработкаПроверкиЗаполнения в модуле объекта? Хотя, скорее всего, она тоже вызовет стандартную обработку и ругаться будет другая форма
7. oleg-x 27 18.03.19 13:54 Сейчас в теме
(6) Наверное можно, она так же есть в модуле формы документа.
9. user1136603 18.03.19 15:50 Сейчас в теме
(5) Вот такой у меня код получился, сообщение выводит, но почему то все равно записывает док. Что не так?
Прикрепленные файлы:
10. oleg-x 27 18.03.19 16:39 Сейчас в теме
Посмотрите типовую процедуру перед записью или другую, во входящих параметрах есть "отказ"

Процедура ОбработкаПроведения(Отказ, Режим)


А Вы добавили в расширение процедуру, которая не имеет отказа в параметрах.
Судя по названию, Вы не ту процедуру сделали в расширение, делаете проверку, когда запись уже сделана и нужно сделать дополнительные действия.
11. user1136603 18.03.19 17:14 Сейчас в теме
(10)Да , я уже это понял.
Процедуру надо вызывать перед записью.
Но теперь вопрос. перед записью на клиенте или перед записью на сервере?
13. user1136603 18.03.19 17:16 Сейчас в теме
(10)Если на клиенте , то выходить такая вот ошибка
Прикрепленные файлы:
14. oleg-x 27 18.03.19 17:39 Сейчас в теме
(13) Не корректный код, Текущие данные обходите в цикле.
Вам вообще не нужны текущие данные.
Для каждого стр из Объект.ТабличнаяЧасть Цикл
Если НЕ ЗначениеЗаполнено(стр.Номенклатура) Тогда
Отказ = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
12. oleg-x 27 18.03.19 17:15 Сейчас в теме
15. user1136603 18.03.19 17:44 Сейчас в теме
(12)Если делать на сервере, то вот так.
Но цикл он весь проходит и записывать не дает. Если есть номенклатура то все хорошо.
Прикрепленные файлы:
16. oleg-x 27 18.03.19 17:50 Сейчас в теме
Конфлит с типовым модулем, это надо разбираться что там происходит, если бы писал без расширений, то проблем бы небыло
Покажи код, при котором такое выдает.
17. user1136603 18.03.19 18:10 Сейчас в теме
(16) Надо было сделать процедуру вместо, а не после. И тогда все хорошо работает.
Прикрепленные файлы:
Оставьте свое сообщение

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