Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

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

Andy2C
новичок
офлайн
Пост №1
 
21.01.2008 08:03

"Пишу:<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>На кнопке "ОК", "#Записать Закрыть". По идее, при записи должна обрабатываться процедура в обоих случаях."

CheshirskyCat
читатель
офлайн
Дата регистрации: 09.01.2004
Сообщений: 326
Пост №2
 
21.01.2008 10:00

Мне кажется, что сначала надо делать проверку на пустой код, а уж потом, если он не пустой, проверять нет ли уже такого в справочнике.<br>И еще нужно добавить проверку на случай если редактируется уже записанный в справочник элемент. Без этой проверки Спр.НайтиПокоду найдет сам себя.<br>

Andy2C
новичок
офлайн
Пост №3
 
21.01.2008 14:53

> Без этой проверки Спр.НайтиПокоду(...) найдет сам себя. Естейственно найдет, если справочник записан.А тут идет речь о создании нового справочника (он пока ещё не записан!).<br>> Мне кажется, что сначала надо делать проверку на пустой код<br>Вот я и делаю проверку на пустой код! Проверка не отрабатывается в процедлуре ПриЗаписи()! В этом то и состоит проблема.

Tanya
читатель
офлайн
Дата регистрации: 03.12.2001
Сообщений: 8412
Пост №4
 
21.01.2008 16:58

"> Если ПустоеЗначение(СокрЛП(Код))=1 Тогда<br>> Предупреждение("Не указан БИК банка!");<br>> СтатусВозврата(0);<br>> Возврат;<br>> КонецЕсли;<br>Вставила ваш код в процедуру призаписи(). Все работает , элемент с пустым БИКом программа записать не дает. А поверка на существующий -установка галочки у контроля уникальности."

CheshirskyCat
читатель
офлайн
Дата регистрации: 09.01.2004
Сообщений: 326
Пост №5
 
22.01.2008 09:40

"А вы уверены в том что у вас нет в справочнике элементов с пустым БИК?<br>Еще раз поясняю, поменяйте порядок проверки. Сначала на пустой код, а потом на уникальность.<br>В вашем случае, если в справочнике уже есть элемент с пустым БИК, то всегда будет отрабатывать первая часть кода, а до второй как раз дело и не дойдет, поскольку стоит Возврат;"

Andy2C
новичок
офлайн
Пост №6
 
23.01.2008 07:08

"> установка галочки у контроля уникальности.<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>"

Andy2C
новичок
офлайн
Пост №7
 
23.01.2008 08:03

"Блин, после заклинаний "Записать()", "Форма.Закрыть()", предопределенная процедура "ПриЗаписи()", вообще перестала работать.<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>Всё работает :) Даже отрабатывается процедура "ПриЗакрытии()"!"

Tanya
читатель
офлайн
Дата регистрации: 03.12.2001
Сообщений: 8412
Пост №8
 
23.01.2008 11:39

"Очень у вас все странно. Это ваш код, только поменяла местами проверку на пустое и повторяющиеся значение и все.<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>Все работает!!"

CheshirskyCat
читатель
офлайн
Дата регистрации: 09.01.2004
Сообщений: 326
Пост №9
 
24.01.2008 10:27

Tanya, спасибо за проверку. :)<br>Просто человек уверен что нулевого кода нет"Его и быть не может, т.к. элемент с пустым кодом даже не записывается и начинает ругаться еще до того, как отработается процедура "ПриЗаписи()"." Откуда такая уверенность. Ведь, наверное, данные уже какие-то были до того как менялась процедура ПриЗаписи()<br><br>

Andy2С
новичок
офлайн
Пост №10
 
26.01.2008 13:23

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

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация