| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Определить из какой формы заполняется таблица.
			 
			
			Добрый день, 
		
		
		
		
		
		
		
	есть ли возможность определить с какой именно формы заполняется таблица из метода самой таблицы? Пример: SalesLine из формы SalesTable, a также ProjSalesItemReq. Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сделать то можно, но если посмотрите в стандарте вы таких мест не найдёте. 
		
		
		
		
		
		
			Например вот здесь взять информацию X++: info(con2str(xSession::xppCallStack())); Лучше в метод добавить BaseEnum. 
				__________________ 
		
		
		
		
	Энергия молодых и неравнодушных способна изменить мир к лучшему.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: dynamax (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			еще PurchTable.dataSource().functionObject() но это очень плохая практика - а зачем это нужно вам?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: dynamax (1). | |
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Раз у вас появилась в формулировке объект форма, то логичнее предположить что вам метод нужно реализовывать выше. Выделите часть это кода в отдельный метод и повести его на таблицу. Перекройте на datasourse формы метод validate на нужном поле и до super вызывайте его. 
				__________________ 
		
		
		
		
	Энергия молодых и неравнодушных способна изменить мир к лучшему.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Ну, в общем случае, чисто как вариант, можно завести ещё поле-признак в таблице (можно с SaveContents = No) и заполнять его на нужных формах в датасорсе. 
		
		
		
		
		
		
			А в методах таблицы уже его проверять. Если, конечно, нет уже готовых смысловых полей, которые можно использовать аналогично. 
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: dynamax (1). | |
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если заводить такое поле-признак, надо еще, чтобы одна из форм не могла отредактировать запись, которую можно отредактировать в другой из форм. Иначе получится противоречие. Так что признак не может быть с SaveContents = No
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
			
			 Цитата: 
	
В описанной вами постановке - нет не может. ![]() В общем случае таких ограничений может не быть. Или могут быть обратные. Не вижу повода для дискуссии.... 
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не нашел такой функции, может это не в моей версии (у меня 4ка)? Но зато есть PurchTable.dataSource().formRun().
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
В постановке смешиваются разные уровни абстракции. Полностью согласен с miklenew: Цитата: 
	
		
			Сообщение от miklenew
			 
 
			validateField это метод объекта таблица. 
		
	Раз у вас появилась в формулировке объект форма, то логичнее предположить что вам метод нужно реализовывать выше. Выделите часть это кода в отдельный метод и повести его на таблицу. Перекройте на datasourse формы метод validate на нужном поле и до super вызывайте его. если у вас возникла хотелка при проверке учитывать данные из другого уровня абстракции, то это первый признак, что вы не все данные храните в таблице, что некоторые жизнено важные данные находятся где-нибудь еще. Что чревато нарушением целостности данных. ============= Кроме того, не забывайте о механизме проверки целостности данных. Он запустит validateField для каждой записи. Теперь представьте, что данные, введенные в форме проверяются отдельно без формы, совсем по другой ветке алгоритма. Вам точно нужны эти заморочки? ============= Кроме того, не забывайте о механизме экспорта/импорта данных, AIF, доступ из внешних систем. Все этим механизмы также могут запустить validateField. ============= Кроме того, не забывайте о трехуровневости Аксапты. Форма работает и живет на клиенте. validateField может выполняться на сервере. ============= Вывод: в validateField таблицы используйте только данные из самой таблицы и/или из связанных таблиц. Ни в коем случае не используйте данные, которые находятся вне базы данных (кэш сессии, локальные переменные формы и т.п.)  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| Теги | 
| интерфейс, программно, таблица, форма | 
| 
	
	 | 
	
		
  |