#0
by sbabay
Управляемое приложение. Есть ОбщийМодуль, где должна происходить проверка заполненности элементов формы (ПолеВвода, Полевыбора). Т.е. по нажатию некоторой кнопки в форме должна вызваться функция общего модуля, которая вернет Истина, если все элементы заполнены. Как это сделать? Как вообще можно достать значение Элемента?
#2
by Stepa86
Курим ПроверитьЗаполнение, Обработку проверки заполнения и различные свойства на реквизитах
#3
by sbabay
Ну вот, например, у меня есть два реквизита формы: Контрагент (справочник.Контрагенты) и Примечание (Строка 100) И на форме два элемента: ИмяКонтрагента (ПутькДанным = Контрагент.Наименование) и Примечание (ПутьКДанным = Примечание). В общий модуль я могу форму (ЭтаФорма). Как поступать дальше? Что я там смогу с этим сделать?
#4
by sbabay
Хочется сделать универсально, т.е. чтобы это работало для любой формы, просто добавив вызов функции общего модуля. А так придется писать "ОбработкаПроверкиЗаполнения" в каждой форме
#5
by unf13
а зачем писать "в каждой форме" ? у тебя какая-то нестандартная обработка проверки заполнения? Просто протыкал в конфигураторе нужные реквизиты, свойство "проверка заполнения - выдавать ошибку", и все.
#6
by sbabay
Тут немного другой механизм предполагается. Один СуперПользователь (Администратор, например). Заполняет отмечает галочками те элементы формы и сохраняет эти настройки. Далее остальные пользователи работают уже на основе этих данных. Если какому-то элементу формы админ проставил обязательность заполнения, то они должны его заполнить.
#9
by sbabay
по примеру из я должен буду написать примерно такое: Так? Я же не хочу писать один и тот же код во всех формах, а хочу вызвать так:
#11
by Defender aka LINN
Нет. Такого писать не надо. "Я же не хочу писать один и тот же код во всех формах, а хочу вызвать так" - покажи пальцем - кто тебе мешает?
#12
by sbabay
В этом общем модуле пишем: &НаКлиенте Функция ПроверитьЗаполненностьРеквизитов( ПроверяемаяФорма, СписокПроверяемыхПолей) Для каждого текИмяПроверяемогоЭлемента Из СписокПроверяемыхПолей Цикл
#15
by Defender aka LINN
"СписокПроверяемыхПолей" - тебя ни на какие мысли не наводит? И в общих модулях &НаКлиенте, &НаСервере и прочее - не используется.
#16
by Вовчик
а ты пробовал? сейчас лень проверять, но вроде как этот метод проверяет любое не мутабельное значение.
#18
by sbabay
а на что может натолкнуть "СписокПроверяемыхПолей"? Честно, не понимаю. Там хранятся строки - имена элементов формы. И все. А НаСервере и НаКлиенте в общих модулях используется, если стоят галки "Клиент" и "Сервер" (у меня именно такой)
#20
by Defender aka LINN
ЗАБУДЬ, пеляйт, про элементы формы. Нет их, не существует, пеляйт. Там хранятся имена РЕКВИЗИТОВ (еще раз обрати, пеляйт, внимание - НЕ ЭЛЕМЕНТОВ, а РЕКВИЗИТОВ) для проверки. Есть элемент в этом массиве - реквизит (не элемент формы, ты помнишь, да?) будет проверяться. нет элемента - не будет. Дальше сам додумаешься?
#22
by sbabay
Давайте еще раз. Есть обработка, в которой должно происходить проверка заполнения. У этой формы есть два реквизита: Контрагент (справочник.Контрагенты) и Примечание (Строка 100) И на форме два элемента: ИмяКонтрагента (ПутькДанным = Контрагент.Наименование) и Примечание (ПутьКДанным = Примечание). После того как админ установил обязательность заполнения элементов, сохранился СписокПроверяемыхПолей, который состоит из 2-х элементов-строк: "ИмяКонтрагента" и "Примечание" Теперь в общем модуле вы советуете сделать проверку вот так: Но такое пройдет только для "Примечания", для элемента "ИмяКонтрагента" такое не пройдет, т.к. данные хранятся в реквизите "Контрагент.Наименование"
#23
by sbabay
Я кажется понял, что ты имеешь ввиду. Если я буду использовать: то про "ПроверяемыеРеквизиты" откуда у меня возьмутся? У меня есть только то, что заполнил СуперПользователь - а он отметил те ЭЛЕМЕНТЫ формы, которые должны быть заполнены.
#25
by Вовчик
данные храняться в реквизите Контрагент, а если у тебя элемент формы ИмяКонтрагента связан с Контрагент.Наименование то пользователь все равно его ввести не может. Короче тыкаю пальцем. В модуле формы &НаКлиенте В общем модуле Процедура ПроверкаЗаполнения СтруктураРеквизитов,Отказ)Экспорт Для каждого элемент из Структурареквизитов Цикл Короче форму даже передавать не надо, простопередаешь список реквизитов
#26
by sbabay
Почему это не сможет ввести ИмяКонтрагента? Контрагент - основной реквизит обработки. Я раскрываю это дерево и перетаскиваю в элементы формы "Контрагент.Наименование" и обзываю его "ИмяКонтрагента" Про твой код. И где тут универсальность? Я ж говорил, что у меня есть только список Имен элементов. Как на основе этого напишу: МассивРеквизитов.Добавить(Объект.Клиент); ?
#27
by Вовчик
ты пробовар редактировать ИмяКонтрагента в режиме предприятия? только убедись что в свойствах, путь к данным у тебя именно Объект.Контрагент.наименование. Я твоей структуры не знаю, в каком виде у тебя храниться список? Но блин неужли не сообразишь, да хотя бы если у тебя хранится только наименование реквизита, то используй Выполнить("МассивРеквизитов.Добавить("+ИмяТвоегоРеквизита+");"
#29
by acsent
Я так и не понял зачем САМОМУ проверять заполнение реквизитов. Синтаксис: ПроверитьЗаполнение Возвращаемое значение: Тип: Булево. Истина - ошибок не обнаружено, Ложь - в противном случае. Описание: Проверяет заполнение реквизитов. Для реквизитов, у которых свойство "Проверка заполнения" установлено в значение "Показывать ошибку" и реквизит не заполнен, будет сформировано сообщение об ошибке. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. Вызов метода выполняет обращение к серверу. Примечание: Выполнение метода приводит к возникновению события ОбработкаПроверкиЗаполненияНаСервере.
#31
by sbabay
для этого надо в конфигураторе проставлять "Показывать ошибку" в реквизитах формы. К тому же к полю, путь к данным которого = "Контрагент.Наименование" так не подступишься, не залазея в справочник "Контрагенты". Вот сделал обработку для УТ 11 с 3 реквизитами на форме и парой строк кода. Как проверить хотя бы в этой форме, зная только имена элементов?
#34
by sbabay
Как для элемента "ИмяКонтрагента" это сделать? (путьКДанным = "Контрагент.Наименование")
#38
by Sarmen
Почему бы не заполнять 'СписокПроверяемыхПолей' не именами полей, а строковыми представлениями данных? Например поле: 'Наименование' (Путь к данным: "Контрагент.Наименование"). Тогда проверять что-то типа: Если ЗначениеЗаполнено("Контрагент.Наименование") Тогда ....
#40
by sbabay
в посте я положил обработку для УТ. там 6 строчек кода. Можешь подсказать как и что мне надо поменять? Крайне желательно делать всё без "Выполнить".
#47
by Вовчик
возьми да попробуй, сообщение выходит если тыоставишь пустым ИмяКонтрагента и Примечание
#50
by sbabay
, Да, если передавать не строки, то всё пройдет нормально. Но я не знаю как их достать именно в таком виде. Как происходит установка СуперПользователем обязательных реквизитов. Открывается элемент справочника "НастройкаФормы", там сканируется целевая форма, подтягиваются все элементы формы (ПоляВвода). И Админ напротив каждого ставит галку обязательный или нет. Потом на основе этих данных и происходит проверка. Т.е. в целевой форме я могу поиметь только ИмяЭлемента и ПутьКДанным - а это строки
#52
by sbabay
+ Изначально я так и описывал свою проблему. На входе имею только имена проверяемых элементов и Форму. Выполняется всё в общем модуле. Как проверить реквизиты на заполненность я знаю.
#53
by Вовчик
Поясни зачем тебе нужно вводить имя контрагент, почему его нельзя выбирать из справочника? Ну мне очень интересно это.
#56
by Вовчик
Что то сомневаюсь я в ее универсальности. Она таки как раз будет совсем не универсальна.
#58
by Вовчик
Ну так создай новый реквизит ИмяКонтрагента, именно реквизит и присваивай потом Контрагент.Наименование = ИмяКонтрагента. И без проблем проверяй потом Форма["ИмяКонтрагента"]. тебе по любому так делать придется если контрагент у тебя не основной реквизит формы.
#60
by sbabay
Мегаумные модераторы чё-т притихли. На этом форуме даже у модераторов цель - обос-ать вопрошающего?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Проверка существования процедуры
- Проверка на заполнение полей таблчного поля документа?
- Проверка 2-НДФЛ
- Проверка на дублирующие строки
- v8: Проверка заполненности колонки ТЧ 8.2
- Как вызвать функцию модуля обработки из формы внешней управляемой формы
- Получить значение элемента с управляемой формы
- v7: 1c++: проверка элемента справочника на вхождение в группу / список групп
- Набор записей регистра сведений на управляемой форме элемента Справочника
- УТ проверка заполненности контактных лиц при записи нового контрагента
- Вызов обычной формы подбора номенклатуры из управляемой формы
- Проверка заполненности составного поля в запросе
В этой группе 1С
- СКД Неправильный путь к файлу 'ДанныеРасшифровкиКомпоновкиДанных''
- Не работает отладчик в модуле менеджера
- 8.2 Мигающий текст
- И опять "Превышено максимальное время ожидания предоставления блокировки"
- v8: не заполняется документ формирование книги покупок
- Конвертация данных 2.1.5.1
- УТ 10.3 Запрет неоперативного проведения
- Консоль отчетов, размещение группировок
- неправильное заполнение колонки результата расчета в 1С:ЗУП 8
- CODEBASE error "unrecognized field name" на SQL базе. Откуда?
- Есть ограничение для размера базы в DBF в 7.7.?
- Как в 1С УТ 11 версии напечатать договор с клиентом/поставщиком ?
- СКД - количество группировок
- RDP позволяет войти один раз
- Сервер 1С 32 бита и MS SQL 64 бита
- Сеанс отсутствует или удален (5038)
- Перенос контрагентов из Бухгалтерии 2.0 в УТ 11.
- Универсальный отчет, поле не найдено
- как задать разные цены на шт. и на коробку в 1с розница
- Не проставляются счета учета контрагентов в Поступлениях на РС