|
v7: Как в 7.7 правильно ВыбратьПодчиненныеДокументы через COM-объект | ☑ | ||
---|---|---|---|---|
0
LisaAlisa
28.10.16
✎
10:22
|
Добрый день!
Нужно через com-объект выбрать подчиненные документы в базе 7.7. В приведенном ниже коде документы не отбираются, хотя они есть. Скорее всего, неправильно передаю третий параметр в ВыбратьПодчиненныеДокументы(). Как передать туда ссылку на документ? ДокПоступления = ComОбъект77.CreateObject("Документ.ПоступлениеТоваров); ДокПоступления.ВыбратьДокументы(Начало,Конец); Пока ДокПоступления.ПолучитьДокумент()=1 Цикл ДокИсточник = ДокПоступления.ТекущийДокумент(); .... ДокПодч = ComОбъект77.CreateObject("Документ.ПоступлениеТоваров"); ДокПодч.ВыбратьПодчиненныеДокументы(ДокИсточник.ДокументОснование,, ДокИсточник.ДокументОснование); ..... |
|||
1
Это_mike
28.10.16
✎
10:28
|
а типы первых двух параметров - смотрели в СП?
или как всегда? |
|||
2
LisaAlisa
28.10.16
✎
10:30
|
(1) смотрела. Они могут быть датой, документом или позицией. Я предаю документ и датуу
|
|||
3
LisaAlisa
28.10.16
✎
10:31
|
упс, последняя строка должна выглядеть так
ДокПодч.ВыбратьПодчиненныеДокументы(ДокИсточник.ДокументОснование,ТекущаяДата(), ДокИсточник.ДокументОснование); |
|||
4
Это_mike
28.10.16
✎
10:31
|
(2) боюсь, что туда передается далеко не позиция, а оде-объект
|
|||
5
LisaAlisa
28.10.16
✎
10:33
|
(4) для теста передала туда дату. нов сё равн не отбираются документы
ДокПодч.ВыбратьПодчиненныеДокументы(НачалоГода(ТекущаяДата()),ТекущаяДата(), ДокИсточник.ДокументОснование); |
|||
6
Это_mike
28.10.16
✎
10:34
|
(5) убери типизацию ДокПодч
|
|||
7
LisaAlisa
28.10.16
✎
10:36
|
(6) ДокПодч = ComОбъект77.CreateObject("Документ");
Да, с типизацией была ошибка. Убрала, но ноль эффекта. |
|||
8
Это_mike
28.10.16
✎
10:38
|
(7) а если даты попробовать литералами передать?
|
|||
9
LisaAlisa
28.10.16
✎
10:45
|
(8) так? эффект тот же
ДокПодч.ВыбратьПодчиненныеДокументы('20160101','20161231', ДокИсточник.ДокументОснование); |
|||
10
LisaAlisa
28.10.16
✎
10:57
|
(8) сдался?(
|
|||
11
Serginio1
28.10.16
✎
11:04
|
Используй внешние отчеты
БД.ОткрытьФормуМодально("Отчет",ПараметрыДляОтчета,ПутьКВнешнемуОтчету); Ошибка при передаче параметров запроса по OLE Задание условия в запросе через OLE |
|||
12
LisaAlisa
28.10.16
✎
11:06
|
(11) не могу, мне нужно в существующей обработке подправить пару моментов, не меняя при этом особо код
|
|||
13
LisaAlisa
28.10.16
✎
11:07
|
а, так это способ отладки...
|
|||
14
Serginio1
28.10.16
✎
11:07
|
Ны дык используй внешний отчет для этих моментов. Никто же не заставляет тебя все переписывать
|
|||
15
Ёпрст
28.10.16
✎
11:08
|
(0)
Какие именно документы ты хочешь выбрать у ДокОснование в приходной накладной ? |
|||
16
LisaAlisa
28.10.16
✎
11:09
|
я думаю, надо сначала найти в 7.7 сам документ ДокИсточник.ДокументОснование. и его уже передавать в 3им
|
|||
17
LisaAlisa
28.10.16
✎
11:09
|
(15) конфа не типовая, самописная. все подчинённые надо выбрать
|
|||
18
Ёпрст
28.10.16
✎
11:10
|
(17) Например, что именно ?
|
|||
19
Ёпрст
28.10.16
✎
11:11
|
1. На основании какого документа у вас оформлено ПоступлениеТМЦ, раз в нём есть реквизит ДокОснование, в ДокОснование, что у вас ?
2.Какие именно виды документов вы хотите получить в подчиненных документах у этого ДокОснования ? |
|||
20
Ёпрст
28.10.16
✎
11:11
|
Ответишь на эти вопросы - будешь решать другую задачу, а не тот бред (не Пит) что в (0).
|
|||
21
Serginio1
28.10.16
✎
11:15
|
(16) А главное, что во внешнем отчете сначала отладишь все в базе без COM, а затем этот же отчет вызовешь по COM
|
|||
22
LisaAlisa
28.10.16
✎
13:46
|
(19) 1. На основании ПоступленияТоваров выписывается ПоступлениеТоваров, могут быть выписаны документы, например, Сторно.
2. Задача в том, чтобы убедиться, что основании ПоступленияТоваров нет ни одного ПоступленияТоваров, иные документы допускаются. |
|||
23
LisaAlisa
28.10.16
✎
13:51
|
не понимаю, почему не работает
ДокОсн = ComОбъект77.CreateObject("Документ.ПоступлениеТоваров"); Сообщить(ДокОсн.НайтиПоНомеру(СокрЛП(ДокИсточник.ДокументОснование.НомерДок))); возвращает 0, при этом ДокИсточник.ДокументОснование.НомерДок заполнено |
|||
24
Ёпрст
28.10.16
✎
13:52
|
(23) дату укажи во втором параметре
|
|||
25
Это_mike
28.10.16
✎
13:52
|
(23) а периодичность номера?
|
|||
26
Ёпрст
28.10.16
✎
13:54
|
(22) ересь какая. У тебя уже есть ссылка на документ в Документе. Зачем еще что-то проверять ?
|
|||
27
LisaAlisa
28.10.16
✎
13:56
|
(26) это ссылка из документа Строно. а мне нужно убедиться, что кроме сторно у оснвоания больше нет подчинённых документов
|
|||
28
Ёпрст
28.10.16
✎
13:56
|
Давай проще.
У тебя есть Поступление1 и Поступление2, в котором реквизит ДокОснование = Поступление1. Вопрос. Зачем ты делаешь ВыбратьПодчиненныеДокументы для ДокОснование=Поступление1 ? Чтоб найти помимо Поступление2 еще что-то ? |
|||
29
Ёпрст
28.10.16
✎
13:57
|
>>>
На основании ПоступленияТоваров выписывается ПоступлениеТоваров >>> Что основании ПоступленияТоваров нет ни одного ПоступленияТоваров, иные документы допускаются. Где правда ? |
|||
30
LisaAlisa
28.10.16
✎
13:59
|
(24) спасибо!!!!!! у меня всё заработало как надо!
|
|||
31
LisaAlisa
28.10.16
✎
14:00
|
(29) >>>
На основании ПоступленияТоваров выписывается ПоступлениеТоваров ДокИсточник.ДокументОснование.НомерДок имееется в виду, что может быть выписано ПоступлениеТоваров, а так же другие документы. Но это уже не важно. Нужно было сначала найти сам документ основание в 7.7, а потом уже искат ему подчинённые. |
|||
32
Ёпрст
28.10.16
✎
14:03
|
(31) вот только по номеру его искать не надо, у тебя и так есть ссылка на него в реквизите.
|
|||
33
linoblack
28.10.16
✎
17:04
|
вот эта быстро работает
Функция глВыбратьПодчиненныеДокументы(ДатаНач,ДатаКон,Док,ТипДок="",Проведен="") Экспорт Сервис1С = СоздатьОбъект("MetaDataWork"); Запрос1С = СоздатьОбъект("ODBCRecordSet"); СкульЗапрос=" |SELECT | TabJ.IDDOC, | TabJ.IDDOCDEF |FROM | _1SCRDOC As TabRod(NOLOCK) |INNER JOIN | _1SJOURN As TabJ(NOLOCK) ON (TabRod.CHILDID = TabJ.IDDOC) |WHERE | TabRod.MDID = 0 -- только документы, без граф отбора | AND TabRod.PARENTVAL = '"+Сервис1С.ЗначениеВСамуюДлиннуюСтрокуБД(Док.ТекущийДокумент())+"' |"; Если ПустоеЗначение(ДатаНач)=0 Тогда СкульЗапрос=СкульЗапрос+" |and DATE_TIME_IDDOC>='"+Сервис1С.ПолучитьСтрИзДаты(ДатаНач)+"' |"; КонецЕсли; Если ПустоеЗначение(ДатаКон)=0 Тогда СкульЗапрос=СкульЗапрос+" |and DATE_TIME_IDDOC<'"+Сервис1С.ПолучитьСтрИзДаты(ДатаКон+1)+"' |"; КонецЕсли; Если ТипДок<>"" Тогда СкульЗапрос=СкульЗапрос+" |and IDDOCDEF='"+Сервис1С.ИДДокумента(ТипДок)+"' |"; КонецЕсли; Если Проведен=1 Тогда СкульЗапрос=СкульЗапрос+" |and CLOSED=1 |"; КонецЕсли; СкульЗапрос=СкульЗапрос+" |ORDER BY |TabRod.CHILD_DATE_TIME_IDDOC |"; ТЗЗапрос =СоздатьОбъект("ТаблицаЗначений"); ТЗ =СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Док"); Запрос1С.Подготовить(СкульЗапрос); Если Запрос1С.Открыть()=1 Тогда Запрос1С.ПолучитьРезультатыВ_ТЗ(ТЗЗапрос,1); ТЗЗапрос.ВыбратьСтроки(); Пока ТЗЗапрос.ПолучитьСтроку() = 1 Цикл ТЗ.НоваяСтрока(); ТЗ.Док=Сервис1С.ЗначениеИзСтрокиБД(12,ТЗЗапрос.IDDOCDEF,ТЗЗапрос.IDDOC); КонецЦикла; Запрос1С.Закрыть(); Возврат ТЗ; Иначе Возврат 0; КонецЕсли; КонецФункции |
|||
34
Ёпрст
28.10.16
✎
17:12
|
(33)
у автора: а) оле запрос к сторонней базе б) не факт что в скуле |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |