|  22.11.2019, 17:34 | #1 | 
| Участник | UserInfo 
			
			Новое поле в новое таблице связываю с UserInfo по полю name Но выходит ошибка: Значение "" в поле "ФИО" не найдено в связанной таблице "Данные пользователя". С чем это может быть связано? | 
|  | 
|  22.11.2019, 17:56 | #2 | 
| Участник | 
			
			Смею предположить что ошибка возникает на форме при создании записи, а именно при заполнении руками нового поля? Если так, то связь источников данных вероятнее всего сделано через InnerJoin и при заполнении нового поля руками тем значением которого нет в таблице UserInfo она и ругается. В данном как вариант для этого нового поля надо сделать лукапный метод чтобы значение выбиралось из связанной таблицы, а не вводилось руками.
		 | 
|  | 
|  23.11.2019, 08:49 | #3 | 
| Участник | 
			
			Проверка на корректность вторичного ключа срабатывает даже если подчинённой таблицы нет на форме. Проверка происходит при вводе значения в поле, для которого настроена связь. В свойствах у Relation есть свойство Validate, которое отвечает за эту проверку
		 | 
|  | 
|  23.11.2019, 15:04 | #4 | 
| Участник | 
			
			Связывай таблицы по полю UserId (или Id, не помню точно уже). Это уникальный первичный ключ на UserInfo. Если нужно будет ФИО, ты всегда сможешь его подтянуть. И это будет намного быстрее работать. Я не могу придумать ни одной причины, чтобы делать так, как ты сейчас пробуешь.
		 
				__________________ // no comments | 
|  | 
|  24.11.2019, 20:57 | #5 | 
| Участник | 
			
			У меня и есть лукап.
		 | 
|  | 
|  25.11.2019, 08:56 | #6 | 
| Участник | 
			
			Эта связь уже есть
		 | 
|  | 
|  25.11.2019, 09:46 | #7 | 
| Участник | 
			
			Мда... Тут даже и не понятно с чего начинать... Ликбез по теории реляционных баз данных читать как-то глупо... Ну, для начала, сообщение об ошибке надо понимать буквально. Вот, что написано, то и есть. У Вас в Вашей таблице среди записей есть поле с пустым значением Вашего поля. По этому пустому значению предпринимается попытка найти запись в подчиненной таблице. Ничего не находит, и выводит соответствующее предупреждение. Как так получилось - Вам лучше знать. Ищите, где такая пустота образовалась. Можно, конечно, разными настройками подавить это сообщение, но! Так связь между таблицами не делают. В теории (и практике) реляционных баз данных связь между таблицами осуществляют по специальным полям, на которые накладывают специфические ограничения. Прежде всего, по уникальности. А у таблицы UserInfo поле Name не уникально. Т.е. связь не однозначна Вторая проблема - поле Name может быть в любой момент изменено. Как следствие, Вы потеряете связь. Т.е. совершенно непредсказуемо для пользователя образуется связь с "левой" записью таблицы или наоборот, такая связь пропадет Поэтому, делают следующим образом. 1. В Вашей таблице в обязательном порядке создают поле Id с кодом записи из таблицы UserInfo. 2. Заполнение поля Id 2.1 Если значение поля Name приходит "из вне" системы, то при вводе имени в modifiedField выполняют поиск записи в таблице UserInfo по указанному пользователем имени и программно заполняют поле id В результате имеем 2 поля - значение пришедшие из вне для контроля и код записи справочника Axapta 2.2. Если в Вашей таблице надо просто выбрать запись из таблицы UserInfo, то просто Lookup для выбора Id и отображение поле Name, но уже из таблицы UserInfo 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | |
| За это сообщение автора поблагодарили: GSP (1). | |
|  25.11.2019, 13:31 | #8 | 
| Участник | Цитата: 
		
			Сообщение от Владимир Максимов
			   Мда... Тут даже и не понятно с чего начинать... Ликбез по теории реляционных баз данных читать как-то глупо... Ну, для начала, сообщение об ошибке надо понимать буквально. Вот, что написано, то и есть. У Вас в Вашей таблице среди записей есть поле с пустым значением Вашего поля. По этому пустому значению предпринимается попытка найти запись в подчиненной таблице. Ничего не находит, и выводит соответствующее предупреждение. Как так получилось - Вам лучше знать. Ищите, где такая пустота образовалась. Можно, конечно, разными настройками подавить это сообщение, но! Так связь между таблицами не делают. В теории (и практике) реляционных баз данных связь между таблицами осуществляют по специальным полям, на которые накладывают специфические ограничения. Прежде всего, по уникальности. А у таблицы UserInfo поле Name не уникально. Т.е. связь не однозначна Вторая проблема - поле Name может быть в любой момент изменено. Как следствие, Вы потеряете связь. Т.е. совершенно непредсказуемо для пользователя образуется связь с "левой" записью таблицы или наоборот, такая связь пропадет Поэтому, делают следующим образом. 1. В Вашей таблице в обязательном порядке создают поле Id с кодом записи из таблицы UserInfo. 2. Заполнение поля Id 2.1 Если значение поля Name приходит "из вне" системы, то при вводе имени в modifiedField выполняют поиск записи в таблице UserInfo по указанному пользователем имени и программно заполняют поле id В результате имеем 2 поля - значение пришедшие из вне для контроля и код записи справочника Axapta 2.2. Если в Вашей таблице надо просто выбрать запись из таблицы UserInfo, то просто Lookup для выбора Id и отображение поле Name, но уже из таблицы UserInfo | 
|  | 
|  25.11.2019, 14:03 | #9 | 
| Участник | 
			
			Можете сюда выложить .xpo формы? Более понятно станет что да как
		 | 
|  | 
|  26.11.2019, 07:12 | #10 | 
| Участник | 
			
			Писали же выше Цитата: 
		
			S.Kuskov	Проверка на корректность вторичного ключа срабатывает даже если подчинённой таблицы нет на форме. Проверка происходит при вводе значения в поле, для которого настроена связь. В свойствах у Relation есть свойство Validate, которое отвечает за эту проверку
		
	 | 
|  |