7.7. отлавливание пустого кода справочника

Новая тема
Показывать по сообщений
"Пишу:<br><br>Процедура ПриЗаписи()<br> Спр = СоздатьОбъект("Справочник.Банки");<br> Спр.ВыбратьЭлементы();<br> Если Спр.НайтиПокоду(Код)=1 Тогда<br> Предупреждение("Банк с таким БИК уже существует!");<br> СтатусВозврата(0);<br> Возврат;<br> <br> КонецЕсли;<br>//.....<br> Если ПустоеЗначение(СокрЛП(Код))=1 Тогда<br> Предупреждение("Не указан БИК банка!");<br> СтатусВозврата(0);<br> Возврат;<br> КонецЕсли;<br> КонецПроцедуры;<br><br>Почему-то первая половина процедуры работает, а до второй, даже дело не доходит, Прога сразу орет : "Не верно задан код!". Кто такой Код и почему он неверно задан, не до всех доходит. Начинают звонить чуть ли не с 6 утра. Хотел, чтоб прога ругалась, но по-русски. В роли Код - выступает БИК банка. Я с просонья, сначала не врубился, кто ругается на кота при вводе в новую банку и за что ему неверно задали...  :)<br>На кнопке "ОК", "#Записать Закрыть". По идее, при записи должна обрабатываться процедура в обоих случаях."
Мне кажется, что сначала надо делать проверку на пустой код, а уж потом, если он не пустой, проверять нет ли уже такого в справочнике.<br>И еще нужно добавить проверку на случай если редактируется уже записанный в справочник элемент. Без этой проверки Спр.НайтиПокоду найдет сам себя.<br>
> Без этой проверки Спр.НайтиПокоду(...) найдет сам себя. Естейственно найдет, если справочник записан.А тут идет речь о создании нового справочника (он пока ещё не записан!).<br>> Мне кажется, что сначала надо делать проверку на пустой код<br>Вот я и делаю проверку на пустой код! Проверка не отрабатывается в процедлуре ПриЗаписи()! В этом то и состоит проблема.
"> Если ПустоеЗначение(СокрЛП(Код))=1 Тогда<br>> Предупреждение("Не указан БИК банка!");<br>> СтатусВозврата(0);<br>> Возврат;<br>> КонецЕсли;<br>Вставила ваш код в процедуру призаписи(). Все работает , элемент с пустым БИКом программа записать не дает. А поверка на существующий -установка галочки у контроля уникальности."
"А вы уверены в том что у вас нет в справочнике элементов с пустым БИК?<br>Еще раз поясняю, поменяйте порядок проверки. Сначала на пустой код, а потом на уникальность.<br>В вашем случае, если в справочнике уже есть элемент с пустым БИК, то всегда будет отрабатывать первая часть кода, а до второй как раз дело и не дойдет, поскольку стоит Возврат;"
"> установка галочки у контроля уникальности.<br>Галочка, давно установлена. Лет 5 назад. Только, выражение "Код не уникален", тоже не до всех доходит.<br>> если в справочнике уже есть элемент с пустым БИК<br>Его и быть не может, т.к. элемент с пустым кодом даже не записывается и начинает ругаться еще до того, как отработается процедура "ПриЗаписи()".<br>Придется, наверно, написать ещё одну процедурку, типа:<br><br>Процедура ПередЗаписью()<br>Если ПустоеЗначение(СокрЛП(Код))=1 Тогда<br>Предупреждение("Не указан БИК банка!");<br>СтатусВозврата(0);<br>Возврат;<br>КонецЕсли;<br>Записать();<br>Форма.Закрыть();<br>КонецПроцедуры<br><br>И вставить её в кнопку "ОК".<br><br>Анекдоты писать можно:<br>Краткий словарь к справочнику "Банки".<br>Код - БИК банка.<br>Не уникален - уже существует.<br>Не верно задан - не заполнен.<br>Редиска - нехороший человек.<br><br>Вот и получается:<br>Не верно задан код - Не заполнен БИК банка.<br>Код не уникален - БИК банка уже существует.<br><br>Слова, при которых нужно не задумываясь вызывать программиста:<br>Поле - это не то, на котором растёт пшеница.<br>Тело - это не голый торс!<br>Агрегатный объект - Не имеет ничего общего с холодильным агрегатом.<br>Переменная - это не женщина с легким поведением.<br>Массив - это не качёк, который весит 200 кг.<br>Индекс - это не то, что пишут на конвертах.<br>"Выходит за границы" - это не эмиграция!<br>И тд. и т.п.<br>Никогда не пытаться их переводить! :)<br>"
"Блин, после заклинаний "Записать()", "Форма.Закрыть()", предопределенная процедура "ПриЗаписи()", вообще перестала работать.<br>Пришел к такому варианту:<br>Процедуру "ПриЗаписи()" вообще удалил за ненадобностью.<br><br>Процедура ПередЗаписью()<br> ПроверкаСчета();<br> Если ПустоеЗначение(СокрЛП(Код))=1 Тогда<br> Предупреждение("Не указан БИК банка!");<br> СтатусВозврата(0);<br> Возврат;<br> КонецЕсли;      <br><br> Если Новый = 1 Тогда <br> Спр = СоздатьОбъект("Справочник.Банки");<br> Спр.ВыбратьЭлементы();<br> Если Спр.НайтиПокоду(Код)=1 Тогда<br> Предупреждение("Банк с таким БИК уже существует!");<br> СтатусВозврата(0);<br> Возврат;<br> КонецЕсли; <br> КонецЕсли;<br>Записать();<br>Форма.Закрыть(); <br>КонецПроцедуры<br><br>Обращение к этой процедуре вставил в кнопку "ОК".<br><br>Всё работает :) Даже отрабатывается процедура "ПриЗакрытии()"!"
"Очень у вас все странно. Это ваш код, только поменяла местами проверку на пустое и повторяющиеся значение и все.<br><br>Бухг 7.7 модуль элемента в справочнике банк<br><br>Процедура ПриЗаписи()<br> Если ПустоеЗначение(СокрЛП(Код))=1 Тогда<br> Предупреждение("Не указан БИК банка!");<br> СтатусВозврата(0);<br> Возврат;<br> КонецЕсли;<br> <br>Спр = СоздатьОбъект("Справочник.Банки");<br>Спр.ВыбратьЭлементы();<br>Если Спр.НайтиПокоду(Код)=1 Тогда<br>Предупреждение("Банк с таким БИК уже существует!");<br>СтатусВозврата(0);<br>Возврат;<br><br>КонецЕсли;<br><br><br><br>ПроверкаСчета();<br> <br>КонецПроцедуры // ПриЗаписи()<br><br>Не дает записать пустой БИК и не дает записать элемент с уже имеющимся БИКом.<br>Все работает!!"
Tanya, спасибо за проверку. :)<br>Просто человек уверен что нулевого кода нет"Его и быть не может, т.к. элемент с пустым кодом даже не записывается и начинает ругаться еще до того, как отработается процедура "ПриЗаписи()"." Откуда такая уверенность. Ведь, наверное, данные уже какие-то были до того как менялась процедура ПриЗаписи()<br><br>
"Ну НЕ РАБОТАЕТ!!!<br>Пишу:<br>Процедура ПриЗаписи()<br>Если ПустоеЗначение(СокрЛП(Код))=1 Тогда<br>Предупреждение("Не указан БИК банка!");<br>СтатусВозврата(0);<br>Возврат;<br>КонецЕсли;<br>КонецПроцедуры<br><br>Выдает "Код не уникален!" Стоит флажек "Контроль уникальности", уже более 5 лет. Я же писал об этом! Поэтому одинаковых БИК, а тем более пустых - просто быть не может!<br>Если я убираю этот флажек, тогда да, процедура ПриЗаписи() начинает обрабатывать.<br>Вполне возможно, что и с пустыми кодами справочник начнет записываться.<br>Флажек сначала выставите, потом процедуры проверяйте :)<br>В типовой конфе, вообще никаких предупреждений не выдаётся. Сколько пользователей, и каждый заводит ещё по банку, который уже есть в справочнике. Таких "Клонов" доходит за год - с десяток."
Читают тему
(гостей: 1)

Быстрый переход