Metoda Wczytaj dla składników kompletu wymaga indeksu elementu w kolekcji a nie identyfikatora towaru z bazy danych.
cyt. z helpa:
Metoda Wczytaj
Wczytuje obiekt do kolekcji.
Składnia
wyrazenie.Wczytaj(id)
wyrazenie
Wymagane wyrażenie, które zwraca
Parametry
id
Variant. Wartość identyfikująca obiekt. Może nią być identyfikator obiektu z bazy danych lub indeks danego elementu w kolekcji.
Uwagi
Lista kolekcji dla których argument tej metody jest indeksem elementu w kolekcji:
- IWcPozycje
- KhCechy
- KhEmaile
- KhPracownicy
- KhRachunki
- KhTelefony
- PrCechy
- PrCzlonkowieRodziny
- PrRachunkiBankowe
- PrZatrudnienia
- SuPozycje
- SuPozycjeFunduszePromocji
- SuPozycjeNiezgodnosciFM
- SuPozycjeVat
- TwCechy
- TwKodyKreskowe
- TwMiary
- TwNarzuty
- TwSkladniki
- TwZakupy
- TwZdjecia
tak więc raczej trzeba iterować, jeśli chce się to robić Sferą i zgodnie z zaleceniami.
Chociaż pewnie trafiliby się odważni, którzy robiliby to bezpośrednio na bazie danych , bez Sfery:
DELETE FROM tw_tw_Komplet where kpl_IdKompletu = ID_KOMPLETU and kpl_IdSkladnika = ID_SKLADNIKA
Na pewno byłoby to o wiele szybsze , ale czy bezpieczne - w bieżącej wersji pewnie tak, ale kto wie czy po kolejnych upgradach Subiekta GT również.
Spróbowałbym jeszcze wyszukiwać tego indeksu składnika w kolekcji robiąc zapytanie, bo w tabeli tw_Komplet wewnątrz jednego kompletu
kolejność składników powinna być posortowana po kpl_Id rosnąco.
Więc takim zapytaniem pobierałbym indeks składnika z kolekcji:
select A.Lp
from
(SELECT convert(INT,ROW_NUMBER() over (order by kpl_Id)) As [Lp],kpl_Id,kpl_IdSkladnik from tw_Komplet WHERE kpl_IdKomplet = ID_KOMPLETU ) A
WHERE kpl_IdSkladnik = ID_SKLADNIKA
ale nie mam czasu , żeby to sprawdzać

,
Jeśli dla kilku prób z kilkudziesięcioskładnikowych kompletów zwróci prawidłowy indeks to można zaryzykować twierdzenie, że to zadziała.
pozdrawiam
Piotr