![]() |
|
v7: поиск по номеру | ☑ | ||
---|---|---|---|---|
0
vsy
03.11.11
✎
14:36
|
Люди, подскажите почему то не ищется документ по номеру. Номер правда с префиксом.
док = СоздатьОбъект("Документ."+доквид); док.ВыбратьДокументы(ДатаНачала, ДатаКонца); если док.НайтиПоНомеру(номер)=1 Тогда ОткрытьФорму(док.ТекущийДокумент()); Иначе Сообщить("Документ "+доквид+" с № "+номер+" не найден!"); КонецЕсли; причем когда не находится в сообщении выводит тот номер , который у дока. |
|||
1
ДенисЧ
03.11.11
✎
14:37
|
нумерация документов периодическая?
|
|||
2
Ёпрст
гуру
03.11.11
✎
14:37
|
(0) Заданы не все параметры метода НайтиПоНомеру
ЗЫ:ВыбратьДокументы - это вообще убери к едрени фени |
|||
3
vsy
03.11.11
✎
14:39
|
Нумерация не переодическа.
все и не нужно, а выбрать, задаю диапазон в котором искать, а то умрет ( у меня в штрих коде указан год вот в нем и ищу) |
|||
4
vsy
03.11.11
✎
14:44
|
попробовал поставить нумерацию переодической (в пределах года) все равно не ищет
|
|||
5
victuan1
03.11.11
✎
14:46
|
(3) Наивный, так не задают период поиска.
(4) Переменную номер добивал пробелами до длины номера? |
|||
6
vsy
03.11.11
✎
14:49
|
просвети,
у меня сканер возвращает столько символов сколько нужно, иногда приходится наоборот обрезать лишнее. |
|||
7
victuan1
03.11.11
✎
14:56
|
А причем здесь сканер? В сабже про него ни слова.
|
|||
8
vsy
03.11.11
✎
14:58
|
это предисловие откуда я получаю номер дока
|
|||
9
Ёпрст
гуру
03.11.11
✎
15:10
|
>>>все и не нужно, а выбрать, задаю диапазон в котором искать
Где ты его задаешь ?! |
|||
10
echo77
03.11.11
✎
15:34
|
Вообще, если верить синтаксис-помощнику, то документ по номеру ищут так:
Документ.НайтиПоНомеру(Номер, ДатаЛежащаяВДиапазонеПоиска) |
|||
11
vsy
03.11.11
✎
15:44
|
дату дока указывать не обязательно
|
|||
12
Ёпрст
гуру
03.11.11
✎
15:50
|
(11) только если нумерация "по всем данного вида"
|
|||
13
vsy
03.11.11
✎
15:53
|
спасибо учту
|
|||
14
Ёпрст
гуру
03.11.11
✎
15:54
|
(13) указывай дату и добей номер до длины, указанной в метаданных - будет искать
|
|||
15
vsy
03.11.11
✎
15:56
|
да я дату в шк не загонял, видимо придеться
|
|||
16
Ёпрст
гуру
03.11.11
✎
15:58
|
(15) там подойдёт любая дата из периодичности номера - если периодичность нумера год, воткни ТекущаяДата() и привет (или РабочаяДата())
|
|||
17
vsy
03.11.11
✎
16:02
|
попробовал все пошло, большое спасибо.
|
|||
18
FN
03.11.11
✎
16:14
|
(17) а если номер поменяют? или дату документа?
Загоняй в штрихкод ID например так: Функция СформироватьШтрихКодДокумента(Док) Экспорт спУникАйДи=СоздатьОбъект("СписокЗначений"); ЗначениеДока=Док; Попытка ЗначениеДока=Док.ТекущийДокумент(); Исключение КонецПопытки; спУникАйДи.ИзСтрокиСРазделителями(СтрЗаменить(ЗначениеВСтрокуВнутр(ЗначениеДока),"""","")); УникАйди=(СокрЛП(спУникАйДи.ПолучитьЗначение(7))); Возврат "22"+Прав("0000000000"+УникАйди,10); КонецФункции Функция ПолучитьДокументИзШтрихКода(ШтрихКод) Экспорт СтрШК=Прав(Лев(СокрЛП(ШтрихКод),12),10); Пока Лев(СтрШК,1)="0" Цикл СтрШК=Прав(СтрШК,СтрДлина(СтрШК)-1); КонецЦикла; УникАйди=(_IdToStr(СтрШК)); RS = СоздатьОбъект("ODBCRecordset"); ТекстЗапроса = " |SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид |FROM | _1SJourn Жур (nolock) |WHERE | Жур.IDDoc='"+УникАйди+"' |"; ТзДоков = RS.ВыполнитьИнструкцию(ТекстЗапроса); Если ТзДоков.КоличествоСтрок()=1 Тогда ТзДоков.ПолучитьСтрокуПоНомеру(1); Возврат ТзДоков.Док; Иначе Возврат ПолучитьПустоеЗначение("Документ"); КонецЕсли; КонецФункции |
|||
19
Ёпрст
гуру
03.11.11
✎
16:20
|
(18) эх,деревня!
Ежели и используешь 1cpp, то и ЗначениеВСтрокуВнутр нафик не нужно, пользуйся методами класса метадатаворк - ПолучитьИд, ЗначениеВСтроку, ЗначениеВСамуюДлинуюСтроку и т.д.. Это всё быстрее и красившее, чем пихать что-то в список с разделителями и объект в строку сворачивать |
|||
20
FN
03.11.11
✎
16:23
|
(19) эта функция у меня осталась с времен, когда я еще не очень активно использовал 1С++, а как говорится: работает - нетрожь!
:) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |