BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 След.
Помогите разобраться
 
А почему все записи в main.dbf только новые которые появились недавно (у которых ID отсутствует). Можно поле ID сделать числовым и проиндексировать по нему , а значение делать отрицательным например. Тогда на все про все будет уходить не так иж много времени я думаю несколько секунд. Ну если не работали так и проводок не должно появиться за исключением того момента что все без исключения проводки делаются вручную. Теоретически чем больше таких плагинов сделать тем лучше, а потом будет срабатывать не каждое открытие документов, а в соответствии с квантом времени. Я же написал что недостатки есть но они могут быть приемлемы. Хотя Бэст5 наверное лучше - не видел.
Помогите разобраться
 
Не вижу противоречия
Цитата
Сергей Иваницкий пишет:
По поводу уникальных номеров, я бы сделал так:
на вход в документ(которые чаще всего вызываются накладные или заказы и тд и вход в реестр АРМ ГБ)я бы повесил плагин который бы проверял наличие (отсутствие)этих ключей за прошедший период скажем секунд 30 , при этом последнее значение даты + времени и количество записей в main.dbf проверки можно записать в memdat.dbf, ну и при запуске проверять эту запись , если время прошло - проверить последние записи и вписать свой ключ...
воткак-то так.

имеется ввиду проверка последних сведений в main.dbf не обязательно связанных сдокументом.
Подскажите про два InitList()
 
Еще Вопрос временные файлы объявленные как
Код
 cInsDBF1 := TempFile(m->GlobalTmpPath,"DBF")

когда исчезают?
сразу после выполнения плагина или после выхода из бэста?
Подскажите про два InitList()
 
Подскажите про цвет инитлиста.
хотел сделать бирюэовый фон
написал
Код
 aColors:={|| "N/BG"}

вставил 19 параметром а он в промежутках между полями и в незаполненых местах все равно синий.
может как-то не так надо.
Помогите разобраться
 
А я про книгу и пишу просто предлагаю делать присвоение ID не сразу а потом при работе ( вроде как в фоновом режиме)
только не чаще определенного кванта времени т.е при открытии/закрытии и т.д. какого нибудь документа проверять последние несколько записей книги и добавлять ID. Тут конечно есть кое какие издержки, но они могут быть приемлемы.
Подскажите про два InitList()
 
Спасибо, Константин WSELECT()
- помогло,

Цитата
itman пишет:
в bPost через запятую можно записать все необходимые вызовы функций.
типа такого:

Код

Local bPost ={||priznakset(), wrkdocm->Work_date:=dWorkDate, prem(dWorkDate,nSmena,ain[1],nApp)}

должны ли bPost и bDelPost что-то возвращать .t. .f. или цифру какую?
Подскажите про два InitList()
 
1. Инитлист вызывается на событие проверки документа и при этом занимает только часть экрана, так как он разделен на 3 части вот эта то часть и ограничивает высоту интлиста все зависит от того где находился в момент нажатия F10 :sad:
Отсюда и Вопрос нельзя ли развернуть инитлист на весь экран или хотябы гарантированно переключиться на нижнюючасть экрана.
2.
Мне надо записывать в таблицу много дополнительных полей которые заполнять не надо ведь в итоге я все это буду записывать в mdocm.dbf например номер документа, дату, тип и т.д. от оператора будет нужно только заполнить группу, номенклатуреый номер, количество и цену, а все остальное должно записаться автоматически.
вот изучаю инитлист там есть событие _bPost и bScrPost может их както? может подскажете крохотный пример.
Помогите разобраться
 
По поводу уникальных номеров, я бы сделал так:
на вход в документ(которые чаще всего вызываются накладные или заказы и тд и вход в реестр АРМ ГБ)я бы повесил плагин который бы проверял наличие (отсутствие)этих ключей за прошедший период скажем секунд 30 , при этом последнее значение даты + времени и количество записей в main.dbf проверки можно записать в memdat.dbf, ну и при запуске проверять эту запись , если время прошло - проверить последние записи и вписать свой ключ...
воткак-то так.
Подскажите про два InitList()
 
