7.7 Вопрос по синтаксису Найти()

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

  1. TopicStarter Overlay
    veuron
    Offline

    veuron

    Регистрация:
    20 май 2013
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Имеются документы с номерами(6578/2, 5376д/4, 8734/2 и т.д.)
    Надо чтобы код проверял значение после символа "/" ,т.е. цифра от 1 до 4. Не нашел как это организовать. Есть только

    Код:
    Если Найти(НомерДок, "/") < 1 Тогда Предупреждение("В номере документа не указан номер цеха через дробь!!!"); 
    Этот код проверяет только "/" а вот цифры после него как проверить? чтобы не вводили "/21,/22" и т.д. а только "/1","/2"."/3""/4" что соответсвуют номерам цехов
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я с 7 не работала, но предположу такой алгоритм

    1. Ищем "/"
    2. Если не нашли - вывели ошибку
    3. Если нашли, проверяем ссколько символов в номере после "/" - функцию посмотрите в синтаксис-помошнике
    4. Если больше 1 или 0, то вывели ошибку
    5. Если 1, то все нормально работаем дальше
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Я бы сделал вообще иначе. Запретить формирование номера пользователю. Формировать номер самому, а номер цеха вводить как реквизит формы.
    Ну а проверка... Как то так
    Код:
    Номер="345/43"
    Поз=Найти(Номер,"/");
    Если Поз=0 Тогда
    Предупреждение("Нет разделителя!")
    возврат;
    КонецЕсли;
    
    Сообщить("Указан номер цеха:"+Сред(Номер,Поз+1));
    
  4. TopicStarter Overlay
    veuron
    Offline

    veuron

    Регистрация:
    20 май 2013
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Код:
    Процедура ВводНового(ВведенКопированием)
    НомерДок = "1234/4";
    глЗаполнитьШапку(Контекст);
    КонецПроцедуры
    Процедура ПриИзмененииНомерДок() 
    Если Найти(НомерДок, "/") < 1 Тогда Предупреждение("В номере МК не указан номер цеха через дробь!!!"); НомерДок = ""; КонецЕсли;
    Док = СоздатьОбъект("Документ.МК"); 
    Док.ВыбратьДокументы(НачГода(ДатаДок), КонГода(ДатаДок));
    Пока Док.ПолучитьДокумент() > 0 Цикл
    Если Док.ТекущийДокумент() <> ТекущийДокумент() Тогда
    Если СокрЛП(СтрЗаменить(Док.НомерДок, "д", "")) =  СокрЛП(СтрЗаменить(НомерДок, "д", "")) Тогда  Предупреждение("МК с таким номером уже существует!"); НомерДок = ""; КонецЕсли; 
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры







    не нашел такой функции!
  5. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    на счет функции. Просто с 7 не работаю, но позицию "/" вы получите функцией Поз (насчколько я поняла она возвращает именно номер позиции), ну а длина строки в любом языке практически есть, ну так и вычтите из длины строки номер позиции - получите количество оставшихся символов
  6. TopicStarter Overlay
    veuron
    Offline

    veuron

    Регистрация:
    20 май 2013
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Спасибо,смысл понял! Попробую))
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    СтрДлина

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