• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

7.7 Обработка подбора

  • Автор темы olga13
  • Дата начала
O

olga13

Добрый день. Подскажите, пожалуйста, в чем может быть дело? Форма открывается, но процедура "ОбработкаПодбора" не вызывается.

Код:
			Если ПустоеЗначение(Константа.ФормаПодбора) = 1 Тогда
ОткрытьПодбор("Товары","ДляПодбора");
Иначе
Попытка
ОткрытьПодбор("Товары", СокрЛП(Константа.ФормаПодбора));
Исключение
Предупреждение("Неверно задана константа ""Форма подбора""!");
ОткрытьПодбор("Товары","ДляПодбора");
КонецПопытки;
КонецЕсли;
 
V

vbs

Так ее надо явно описать в модуле
 
Д

Дайнеко

Советы
1) уберите хлам. Удалите все строки кроме 1-ой:
ОткрытьПодбор("Товары");

К слову сказать,
Попытка
ОткрытьПодбор("Товары", СокрЛП(Константа.ФормаПодбора));
кажется не даст ошибки, даже если название формы неправильное.

2) уверены, что "ОбработкаПодбора" написано правильно? Скопируйте из другого работающего блока.
3) уверены, что "ОбработкаПодбора" написали где надо? Посмотрите как люди пишут.
4) уверены, что "ОбработкаПодбора" не вызывается? Первой строкой в ней напишите Предупредить("Hello, World!"); Добейтесь положительного результата на примитивных предложениях. А потом уж намазывайте маслом.

Если на указанные вопросы Вы ответили:
0-1, вы уверены, что знаете 1С?
2-3 - вы интеллигентный, сомневающийся в себе человек.
4-5 - вы наглый и самоуверенный тип.


Кстати, у нас во дворе пацаны пишут так:
Код:
ИмяФормы = "ДляПодбора";
Если НЕ(ПустоеЗначение(Константа.ФормаПодбора) = 1) Тогда
ИмяФормы = СокрЛП(Константа.ФормаПодбора);
КонецЕсли;

Попытка
ОткрытьПодбор("Товары", ИмяФормы);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
 
V

vbs

балдею я, зеленый, как ты молодежь учишь :)
 
O

olga13

Спасибо за советы. Я уже нашла, в чем ошибка. Кто-то до меня зачем-то вставил процедуру

Код:
Процедура ПриВыбореСтроки() 
СтатусВозврата(0);
КонецПроцедуры



Добавлено:
К слову сказать,
Попытка
ОткрытьПодбор("Товары", СокрЛП(Константа.ФормаПодбора));
кажется не даст ошибки, даже если название формы неправильное.

В этом вы правы. Век живи, век учись.

Добавлено:
Если НЕ(ПустоеЗначение(Константа.ФормаПодбора) = 1) Тогда
ИмяФормы = СокрЛП(Константа.ФормаПодбора);
КонецЕсли;

Объясните мне, в чем смысл использования "НЕ"? Чем это лучше, чем просто

Если ПустоеЗначение(Константа.ФормаПодбора) = 0 Тогда
 
Д

Дайнеко

Объясните мне, в чем смысл использования "НЕ"? Чем это лучше, чем просто

Мой смысл примера - компактность и ясность чтения. Если "ОткрытьПодбор" встречается 3 раза, из них 2 абсолютно одинаково, это уже трудно читаемый код. Пусть на 1 сек, но затрудняет. А по Вашему коду еще и пальцем надо поводить.

"НЕ" из той же категории. По-привычке написал. Я объясняю коллегам так, что чему равен результат проверки 0 или 1 я может и рассмотрю, а может и нет. А вот начало выражения вижу всегда. Поэтому пишем выражения как нормальные логические, т.е. всегда равные Истина, простите = 1 (почему 1С в 7-ке отказалась от нормального типа "Булево"?). Выглядит так:
Код:
Если НЕ(Выбран() = 1)
Если НЕ(Найден = 1)
Если (АдресСуществует = 1)
Сравните:
Код:
Если (ЭтоНоваяЗапись = 1) И (КлиентНайденПоКоду(КодКлиента) = 0) Тогда
// строки для случая, когда Клиент НЕ найден. "0" все заметили ?

Перед нажатием кнопки "Отправить" задам риторический вопрос: Почему подавляющее большинство 1С-ников пишут коряво? Словно в детстве на Паскале или "С" не писали, а вчера переквалифицировались из бухгалтеров.
 
O

olga13

Почему подавляющее большинство 1С-ников пишут коряво? Словно в детстве на Паскале или "С" не писали, а вчера переквалифицировались из бухгалтеров.

А по-моему, vbs прав. Вопрос стиля и привычки. Я, например, как раз-таки привыкла смотреть на значение в правой части условия (0 или 1), а все эти "НЕ" наоборот затрудняют чтение (опять повторюсь - речь идет конкретно обо мне!). По-моему, "красота" модуля - это вообще вопрос спорный. У каждого свое мнение на этот счет. Главное, чтобы на выходе было красиво, быстро и удобно. Кстати, НЕ(ПустоеЗначение(Константа.ФормаПодбора) = 1) - это две операции, а ПустоеЗначение(Константа.ФормаПодбора) = 0 - одна. Так что можно еще подискутировать по поводу быстродействия :)
И зря вы свысока смотрите на тех, кто "из бухгалтеров переквалифицировался". Зато они не понаслышке знают, что пользователю (читай - бухгалтеру) надо. А то бывает код - загляденье, а работать невозможно.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!