Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Как убрать пробелы...


Автор: bucdapus 25.3.2009, 16:54
Вообщем ситуация такая когда присваеваю номер документу то 1с добавляет к номеру лишние пробелы, следовательно потом когда я ищу эту накладную по этому номеру не могу найти как мне можно помочь, чтобы не было пробелов.

на примере:
Сообщить("Номер документа:" + ВыборкаПриходов.Номер+"/");
выводит:
Номер документа:349        / 

а должно быть:
Номер документа:349/

Заранее благодарю!!!

Автор: geka6pucT 25.3.2009, 16:57
СокрЛП(ВыборкаПриходов.Номер)

Автор: bucdapus 25.3.2009, 17:07
это я знаю как мне написать поиск в самом справочнике???номенклатуры по номеру??

Автор: bucdapus 26.3.2009, 11:15
ну можно и другой вариант а как тогда добавить пробелы к номеру но чтобы число символов всегда было не больше 11

ну типа был номер 1 а получисля (1___________) где вместо _  пробел

Автор: geka6pucT 26.3.2009, 11:39
Может Спр.НайтиПоКоду("002") ?

Автор: AkelaSQL 26.3.2009, 12:09
Цитата

Спр.НайтиПоКоду("002")


Данный метод находит элемент по коду, причём концевые пробелы он отбрасывает сам.
Если тип кода у Вас текстовый, то применяйте номерацию элементов справочника по методике 1С, т.е. если длина кода 8 символов, то код имеет вид: 00000011. При автонумерации следующий код у Вас будет: 00000012

Ещё возможно добавление к коду префикса при работе с распределёнными базами, дабы исключить коллизии. В этом случае код будет иметь вид: А-000011

При создании элементов программно, используйте для формирования кода справочника метод: УстановитьНовыйКод(Префикс)

Автор: bucdapus 27.3.2009, 08:58
почему не работаетвот такой код:

ПриходСсылка = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(ДобавлениеПробелов(БазаДБФ.Direct));
        Если Не ЗначениеЗаполнено(ПриходСсылка) тогда
                Если БазаДБФ.Line=1 тогда
                   ПриходОбъект=ДокумПриход.СоздатьДокумент();



  где:


    Функция ДобавлениеПробелов(ПолучаемПеременную)

    Пока СтрДлина(ПолучаемПеременную)<> 11 Цикл
     ПолучаемПеременную = ПолучаемПеременную +" ";
    КонецЦикла;
    Сообщить("КОД ПОИСКА"+"+"+ПолучаемПеременную+"+");
    Возврат(ПолучаемПеременную);
    КонецФункции

Автор: AkelaSQL 27.3.2009, 10:46
НайтиПоНомеру(<Номер документа>, <Дата интервала>) 
Параметры:
<Номер документа> (обязательный)
Тип: Число, Строка. Номер искомого документа. Тип передаваемого значения зависит от установки в конфигураторе представления номера документа. 

1. Обрати внимание на правильную типизацию передаваемого номера, так-же попробуй задать второй параметр...

2. Зачем такой огород городить? Не нужно приписывать в хвост пробелы!!! Метод НайтиПоНомеру(<Номер документа>, <Дата интервала>)  сам их отбрасывает. Пиши так и будет тебе счастье:

Код

ПриходСсылка = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(СокрЛП(БазаДБФ.Direct));
        Если Не ЗначениеЗаполнено(ПриходСсылка) тогда
                Если БазаДБФ.Line=1 тогда
                   ПриходОбъект=ДокумПриход.СоздатьДокумент();

Автор: bucdapus 27.3.2009, 10:55
так вот я до этого так и писал
когда я загружаю и документы создаются то номер документа из (***) превращается в (***________) и когда я пробую перезагрузить документы то не могу найти по номеру уже загруженную накладную...

Добавлено через 5 минут и 47 секунд
а в конфигураторе стоит строковое выражение номера, а менять мне нельзя тип значения.

Автор: AkelaSQL 27.3.2009, 11:06
1. Не может такого быть!
2. Я рекомендую не записывать Ваш номер в номер накладной 1С. Пусть номер в 1С система генерирует сама (уж очень много на него завязано ...). А вот Ваш номер пишите в поле "НомерВходящегоДокумента", это и будет ключем синхронизации, только 2 но...

- в типовой конфе данное поле не индексировано, для ускорения поиска это нужно подправить...
- для поиска документа лучше (быстрее) использовать запрос.

Автор: bucdapus 27.3.2009, 11:18
тогда как мне написать строку 
ПриходОбъект.Номер = Формат(Строка(БазаДБФ.Number),"ЧГ=0");
где вместо Формат(Строка(БазаДБФ.Number),"ЧГ=0");
шла автоматическая 1с вская нумерация призагрузке документов???

Автор: AkelaSQL 27.3.2009, 11:37
УстановитьНовыйНомер (SetNewNumber)
Синтаксис:
УстановитьНовыйНомер(<Префикс номера>) 
Параметры:
<Префикс номера> (необязательный)
Тип: Строка. Префикс устанавливаемого номера.
Значение по умолчанию: Пустая строка 
Описание:
Устанавливает новый номер документа для заданного префикса номера. 
Примечание:
Для документов с нумерацией в пределах периода, номер устанавливается в пределах периода, соответствующего установленной дате документа. Если дата - пустая, процедура установит номер в пределах периода соответствующего пустой дате. 
Пример:
РасходнаяНакладная.УстановитьНовыйНомер(ПрефиксИБ);
См. также:
ДокументОбъект, событие ПриУстановкеНовогоНомера


Код

ПриходОбъект.УстановитьНовыйНомер(ПриходОбъект.Организация.Префикс);




Автор: bucdapus 27.3.2009, 16:53
354 реальный номер*  Дата 27.03.2009 16:33:39

пытаюсь написать функцию которая бы выделяла из этой строки 
число 354 но ничего не получается....
смысл вообщем втом что перебираю символы пока не пробел тогда вылет из цикла
может у кого есть идеи...

Автор: AkelaSQL 27.3.2009, 17:01
Зачем ты убираешь пробелы? В цикле! Жесть!!!

НомерЦифрой = Число(СокрЛП(НомерСтрокой));

 smile 

Автор: bucdapus 30.3.2009, 08:41
да я не убираю пробелы мне всего нужно из коментария как то получать первые цифры и сравнивать их с номерами документов:

вот коментарий выглядит так:  

354 реальный номер*  Дата 27.03.2009 16:33:39

Автор: AkelaSQL 30.3.2009, 09:47
Код

Функция ВыдратьНомер(Комментарий) Экспорт
    Прем ПервыйПробел, НайденныйНомер;
    //Комментарий = "354 реальный номер*  Дата 27.03.2009 16:33:39";

    Если ПервыйПробел = Найти(Комментарий, " ") <> 0 Тогда
        НайденныйНомер = Число(Лев(Комментарий, ПервыйПробел-1));
    Иначе
        Возврат 0;
    КонецЕсли;

    Возврат НайденныйНомер;
КонецФунккции //ВыдратьНомер(Комментарий) Экспорт

Автор: bucdapus 30.3.2009, 13:30
Спасибо!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)