|
Добавление лидирующих нулей в номер документа | ☑ | ||
---|---|---|---|---|
0
Олеся999
10.04.17
✎
09:19
|
Подскажите пожалуйста, как правильно добавить нули в строку перед номером ?
Использовала данную конструкцию, но почему то не добавляет (( Номер = Источник.Номер; Результат = Формат(Номер, "ЧЦ=6; ЧВН=; ЧГ=0"); |
|||
1
Amra
10.04.17
✎
09:20
|
А почему должна такая конструкция добавлять? Для этого в типовых функция есть
|
|||
2
Олеся999
10.04.17
✎
09:25
|
||||
3
Масянька
10.04.17
✎
09:28
|
(1) Комсомольцы :)
|
|||
4
1dvd
10.04.17
✎
09:29
|
Формат(0 + Номер, "ЧЦ=6; ЧВН=; ЧГ=0")
|
|||
5
Морозов Александр
10.04.17
✎
09:31
|
(4) в 8-ке не должно быть так все просто... обязательно надо через ж..у.... там через запрос например, СтрДинна(), Лев(), Прав(), Сред().... :-))
|
|||
6
Serg_1960
10.04.17
✎
09:32
|
Все свободны :) символьный номер может содержать префикс(ы)
|
|||
7
НЕА123
10.04.17
✎
09:36
|
Результат = Формат(Число(Сокрлп(Номер)), "ЧЦ=6; ЧВН=; ЧГ=0");
|
|||
8
Рэйв
10.04.17
✎
09:37
|
Сообщить(Прав("00000000000000000",ДлинаНомера-СтрДлина(Номер))+Номер)
|
|||
9
Dmitrii
гуру
10.04.17
✎
09:37
|
(0) (2) Это работает, если Номер - число.
Не знаю откуда ты взяла этот код, но в 99% случаев в 99% типовых конфигураций Номер - это строка, а не число. |
|||
10
Рэйв
10.04.17
✎
09:37
|
+(8)Если префиксы есть, то с ними отдельно колдовать надо
|
|||
11
1dvd
10.04.17
✎
09:38
|
(8) Сообщить(Прав("00000000000000000" + Номер, ДлинаНомера));
не усложняй |
|||
12
Рэйв
10.04.17
✎
09:39
|
(11)ну так тоже можно
|
|||
13
Олеся999
10.04.17
✎
09:52
|
(9) Да, дак в том то и дело что тип строка.
|
|||
14
h-sp
10.04.17
✎
09:55
|
(13) ну, а функция Формат строку не принимает. Это же известно из курса средней школы.
поэтому подсовывайте ей число. |
|||
15
Олеся999
10.04.17
✎
09:59
|
Что то типо такого ?
Номер = Источник.Номер; Сообщить(Прав("00000000000000000",ДлинаНомера-СтрДлина(Номер))+Номер) |
|||
16
1dvd
10.04.17
✎
10:02
|
- дохтур, почему меня все игнорируют?
- следующий! |
|||
17
Serg_1960
10.04.17
✎
10:04
|
(13) "в том то и дело что тип строка" - а я предупреждал :)
Формат(Число(Номер), "ЧВН=; ЧЦ=6; ЧГ=0"); |
|||
18
DrZombi
гуру
10.04.17
✎
10:04
|
(0) Правильно, 1С сама добавляет нули... :)
|
|||
19
DrZombi
гуру
10.04.17
✎
10:06
|
(17) Сейчас окажется, что в качестве номера там буковки.
Либо номер формата "9999" от строки 10 символов :) |
|||
20
DrZombi
гуру
10.04.17
✎
10:06
|
+ 100% пользователи требуют дать им руками править номера документов :)
|
|||
21
aka AMIGO
10.04.17
✎
10:15
|
(20) + при этом капризным голоском требуют, чтобы "она (1с, стало-быть) продолжала нумеровать, как положено!" :)
ЗЫ. у нас есть филиал в одном из городов, тамошний замдир использовал 1с, как блокнот для записей: насоздавал документов, часть пометил к удалению, часть не проводил: "Это я храню для памяти!". Надо ли говорить, что номера он тоже ставил свои, после чего бд сообщала, что она о нас думает.. Разъяснили, вроде внял |
|||
22
Олеся999
10.04.17
✎
10:16
|
Если так :
Номер = Источник.Номер; Результат = Сообщить(Прав("00000000000000000" + Номер, ДлинаНомера)); То : Ошибка при выгрузке данных для узла плана обмена ТипОбъекта = Документ объект: Командировки организаций Объект = Командировки организаций к3 от 07.04.2017 15:15:01 ОписаниеОшибки = Ошибка в обработчике события ПередВыгрузкой (свойства) ПКО = КомандировкиОрганизаций (Документ: Командировки организаций) ПКС = 1 (Номер --> Номер) Объект = Командировки организаций к3 от 07.04.2017 15:15:01 (Документ объект: Командировки организаций) СвойствоПриемника = Номер (Строка) Обработчик = ПередВыгрузкойСвойства ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: Обращение к процедуре как к функции (Сообщить) ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(9289) КодСообщения = 55 ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(1648) КодСообщения = 72 УзелПланаОбмена = гл Произошла ошибка при выгрузке объектов. Было выгружено: 0 Техническая информация: ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(2,13)}: Обращение к процедуре как к функции (Сообщить) |
|||
23
1dvd
10.04.17
✎
10:17
|
(22) мозги включай иногда. Сообщить зачем там?
|
|||
24
Махони402
10.04.17
✎
10:17
|
(22) Олеся, позови спеца и дай ему денег. Не мучайся.
|
|||
25
Махони402
10.04.17
✎
10:18
|
А если ты изучением занимаешься, то сначала возьми тему по базовым понятиям языка, потом запросам, и только после этого можно подходить к обменам.
|
|||
26
aka AMIGO
10.04.17
✎
10:19
|
(22) Мда.. Конфигуратор у бд запускается? В нём есть отладчик, можно вручную написать формулы из ветки, сразу увидишь, что не проходит
|
|||
27
Serg_1960
10.04.17
✎
10:26
|
(22) Я предупреждал в (6)
|
|||
28
Serg_1960
10.04.17
✎
10:29
|
От скуки развлекаясь :)
Номер = Источник.Номер; Номер = СокрЛП(Номер); Цифры = ""; Префикс = ""; Суффикс = ""; Для х = 1 По СтрДлина(Номер) Цикл Символ = Сред(Номер, х, 1); КодСимвола = КодСимвола(Символ); Если НЕ (КодСимвола >= 48 И КодСимвола <= 57) Тогда Если СтрДлина(Цифры) Тогда Суффикс = Суффикс + Символ; Иначе Префикс = Префикс + Символ; КонецЕсли; Иначе Цифры = Цифры + Символ; КонецЕсли; КонецЦикла; Результат = Префикс + Формат(Число(Цифры), "ЧВН=; ЧЦ=6; ЧГ=0") + Суффикс; |
|||
29
aka AMIGO
10.04.17
✎
10:32
|
Если СтрДлина(Цифры) Тогда
Интересное условие :) |
|||
30
Amra
10.04.17
✎
10:33
|
Извращенцы. В обработке выгрузки есть функция ДобавитьКПрефиксу . Кто мешает ТС ее использовать в правилах?
|
|||
31
Serg_1960
10.04.17
✎
10:37
|
(29)
Если 3.14 Тогда Сообщить("Фича платформы. Работает - ну и хрен с ней :)"); КонецЕсли; |
|||
32
Олеся999
10.04.17
✎
10:39
|
Номер = Источник.Номер;
Результат = Прав("00000000000000000" + Номер, ДлинаНомера); ПЛАН = ПланыОбмена.Полный.ЭтотУзел(); ПЛАНКОД = ПЛАН.Код; Значение = ПЛАНКОД +Сред(Источник.Номер,4); |
|||
33
DrZombi
гуру
10.04.17
✎
10:44
|
(32) Префикс статичный?
Я к тому, что вы проанализируйте номера документов. Может так быть, что там нет цифр, совсем. И в качестве номера луче использовать простой реквизит :) |
|||
34
Serg_1960
10.04.17
✎
10:44
|
(32) Выключи компьютер и отойди от него - сегодня не твой день.
|
|||
35
aka AMIGO
10.04.17
✎
10:47
|
(32) Второй раз советую: загляни в отладчик, увидишь, что получается Результате и в Значении
|
|||
36
Serg_1960
10.04.17
✎
10:47
|
(33) Ты тоже последуй совету (34)
В (22) - "Объект = Командировки организаций к3 от 07.04.2017 15:15:01", где "к3" - это символьный номер документа. С префиксом "к" и числовой частью "3" :) |
|||
37
Serg_1960
10.04.17
✎
10:50
|
(35) Ака, амиго, посмотри что автор в (22) написала:
Результат = Сообщить(...); |
|||
38
polosov
10.04.17
✎
10:51
|
(22) Смотри в своей конфигурации общие модули ПрефиксацияОбъектов...
|
|||
39
aka AMIGO
10.04.17
✎
10:52
|
(37) в 22 много букав..
у ТС было полтора часа (!) справиться, в т.ч. применить (28).. ... |
|||
40
aka AMIGO
10.04.17
✎
11:01
|
(39)+ а развлекалочка-то забавная.. запомнил идею :)
|
|||
41
Олеся999
10.04.17
✎
11:01
|
(32) Выгружает без ошибок
Номер = Источник.Номер; Результат = Прав("00000000000000000" + Номер, 12); Но при загрузке, нули не добавляются. |
|||
42
Serg_1960
10.04.17
✎
11:07
|
(38) Ваш совет преждевременный и бесполезный.
Преждевременный - до тех пор, пока автор не озвучила конфигурацию. Бесполезный - если у автора УПП, в котором общий модуль ПрефиксацияОбъектовСобытия содержит только одну функцию, которая очищает номер если префиксы организаций источника и приёмника не совпадают. |
|||
43
h-sp
10.04.17
✎
11:09
|
(41) вы вообще фигней какой-то занимаетесь. Там в правиле есть галка "Автоматически приводить к длине приемника". Вы ее поставьте у поля Номер, она вам всё сделает. Не надо какой-то код левый лепить.
|
|||
44
Serg_1960
10.04.17
✎
11:13
|
(43) Бинго, кэп! :)
|
|||
45
Олеся999
10.04.17
✎
11:18
|
(43) Так она добавляет тогда нули в конце.
|
|||
46
Serg_1960
10.04.17
✎
17:21
|
PS: алгоритм (28) нельзя использовать в работе (ограниченное использование). Алгоритм был сознательно "кастомизирован" для более лёгкого восприятия и неработоспособен как таковой при использовании цифр в префиксах и/или суффиксах номеров документов.
|
|||
47
Pahomich
10.04.17
✎
17:36
|
Берешь строку из заведомо большего числа нулей "000...000"+номер и задаешь как номер документа, при присвоении номера база сама лишние нули обрежет по длине номера документа.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |