|  02.08.2002, 13:15 | #1 | 
| Участник | Перенос данных из Аксапты в 1С 
			
			Добрый день! При работе с COM-компонентой 1С столкнулись с неожиданной проблемой. Следущий код не работает - почему, неясно. COM InventLocations; s = "СоздатьОбъект(\"Справочник.Склады\")"; InventLocations = v77.EvalExpr(s); //v77 - объект 1С InventLocations.FindByCode("La-la-la");//Строка с ошибкой Ошибка при выполнении "Один или несколько аргументов имеют неправильный тип" однако, если искать в другом справочнике - например, Конрагенты, то все проходит ОК. Эквивалентный код на VBA(Excel) работает ОК. Пробовали использовать COMDispFunction - та же ошибка . На машине стоит 1С в.77 релиз 18 ред.912. Аксапта 25 СП3 В чем предположительно может быть проблема и как ее решать? Спасибо, Андрей Беседин | 
|  | 
|  02.08.2002, 13:32 | #2 | 
| Участник | 
			
			В 1С код справочника "склады" числовой, а у контрагентов - текстовый. Excel работает с Variant. На худой конец, попробуй и в аксапте использовать variant (хотя это тяжелое и грубое решение). Наверное стоит разобраться с типами. ЗЫ На самом деле все коды в 1С - текстовые. Но в зависимости от галочки 1С их по разному интерпретирует. Особенно через КОМ   | 
|  | 
|  05.08.2002, 06:48 | #3 | 
| Участник | 
			
			Пробовал ставить тип int, long, decimal - та же ошибка: Функция 'FindByCode возвратила код ошибки 80070057 (0xE_INVALIDARG), что означает: Один или более аргументов не верен. Пробовал также искать по названию склада - FIndByDescr() - ошибка не пропадает. Андрей Беседин | 
|  | 
|  05.08.2002, 11:53 | #4 | 
| Участник | 
			
			Хм... тогда не знаю. (А тряпочкой протирал? А по заднему колесу попинал?) У меня вроде получалось, когда надо было. Проблем не возникало. Тогда просто сделал, забыл и пошел дальше. В синтакс-помошнике 1С у метода НайтиПоКоду указаны два параметра. Но в том же синтакс-помошнике сказано, что второй является необязательным. Может быть они в оле-интерфейсе забыли описать, что он необязателен? Попробуй указать явно. Цитата: 
		
			НайтиПоКоду(<?>,); Синтаксис: НайтиПоКоду(<Код>,<ФлагПоиска>) Назначение: Найти элемент справочника по коду. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден). Параметры: <Код> - выражение со значением искомого кода, <ФлагПоиска> - флаг поиска (необязателен): 0 - поиск во всем справочнике вне зависимости от родителя; 1 - поиск внутри установленного подчинения (родителя); 2 - поиск по полному коду через разделитель. Значение по умолчанию: 0 - если код уникален во всем справочнике; 2 - если код уникален только в группе. Замечание: Метод можно использовать только для объектов, созданных функцией СоздатьОбъект. | 
|  | 
|  05.08.2002, 16:26 | #5 | 
| Участник | 
			
			мне кажется что лучше таки перенос данных в 1С делать через ODBC и быстрее будет и можно стандартными запросами все организовать | 
|  | 
|  05.08.2002, 16:39 | #6 | 
| Участник | 
			
			2 mick_777: можно поподробнее? | 
|  | 
|  05.08.2002, 16:50 | #7 | 
| Участник | подробнее про ODBC 
			
			захожу в винде в ODBC  создаю DSN, с драйвером Visual Foxpro указываю каталог 1С (если dbf) ну а если это MS база то тогда и драйвер MS и с ЛЮБОГО места, в нашем случае Ахапта (я пользуюсь и в самой 1С - на саму себя) подключаюсь через ODBCConnection в качестве имени - то что указали и вперед - SELECT * from sc112 (вся информация о структуре в 1cv7.DD файле) - я таким образом из 1с в Ахапту делал импорт кстати, если мне надо такое в 1С сделать - то использую odbcsql.dll - тоже дает возможность работать с любой базой через ODBC, напр. импорт из Аксесса | 
|  | 
|  05.08.2002, 16:59 | #8 | 
| Участник | 
			
			Хм. Во-первых ты говоришь про чтение ИЗ 1С. А здесь вопрос как писать В 1С. В 1С тоже есть внутренние идентификаторы. Там они гораздо забавнее, чем в Аксапте и гораздо сильнее взаимосвязаны. Разбираться с идентификаторами гораздо сложнее. В 1С тоже не рекомендуется писать внешними средствами. Поэтому не стоит. | 
|  | 
|  06.08.2002, 18:29 | #9 | 
| Участник | Re: Перенос данных из Аксапты в 1С Цитата: 
		
			Изначально опубликовано Andrew Besedin  Добрый день! При работе с COM-компонентой 1С столкнулись с неожиданной проблемой. Следущий код не работает - почему, неясно. Вот заведомо рабочий код PHP код: 
			 | 
|  | 
|  30.10.2002, 19:48 | #10 | 
| NavAx |   
			
			Господа, не кажется ли Вам странным, что каждому приходится самому писать сопряжение в 1С? Если у кого есть готовое решение, поделитесь или продайте, pls!
		 | 
|  | 
|  31.10.2002, 13:51 | #11 | 
| Участник | 
			
			Не кажется. Это подход такой у 1С - проще написать частный код, чем универсальное решение. Проще ему следовать, чем бороться с ним. Универсальное сопряжение получается уж слишком универсальным, поскольку в 1С часто пишут с нуля. А универсальные вещи тяжело администрируются. Проще подшаманить в коде сопрягалки, чем администрировать. Кроме того, в 1С есть проблема с перечислениями через ОЛЕ. Я не знаю универсального способа работы с ее перечислениями. Проще создать подобные в Аксапте. Опять же, ввиду того, что на 1Се часто пишут с нуля, то общим является только перечисление Булево. Да и то не всегда. | 
|  | 
|  19.03.2003, 18:11 | #12 | 
| Участник | Цитата: 
		
			Функция 'FindByCode возвратила код ошибки 80070057 (0xE_INVALIDARG), что означает: Один или более аргументов не
		
	 
				__________________ yes | 
|  | 
|  19.03.2003, 23:00 | #13 | 
| Участник | 
			
			"Так кто же убил Жульена Налестро?" (С) конец первой серии фильма "Ищите женщину" 1. Поскольку ошибка воспроизводсится из Word, Excel и даже при поиске данных по коду из другой 1С, считаю, что ошибка в 1С. 2. Считаю, что обсуждение 1С (в т.ч. поведения различных релизов) здесь является оффтопиком. 3. обратитесь к специализированным форумам с этим вопросом. Например "Территория 1С" http://www.kuban.ru/cgi-bin/forum/forum9.cgi, поищите и другие специализированные форумы. | 
|  |