Страница 1 из 1

Оборотная ведомость с группировкой по внешн.классиф. ТМЦ

Добавлено: 10 сен 2005, 00:08
Юра
(Г 5.85.02 первасив)
Задача:
Один товаровед(снабженец) отвечает за снабжение завода конкретными МЦ. По разным ТМЦ одной группы МЦ могут работать несколько товароведов, один товаровед работает по МЦ разных групп разных складов. Необходимо получить оборотку в разрезе "товаровед/группа" в суммовом выражении, сравнить с нормативом оборотных средств по товароведу, вычислить отклонение остатка на конец месяца в суммовом и процентном отношении.
Как я решал это:
Создан и заполнен внешний классификатор "Товаровед"(Снабженец) к каталогу МЦ. В поле "наименование" - фамилия товароведа, в поле "Код" - норматив оборотных средств (поле "Код" внешнего классификатора можно ведь использовать как просто дополнительный строковый пользовательский реквизит внешнего классификатора).

Настроил универсальную складскую ведомость типа оборотки с участием внешнего классификатора МЦ (наименование, остат., приход, расход, ост; группировка "Товаровед-группа МЦ".
Все хорошо, устраивает...почти.
Но как колонки "Норматив", "Отклонение", "% Отклонения" вычислить и вывести по товароведу?
Отклонение= Сумма(остаток_на_конец)-StrToInt(норматив),
Процент=Отклонение/Норматив*100

Куда пихнуть вычисления? Насколько понимаю, после настройки можно внести изменения в текст отчета (прототип oborcfg_def, "Параметры колонок отчета" -> "Редактировать")
Подскажите, пжалста, что и в какое место надо вставить в сгенерированную форму, чтоб получить желаемое? Что-то в роде

Код: Выделить всё

TxoGetExClassName2('KatMC','Товаровед', ???) или
TxoGetExClassName2('KatMC',46, ???? ) 
?
Заранее благодарен.

Добавлено: 12 сен 2005, 11:12
edward_K
насколько помню, там идет компиляция формы на ходу.
текст формы храниться в мемо поле - вот туда то и нужно добавлять линкованную - по кнопке редактировать форму в настройе этого отчета.

Добавлено: 12 сен 2005, 12:43
Юра
Да я об этом и говорю! Подозреваю, что надо вставить куда-то в текст формы

Код: Выделить всё

.fields
...
 TxoGetExClassCode1('katmc',46,Nrec_группировки) //Норматив
...
.endfields
как писал Seybukan
http://www.tyumbit.ru/gal_forum/viewtopic.php?t=2128

но в какое место - не знаю! (ну не силен я в отчетах Г. Crystal Report - это могу. Даже в FoxPro для DOS проектирование отчетов было визуальным. А в Г - как в позапрошлом веке... Но это уже другая история)

Добавлено: 12 сен 2005, 20:57
Seybukan
Просто добавь группировку по МЦ и там укажи свой внешний классификатор.

Добавлено: 12 сен 2005, 21:52
Юра
2 Seybukan - так я и сделал! (устало :???: Юра писал(а):Создан и заполнен внешний классификатор "Товаровед"(Снабженец) к каталогу МЦ.
...
Настроил универсальную складскую ведомость (Складской учет => Отчеты => Универсальная складская ведомость) типа оборотки с участием внешнего классификатора МЦ (1.наименование, 2.остат.на начало, 3.приход, 4.расход, 5.остаток на конец; группировка "Товаровед-группа МЦ".
.
Перефразирую вопрос - хочу в отчет вставить еще одну колонку - 6."Код" внешнего классификатора.

В КАКОМ МЕСТЕ (с отчаянием и почти слезами :o ) ОТЧЕТА ЕГО ВСТАВИТЬ?

Код: Выделить всё

.Linkform 'OborCfg_Def 01' prototype is 'OborCfg_Def'
.NameInList 'Складской отчет N 01'
.Fields
 Наименование_отчета
 If ( Тип_отчета=0, 'на '+string(дата_начальная), 'c '+string(дата_начальная)+' по '+string(дата_конечная))
 фильтр1
 фильтр2
...
 
 Тип_группировки
 NRec_группировки
 Наименование_группировки
 КолонкаN1  //Остаток на начало месяца
 КолонкаN2  //Приход
 КолонкаN3  //Расход
 КолонкаN4  //Остаток на конец месяца
 КолонкаN5  //Норматив
 КолонкаN6  //Отклонение
.Endfields
 NRec = ^ 
.[H SKIP
Лист @NP@
...
вместо колонки "КолонкаN6" писал

Код: Выделить всё

  TxoGetExClassName1(KatMC,46,NRec_группировки) 
не помогает - пусто в колонке!
До решения - один шаг! ... или год... световой... как в Галактике...
П...о...м...о...г...и...т...е...

Добавлено: 13 сен 2005, 17:52
edward_K
где же вы ее компилите?
в сапорте нельзя!!!
заходите в настройку полей.
кнопки генерить и редактировать видите?
жмете редактировать - вот суда и вставляйте дополнительно присоединенку, при выходе спросит скомпилировать(вообще компиляция идет в фоновом режиме каждый раз).

Добавлено: 13 сен 2005, 18:22
Юра
edward_K писал(а):где же вы ее компилите?
Да не саппорте я компилю, на месте, там же, в настройке полей! Я привел текст, который автоматически сгенерился! Там и хочу его поправить, вставить дополнительную присоединенку! Вопрос мой и заключается в том КАКУЮ ПРИСОЕДИНЕНКУ И В КАКОЕ МЕСТО ВСТАВИТЬ!
---
(верю, что когда в светлом будущем, все срастется, я узнаю какую присоединенку влепить и куда, все будет работать, до тех пор, пока другой лузер по злобе или недомыслию не нажмет кнопку "сгенерить", все опять сломается)

Добавлено: 13 сен 2005, 18:25
Юра
Опять же, дилемма, что лучше:
1.Лепить присоединенку -
SELECT KATMC.NAME, EXCLASSSEG.NAME, exclassseg.value
FROM EXCLASSSEG, EXCLASSVAL, KATMC
WHERE ((EXCLASSVAL.CREC == KATMC.NREC AND EXCLASSVAL.CCLASSSEG == EXCLASSSEG.NREC))
AND (EXCLASSVAL.WTABLE=1411) AND (EXCLASSVAL.CLASSCODE=46);

2.Использовать фукнцию
TxoGetExClassCode1('katmc',46,???)

Добавлено: 14 сен 2005, 12:09
edward_K
чтобы использовать функции с TXO либо открой какой нибудь фейс(например книгу бухпроводок)
либо выполни
InitServTxo(0);

в конце
DoneServTxo
вообще попробуй для начала по Ctrl+F4
if(initservtxo(0),TxoGetExClassCode1('katmc',46,???),'???')
очевидно одно - через вьюху на порядок быстрее.

Добавлено: 14 сен 2005, 13:19
Юра
вообще попробуй для начала по Ctrl+F4
if(initservtxo(0),TxoGetExClassCode1('katmc',46,???),'???')
Попробовал

Код: Выделить всё

if(initservtxo(0),TxoGetExClassCode1('katmc',46,4612107425706361312),222)
где 4612107425706361312 - нрек записи в катмц, где точно есть классификатор,
222 выведет, если не инициализировался сервер ТХО.
выдает '0' - как его интерпретировать?
---
Либо я дурак, либо в кроссворде ошибка!

Добавлено: 14 сен 2005, 14:59
edward_K
функция вернет
ExClassSeg.Value
46 должго соотв CalssCode в классификаторе.

Добавлено: 14 сен 2005, 20:21
Юра
:sad:

Код: Выделить всё

- Ты в баню?
- Нет, я в баню!
- А-а-а! А я думал - в баню!
Попробовал (Ctrl+F4)
Код:
if(initservtxo(0),TxoGetExClassCode1('katmc',46,4612107425706361312),222)

где:
4612107425706361312 - нрек записи в катмц, где точно есть классификатор,
46 - код внешнего классификатора, подвязанного к таблице катмц (1411),
должен вывести результат 222, если не инициализировался сервер ТХО, иначе должен вывести значение соответствующего ClassCode

выдает -'0' ! Как его интерпретировать? что не правильно?