8.х Проблема с циклом

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

  1. TopicStarter Overlay
    Mans
    Offline

    Mans

    Регистрация:
    5 окт 2009
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Подскажите подалуйста, почему виснет следующий участок кода???

    Код:
    Строка =  = выборка.Наименование;
    Счетчик = 1; 
    Строка1 = "";
    Пока Сред(Строка, Счетчик, 1) <> " " Цикл
    Строка1 = Строка1 + Сред(Строка, Счетчик, 1);
    Счетчик = Счетчик + 1;
    КонецЦикла;
    
    
    
    Заранее, большое спасибо!
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    если виснет то значит цикл зациклен....

    посмотри отладчиком что у тебя формируется .... у тебя условие постоянно выполняется..
    попробуй сначало
    СокрЛП(Выборка.Наименование)
    и потом еще прервать цикл когда индекс = 255 допустим.. а вообще смотри отладчик....
    что у тебя там в наименовании неизвестно!
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Условие бредовое. А если в конце нет " "?
    Через СтрДлина надо уж тогда было делать...
  4. TopicStarter Overlay
    Mans
    Offline

    Mans

    Регистрация:
    5 окт 2009
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Действительно глупо получилось, извеняюсь! Вообще условие было такое:

    Код:
    Пока Счетчик <> (СтрДлина(Строка) + 1) и Сред(Строка, Счетчик, 1) <> " " Цикл      Строка1 = Строка1 + Сред(Строка, Счетчик, 1);
    Счетчик = Счетчик + 1;
    КонецЦикла;
    
    Я чтобы не заморачиваться, написал без дополнительного условия, потому что оно у меня работало.
    Но самое интересно, что этот цикл заработал, когда я полностью дописал программу игнорируя эту ошибку!

    Теперь же меня интересует, как выполнить сравнение текущего символа с
    Код:
    "
    
    (ковычкой), т.е.
    Код:
    Сред(Строка, Счетчик, 1) <> """
    
    не работает. Наверное очень глупый вопрос, но это мой первый опыт программирования в 1с.

    И ещё, возникла проблема с записью содержимого переменной
    Код:
    Строка
    
    в поле Наименование (элемент списка контрагентов в справочнике). Пробовал
    Код:
    выборка.Наименование = Строка1
    
    - выдал ошибку что нету доступа для редактирования этого поля...
  5. reloc
    Offline

    reloc

    Регистрация:
    30 окт 2008
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    Сравнивать таким образом:
    Код:
    Сред(Строка, Счетчик, 1) <> """"
    
    А перед присваиванием значения реквизиту объекта, надо этот объект получить (если в "выборка" это ссылка на элемент справочника):
    Код:
    ТекОбъект = выборка.ПолучитьОбъект();
    ТекОбъект.Наименование = Строка1;
    ТекОбъект.Записать(); 
    
  6. TopicStarter Overlay
    Mans
    Offline

    Mans

    Регистрация:
    5 окт 2009
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    reloc, большое спасибо! Всё заработало.
    Кстати, нашел ещё такой способ сравнения ковычек:
    Код:
    Сред(Строка,Счетчик,1) <> Символ(34)
    
    

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