8.х Как удалить все после пробела?

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 24 июн 2013.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Есть наименование. Вывожу его на экран. Как убрать все после пробела?
    Например, из строки
    Наименование Артикул
    должно остаться
    Наименование
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ищите позицию пробела и выбираете количество символов слева в исходной строке.
    Код:
    Лев(стр, найти(стр, " "));
    Вопрос: а если в наименовании у вас будут пробелы, то как вы решите эту проблему?
  3. Dmitriy_76
    Offline

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

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    стр="авапмвапа павпа";
    НайдПоз=Найти(стр," ");
    Если НайдПоз>0Тогда
    Стр=Лев(Стр,НайдПоз-1)№
    КонецЕсли;
  4. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    А как оптимизировать код:
    Код:
    Область = Макет.ПолучитьОбласть("Строка");
    Выборка = Справочники.СпецификацииНоменклатуры.Выбрать();
    Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Если Объект.Активная = Истина Тогда
    стр = Объект.Наименование;
    НайдПоз = Найти(стр,"СП");
    Если НайдПоз > 0 Тогда
    стр = Лев(стр, НайдПоз-1);
    КонецЕсли;
    
    Выборка2 = Справочники.Номенклатура.Выбрать();
    Пока Выборка2.Следующий() Цикл
    Если СОКРЛП(Выборка2.Артикул) = стр Тогда
    Если Выборка2.ВидВоспроизводства = "Покупка" Тогда
    Область.Параметры.Ошибка = стр;
    ТабДок.Вывести(Область);
    КонецЕсли;        
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    
    Можно как-нибудь более правильно переписать код чтобы выборка из справочника быстрее шла(т.е. чтобы сравнение с стр быстрее шло)? Справочник номенклатура огромный, очень долго идет обработка.
  5. Dmitriy_76
    Offline

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

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    выборку 2 исключить..
    вместо нее прописать запрос из справочника номенклатура с условием по артикулу.
  6. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Ругается теперь на стр
    Код:
    Область = Макет.ПолучитьОбласть("Строка");
    Выборка = Справочники.СпецификацииНоменклатуры.Выбрать();
    Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Если Объект.Активная = Истина Тогда
    стр = Объект.Наименование;
    НайдПоз = Найти(стр,"СП");
    Если НайдПоз > 0 Тогда
    стр = Лев(стр, НайдПоз-1);
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Артикул,
    |    Номенклатура.ВидВоспроизводства
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Артикул = &стр";
    Номенклатура = Запрос.Выполнить().Выгрузить();
    Для каждого Элемент из Номенклатура Цикл
    Если Элемент.ВидВоспроизводства = Перечисления.ВидыВоспроизводстваНоменклатуры.Закупка Тогда
    Область.Параметры.Ошибка = стр;
    ТабДок.Вывести(Область);
    КонецЕсли;
    КонецЦикла;
    
    Как правильно после запроса установить параметр для стр?
  7. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.359
    Симпатии:
    5
    Баллы:
    29
    перед Номенклатура = Запрос.Выполнить().Выгрузить()
    запрос.установитьПараметр("стр", стр);

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