Правила конвертации данных

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. nogik 27.12.12 21:13 Сейчас в теме
Добрый день, подскажите по правила обмена может было у кого такое. Делаю перенос справочника Контрагенты из 7.7 в 8.2. В 7.7 нет поля Покупатель, Поставщик, где прописать выборку, если контрагент встречается в документах приходных накладных то это Поставщик, если расходных накладных то это покупатель?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
9. andrewks 1375 27.12.12 22:58 Сейчас в теме
(7) nogik, ясно, значит, у вас ПВД для справочника Контрагентов.
можно, например, ПВД с произвольным алгоритмом, там запросом выбрать сначала покупателей, потом поставщиков, и заполнять ВыборкаДанных так, как требуется - завести новые поля "Поставщик", "Покупатель", и заполнять их, как надо.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. serg_gres 154 27.12.12 22:29 Сейчас в теме
(1) nogik,
ПКО (Конрагенты) - Реквизит "Покупатель" - в ПКС Перед выгрузкой:

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

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

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

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

КонецЦикла;

Показать
2. nogik 27.12.12 21:30 Сейчас в теме
Никак не могу понять где это прописать?
3. andrewks 1375 27.12.12 22:04 Сейчас в теме
я думаю, Вам нужна галка "Получать из входящих данных"
4. nogik 27.12.12 22:09 Сейчас в теме
(3) andrewks, Галку я уже поставил. Подскажите такой вопрос мне в ПКО ПередВыгрузкой нужно прописать запрос на нахождение этих документов? А в ПКС Покупатель или Поставщик к ним каким-то образом обратится?
5. andrewks 1375 27.12.12 22:11 Сейчас в теме
(4) nogik, зачем их находить? у Вас разве контрагенты не по ссылке выгружаются?
7. nogik 27.12.12 22:28 Сейчас в теме
(5) andrewks, я наверно не правильно как-то написал, мне нужно перенести справочник Контрагенты из 7.7 в 8.2, в 7.7 нет таких параметров как поставщик или покупатель, мне их в 8.2 нужно соответственно определить. А определить я их могу из 2 документов приходная или расходная накладная, если этот контрагент встречается в документе том или ином соответственно нужно и ставить галочку в контрагенте. Вот такая задача.
9. andrewks 1375 27.12.12 22:58 Сейчас в теме
(7) nogik, ясно, значит, у вас ПВД для справочника Контрагентов.
можно, например, ПВД с произвольным алгоритмом, там запросом выбрать сначала покупателей, потом поставщиков, и заполнять ВыборкаДанных так, как требуется - завести новые поля "Поставщик", "Покупатель", и заполнять их, как надо.
10. nogik 28.12.12 00:57 Сейчас в теме
(9) andrewks, а в ПВД запрос писать как будто на 7.7?
11. nogik 28.12.12 01:49 Сейчас в теме
(9) andrewks, Написал Алгоритм
Перем РезультатЗапроса;
Если Источник = "" Тогда
Возврат 0;
КонецЕсли;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Контрагент = Регистр.Взаиморасчеты.Клиент;
|Сум = Регистр.Взаиморасчеты.СуммаВал;
|Функция Приход = Приход(Сум);
|Функция Расход = Расход(Сум);
|Условие(Контрагент = Источник);
|"//}}ЗАПРОС;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат 0;
КонецЕсли;
Запрос.Выгрузить(РезультатЗапроса);
Если РезультатЗапроса.КоличествоСтрок() > 0 Тогда
РезультатЗапроса.ПолучитьСтрокуПоНомеру(РезультатЗапроса.КоличествоСтрок());
Если (РезультатЗапроса.Приход > 0) ИЛИ (РезультатЗапроса.Расход > 0) Тогда
Возврат 1;
Иначе
Возврат 0;
КонецЕсли;
Иначе
Возврат 0;
КонецЕсли;

При выгрузке контрагента пишет 0, подскажите может что с запросом не так?
15. Niberu 5 28.12.12 11:12 Сейчас в теме
(11)
Если Источник = "" Тогда
Возврат 0;
КонецЕсли;

Так, может возврат 0 в самом начале алгорима выскакивает, отладь, сделай на время разные результаты возврата, найди в каком месте выход.
6. nogik 27.12.12 22:15 Сейчас в теме
я наверно не правильно как-то написал, мне нужно перенести справочник Контрагенты из 7.7 в 8.2, в 7.7 нет таких параметров как поставщик или покупатель, мне их в 8.2 нужно соответственно определить. А определить я их могу из 2 документов приходная или расходная накладная, если этот контрагент встречается в документе том или ином соответственно нужно и ставить галочку в контрагенте. Вот такая задача.
12. Niberu 5 28.12.12 04:02 Сейчас в теме
В 7ке контрагенты лежат в отдельных группах "поставщики" и "покупатели"?
Добавьте в правилах кусочек кода, кто в 7ке в группе "поставщики", тому в 8ке галку "поставщик" и тд.
13. Niberu 5 28.12.12 04:06 Сейчас в теме
Как-то так.
Прикрепленные файлы:
14. nogik 28.12.12 11:06 Сейчас в теме
(13) Niberu, Проблема состоит в том что в базе 7.7 Клиенты лежат в группах ЮрЛицо и ФизЛицо, поэтому вариант с Родителем не подходит(((, Подскажите может что в алгоритме у меня не так?
16. moonlight81 28.12.12 11:33 Сейчас в теме
Посмотрите типовые правила по переносу из Бух 7.7 в УТ 10.3 или Бух 2.0.
Там такая же проблема и решается она следующим образом.
На время переноса в 7.7. создаются аналогичные поля "покупатель" и "поставщик". Дальше запускается обработка, которая анализирует, в каких документах участвует контрагент - в реализациях или поступлениях. Если в продажах, то ставятся галочка "покупатель", если в поставках - "поставщик". После того, как галочки проставлены, то можно в правилах обмена сопоставить поля в информационных базах.

Еще есть вариант, который сработает, если есть четкое условие, что контрагент либо поставщик, либо покупатель. В таком случае нужно использовать факт, откуда срабатывает правило для контрагента. Т.е. в документах, откуда выбирается контрагент, передавать исходящими данными "покупатель" или "поставщик". Например, если контрагент передается из реализации, то мы ставим Покупатель=1, Поставщик=0.
17. nogik 28.12.12 11:40 Сейчас в теме
(16) moonlight81, по поводу второго варианта вы имеете ввиду при выгрузке документа расходной или приходной накладной, чтобы исходящими данными передавалось в ПКО Контрагента значение Поставщик или Покупатель? А алгоритмом через запрос, никак мне не получить эти данные? Не хотелось бы выгружать ещё документы они там не нужны.
18. moonlight81 28.12.12 11:50 Сейчас в теме
Можете сделать произвольную выборку, заменив стандартный алгоритм выборки справочника "контрагенты", и там написать запрос с определением, к каким документам "относится" контрагент. После это запихнуть полученные данные в исходящие и выгрузить вместе с ссылкой по контрагенту.
19. nogik 28.12.12 12:03 Сейчас в теме
(18) moonlight81, Вот подскажите по моему алгоритму, что я сделал. Провёл отладку запрос не хочет выдавать значения, я уже и период добавил в запрос, но результата по запросу нет(((, что может не так быть с запросом

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот