Имя: Пароль:
1C
1С v8
выборка из запроса в конвертации
0 thomY100
 
01.12.11
10:00
Привет, подскажите пожалуйста, можно ли в конвертации данных выбрать информацию запросом из регистра и записать полученные данные в документ в другой базе, и как примерно это делать?
1 luckyluke
 
01.12.11
10:01
(0) можно сделать выборку и передать её конвертации в ПРАВИЛАХ ВЫГРУЗКИ ДАННЫХ, а конвертация уже сама его передаст и запишет в зависимости от твоих настроек.
2 thomY100
 
01.12.11
10:14
в каком месте мне описать запрос? к тому же он с параметрами, и в каком месте можно обратиться к его результату и обработать?
3 Синий зуб
 
01.12.11
10:18
В ПВД в событии Перед обработкой напиши что-то типа (это пример - перегружал номенклатуру с 10 счета)

Запрос = Новый запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, , , Счет В ИЕРАРХИИ (&Счет_10), &Номенклатура, ) КАК ХозрасчетныйОстаткиИОбороты
|
|СГРУППИРОВАТЬ ПО
|    ХозрасчетныйОстаткиИОбороты.Субконто1";
   
Запрос.УстановитьПараметр("НачДата", '20110101');
Запрос.УстановитьПараметр("КонДата", '20110331235959');
Запрос.УстановитьПараметр("Счет_10", ПланыСчетов.Хозрасчетный.Материалы);
Запрос.УстановитьПараметр("Номенклатура", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
//Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);

Состояние("Получаю запрос по остаткам номенклатуры по 10 счету ...");
ТЗ  = Запрос.Выполнить().Выгрузить();

Для каждого Стр из ТЗ Цикл
   Номенкл = Стр.Номенклатура;
   ВыгрузитьПоПравилу(Номенкл, , , , "Номенклатура");
КонецЦикла;
4 thomY100
 
01.12.11
10:21
ок, спасибо, а само правило где описывается, и как примерно его описание выглядит?
5 Синий зуб
 
01.12.11
10:22
Вот здесь - ВыгрузитьПоПравилу(Номенкл, , , , "Номенклатура") в кавычках - "Номенклатура" - правило выгрузки.
6 thomY100
 
01.12.11
10:23
а как оно примерно выглядит?
7 Синий зуб
 
01.12.11
10:23
И, туда же, Способ отбора данных в ПВД не забудь поменять на Произвольный алгоритм.
8 Синий зуб
 
01.12.11
10:25
Чуток ошибся. "Номенклатура" - не правило выгрузки, а ПКО. А как его описывать - от твоей задачи зависит.
9 luckyluke
 
01.12.11
10:26
(2) Написал же, в ПРАВИЛАХ ВЫГРУЗКИ ДАННЫХ, специально прописными буквами написал. В событии перед обработкой опиши свой запрос и коллекцию, например Выборку передай в переменную ВыборкДанных, что-то вроде:

Запрос = Новый Запрос;
Запрос.текст = "Выбрать...";

ВыборкаДанных = Запрос.ВыполнитьВыбрать();

Ну и у правила выгрузки данных поставь вид выборки произвольный алгоритм.
10 thomY100
 
01.12.11
10:31
ПВД создал, там описал запрос, поставил произвольный алгоритм, а теперь где обработать результат этого запроса, и как к нему обратиться?
11 Defender aka LINN
 
01.12.11
10:32
(10) Аносамо
12 thomY100
 
01.12.11
10:34
каким образом?
у меня просто набор записей регистра, а теперь надо на основании этих данных создать в базе приемнике документ и записать в него данные
13 luckyluke
 
01.12.11
10:42
(12) делай ПКО для этого объекта, делай ПКС, на каждый ПКС у тебя должно быть поле в коллекции(совпадать по имени), коллекцию ты передаешь в переменную ВыборкаДанных.
14 thomY100
 
01.12.11
11:44
не могу разобраться как  создать ПКО, напишу на простом примере что надо:
в источнике запросом из регистра, выбираются организация, физлицо и результат, необходимо сформировать в приемнике создается документ "регистрация разовых начислений", в котором должны заполниться реквизит шапки организция и реквизиты тч, физлицо и результат,я создал ПКД перед обработкой написал для теста код
Запрос = Новый Запрос;
Запрос.Текст =
       "ВЫБРАТЬ ПЕРВЫЕ 5
       |    ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо,
       |    ОсновныеНачисленияРаботниковОрганизаций.Организация,
       |    ОсновныеНачисленияРаботниковОрганизаций.Результат
       |ИЗ
       |    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций";


Состояние("Получаю данные из регистров ...");
ТЗ  = Запрос.Выполнить().Выгрузить();

Для каждого Стр из ТЗ Цикл
     ВыгрузитьПоПравилу(Стр, , , , "ПКОТЕСТ");
КонецЦикла;

объект выборки - РегистрРасчетаЗапись.ОсновныеНачисленияРаботниковОрганизаций
способ выборки-произвольный алгоритм

как мне задать ПКОТЕСТ для такой ситуации, подскажите, не могу разобраться.
15 Fish
 
01.12.11
11:47
Почитай это там много доступных примеров с картинками: http://www.mykod.info/primeri/
16 thomY100
 
01.12.11
11:49
читал уже, не помогло
17 thomY100
 
01.12.11
14:20
up
18 Синий зуб
 
01.12.11
14:29
Ты хочешь сделать 5 разных документов из твоего запроса или 1 с таб. частью?
19 thomY100
 
01.12.11
14:34
1 документ по каждой организации из запроса, либо в запрос передавать организацию как параметр и тогда 1 документ на одну выгрузку
20 Синий зуб
 
01.12.11
14:41
Создай ПКО с пустым источником и приемником - тип твоего документа, добавь 3 реквизита - ФизЛицо, Организация, Результат.
21 thomY100
 
01.12.11
15:16
сделал, но при попытке выгрузить данные выскакивает ошибка
Поле объекта не обнаружено (ОсновныеНачисления),я так понимаю что-то с запросом не то
22 thomY100
 
01.12.11
16:12
up
23 thomY100
 
02.12.11
09:24
up
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс