Имя: Пароль:
1C
 
Формат номера документа
0 Necros
 
04.06.05
14:45
К примеру номер документа имеет такой формат '000000007' в отчете мне нужно сделать так, чтобы остался только номер '7'. Как задается формат отображения???? Thx!
1 Kostya
 
04.06.05
15:01
Формат
Форматировать переданный параметр.

Синтаксис:

Формат(<Параметр>, <Форматная_строка>)

Англоязычный синоним:

Format

Параметры:

<Параметр>
Выражение.

<Форматная_строка>
Строковое выражение.


Возвращаемое значение:

Строковое значение.

Описание:

Функция Формат форматирует переданный параметр, руководствуясь ин­формацией, содержащейся в параметре <Форматная_строка>. Возвращает сформатированную строку.

Параметр может быть сформатирован как число, строка или дата. Если тип параметра не соответствует виду форматирования, указанному в форматной строке, то будет произведено соответствующее преобразование типа.

Форматная строка состоит из символа, определяющего тип данных, для ко­торого будет производиться форматирование, и дополнительных параметров, уточняющих как должно быть сформатировано значение представленное пер­вым параметром. Результатом работы функции является строковое значение, представляющее результаты форматирования.

Символы, определяющие тип форматируемых данных:

Ч — число (Англоязычный синоним: N)

С — строка (Англоязычный синоним: S)

Д — дата (Англоязычный синоним: D)

Между символом, определяющим тип форматируемого значения и дополни­тельными уточняющими параметрами может находиться любое число пробелов.

Для числовых значений форматная строка должна иметь вид: "Чm.nDT" или "Чm", где т и п— целые числа. Целое положительное число m определяет длину поля в котором будет размещаться строковое представление числа, а целое по­ложительное число n определяет число знаков после десятичной точки. D — представляет собой любой символ (кроме пробела и цифры), которым в сфор-матированной строке целая часть будет отделяться от дробной, а T — символ (также кроме пробела и цифры), которым будут разделяться триады целой час­ти числа. Символы "D" и "Т" являются необязательными.

Если в форматной строке проставить символ "0" (ноль) перед длиной поля, то нулевые значения при выводе будут подавлятся (выводится пустая строка). Пример: "Ч015.2".

Если в форматной строке указано "(0)" перед всеми прочими специфика­циями, то все позиции в поле вывода числа, соответствующие незадействован­ным старшим разрядам будут заполнены символами "0". Например:

Формат(123.15, "Ч(0)10.2") = 0000123.15

Если в форматной строке проставить символ "-" перед длиной поля, то ну­левые значения при выводе будут отображаться прочерком. Пример: "4-17.2 ".

В форматной строке для числа можно использовать сдвиг разрядов при вы­воде. Это позволяет, например, отображать числовое значение в тысячах и т. п. В этом случае форматная строка должна заканчиваться символами ">Х" , где Х — количество сдвигаемых разрядов. Например, форматная строка: "Ч010>3" — означает вывод числа в тысячах (сдвиг на три разряда).

Строковое представление числа всегда является правоустановленным.

Кроме того, возможен вывод денежных величин и просто целых чисел про­писью. В этом случае форматная строка должна иметь вид "ЧПДС". Наличие буквы "П" (в английском варианте для аналогичной цели используется буква "S") определяет сам факт вывода числа прописью. Символ "Д" (в английском варианте — "M") обозначает вывод денежной величины и является необяза­тельным. Символ "С" (в английском варианте — "H") также необязателен и означает вывод с копейками.

Для форматирования строк используется следующая форматная строка:

"Сn", где n — положительное целое число определяющее ширину поля, в кото­ром будет размещаться строка. В случае, если ширина поля превосходит длину строки сформатированная строка будет дополнена справа пробелами, если же ширина поля меньше длины строки — строка будет усечена справа.

Для форматирования даты используется форматная строка вида "Д<ПодстрокаФормата>", где <Подстрока Формата> представляет собой строку, определяющую вид сформатированного представления даты:

DDMMYY (ДДММГГ)
дата в виде ДД.ММ.ГГ

DDMMYYYY

(ДДММГГГГ)
дата в виде ДД.ММ.ГГГГ

DDMMMMYYYY

(ДДММММГГГГ)
дата в виде ДД месяц прописью ГГГГ

