Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 15:30

сократить знаки после точки при загрузке

Автор Chaser_07, 28 янв 2015, 14:15

0 Пользователей и 1 гость просматривают эту тему.

Chaser_07

плз помогите пожалуйста
загружаю из XML
/////////////////////
Если Чтение.Имя = "code" Тогда
            Чтение.Прочитать();
            Артикул = СокрЛп(Чтение.Значение);
            Н = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
            Если Не ЗначениеЗаполнено(Н) Тогда
               Ном = Справочники.Номенклатура.СоздатьЭлемент();
               Ном.Артикул = Артикул;
               Ном.ВидНоменклатуры = Товар;
               Ном.БазоваяЕдиницаИзмерения = Штука;
            КонецЕсли;   
         ИначеЕсли ///////////////////

поле артикул - СокрЛП()  обрезает только пустые значения
у меня читает 123456.127
как здесь обрезать до двух знаков после почки при этом без всякого округления т.е. что бы получилось 123456.12

С Уважением

Kironten

Ну например так:
Формат(Число(<ВашеЧисло>), "ЧДЦ=2")

Chaser_07

если можно вставить в код ...
у меня ошибку выдает :(

Kironten

Цитата: Chaser_07 от 28 янв 2015, 14:44
если можно вставить в код ...
у меня ошибку выдает :(

Ну, если это у вас артикул, то тогда скорее всего так:

Если Чтение.Имя = "code" Тогда
            Чтение.Прочитать();
            Артикул = СокрЛп(Чтение.Значение);
            Н = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
            Если Не ЗначениеЗаполнено(Н) Тогда
               Ном = Справочники.Номенклатура.СоздатьЭлемент();
               Ном.Артикул = Формат(Число(Артикул), "ЧДЦ=2");
               Ном.ВидНоменклатуры = Товар;
               Ном.БазоваяЕдиницаИзмерения = Штука;
            КонецЕсли;   
         ИначеЕсли ///////////////////

Chaser_07

плз помогите пожалуйста
пишет "преобразование значения к типу Число не может быть выполнено"
Добавлено: 28 янв 2015, 16:47


Цитата: Chaser_07 от 28 янв 2015, 16:42
плз помогите пожалуйста
пишет "преобразование значения к типу Число не может быть выполнено"
значение того что читает - текст 123456.123

Kironten

Цитата: Chaser_07 от 28 янв 2015, 16:42
плз помогите пожалуйста
пишет "преобразование значения к типу Число не может быть выполнено"
Добавлено: 28 янв 2015, 16:47


Цитата: Chaser_07 от 28 янв 2015, 16:42
плз помогите пожалуйста
пишет "преобразование значения к типу Число не может быть выполнено"
значение того что читает - текст 123456.123

В какой именно строке кода? В установлении артикула новой номенклатуры?

LexaK

используйте функции работы со строкой

подсказка, функция
лкПозицияТочки = Найти(Артикул,".");
вернет вам позицию точки в строке,

далее с помощью функция Лев, Сред, Длина и других (по необходимости),
обрежьте строку так, как вам надо.
если помогло нажмите: Спасибо!

Chaser_07

не понимаю пока что сделать надо
хоть тресни  :(:(:(:(:(:(
вставьте плз в мой код если не трудно
спасибо

Dethmontt

Ном.Артикул = Цел(Число(Артикул)*100)/100;
Добавлено: 29 янв 2015, 02:10


Функция ТолькоЧисла(Знач Строка)
Дробь = Ложь;
старт = ?(Лев(Строка,1)="-",2,1);
Для сч=старт По СтрДлина(Строка) Цикл
симв = Сред(Строка, сч, 1);
Если (симв >="0" и симв <="9") Тогда
Продолжить;
ИначеЕсли Не Дробь и (симв="." или симв=Символы.НПП или симв=",") Тогда
Дробь = Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции


//Используем функцию
Если ТолькоЧисла(Артикул) Тогда
   Ном.Артикул = Цел(Число(Артикул)*100)/100; //Оставляем два знака без округления
Иначе
   Ном.Артикул = Артикул;
КонецЕсли;

Добавлено: 29 янв 2015, 02:12


Цитата: Kironten от 28 янв 2015, 14:48Формат(Число(Артикул), "ЧДЦ=2")

Функция Формат() выполняет округление числа по правилу математики
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

KrivosheevEV

Если строка, тогда так:
// Левая часть строки до второго символа (включительно) после точки.
Артикул = Лев(Артикул, Найти(Артикул, ".") + 2);


А укорачивать "Артикул" необходимо до поиска номенклатуры или при создании новой? Потому как можно насоздавать дублей несметное количество. 

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск