Имя: Пароль:
1C
 
Поиск документа по номеру
0 dtopenya
 
07.05.08
17:55
1С 8.1 УТ ред. 10.3.3.3.
Есть документ ЗаказПокупателя с номером 00000000001, который записан базе MySQL.

iID1C=oRecordset.Fields("1c_id").Value;
message(iID1C); //00000000001
aaa=Документы.ЗаказПокупателя.НайтиПоНомеру(iID1C);
message("!"+aaa.Номер+"!"); //!           !

Не находится документ по номеру.
aaa=Документы.ЗаказПокупателя.НайтиПоНомеру("00000000001"); //тоже не пашет

В чем может быть проблема?
1 IronDemon
 
07.05.08
17:57
Дату не указала
2 Ferz
 
07.05.08
17:57
Документы.ЗаказПокупателя.НайтиПоНомеру("00000000001 ");
3 shuhard
 
07.05.08
17:58
(0) дык с MySQL номера завсегда "кривые" идут
4 dtopenya
 
07.05.08
18:08
(1) По идее, дату я и не должен указывать, я же хочу найти документ по номеру, не касаясь временных рамок.
(2) не пашет
(3) номера идут ровные, в базу пишу текстом.

Со справочниками все нормально работает, а с документами косяк.
5 IronDemon
 
07.05.08
18:11
(4).1 Читаем до просветления.

ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>)
НайтиПоНомеру (FindByNumber)
Синтаксис:
НайтиПоНомеру(<Номер документа>, <Дата интервала>)
Параметры:
<Номер документа> (обязательный)
Тип: Число, Строка. Номер искомого документа. Тип передаваемого значения зависит от установки в конфигураторе представления номера документа.
<Дата интервала> (необязательный)
Тип: Дата. Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
Параметр используется для документов с периодической нумерацией.
6 shuhard
 
07.05.08
18:15
(4) для поиска по номеру существуют запросы
7 dtopenya
 
07.05.08
18:16
Это читал, но дата является необязательным параметром, поэтому его не указывал.
Заказ покупателя всего один.

Поставил дату:
Документы.ЗаказПокупателя.НайтиПоНомеру(iID1C,ТекущаяДата());

Документ нашелся. Жесть.

Если параметр Дата=ТекущаяДата(), то всегда ли найдется документ по номеру?
Если нет, то как сделать, чтобы документ всегда находился по номеру?
8 shuhard
 
07.05.08
18:20
(7) исчо раз - запросом
9 НЕА123
 
07.05.08
18:28
(7).1 нет, не всегда;
(7).2 без даты.
10 dtopenya
 
07.05.08
18:30
(8) Запросом я определю, нашел, или нет, а мне надо получить объект.
(9) Без даты в (0) не находится документ.
11 shuhard
 
07.05.08
18:37
(10) Андрюха - не тупи:
   Запрос=новый Запрос;
Запрос.Текст="
|ВЫБРАТЬ
|    ЗаказПокупателя.Ссылка
|ИЗ
|    Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
|    ЗаказПокупателя.Номер = &Номер
|";
запрос.УстановитьПараметр("Номер","ТК000000031");
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Инна=Результат.Ссылка.ПолучитьОбъект();
Сообщить(Инна);
   
КонецЦикла;
12 TamerlanDE
 
07.05.08
18:39
>> но дата является необязательным параметром,

Необязательным для тех докментов, у которых идет сквозная нумерация. В данном случае в типовой УТ документ ЗаказПокупателя имеет периодичность "В пределах года". Так что дата обязательна (Цитирую (5) "Параметр используется для документов с периодической нумерацией")
13 НЕА123
 
07.05.08
18:46
(10).2 не знал.

выбрать док.ссылка из документы.заказпокупателя где док.номер = &номер

ну и потом выборка.ссылка.получитьобъект()
14 НЕА123
 
07.05.08
18:47
пишу как черепаха бегает.
15 shuhard
 
07.05.08
18:54
(14) повторение - мать учения
16 Кураж
 
07.05.08
19:07
нда...
(12) прав.
Дата ОБЯЗАТЕЛЬНЫЙ параметр для переодической нумерации, не забываем это!
17 dtopenya
 
08.05.08
10:57
(11) я делал так:
oQuery=new Query("
|SELECT
 |Номер
|FROM
 |Документ.ЗаказПокупателя
|WHERE
 |Номер=&sNumber
|");
oQuery.SetParameter("sNumber",iID1C);
if oQuery.Execute().Пустой() then
...
endif;

Про ЗаказПокупателя.Ссылка забыл, спасибо.