Автор: kosalex 18.12.14, 9:26
Добрый день! Есть строка СтрокаТЗ.Время = "05708", пытаюсь добавить ноль в начало строки
Переменная = Формат("0" + СтрокаТЗ.Время,"ЧВН=")
полeчаю что Переменная = "05708", куда пропадает ноль?
Пробовал и без формата, просто Переменная = "0" + СтрокаТЗ.Время, не получаю строку вида "005708"....а очень нужно
Автор: Petre 18.12.14, 9:54
Какой тип "СтрокаТЗ.Время"? С форматом - бред. "0" + "05708" должно равняться "005708", если нет ограничений по длине строки.
Автор: kosalex 18.12.14, 11:26
Цитата(Petre @ 18.12.14, 9:54)
Какой тип "СтрокаТЗ.Время"? С форматом - бред. "0" + "05708" должно равняться "005708", если нет ограничений по длине строки.
В отладчике написано что это тип "Строка", но простым добавлением не хочет. Сделал так:
КоличествоСимволовВСтрокеТЗ = СтрДлина(СтрокаТЗ.Дата);
НадоНулей = 6 - КоличествоСимволовВСтрокеТЗ;
ВедущиеНули = Формат(0,"ЧЦ="+НадоНулей+";ЧН=; ЧВН=; ЧГ=0");
СтрокаТЗ.Дата = ВедущиеНули + СтрокаТЗ.Дата;
Автор: logist 18.12.14, 14:16
Формат() будет работать с лидирующими нулями если тип значения число. Для строки просто добавляются нули типа "0"+ИсходнаяСтрока;
В Вашем случае должно быть достаточно:
Прав("000000"+СтрокаТЗ.Дата, 6);
Автор: kosalex 18.12.14, 16:24
Цитата(logist @ 18.12.14, 14:16)
Формат() будет работать с лидирующими нулями если тип значения число. Для строки просто добавляются нули типа "0"+ИсходнаяСтрока;
В Вашем случае должно быть достаточно:
Прав("000000"+СтрокаТЗ.Дата, 6);
Я получаю данные через СОМСоединение с базы MySQL. Перебераю все записи которые вернул запрос к базе.
Получаю данные из СОМСоединения
Пока ЧтениеСОМ.EOF() = 0 Цикл
НоваяСтрокаТЗ = ТЗ.Добавить();
НоваяСтрокаТЗ.Дата = СтрЗаменить(Строка(ЧтениеСОМ.Fields("date").Value),Символы.НПП,"");
НоваяСтрокаТЗ.Время = СтрЗаменить(Строка(ЧтениеСОМ.Fields("time").Value),Символы.НПП,"");
НоваяСтрокаТЗ.НомерНазваниеВесов = ЧтениеСОМ.Fields("addr").Value;
НоваяСтрокаТЗ.ФактическийВес = ЧтениеСОМ.Fields("WeightFact").Value;
НоваяСтрокаТЗ.ЗаданныйВес = ЧтениеСОМ.Fields("WeightZad").Value;
ЧтениеСОМ.MoveNext();
КонецЦикла;
В моей ТЗ получается НоваяСтрокаТЗ.Время - тип "Строка", правильно? - Думаю да.
После записи строки в ТЗ, значение 05708 записывается как 5708, почему?
Вот сдесь я не уследил, перед тем как написать на форум, что в ТЗ уже значение не 05708, а 5708, по этому когда добавлял ноль, "НоваяСтрокаТЗ.Время = "0" + СтрокаТЗ.Время" думал что он не добавился ))
Вопрос, почему в ТЗ записалось не "05708" как считывает с СОМСоединения, а "5708"?
Автор: logist 18.12.14, 16:50
Цитата(kosalex @ 18.12.14, 16:24)
Вопрос, почему в ТЗ записалось не "05708" как считывает с СОМСоединения, а "5708"?
Вероятно: а) колонка таблицы не типизирована и при записи в нее происходит преобразование типа (явно - число в число, строка в строку, т.к. это не переменная среды 1С, а результат работы стороннего объекта); или б) колонка типизирована как числовая.
Автор: kosalex 18.12.14, 21:16
Цитата(logist @ 18.12.14, 16:50)
Вероятно: а) колонка таблицы не типизирована и при записи в нее происходит преобразование типа (явно - число в число, строка в строку, т.к. это не переменная среды 1С, а результат работы стороннего объекта); или б) колонка типизирована как числовая.
Ответ а).
Но как же это
НоваяСтрокаТЗ.Дата = СтрЗаменить(Строка(ЧтениеСОМ.Fields("date").Value),Символы.НПП,"");
Автор: Petre 19.12.14, 10:14
Цитата(kosalex @ 18.12.14, 16:24)
Вопрос, почему в ТЗ записалось не "05708" как считывает с СОМСоединения, а "5708"?
Чему равно
Строка(ЧтениеСОМ.Fields("date").Value) ???
Что значит "
"05708" как считывает с СОМСоединения" ???