(0)DDMMMMYYYY

((0)ДДММММГГГГ)
этот формат представляет собой вариант предыдущего формата с тем отличием, что число месяца всегда выводится двумя цифрами, т. е. для чисел меньших 10 спереди будет добавлен 0. Например: Формат('01.01.1999', ' 'Д(0)ДДММММГГГГ' ') = 01 Января 1999 г.

MMMMYYYY

(ММММГГГГ)
дата в виде месяц прописью ГГГГ

MMMMYY (ММММГГ)
дата в виде месяц прописью ГГ

ММММ (ММММ)
дата в виде месяц прописью

QQQQYYYY

(ККККГГГГ)
дата в виде N квартала ГГГГ

QQQQYY (ККККГГ)
дата в виде N квартала ГГ

QQQQ
дата в виде N квартала

YYYYMMDD

(ГГГГММДД)
дата в виде ГГГГММДД, то есть дата '10.11.1998' будет представлена как стро­ка "19981110"

WWWW (HHHH)
выводит наименование дня недели, соответст­вующее указанной дате. Наименования дней недели берутся из файла прописи.


Пример:

ДолгКлиента = Строка(Формат(-Долг(), "Ч12.2")) + " " + Валюта.Сокр_назв;
2 Ёжик в тумане
 
04.06.05
15:04
Вот извращенцы. А что мешает сделать Число(СокрЛП("000000007"))?
3 Rovan
 
гуру
04.06.05
17:18
(+2) Или СтрЗаменить( НомерДока, "0", "" )
4 Ёжик в тумане
 
04.06.05
18:17
(3) Да, я вижу, гений просто.
И что же будет с номером, например, 007000707 ?
5 Будет
 
04.06.05
18:19
счастливое число 777, а ничего другого и нах не нужно.
6 Дурачка 1Ц
 
04.06.05
18:26
(2)а что будет с номером Сч-007000707 ?
7 Ёжик в тумане
 
04.06.05
18:30
(6) По условию задачи префикс в номере отсутствует. Да если бы он и был, то сама такая задача была бы абсурдна.
8 Дурачка 1Ц
 
04.06.05
18:32
по условиям задачи тип значения номера строка и в любой момент пользователь может назначить префикс и по (2) также поличится куйня
9 Почему
 
04.06.05
18:33
абсурдна?
10 Факер_S
 
04.06.05
18:41
(c)(цы)
что-то типа этого

Функция НомерПачкиДокумента(Знач НомерДокумента) Экспорт

   НомерПачки = "";

   //Возьмём все цифры в правой части номера
   ДлинаНомера = СтрДлина(НомерДокумента);
   Для Н=1 по ДлинаНомера цикл
       Символ = Сред(НомерДокумента,ДлинаНомера-Н+1,1);    
       Если (Символ>="0") и (Символ<="9") тогда
           НомерПачки = Символ+НомерПачки;
       Иначе
           Прервать;
       КонецЕсли;    
   КонецЦикла;    

   Если НомерПачки <> "" тогда
       Возврат Формат(Число(НомерПачки),"ЧГ=0");
   Иначе
       Возврат "";
   КонецЕсли;

КонецФункции
11 Ёжик в тумане
 
04.06.05
18:42
(8) Неверно. В (0) - конкретный пример. Без префикса. И автор сам пишет, что "нужно сделать так, чтобы остался только номер '7'" - ни слова о префиксе.
Если же "пользователь может назначить префикс" - можно говорить о профнепригодности того программиста, который это допустил.

(9) Потому что если ведущие нули ещё имеет смысл опускать, то выкидывать нули из середины номера - это просто коверкать номер.
12 Факер_S
 
04.06.05
18:42
и есчо
// удаление ведущих нулей
   Пока Лев(Номер, 1)="0" Цикл
       Номер=Сред(Номер, 2);
   КонецЦикла;
13 Дурачка 1Це
 
04.06.05
18:47
(11) профпригодность програмиста ясна сразу - "конфигураторщик" иначе не задавал таких бы вопросов
а если давать советы то дельные, ну хотябы указать автору на то что может быть префикс
14 Ёжик в тумане
 
04.06.05
18:52
(13) Ага, но это уже совсем другой вопрос ;)
Закон Брукера: Даже маленькая практика стоит большой теории.