#0
by Humandra
А что, я что-то не догоняю, или придется код в двух местах писать? Проблема следующая: надо гарантировать, что в регистр сведений не попадут "неправильные" данные, как интерактивно, так и программно. У модуля набора записей есть метод "ОбработкаПроверкиЗаполнения". Но похоже, что он вызывается только в том случае, если пользователь вводит данные в форме регистра. У меня же пользователь вводит данные в форме совсем другого объекта, а из него программно идет запись в регистр. Хочется следующего: 1) чтобы пользователю в обоих формах (и регистра, и другого объекта) как в штатном метода - подсказывало, в каком именно поле ошибка 2) если другой программист сделает свою обработку, и в ней не пропишет защиту - чтобы регистр не дал в себя записать некорректные данные Т.е. было бы хорошо, если бы в модуле объекта был "ОбработкаПроверкиЗаполнения", которая вызывалась и интерактивно, и программно. А в модуле формы было бы событие, которое позволило бы связать реквизит формы и реквизит объекта, в котором ошибка. Такой возможности нет? Сейчас приходит в голову только такой способ: Но при таком подходе будет лезть системное сообщение "Не удалось записать: Имя регистра", а не только мое сообщение. Есть идеи лучше?
#3
by vmv
что мешает вызывать метод ПроверитьЗаполнение при интерактивных действиях, который и вызовет ваш ОбработкаПроверкиЗаполнения
#5
by Humandra
Попробую. Есть несколько форм, из которых ведется запись в один и тот же регистр. Часть форм - формы регистра, часть форм - формы других объектов, в т.ч. обработок. Надо: 1) обеспечить проверку корректности заполнения данных 2) указать пользователю в формах на реквизиты, в которых ошибка заполнения 3) не дублировать код Предлагается как вариант код в , но в этом случае лезет системная ошибка "Не удалось записать: Имя регистра", чего бы не хотелось. Не поняла. Предлагаете еще в модуле формы вызывать МояПроцедураПроверкиЗаполнения, где программно добавляется запись в регистр? А что вы предлагаете?
#6
by vmv
ПроверитьЗаполнение - Это МЕТОД, который можно вызывать как на основе анализа интерактивных действий, так и при любых определенных условиях в МаяПроцедура! ОбработкаПроверкиЗаполнения - это системное событие объекта, которое возникает при записи его чего-то там и при вызове МЕТОДА ПроверитьЗаполнение что может быть проще в этой элементарной логике, нет же надо прикрутить рющки, плющки и прочую хрень, ех
#9
by Humandra
Хотя стоп. А если мой абстрактный коллега-разява забудет вызвать ПроверитьЗаполнение в своем коде? Все равно должен быть код как в , получается. Но просто вызывав ПроверитьЗаполнение интерактивно, я избавляюсь от системной ошибки.
#12
by vmv
пока не уточните, как в итоге образуется булевая переменная "Неверно", то дальнейшее обсуждение бесполезно, если оно ввобще имеет смысл далее. Ведь в РС невозможно записать неуникалные измерения вообщее или на дату в случае периодического. Значит ваше "Неверно" контролирует корректность(уникальность) либо периода, либо набора ресурсов. озвучивайте, позовем лошадь - она подумает, у нее голова большая
#13
by Humandra
Не фи, а это просто сокращение реального кода. Неверно - это просто для упрощения примера. На самом деле там идет проверка на заполнение реквизита конкретными значениями в случае, если другой реквизит заполнен каким-то конкретным образом.
#15
by Humandra
Сочувствую, и рекомендую не запускать болезни настолько возбудимой психики - это может плохо кончиться.
#16
by Humandra
А теперь по теме: ну что вам опять не понравилось, а? Хотите конкретики? Ну, к примеру, проверка такого условия: "Если контрагент, которому ведется продажа - сам по себе является поставщиком - то тариф может быть только из группы "тарифы для перепродажи". Это не совсем точное условие, потому что если разжевывать - то придется объяснять предметку. Но примерно соответствует.
#17
by vmv
просто так называется и не надо понимать ее буквально как она называется. Основное назначение этого обработчика системного события - ПЕРЕОПРЕДЕЛИТЬ стандартно установленные в конфигураторе правила проверки, а НЕ просто ПРОВЕРИТЬ. т.е. в этом обработчике можно отменить проверку реквизита, удалив его из коллекции ПроверяемыеРеквизиты, или назначить добавив туда. Сам обработчик ОбработкаПроверкиЗаполнения не служить для Проверки, а лишь меняет правила и лишь его буквальный вид вводит в заблуждение неокрепшие умы. да для вашей задачи нужно использовать старый добрый обработчик ПередЗаписью. Хотя если ваше ДелайЭто означает не действие, а еще изменение првил, то надо его назвать ДелайЭтоПоПравилуТакНадо или ДелайЭтоПоПравилуТакНеНадо, тогда код станет потясающе красив и ...бесполезен)
#18
by Humandra
О... интересно. "На заборе написано... но это забор, а не ..."! :) Т.е. если я вообще по каким-то причинам не использую галочки в конфигураторе для стандартной проверки, то я вообще не должна использовать обработчик ОбработкаПроверкиЗаполнения, так что-ли? И всегда писать свой метод, вызывая его из ПередЗаписью? Но как же опять таки то, что ПередЗаписью вызовет системную ошибку, а мне она не нужна, мне нужен мой текст ошибки + позиционирование на реквизитах?
#20
by vmv
+ ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) - использовать для ужесточения условий проверки, добавляя туда поля(в том числе вложенные) согласно вашим условиям. Если вы не установили "галочки" "выдавать ошибку" или не добавляете в коллекцию ПроверяемыеРеквизиты имена полей, то использовать это событие наивно) вот занчит в чем главная суть - пытаться писать данные в базу и если система справедливо решает что данные не проходят проверку, то система должна молчать. мдя - это задача о двух стульях, как сразу сесть на оба, тут нужен толковый продюссер, а не аналитик)
#21
by Humandra
Почему бы мне не использовать ОбработкаПроверкиЗаполнения в любом случае? Чем частный случай ПроверяемыеРеквизиты = "" хуже переопределения уже определенных правил?
#22
by Humandra
Вы меня где-то явно не поняли *здесь у меня должны быть вооот такие глаза* Или я вас не поняла. Если система справедливо решает, что данные не проходят проверку, система должна не дать записать некорректные данные в регистр, это главное! И сообщить тоже должна, но я должна иметь возможность переопределить текст и метод этого сообщения.
#23
by vmv
от системного сообщения при записи РС можно избавиться только одним способом по шагам 1. определяем по вашей МаяПроцедура, что запись некорректна 2. формируем текст сообщения и "смягчаем" проверку в ОбработкаПроверкиЗаполнения, чтобы запись прошла и записалась без системного сообщения о невозможности записи. не слишком ли большая цена за системофобию?
#25
by Humandra
>> ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) - использовать для ужесточения условий проверки, добавляя туда поля(в том числе вложенные) согласно вашим условиям. А я как раз и хочу ужесточить правило. Т.е. умолчательное правило = "ничего не проверять". А я хочу проверить, и если условие нарушается - не дать записать. Подождите. Что-то где-то не то и не так. У меня сейчас вроде бы все работает почти так, как я хочу. ОбработкаПроверкиЗаполнения - не выдает системной ошибки при Отказ = Истина. Только мою. И ничего удалять не надо. А вот ПередЗаписью - выдает. И все же получается, надо делать как в . Т.е. код должен быть как в , но ваш совет в тоже использовать надо, чтобы не дошло дело до ошибки в ПередЗаписью. Правда, тогда проверка будет выполняться дважды, что тоже плохо. Меня системофобия бы не смущала, если бы ошибка была бы не в виде сообщения с кнопкой ок. Это очень неудобно юзеру. :(
#26
by Humandra
Что-то мне так тоже не нравится :) Ибо так я загашу любую ошибку, а может у меня скуль отвалился, и система пишет "Не могу записать данные, потому что нет скуля". Тогда еще придется анализировать в попытке вид ошибки.
#27
by vmv
ввобще-то я не тестировал это методы еще, видел только в коде. использовал вас как бетта-тестера, зачем делать самому, если если есть человек готовый и озабоченный этой темой. теперь, согласно вашим выкладкам, я приобрел экспиренс в этой теме)
#28
by Humandra
Что-что?!!! Издеваетесь... Вот гады мистяне! :) Я же хочу узнать, как люди пишут! Короче, надо думать дальше, что делать с двойным вызовом. Как-то проверять в ПередЗаписью, была ли уже проверка. Или принять другое решение = "забить".
#29
by Humandra
А что, до того момента как появилась ОбработкаПроверкиЗаполнения, народ обычно просто забивал на системное сообщение, вызываемое при Отказ = Истина в ПередЗаписью? Или загашивал в Попытке (вот это, все же, ИМХО, зло)? Или как-то по другому выкручивались таки?
#30
by Humandra
А то я с 8.1 вообще не работала, только с 7.7, очень мало с 8.0 и 8.2 вот. Нужна инфа по практике использования.
#31
by vmv
нет, я выводил картинку мужика в черном костюме и черных очках, который грозил пальцем после системного сообщения. девочки стали думать и бояться вводить чушь в данных, правда иногда это делали и когда я спрашивал "зачем?" олтвечали - на мужика посмотреть)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как получить имя регистра сведений из формы записи этого же регистра?
- Вид списка в УФ(управляемой форме) 8.2
- обработка заполнения регистра сведений
- Проверка заполнения колонки в ТЧ
- Внешняя обработка для заполнения объектов в УФ
- v8: Методика написания конфигураций на УФ, общие модули. Подскажите неофиту УФ
- Проверка заполнения ресурса регистра накопления.
- УФ, проверка нажатия на форме "Провести и Закрыть" или "Провести"
- обход данных табличной части формы в УФ
- Странное поведение при обновлении списка регистра сведений 1с 8.3 УФ
- Свой документ. Своего регистра сведений нет в командном интерфейсе УФ документ.
В этой группе 1С
- Вопрос по подписке на ИТС
- v7: Как на форме списка справочника при открытии обновить реквизиты
- Помогите настроить сеть в Oracle VM VirtualBox.
- Сколько юзеров УТ11 потянет 32-х битный сервер 1С.
- Инвентарные номера для основных средств стоимостью менее 40 т.р.
- Неизвестная ошибка (SMTP error code 503, 5.5.4 Error: send AUTH command first.)
- v7: ТиС 77 расхождение остатков и товарного отчета
- Отсутствие вложений при приеме почты через ИнтернетПочта
- ПодключитьВнешнююКомпоненту на клиенте вылетает
- Работа с HTTPСоединение, выполнение запроса https, сертификат SSL
- v7: Выгрузка остатков по счетам (на дату) во внешний файл
- ЗУП: неявки по часам попадают на ночное время...
- v7: Астор ВЦ. Ресторан Lite 3.0 и менеджер лицензий под Win7
- Дескриптор окна в 8.2
- v8: Ошибка проведения документов отчетов о розничной продаже УТ 11
- Как реализацию в ут 10.3 провести будущим числом?
- v8: Не работает COM-объект Excel на стороне 64х сервера 1С
- Некорректная ведомость по расчетам с контрагентами
- Поиск текстовой строки в запросе по шаблону
- ЗУП Смена гражданства в середине месяца