|
v7: ТЗ.НайтиЗначение(ТекущийДокумент(),НомерСтроки,"Док") не находит знач. | ☑ | ||
---|---|---|---|---|
0
GalanEvgeny
28.01.13
✎
13:18
|
Смысл такой:
Необходимо получить номер печатной формы КМ7! запрос за 1 год по ККМ(касса) нумеруются документы по порядку В справочнике касса содержится ссылка на документ ОтчетККМ. + Code + Code Текст кода(//СЮДА НЕ ПОПАДАЕТ ВЫПОЛНЕНИЕ КОДА - сюда надо зайти при выполнении функции): Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса = " |SELECT //| Жур.IDDoc as [Док $Документ], //| Жур.IDDocDef as Док_вид, | Жур.IDDoc as Док, | Count(Жур.IDDoc) as НомерПоПорядку |FROM | _1SJourn as Жур |INNER JOIN _1SJourn as Жур2 ON Жур2.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND Жур2.$ОбщийРеквизит.ККМ=:ККМ AND Жур2.IDDocDef = $ВидДокумента.ОтчетККМ | AND Жур2.DATE_TIME_IDDOC<=Жур.DATE_TIME_IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND Жур.$ОбщийРеквизит.ККМ=:ККМ AND Жур.IDDocDef = $ВидДокумента.ОтчетККМ //|GROUP BY Жур.IDDoc,Жур.IDDocDef"; |GROUP BY Жур.IDDoc"; БД.УстановитьТекстовыйПараметр ("ККМ",ККМ); БД.УстановитьТекстовыйПараметр ("НачДата",НачГода(ДатаДок)); БД.УстановитьТекстовыйПараметр ("КонДата", КонГода(ДатаДок)); ТЗ = БД.ВыполнитьИнструкцию(ТекстЗапроса); НомерСтроки=""; //ТекДок=ТекущийДокумент(); //Если ТЗ.НайтиЗначение(ТекДок,НомерСтроки,"Док")=1 Тогда Если ТЗ.НайтиЗначение(ТекущийДокумент(),НомерСтроки,"Док")=1 Тогда НомерТекущегоДокумента=ТЗ.ПолучитьЗначение(НомерСтроки, "НомерПоПорядку"); //СЮДА НЕ ПОПАДАЕТ ВЫПОЛНЕНИЕ КОДА Иначе Возврат 0; КонецЕсли; З.Ы.: Получение Док как документ, не помагает | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, |
|||
1
Бешеная Нога
28.01.13
✎
13:20
|
||||
2
GalanEvgeny
28.01.13
✎
13:21
|
Перенос вопрос в секцию 1с 7. Не сразу обратил внимание в какой раздел попала просьба.
|
|||
3
dk
28.01.13
✎
13:21
|
НомерСтроки =0;
перед найтизначение |
|||
4
savaB
28.01.13
✎
13:26
|
Пользовать индекс. таблицу, индексировать по полю,НайтиСтроку()
|
|||
5
FN
28.01.13
✎
13:27
|
добавь
| Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, убери |GROUP BY Жур.IDDoc"; |
|||
6
savaB
28.01.13
✎
13:28
|
INNER JOIN _1SJourn as Жур2 .... зачем ?
|
|||
7
GalanEvgeny
28.01.13
✎
13:28
|
(5) Так и пробую впервом варианте запрос возвращает ID(строка), но этого мало.
|
|||
8
GalanEvgeny
28.01.13
✎
13:29
|
(6) список документов пронумеровать по порядку
|
|||
9
GalanEvgeny
28.01.13
✎
13:31
|
(4) не понял. Напишите, пожалуйста, подробнее.
|
|||
10
GalanEvgeny
28.01.13
✎
13:32
|
(3) Спасибо, но не помогло.
|
|||
11
Ёпрст
28.01.13
✎
13:32
|
да уж..
искать ссылку в ТЗ, которой iddoc - это где такую траву косят ? |
|||
12
Ёпрст
28.01.13
✎
13:34
|
ну и про пронумеровать по порядку используя иннер (причем его в селекте нема) это тоже п..ц
|
|||
13
Ёпрст
28.01.13
✎
13:37
|
Если че, нужно всего лишь было типизировать iddoc к $Документ
+ выкинуть group by и иннер джоин и сделать order by позиция дока усё. |
|||
14
GalanEvgeny
28.01.13
✎
13:38
|
(11) В торговле формируются печатные формы КМ-6(по одной кассе) и км7(по всем кассам). Необходимо реализовать сквозной нумератор для км-6(исходя из того, что в течении дня можно сформировать несколько отчетов с гашением).
|
|||
15
Ёпрст
28.01.13
✎
13:39
|
(14) и мне то что с этого ?
|
|||
16
Ёпрст
28.01.13
✎
13:39
|
я указал на твои ошибки в коде.
|
|||
17
savaB
28.01.13
✎
13:41
|
15 - напиши код ;-)
|
|||
18
GalanEvgeny
28.01.13
✎
13:43
|
(13) ???. Мой запрос возвращает таблицу с колонками "документ","номер по порядку" и по документу можно найти искомое число.
order by - отсортирует таблицу по "документу", а дальше? через цикл искать искомый документ с вводом нумератора? |
|||
19
Ёпрст
28.01.13
✎
13:46
|
(18) твой запрос возвращает ТЗ с iddoc - это строка из 9 символов, если че.
Если сделаешь (13) - будет ТЗ с одной колонкой, в которой будет Документ, отсортированный по позиции. ТЗ.НомерСтроки - будет твой номер по-порядку. Наслаждайся. |
|||
20
GalanEvgeny
28.01.13
✎
14:18
|
(19) Ваша правда, в запросе нет смысла получать номер по порядку.
Но ТЗ.НайтиЗначение(..) не отрабатывает, даже если в ТаблицуЗначений положить строку(8) и искать строку(8). Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса = " |SELECT | LEFT(Жур.Date_Time_IDDoc, 8) as ДатаДок |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND Жур.$ОбщийРеквизит.Отдел=:Отдел AND Жур.IDDocDef = $ВидДокумента.ОтчетККМ |GROUP BY LEFT(Жур.Date_Time_IDDoc, 8) |ORDER BY LEFT(Жур.Date_Time_IDDoc, 8)"; БД.УстановитьТекстовыйПараметр ("Отдел",ККМ.Отдел); БД.УстановитьТекстовыйПараметр ("НачДата",НачГода(ДатаДок)); БД.УстановитьТекстовыйПараметр ("КонДата", КонГода(ДатаДок)); ТЗ = БД.ВыполнитьИнструкцию(ТекстЗапроса); НомерСтроки=0; ТекДок=ТекущийДокумент(); Если ТЗ.НайтиЗначение(Формат(ТекДок.ДатаДок, "Д ГГГГММДД") ,НомерСтроки,"ДатаДок")=1 Тогда НомерТекущегоДокумента=НомерСтроки; Иначе Возврат 0; КонецЕсли; |
|||
21
Ёпрст
28.01.13
✎
14:19
|
(20) еще раз.
1.ТИПИЗИРОВАТЬ iddoc к $Документ 2.выкинуть GROUP By - он там не нужен, в 1sjourn iddoc уникален |
|||
22
Ёпрст
28.01.13
✎
14:20
|
Если не понятно, посмотри, что в ТЗ у тебя сейчас, просветлись:
ТЗ = БД.ВыполнитьИнструкцию(ТекстЗапроса); ТХ.ВыбратьСтроку(); |
|||
23
Ёпрст
28.01.13
✎
14:21
|
тем более, что у тя щас там..дата :)))))))))))))))))))))))))))
|
|||
24
GalanEvgeny
28.01.13
✎
14:29
|
(23) Это и не понятно. В запросе дата строкой="20130128"
ищу эту дату="20130128" и ничего не находится. |
|||
25
Ёпрст
28.01.13
✎
14:30
|
пилять..
какую ты дату в строке ищещь ? Нахрена тебе нужна строка ? Ты про типизацию в запросе вообще не в курсе ? |
|||
26
savaB
28.01.13
✎
14:31
|
Так писал-же:
|
|||
27
savaB
28.01.13
✎
14:32
|
Жур.IDDoc as [Док $Документ],
|
|||
28
Ёпрст
28.01.13
✎
14:32
|
||||
29
GalanEvgeny
28.01.13
✎
14:37
|
(25) CT
| LEFT(Жур.Date_Time_IDDoc, 8) - это строка из 8 символов типа ГГГГММДД и ищу строку из 8 символов Формат(ТекДок.ДатаДок, "Д ГГГГММДД"), где текДок=ТекущийДокумент(); (27) Жур.IDDoc as [Док $Документ] - один из вариантов (закомментирован) |
|||
30
Ёпрст
28.01.13
✎
14:38
|
ТекстЗапроса = "
|select | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид |from | _1SJourn as Жур (nolock) |where | Жур.Date_Time_IDDoc between :НачДата and :КонДата~ AND Жур.$ОбщийРеквизит.Отдел=:Отдел AND Жур.IDDocDef = $ВидДокумента.ОтчетККМ |ORDER BY Жур.Date_Time_IDDoc"; БД.УстановитьТекстовыйПараметр ("Отдел",ККМ.Отдел); БД.УстановитьТекстовыйПараметр ("НачДата",НачГода(ДатаДок)); БД.УстановитьТекстовыйПараметр ("КонДата", КонГода(ДатаДок)); ТЗ = БД.ВыполнитьИнструкцию(ТекстЗапроса); стр=0; //тест на вшивость, я хз откуда этот код выполняется Если ПустоеЗначение(ТекущийДокумент())=1 Тогда Возврат "пнх, Альфрэдо, нефик пихать не записанный документ в параметры!"; КонецЕсли; Если ТЗ.НайтиЗначение(ТекущийДокумент(),стр,"Док") ,НомерСтроки,"ДатаДок")=1 Тогда Возврат стр; Иначе Возврат 0; КонецЕсли; |
|||
31
Ёпрст
28.01.13
✎
14:39
|
Если ТЗ.НайтиЗначение(ТекущийДокумент(),стр,"Док") =1 Тогда
|
|||
32
savaB
28.01.13
✎
14:40
|
(30) Все-таки не выдержал...
|
|||
33
Ёпрст
28.01.13
✎
14:42
|
только для такой функции, можно сам документ передавать в текст запроса параметром и подсчитать токма для него "нумер по-порядку" + фильтр на проведенные/удаленные втыкать
|
|||
34
Ёпрст
28.01.13
✎
14:45
|
+ ежели скуль >=2005, то воткнуть over + row_number() для получения нумера по-порядочку
|
|||
35
GalanEvgeny
28.01.13
✎
14:47
|
спасибо Ёпрст'у и savaB'у. Ошибка была в использовании предопределенного слова НомерСтроки.
Решение: замена на НомерСтроки на переменную стр. |
|||
36
GalanEvgeny
28.01.13
✎
14:47
|
(35) спасибо Ёпрст'у и savaB'у. Ошибка была в использовании предопределенного слова НомерСтроки.
Решение: замена НомерСтроки на переменную стр. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |