|  12.07.2006, 13:57 | #1 | 
| Участник | Grid и table - как это все работает? 
			
			Здравствуйте, всем доброго дня или ночи! Я начинающий, поэтому вопросы задаю дурацкие и нудные   ногами не бить, череп не ломать  Мне дали мааленькое но приятное задание, в процессе выполнения которого у меня появилось много больших и неприятных вопросов Прошу ответить на вопросы кто как умеет, а также сделать за меня мое задание   Суть задания: Есть некая форма Form, в ней есть некий Grid, который ссылается на некую таблицу Table. Перед показыванием Table данные неким образом фильтруются. У внутренних заказчиков есть неодолимое желание иметь виртуальное поле для маркирования записей, их сортировки и фильтрации. Т.е. только наличие возможности выставить галки - этого маловасто. 1-е решение я стибрил у основных разработчиков системы - в некоей форме есть такие же виртуальные галки на основе вычисляемого поля. Есть дополнительная табличка Table1, в которую добавляются идентификаторы записей, и значение поля вычисляется по налличию идентификатора в табличке. НО! галки в этом решении не фильтруются и не сортируются. 2-е решение заключается в том, чобы галки хранились в табличке Table1. В этом случае галки должны и фильтроваться, и сортироваться. Записи в табличку попадают при нажатии на галку, при этом Grid как бы пользуется результатом сложного запроса и получает записи с галками и без. Вот при этом втором решениии и возникли проблемы. Теперь вопросы и проблемы: 1) Возможно ли сделать так, чтобы табличка Table1 была ВРЕМЕННОЙ? Спрашиваю потому, что мне кажется, что собрать результат запроса частично с сервера и частично с локального ящика будет сложновато. Тем более - решить вопрос о том, куда какие данные перенаправить после задания значений в полях. 2) Каким образом возможно обеспечить связывание табличек Table и Table1? Relation в Table1? Или только Table? Или JoinSource в ссылках на таблички в форме (кстати, JoinSource для Table уже занят) ? Да, если она временная, то тут поле "UserId" не нужно, но вот если она НЕ временная - тут уже простой связкой не отделаться, мне кажется... 3) Какие события на каком из объектов формы следует переопределить для того, чтобы обеспечить попадание новых записей в Table1? Спрашиваю потому, что modified или clicked для эл.уп. "checkbox" срабатывает через раз... И вообще галка ставится только одна и непойми как... В общем, вот такие вопросы, господа программисты. Надеюсь на помощь консультативного характера  . Последний раз редактировалось Ихъ бин программикеер; 12.07.2006 в 14:21. | 
|  | 
|  12.07.2006, 14:33 | #2 | 
| Moderator | 
			
			По-моему, самое оптимальное решение - добавить поле с этими самыми галками в Table, а не Table1. И ничего больше не надо программить.
		 
				__________________ Андрей. | 
|  | 
|  12.07.2006, 14:36 | #3 | 
| Administrator | 
			
			Часто в аналогичных ситуациях когда хотят некую фитюльку, а Аксапта не разрешает ее сделать "в лоб" - решать приходиться комплексно - как корректируя изначальную постановку задачи, так и дорабатывая самостоятельно. В Вашем случае возможно 3 варианта: 1-й и 2-й - это как Вы описали, причем в первом варианте не работает сортировка, а 2-й вариант - чреват сложностями. 3-й вариант - это добавление поля непосредственно в таблицу Table. С этими вариантами со словами: "Аксапта предлагает на выбор 3 варианта - без сортировки, с глюками и с дополнительным полем" имеет смысл обратиться к постановщику задачи - чтобы он выбрал (если для него это принципиально). "Скрещивание" плюсов одного варианта и другого - не допускается 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  12.07.2006, 14:39 | #4 | 
