8.х Как с помощью запроса выбрать номера документа без преффиксов?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Greck, 21 мар 2007.

  1. TopicStarter Overlay
    Greck
    Offline

    Greck Опытный в 1С

    Регистрация:
    11 дек 2006
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    26
    Есть документы, мне необходимо получить номер без преффикса, а когда делаю запрос:

    Код:
    ВЫБРАТЬ
    Номер,
    Дата,
    ДоговорКонтрагента,
    ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    
    То в результате запроса номера документов идут с преффиксами....

    Спасибо.
  2. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    Если знаешь точно префикс (вернее длину), то попробуй сделать так:

    ВЫБРАТЬ
    Номер,
    ПОДСТРОКА(Номер,<ДлинаПрефика>,<ДлинаНомера - ДлинаПрефика>) КАК НомерБезПрефикса
    Дата,
    ДоговорКонтрагента,
    ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
  3. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    ДокументОбъект.Организация.Префикс
    вот префикс
  4. TopicStarter Overlay
    Greck
    Offline

    Greck Опытный в 1С

    Регистрация:
    11 дек 2006
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    26
    Всем спасибо, решил след образом:


    Вначале запросом получаю длину номера с префиксом, потом получаю длину префикса
    и с помощью функции встроенного языка запросов ПОДСТРОКА обрезаю префикс в номере...

    Код:
    ДлинаНомера = 0;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номер
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
    НомерДок = Запрос.Выполнить().Выбрать();
    НомерДок.Следующий();
    ДлинаНомера = СтрДлина(НомерДок.Номер);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("ДлинаПФ", СтрДлина(ЭтотОбъект.Организация.Префикс)+1);
    Запрос.УстановитьПараметр("ДлинаБезПФ", ДлинаНомера - СтрДлина(ЭтотОбъект.Организация.Префикс));
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номер,
    |   ПОДСТРОКА(Номер,&ДлинаПФ,&ДлинаБезПФ) как НомерБезПФ,
    |    Дата,
    |    ДоговорКонтрагента
    ......................................................................
    
  5. TopicStarter Overlay
    Greck
    Offline

    Greck Опытный в 1С

    Регистрация:
    11 дек 2006
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    26
    Вот на самом деле еще нашел одну функцию реализованную в УТ...
    только работает она интересьненько если в моем случае номер с преффиксом
    "АЛ-00003" я преобразую в "00003", то вариант:

    Код:
    ЕщеОдинНомер = ПолучитьНомерНаПечать(ЭтотОбъект);
    
    Возвращает просто "3" :)

Поделиться этой страницей