Имя: Пароль:
1C
1С v8
Алгоритм
,
0 Azxcvbn
 
14.03.13
09:04
Имеется справочник Контрагенты из УТП и Контрагенты БП, нужно их сравнить по наименованию и коду, причем если Наименование одинаковые, но коды разные, нужно записать в массив(переменную) две выборки. Так же возможно есть дубли, то есть к примеру в обоих справочниках есть контрагент "Иванов И" с кодом 123 и "Иванов И" с кодом 124.
Я реализовал так:

Пока Выборка.Следующий() Цикл
 Совпадение = Ложь;
 Пока ВыборкаБух.Следующий() ЦИкл
   Если Выборка.Наименование = ВыборкаБух.Наименование Тогда
     Если ВыборкаБух.Код <> Выборка.Код Тогда
       КонтрагентКодБУх = ВыборкаБух.Код;
   КонтрагентНаимБух = ВыборкаБух.Наименование;
       КонтрагентКодТор = Выборка.Код;
   КонтрагентНаимТор = Выборка.Наименование;
     Иначе
   Совпадение = Истина;
     КонецЕсли;
   КонецЕсли;
   Если Совпадение = Истина тогда
     Прервать;
   КонецЕсли;
 КонецЦИкла;
 //Здесь думаю над тем как задать правильно условие и записать "правильные" переменные в массив или ТЗ
КонецЦикла;


З.Ы. Работает не правильно =))
В основном проблема начинается при сравнении "дублированных" Контрагентов. И да удалить дублированных контрагентов не вариант, так как они уже в Документах есть.
1 zak555
 
14.03.13
09:04
изначально сравнивай по ИНН/КПП
2 Рэйв
 
14.03.13
09:07
один запрос на
...
ГДЕ
  Спр1.Наименование=Спр2.Наименование
  И Спр1.Код = Спр2.Код

второй  запрос на
...
ГДЕ
  Спр1.Наименование=Спр2.Наименование
  ИЛИ Спр1.Код = Спр2.Код
3 Рэйв
 
14.03.13
09:08
или внутренее соедениенеи по тем же условиям
4 Azxcvbn
 
14.03.13
09:10
(2)

Ком = Новый COMObject("V81.COMConnector");
// создается объект COM-соединение
   Попытка
   connection = Ком.Connect("Srvr=""192.168.1.1"";Ref=""BASEPC"";"+
  "Usr=""Админ"";Pwd=123");
   Исключение
     Сообщить(ОписаниеОшибки());
   Возврат
   КонецПопытки;
Запрос = connection.NewObject("Запрос");  
Запрос.Текст = "ВЫБРАТЬ


УТ 8.1 БП 8.2 Обмен данных
5 Azxcvbn
 
14.03.13
09:11
(1) Одинаковые и там и там
6 Рэйв
 
14.03.13
09:12
(5)Как вариант получи по СОМ тз с кодами и наименованиями

Закинь ее в ВТ в запрос и соединяй
7 cw014
 
14.03.13
09:13
(6) опередил
8 Azxcvbn
 
14.03.13
09:15
(6)
я пробовал, уровень моих знаний не позволяет мне это сделать. Был бы рад если бы вы показали как это реализовать.
9 Рэйв
 
14.03.13
09:20
(6)Создай в текущей базе ТЗ с типизитованными колонками "Код" и "Наименование"

получи запросом по СОМ справочник, перебери выборку, заполни тз кодами и наименованиями.

Потом
//----
Запрос=Новый Запрос;

Запрос.Текст="Выбрать т.Наименование,т.Код Поместить ВТ ИЗ &т КАК т
;
Выбрать * ИЗ ВТ
Внутреннее Соединение Справочник.Контрагенты КАК Контр
ПО
ВТ.Код=Контр.Код И ВТ.Наименование=Контр.Наименование

//----

примерно так
10 Рэйв
 
14.03.13
09:21
ах да..Еще
Запрос.УстановитьПараметр("т",ТвояТЗ);
11 Azxcvbn
 
14.03.13
10:13
(10) Спасибо