8.х Вывод цифер на этикетку

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

  1. TopicStarter Overlay
    islam786
    Offline

    islam786 Опытный в 1С

    Регистрация:
    18 дек 2011
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Добрый. Недавно создал уникальный номер номенклатуры. Но проблема в том что номер состоит из цифр и букв, а мне нужно, чтобы на этикетку выводились только цифры. Как это сделать? Подскажите пожалуйста. Работаю на 1c8.2 УТ 10.3
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Если у вас фиксированный код, например - 345АА, 342АА, 123АА, то можно сделать так:
    Код:
    ЧислКод = Лев(ВашКод, 3);
    Т.о. вы отсечете последние два символа, т.е. буквы.
    Если же вразноброс, и из кода нужно удалить только буквы, то можно воспользоваться функцией Символ().
  3. TopicStarter Overlay
    islam786
    Offline

    islam786 Опытный в 1С

    Регистрация:
    18 дек 2011
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Спасибо за ответ. Коды будут нефиксированными, тоесть количество цифр и букв будет разным. А как пользоватся функцией символ? Вы уж извините, я в этом новичок
  4. Dmitriy_76
    Offline

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

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    alexburn

    и чем ему функция Символ() поможет ?

    тогда уж КодСимвола().... намного приятнее
  5. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Да как вам сказать:), может тогда к спецам обратитесь:)))), к безработным:)
    Описание функции Символ() можно посмотреть в синтаксис-помощника конфигурации, но придется алгоритм писать:)))))
    Вот есть код, сразу скажу что не мой, его можно подредактировать для вашего варианта:
    Код:
    // Функция проверяет наличие в строке только цифр
    //
    // Параметры
    //  СтрокаПроверки - Строка для проверки только цифр
    //
    // Возвращаемое значение:
    //   Булево
    //
    Функция ЕстьНеЦифры(Знач СтрокаПроверки) Экспорт
    
    СписокКодовЧисел = Новый СписокЗначений;
    Для а = 48 По 57 Цикл
    СписокКодовЧисел.Добавить(а);
    КонецЦикла;
    
    СтрокаПроверки = СокрЛП(СтрокаПроверки);
    
    Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда
    
    Возврат Истина;
    
    Иначе
    
    Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
    Если СписокКодовЧисел.НайтиПоЗначению(КодСимвола(Сред(СтрокаПроверки, а, 1))) = Неопределено Тогда
    Возврат Истина;
    КонецЕсли;
    КонецЦикла;  
    КонецЕсли; 
    Возврат Ложь;
    КонецФункции
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Думаю не совсем то... В первом посте же сказано
    Думаю что так
    http://www.1c-pro.ru/topic43290.html/page__view__findpost__p__221915
  7. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Ну я предлагал переделать существующую функцию, которая будет записывать в массив символы, если он является строковым:)
  8. vartanet
    Offline

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

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    вот на коленке наваял:


    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Для Сч=1 По СтрДлина(ТекущаяСтрока) Цикл
    
    ТекущийСимвол = Сред(ТекущаяСтрока,Сч,1);
    
    Если ТекущийСимвол="1"
    ИЛИ ТекущийСимвол="2"
    ИЛИ ТекущийСимвол="3"
    ИЛИ ТекущийСимвол="4"
    ИЛИ ТекущийСимвол="5"
    ИЛИ ТекущийСимвол="6"
    ИЛИ ТекущийСимвол="7"
    ИЛИ ТекущийСимвол="8"
    ИЛИ ТекущийСимвол="9"
    ИЛИ ТекущийСимвол="0"
    Тогда
    сообщить(ТекущийСимвол);
    КонецЕсли;
    
    КонецЦикла;
    
    КонецПроцедуры
  9. TopicStarter Overlay
    islam786
    Offline

    islam786 Опытный в 1С

    Регистрация:
    18 дек 2011
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Попробовал. На этикетку выходит только последняя цифра
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Конечно будет последняя цифра, это из кода и так видно :)))
  11. vartanet
    Offline

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

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    а мозг включить? вместо "сообщить" собирайте строку по символам. => в этой итоговой строке буду находится только цифры. эту итоговую строку выводите на этикетку.
  12. TopicStarter Overlay
    islam786
    Offline

    islam786 Опытный в 1С

    Регистрация:
    18 дек 2011
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    а как собирать строку по символам
  13. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    оффтоп: а вы вообще кодите? а то может лучше к спецам?


    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    стр = "";
    Для Сч=1 По СтрДлина(ТекущаяСтрока) Цикл
    ТекущийСимвол = Сред(ТекущаяСтрока,Сч,1);
    Если ТекущийСимвол="1"
    ИЛИ ТекущийСимвол="2"
    ИЛИ ТекущийСимвол="3"
    ИЛИ ТекущийСимвол="4"
    ИЛИ ТекущийСимвол="5"
    ИЛИ ТекущийСимвол="6"
    ИЛИ ТекущийСимвол="7"
    ИЛИ ТекущийСимвол="8"
    ИЛИ ТекущийСимвол="9"
    ИЛИ ТекущийСимвол="0"
    Тогда
    //сообщить(ТекущийСимвол);
    стр = стр + ТекущийСимвол;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
  14. TopicStarter Overlay
    islam786
    Offline

    islam786 Опытный в 1С

    Регистрация:
    18 дек 2011
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    только учусь
  15. TopicStarter Overlay
    islam786
    Offline

    islam786 Опытный в 1С

    Регистрация:
    18 дек 2011
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Все равно также только последняя цифра
  16. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а что попадает в ТекущаяСтрока? посмотрите в отладчике

    также отладчиком смотрите изменение переменной стр
  17. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    не поленилась и проверила, толкьо вместо ТекущаяСтрока взяла обычное ПолеВвода с формы. Все работает. Проверьте отладчиком
  18. TopicStarter Overlay
    islam786
    Offline

    islam786 Опытный в 1С

    Регистрация:
    18 дек 2011
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Выявил свои ошибки, все исправил и получилось. Спасибо большое всем.

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