![]() |
![]() |
|
Запрос через 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 Запрос не дает никаких преимуществ перед поиском. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |