8.х Проверка значения реквизита

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Семен Сосницкий, 20 окт 2014.

  1. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Необходимо реализовать проверку формы документа при открытии на значение одного из реквизитов, и при определенных значениях вывести предупреждение об отказе открытия и закрыть форму. Реквизит имеет тип Справочник.Ссылка, данный код
    Код:
    Если Объект.Цех = "Цех №1" Тогда
            Предупреждение("Данный цех не в вашем ведении");
            КонецЕсли;
    
    не работает, хотя Объект.Цех содержит в себе именно "Цех №1", проверил в отладчике. Я так понимаю, дело в типах, ибо я пытаюсь сравнить строку с переменной типа Справочник.Ссылка.Цеха? Как тогда это реализовать?
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Вот так, например:
    Код:
    СсылкаНаСпр = Справочники.НужныйСправочник.НайтиПоКоду("КодЦеха1");
    Если Объект.Цех = СсылкаНаСпр Тогда
    Предупреждение("Данный цех не в вашем ведении");
    КонецЕсли;
    --- Объединение сообщений, 20 окт 2014 ---
    Это что, типа РЛС такой извращенный ?
  3. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Благодарю, все работает! А не подскажете, почему мой вариант не работал, дело в типах?
    Попросили реализовать учет заявок, там несколько инстанций утверждения и права на изменения реквизитов зависят от значения других реквизитов, имени пользователя и т.д. :)
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Да, дело в типах. В вашем примере вы проверяете ссылку на равенство строке.
    --- Объединение сообщений, 20 окт 2014 ---
    В отладчике это все прекрасно отслеживается, смотрите не только на значение, но и на тип.
  5. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Спасибо, понял. Теперь правда вылезает ошибка "преобразование значения к типу "булево" не может быть выполнено", ошибка в строчке с условием Если.
    Код:
    Функция ВозвратПодчиненности(ИмяЦеха) Экспорт
        Цех1 = Справочники.Цеха.НайтиПоКоду("01");
        Цех2 = Справочники.Цеха.НайтиПоКоду("02");
        Цех3 = Справочники.Цеха.НайтиПоКоду("03");
        Если ИмяЦеха = Цех1 ИЛИ Цех2 ИЛИ Цех3 Тогда
            Подчиненность = "Директор по производству";
        Иначе
            Подчиненность = "Главный инженер";
        КонецЕсли;
        Возврат Подчиненность;
    КонецФункции
    
    Я вообще не понял, что и куда он хочет преобразовать, это же просто условие.
    Последнее редактирование: 20 окт 2014
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Сразу видно:
    Если ИмяЦеха = Цех1 ИЛИ Цех2 ИЛИ Цех3 Тогда

    Нужно разделять:
    Код:
    Если ИмяЦеха = Цех1 ИЛИ ИмяЦеха = Цех2 ИЛИ ИмяЦеха = Цех3
    Вы вообще никогда не кодили или кодили на другом языке ???
  7. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Извиняюсь, понял, налажал. Забыл скобки, или со скобками в 1с условия писать нельзя? Ну в смысле
    Код:
    Если х = (а или b или c)
    Кодил, но на более низкоуровневых языках, с, с++, асм, из чего-то похожего на 1с был только очень краткий курс с#
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Такая конструкция не работате в 1С.

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