Версия для печати темы (https://pro1c.org.ua/index.php?s=290459f141bd8720fc2b8a3ff7e7cc7b&showtopic=21248)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Не добавляет ноль в начале строке

Автор: 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" как считывает с СОМСоединения" ???

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua