|  06.04.2015, 15:06 | #1 | 
| Участник | Поиск по таблице 
			
			Выделена строка нужно найти есть ли в таблице (в гриде(RContractTable)) запись где например № договора равен № договора выделенной строки. RContractTable.RContractNumber дает значение выделенной строки а как обратится ко всем другим не знаю. | 
|  | 
|  06.04.2015, 15:31 | #2 | 
| северный Будда | 
			
			Уточните, что именно вам надо - просто узнать, если ли другие договоры с таким же номером, выделить их в гриде, запустить по ним какую-то обработку, ещё что-то. Если первое, то достаточно повесить на гриде кнопку, которая будет считать количество строк с номером договора, соответствующим таковому для активной строки грида. Если больше 1, то есть.
		 
				__________________ С уважением, Вячеслав | 
|  | 
|  06.04.2015, 15:40 | #3 | 
| Участник | 
			
			а как сделать этот подсчет? Мне надо если есть строка где номер договора, имя контрагента, и номер подразделения совпадают то тогда значит что это дубликат и для названия этого документа добавить дату подписания. Да просто узнать есть ли договор дубликат. | 
|  | 
|  06.04.2015, 16:07 | #4 | 
| северный Будда | 
			
			это вам надо не строки выделять тогда, а разово пробежаться джобом по всем договорам в поисках дубликатов. самый простой вариант - сделать цикл с группировкой по нужным уникальным полям и подсчётом Count(RecId). А внутри цикла смотреть - если этот count больше 1, то есть дубликаты. Тогда надо запустить второй цикл (по дубликатам), в котором их коды будут исправляться на нужные. Да, и совсем не помешал бы уникальный индекс на таблице. Во избежание дубликатов на будущее. 
				__________________ С уважением, Вячеслав | 
|  | 
|  06.04.2015, 16:26 | #5 | 
| Участник | 
			
			спасибо наоборот дупликаты нужны и моя прога генерирующая уникальное название на них не работает правильно, для этого и нужен поиск чтобы для дубликата добавочно довить дату который в названиях всех других не используются
		 | 
|  | 
|  06.04.2015, 16:26 | #6 | 
| Участник | 
			
			А как это все будет выглядеть с точки зрения пользователя? Что в этот момент делает пользователь? Выбирает договор для некоего документа или создает новый договор? "Добавить дату подписания" куда? В договор? А если и "дата подписания" совпадет?
		 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  07.04.2015, 13:02 | #7 | 
| Участник | 
			
			Пользователь в моем случае это человек который добавляет скан копии в Search а затем вписывает айди договора в аксапту. Моя программа, а точнее просто кнопка, при выборе договора и нажатии на кнопку вылазиет диалог выбора файла там пользователь выбриает отсканированый договор после чего жмет окей и происходит переименнование документа по образцу "№подразделение_№договора_Контрагент" затем документ помещается в серч посредством апи функций и возвращает его айди в нужную ячейку. Некоторым контрагентам удобней если номер договора меняться не будет даже если это новый договор, но в этом случае в серч он наложится на старый так как совпадет уникальное обозначение, поэтому было принято добавлять даты подписания в конце договора. Я программист на пол ставки) сказали сделать так а как сделать не сказали) с аксаптой работую только в рамках данной задачи, никогда до этого не работал с ней да и в дальнейшем врятли буду) | 
|  | 
|  07.04.2015, 14:36 | #8 | 
| Участник | Цитата: 
		
			Сообщение от pitersky
			   Уточните, что именно вам надо - просто узнать, если ли другие договоры с таким же номером, выделить их в гриде, запустить по ним какую-то обработку, ещё что-то. Если первое, то достаточно повесить на гриде кнопку, которая будет считать количество строк с номером договора, соответствующим таковому для активной строки грида. Если больше 1, то есть. | 
