7.7 Отчет сравнивающий позиции из разных баз 1С

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем x(mxcrew), 9 апр 2010.

  1. TopicStarter Overlay
    x(mxcrew)
    Offline

    x(mxcrew)

    Регистрация:
    11 ноя 2009
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Задача: написать отчет который будет находить аналогичные элементы справочников в 2х базах

    В каждой базе есть справочник товаров, в каждом товаре есть штрих-код

    чтобы найти аналогичные товары, решил делать поиск по штрих-коду т.к. он уникальный для каждого товара

    получился следующий код

    Код:
    //*******************************************
    Процедура Сформировать()
    
    Перем НомСтр_ст;
    Перем НомКолонки_ст;
    
    ТабЗнач=создатьобъект("таблицазначений"); 
    ТабЗнач_ст=создатьобъект("таблицазначений"); 
    
    ТабЗнач.НоваяКолонка("Наименование",,,,,,,);
    //ТабЗнач.НоваяКолонка("ПолноеНаименование",,,,,,,);
    ТабЗнач.НоваяКолонка("ЦенаПоставщика",,,,,,,);
    ТабЗнач.НоваяКолонка("ЦенаМагазина",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод01",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод02",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод03",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод04",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод05",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод06",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод07",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод08",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод09",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод10",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод11",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод12",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод13",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод14",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод15",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод16",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод17",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод18",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод19",,,,,,,);
    ТабЗнач.НоваяКолонка("Баркод20",,,,,,,); 
    
    ТабЗнач_ст.НоваяКолонка("Наименование",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("ПолноеНаименование",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("ЦенаПоставщика",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("ЦенаМагазина",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод01",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод02",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод03",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод04",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод05",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод06",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод07",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод08",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод09",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод10",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод11",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод12",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод13",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод14",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод15",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод16",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод17",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод18",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод19",,,,,,,);
    ТабЗнач_ст.НоваяКолонка("Баркод20",,,,,,,);
    
    
    
    СтараяБаза=СоздатьОбъект("v77.Application");
    СтараяБаза.Initialize(СтараяБаза.RMTrade,"/dD:\путьКбазе\ /nПользователь /pпароль /m","NO_SPLASH_SHOW");
    
    спр_ст=СтараяБаза.CreateObject("справочник.Номенклатура");
    спр_ст_б=СтараяБаза.CreateObject("справочник.Баркоды");
    
    спр=создатьобъект("справочник.Номенклатура");
    спр_б=создатьобъект("справочник.Баркоды");
    
    спр.выбратьэлементы();
    
    while спр.получитьэлемент()=1 do
    
    
    Если спр.ЭтоГруппа() = 0 Тогда
    
    ТабЗнач.НоваяСтрока();
    ТабЗнач.Наименование=спр.Наименование;
    //ТабЗнач.ПолноеНаименование=спр.ПолноеНаименование;
    //ТабЗнач.ЦенаПоставщика=спр.ПолноеНаименование;
    //ТабЗнач.ЦенаМагазина=спр.ОтпЦена;
    
    спр_б.ИспользоватьВладельца(спр.текущийэлемент());
    
    спр_б.ВыбратьЭлементы();
    
    i=1;
    
    while спр_б.получитьЭлемент()=1 do
    
    
    Если i=1 Тогда
    ТабЗнач.Баркод01=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=2 Тогда
    ТабЗнач.Баркод02=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=3 Тогда
    ТабЗнач.Баркод03=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=4 Тогда
    ТабЗнач.Баркод04=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=5 Тогда
    ТабЗнач.Баркод05=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=6 Тогда
    ТабЗнач.Баркод06=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=7 Тогда
    ТабЗнач.Баркод07=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=8 Тогда
    ТабЗнач.Баркод08=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=9 Тогда
    ТабЗнач.Баркод09=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=10 Тогда
    ТабЗнач.Баркод10=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=11 Тогда
    ТабЗнач.Баркод11=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=12 Тогда
    ТабЗнач.Баркод12=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=13 Тогда
    ТабЗнач.Баркод13=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=14 Тогда
    ТабЗнач.Баркод14=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=15 Тогда
    ТабЗнач.Баркод15=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=16 Тогда
    ТабЗнач.Баркод16=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=17 Тогда
    ТабЗнач.Баркод17=СокрЛП(спр_б.Наименование);
    КонецЕсли;    
    
    Если i=18 Тогда
    ТабЗнач.Баркод18=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=19 Тогда
    ТабЗнач.Баркод19=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    Если i=20 Тогда
    ТабЗнач.Баркод20=СокрЛП(спр_б.Наименование);
    КонецЕсли;
    
    i=i+1;
    
    enddo; 
    
    
    КонецЕсли;
    
    enddo;	  
    
    
    
    спр_ст.выбратьэлементы();
    
    while спр_ст.получитьэлемент()=1 do
    
    Если спр_ст.ЭтоГруппа() = 0 Тогда
    
    ТабЗнач_ст.НоваяСтрока();
    ТабЗнач_ст.Наименование=спр_ст.Наименование;
    //ТабЗнач_ст.ПолноеНаименование=спр_ст.ПолноеНаименование;
    //ТабЗнач_ст.ЦенаПоставщика=спр_ст.ПолноеНаименование;
    //ТабЗнач_ст.ЦенаМагазина=спр_ст.ОтпЦена;
    
    спр_ст_б.ИспользоватьВладельца(спр_ст.текущийэлемент());
    
    спр_ст_б.ВыбратьЭлементы();
    
    i=1;
    
    while спр_ст_б.получитьЭлемент()=1 do
    
    
    Если i=1 Тогда
    ТабЗнач_ст.Баркод01=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=2 Тогда
    ТабЗнач_ст.Баркод02=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=3 Тогда
    ТабЗнач_ст.Баркод03=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=4 Тогда
    ТабЗнач_ст.Баркод04=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=5 Тогда
    ТабЗнач_ст.Баркод05=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=6 Тогда
    ТабЗнач_ст.Баркод06=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=7 Тогда
    ТабЗнач_ст.Баркод07=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=8 Тогда
    ТабЗнач_ст.Баркод08=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=9 Тогда
    ТабЗнач_ст.Баркод09=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=10 Тогда
    ТабЗнач_ст.Баркод10=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=11 Тогда
    ТабЗнач_ст.Баркод11=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=12 Тогда
    ТабЗнач_ст.Баркод12=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=13 Тогда
    ТабЗнач_ст.Баркод13=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=14 Тогда
    ТабЗнач_ст.Баркод14=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=15 Тогда
    ТабЗнач_ст.Баркод15=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=16 Тогда
    ТабЗнач_ст.Баркод16=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=17 Тогда
    ТабЗнач_ст.Баркод17=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;    
    
    Если i=18 Тогда
    ТабЗнач_ст.Баркод18=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=19 Тогда
    ТабЗнач_ст.Баркод19=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    Если i=20 Тогда
    ТабЗнач_ст.Баркод20=СокрЛП(спр_ст_б.Наименование);
    КонецЕсли;
    
    i=i+1;
    
    enddo; 
    
    КонецЕсли;
    
    enddo;
    
    
    ТабЗнач.выбратьстроки();
    
    Пока ТабЗнач.получитьстроку()=1  Цикл
    
    Если  ПустоеЗначение(ТабЗнач.Баркод01) = 0  Тогда
    
    ТабЗнач_ст.выбратьстроки();
    
    
    Если ТабЗнач_ст.НайтиЗначение(ТабЗнач.Баркод01, НомСтр_ст, НомКолонки_ст)=1 Тогда;
    
    ТабЗнач_ст.ПолучитьСтрокуПоНомеру(НомСтр_ст);
    
    Сообщить(ТабЗнач.Наименование + ТабЗнач.Баркод01); 
    
    Сообщить(ТабЗнач_ст.Наименование + ТабЗнач_ст.Баркод01); 
    
    
    
    КонецЕсли;
    
    
    
    
    
    КонецЕсли;
    
    
    КонецЦикла;  
    
    КонецПроцедуры
    
    Проблема в том что он находит только одну аналогичную строку (а их в базе очень много)
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    ТабЗнач.выбратьстроки();	 	 
    Пока ТабЗнач.получитьстроку()=1  Цикл 	 	
    Если  ПустоеЗначение(ТабЗнач.Баркод01) = 1  <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    Продолжить;
    КонецЕсли;     
    НомСтр_ст=0; 
    Если ТабЗнач_ст.НайтиЗначение(ТабЗнач.Баркод01, НомСтр_ст, НомКолонки_ст)=1 Тогда
    ТабЗнач_ст.ПолучитьСтрокуПоНомеру(НомСтр_ст);
    ...
    КонецЕсли;					      КонецЦикла;
    
    
  3. TopicStarter Overlay
    x(mxcrew)
    Offline

    x(mxcrew)

    Регистрация:
    11 ноя 2009
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Большое спасибо! Все заработало )
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Просто нужно было стартовый номер для поиска присваивать....

Поделиться этой страницей