Имя: Пароль:
1C
1С v8
КД. Перенос документа по реквизиту
, ,
0 Odavid
 
29.03.12
01:00
Надо перенести ПлатежноеПоручениеИсходящее - только с операцией "ПеречислениеЗП".
Рисую в ПКО "Перед загрузкой":

Если Источник.ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПеречислениеЗП Тогда
     Отказ = Ложь;
Иначе
   Отказ = Истина;
КонецЕсли;

- переносит все равно все платежки (по всем операциям).
В ПВД просто стоит выгружать ППИ.
1 Aleksey
 
29.03.12
01:01
Откуда в "Перед загрузкой" Источник??
2 дущ
 
29.03.12
01:03
(0) Вот этот код что ты привел (только Источник замени на Объект) вставь в Перед выгрузкой ПВД.
3 Aleksey
 
29.03.12
01:06
(2) Не путай, он и без тебя прекрасно сам запутается.

Источник при выгрузки
Объект при загрузки
4 Odavid
 
29.03.12
01:06
(1) а разве ПередЗагрузкой - это не перед загрузкой в приемник?
(2) понял
5 Aleksey
 
29.03.12
01:07
(4) Да, но откуда при загрузки источник?
6 Odavid
 
29.03.12
01:08
(5) из справки взял:
Перед загрузкой
Условия возникновения события
Только для платформы V8.
Событие выполняется перед загрузкой объекта. Возможен отказ от загрузки, например, в случае невыполнения каких-либо условий. Загружаемый в БД объект еще не инициализирован.

Параметры:
Источник - Строка. Представление объекта источника. Пустая строка, если представление объекта источника не выгружалось.
7 Aleksey
 
29.03.12
01:09
(6)  Учу читать, Дорого
8 Aleksey
 
29.03.12
01:10
Источник - СТРОКА.(!) Представление (!!) объекта источника

Откуда у строки вдруг появится вид операции
9 Aleksey
 
29.03.12
01:11
Перед выгрузкой
Условия возникновения события
Событие выполняется перед выгрузкой каждого объекта в файл обмена, не зависимо от того как выгружается объект по правилу выгрузки данных либо потому что на него есть ссылки. Событие вызывается, когда узел объекта приемника еще не создан и недоступен. Возможен отказ от выгрузки, например, в случае невыполнения каких-либо условий.

Параметры:
Параметры - Структура, в которой хранятся переменные доступные во всех обработчиках

Источник - Произвольный - выгружаемый объект источник (ссылка или произвольные данные)

Отказ - Булево - Если Истина, то объект не выгружается

Пример:
Отказ = Источник.ЭтоГруппа();

Если (ПустаяСтрока(Источник.Адрес) = 1) И  
(ПустаяСтрока(Источник.АдресПочт) = 1) И
(ПустаяСтрока(Источник.Телефоны) = 1) И
(ПустаяСтрока(Источник.eMail) = 1) Тогда
Отказ = 1;
КонецЕсли;
10 Odavid
 
29.03.12
01:11
(3) Перед выгрузкой тоже нет объекта.

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

Параметры:
Источник - Произвольный - выгружаемый объект источник (ссылка или произвольные данные)

Так что на самом деле и как делать?
11 Aleksey
 
29.03.12
01:12
(10) И это противоречит тому что написано в (3)???
12 Odavid
 
29.03.12
01:12
(8) да, недоглядел - увидел Источник, и посчитал его за ссылку.. :)
13 Odavid
 
29.03.12
01:13
(11) не (3), а (2) противоречит ))
14 Aleksey
 
29.03.12
01:13
В ПКО (!) Перед выгрузкой

Если Источник.ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПеречислениеЗП Тогда
   Отказ = Ложь;
Иначе
   Отказ = Истина;
КонецЕсли;
15 Odavid
 
29.03.12
01:14
Т.е. "ПередВыгрузкой" ставлю:

Если Источник.ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПеречислениеЗП Тогда
     Отказ = Ложь;
Иначе
   Отказ = Истина;
КонецЕсли;

- и все, что не ПеречислениеЗП, не выгружается? Или опять не так?
16 Odavid
 
29.03.12
01:15
(14) понял, спасибо ))
17 Odavid
 
29.03.12
01:33
а какая разница между ПередВыгрузкой в ПКО и ПередВыгрузкой в ПВД?
18 Aleksey
 