|  | 
|  07.04.2015, 15:18 | #9 | 
| Участник | X++: ttsbegin; while select forupdate RContractTableUpdate where RContractTableUpdate.RContractNumber == RContractTable.RContractNumber && RContractTableUpdate.RecId != RContractTable.RecId { ... ... RContractTableUpdate.update(); } ttscommit; | 
|  | 
|  07.04.2015, 15:26 | #10 | 
| Участник | Цитата: 
		
			Сообщение от Sy4a
			   Пользователь в моем случае это человек который добавляет скан копии в Search а затем вписывает айди договора в аксапту. Моя программа, а точнее просто кнопка, при выборе договора и нажатии на кнопку вылазиет диалог выбора файла там пользователь выбриает отсканированый договор после чего жмет окей и происходит переименнование документа по образцу "№подразделение_№договора_Контрагент" затем документ помещается в серч посредством апи функций и возвращает его айди в нужную ячейку. Некоторым контрагентам удобней если номер договора меняться не будет даже если это новый договор, но в этом случае в серч он наложится на старый так как совпадет уникальное обозначение, поэтому было принято добавлять даты подписания в конце договора. Я программист на пол ставки) сказали сделать так а как сделать не сказали) с аксаптой работую только в рамках данной задачи, никогда до этого не работал с ней да и в дальнейшем врятли буду) Кстати, можете в конец имени файла добавлять RContractTable.RecId выбранной записи. Уникальность обеспечена, а то, что для пользователя это "мусор" не так уж и принципиально. 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  07.04.2015, 15:41 | #11 | 
| Участник | Цитата: 
		
			Сообщение от Владимир Максимов
			   Я правильно Вас понял, что цель всего этого сформировать уникальное имя файла из реквизитов договора? Так может, просто всегда добавлять в конец дату подписания и не заморачиваться поиском? Кстати, можете в конец имени файла добавлять RContractTable.RecId выбранной записи. Уникальность обеспечена, а то, что для пользователя это "мусор" не так уж и принципиально. А покачто попробую как написал Kiot, точнее уже завтра, смена заканчивается. | 
|  | 
|  07.04.2015, 16:59 | #12 | 
| Участник | Цитата: 
		
			Сообщение от Sy4a
			   Это то да можно и для всех пихать только дело уже в том что в серче хранятся сотни договоров у которых ещё может быть под сотни версий и если сделать так то все старые просто затеряются. Одним словом это Завод). А покачто попробую как написал Kiot, точнее уже завтра, смена заканчивается. Вы ведь именно это и собираетесь сделать, просто добавляете окончание не для всех новых файлов, а для некоторых. Что изменится, если будете добавлять для всех? 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  08.04.2015, 12:32 | #13 | 
| Участник | 
			
			изменится то что документы добавляются в серч по обозначению а обозначение это название файла если название изменится то они будут добавляться как новые договора а надо чтобы накладывались на старые. Просто я сделал так что ищется договор в серче по обозначению если обозначение находится то значит это тот же договор и ему добавляется новая версия если не находится то создается как новый которому присваивается новый айди.
		 | 
|  | 
|  08.04.2015, 12:52 | #14 | 
| Участник | 
			
			Пишет переменная RContractTableUpdate не объявлена... как её объявить или какой класс присвоить?
		 | 
