Имя: Пароль:
1C
1С v8
Запрос через OLE
0 Altuntop
 
27.09.12
13:37
Подскажите пожалуйста какую команду можно использовать в запросе вместо "ПОДОБНО", если запрос через OLE обращается к базе 7.7. На Команду "LIKE" выдает ошибки.

Для чего это нужно. Делается выгрузка ПоступлениеТоваровИУслуг из 8.2 в 77 и в базе 7.7 надо найти контрагента по ИНН, т.к. по наименованию это сделать нереально (наименования отличаются).

Хочу через запрос в 7.7 отобрать контрагентов, у которых ИНН подобен ИНН из базы 8.2
1 Ахиллес
 
27.09.12
13:41
Бредишь? А что по твоему есть ИНН?  Никаких "подобных" ИНН в принципе существовать не может.
2 Altuntop
 
27.09.12
13:46
Один и тот же контрагент имеется и в базе 8.2 и в базе 7.7. По наименованию их найти невозможно (Отличаются) а по ИНН более реальнее
3 Altuntop
 
27.09.12
13:47
Перем   ПутьКБазе, База77;

Функция ПолучитьКонтрагента(ПоИНН)
   Запрос=База77.CreateObject("Запрос");
   ТекстЗапроса ="
   |Код = Справочник.Контрагенты.Код;
   |ВидКонтрагента = Справочник.Контрагенты.ВидКонтрагента;
   |ИНН = Справочник.Контрагенты.ИНН;
   |Условие('ИНН' LIKE '%"+ПоИНН+"%');
   |"
   ;
   Результат = Запрос.Выполнить(ТекстЗапроса).Выгрузить();
   ИскомыйКонтрагент=База77.CreateObject("Справочник.Контрагенты");
   Для Каждого Стр Из Результат Цикл
       Если (СтрДлина(ПоИНН)=СтрДлина(Стр.ИНН)) и  (ПоИНН=Стр.ИНН)  Тогда
           Если ИскомыйКонтрагент.НайтиПоКоду(Стр.Код) =1 Тогда
               Возврат ИскомыйКонтрагент.ТекущийЭлемент();
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
   База77 = Новый COMОбъект( "V77.Application");
   База77.Initialize (База77.RMTrade ,ПутьКБазе ,"NO_SPLASH_SHOW");
   Для Каждого Стр Из ПриходТовара Цикл
       Поступление = База77.CreateObject("Документ.ПоступлениеТоваров");
       Номенклатура77 = База77.CreateObject("Справочник.Номенклатура");
       ТипыЦен = База77.CreateObject("Справочник.ТипыЦен");
       ВариантНалога = База77.CreateObject("Справочник.ВариантыРасчетаНалогов");
       Поступление.Новый();
       Поступление.НомерДок=Стр.НомерДокумента;
       Поступление.ДатаДок=Стр.ДатаДокумента;
       Поступление.НомерДокВходящий=Стр.НомерДокумента;
       Поступление.ДатаДокВходящий=Стр.ДатаДокумента;
       Поступление.ВидПоступления=11;
       Поступление.ЗачитыватьАванс=0;
       Поступление.ПокупателемВыставляетсяСчетФактураНаВозврат = 1;
       Поступление.ВариантОтраженияВозврата = 1;
       Поступление.МестоХранения = База77.Константа.ОсновнойСклад;
       Поступление.ТипЦен = База77.Константа.ОсновнаяЦенаПриобретения;
       Поступление.ВариантРасчетаНалогов=База77.Константа.ОсновнойВариантРасчетаНалогов;
       Поступление.ДатаСчетаФактуры=Стр.ДатаДокумента;
       Поступление.НомерСчетаФактуры=Стр.НомерДокумента;
       Поступление.ДатаНомерСчетаФактуры=СокрЛП("№ "+Стр.НомерДокумента+" от "+Стр.ДатаДокумента);
       Поступление.СпособПолучения = 1;
       Поступление.Контрагент=ПолучитьКонтрагента(СокрЛП(Стр.Поставщик.ИНН));
       Поступление.Договор=ПолучитьКонтрагента(СокрЛП(Стр.Поставщик.ИНН)).ОсновнойДоговор;
       ТаблицаТоваров=Стр.Документ.Товары.Выгрузить();
       ТаблицаТоваров.Свернуть("СтавкаНДС","Сумма,СуммаНДС,СуммаВРознице");
       Для каждого Данные Из ТаблицаТоваров Цикл
           Поступление.НоваяСтрока();
           Если Данные.СтавкаНДС=Перечисления.СтавкиНДС.НДС18 Тогда
               Если Номенклатура77.НайтиПоНаименованию("Продукты (18%)")=1 Тогда
                   Товар1018=    Номенклатура77.ТекущийЭлемент();
               КонецЕсли;
           Иначе
               Если Номенклатура77.НайтиПоНаименованию("Продукты (10%)")=1 Тогда
                   Товар1018=    Номенклатура77.ТекущийЭлемент();
               КонецЕсли;
           КонецЕсли;
           Поступление.Товар=Товар1018;
           Поступление.Сумма= Данные.Сумма;
           Поступление.Цена= Данные.Сумма;
           Поступление.НДС= Данные.СуммаНДС;
           Поступление.Всего= Данные.Сумма+Данные.СуммаНДС;
           Поступление.Наценка= Данные.СуммаВРознице-Данные.Сумма;
       КонецЦикла;
       Поступление.Записать();
       Сообщить("Создан документ Приход товара");
   КонецЦикла;
