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