Имя: Пароль:
1C
1С v8
КД2 настройка условия отбора
0 Csar
 
09.08.13
09:46
Всем привет!
Подскажите, пожалуйста, как вставить условие отбора, которое должно отображаться в универс. выгрузке в XML справа от ПравилВызгрузкиДанных и УзловОбмена?
Речь идет о программной установке. Программно легко установить отбор по периоду - там два реквизита есть, а вотмне надо реквизит со спискомЗначений или что то в этом духе. В этом СЗ будут ссылки на документы, перед выгрузкой надо проверять "если выгружаемый документ находится в этом списке, то его не выгружать". Никак не могу найти где устанавливать это условие по отбору.
1 Csar
 
09.08.13
09:52
(0) У меня В правилах выгрузки стоит "Стандартная выборка", а не "произвольный алгоритм".
2 Csar
 
09.08.13
10:01
Что касается проверки, то думаю будет примерно такой код:
ПКО ПередВыгрузкой
Для Каждого ЭлементМассивыСсылок Из Параметры.МассивСсылок Цикл
    Если Источник = ЭлементМассивыСсылок Тогда
        Отказ = 1;
    КонецЕсли;
КонецЦикла;

А где объявлять Условие отбора "МассивСсылок"? Я когда проверяю эти правила, то не отображается поле ввода с этим наименованием в таблице отбора.
3 ЧашкаЧая
 
09.08.13
10:09
Имхается мне что из правил обмена без правки обработки сделать это  нереально.
4 Csar
 
09.08.13
10:10
(3) Т.е. внешние параметры обработка не умеет цеплять и использовать в качестве параметров отбора??
5 welwel
 
09.08.13
10:12
сделать можно
но "произвольный запрос" куда менее трудоемкий
6 Csar
 
09.08.13
10:14
(5) "произвольный запрос" - речь о том, что бы самому вручную написать конвертацию документов в xml?
7 welwel
 
09.08.13
10:16
(6) режим выгрузки "произвольный запрос" из (1)
8 Naumov
 
09.08.13
10:17
(6) Речь о корректировки правил конвертации, в частности в ПВД  использовать не стандартную выборку, а произвольный запрос.
9 Naumov
 
09.08.13
10:18
+А вообще, если хочешь именно добавлять отборы, то ставь ПКО и смотри какие поля у отбора в построителе отчета. Добавляй туда отборы сколь душе угодно.
10 Csar
 
09.08.13
10:23
(7) (8) "произвольный запрос". Там видимо надо формировать ВыборкаДанных. Но ВыборкаДанных надо формировать исходя из условий, который надо каким то способом передать в обработку. Передать ее можно и нужно через ПараметрыОтбора, я полагаю. Вся проблема в том, что условия отбора всегда разные и их поэтому не задать по умолчанию одними и теми же.
(9) поянси, пожалуйста.
11 Naumov
 
09.08.13
10:27
(10) Нет, в произвольном алгоритме можно поступить двумя способами:
1) создать выборку типа результат запроса и отдать ПКО (пример есть в описании к ПВД)
2) Сам обрабатываешь любую выборку и передаешь отдельные объекты в ПКО. Примеры есть в типовых правилах, да и в демонстрашке по-моему есть.

По поводу отбора что пояснять? Открой форму универсального обмена в формате XML и посмотри что за объект с отбором.
12 Csar
 
09.08.13
10:29
(11) Спасибо, щас посмотрим.
13 welwel
 
09.08.13
10:31
(10) для обработки "Универсальный обмен в формате XML" делается вызывающая ее обработка-обложка с необходимыми реквизитами и передачей нужных данных через Параметры. Последние потом используются для создания ВыборкаДанных в ПВД
14 Csar
 
09.08.13
10:31
(11) этот пример?
ДатаИзмененияОбъекта = ДатаНачала;
Сообщить("Контрагенты");

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|ТекущийЭлемент = Справочник.Партнеры.ТекущийЭлемент;
|ДатаИзменения = Справочник.Партнеры.ДатаИзменения;
|Группировка ТекущийЭлемент;
|Условие(ДатаИзменения >= ДатаИзмененияОбъекта);";

Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1) = 1 Цикл
ВыгрузитьПоПравилу(Запрос.ТекущийЭлемент, , , , "Контрагенты");
КонецЦикла;
15 welwel
 
09.08.13
10:32
+ (13)
в типовых можно глянуть примеры
16 Naumov
 
09.08.13
10:33
(14) Да, это нормальный пример произвольного алгоритма.
Любые условия можешь обработать.
17 Csar
 
09.08.13
10:37
(16) так а как мне получить условия, если они зависят от желания юзера на данный момент?
К примеру: Юзер запускает обработку, в которой указывает какой документ(-ы) хочет выгрузить. Т.о. он указывает на ссылку(-и) и эту ссылку(-и) надо передать в качестве параметра по которому и формировать Выборку.
18 Naumov
 
09.08.13
10:38
(17) А в (0) откуда программно условия возникают?
я не понимаю ничего уже. условия задаются программно или интерактивно?
19 Csar
 