|  | 
|  08.04.2015, 13:01 | #15 | 
| Участник |   Цитата: RContractTable RContractTableUpdate; А вообще в соседнем посте я отписывался, Вам стоит начать с пары книг: 1. Авторы Еременко и Шашков, книга по ax 3.0. На форуме часто про неё пишут, в ней всё подробно и понятно расписано, в том числе синтаксис X++ - сам когда-то с неё начинал. 2. SQL http://www.pmbk.ru/lister/016/1/index.shtml она писалась ещё в конце 80х, начале 90х, там предельно просто всё написано - думаю она Вам тоже нужна. | 
|  | 
|  08.04.2015, 14:16 | #16 | 
| Участник | Цитата: 
		
			Сообщение от Sy4a
			   изменится то что документы добавляются в серч по обозначению а обозначение это название файла если название изменится то они будут добавляться как новые договора а надо чтобы накладывались на старые. Просто я сделал так что ищется договор в серче по обозначению если обозначение находится то значит это тот же договор и ему добавляется новая версия если не находится то создается как новый которому присваивается новый айди. У Вас есть старые договора (старые записи таблицы RContractTable), к которым уже есть файлы в хранилище. Теперь создали новую записи в таблице договоров с тем же номером. Как Вы определите, что речь идет о новом договоре, к которому файлы еще не прикреплялись, а не о старом, где надо выполнить замену? Предположим, добавили файлы к обоим договорам. Теперь внесли изменение в файл по одному из договоров. Как Вы определите для какого из этих договоров надо добавлять некое окончание к имени файла для его поиска (дату подписания), а для какого - нет? 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  08.04.2015, 14:43 | #17 | 
| Участник | 
			
			Уловил о чем ты. На данный момент имена файлов пишется вручную и люди которые сканят эти договора знают че к чему и дописывают где надо дату подписания, а заносят их другие люди и в поиске вбивают номер и по дате смотрят в какой внести (просто знают что если есть дата то это дубликат). После завершения того что я делаю эти же люди будут заносить их и в аксапту и соотвественно в серч посредством нажатия всего одной кнопки и соответственно они будут знать что это за договор. Процесс идет если я не ошибуюсь следующим образом: Сначало создается договор в аксапте по всем правилам и тд, затем они идут его утверждать с начальником или ещё с кем (имею виду договор на бумаге), затем если утвержден его сканируют и его добавляют в серч и его айди заносят в аксапту. Если бы это делал левый человек так скажем то ты прав он ни как не узнает какой это договор и с какого из них брать дату, точнее в какой добавить) | 
|  | 
|  08.04.2015, 14:44 | #18 | 
| Участник | 
			
			Повторю ещё раз - ЭТО ЗАВОД) тут всегда всё через одно место делается.)
		 | 
|  | 
|  08.04.2015, 15:19 | #19 | 
| Участник | Цитата: 
		
			Сообщение от Sy4a
			   Уловил о чем ты. На данный момент имена файлов пишется вручную и люди которые сканят эти договора знают че к чему и дописывают где надо дату подписания, а заносят их другие люди и в поиске вбивают номер и по дате смотрят в какой внести (просто знают что если есть дата то это дубликат). После завершения того что я делаю эти же люди будут заносить их и в аксапту и соотвественно в серч посредством нажатия всего одной кнопки и соответственно они будут знать что это за договор. Процесс идет если я не ошибуюсь следующим образом: Сначало создается договор в аксапте по всем правилам и тд, затем они идут его утверждать с начальником или ещё с кем (имею виду договор на бумаге), затем если утвержден его сканируют и его добавляют в серч и его айди заносят в аксапту. Если бы это делал левый человек так скажем то ты прав он ни как не узнает какой это договор и с какого из них брать дату, точнее в какой добавить) Вообще-то, подобные задачи решаются по другому. Просто в таблице RContractTable (или в таблице связи, если на один договор может быть несколько файлов) тупо записывается имя файла. И совершенно не важно, есть дубль договора или нет. Главное, чтобы имя файла было уникально во ВСЕЙ таблице. Вот для обеспечения этой уникальности, старые имена записываются "как есть" (они уже уникальны), а для всех новых файлов в конец имени записывается дата подписания. В крайнем случае, можно выполнить массовое переименование старых файлов с добавлением даты в конец имени. 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  08.04.2015, 16:04 | #20 | 
| Участник | 
			
			На мысль на толкнул. Добавлю условие сравнения даты подписания текущей с найдеными если она  новее любой из базы то переименовать если же самая старая то не добавлять дату. А так я сделал как написал Kiot и вроде меня устраивает)
		 | 
|  |