![]() |
#2 |
Участник
|
У вас есть 2 пути:
1 - через маркировку записей показывать/скрывать 2 - Сделать форму на временной таблице, показывать/срывать записи через удаление/добавление записей или через фильтры 2ой вариант более надежен, пользователь ничего не поломает. Создаете форму, предположим, на 37 таблице. В свойствах указываете SourceTableTemporary = Yes Первым полем надо сделать +/-. Я бы для этого использовал некое поле в 37, например "Allow Item Charge Assignment". Добавляем на форму в табличную часть PictureBox, в его свойствах указываем Source Expression = "Allow Item Charge Assignment", Bitmap List - 46,47 Затем добавляем поля Тип документа, Номер Документа, Код Товара, Описание, Кол-во При открытии формы необходимо заполнить таблицу данными: Код: Sales.Header.RESET; SalesHeader.SETCURRENTKEY(...); SalesHeder.SETRANGE("Customer No.", 'C00001'); SalesHeder.SETRANGE(...); IF SalesHeader.FINDSET THEN REPEAT Clear(rec); "Document Type" := SalesHeader."Document Type"; "Document No." := SalesHeader."No."; "Line No." := -1; "Allow Item Charge Assignment" := TRUE; INSERT(FALSE); // Никаких тригеров не должно быть! SalesLine.RESET; SalesLine.SETRANGE("Document type", SalesHeader."Document Type"); SalesLine.SETRANGE("Document No.", SalesHeader."No."); IF SalesLine.FINDSET THEN REPEAT Rec := SalesLine; "Allow Item Charge Assignment" := FALSE; Insert(FALSE); UNTIL SalesLine.NEXT = 0; UNTIL SalesHeader.NEXT = 0; Для этого можно использовать еще одно поле 37, на которое предварительно наложили фильтр. Те записи, которые необходимо отобразить, должны будут в этом поле иметь значение, удовлетворяющее фильтру. К примеру, код раскрытия/скрытия может быть примерно следующим: Код: IF "Line No." <> -1 THEN EXIT; Rec2.COPY(Rec); // Rec2 - тоже 37 RESET; SETRANGE("Document Type", "Document Type"); SETRANGE("Document No." "Documnt No."); SETFILTER("Line No.", '>0'); IF FINDSET(TRUE) THEN REPEAT "Поле Видимости" := NOT Rec2."Allow Item Charge Assignment"; MODIFY; UNTIL NEXT = 0; Rec.COPY(Rec2); "Allow Item Charge Assignment" := NOT "Allow Item Charge Assignment"; MODIFY; CurrForm.UPDATE(FALSE); |
|
|
За это сообщение автора поблагодарили: mira (1). |