29.03.12
01:37
(17) Огромная
19 Aleksey
 
29.03.12
01:39
В ПВД - идет выборка объектов, соответственно там ПередВыгрузкой ты можешь сформировать свой список объектов (Например список документов). Т.е. например сделать запрос к документам по условию и выгружать документы попавшие в запрос

А ПКО - это конвертация конкретного объекта который был выбран в ПВД
20 Odavid
 
29.03.12
01:39
(18) так вроде одно и тоже - в ПКО перед выгрузкой в файл, в ПВД - тоже перед выгрузкой.
И еще - по отбору из справочника можно задать вопрос? или новую тему создать?
21 Odavid
 
29.03.12
01:41
(19) т.е. в ПВД - обработка ВСЕХ объектов данного вида, а в ПКО - только правило конвертации отдельного объекта.
Понятно.
22 Aleksey
 
29.03.12
01:43
(21) почти, за исключением того что в принципе ничего не мешает выгружать все документы в одном ПВД, ибо произвольный алгоритм и ВыгрузитьПоПравилу творят чудеса
23 Aleksey
 
29.03.12
01:44
Т.е. в ПВД описываем ЧТО будем выгружать, а в ПКО - КАК, т.е. правила конвертации объекта источник в объект приемник
24 Aleksey
 
29.03.12
01:49
Т.е. сначало отрабатывает ПВД передВыгрузкой, где ты можешь указать по какому правилу обрабатывать, в принципе можно и тут указать условие, как сказал (2)
Т.е. в ПВД перед выгрузкой
Если Объект.ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПеречислениеЗП Тогда
   Отказ = Ложь;
Иначе
   Отказ = Истина;
КонецЕсли;

Затем отрабатывает правило из ПКО
только тут уже объект - это источник
ПКО Перед выгрузкой
Если Источник.ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПеречислениеЗП Тогда
   Отказ = Ложь;
Иначе
   Отказ = Истина;
КонецЕсли;
25 Odavid
 
29.03.12
01:50
(22) вот у меня со справочниками не получилось.

СПРАВОЧНИК "ФИЗЛИЦА"
ФИО ФИЗЛИЦ
в "После загрузки в файл":

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаСреза", КонецДня('20110320'));
Запрос.УстановитьПараметр("Объект", Источник);
   //Выгрузка ФИО
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ФИОФизЛицСрезПоследних.Период,
   |    ФИОФизЛицСрезПоследних.ФизЛицо,
   |    ФИОФизЛицСрезПоследних.Фамилия,
   |    ФИОФизЛицСрезПоследних.Имя,
   |    ФИОФизЛицСрезПоследних.Отчество
   |ИЗ
   |    РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаСреза, ФизЛицо = &Объект) КАК ФИОФизЛицСрезПоследних";
   
Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Сообщить(Выборка.Количество());
Пока Выборка.Следующий() Цикл
   ВыгрузитьПоПравилу(Выборка, , , , "ФИОФизЛиц");
КонецЦикла;

- работает.

тут же пишу выгрузку паспортных данных, чтоб все вместе сразу:

Запрос = Новый Запрос;
Запрос.Текст = "
   |ВЫБРАТЬ
   |    ПаспортныеДанныеФизЛицСрезПоследних.Период,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо КАК ФизЛицо,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения,
   |    ПаспортныеДанныеФизЛицСрезПоследних.ДатаРегистрацииПоМестуЖительства
   |ИЗ
   |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(&ДатаСреза, ФизЛицо = &Объект) КАК ПаспортныеДанныеФизЛицСрезПоследних";
   
   Запрос.УстановитьПараметр("ДатаСреза", КонецДня('20110320'));     //Дата
Запрос.УстановитьПараметр("Объект", Источник);     //Контактные лица, Физические лица
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Сообщить("Количество строк контактной информации """ + Объект.Наименование + """: "
   + Выборка.Количество());
Пока Выборка.Следующий() Цикл
   ВыгрузитьПоПравилу(Выборка, , , , "ПаспортныеДанныеФизЛиц");
КонецЦикла;

- не работает..
26 Aleksey
 
29.03.12
01:55
А файл сам смотрел? Оно вообще выгружается?
27 Odavid
 
29.03.12
02:13
(26) конечно выгружается.
Только справочники - физлица по запросу, а паспортные - только принудительно если на них сделать ПВД.
А хотел выгрузить по Владельцу сразу, вместе с физлицом.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.