Добрый день, подскажите по правила обмена может было у кого такое. Делаю перенос справочника Контрагенты из 7.7 в 8.2. В 7.7 нет поля Покупатель, Поставщик, где прописать выборку, если контрагент встречается в документах приходных накладных то это Поставщик, если расходных накладных то это покупатель?
---
nogik, ясно, значит, у вас ПВД для справочника Контрагентов.
можно, например, ПВД с произвольным алгоритмом, там запросом выбрать сначала покупателей, потом поставщиков, и заполнять ВыборкаДанных так, как требуется - завести новые поля "Поставщик", "Покупатель", и заполнять их, как надо.
---
nogik,
ПКО (Конрагенты) - Реквизит "Покупатель" - в ПКС Перед выгрузкой:

Контрагент = Источник;
// запрос ..........
// Результат = .....;
Значение = Результат;

Словами:
Есть правило конвертации объекта "Контрагенты", у правила добавляем правило конвертации свойств "Покупатель" (в приемнике "Покупатель" имеется ввиду), в процедуре "Перед выгрузкой" для этого ПКС пишем запрос, где Источник - это будет наш несчастный контрагент, Значение - то, что помещаем в поле Покупатель при переносе, короче ставим там галочку или нет (Значение = 1 или Значение =0).Так же и для "Поставщик"
---
К сожалению, не разбираюсь в запросах 7ки. Но смысл примерно такой

```1c
    Запрос.Группировка(1)=1 Цикл

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

    ВыгрузитьПоПравилу(Запрос.Контрагент, , ИсходящиеДанные, , "ПравилоКонтрагенты");

    КонецЦикла;
```
---
Никак не могу понять где это прописать?
---
я думаю, Вам нужна галка "Получать из входящих данных"
---
andrewks, Галку я уже поставил. Подскажите такой вопрос мне в ПКО ПередВыгрузкой нужно прописать запрос на нахождение этих документов? А в ПКС Покупатель или Поставщик к ним каким-то образом обратится?
---
nogik, зачем их находить? у Вас разве контрагенты не по ссылке выгружаются?
---
andrewks, я наверно не правильно как-то написал, мне нужно перенести справочник Контрагенты из 7.7 в 8.2, в 7.7 нет таких параметров как поставщик или покупатель, мне их в 8.2 нужно соответственно определить. А определить я их могу из 2 документов приходная или расходная накладная, если этот контрагент встречается в документе том или ином соответственно нужно и ставить галочку в контрагенте. Вот такая задача.
---
nogik, ясно, значит, у вас ПВД для справочника Контрагентов.
можно, например, ПВД с произвольным алгоритмом, там запросом выбрать сначала покупателей, потом поставщиков, и заполнять ВыборкаДанных так, как требуется - завести новые поля "Поставщик", "Покупатель", и заполнять их, как надо.
---
andrewks, а в ПВД запрос писать как будто на 7.7?
---
andrewks, Написал Алгоритм
Перем РезультатЗапроса;
Если Источник = "" Тогда
 Возврат 0;
КонецЕсли;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Контрагент = Регистр.Взаиморасчеты.Клиент;
|Сум = Регистр.Взаиморасчеты.СуммаВал;
|Функция Приход = Приход(Сум);
|Функция Расход = Расход(Сум);
|Условие(Контрагент = Источник);
|"//}}ЗАПРОС;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
 Возврат 0;
КонецЕсли;
Запрос.Выгрузить(РезультатЗапроса);
Если РезультатЗапроса.КоличествоСтрок() > 0 Тогда
       РезультатЗапроса.ПолучитьСтрокуПоНомеру(РезультатЗапроса.КоличествоСтрок());
 Если (РезультатЗапроса.Приход > 0) ИЛИ (РезультатЗапроса.Расход > 0) Тогда
  Возврат 1;
 Иначе
  Возврат 0;
 КонецЕсли;
Иначе
 Возврат 0;
КонецЕсли;

При выгрузке контрагента пишет 0, подскажите может что с запросом не так?
---
Если Источник = "" Тогда
 Возврат 0;
КонецЕсли;

Так, может возврат 0 в самом начале алгорима выскакивает, отладь, сделай на время разные результаты возврата, найди в каком месте выход.
---
я наверно не правильно как-то написал, мне нужно перенести справочник Контрагенты из 7.7 в 8.2, в 7.7 нет таких параметров как поставщик или покупатель, мне их в 8.2 нужно соответственно определить. А определить я их могу из 2 документов приходная или расходная накладная, если этот контрагент встречается в документе том или ином соответственно нужно и ставить галочку в контрагенте. Вот такая задача.
---
В 7ке контрагенты лежат в отдельных группах "поставщики" и "покупатели"?
Добавьте в правилах кусочек кода, кто в 7ке в группе "поставщики", тому в 8ке галку "поставщик" и тд.
---
Как-то так.
---
Niberu, Проблема состоит в том что в базе 7.7 Клиенты лежат в группах ЮрЛицо и ФизЛицо, поэтому вариант с Родителем не подходит(((, Подскажите может что в алгоритме у меня не так?
---
Посмотрите типовые правила по переносу из Бух 7.7 в УТ 10.3 или Бух 2.0.
Там такая же проблема и решается она следующим образом.
На время переноса в 7.7. создаются аналогичные поля "покупатель" и "поставщик". Дальше запускается обработка, которая анализирует, в каких документах участвует контрагент - в реализациях или поступлениях. Если в продажах, то ставятся галочка "покупатель", если в поставках - "поставщик". После того, как галочки проставлены, то можно в правилах обмена сопоставить поля в информационных базах.

Еще есть вариант, который сработает, если есть четкое условие, что контрагент либо поставщик, либо покупатель. В таком случае нужно использовать факт, откуда срабатывает правило для контрагента. Т.е. в документах, откуда выбирается контрагент, передавать исходящими данными "покупатель" или "поставщик". Например, если контрагент передается из реализации, то мы ставим Покупатель=1, Поставщик=0.
---
moonlight81, по поводу второго варианта вы имеете ввиду при выгрузке документа расходной или приходной накладной, чтобы исходящими данными передавалось в ПКО Контрагента значение Поставщик или Покупатель? А алгоритмом через запрос, никак мне не получить эти данные? Не хотелось бы выгружать ещё документы они там не нужны.
---
Можете сделать произвольную выборку, заменив стандартный алгоритм выборки справочника "контрагенты", и там написать запрос с определением, к каким документам "относится" контрагент. После это запихнуть полученные данные в исходящие и выгрузить вместе с ссылкой по контрагенту.
---
moonlight81, Вот подскажите по моему алгоритму, что я сделал. Провёл отладку запрос не хочет выдавать значения, я уже и период добавил в запрос, но результата по запросу нет(((, что может не так быть с запросом

ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНач по ДатаКон;
|Контрагент = Регистр.Взаиморасчеты.Клиент;
|Сум = Регистр.Взаиморасчеты.СуммаВал;
|Функция Приход = Приход(Сум);
|Функция Расход = Расход(Сум);
|Условие(Контрагент = Источник);
|"//}}ЗАПРОС

или я не правильно его обрабатываю, не пойму в чём проблема?
---
В общем разобрался с запросом. Спасибо всем большое кто откликнулся и помог в решении этой задачи. Больше всех направил на мысль andrewks ОГРОМНОЕ СПС!