7.7 Поиск документа из кода

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем alexnoviy, 24 окт 2006.

  1. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Доброго всем времени суток.
    Проблема в следующем.
    Есть документ "ПоступлениеТоваров" в журнале документов "Товары, Реализация" с определенным номером (например, 234).
    В модуле обработки пишу следующее:
    Код:
    Док = СоздатьОбъект("Документ.ПоступлениеТоваров");
    Если Док.НайтиПоНомеру("234") = 1 Тогда
    Сообщить("нашел");
    Иначе
    Сообщить("не нашел");
    КонецЕсли;
    
    
    Запускаю - пишет "не нашел"
    Если кто сталкивался, подскажите, почему не находит?
  2. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Вопрос частично решился.
    Дело в том, что в методе НайтиПоНомеру нужно было указать параметр <дата> (хотя он не является обязательным). Если дата указана, то найти документ удается. Не ясным остается следующее.
    Какое значение этого параметра нужно указать, чтобы поиск производился только по номеру, не зависимо от даты документа?
  3. Prospero
    Offline

    Prospero Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    111
    Симпатии:
    0
    Баллы:
    26
    А если Док.НайтиПоНомеру("234", 0) ?
  4. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Имеется ввиду наверное Док.НайтиПоНомеру("234", Дата(0)) ?
    Пробовал, не ищет. Вообще, если ввести какую-нибудь дату например текущего года, то, насколько успел попробовать, получается найти все документы текущего года, а не 2004 или 2005 и т.д. Может нужно какой-нибудь диапазон установить?
  5. Неглупый
    Offline

    Неглупый

    Регистрация:
    23 окт 2006
    Сообщения:
    29
    Симпатии:
    1
    Баллы:
    1
    У тебя номер текстовый? И какой длины?.... если текстовый обязательно обреж пробелы.... СокрЛП()
    Если числовой то зачем по тексту ищешь
  6. TopicStarter Overlay
    alexnoviy
    Offline

    alexnoviy

    Регистрация:
    3 окт 2006
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Номер текстовый, без пробелов, по длине подходит.
    Писал для уверенности вот так:
    НайтиПоНомеру(Строка(СокрЛП(Номер))), ничего не изменилось.
  7. Prospero
    Offline

    Prospero Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    111
    Симпатии:
    0
    Баллы:
    26
    Похоже, тема еще открыта.... :)
    Дома провел небольшие изыскания и вот что получилось:
    так как НомерДок - строка - то тут все зависит от длины номера - если длина = 5, а ищется номер 123, то реальный номер (если он был введен автоматически (автонумерация рулит! :)) будет "00123", соответственно, искать нужно не "123", а "00123". Метод поиска по коду зависит от установленного флажка "Контроль уникальности", в архиве - картинки и код в текстовике - там комментариев достаточно, поэтому повторяться тут не буду - качайте, смотрите, кому интересно...
    Скажу лишь, что при установленном флажке у меня работает только 2 способа из 3 :), а именно:
    1. через Док.ВыбратьДокументы();
    и потом цикл, пока не переберутся все.
    2. Через запрос с последующей обработкой.
    При снятом флажке работают все 3 способа:
    добавлен Док.ВыбратьПоНомеру("00123", Дата(0));
    и дальше через Пока Док.ПолучитьДокумент()>0 перебирать выборку

    Возможно, есть другие, более оптимальные способы (подозреваю, что метод поиска документа по коду из журнала документов как раз такой, неизвестный пока мне "другой оптимальный способ" и использует...). Во всяком случае, на моей слабенькой (500 МГц) машинке это визуально заметно - если там появляется результат мгновенно, то у меня заметен построчный вывод...

    В общем, что сумел на данном этапе (недавно изучаю 1С), то выложил.. Так что сильно не ругайтесь, если что :)

    Вложения:

  8. Alex Nin
    Offline

    Alex Nin Опытный в 1С

    Регистрация:
    9 окт 2006
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26

    Скорее всего стоит периодичность номеров год!! так что без указания даты хреново будет!

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