Ладно с F10 разобрался.
Остались Вопросы
Цитата
Сергей Иваницкий пишет:
Следующий Вопрос:
Мне в TMC2 надо вводить значения не через Qinput, а автоматически тоесть спрятать от оператора. Как это сделать через aWhen?

и
Цитата
Сергей Иваницкий пишет:
И еще, как всетаки инитлист на весь экран растянуть?
Подскажите про два InitList()
 
Еще Вопрос как отследить выход по F10?
Подскажите про два InitList()
 
И еще, как всетаки инитлист на весь экран растянуть?
Подскажите про два InitList()
 
Следующий Вопрос:
Мне в TMC2 надо вводить значения не через Qinput, а автоматически тоесть спрятать от оператора. Как это сделать через aWhen?
Подскажите про два InitList()
 
Нашел!!!
в функции INIT2()
Цитата
Сергей Иваницкий пишет:
dCurProc:={||MOVE1(lFlag,@rnRowAct)}

а надо было
Код
 dCurProc:={||MOVE2(lFlag,@rnRowAct)}
Подскажите про два InitList()
 
разобрался скобки блин, но легче не стало.
во первых сразу 2 не рисуются,
вовторых если шевельнуть курсором, то INIT2() мелькает пару секунд и БЭСТ вываливается в главное меню.
Подскажите про два InitList()
 
Здравствуйте Константин.
Я закомментировал строчки потому что выпадает ошибка на строчке

Цитата
Сергей Иваницкий пишет:
Выпадает на строке
Код

m1Ar:=(TMC1)->( QScroll() )

переменная не существует.


Цитата
Сергей Иваницкий пишет:
область инитлиста почему-то усекается по размеру активной части экрана перед нажатием F10,
как сэтим бороться?
Подскажите про два InitList()
 
Выловил много ошибок - вроде заработало но криво отображаетя вернее область инитлиста почему-то усекается по размеру активной части экрана перед нажатием F10,
как сэтим бороться?
Код
Function u2Init()
 Local cInsDB1, cInsDB2, cInsIdx, aInsStru, I, N
 Local aSet, aSetKey
 Private aRef, aSortSeek1,cGr,cName, _numrec:=1
 aSet:=SAVESET()
 aSetKey:=SaveSetKey()
// создаем временную таблицу
 cInsDBF1 := TempFile(m->GlobalTmpPath,"DBF")
 cInsDBF2 := TempFile(m->GlobalTmpPath,"DBF")
 aInsStru := {{'GRUP','C',5,0},{'NNUM','C',13,0},{'PARTIA','C',5,0},{'NAME','C',35,0},{'ED','C',5,0},{'KOL','N',19,4},{'CENA','N',19,2},{"LINK","N",17,0},{"COLOR","N",1,0}}
 DbCreate(cInsDBF1,aInsStru)
 NetUseExc('TMC1',cInsDBF1)
 DbCreate(cInsDBF2,aInsStru)
 NetUseExc('TMC2',cInsDBF2)
 TMC2->( ORDCREATE(cInsIdx,'TMC_LINK','LINK',{||Link})  )
 N = GetKolMat()
 For I = 1 To N
   TMC1->(ADDREC())
   TMC1->GRUP:= GetMat(I,79, 5)
   TMC1->NNUM:= GetMat(I,84, 13)
   TMC1->PARTIA:= GetMat(I,405, 5)
   TMC1->NAME:= GetMat(I,1, 35)
   TMC1->KOL:= GetMat(I,36, 14,.T.)
   TMC1->CENA:= GetMat(I,64, 15,.T.)
   TMC1->LINK:=IncStep("OPERSTRFAC") //NNOPER для сdzpb
 Next
 TMC1->( F_DBUNLOCK() )
 TMC1->( DbCommit() )
 TMC1->(DbGoTop())