09.08.13
10:40
(18) В одной обработке юзер указывает ссылки, формируется СЗ с этими ссылками в качестве значений. Далее вызывается обработка универсальной выгрузки в xml и туда надо как то передать этот СЗ в качестве отбора. Вот как организовать эту передачу не пойму никак.
20 Csar
 
09.08.13
10:41
Получается, что отбор надо программно передать из обработки в оработку.
21 welwel
 
09.08.13
10:46
(19)
через "Параметры"
доступная в контексте универсальной выгрузки переменная
22 welwel
 
09.08.13
10:47
+(21)
для 77 у нее тип СЗ, насколько помню
23 Naumov
 
09.08.13
10:51
Отбор можно настроить только после загрузки в обработке Правил .
обмена данными
(21) Загрузка правил сотред твои параметры.
24 Csar
 
09.08.13
10:52
(22) Чего то не вижу "Параметры" у "УниверсальныйОбменДаннымиXML"
PS я через 1С8.2 копаю.
Там вроде бы "Построитель.Отбор" вместо параметров используется
25 Naumov
 
09.08.13
10:54
Пример вызова можно посмотреть в обработке обмена данными между конфами.
Общая форма "ФормаСпискаНастроекОбменаДанными"
26 Naumov
 
09.08.13
10:54
(24) в форме это ТаблицаНастройкиПараметров
27 welwel
 
09.08.13
10:56
(24)
в (14) был пример с 77
вы уж определитесь
28 Csar
 
09.08.13
11:03
Блин, я совсем запутался. Я не понимаю как передать несчастный СЗ в УниверсальныйОбменДаннымиXML, так, что бы обработка поняла, что это параметры отбора, а затем как вызвать этот параметры при создании условия в формировании Выборки в произвольном алгоритме ПВД.
29 welwel
 
09.08.13
11:07
уточните что, откуда и куда выгружать:
конфигурации, версии, какие объекты
30 Csar
 
09.08.13
11:18
Обработка1 формирует СЗ (список значений) с ссылками на некоторые документы "РеализацияТоваровУслуг". Далее Обработка1 запускает обработку "УниверсальныйОбменДаннымиXML" и передает в качестве условия по отбору этот СЗ. "УниверсальныйОбменДаннымиXML" цепляет правила и принимает СЗ в качестве условия по отбору и выгружает документы реализации согласно условию (выгружать только те ссылки, что есть в СЗ).

Изначальная задача стояла примерно так: Юзер запускает обработку, и перед ним вылазит список реализаций второй базы, он выбирает реализации, который хочет загрузить из второй базы в текущую, и кликает ЗАГРУЗИТЬ. Я не знаю вебсервисов, посему организовал через выгрузку на второй базе списка реализаций в файл и загрузку этого файла в текущей базе.
31 Csar
 
09.08.13
11:24
Юзер в БП 8.2 пытается загрузить из нечто типа самописного УПП 1.3, но на УФ
32 Naumov
 
09.08.13
11:25
Ну если не хочется разбираться с передачей в обработку, то можно ПланОбмена замутить, в котором перед выгрузкой регистрировать нужные объекты, потом снимать с регистрации.
тогда обработка по указанному узлу Плана обмена сама отберет.
33 welwel
 
09.08.13
11:25
можно посмотреть, как реализована загрузка параметров при открытии УниверсальныйОбменДаннымиXML (список параметров определяется интерактивно при проектировании правил в КД)
и передать нужные параметры (список реализаций) из вызывающей обработке,
а далее в произвольном алгоритме ПВД использовать эти параметры для отбора в запросе
34 Naumov
 
09.08.13
11:26
А если это нужно не мгновенно, то можно из обработки просто регистрировать в ПланеОбмена, а выгрузку настроить автоматическую по расписанию.
35 Naumov
 
09.08.13
11:27
(33) По моему в обработке при открытии нет никаких обработок параметров.
36 Csar
 
09.08.13
11:33
(34) Юзер хочет не по расписанию, а прямо здесь и сейчас и только те реализации, которые укажет.
(32) интересная мысль. А разве можно регистрировать документы не перепроводя в плане обмена?
(33) сяду разбираться. Спасибо.
37 welwel
 
09.08.13
11:35
(35)
Согласен, что открытие формы в 8 необязательно, через методы инициирования процесса загрузки.
Есть не только загрузка параметров, но и событие ПослеЗагрузкиПараметров
38 Csar
 
09.08.13
11:36
(35) (37) там при загрузке правил возникает загрузка Отборов, только там как то мутно. Разбираюсь, сижу.
39 Csar
 
09.08.13
11:44
(32) О, кажись такой принцип действия должны сработать:?
УзелОбмена = ПланыОбмена.НекийПланОбмена.НайтиПоНаименованию("НашУзел");
Для Каждого СсылкаИзСЗ Из СЗСсылок Цикл
    ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, СсылкаИзСЗ);
КонецЦикла;

А потом узел подключить к УниверсальныйОбменДаннымиXML
40 Csar
 
09.08.13
11:46
(32) (33) Спасибо вам большое! Попробую оба варианта довести до конца!