|
Конвертация данных между УПП и КА нужно выгружать только РТиУ с опред префиксом | ☑ | ||
---|---|---|---|---|
0
Kleo
15.10.14
✎
09:04
|
Здравствуйте!
Есть план обмена между УПП и КА. Так вот есть документы: 1) РТиУ с префиксом "А" и сделка (заказ покупателя) с префиксом "А" 2) РТиУ с префиксом "Б" и сделка (заказ покупателя) с префиксом "Б" 3) РТиУ с префиксом "С" и сделка (заказ покупателя) с префиксом "Б" так вот мне нужно, чтобы из УПП в КА выгружались только: ТиУ с префиксом "С" и сделка (заказ покупателя) с префиксом "Б" Пишу в ПКО для Реализация товаров и услуг в обработчике событий "Перед выгрузкой": Если ТипЗнч(Источник.Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда СделкаНомерДок = СокрЛП(Источник.Сделка.Номер); ИсточникНомерДок = СокрЛП(Источник.Номер); ПрефиксСделка = Лев(СделкаНомерДок,1); ПрефиксИсточник = Лев(ИсточникНомерДок,1); Если ПрефиксСделка <> "Б" и ПрефиксИсточник <> "С" Тогда Отказ = Истина; КонецЕсли; КонецЕсли; при запуске обмена программа начинает выгружать все документы (перебирать), как сделать так, чтобы сразу отсекала ненужные? |
|||
1
Kleo
15.10.14
✎
09:05
|
нужно, чтобы из УПП в КА выгружались только:
РТиУ с префиксом "С", у которых сделка (заказ покупателя) с префиксом "Б" |
|||
2
Alex S D
15.10.14
✎
09:08
|
Произвольный запрос в ПВД
|
|||
3
JeyRico
15.10.14
✎
09:11
|
Условие не верно, отсекает только когда выполнены оба. А если ПрефиксСделка не "Б", дальше не смотрит и отказ остается Ложь
|
|||
4
Kleo
15.10.14
✎
09:11
|
(2) я тоже об этом подумала, но как именно написать? нужно же будет в запросе например задавать перебор всех документов за период какой-нибудь... а ведь должны выгружаться те документы, которые изменились или зарегистрировалось изменение этих объектов?
|
|||
5
Banned
15.10.14
✎
09:12
|
В подписке при записи/etc очищай регистрацию ненужных документов...
|
|||
6
Kleo
15.10.14
✎
09:12
|
(3) а если так:
Если ПрефиксСделка = "Б" и ПрефиксИсточник = "С" Тогда Иначе Отказ = Истина; КонецЕсли; |
|||
7
JeyRico
15.10.14
✎
09:14
|
(6) По крайней мере соответствует описанию задачи
|
|||
8
Alex S D
15.10.14
✎
09:16
|
(4) Так там можно и изменения из плана обмена выбрать
|
|||
9
Kleo
15.10.14
✎
09:16
|
(5) т.е. в настройках ПКО для РТиУ, где Выгрузка данных установить флаг "Не запоминать выгруженные объекты" ?
|
|||
10
JeyRico
15.10.14
✎
09:17
|
(9) Нет, этот флаг не для этого. А вообще условие должно работать
|
|||
11
Kleo
15.10.14
✎
09:17
|
(8) как? подскажите, пожалуйста. запрос сделаю по докам РТиУ и напишу, чтобы выгружать по такому-то правилу, а как написать в запросе, что вновь созданные доки или измененные?
|
|||
12
Banned
15.10.14
✎
09:19
|
(9) нет.
В конфигурации, а не в правилах выгрузки |
|||
13
Kleo
15.10.14
✎
09:20
|
(12) создать подписку на события? и? что написать? можно более подробно... но ведь другой обмен КА и УПП работает без всяких очищений
|
|||
14
JeyRico
15.10.14
✎
09:21
|
Код из (0) с условием из (6) работает? В (5) и (8) это уже оптимизация.
|
|||
15
Kleo
15.10.14
✎
09:24
|
(14) запустила. опять перебирает все. а таких документов еще ни одного в базе нет(((
|
|||
16
Kleo
15.10.14
✎
09:25
|
думаю, что через ПВД нужно,, но как задать изменения по плану обмена?
|
|||
17
Alex S D
15.10.14
✎
09:27
|
ВЫБРАТЬ
РеализацияТоваровУслугИзменения.Ссылка ИЗ Документ.РеализацияТоваровУслуг.Изменения КАК РеализацияТоваровУслугИзменения ГДЕ РеализацияТоваровУслугИзменения.Узел = &Узел |
|||
18
Kleo
15.10.14
✎
09:27
|
пишет:
Запись изменений для узла КА: Прочитано: столько-то объектов Реализация товаров и услуг.... и походу перебирает все.... какие есть...все 20000 доков... а может он один раз так прочитает,а потом будет читать только изменения? |
|||
19
Kleo
15.10.14
✎
09:28
|
(17) "Документ.РеализацияТоваровУслуг.Изменения" - это что? не совсем понимаю, что за объекты конифга такой "Изменения"???
|
|||
20
Alex S D
15.10.14
✎
09:31
|
(19) Таблица изменений.. Что непонятного то)
|
|||
21
Kleo
15.10.14
✎
09:34
|
(20) точно работает?
а еще нужно сюда включить условие: Если ПрефиксСделка = "Б" и ПрефиксИсточник = "С" Тогда |
|||
22
Alex S D
15.10.14
✎
09:38
|
ну доступ к ссылке есть. Используй ПОДСТРОКА для номера..
|
|||
23
Kleo
15.10.14
✎
09:41
|
(22) ок, спасибо. а как установить параметр запроса Узел? как его описать?
|
|||
24
Alex S D
15.10.14
✎
09:56
|
Ну на вскидку
Узел = ПланыОбмена.<ТвойПланОбмена>.НайтиПоКоду("001"); |
|||
25
toypaul
гуру
15.10.14
✎
10:10
|
отбор надо в ПВД делать, а не в ПКО
|
|||
26
Kleo
15.10.14
✎
11:04
|
(20) это точно типовое "Изменения"?
|
|||
27
Alex S D
15.10.14
✎
11:07
|
(26) да
|
|||
28
Naumov
15.10.14
✎
11:18
|
(0) Если План обмена работает с правилами регистрации, то можно управлять регистрацией, а не выгрузкой. Т.е. все проверки будут выполнятся при изменении документов, а не проверяться в момент выгрузки.
|
|||
29
Михаил Козлов
15.10.14
✎
11:20
|
Я бы запретил автоматическую регистрацию и регистрировал в подписке (ПриЗаписи) с проверкой нужных условий.
|
|||
30
Kleo
17.10.14
✎
08:09
|
пишу в ПВД для документа "Реализация товаров и услуг" (произвольный алгоритм) в обработчике событий "Перед обработкой":
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата1",Дата("20141015")); Запрос.УстановитьПараметр("Узел",ПланыОбмена.ОбменУППУПП.НайтиПоКоду("002")); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугИзменения.Ссылка, | РеализацияТоваровУслугИзменения.Ссылка.Сделка, | РеализацияТоваровУслугИзменения.Ссылка.ДокументОснование |ИЗ | Документ.РеализацияТоваровУслуг.Изменения КАК РеализацияТоваровУслугИзменения |ГДЕ | РеализацияТоваровУслугИзменения.Узел = &Узел | И РеализацияТоваровУслугИзменения.Ссылка.Дата >= &Дата1 | И ПОДСТРОКА(РеализацияТоваровУслугИзменения.Ссылка.Номер, 1, 1) = "С" | И ПОДСТРОКА(РеализацияТоваровУслугИзменения.Ссылка.Сделка.Номер, 1, 1) = "Б" | И ТИПЗНАЧЕНИЯ(РеализацияТоваровУслугИзменения.Ссылка.Сделка) = ТИП(Документ.заказПокупателя) | И РеализацияТоваровУслугИзменения.Ссылка.Сделка = РеализацияТоваровУслугИзменения.Ссылка.ДокументОснование"; РезультатЗапроса = Запрос.Выполнить(); Сообщить("Запрос"); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ВыгрузитьПоПравилу(ВыборкаДетальныеЗаписи.ссылка,,,, "РеализацияТоваровУслуг"); КонецЦикла; Далее добавляю правила в обмен и при выгрузке данных пишет ошибку: Начало выгрузки: 17.10.2014 11:06:32 Ошибка в обработчике события ПередОбработкойПравилаВыгрузки ПВД = РеализацияТоваровУслуг Обработчик = ПередОбработкойВыгрузкиДанных ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(14,70)}: Ожидается последовательность операторов ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(12310) КодСообщения = 31 Ошибка при выгрузке данных для узла плана обмена ТипОбъекта = Документ объект: Реализация товаров и услуг Объект = Реализация товаров и услуг 00000001985 от 02.05.2012 18:47:35 ОписаниеОшибки = Ошибка в обработчике события ПередОбработкойПравилаВыгрузки ПВД = РеализацияТоваровУслуг Обработчик = ПередОбработкойВыгрузкиДанных ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(14,70)}: Ожидается последовательность операторов ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(12310) КодСообщения = 31 ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(1667) КодСообщения = 72 УзелПланаОбмена = КА Окончание выгрузки: 17.10.2014 11:06:33 что не так? |
|||
31
Kleo
17.10.14
✎
08:10
|
и при чем тут документ за 2012 год, если задана дата от 15.10.2014г. такое ощущение, что запрос не выполняется и ошибка в синтакисе. но что не так не могу понять...
|
|||
32
Kleo
17.10.14
✎
08:18
|
нашла ошибку нужно было в запросе указать так:
| И ПОДСТРОКА(РеализацияТоваровУслугИзменения.Ссылка.Номер, 1, 1) = ""С"" | И ПОДСТРОКА(РеализацияТоваровУслугИзменения.Ссылка.Сделка.Номер, 1, 1) = ""Б"" двойные кавычки... но дальше опять он все доки перебирает сначала века... это так и должно быть??? или это так только один раз сделается,а потом не будет??? непонятно. в запросе указала определенные условия - создала один документ РТиУ и в итоге должен только один док выгрузиться.... а перебор-то ... т.е. чтение зачем всех доков РТиУ идет???? |
|||
33
Kleo
17.10.14
✎
08:19
|
пишет Запись изменений для узла "КА". Прочитано 800... РеализацияТоваровУслуг
так и должно быть в первый проход? |
|||
34
Kleo
17.10.14
✎
08:29
|
выгрузил какие-то документы еще апрельские... бред... ничего не понимаю. запрос сработал, ошибок нет, но в файле выгрузок... вообще какие-то другие доки... а тот, который должен не попал.....
|
|||
35
Kleo
17.10.14
✎
08:29
|
отобраться должен только один док и все!!! что не так? запрос в консоле запросов работает верно. отбирает один док. что не так?
|
|||
36
Kleo
17.10.14
✎
08:48
|
нашла еще одну ошибку: указала Произвольный алгоритм для ПВД, а Объект выборки не убрала. сделала. теперь перебора нет. но есть новая ошибка:
Начало выгрузки: 17.10.2014 11:45:51 Ошибка при выгрузке данных для узла плана обмена ОписаниеОшибки = Ошибка при вызове метода контекста (НайтиПоТипу): Несоответствие типов (параметр номер '1') ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(12187) КодСообщения = 72 УзелПланаОбмена = КА Окончание выгрузки: 17.10.2014 11:45:51 |
|||
37
Kleo
17.10.14
✎
09:22
|
(36) эта ошибка из-за того, что убран Объект выборки...
|
|||
38
Kleo
17.10.14
✎
09:30
|
если ставлю, то опять все перебирает... такое ощущение, что всеравно, что написано в запросе
|
|||
39
Kleo
17.10.14
✎
09:39
|
подскажите, пожалуйста. все так просто нужно выбрать доки с префиксом С, на основании заказа покупателя с префиксом Б. и что нужно для это делать? через ПКО и ПВД попробовала - не получается((((
|
|||
40
Alex S D
17.10.14
✎
09:44
|
а способ выборки что стоит?
|
|||
41
Alex S D
17.10.14
✎
09:45
|
ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов. Используется, когда способ выгрузки данных - Произвольный алгоритм. Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически
|
|||
42
Alex S D
17.10.14
✎
09:45
|
из справки обработчика ПередОбработкой
|
|||
43
Kleo
17.10.14
✎
09:54
|
(40) Произвольный алгоритм
|
|||
44
Kleo
17.10.14
✎
09:57
|
(41) у меня нет этой переменной. у меня в ПВД Перед обработкой:
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата1",Дата("20141015")); Запрос.УстановитьПараметр("Узел",ПланыОбмена.ОбменУППУПП.НайтиПоКоду("002")); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугИзменения.Ссылка КАК Документ, | РеализацияТоваровУслугИзменения.Ссылка.Сделка, | РеализацияТоваровУслугИзменения.Ссылка.ДокументОснование |ИЗ | Документ.РеализацияТоваровУслуг.Изменения КАК РеализацияТоваровУслугИзменения |ГДЕ | РеализацияТоваровУслугИзменения.Узел = &Узел | И РеализацияТоваровУслугИзменения.Ссылка.Дата >= &Дата1 | И ПОДСТРОКА(РеализацияТоваровУслугИзменения.Ссылка.Номер, 1, 1) = ""С"" | И ПОДСТРОКА(РеализацияТоваровУслугИзменения.Ссылка.Сделка.Номер, 1, 1) = ""Б"" | И ТИПЗНАЧЕНИЯ(РеализацияТоваровУслугИзменения.Ссылка.Сделка) = ТИП(Документ.заказПокупателя) | И РеализацияТоваровУслугИзменения.Ссылка.Сделка = РеализацияТоваровУслугИзменения.Ссылка.ДокументОснование"; РезультатЗапроса = Запрос.Выполнить(); Сообщить("Запрос"); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ВыгрузитьПоПравилу(ВыборкаДетальныеЗаписи.Документ,,,, "РеализацияТоваровУслуг"); КонецЦикла; |
|||
45
Kleo
17.10.14
✎
10:45
|
обмен начат не с самого начала... а уже прошло 2-3 года документообоота. и скорее всего, подозреваю, что все для обмена считается измененными объектами... и он пытается все их выгрузить... только когда я смотрю файл, то доки не соответствуют заданным параметрам в запросе. а попадают непонятно каким-то образом выбранные объекты...
и еще такой момент: раньше был только обмен из КА в УПП. теперь нужно еще из УПП в КА по выше указанному запросу выгружать документы. так вот я эти правила загружаю в этот же обмен односторонний, что был ранее... и может в этом ошибка? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |