31.03.2003, 17:16 | #1 |
Участник
|
функция STRSUBSTNO
Общая задача в следующем:
необходимо просмотреть товарные операции по менеджеру. Т.е. например какое кол-во того или иного товара(из учтенных заказов покупки продажи, кредит нот, возвратов клиентов и поставщикам,..) прошло через определенного менеджера.И допустим в разрезе какого нибудь ГТД надо все это видеть. Для получения подобной информации понятно - лучше использовать таблицу Item Ledger Entry (товарные операции) Код менеджера (поле "Salespers./Purch. Code") сохраняется только в таблице "Value Entry". В таблице "Item Ledger Entry" (которая используется для формирования необходимого отчета) данная информация не сохраняется. Но таблица "Value Entry" связана с таблицей "Item Ledger Entry" через поле "Item Ledger Entry No.". Путь реализации: 1) Наложить фильтр на таблицу "Value Entry" 2) Составить фильтр из значений поля "Item Ledger Entry No." в полученной выборке. 3) Наложить этот фильтр(пункт 2) на таблицу "Item ledger Entry" 4) Наложить фильтр ГТД на таблицу "Item ledger Entry" 4) Получить необходимое количество. Кусок кода из реализации данной задачи: -//- FilterString := FilterString + FORMAT(ValueEntry."Entry No.") //для простоты пока так IF STRLEN(FilterString) >= MAXSTRLEN(FilterString) - 15 THEN BEGIN IF ValueEntry.GETFILTER("Entry No.") <> '' THEN BEGIN ValueEntry.SETFILTER("Entry No.", STRSUBSTNO('%1|%2', ValueEntry.GETFILTER("Entry No."), FilterString)); END ELSE BEGIN ValueEntry.SETFILTER("Entry No.", FilterString); END; FilterString := '' END; -//- НО есть одна проблема: естественно что стоимостных операций может быть очень большое количество. И в конечном итоге строка кода ValueEntry.SETFILTER("Entry No.", STRSUBSTNO('%1|%2', ValueEntry.GETFILTER("Entry No."), FilterString)); дает ошибку на ф-цию STRSUBSTNO - что типа не могу такую сформировать.(скрин в аттаче) У кого нибудь есть какие-нибудь идеи по поводу реализации подобной проблемы? |
|
01.04.2003, 11:18 | #2 |
NavAx
|
По-моему, выбран не самый лучший путь решения задачи.
Попробую предложить свои варианты. 1)Действовать не через Item Ledger Entry, а через Sales Shipment Lines и Return Receipt Lines(строки учтенных заказов и возвратов). В Sales Shipment Header и Return Receipt Header коды менеджеров обычно вбиваются. Соответственно, составляем отчет : Sales Shipment Header (на него можно положить фильтр по менеджеру) Sales Shipment Lines(связка по Document No.) Return Receipt Header Return Receipt Line (аналогично) Пробегая по ним, заполняем временную таблицу(например хорошо подойдет Sales Shipment Lines). А потом, например, в целом, можно уже спокойно анализировать полученную временную таблицу по нужным аналитикам(код товара, например) 2)Действовать всё же через Value Entry и Item Ledger Entry Опять же, делаем репорт Value Entry (фильтр по менеджеру) Item Ledger Entry (связка по "Item Ledger Entry No.") Создаем временную таблицу Item, например, и для каждого товара, который встречаем, делаем либо Insert(если такого товара еще нет) и записываем туда кол-во товара из Item Ledger Entry, либо делаем Modify(если такой товар уже встречался) и увеличиваем кол-во товара на число из Item Ledger Entry. Далее, в том же целом, мы можем спокойно вывести результаты из созданной временной таблицы. |
|
01.04.2003, 11:30 | #3 |
Участник
|
втрой вариант мне кажется более разумный.в первом - большое количество таблиц надо перебирать(информация как о покупках так и о продажах, + еще производство).
спасибо за помощь. |
|