// initlist's
//задание параметров первой прямоугольной области
 DispBox(2,0,11,79,( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
//задание параметров второй прямоугольной области
 DispBox(11,0,23,79,( Chr( 204 ) + Chr( 205 ) + Chr( 185 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
 mLabel->(OrdSetFocus('mLabel'))
//Справочник
 aSortSeek1:={;
      {"- по номеру      ","Шифр         ", {'GRUP','NNUM'},'UPPER(aIn[1]+aIn[2])',,,,'Mlabel'},;
      {"- по наименованию","Наименование ", {'Grup','Name'},'UPPER(aIn[1], aIn[2])',,,,'MLab_St'};
      }
 mLabel->( MAKEREFER("sl","Номенклатурный справочник",1,{"Гр.","Шифр ","Наименование   ","Ед.","Квал.","Фас.","Доп."},;
      {1,1,15}, "n/w,w+/n",{"NNUM"},{"aIn[2]"},'UPPER(aIn[1]+aIn[2])',;
      {{||Field->GRUP},{||Field->NNUM},{||Left(Field->NAME,25)},{||Field->ED },{||Left(Field->Marka,6)},{||Left(Field->RAZMER,6)},{||Left(Field->Sort,10)}};
      ,aSortSeek1,;
      ,,,,,{||mlabel->(SetScope('UPPER(Grup+NNUM)',Upper(aIn[1],aIn[2])))},;
 {||aIn[3]:=Left(Field->Name,35),.t.},;
      ,,,,,,,,'cFind$UPPER(Name)'))
 aRef:={,'SL'}
// Init2(.T.)
 Do While INIT1(.T.).And.INIT2(.T.)
 EndDo
// записываем
 RestSetKey(aSetKey)
 RESTSET(aSet)
 Return NIL

Function INIT1(lFlag)
 Private nTop,nBot,cColHead,aBlockCols,cCurProc,bDel,aHeads
 Private bPreGet
 Private hnrowact
//altd()
 nTop:=3
 nBot:=8
//Заголовки над полями
 cColHead:={"Наименование               Колич.            Цена         LINK             "}
 сCurProc:={||MOVE1(lFlag,@hnRowAct,m->_numrec,RecNo())}
//Заголовки колонок реестра
 aBlockCols:={;
      {{||Left(Field->Name,25)},0},;
      {{||Str(Field->kol,12,4)},26},;
      {{||Str(Field->Cena,12,2)},43},;
      {{||Str(Field->LINK,17)},58};
      }
//Запрещение удаления в таблице
 bDel:={||.F.}
//Комментарии
 SHADOWBOX(Chr(24)+Chr(25)+" - перемещение, TAb - переключение",23,3,23,75,"W/B")
// вызов функции
 TMC1->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,,,,,,,,,,,,,,,,,,,,,,,,hnrowact))
 Return LastKey()!=27
//Второй инитлист

Function INIT2(lFlag)
 Private mTop,mBot,mLeft,dColHead,bBlockCols,dCurProc,cDel,bHeads,mLeft
 Private cPreGet
Private rnRowAct
//altd()
 mTop:=11
 mBot:=14

 mLeft:=1
//Заголовки над полями
 dColHead:={"Наименование               Колич.            Цена         LINK             "}
 dCurProc:={||MOVE1(lFlag,@rnRowAct)}
// dCurProc:={||2}

//Заголовки колонок реестра
 bBlockCols:={;
      {{||Left(Field->Name,25)},0},;
      {{||Str(Field->kol,12,4)},26},;
      {{||Str(Field->Cena,12,2)},43},;
      {{||Str(Field->LINK,17)},58};
      }
//Запрещение удаления в таблице
 cDel:={||.F.}
//Описание полей ввода
 bHeads:={;
      {"Группа...............:","GRUP"},;
      {"Номенклатурный номер.:","NNUM"},;
      {"Наименование         :","NAME"},;
      {"Количество:           ","KOL"}}

SHADOWBOX(" F4 - Ввод новой F8 - Удаление ",23,3,23,75,"W/B")
TMC2->(InitList(mTop,mBot,dColHead,bBlockCols,dCurProc,bHeads,m->aRef,,,,,,,,,,,,,,,,,,,,,,rnrowact))
altd()
 Return LastKey()!=27

Function MOVE1(_xlActiv,hnRowAct,xRec,xRec1)
 Local m1end, m1Ar
// m1End:=2
// m1Ar:=(TMC1)->( QScroll() )
// hnRowAct:=m1Ar[6]
 If LastKey()=9
//   (TMC1)->( QOFF() )
   SetLastKey(0)
   m1End:=0
altd()
 Else
//   If xRec ==NIL.Or.xRec<>xRec1
//     Init2(.F.)
//     m->_numrec:=xRec1
//   EndIf
//   If _xlActiv
     m1End:=2
//   Else
//     QOff()
//     m1End:=0
//   EndIf
 EndIf
 Return m1end

Function MOVE2(_lActiv,rnRowAct)
 Local m2End,m2Ar
// m2Ar:=(TMC2)->( QScroll() )
// rnRowAct:=m2Ar[6]
 If LastKey()=9.Or.!_lActiv
//   (TMC2)->( QOFF() )
altd()
   SetLastKey(0)
   m2End:=0
 Else
   m2End:=2
 EndIf
 Return m2End
Подскажите про два InitList()
 
в INIT2() заменил
Код
TMC2->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,bHeads,aRef,,,,,,,,,,,,,,,,,,,,rnRowAct)) 

на
Код
 TMC2->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,bHeads,aRef,,,,,,,,,,,,,,,,,,,,,,rnRowAct))

