7.7. отлавливание пустого кода справочника
Показывать по
10
20
40
сообщений
- 1
- 2
21.01.2008
08:03
#1
"Пишу:
Процедура ПриЗаписи()
Спр = СоздатьОбъект("Справочник.Банки");
Спр.ВыбратьЭлементы();
Если Спр.НайтиПокоду(Код)=1 Тогда
Предупреждение("Банк с таким БИК уже существует!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
//.....
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецПроцедуры;
Почему-то первая половина процедуры работает, а до второй, даже дело не доходит, Прога сразу орет : "Не верно задан код!". Кто такой Код и почему он неверно задан, не до всех доходит. Начинают звонить чуть ли не с 6 утра. Хотел, чтоб прога ругалась, но по-русски. В роли Код - выступает БИК банка. Я с просонья, сначала не врубился, кто ругается на кота при вводе в новую банку и за что ему неверно задали...
На кнопке "ОК", "#Записать Закрыть". По идее, при записи должна обрабатываться процедура в обоих случаях."
Процедура ПриЗаписи()
Спр = СоздатьОбъект("Справочник.Банки");
Спр.ВыбратьЭлементы();
Если Спр.НайтиПокоду(Код)=1 Тогда
Предупреждение("Банк с таким БИК уже существует!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
//.....
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецПроцедуры;
Почему-то первая половина процедуры работает, а до второй, даже дело не доходит, Прога сразу орет : "Не верно задан код!". Кто такой Код и почему он неверно задан, не до всех доходит. Начинают звонить чуть ли не с 6 утра. Хотел, чтоб прога ругалась, но по-русски. В роли Код - выступает БИК банка. Я с просонья, сначала не врубился, кто ругается на кота при вводе в новую банку и за что ему неверно задали...
На кнопке "ОК", "#Записать Закрыть". По идее, при записи должна обрабатываться процедура в обоих случаях."
21.01.2008
10:00
#2
Мне кажется, что сначала надо делать проверку на пустой код, а уж потом, если он не пустой, проверять нет ли уже такого в справочнике.
И еще нужно добавить проверку на случай если редактируется уже записанный в справочник элемент. Без этой проверки Спр.НайтиПокоду найдет сам себя.
И еще нужно добавить проверку на случай если редактируется уже записанный в справочник элемент. Без этой проверки Спр.НайтиПокоду найдет сам себя.
21.01.2008
14:53
#3
> Без этой проверки Спр.НайтиПокоду(...) найдет сам себя. Естейственно найдет, если справочник записан.А тут идет речь о создании нового справочника (он пока ещё не записан!).
> Мне кажется, что сначала надо делать проверку на пустой код
Вот я и делаю проверку на пустой код! Проверка не отрабатывается в процедлуре ПриЗаписи()! В этом то и состоит проблема.
> Мне кажется, что сначала надо делать проверку на пустой код
Вот я и делаю проверку на пустой код! Проверка не отрабатывается в процедлуре ПриЗаписи()! В этом то и состоит проблема.
21.01.2008
16:58
#4
"> Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
> Предупреждение("Не указан БИК банка!");
> СтатусВозврата(0);
> Возврат;
> КонецЕсли;
Вставила ваш код в процедуру призаписи(). Все работает , элемент с пустым БИКом программа записать не дает. А поверка на существующий -установка галочки у контроля уникальности."
> Предупреждение("Не указан БИК банка!");
> СтатусВозврата(0);
> Возврат;
> КонецЕсли;
Вставила ваш код в процедуру призаписи(). Все работает , элемент с пустым БИКом программа записать не дает. А поверка на существующий -установка галочки у контроля уникальности."
22.01.2008
09:40
#5
"А вы уверены в том что у вас нет в справочнике элементов с пустым БИК?
Еще раз поясняю, поменяйте порядок проверки. Сначала на пустой код, а потом на уникальность.
В вашем случае, если в справочнике уже есть элемент с пустым БИК, то всегда будет отрабатывать первая часть кода, а до второй как раз дело и не дойдет, поскольку стоит Возврат;"
Еще раз поясняю, поменяйте порядок проверки. Сначала на пустой код, а потом на уникальность.
В вашем случае, если в справочнике уже есть элемент с пустым БИК, то всегда будет отрабатывать первая часть кода, а до второй как раз дело и не дойдет, поскольку стоит Возврат;"
23.01.2008
07:08
#6
"> установка галочки у контроля уникальности.
Галочка, давно установлена. Лет 5 назад. Только, выражение "Код не уникален", тоже не до всех доходит.
> если в справочнике уже есть элемент с пустым БИК
Его и быть не может, т.к. элемент с пустым кодом даже не записывается и начинает ругаться еще до того, как отработается процедура "ПриЗаписи()".
Придется, наверно, написать ещё одну процедурку, типа:
Процедура ПередЗаписью()
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Записать();
Форма.Закрыть();
КонецПроцедуры
И вставить её в кнопку "ОК".
Анекдоты писать можно:
Краткий словарь к справочнику "Банки".
Код - БИК банка.
Не уникален - уже существует.
Не верно задан - не заполнен.
Редиска - нехороший человек.
Вот и получается:
Не верно задан код - Не заполнен БИК банка.
Код не уникален - БИК банка уже существует.
Слова, при которых нужно не задумываясь вызывать программиста:
Поле - это не то, на котором растёт пшеница.
Тело - это не голый торс!
Агрегатный объект - Не имеет ничего общего с холодильным агрегатом.
Переменная - это не женщина с легким поведением.
Массив - это не качёк, который весит 200 кг.
Индекс - это не то, что пишут на конвертах.
"Выходит за границы" - это не эмиграция!
И тд. и т.п.
Никогда не пытаться их переводить!
"
Галочка, давно установлена. Лет 5 назад. Только, выражение "Код не уникален", тоже не до всех доходит.
> если в справочнике уже есть элемент с пустым БИК
Его и быть не может, т.к. элемент с пустым кодом даже не записывается и начинает ругаться еще до того, как отработается процедура "ПриЗаписи()".
Придется, наверно, написать ещё одну процедурку, типа:
Процедура ПередЗаписью()
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Записать();
Форма.Закрыть();
КонецПроцедуры
И вставить её в кнопку "ОК".
Анекдоты писать можно:
Краткий словарь к справочнику "Банки".
Код - БИК банка.
Не уникален - уже существует.
Не верно задан - не заполнен.
Редиска - нехороший человек.
Вот и получается:
Не верно задан код - Не заполнен БИК банка.
Код не уникален - БИК банка уже существует.
Слова, при которых нужно не задумываясь вызывать программиста:
Поле - это не то, на котором растёт пшеница.
Тело - это не голый торс!
Агрегатный объект - Не имеет ничего общего с холодильным агрегатом.
Переменная - это не женщина с легким поведением.
Массив - это не качёк, который весит 200 кг.
Индекс - это не то, что пишут на конвертах.
"Выходит за границы" - это не эмиграция!
И тд. и т.п.
Никогда не пытаться их переводить!
"
23.01.2008
08:03
#7
"Блин, после заклинаний "Записать()", "Форма.Закрыть()", предопределенная процедура "ПриЗаписи()", вообще перестала работать.
Пришел к такому варианту:
Процедуру "ПриЗаписи()" вообще удалил за ненадобностью.
Процедура ПередЗаписью()
ПроверкаСчета();
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если Новый = 1 Тогда
Спр = СоздатьОбъект("Справочник.Банки");
Спр.ВыбратьЭлементы();
Если Спр.НайтиПокоду(Код)=1 Тогда
Предупреждение("Банк с таким БИК уже существует!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Записать();
Форма.Закрыть();
КонецПроцедуры
Обращение к этой процедуре вставил в кнопку "ОК".
Всё работает
Даже отрабатывается процедура "ПриЗакрытии()"!"
Пришел к такому варианту:
Процедуру "ПриЗаписи()" вообще удалил за ненадобностью.
Процедура ПередЗаписью()
ПроверкаСчета();
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если Новый = 1 Тогда
Спр = СоздатьОбъект("Справочник.Банки");
Спр.ВыбратьЭлементы();
Если Спр.НайтиПокоду(Код)=1 Тогда
Предупреждение("Банк с таким БИК уже существует!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Записать();
Форма.Закрыть();
КонецПроцедуры
Обращение к этой процедуре вставил в кнопку "ОК".
Всё работает
23.01.2008
11:39
#8
"Очень у вас все странно. Это ваш код, только поменяла местами проверку на пустое и повторяющиеся значение и все.
Бухг 7.7 модуль элемента в справочнике банк
Процедура ПриЗаписи()
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Спр = СоздатьОбъект("Справочник.Банки");
Спр.ВыбратьЭлементы();
Если Спр.НайтиПокоду(Код)=1 Тогда
Предупреждение("Банк с таким БИК уже существует!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
ПроверкаСчета();
КонецПроцедуры // ПриЗаписи()
Не дает записать пустой БИК и не дает записать элемент с уже имеющимся БИКом.
Все работает!!"
Бухг 7.7 модуль элемента в справочнике банк
Процедура ПриЗаписи()
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Спр = СоздатьОбъект("Справочник.Банки");
Спр.ВыбратьЭлементы();
Если Спр.НайтиПокоду(Код)=1 Тогда
Предупреждение("Банк с таким БИК уже существует!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
ПроверкаСчета();
КонецПроцедуры // ПриЗаписи()
Не дает записать пустой БИК и не дает записать элемент с уже имеющимся БИКом.
Все работает!!"
24.01.2008
10:27
#9
Tanya, спасибо за проверку. 
Просто человек уверен что нулевого кода нет"Его и быть не может, т.к. элемент с пустым кодом даже не записывается и начинает ругаться еще до того, как отработается процедура "ПриЗаписи()"." Откуда такая уверенность. Ведь, наверное, данные уже какие-то были до того как менялась процедура ПриЗаписи()
Просто человек уверен что нулевого кода нет"Его и быть не может, т.к. элемент с пустым кодом даже не записывается и начинает ругаться еще до того, как отработается процедура "ПриЗаписи()"." Откуда такая уверенность. Ведь, наверное, данные уже какие-то были до того как менялась процедура ПриЗаписи()
26.01.2008
13:23
#10
"Ну НЕ РАБОТАЕТ!!!
Пишу:
Процедура ПриЗаписи()
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецПроцедуры
Выдает "Код не уникален!" Стоит флажек "Контроль уникальности", уже более 5 лет. Я же писал об этом! Поэтому одинаковых БИК, а тем более пустых - просто быть не может!
Если я убираю этот флажек, тогда да, процедура ПриЗаписи() начинает обрабатывать.
Вполне возможно, что и с пустыми кодами справочник начнет записываться.
Флажек сначала выставите, потом процедуры проверяйте
В типовой конфе, вообще никаких предупреждений не выдаётся. Сколько пользователей, и каждый заводит ещё по банку, который уже есть в справочнике. Таких "Клонов" доходит за год - с десяток."
Пишу:
Процедура ПриЗаписи()
Если ПустоеЗначение(СокрЛП(Код))=1 Тогда
Предупреждение("Не указан БИК банка!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецПроцедуры
Выдает "Код не уникален!" Стоит флажек "Контроль уникальности", уже более 5 лет. Я же писал об этом! Поэтому одинаковых БИК, а тем более пустых - просто быть не может!
Если я убираю этот флажек, тогда да, процедура ПриЗаписи() начинает обрабатывать.
Вполне возможно, что и с пустыми кодами справочник начнет записываться.
Флажек сначала выставите, потом процедуры проверяйте
В типовой конфе, вообще никаких предупреждений не выдаётся. Сколько пользователей, и каждый заводит ещё по банку, который уже есть в справочнике. Таких "Клонов" доходит за год - с десяток."
- 1
- 2
Читают тему
(гостей: 1)