| 
	 | 
| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Как через .NET коннектор удалить записи?
			 
			
			Наш софт общается с Акзаптой через .NET коннектор. 
		
		
		
		
		
		
		
	Не совсем напрямую - то есть есть библиотека, предоставляющая доступ почти ко всем методам интерфейса AxaptaRecord, а я уже зову эти методы. Если мне нужно что-то чего нет в библиотеке, эти вызовы добавят. Нужно по номеру найти SO, затем удалить все его детали. Спасибо!  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если имеется в виду, что все это "добро" работает через Axapta ComConnector (Business Connector), то есть несколько вариантов. 
		
		
		
		
		
		
		
	1) У объектов интрефейса Axapta ComConnector есть метод Call() который вызывает методы соответствующих объектов. Раз есть ссылка на объект интерфейса IAxaptaRecord, то в его методе Call() надо просто вызвать метод Delete. Правда, предварительно придется организовать перебор записей через метод ExecuteStmt(). Либо объекта IAxaptaRecord, либо объекта IAxapta 2) В методе IAxapta::ExecuteStmt() можно указывать не только команды select, но и команды delete_from. Т.е. вполне можно одной командой удалить все записи, удовлетворяющие определенному условию. 3) Наконец, можно в самой Axapta сделать статический метод, который будет выполнять нужные действия и вызывать этот метод через IAxapta::CallStaticClassMethod() или IAxapta::CallStaticRecordMethod() в зависимости от того, к чему "прицеплен" статический метод.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			.NET и COM коннекторы почти идентичны в плане API, мы ходим через .нет. 
		
		
		
		
		
		
		
	Ваш 2) мне нравится больше всего, спасибо! 3) не пройдет потому что это должно работать в любой инсталляции, мы не владеем Акзаптой а пристраиваемся к ней сбоку. А вот как организовать 1) я не совсем представляю, что, просто найти нужные записи и удалять в цикле пока не вылезет исключение? Вроде метод Found не отражает удаление, хотя я могу и ошибаться?  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
X++: select salesLine where salesLine.SalesId == salesId; while (salesLine) { salesLine.delete(); next salesLine; } Собственно в Help это все подробно описано. Вот несколько подправленный пример из Help Example (Visual Basic) PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Еще вопрос: чтобы обновить существующий SO, я нахожу его вызовом метода Find со вторым параметром "истина". А вот сохранять изменения нужно вызовом Save или Update?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я не знаю, что такое метод save(). Видимо, это какой-то специфический метод NET-коннектора. Поэтому могу только дать совет общего плана. 
		
		
		
		
		
		
		
	Идея коннекторов заключается в том, что Вы работаете в собственной среде программирования, но так, как будто Вы работаетет в среде Axapta. Можно сказать, что это некий аналог подключения по ADO или ODBC к внешней базе. Поэтому, если у Вас стоит задача выполнить некую модификацию в Axapta, то и решать эту задачу надо средствами самой Axapta. А потом просто "перевести" этот код в синтаксис коннекторов. Как бы Вы решали задачу модификации в среде Axapta? Ну, очевидно, как-то так: X++: myTab = MyTab::find(myTabId, true); if (myTab) { myTab.field1 = "Новое значение"; myTab.update(); } Example (Visual Basic) PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как бы я решал это в среде Акзапты - представления не имею и не хочу, я не X++ разработчик, среды у меня нет и не надо. 
		
		
		
		
		
		
		
	А за VB код спасибо! Теперь все ясно.  | 
| 
	
 | 
| 
	
	 | 
	
		
  |