запятых добавил
Подскажите про два InitList()
 
изменил в INIT2() строку
Код
dCurProc:={||MOVE1(lFlag,@rnRowAct,m->_numrec,RecNo())} 

на
Код
 dCurProc:={||MOVE1(lFlag,@rnRowAct)}

и еще
Код
Private mTop,mBot,mLeft,dColHead,bBlockCols,dCurProc,cDel,bHeadsmLeft 

на
Код
Private mTop,mBot,mLeft,dColHead,bBlockCols,dCurProc,cDel,bHeads,mLeft 

все равно не получается
Подскажите про два InitList()
 
в функции INIT2()поменял
Код
 TMC1->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,bHeads,aRef,,,,,,,,,,,,,,,,,,,,rnRowAct))

на
Код
 TMC2->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,bHeads,aRef,,,,,,,,,,,,,,,,,,,,rnRowAct))
Подскажите про два InitList()
 
Здравствуйте, Мучаюсь с двумя инитлистами - не получается.
видно что-то не так, может подскажите.
вот что у меня получилось в соответствии с уроком 8
срабатывает на событие "Проверка документа"
Код
Function u2Init()
 Local cInsDB1, cInsDB2, cInsIdx, aInsStru, I, N
 Local aSet, aSetKey
 Private aRef, aSortSeek1,cGr, _numrec:=1
 aSet:=SAVESET()
 aSetKey:=SaveSetKey()
// создаем временную таблицу
 cInsDBF1 := TempFile(m->GlobalTmpPath,"DBF")
 cInsDBF2 := TempFile(m->GlobalTmpPath,"DBF")
 aInsStru := {{'GRUP','C',5,0},{'NNUM','C',13,0},{'PARTIA','C',5,0},{'NAME','C',35,0},{'ED','C',5,0},{'KOL','N',19,4},{'CENA','N',19,2},{"LINK","N",17,0},{"COLOR","N",1,0}}
 DbCreate(cInsDBF1,aInsStru)
 NetUseExc('TMC1',cInsDBF1)
 DbCreate(cInsDBF2,aInsStru)
 NetUseExc('TMC2',cInsDBF2)
 TMC2->( ORDCREATE(cInsIdx,'TMC_LINK','LINK',{||Link})  )
 N = GetKolMat()
 For I = 1 To N
   TMC1->(ADDREC())
   TMC1->GRUP:= GetMat(I,79, 5)
   TMC1->NNUM:= GetMat(I,84, 13)
   TMC1->PARTIA:= GetMat(I,405, 5)
   TMC1->NAME:= GetMat(I,1, 35)
   TMC1->KOL:= GetMat(I,36, 14,.T.)
   TMC1->CENA:= GetMat(I,64, 15,.T.)
   TMC1->LINK:=IncStep("OPERSTRFAC") //NNOPER для сdzpb
 Next
 TMC1->( F_DBUNLOCK() )
 TMC1->( DbCommit() )
 TMC1->(DbGoTop())