| NavAx | Цитата: 
		
			Сообщение от Ихъ бин программикеер
			
			 1) Возможно ли сделать так, чтобы табличка Table1 была ВРЕМЕННОЙ? Цитата: 
		
			Сообщение от Ихъ бин программикеер
			
			 3) Какие события на каком из объектов формы следует переопределить для того, чтобы обеспечить попадание новых записей в Table1? Спрашиваю потому, что modified или clicked для эл.уп. "checkbox" срабатывает через раз... И вообще галка ставится только одна и непойми как... 
				__________________ Isn't it nice when things just work? | 
|  | 
|  12.07.2006, 14:41 | #5 | 
| NavAx | Цитата: 
		
			Сообщение от Dron AKA andy
			
			 По-моему, самое оптимальное решение - добавить поле с этими самыми галками в Table, а не Table1. И ничего больше не надо программить. 
				__________________ Isn't it nice when things just work? | 
|  | 
|  12.07.2006, 14:42 | #6 | 
| Участник | 
			
			Если я решу проблему путем модификации Table, мои действия не одобрят   . Я бы, вероятно, так и поступил, но, к сожалению или к счастью (в данном случае - скорее к сожалению), одно из условий внедрения доработок - минимальность изменений структуры данных. Т.е. добавлять свои таблицы допускается, модифицировать формы/отчеты в слое usp - тоже, а вот модификация структуры оригинальных таблиц - это дело весьма, так сказать, нежелательное вследствие потенциальных проблем при накатывании новой версии. По поводу индивидуальности галок для сессии - конечно, есть такая необходимость, она решается путем добавления еще одного поля, "UserId". Последний раз редактировалось Ихъ бин программикеер; 12.07.2006 в 14:47. | 
|  | 
|  12.07.2006, 14:52 | #7 | 
| Участник | Цитата: 
		
			Сообщение от macklakov
			
			 можно сделать временный аналог Table, с добавочным полем Цитата: 
		
			Сообщение от macklakov
			
			 Где-то ты напортачил, вслепую не скажешь. См. "Сопопставление открытых проводок"   | 
|  | 
|  12.07.2006, 14:52 | #8 | 
| NavAx | 
			
			При таких ограничениях, вижу только 2 варианта: 1) Table1 на SQL сервере, на форме сложный запрос 2) Временная таблица, почти полностью аналогичная Table Цитата: 
		
			Сообщение от Ихъ бин программикеер
			
			 А вот теперь глупый вопрос - "что это такое? и при чем тут оно?"   
				__________________ Isn't it nice when things just work? Последний раз редактировалось macklakov; 12.07.2006 в 14:55. | 
|  | 
|  12.07.2006, 14:55 | #9 | 
| Moderator | Цитата: 
		
			Сообщение от macklakov
			
			 А если набор галочек должен быть индивидуальным для сессии? 
				__________________ Андрей. | 
|  | 
|  12.07.2006, 15:06 | #10 | 
| Роман Долгополов (RDOL) | 
			
			Технически аксапта позволяет сделать соединение постоянной и временной таблицы, но это чревато проблемами производительности такого решения, ибо содениение будет делать не сервер бд, а сама аксапта и для его выполенения содержимое Table будет сначала считано полностью. Если у вас в Table записей немного, то не все так страшно, если же это, например, таблица проводок, то форма может открываться часами Посмотрите вот эти темы Про вывод данных нескольких датасорсов в один грид Не корректно отображаюстя данные Про всякие хитрые условия фильтрации Оптимизация запроса - ranges Про сортировку джойненых датасорсов Сортировка в гриде | 
|  | 
|  12.07.2006, 16:01 | #11 | 
| Участник | 
			
			В результате, я все-таки решил пересмотреть первоначальную постановку задачи и сделать не так, как предлагают, а так, как это наименее заморочно   . Теперь постановка выглядит примерно как "Ввести на основе платежного поручения", вкладка "Выбранные заявки" (это "Журнал банковских выписок/Строки") с точностью до наоборот - надо вывести на вкладке не те, которые отмечены, а те, которые не отмечены  . В связи с этим, думаю, тему стоит закрыть. Всем большое спасибо за участие в обсуждении! | 
|  |