Здравствуйте.
Покажу кусочек из Табло отладки:

ИщемНомер = "ТИ003965"
ИщемДату = '24.09.21'

объект.НайтиПоНомеру(ИщемНомер, ИщемДату) = 0
объект.НайтиПоНомеру( "ТИ003965", '24.09.21') = 1

Почему когда в метод поставляется переменные - документ не находится, а если подставить значения переменных - то находится?
Я не понимать :(
---
Код разбирает текстовую строку типа "Оплата за товар (чайники) по сч.№ТИ003965 от 24.09.21"
(4) Год = Сред(Месяц_Год, ПозицияТочки + 1);

                ИщемДату = Дата(Число(Год), Число(Месяц), Число(День));
Год получается 21, а не 2021. Сделайте проверку на количество цифр в году и если только 2, то добавьте до полного значения года.
---
Добрый день. У вас именно так прописано в коде : ИщемНомер = "ТИ003965"
ИщемДату = '24.09.21'? Ошибок никаких не выдает при проверке? Так попробуйте ИщемДату = Дата('20210924').
---
Не совсем так, эти переменные вычисляются
Самое интересное что некоторые документы таки находятся!

Код разбирает текстовую строку типа "Оплата за товар (чайники) по сч.№ТИ003965 от 24.09.21" из платёжного поручения для вычленения документа по которому пришла оплата

Вот полный код:

```1c
    //{Поиск документа
    ИщемНомер = ";
    ИщемДату = ";

    спсМесяцыСтрокой = СоздатьОбъект("СписокЗначений");
    спсМесяцыСтрокой.ДобавитьЗначение(1, "янв");
    спсМесяцыСтрокой.ДобавитьЗначение(2, "фев");
    спсМесяцыСтрокой.ДобавитьЗначение(3, "мар");
    спсМесяцыСтрокой.ДобавитьЗначение(4, "апр");
    спсМесяцыСтрокой.ДобавитьЗначение(5, "мая");
    спсМесяцыСтрокой.ДобавитьЗначение(6, "июн");
    спсМесяцыСтрокой.ДобавитьЗначение(7, "июл");
    спсМесяцыСтрокой.ДобавитьЗначение(8, "авг");
    спсМесяцыСтрокой.ДобавитьЗначение(9, "сен");
    спсМесяцыСтрокой.ДобавитьЗначение(10, "окт");
    спсМесяцыСтрокой.ДобавитьЗначение(11, "ноя");
    спсМесяцыСтрокой.ДобавитьЗначение(12, "дек");

    ПозицияНомера = Найти(Назначение, "№");
    Позиция_от_ = Найти(Назначение, " от ");

    Если ПозицияНомера <> 0 Тогда
    ИщемНомер = СокрЛП(Сред(Назначение, ПозицияНомера + 1, Позиция_от_ - ПозицияНомера));
    КонецЕсли;

    Если Позиция_от_ <> 0 Тогда

    ИщемДату = Сред(Назначение, Позиция_от_ + 4, 16); //максимум 16 символов, если месяц строкой "сентября"
    ИщемДату = СтрЗаменить(ИщемДату, " ", "."); //заменяем возможные пробелы на "."

    ПозицияТочки = Найти(ИщемДату, ".");
    День = Лев(ИщемДату, ПозицияТочки - 1);
    Месяц_Год = Сред(ИщемДату, ПозицияТочки + 1);

    ПозицияТочки = Найти(Месяц_Год, ".");
    Месяц = Лев(Месяц_Год, ПозицияТочки - 1);
    Если Число(Месяц) = 0 Тогда //значит месяц прописью
    Месяц = спсМесяцыСтрокой.Получить(Нрег(Лев(Месяц, 3)));
    КонецЕсли;

    Год = Сред(Месяц_Год, ПозицияТочки + 1);

    ИщемДату = Дата(Число(Год), Число(Месяц), Число(День));

    КонецЕсли;

    Если Найти(Нрег(Назначение), "фактур") > 0 Тогда
    //ищем фактуру
    объект = СоздатьОбъект("Документ.СчетФактураН");
    Сообщить("Ищем " + объект.Вид() + " №" + ИщемНомер + " от " + ИщемДату);
    Если объект.НайтиПоНомеру(ИщемНомер, ИщемДату) = 1 Тогда
    Сообщить("..найден!");
    Конт.ДокументПоставки = объект.ДокументОснование;
    Договор = объект.ДокументОснование.Договор;
    Иначе
    Сообщить("..не найден!", "!");
    КонецЕсли;
    ИначеЕсли Найти(Нрег(Назначение), "накладн") > 0 Тогда
    //ищем накладную
    объект = СоздатьОбъект("Документ.РасходнаяНакладная");
    Сообщить("Ищем " + объект.Вид() + " №" + ИщемНомер + " от " + ИщемДату);
    Если объект.НайтиПоНомеру(ИщемНомер, ИщемДату) = 1 Тогда
    Сообщить("..найден!");
    Конт.ДокументПоставки = объект.ТекущийДокумент();
    Договор = объект.Договор;
    Иначе
    Сообщить("..не найден!", "!");
    КонецЕсли;
    ИначеЕсли (Найти(Нрег(Назначение), "счет") > 0) или (Найти(Нрег(Назначение), "сч.") > 0) Тогда
    //ищем счет
    объект = СоздатьОбъект("Документ.Счет");
    Сообщить("Ищем " + объект.Вид() + " №" + ИщемНомер + " от " + ИщемДату);
    Если объект.НайтиПоНомеру(ИщемНомер, ИщемДату) = 1 Тогда
    Сообщить("..найден!");
    Конт.ДокументПоставки = объект.ТекущийДокумент();
    Договор = объект.Договор;
    Иначе
    Сообщить("..не найден!", "!");
    КонецЕсли;
    КонецЕсли;
```
---
Код разбирает текстовую строку типа "Оплата за товар (чайники) по сч.№ТИ003965 от 24.09.21"
(4) Год = Сред(Месяц_Год, ПозицияТочки + 1);

                ИщемДату = Дата(Число(Год), Число(Месяц), Число(День));
Год получается 21, а не 2021. Сделайте проверку на количество цифр в году и если только 2, то добавьте до полного значения года.
---
Хм, а почему тогда если значение '24.09.21' подставить напрямую, не через переменную - то документ находится?
---
в настройка 1С указано использовать 2 знака в качестве года. В таком случае ('24.09.21') он похоже 21 воспринимает правильно. А когда указываете в конструкторе Год(21), то он будет восприниматься дословно как 21 год.
---
Да, так и получалось
---
Спасибо, вы оказались правы, переделала кусок на

```1c
    Год = Число(Сред(Месяц_Год, ПозицияТочки + 1));
    Если СтрДлина(Год) < 4 Тогда
    Год = "20" + Год;
    КонецЕсли;

    ИщемДату = Дата(Число(Год), Число(Месяц), Число(День));
```

И всё заработало!
---
Добрый день! значит что-то в переменные передается не так.
---
В табло отладки во вторую строку "объект.НайтиПоНомеру()" я не ручками набрала номер и даьу, а скопипастила значения переменных из того же табло.
:(
---
Как вариант у вас не заходит в условие Если Позиция_от_ <> 0 , где и определяется дата, соответственно при поиске значение "ИщемДату" пустое.
---
если же в это условие заходит, то посмотрите, какое значение у строки ИщемДату = Дата(Число(Год), Число(Месяц), Число(День));
---
Если в данной строке дата со времене ( если мне память не изменяет, то формат у нее должен быть такой 24.09.2021 0:00:00), а в документе дата без времени стоит, то не найдет документы.Вам нужно будет тогда вот эту часть кода закомментить

```1c
    ИщемДату = Сред(Назначение, Позиция_от_ + 4, 16); //максимум 16 символов, если месяц строкой "сентября"
    ИщемДату = СтрЗаменить(ИщемДату, " ", "."); //заменяем возможные пробелы на "."

    ПозицияТочки = Найти(ИщемДату, ".");
    День = Лев(ИщемДату, ПозицияТочки - 1);
    Месяц_Год = Сред(ИщемДату, ПозицияТочки + 1);

    ПозицияТочки = Найти(Месяц_Год, ".");
    Месяц = Лев(Месяц_Год, ПозицияТочки - 1);
    Если Число(Месяц) = 0 Тогда //значит месяц прописью
    Месяц = спсМесяцыСтрокой.Получить(Нрег(Лев(Месяц, 3)));
    КонецЕсли;
```

Так как она теряет смысл, а уже в полученном результате искать символ ":" и вычетать 3 символа

```1c
    ДатаВремя = Дата(Число(Год), Число(Месяц), Число(День));
    Символ = Найти(ДатаВремя, ":");
    ИщемДату = Лев(ДатаВремя, Символ-3) ;
```
---
Нет, в 7-ке Дата - это только дата, без времени :(
---
ИщемДату = Дата(1,1,1);
Поставьте условие, если дата осталась пустой, то поиск только по номеру
---
А не пробовали "разбирать" строку по принципу Арабской вязи - "справа - налево"? СокрЛП(ПоисковаяСтрока) и вперед. за что оплачено - последняя инфа, которая нужна.
---
не совсем поняла мысль :(, на самом же деле строка не заканчивается на дате документа, там же ещё много информации не нужной - ндс и пр.
---
Добрый день! Понял. Но если там много информации, то наверное есть какая-то маска строки - по ней и разбирать.
---
Ну вообще то говоря наверное какая то маска есть - большинство клиентов готовит платёжные документы в какой-нибудь 1С-ке, где эта строка более-менее формализована, но не у всех же 1С, так что пришлось извращаться - вон в итоге попались строки в которых перед номером документа не оказалось символа "№" - пришлось определять слово с номером документа по префиксу...