// initlist's
//задание параметров первой прямоугольной области
 DispBox(2,0,15,79,( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
//задание параметров второй прямоугольной области
 DispBox(15,0,23,79,( Chr( 204 ) + Chr( 205 ) + Chr( 185 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
 mLabel->(OrdSetFocus('mLabel'))
//Справочник
 aSortSeek1:={;
      {"- по номеру      ","Шифр         ", {'GRUP','NNUM'},'UPPER(aIn[1]+aIn[2])',,,,'Mlabel'},;
      {"- по наименованию","Наименование ", {'Grup','Name'},'UPPER(aIn[1], aIn[2])',,,,'MLab_St'};
      }
 mLabel->( MAKEREFER("sl","Номенклатурный справочник",1,{"Гр.","Шифр ","Наименование   ","Ед.","Квал.","Фас.","Доп."},;
      {1,1,15}, "n/w,w+/n",{"NNUM"},{"aIn[2]"},'UPPER(aIn[1]+aIn[2])',;
      {{||Field->GRUP},{||Field->NNUM},{||Left(Field->NAME,25)},{||Field->ED },{||Left(Field->Marka,6)},{||Left(Field->RAZMER,6)},{||Left(Field->Sort,10)}};
      ,aSortSeek1,;
      ,,,,,{||mlabel->(SetScope('UPPER(Grup+NNUM)',Upper(aIn[1],aIn[2])))},,;
      ,,,,,,,,'cFind$UPPER(Name)'))
 aRef:={,'SL'}
// Init1(.T.)
 Do While INIT1(.T.).And.INIT2(.T.)
 EndDo
// записываем
 RestSetKey(aSetKey)
 RESTSET(aSet)
 Return NIL

Function INIT1(lFlag)
 Private nTop,nBot,cColHead,aBlockCols,cCurProc,bDel,aHeads
 Private bPreGet
 Private hnrowact
altd()
 nTop:=3
 nBot:=10
//Заголовки над полями
 cColHead:={"Наименование               Колич.            Цена         LINK             "}
 сCurProc:={||MOVE1(lFlag,@hnRowAct,m->_numrec,RecNo())}
//Заголовки колонок реестра
 aBlockCols:={;
      {{||Left(Field->Name,25)},0},;
      {{||Str(Field->kol,12,4)},26},;
      {{||Str(Field->Cena,12,2)},43},;
      {{||Str(Field->LINK,17)},58};
      }
//Запрещение удаления в таблице
 bDel:={||.F.}
//Комментарии
 SHADOWBOX(Chr(24)+Chr(25)+" - перемещение, TAb - переключение",23,3,23,75,"W/B")
// вызов функции
 TMC1->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,,,,,,,,,,,,,,,,,,,,,,,,hnrowact))
 Return LastKey()!=27
//Второй инитлист

Function INIT2(lFlag)
 Private mTop,mBot,mLeft,dColHead,bBlockCols,dCurProc,cDel,bHeadsmLeft
 Private cPreGet
Private rnRowAct
altd()
 mTop:=15
 mBot:=22
 mLeft:=1
//Заголовки над полями
 dColHead:={"Наименование               Колич.            Цена         LINK             "}
 dCurProc:={||MOVE1(lFlag,@rnRowAct,m->_numrec,RecNo())}
//Заголовки колонок реестра
 bBlockCols:={;
      {{||Left(Field->Name,25)},0},;
      {{||Str(Field->kol,12,4)},26},;
      {{||Str(Field->Cena,12,2)},43},;
      {{||Str(Field->LINK,17)},58};
      }
//Запрещение удаления в таблице
 cDel:={||.F.}
//Описание полей ввода
 bHeads:={;
      {"Группа...............:","GRUP"},;
      {"Номенклатурный номер.:","NNUM"}}
 SHADOWBOX(" F4 - Ввод новой F8 - Удаление ",23,3,23,75,"W/B")
 TMC1->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,bHeads,aRef,,,,,,,,,,,,,,,,,,,,rnRowAct))
 Return LastKey()!=27

Function MOVE1(_xlActiv,hnRowAct,xRec,xRec1)
 Local m1end, m1Ar
altd()
 m1End:=2
 m1Ar:=(TMC1)->( QScroll() )
 hnRowAct:=m1Ar[6]
 If LastKey()=9
   (TMC1)->( QOFF() )
   SetLastKey(0)
   m1End:=0
 Else
   If xRec ==NIL.Or.xRec<>xRec1
     Init2(.F.)
     m->_numrec:=xRec1
   EndIf
   If _xlActiv
     m1End:=2
   Else
     QOff()
     m1End:=0
   EndIf
 EndIf
 Return m1end

Function MOVE2(_lActiv,rnRowAct)
 Local m2End,m2Ar
 m2Ar:=(TMC2)->( QScroll() )
 rnRowAct:=m2Ar[6]
 If LastKey()=9.Or.!_lActiv
   (TMC2)->( QOFF() )
   SetLastKey(0)
   m2End:=0
 Else
   m2End:=2
 EndIf
 Return m2End


Выпадает на строке
Код
 m1Ar:=(TMC1)->( QScroll() )

переменная не существует.

И еще рисует заголовок инитлиста не сверху а строки на 3 ниже
Подскажите про два InitList()
 
Спасибо попробую,

Цитата
nordk пишет:
Если для БЭСТ-4
Пишете нужный Вам prg с функциями и подключаете его например

Код

set procedure to bestlib.prg


а куда bestlib.prg положить или полный путь можно указать?
Подскажите про два InitList()
 
А про библиотеку функций, я имел ввиду пользовательские(мои), у меня уже более 10 плагинов и многие из них используют одни и теже функции, мне их приходится в исходники дописывать ну и при изменениях приходится их заново переписывать и т.д. Или библиотеки можно только на харборе сделать? я не пробовал.
Подскажите про два InitList()
 
Строгого соответствия нет, более того один и тотже товар(мы торгуем химикатами) зачастую имеет много наименований (синонимов)и часто в одной группе(нефасованый) он называется "аммоний двухромовокислый" а в другой(фасованый) "аммоний бихромат" а по факту это одно и тоже. Поэтому планирую просто выбирать из справочника mlabel а партию формировать автоматом иначе никак. Про свои поля я в курсе, пользуюсь уже просто хотел как проще.
Подскажите про два InitList()
 
Еще Вопрос можно ли средствами которые есть в БЭСТе сделать библиотеку функций и подключать ее потом через #include?
Если да то как сделать.
Подскажите про два InitList()
 
Цитата
itman пишет:
Добрый день!
...
Т.е. в этом случае можно делать не внутреннее перемещение, а списание на фасовку, скажем. и порождать автоматом накладную на приход другой позиции.
Списко привязки оформить как таблицу пользователя, это по сути спецификация.
И уже по ней в коде формировать новую накладную.
Как вариант, возможно затраты по кодингу здесь будут меньше и надежнее.
Не надо каждый раз делать привязку, если я правильно понял задачу.

Спасибо, я примерно так и думал только связанную накладную хочу формировать сразу после записи расхода с фасцеха. Для этого и надо 2 инитлиста, так как 1-ой позиции списания могут соответствовать несколько позиций в порожденной накладной(разная фасовка).
Для связи думаю использовать поле oper_fact из mdocm и поля CodeDoc1 и NameDoc1 из mdoc + временная таблица.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 След.