8.х Обход в цикле

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

  1. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Добрый день! Ребят подскажите пожалуйста как решить вот задачку:

    В цикле идет перебор номенклатуры на различные проверки. У номенклатуры есть разные свойства. Например у одной номенклатуры одно свойство "Предельная скидка", а у другой "Предельная скидка" и "Распродажа". Мне нужно чтобы если у номенклатуры есть свойство "Распродажа", то цикл с условиями не выполнялся, я это реализовал следующим образом:

    Если Распродажа Тогда
    Продолжить;
    КонецЕсли;

    Трудность заключается в том, что у номенклатуры может и не быть этого свойства "Распродажа" и тогда для этой номенклатуры, условия должны выполнятся. Вот что-то влез в ступор, как это сделать, сейчас выдают ошибку что для номенклатуры у которой нет этого свойства "Преобразование к значение Булево не может быть выполнено".
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    как вариант в попытку запихать
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Может сначала стоит проверять на наличие этого свойства ?
  4. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Как проверить на наличие свойства?
  5. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Зависит от того, что Вы понимаете под свойством. Покажите структуру данных.
  6. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Код:
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Объект,
        |    ЗначенияСвойствОбъектов.Свойство.Наименование
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &Объект";
       
        Запрос.УстановитьПараметр("Объект", Объект);
       
        Запрос.Выполнить().Выгрузить(ТаблицаЗначений);
       
        Возврат ТаблицаЗначений;       
    
    Ругается на метод Выгрузить
  7. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Код:
    //вместо
    Запрос.Выполнить().Выгрузить(ТаблицаЗначений);
    //вот это
    тз = Запрос.Выполнить().Выгрузить();
  8. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое!)
  9. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Добрый день! Ребят подскажите пожалуйста в чем ошибка! Вот функция, которой я получаю свойства номенклатуры:
    Код:
    Функция ПроверкаНаНаличиеСвойства (Объект) Экспорт
       
        ТаблицаСвойств = Новый ТаблицаЗначений;
       
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Свойство.Наименование КАК Свойство
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &Объект";
       
        Запрос.УстановитьПараметр("Объект", Объект);
       
        ТаблицаСвойств = Запрос.Выполнить().Выгрузить();
       
        Возврат ТаблицаСвойств;
       
    КонецФункции
    
    Затем в процедуре я эту функцию вызываю:
    Код:
            ТаблицаСвойств       = ГКБИС.ПроверкаНаНаличиеСвойства(Выборка.Номенклатура); // Получаем таблицу значений со свойствами номенклатуры.
                          НайденнаяСтрока      = ТаблицаСвойств.Найти("Распродажа");
    
    
    Затем делаю проверку на наличие мне нужного свойства:
    Код:
             Если НайденнаяСтрока.Свойство = "Распродажа" Тогда
                Продолжить;
             КонецЕсли;   
    
    А если у номенклатуры такого свойства нету, то происходит ошибка:
    Код:
    {ОбщийМодуль.ГКБИС.Модуль(1331)}: Значение не является значением объектного типа (Свойство)
             Если НайденнаяСтрока.Свойство = "Распродажа" Тогда
    
  10. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Читайте Синтаксис-помощник почаще. Метод Найти у Таблица значений возвращает
    т.е. вам надо обязательно проверять на Неопределено (т.е. Метод Найти не нашел ни одной записи по условию)
  11. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Я читал и проверял на Неопределено, все равно такая же ошибка, может просто я как-то не правильно условия делаю, не пойму.
    --- Объединение сообщений, 7 май 2014 ---
    Все спасибо, я немножко по другому это решил!
  12. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в вашем коде не видать условия както так примерно
    Код:
     Если Не НайденнаяСтрока = Неопределено Тогда
    Если НайденнаяСтрока.Свойство = "Распродажа" Тогда
                Продолжить;
             КонецЕсли;  
    Иначе
    Продолжить;
    Конецесли;
Похожие темы
  1. igorekkrav
    Ответов:
    30
    Просмотров:
    2.524
  2. SerzhM
    Ответов:
    2
    Просмотров:
    406
Загрузка...

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