КонецПроцедуры

Процедура ВыбПериодНажатие(Элемент)
   НастройкаПериода = Новый НастройкаПериода;
   НастройкаПериода.РедактироватьКакИнтервал = Истина;
   НастройкаПериода.РедактироватьКакПериод = Истина;
   НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
   НастройкаПериода.УстановитьПериод(НачДата, ?(КонДата='0001-01-01', КонДата, КонецДня(КонДата)));
   Если НастройкаПериода.Редактировать() Тогда
       НачДата = НастройкаПериода.ПолучитьДатуНачала();
       КонДата = НастройкаПериода.ПолучитьДатуОкончания();
   КонецЕсли;
КонецПроцедуры

Процедура Заполнить(Кнопка)
   Приходы=Документы.ПоступлениеТоваровУслуг.Выбрать(НачДата,КонДата);
   Пока Приходы.Следующий() Цикл
       Если (Приходы.ПометкаУдаления=Истина) или (Приходы.Проведен=Ложь) или (Приходы.Товары.Количество()=0) Тогда
           Продолжить;
       КонецЕсли;
       НоваяСтрока=ПриходТовара.Добавить();
       НоваяСтрока.Поставщик= Приходы.Контрагент;
       НоваяСтрока.НомерДокумента= Приходы.НомерВходящегоДокумента;
       НоваяСтрока.ДатаДокумента= Приходы.ДатаВходящегоДокумента;
       НоваяСтрока.Документ= Приходы.Ссылка;
   КонецЦикла;
КонецПроцедуры
4 ДенисЧ
 
27.09.12
13:49
|Условие('ИНН' LIKE '%"+ПоИНН+"%');

Это когда же такое в 77 появилось?? О_о
5 Ахиллес
 
27.09.12
13:49
(2) И чё? При чем тут ПОДОБНО, когда тут РАВНО должно быть?
6 Рэйв
 
27.09.12
13:50
Если ИНН отличаются, значит это разные контрагенты.
Так что ищи по полному совпадению и не парься
7 Altuntop
 
27.09.12
13:52
Так ИНН в 7.7 связан с КПП через разделитель "/" или "\" в 8 ИНН идет в отдельном поле.
8 Рэйв
 
27.09.12
13:58
(7)
длина ИНН же одинаковая.
Сделай так

|Условие(ЛЕВ(ИНН,ДлинаИНН)=""лялял"")
9 Ахиллес
 
27.09.12
13:58
(7) В семёрке есть типовая функция поиска по ИНН, юзай её.
З.Ы. Кстате в 7 Запрос не дает никаких преимуществ перед поиском.