7.7 При выполнение цикла, вылазит ошибка: "Не выбран элемент!"

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем phcode, 2 сен 2009.

  1. TopicStarter Overlay
    phcode
    Offline

    phcode Опытный в 1С

    Регистрация:
    13 апр 2009
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Добрый вечер.
    Написал обработку для автоматического заполнения документа из справочника. Обработка заключается в следующем в справочнике ищется по Наименованию элемент и идет проверка помечен ли он на удаление...

    Код:
        СпрМестаХр=СоздатьОбъект("Справочник.МестаХранения");
    СпрМестаХр.ПорядокНаименований(); 
    СпрМестаХр.ВыбратьЭлементы();
    Пока СпрМестаХр.ПолучитьЭлемент()=1 Цикл
    Если (СпрМестаХр.НайтиПоНаименованию("Склад сырья №1",0,1)=1) и (СпрМестаХр.ПометкаУдаления()=0)
    Тогда
    ПрСклад=СпрМестаХр.ТекущийЭлемент();
    Прервать;
    КонецЕсли;
    //Предупреждение ("ОШИБКА, склад списания мат. затрат не обнаружен!");
    КонецЦикла;
    
    
    
    
    При запуске вылазит ошибка:
    Код:
    Пока СпрМестаХр.ПолучитьЭлемент()=1 Цикл
    {Документ.ПЛ.Форма.Модуль(93)}: <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/не')">Не выбран элемент!</span>
    
    
    
    
    Подскажите, что я не так делаю???
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    СпрМестаХран в ошибке, а в коде я вижу только СпрМестаХр
    ты недоговариваешь
  3. TopicStarter Overlay
    phcode
    Offline

    phcode Опытный в 1С

    Регистрация:
    13 апр 2009
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    при очередном прогоне программы, я вносил изменения. Но это не суть важно, проблема осталась.
  4. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    выкладывай сюда свою супер-пупер обработку
    или хотя бы весь текст сюда. ошибка выше...синтаксическая
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Жесть! Зачем использовать ГЛОБАЛЬНЫЙ поиск по справочнику внутри цикла????

    Если уж хотите - делайте так:
    Код:
    Если (СокрЛП(ВРег(СпрМестаХр.Наименование))=СокрЛП(ВРег(Скл)) и (СпрМестаХр.ПометкаУдаления()=0)  Тогда        
    ПрСклад=СпрМестаХр.ТекущийЭлемент();        
    Прервать;
    .........
    
    
    
    где Скл="Склад сырья №1";

    ИЛИ
    Код:
    Если (Найти(ВРег(СпрМестаХр.Наименование),СокрЛП(ВРег(Скл))<>0) и (СпрМестаХр.ПометкаУдаления()=0)  Тогда        
    ПрСклад=СпрМестаХр.ТекущийЭлемент();        
    Прервать;
    .........
    
    
    
  6. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    все правильно...
    как только ты написал эту штуку
    "Если (СпрМестаХр.НайтиПоНаименованию("Склад сырья №1",0,1)=1) и (СпрМестаХр.ПометкаУдаления()=0)" у тебя произошло перепозиционирование.. то есть вхождение в цикл у тебя произошло один раз после этого ты ошибсо)
    P.S. вообще цикл в этом случае не имеет смысла.. ты проверяешь один элемент на наличие у него пометки на удаление... ты мог просто найти этот элемент и посмотреть пометку и все..)
  7. TopicStarter Overlay
    phcode
    Offline

    phcode Опытный в 1С

    Регистрация:
    13 апр 2009
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Бухгалтерский угодник, спасибо выручили.

    Да, тут я немного переусердствовал, цикл ни к чему! :unsure:

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