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

Тема в разделе "1C и всё что с ней связано", создана пользователем olga13, 4 авг 2011.

  1. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Добрый день. Подскажите, пожалуйста, в чем может быть дело? Форма открывается, но процедура "ОбработкаПодбора" не вызывается.

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Так ее надо явно описать в модуле
     
  3. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Не помогает
     
  4. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Советы
    1) уберите хлам. Удалите все строки кроме 1-ой:
    ОткрытьПодбор("Товары");

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

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

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


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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    балдею я, зеленый, как ты молодежь учишь :)
     
  6. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Спасибо за советы. Я уже нашла, в чем ошибка. Кто-то до меня зачем-то вставил процедуру

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


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

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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    одно и то же. Вопрос стиля и привычки
     
  8. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

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

    olga13 Well-Known Member

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

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Где этот Vbs ?! Порву как грелку! :)

    Красота и изящество, они, еле-палы, во всем. Блин.
    Во как!
     
Загрузка...

Поделиться этой страницей