|
Как выгрузить контактную информацию справочника контрагентов? | ☑ | ||
---|---|---|---|---|
0
Damir
02.08.13
✎
10:52
|
Ситуация в следующем. Есть база 1С БухгалтерияКОРП. 2.0 (2.0.46.8). В этой базе 10 штук "Организаций". Справочник Контрагентов общий для всех организаций. Привязка контрагентов к какой либо организации идет по реквизиту "Организация" в договоре. Необходимо написать правило которыое выгружало бы Контрагентов только по своей организации. Правило я написал. Выгружает. НО, выгружает всех подряд контрагентов, не различая их по привязке договоров. Помогите, где моя ошибка? В ПК ДоговорыКонтрагентов перед выгрузкой прописал:
Если НЕ Источник.Организация = Неопределено Тогда Если Источник.Организация <> Параметры.Организация Тогда Отказ = Истина; КонецЕсли; Иначе Отказ = Истина; КонецЕсли; В ПК Контрагены в ПослеВыгрузки прописал Запрос = Новый Запрос(" |ВЫБРАТЬ | ИСТИНА КАК Активность, | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.Поле1, | КонтактнаяИнформация.Поле2, | КонтактнаяИнформация.Поле3, | КонтактнаяИнформация.Поле4, | КонтактнаяИнформация.Поле5, | КонтактнаяИнформация.Поле6, | КонтактнаяИнформация.Поле7, | КонтактнаяИнформация.Поле8, | КонтактнаяИнформация.Поле9, | КонтактнаяИнформация.Поле10, | КонтактнаяИнформация.Комментарий, | КонтактнаяИнформация.ТипДома, | КонтактнаяИнформация.ТипКорпуса, | КонтактнаяИнформация.ТипКвартиры |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"); Запрос.УстановитьПараметр("Объект", Источник); Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Выборка.Количество()); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация"); КонецЦикла; Что не так? |
|||
1
Damir
02.08.13
✎
10:54
|
А да. Базы приемники точно такие же как база источник.
|
|||
2
hhhh
02.08.13
✎
10:58
|
(1) типовой обмен по организациям почему не используешь? Там в точности так, как ты хочешь. Всё сделано.
|
|||
3
Damir
02.08.13
✎
11:04
|
я дико извиняюсь, а где он лежит?
|
|||
4
Damir
02.08.13
✎
11:39
|
мне нужен именно правило обмена, для выгрузки только контрагентов и их реквизитов.
|
|||
5
Мимохожий Однако
02.08.13
✎
11:40
|
их общих правил флажков убери лишнее и оставь нужное
|
|||
6
Шапокляк
02.08.13
✎
11:40
|
Ну так перед выгрузкой надо проверять, есть ли у контрагента договор с нужной организацией и давать отлуп если нет такого.
|
|||
7
hhhh
02.08.13
✎
11:44
|
не, в 2.0 там без правил. Там кодом всё написано
|
|||
8
Damir
02.08.13
✎
11:48
|
(6) В ПК ДоговорыКонтрагентов перед выгрузкой прописал:
+ Code Если НЕ Источник.Организация = Неопределено Тогда Если Источник.Организация <> Параметры.Организация Тогда Отказ = Истина; КонецЕсли; Иначе Отказ = Истина; КонецЕсли; |
|||
9
Damir
02.08.13
✎
11:49
|
(5) Какие флажки?
|
|||
10
hhhh
02.08.13
✎
11:52
|
(9) в правилах выгрузки для справочника контрагентов поставь флажок отключить
|
|||
11
Damir
02.08.13
✎
12:06
|
(9) На всех полях Код, Наименование, Родитель, ИНН....?
|
|||
12
Мимохожий Однако
02.08.13
✎
12:14
|
Если уже успел выгрузить лишнее,то проще удалить лишнее, чем повторять процедуры с отбором по организации
|
|||
13
Damir
02.08.13
✎
12:23
|
(12) Нет, все испытывается в копиях. Просто такое надо будет делать периодический. Мы таким образом хотим добиться уникальности всех контрагентов во всех базах
|
|||
14
Мимохожий Однако
02.08.13
✎
12:54
|
Уникальность контрагентов определяется не принадлежность договора к организации, а ИНН, КПП или наименованием.
|
|||
15
Шапокляк
02.08.13
✎
13:10
|
(8) Ну хорошо, договоры не будут выгружены по чужой организации. Как это повлияет на выгрузку всех контрагентов?
|
|||
16
Damir
02.08.13
✎
13:10
|
(14) Ну чтоб и в организации "А" он назывался "Рога и Копыта Продакшен" и в организации "В", а не "Продакшен Рога и Копыта", таких организаций штук 10
|
|||
17
Damir
02.08.13
✎
13:13
|
(15) В правилах есть параметр "Организация", Я хочу чтоб когда я установил организацию "А" у меня выгрузились только контрагенты(с контактной инфой) у которых есть договор с организацией "А"
|
|||
18
Шапокляк
02.08.13
✎
13:23
|
Т.е. вы в правиле для выгрузки договоров ограничиваете выгрузку договорами по организации и почему-то надеетесь, что и контрагенты не выгрузятся, которые по другому правилу выгружаются?
|
|||
19
Damir
02.08.13
✎
14:41
|
(18) что мне поправить?
|
|||
20
Шапокляк
02.08.13
✎
15:40
|
Вы можете в правиле для выгрузки именно КОНТРАГЕНТА организовать проверку, есть ли у него договор с организацией?
|
|||
21
John83
02.08.13
✎
16:51
|
а выгрузказагрузкахмл чем не нравится?
|
|||
22
Damir
02.08.13
✎
17:07
|
(21) Хочу в внешних обработках обработку сделать, бухгалтер заходит в него и нажимает кнопку "Получить контрагентов", и контрагенты пришли
|
|||
23
Damir
02.08.13
✎
17:11
|
(20) В ПК Контрагентов "Перед выгрузкой" написал:
Запрос = Новый Запрос(" |ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка, | ДоговорыКонтрагентов.Владелец, | ДоговорыКонтрагентов.Организация |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец = &Владелец | И ДоговорыКонтрагентов.Организация = &Организация"); Запрос.УстановитьПараметр("Владелец", Источник); Запрос.УстановитьПараметр("Организация", Параметры.Организация); Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Параметры.Организация); Если Выборка.Следующий() = Ложь Тогда Отказ = Истина; Конецесли; Теперь если ручками через обмен XML делать все получается ))) Спасибо!!! НО когда через внешнюю обработку пытаюсь то не грузит ((( Похоже Параметр.Организация не передается |
|||
24
Aprobator
02.08.13
✎
17:16
|
(0) в ПК то нафига? Гораздо проще получить выборку в ПВД.
|
|||
25
Aprobator
02.08.13
✎
17:18
|
(23) а слабо из внешней обработки запустить универсальную?
|
|||
26
Damir
02.08.13
✎
17:21
|
ну так и делается
&НаСервере Процедура ВыгрузитьНаСервере() Экспорт // Получим Универсальную обработку обмена данными XML мУниверсальнаяВыгрузкаДанных = Обработки.УниверсальныйОбменДаннымиXML.Создать(); // Получим из макета правила обмена данными УникальныйИдентификатор = Новый УникальныйИдентификатор(); ИмяВременногоФайлаПравилОбмена = КаталогВременныхФайлов() + УникальныйИдентификатор + ".xml"; ГСЧ = Новый ГенераторСлучайныхЧисел(); ИмяФайлаВыгрузки = КаталогВременныхФайлов() + "ДокументыВХомнет" + ГСЧ.СлучайноеЧисло(0, 999) + ".xml"; МакетПравилОбмена =ПолучитьМакет("ПравилоВыгрузкиКонтрагентов"); Если МакетПравилОбмена = Неопределено Тогда Возврат; КонецЕсли; МакетПравилОбмена.Записать(ИмяВременногоФайлаПравилОбмена); // Загрузка в универсальную обработку XML правил обмена БазаИсточник = ПодключениеКБазе(); ВыгрузкаДанных = БазаИсточник.Обработки.УниверсальныйОбменДаннымиXML.Создать(); ВыгрузкаДанных.РежимОбмена = "Выгрузка"; //ВыгрузкаДанных.ЗагружатьДанныеВРежимеОбмена = Истина; //ЗагрузкаДанных.ИмяФайлаПравилОбмена = Истина; ВыгрузкаДанных.НеВыводитьНикакихИнформационныхСообщенийПользователю = Ложь; ВыгрузкаДанных.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена; ВыгрузкаДанных.ЗагрузитьПравилаОбмена(); ВыгрузкаДанных.ИмяФайлаОбмена = ИмяФайлаВыгрузки; ВременнаяТаблицаПравил = ВыгрузкаДанных.ТаблицаПравилВыгрузки.Скопировать(); ВыгрузкаДанных.ТаблицаПравилВыгрузки = ВременнаяТаблицаПравил.Скопировать(); // ВыгрузкаДанных.Параметры.Организация = Организация; ВыгрузкаДанных.Параметры.Организация = БазаИсточник.Справочники.Организации.НайтиПоРеквизиту("ИНН", Организация.ИНН); ВыгрузкаДанных.ВыполнитьВыгрузку(); // Удаляем временный файл правил и внешней обработки Попытка УдалитьФайлы(ИмяВременногоФайлаПравилОбмена); Исключение КонецПопытки; ЗагрузкаДанных = Обработки.УниверсальныйОбменДаннымиXML.Создать(); ЗагрузкаДанных.РежимОбмена = "Загрузка"; ЗагрузкаДанных.ЗагружатьДанныеВРежимеОбмена = Истина; ЗагрузкаДанных.ОптимизированнаяЗаписьОбъектов = Истина; ЗагрузкаДанных.НеВыводитьНикакихИнформационныхСообщенийПользователю = Истина; ЗагрузкаДанных.ИмяФайлаОбмена = ИмяФайлаВыгрузки; ЗагрузкаДанных.ВыполнитьЗагрузку(); Попытка УдалитьФайлы(ИмяФайлаВыгрузки); Исключение КонецПопытки; Сообщить("Успешно загрузили"); КонецПроцедуры |
|||
27
Aprobator
02.08.13
✎
17:28
|
(26) Это что за народное творчество?
ВыгрузкаДанных.Параметры.Организация = БазаИсточник.Справочники.Организации.НайтиПоРеквизиту("ИНН", Организация.ИНН); У тебя выгрузка то идет с текущей базы? |
|||
28
Damir
02.08.13
✎
17:29
|
нет, я подключаюсь в другую базу ((((
|
|||
29
Damir
02.08.13
✎
17:29
|
а как передать параметр?
|
|||
30
Aprobator
02.08.13
✎
17:31
|
(29) у тя походу тут COMОбъект в параметр попадает.
|
|||
31
Damir
02.08.13
✎
17:33
|
а как сделать чтоб "Организация" попадала в параметр выгрузки?
|
|||
32
Aprobator
02.08.13
✎
17:39
|
(31) попробуй так БазаИсточник.Параметры.Организация = БазаИсточник.Вычислить("Справочники.Организации.НайтиПоРеквизиту("ИНН", Организация.ИНН)");
|
|||
33
Aprobator
02.08.13
✎
17:40
|
иначе придется в обработке универсального обмена довешивать в модуле объекта экспортную процедуру. И вызывать ее с передачей туда ИНН, чтобы она уже в той базе сама параметр устанавливала.
|
|||
34
Aprobator
02.08.13
✎
17:46
|
(32) а да - ток вместо Организация.ИНН - там свое значение подставь сразу. А тоя упустил тут этот момент.
|
|||
35
Михаил Козлов
02.08.13
✎
17:51
|
(32) Вычислить-то зачем?
|
|||
36
Aprobator
02.08.13
✎
17:51
|
(35) выстрел немного наугад так сказать. ИМХО, спасет только экспортная процедура.
|
|||
37
Damir
12.08.13
✎
13:14
|
(36) А где его прописать?
|
|||
38
Aprobator
12.08.13
✎
13:19
|
(37) cv (33).
|
|||
39
Aprobator
12.08.13
✎
13:20
|
cv= см
|
|||
40
Damir
12.08.13
✎
13:56
|
где и как прописать эту экспортную процедуру?
|
|||
41
Aprobator
12.08.13
✎
13:57
|
как в модуле объекта экспортная процедура прописывается????
|
|||
42
Damir
12.08.13
✎
14:02
|
Процедура БлаБлаБла() Экспорт
.... КонецПроцедуры; |
|||
43
Aprobator
12.08.13
✎
14:09
|
(42) только параметр ИНН забыл для процедуры указать, а так все норм.
|
|||
44
Damir
12.08.13
✎
15:40
|
Мне придется модуль УневерсальногоОбмена переделать?
|
|||
45
hhhh
12.08.13
✎
15:49
|
(18)(20) в типовой БП так и сделано. Именно проверяется наличие договора с этой организацией. И только тогда выгружается.
|
|||
46
Damir
12.08.13
✎
15:51
|
(45) Правило обмена у меня уже готова, теперь проблема в передачи параметра "Организация"
|
|||
47
Aprobator
12.08.13
✎
16:23
|
(44) вот какое слово в (33) непонятно было?
|
|||
48
Damir
12.08.13
✎
17:14
|
нехороший вариант
|
|||
49
Aprobator
12.08.13
✎
20:22
|
чем нехороший то? Одну процедуру вставить всего. И возни минут на 10. Можно, конечно, неделями искать решение.
|
|||
50
m-serg74
12.08.13
✎
21:09
|
(46) а чего не написать в ПВД:
Запрос = Новый Запрос(" |ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка, | ДоговорыКонтрагентов.Владелец, | ДоговорыКонтрагентов.Организация |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец = &Владелец | И ДоговорыКонтрагентов.Организация.ИНН = 333333333"); |
|||
51
m-serg74
12.08.13
✎
21:10
|
ну или параметром в запрос ИНН передавать а не искать по ИНН организацию там
|
|||
52
Aprobator
13.08.13
✎
09:56
|
(51) +100500. Кстати, да, такой вариант я упстил.
|
|||
53
Damir
13.08.13
✎
16:17
|
(52)
ВыгрузкаДанных = БазаИсточник.Обработки.УниверсальныйОбменДаннымиXML.Создать(); ВыгрузкаДанных.РежимОбмена = "Выгрузка"; ВыгрузкаДанных.НеВыводитьНикакихИнформационныхСообщенийПользователю = Ложь; ВыгрузкаДанных.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена; ВыгрузкаДанных.ЗагрузитьПравилаОбмена(); ВыгрузкаДанных.ИмяФайлаОбмена = ИмяФайлаВыгрузки; ВременнаяТаблицаПравил = ВыгрузкаДанных.ТаблицаПравилВыгрузки.Скопировать(); ВыгрузкаДанных.ТаблицаПравилВыгрузки = ВременнаяТаблицаПравил.Скопировать(); ВыгрузкаДанных.Параметры.Организация = ОрганизацияИНН; Так похоже параметр не поставишь? |
|||
54
Damir
13.08.13
✎
16:18
|
точнее
ВыгрузкаДанных.Параметры.ОрганизацияИНН = ОрганизацияИНН; |
|||
55
Damir
13.08.13
✎
16:20
|
еще точнее
ВыгрузкаДанных.Параметры.ОрганизацияИНН = Организация.ИНН; |
|||
56
Aprobator
13.08.13
✎
16:28
|
тебе сказали параметр сделай ИНН. А нахождение самой организации по ИНН прямо в правила закатай. Во ты тугой.
|
|||
57
Damir
13.08.13
✎
16:48
|
Все, спасибо ВСЕМ!!! Сделал так и все работает!
НоваяСтрока = ВыгрузкаДанных.ТаблицаНастройкиПараметров.Добавить(); НоваяСтрока.Имя = "ОрганизацияИНН"; НоваяСтрока.Наименование = "ИНН Организации"; НоваяСтрока.Значение = Организация.ИНН; НоваяСтрока.ПередаватьПараметрПриВыгрузке = Ложь; |
|||
58
Damir
13.08.13
✎
17:01
|
(56) Организации каждый раз будут разные, жестко фиксировать нельзя.
|
|||
59
Aprobator
13.08.13
✎
18:14
|
(58) чего фиксировать то? У всех Организаций один ИНН что ли?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |