Имя: Пароль:
1C
1С v8
КД - запрос
0 Zest
 
21.09.11
14:08
Не могу понять, почему не работает простейший запрос в КД2. Уже все из него выкинула. Все равно не работает :-( А вроде все как в примере в книжке по КД (там правда кроме одного примера и нет ничего).

Сам запрос
ВЫБРАТЬ
ПлатежноеПоручениеВходящее.Ссылка
ИЗ
ДокументСсылка.ПлатежноеПоручениеВходящее как ПлатежноеПоручениеВходящее

В ПВД в "Перед обработкой"

Результат=Запросы.ЗапросПоППВ.Выполнить();
ВыборкаДанных = Результат.Выгрузить();

Объект выборки - ДокументСсылка.ПлатежноеПоручениеВходящее
Способ выборки - произвольный алгоритм


Ошибка
Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
   ПВД                    =  ПлатежноеПоручениеВходящее
   Обработчик             =  ПередОбработкойВыгрузкиДанных
   ОписаниеОшибки         =  Ошибка при вызове метода контекста (Выполнить): {(4, 2)}: Таблица не найдена "ДокументСсылка.ПлатежноеПоручениеВходящее"
<<?>>ДокументСсылка.ПлатежноеПоручениеВходящее как ПлатежноеПоручениеВходящее
   ПозицияМодуля          =  (15)
   КодСообщения           =  31

Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1627)}: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
   ПВД                    =  ПлатежноеПоручениеВходящее
   Обработчик             =  ПередОбработкойВыгрузкиДанных
   ОписаниеОшибки         =  Ошибка при вызове метода контекста (Выполнить): {(4, 2)}: Таблица не найдена "ДокументСсылка.ПлатежноеПоручениеВходящее"
<<?>>ДокументСсылка.ПлатежноеПоручениеВходящее как ПлатежноеПоручениеВходящее
   ПозицияМодуля          =  (15)
   КодСообщения           =  31

Гуру конвертации, спасайте кто может :-)
1 Naumov
 
21.09.11
14:10
По-русски ж написано:
ДокументСсылка.ПлатежноеПоручениеВходящее как ПлатежноеПоручениеВходящее
Какая такая ДокументСсылка?
2 Naumov
 
21.09.11
14:11
сделай запрос в конфигураторе и скорпируй, раз записать не получается
3 Zest
 
21.09.11
14:26
Было там и Документ.ПлатежноеПоручениеВходящее сначала. Ссылку я уже потом добавила.

Все равно ошибка.

Кто может ответить - можно ли при произвольном алгоритме:
1. Дать пользователю просмотреть отобранные объекты.
2. Дать пользователю возможность выбирать "по галочке" из отобранных - что грузить а что не надо.

Пока что вижу только вариант проставления "галочки" в базе-исходнике (добавить реквизит и т.д.) Правда, не хотелось бы курочить кучу доков... Может можно как-то без этого?
Задача - выборочно переносить документы, ни под какое правило/запрос это дело не ложится.
4 Man4kin
 
21.09.11
14:29
1. Да можно
2. Да можно
5 Синий зуб
 
21.09.11
14:30
(4) И каким интересно образом можно, расскажи?
6 Man4kin
 
21.09.11
14:31
Отобрать все документы, запихнуть в список значений
7 Naumov
 
21.09.11
14:31
ВЫБРАТЬ
ПлатежноеПоручениеВходящее.Ссылка
ИЗ
Документ.ПлатежноеПоручениеВходящее как ПлатежноеПоручениеВходящее

надо писать. но если запрос произвольный, то обрабатывай выборку самостоятелньо
8 Shurjk
 
21.09.11
14:31
(5) Использовать универсальную обработку по загрузке и выгрузк еобъектов.
9 Man4kin
 
21.09.11
14:33
только ошибся, нельзя несколько выбрать , но я думаю выход можно найти :-)
10 Синий зуб
 
21.09.11
14:33
(8) В универсальной обработке кнопка Показать отобранные неактивна при произвольном алгоритме. Поэтому и интересно, как увидеть отобранные.
11 Zest
 
21.09.11
14:35
(7) Да, так и было. Не поняла, что значит - обрабатывать выборку самостоятельно? Я выгрузила в переменную ВыборкаДанных запрос, и что-то еще надо?

(8) Да, ее и пользую. Только при произвольном "Показать результат отбора" не активен.
12 Zest
 
21.09.11
14:36
(10) Ага, мне тож интересно :-)
13 Man4kin
 
21.09.11
14:38
спДокументы = Новый СписокЗначений;
Запрос = Новый Запрос(" ВЫБРАТЬ
ПлатежноеПоручениеВходящее.Ссылка
ИЗ
Документ.ПлатежноеПоручениеВходящее как ПлатежноеПоручениеВходящее");
РезультатЗапроса = Запрос.ВЫполнить;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.следующий() Цикл
спДокументы.Добавить(Выборка.Ссылка);
КонецЦикла;

//отмечаем документы
спДокументы.ОтметитьЭлементы("Укажите документы");
Для Каждого ЭлементаСЗ из спДокументы Цикл
   Если НЕ ЭлементСЗ.Пометка Тогда Продолжить; КонецЕсли;
   ВыгрузитьПоПравилу(ЭлементаСЗ.Значение, , , , "КакоеТоПравило");
КонецЦикла;
14 Man4kin
 
21.09.11
14:38
код не проверял, но что то такое должно быть
15 Naumov
 
21.09.11
14:40
(12) Что мешает результат запроса выгрузить в в тЗ/СписокЗанчиений с маркировочной колонкой, после показа ТЗ выгрузить отобранное.

p.s. См метод ВыгрузитьПоПравилу(...)
16 Zest
 
21.09.11
15:51
(15) Да пока не дошло до этого, но спс за идею.

У меня вроде чего-то стало выгружаться, но пока не совсем то что нужно :-) Я добавила все поля в запрос, чтобы было как в ПКО. Или может ПКО надо было переделать, не знаю. Я пока еще не въехала, как это работает.

Naumov, я настроила ПКО с поиском по дате и сумме, по идее ж должно по ПКО выгружаться? Или нужно что-то в запросе прописывать?
А отбор по дате в обработке выгрузки, получается, не работает?
17 Zest
 
21.09.11
15:57
Такое ощущение, что нужно как-то эти свои параметры (ну хотя бы дату и сумму)  прописать, через ПКС или еще как-то. Я хочу по составному ключу сравнивать (дата+сумма), ибо нумерация различна.
18 Man4kin
 
21.09.11
16:16
чем (13) не устраивает ?
19 Zest
 
21.09.11
16:26
(18) У меня почему-то переносится только 1, самый первый документ.

И ф-ю "ВыгрузитьПоПравилу()" я нашла, а что такое "ОтметитьДокументы"?

Скилов не хватает, короче. Де-то пробуксовываю.
20 Man4kin
 
21.09.11
16:29
ОтметитьДокументы - метод у списка значений
21 Man4kin
 
21.09.11
16:31
тьфу , ОтметитьЭлементы() - метод у списка значений
22 Zest
 
21.09.11
16:46
(21) Ну до этого дело не доходит, как я понимаю. Предполагаю, что это в диалоговом режиме происходит.

Вопрос в другом - По Выборка.следующий() не переходит, берется только первый документ.  

И не понимаю описание, "лучше всего использовать переменную ВыборкаДанных", это то же самое что "Выборка" или что-то предопределенное? Судя по описанию - должно работать, но чет никак...
23 Zest
 
21.09.11
16:48
Да, и показать список отобранных все так же неактивно.
24 Man4kin
 
21.09.11
16:52
этот код надо скопировать в какое нибудь ПВД, установить "произвольный алгоритм",и попробовать выгрузить
25 Zest
 
21.09.11
16:57
Так и делаю. ПВД ПлатежноеПоручениеВходящее . Событие перед обработкой. Алгоритм произвольный.

Выгружается 1 первый документ.
И усе :-(
26 GenV
 
21.09.11
17:02
(25) Если у ПКО документа стоит галка запоминать выгруженные объекты, то объекты выгрузки идентифицируется по ЗначениеВСтрокуВнутр. Для произвольных коллекций это может быть одинаковое значение. Соотв. в этом случае нужно либо заполнять в ПКО КлючВыгружаемыхДанных, либо не запоминать выгружаемые объекты.
27 Zest
 
21.09.11
17:05
(26) Не стоит.
28 GenV
 
21.09.11
17:10
(27) Твой текст давай из ПВД.
29 Zest
 
21.09.11
17:18
спДокументы = Новый СписокЗначений;

Результат=Запросы.ЗапросПоППВ.Выполнить();
Выборка = Результат.Выгрузить();
Пока Выборка.Следующий() Цикл
спДокументы.Добавить(Выборка.Ссылка);
КонецЦикла;

спДокументы.ОтметитьЭлементы("Укажите документы");
Для Каждого ЭлементСЗ из спДокументы Цикл
   Если НЕ ЭлементСЗ.Пометка Тогда Продолжить;
   КонецЕсли;
   ВыгрузитьПоПравилу(ЭлементСЗ.Значение, , , , "ПлатежноеПоручениеВходящее");
КонецЦикла;

ПРАВИЛО ВЫГРУЗКИ ДАННЫХ:  ПлатежноеПоручениеВходящее  (ПлатежноеПоручениеВходящее)

Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
   ПВД                    =  ПлатежноеПоручениеВходящее
   Обработчик             =  ПередОбработкойВыгрузкиДанных
   ОписаниеОшибки         =  Метод объекта не обнаружен (Следующий)
   ПозицияМодуля          =  (6)
   КодСообщения           =  31
30 GenV
 
21.09.11
17:20
Выборка = Результат.Выбрать();
31 Zest
 
21.09.11
17:26
Ага, ставила.

ТОлько я кажется в конце .Выбрать() добавляла.

Ща попробую.
32 Zest
 
21.09.11
17:54
Да, заработало, но возвращаясь к (16-17), не работает фильтр по дате. Его надо как-то в запрос запихнуть через параметр?

Ну и список отобранных - не активен, как и был :-(

Всем спасибо, пойду дальше доку читать. А то такая каша в голове :-(