Не работает опреатор Insert current
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Не работает опреатор Insert current
Уважаемые форумчане, нужна помощь!
Перешли на версию 5.4.41.0 с 5.4.38.5.
После перехода на новую версию в одном из алгоритмов перестал работать оператор Insert current.
Во время выполнения алгоритма появляется окно с сообщением
"Внутренняя ошибка интерфейса доступа к базе данных".
В логе ms70drv.log для каждого поля таблицы, в которую производится вставка, появилась запись вида:
42000: [Microsoft][ODBC SQL Server Driver][SQL Server]The column name 'F$CADOC' is specified more than once in the SET clause. A column cannot be assigned more than one value in the same SET clause. Modify the SET clause to make sure that a column is updated only once. If the SET clause updates columns of a view, then the column name 'F$CADOC' may appear twice in the view definition.
База данных - MS SQL server 2008 R2.
С чем это может быть связано?
Перешли на версию 5.4.41.0 с 5.4.38.5.
После перехода на новую версию в одном из алгоритмов перестал работать оператор Insert current.
Во время выполнения алгоритма появляется окно с сообщением
"Внутренняя ошибка интерфейса доступа к базе данных".
В логе ms70drv.log для каждого поля таблицы, в которую производится вставка, появилась запись вида:
42000: [Microsoft][ODBC SQL Server Driver][SQL Server]The column name 'F$CADOC' is specified more than once in the SET clause. A column cannot be assigned more than one value in the same SET clause. Modify the SET clause to make sure that a column is updated only once. If the SET clause updates columns of a view, then the column name 'F$CADOC' may appear twice in the view definition.
База данных - MS SQL server 2008 R2.
С чем это может быть связано?
Программист-самоучка
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Не работает опреатор Insert current
в принципе в сообщении сказано в чем причина вроде однозначно
это нужно Ваш код в студию..а еще после перехода chmssql запускали ?
это нужно Ваш код в студию..а еще после перехода chmssql запускали ?
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: Не работает опреатор Insert current
Спасибо за совет, попробуем запустить chmssql.
Сам исходный код довольно большой, и большая его часть не относится к рассматриваемой проблеме,
поэтому приведу только блок, в котором возникает ошибка, чтобы не перегружать излишней информацией.
snKatSopr.buffer := bufKatSopr; // это переменная типа type$KatSopr, которая предварительно заполняется из XML-файла.
Insert snKatSopr set // вот здесь возникает ошибка
snKatSopr.dSopr = bufKatSopr.dSopr
,snKatSopr.Nsopr = bufKatSopr.Nsopr
,snKatSopr.VhodNal = bufKatSopr.VhodNal
,snKatSopr.cNote = bufKatSopr.cNote;
Сам исходный код довольно большой, и большая его часть не относится к рассматриваемой проблеме,
поэтому приведу только блок, в котором возникает ошибка, чтобы не перегружать излишней информацией.
snKatSopr.buffer := bufKatSopr; // это переменная типа type$KatSopr, которая предварительно заполняется из XML-файла.
Insert snKatSopr set // вот здесь возникает ошибка
snKatSopr.dSopr = bufKatSopr.dSopr
,snKatSopr.Nsopr = bufKatSopr.Nsopr
,snKatSopr.VhodNal = bufKatSopr.VhodNal
,snKatSopr.cNote = bufKatSopr.cNote;
Программист-самоучка
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Не работает опреатор Insert current
А вы уверены что здесь? В сообщении говорится о поле CADOC.
Да и проверьте изменилось ли версия namssql (при смене атлантиса это нужно всегда проверять), через msinst ее надо подкладывать на сервер в папку bin SQL. Возможно также причина в тригере на katsopr на сервере - не правили на сервере чего? Если делать обычную работу с накладными сообщение появляется?
Да и проверьте изменилось ли версия namssql (при смене атлантиса это нужно всегда проверять), через msinst ее надо подкладывать на сервер в папку bin SQL. Возможно также причина в тригере на katsopr на сервере - не правили на сервере чего? Если делать обычную работу с накладными сообщение появляется?
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Не работает опреатор Insert current
вот так проваславнее будет не ?
Код: Выделить всё
snKatSopr.buffer := type$KatSopr(bufKatSopr);
Время ведет!
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: Не работает опреатор Insert current
Вот весь код целиком,
chmssql запустили на выходных, когда ни один пользователь не работал - не помогло,
namssql тоже был поставлен новый при обновлении,
snKatSopr.buffer := type$KatSopr(bufKatSopr) - это действительно правильней, но видимо дело не в этом, но код стал лучше, спасибо.
Есть ещё какие-либо рекомендации по направлению поиска путей устранения этой ошибки?
Выкладываю весь код интерфейса, надеюсь, что он не слишком большой.
Заранее благодарен за помощь.
chmssql запустили на выходных, когда ни один пользователь не работал - не помогло,
namssql тоже был поставлен новый при обновлении,
snKatSopr.buffer := type$KatSopr(bufKatSopr) - это действительно правильней, но видимо дело не в этом, но код стал лучше, спасибо.
Есть ещё какие-либо рекомендации по направлению поиска путей устранения этой ошибки?
Выкладываю весь код интерфейса, надеюсь, что он не слишком большой.
Заранее благодарен за помощь.
Код: Выделить всё
#include KatSoprTransfer.vih
#include TransferHelper.vih
#include LinkGrPl.vih
#include ExtAttr.vih
#include SystemHelper.vih
#include GetKau.vih
#include TuneAssistent.vih
#include MsgDlg.vih
Interface KatSoprTransfer;
Const
SAVE_MODE : byte = 0;
LOAD_MODE : byte = 1;
FORMAT_DATE: string[10] = 'DD/MM/YYYY';
SEPARATOR : string[1] = ';';
end;
var
XMLPathName : string;
PathComent : string;
Action_mode : byte;
isCanceled : boolean;
KatSoprNrec : comp;
noteStatus : word;
noteName : string;
sDBName : string;
cDBFilial : comp;
domDocument // ссылка на дом-документ
,rootNode // ссылка на корневой узел
,KatSoprsNode : longint; // ссылка на узел корневого элемента <KatSoprs>
cDog : comp; // ссылка на договор
XML_NAME : string;
#include ExtAttr.var
#include LinkGrPl.var
#include Getkau.var
create view vTransfer
from
KatSopr
,SpSopr (SPSOPR02)
,KatSopr snKatSopr
,SpSopr snSpSopr
,KatNotes
,KatNotes snKatNotes
,Dogovor
,KatMc
,ObjAccT
,ObjAccT snObjAccT
where
((
KatSoprNrec == KatSopr.Nrec
and KAtSopr.Nrec == SpSopr.cSopr
and KatSopr.cNote == KatNotes.Nrec
and 100 == snKatNotes.Viddoc
and noteStatus == snKatNotes.Status
and noteName == snKatNotes.Name
and cDog == Dogovor.Nrec
and toKatSopr == ObjAccT.TypeOwn
and KatSopr.Nrec == ObjAccT.cOwner
and word(1) == ObjAccT.KindRec
and toZClient == ObjAccT.TypeObj
)) ;
Procedure SaveToDsk; forward;
Procedure LoadFromDsk; forward;
Window wSetSaveLoadPath '', Dialog, EscClose;
Show at (,,50, 5);
Screen scSetSaveLoadPath;
fields
PathComent : skip, {font = { bold = true}};
XMLPathName : noProtect, PickButton;
buttons
cmOk ,,,;
cmCancel ,,,;
<<
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<. Продолжить .> <. Отменить .>
>>
end;
HandleEvent
cmInit :
{
isCanceled := true;
case Action_mode of
SAVE_MODE :
{
PathComent := 'Сохранять данные в папку:';
SetWindowTitle(wSetSaveLoadPath, 'Выбор пути к сохраняемым данным');
}
LOAD_MODE:
{
PathComent := 'Загружать данные из папки:';
SetWindowTitle(wSetSaveLoadPath, 'Выбор пути к загружаемым данным');
}
end;
LoadFromDsk;
}
cmOk :
{
if (Trim(XMLPathName) = '')
{
Message('Необходимо выбрать путь к данным', Warning) ;
Abort;
Exit;
}
isCanceled := false;
SaveToDsk;
CloseWindow(wSetSaveLoadPath);
}
cmPick :
{
Case CurField of
#XMLPathName :
{
Set XMLPathName := GetDirName('Выберите путь к данным') ;
}
end;
}
end;
end; // Window
Function IsAllowedGroupMC(p_KodGr: string): boolean;
var deniedGroup
,tmpS : string;
i : integer;
{
result := true;
if (not ExistTune('KATSOPRTRANSFER.MASK_GROUPMC'))
exit;
deniedGroup := Trim(sGetTune('KATSOPRTRANSFER.MASK_GROUPMC'));
deniedGroup += SEPARATOR; // если в настройке не поставили разделитель - ставим, иначе будет некорректно работать ExtractDelimitedWord
for (i := 1; ; i++)
{
if (deniedGroup = '' or deniedGroup = SEPARATOR)
break;
tmpS := Trim(ExtractDelimitedWord(deniedGroup, i, SEPARATOR));
deniedGroup := Trim(SubStr(deniedGroup, length(tmpS) + 1, length(tmpS)));
if (tmpS = '')
continue;
if (Pos(tmpS, p_KodGr) = 1)
{
result := false;
break;
}
}
}
Procedure LoadFromDsk;
{
ReadMyDSK (XMLPathName, 'KatSoprTransfer_XMLPathName', false);
if (Trim(XMLPathName) = '')
{
Set XMLPathName := GetStringParameter('Files','OutputFilesDirectory',0);
}
}
Procedure SaveToDsk;
{
SaveMyDSK (XMLPathName, 'KatSoprTransfer_XMLPathName' );
}
Procedure SetAttribute(element :Longint; nameAttr, valueAttr:string);
{
XMLDOMElement_SetAttribute(element, nameAttr, valueAttr)
}
Procedure AddSpSoprNode(SpSoprsNode: longint);
{
var
SpSoprNode : longint;
SpSoprNode := XMLDOMDoc_CreateElement(domDocument, 'SpSopr');
rootNode := XMLDOMNode_AppendChild(SpSoprsNode, SpSoprNode);
SetAttribute(SpSoprNode, 'ID' , SpSopr.Nrec) ;
SetAttribute(SpSoprNode, 'cMcUsl' , SpSopr.cMcUsl) ;
SetAttribute(SpSoprNode, 'prMC' , SpSopr.prMC) ;
SetAttribute(SpSoprNode, 'Price' , DoubleToStr(SpSopr.Price , '[|-]3666666666666666666.8888888888888888')) ;
SetAttribute(SpSoprNode, 'KolFact', DoubleToStr(SpSopr.KolFact, '[|-]3666666666666666666.8888888888888888')) ;
SetAttribute(SpSoprNode, 'Kol' , DoubleToStr(SpSopr.Kol , '[|-]3666666666666666666.8888888888888888')) ;
SetAttribute(SpSoprNode, 'Npp' , SpSopr.Npp) ;
SetAttribute(SpSoprNode, 'cOtpEd' , SpSopr.cOtpEd) ;
XMLDOMNode_Release(SpSoprNode);
}
Procedure AddClaimNode(ClaimsNode: longint);
{
var
ClaimNode : longint;
ClaimNode := XMLDOMDoc_CreateElement(domDocument, 'Claim');
rootNode := XMLDOMNode_AppendChild(ClaimsNode, ClaimNode);
SetAttribute(ClaimNode, 'ID' , ObjAccT.cObject) ;
XMLDOMNode_Release(ClaimNode);
}
Procedure AddKatSoprNode;
{
var
KatSoprNode
, ChildNode : longint;
KatSoprNode := XMLDOMDoc_CreateElement(domDocument, 'KatSopr');
rootNode := XMLDOMNode_AppendChild(KatSoprsNode, KatSoprNode);
SetAttribute(KatSoprNode, 'ID' , KatSopr.Nrec) ;
SetAttribute(KatSoprNode, 'VidSopr', KatSopr.VidSopr) ;
SetAttribute(KatSoprNode, 'TipSopr', KatSopr.TipSopr) ;
SetAttribute(KatSoprNode, 'dSopr' , DateToStr(KatSopr.dSopr, FORMAT_DATE)) ;
SetAttribute(KatSoprNode, 'nSopr' , KatSopr.nSopr) ;
SetAttribute(KatSoprNode, 'VhodNal', KatSopr.VhodNal);
SetAttribute(KatSoprNode, 'OrgName', KatSopr.cOrg -> Name);
if (getFirst KatNotes = tsOk)
{
SetAttribute(KatSoprNode, 'Note' , KatNotes.Status +'|'+ KatNotes.Name + '|') ;
}
if (getFirst SpSopr = tsOk)
{
ChildNode := XMLDOMDoc_CreateElement(domDocument, 'SpSoprs');
rootNode := XMLDOMNode_AppendChild(KatSoprNode, ChildNode);
_Loop SpSopr
{
if (SpSopr.PrMc != toMc)
{
Message('Услуги не экспортируются!', Warning);
continue;
}
AddSpSoprNode(ChildNode);
}
XMLDOMNode_Release(ChildNode);
}
if (getFirst ObjAccT = tsOk)
{
ChildNode := XMLDOMDoc_CreateElement(domDocument, 'Claims');
rootNode := XMLDOMNode_AppendChild(KatSoprNode, ChildNode);
_Loop ObjAccT
{
AddClaimNode(ChildNode);
}
XMLDOMNode_Release(ChildNode);
}
XMLDOMNode_Release(KatSoprNode);
}
Function CreateXML(lMarker : longint): boolean;
var
iCount
,Iterator : word;
node // вспомогательные
,nodeChild : longint; // узлы
{
result := false;
iCount := GetMarkerCount(lMarker);
domDocument := XMLDOMDoc_New;
if (domDocument = 0)
Exit;
node := XMLDOMDoc_CreateProcessingInstruction(domDocument, 'xml', 'version="1.0" encoding="UTF-8" standalone="yes"');
nodeChild := XMLDOMNode_AppendChild(domDocument, node);
XMLDOMNode_Release(node);
XMLDOMNode_Release(nodeChild);
node := XMLDOMDoc_CreateComment(domDocument, '"ЭП-Аудит". Экспорт сопроводительных документов');
nodeChild := XMLDOMNode_AppendChild(domDocument, node);
XMLDOMNode_Release(node);
XMLDOMNode_Release(nodeChild);
KatSoprsNode := XMLDOMDoc_CreateElement(domDocument, 'KatSoprs');
rootNode := XMLDOMNode_AppendChild(domDocument , KatSoprsNode);
SetAttribute(KatSoprsNode, 'Database', SystemHelper::GetDatabaseName());
SetAttribute(KatSoprsNode, 'Filial', GetCurrentBranch());
StartNewVisual(vtIndicatorVisual, vfTimer, 'Создание XML-файла...', iCount);
for (Iterator := 0; Iterator < iCount; Iterator++)
{
NextVisual;
if (not GetMarker(lMarker, Iterator, KatSoprNrec))
continue;
if ( getFirst KatSopr = tsOk )
{
AddKatSoprNode;
}
}
result := XMLDOMDoc_Save(domDocument, XMLPathName+XML_NAME);
XMLDOMNode_Release(KatSoprsNode);
XMLDOMNode_Release(rootNode);
XMLDOMDoc_Done(domDocument);
var CliPath : string;
if (IfDefServerApp)
{
PutSrvFileToClient(XMLPathName+XML_NAME, sGetTune('REPHLOGISTICS.PATH_FILE_KATSOPRS')+XML_NAME, true)
}
StopVisual('', 0);
}
Function LoadXML: boolean;
var AttrItem,
AttrMap,
lNodeList: longint;
Iterator,
iLength : integer;
{
result := false;
domDocument := XMLDOMDoc_New;
if (domDocument = 0)
Exit;
result := XMLDOMDoc_Load(domDocument, XMLPathName+XML_NAME);
if (not result)
{
Message('Не удалось загрузить данные из xml-файла', Error)
}
else
{
result := false;
lNodeList := XMLDOMDoc_GetElementsByTagName(domDocument, 'KatSoprs');
if (lNodeList = 0)
{
Message('Неверный формат DOM-документа!'#13'' +
'Корневой элемент "KatSoprs" не найден.', Error);
Exit;
}
iLength := XMLDOMNodeList_get_Length(lNodeList);
if ( iLength != 1)
{
XMLDOMNode_Release(lNodeList);
Message('Некорректный DOM-документ:'#13'' +
'найдено более одного корневого элемента "KatSoprs".', Error);
Exit;
}
AttrMap := XMLDOMNode_get_Attributes(XMLDOMNodeList_get_Item(lNodeList, 0));
iLength := XMLDOMNamedNodeMap_get_Length(AttrMap) ;
sDBName := '';
cDBFilial := 0h;
for (Iterator := 0; Iterator < iLength; Iterator++)
{
AttrItem := XMLDOMNamedNodeMap_get_Item(AttrMap, Iterator);
if (LoCase(XMLDOMNode_get_NodeName(AttrItem)) != 'database')
continue;
sDBName := XMLDOMAttribute_get_NodeValue(AttrItem);
break;
}
for (Iterator := 0; Iterator < iLength; Iterator++)
{
AttrItem := XMLDOMNamedNodeMap_get_Item(AttrMap, Iterator);
if (LoCase(XMLDOMNode_get_NodeName(AttrItem)) != 'filial')
continue;
cDBFilial := comp(XMLDOMAttribute_get_NodeValue(AttrItem));
break;
}
XMLDOMNode_Release(lNodeList);
XMLDOMNode_Release(AttrMap);
XMLDOMNode_Release(AttrItem);
if (sDBName = '')
{
Message('Некорректный DOM-документ:'#13'' +
'Не удалось определить значение атрибута Database корневого элемента', Error);
Exit;
}
if (not TransferHelper::DataBaseIsPermitted(sDBName, cDBFilial))
{
Message('Не разрешен импорт накладных из БД "' + sDBName + '"'
+ if (cDBFilial = 0, '', ' (филиал: ' + string(cDBFilial,0,0) + ')')
+ ', не задана или задана неверно закупочная организация', Warning);
Exit;
}
if (TransferHelper::GetPurchOrg(sDBName, cDBFilial) = 0)
{
Message('Для БД "' + sDBName + '"' + if (cDBFilial = 0, '', ' (филиал: ' + string(cDBFilial,0,0) + ')')
+ ' не задана или задана неверно закупочная организация', Warning);
Exit;
}
lNodeList := XMLDOMDoc_GetElementsByTagName(domDocument, 'KatSopr');
if (lNodeList = 0)
{
Message('Нет данных для загрузки!', Information);
Exit;
}
iLength := XMLDOMNodeList_get_Length(lNodeList);
XMLDOMNode_Release(lNodeList);
if ( iLength = 0)
{
Message('Нет данных для загрузки!', Information);
Exit;
}
result := true;
}
}
Function GetKatSopr(KSAttrMap : longint; var p_bufKatSopr : type$KatSopr) : boolean;
var
iCount
,Iterator : integer;
AttrItem : longint;
AttrName
,AttrValue : string;
OrgName : string;
// tuneAssist : TuneAssistent;
{
result := false;
ClearAdvRecord(p_bufKatSopr);
if (KSAttrMap = 0)
exit;
iCount := XMLDOMNamedNodeMap_get_Length(KSAttrMap) ;
if (iCount = 0) // в этом случае непонятно что грузить в катсопр
exit;
OrgName := '';
for (Iterator := 0; Iterator < iCount; Iterator++)
{
AttrItem := XMLDOMNamedNodeMap_get_Item(KSAttrMap, Iterator);
AttrName := LoCase(XMLDOMNode_get_NodeName(AttrItem));
AttrValue:= XMLDOMAttribute_get_NodeValue(AttrItem);
Case AttrName of
// дата
'dsopr' :
{
p_bufKatSopr.dSopr := StrToDate(AttrValue, FORMAT_DATE) ;
p_bufKatSopr.dPrice := StrToDate(AttrValue, FORMAT_DATE) ;
}
// номер
'nsopr' : p_bufKatSopr.nSopr := AttrValue;
// входимость налогов
'vhodnal': p_bufKatSopr.VhodNal := word(AttrValue);
// статус
'note' :
{
if ( tuneAssist.LoadSoprStatus != 0h )
p_bufKatSopr.cNote := tuneAssist.LoadSoprStatus;
else
{
noteStatus := word(ExtractDelimitedWord(AttrValue, 1, '|'));
noteName := ExtractDelimitedWord(AttrValue, 2, '|');
if (GetFirst fastFirstRow snKatNotes = tsOK)
{
p_bufKatSopr.cNote := snKatNotes.Nrec
}
}
}
'orgname' :
{
OrgName := AttrValue;
}
end;
}
XMLDOMNode_Release(KSAttrMap);
// проверяем, можно ли загружать накладную с таким контрагентом
if (not TransferHelper::OrgIsPermitted(OrgName))
{
Message('Накладная ' + #_SDOC(p_bufKatSopr.nSopr,p_bufKatSopr.dSopr) + ' не может быть загружена'#13''+
'Неверный контрагент: "' + OrgName + '"', Warning
);
Exit;
}
p_bufKatSopr.Nrec := GetNextNrec(#KatSopr, 0);
p_bufKatSopr.VidSopr := 101; // приходные
p_bufKatSopr.TipSopr := 1;
p_bufKatSopr.YearSopr := Year(p_bufKatSopr.dSopr) ;
p_bufKatSopr.cOrg := TransferHelper::GetPurchOrg(sDBName,cDBFilial); //coGetTune('REPHLOGISTICS.PURCH_ORG') ; // контрагент
p_bufKatSopr.cGruzFrom := TransferHelper::GetPurchOrg(sDBName,cDBFilial); //coGetTune('REPHLOGISTICS.PURCH_ORG') ; // грузоотправитель
p_bufKatSopr.cOrgBase := TransferHelper::GetPurchOrg(sDBName,cDBFilial); //coGetTune('REPHLOGISTICS.PURCH_ORG') ; // контрагент взаиморасчетов
p_bufKatSopr.cGruzTo := coGetTune('MYORG') ; // грузополучатель
p_bufKatSopr.Descr := sGetTune('USER.DESCR');
p_bufKatSopr.DesGr := sGetTune('USER.DESGR');
p_bufKatSopr.cPayment := coGetTune('OPER.BUY.NAKL.CPAYMENT');
// договор из атрибута "Договор с Холдингом " собственной организации
if (piExtAttr.ValueExists(coKatOrg, coGetTune('MYORG'), 'Договор с Холдингом') )
{
cDog := piExtAttr.coGetAttr(coKatOrg, coGetTune('MYORG'), 'Договор с Холдингом');
if (getFirst fastFirstRow Dogovor = tsOk)
{
p_bufKatSopr.cDogovor := if (Dogovor.TidK = 400, Dogovor.Nrec, Dogovor.cDogovor);
p_bufKatSopr.cAppDogovor := if (Dogovor.TidK = 400, 0 , Dogovor.Nrec);
}
}
result := true;
}
Function GetSpSopr(SSAttrMap : longint; var p_bufSpSopr : type$SpSopr) : boolean;
var
iCount
,Iterator : integer;
AttrItem : longint;
AttrName
,AttrValue : string;
{
result := false;
ClearAdvRecord(p_bufSpSopr);
if (SSAttrMap = 0)
exit;
iCount := XMLDOMNamedNodeMap_get_Length(SSAttrMap) ;
if (iCount = 0) // в этом случае непонятно что грузить в spsopr
exit;
for (Iterator := 0; Iterator < iCount; Iterator++)
{
AttrItem := XMLDOMNamedNodeMap_get_Item(SSAttrMap, Iterator);
AttrName := LoCase(XMLDOMNode_get_NodeName(AttrItem));
AttrValue:= XMLDOMAttribute_get_NodeValue(AttrItem);
Case AttrName of
// ссылка на услуг / мц
'cmcusl' : p_bufSpSopr.cMcUsl := comp(AttrValue) ;
// признак МЦ / услуга
'prmc' : p_bufSpSopr.PrMc := word(AttrValue) ;
// цена
'price' :
{
p_bufSpSopr.Price := double(AttrValue);
p_bufSpSopr.RPrice := double(AttrValue);
}
//количество фактической
'kolfact' : p_bufSpSopr.KolFact:= double(AttrValue);
// количество
'kol' : p_bufSpSopr.Kol := double(AttrValue);
// номер по порядку
'npp' : p_bufSpSopr.Npp := word(AttrValue);
// отпускная единица измерения
'cotped' : p_bufSpSopr.cOtpEd := comp(AttrValue);
// группа налогов
'cgrnal' : p_bufSpSopr.cGrNal := comp(AttrValue);
end;
}
XMLDOMNode_Release(SSAttrMap);
result := true;
}
Function GetClaim(ClaimMap : longint; var p_bufObjAccT : type$ObjAccT) : boolean;
var
iCount
,Iterator : integer;
AttrItem : longint;
AttrName
,AttrValue : string;
{
result := false;
ClearAdvRecord(p_bufObjAccT);
if (ClaimMap = 0)
exit;
iCount := XMLDOMNamedNodeMap_get_Length(ClaimMap) ;
if (iCount = 0) // в этом случае непонятно что грузить в spsopr
exit;
p_bufObjAccT.TypeObj := toZClient;
p_bufObjAccT.KindRec := 1;
p_bufObjAccT.NumSort := comp(100000);
for (Iterator := 0; Iterator < iCount; Iterator++)
{
AttrItem := XMLDOMNamedNodeMap_get_Item(ClaimMap, Iterator);
AttrName := LoCase(XMLDOMNode_get_NodeName(AttrItem));
AttrValue:= XMLDOMAttribute_get_NodeValue(AttrItem);
Case AttrName of
// ссылка на услуг / мц
'id' : p_bufObjAccT.cObject := comp(AttrValue) ;
end;
}
XMLDOMNode_Release(ClaimMap);
result := true;
}
function SetSpSopr_defFieldsFromKatSopr(p_bufKatSopr: type$KatSopr; var p_bufSpSopr : type$SpSopr) : boolean;
{
p_bufSpSopr.cSopr := p_bufKatSopr.Nrec;
p_bufSpSopr.VidSopr := p_bufKatSopr.VidSopr;
p_bufSpSopr.dSopr := p_bufKatSopr.dSopr;
// 08.11.10 14:47:17 проверка на архивную МЦ
if (p_bufSpSopr.PrMc = toMc)
{
var b_check : boolean;
do
{
if (getFirst KatMc where ((p_bufSpSopr.cMcUsl == KatMc.Nrec))
!= tsOk
)
{
p_bufSpSopr.cMcUsl := 0;
break;
}
else
{
if (KatMc.isArch != 0 or (not IsAllowedGroupMC(KatMc.kGroupMC)))
{
var l_cMcUsl : comp;
var s : string;
l_cMcUsl := 0;
s := if (not IsAllowedGroupMC(KatMc.kGroupMC), ' ссылается на МЦ с запрещенной группой'#13'', ' ссылается на архивную МЦ'#13'');
if (Message('Поз. спец-ии №' + p_bufSpSopr.Npp + s +
'Наименование: "' + if (length(KatMc.Name) > 25, SubStr(KatMc.Name, 1, 25) + '...', KatMc.Name) + '"'#13'' +
'Баркод: "' + KatMc.Barkod + '"'#13'' +
'Обозначение: "' + if (length(KatMc.Obozn) > 25, SubStr(KatMc.Obozn, 1, 25) + '...', KatMc.Obozn) + '"'#13'' +
'Код группы: "' + KatMc.kGroupMC + '"'#13#13'' +
'Заменить МЦ? (иначе пропустить)', Confirmation + YesNo
) != cmYes)
{
p_bufSpSopr.cMcUsl := 0;
break;
}
else
{
iGetKau.GetCodeKau(cgiNo, cgKau_KatMC, l_cMcUsl);
p_bufSpSopr.cMcUsl := l_cMcUsl;
continue;
}
}
break; // выход, если все проверки прошли
}
}
while (true)
}
result := p_bufSpSopr.cMcUsl > 0;
}
Procedure ReCalcNalUch(_cSopr: comp);
{
if (boGetTune('Oper.NalUch') )
{
var sumNalUch, sumNalUchUsl : double;
_Loop snSpSopr where ((_cSopr == snSpSopr.cSopr))
{
RunInterface(L_Sklad::ViewNalUch, snSpSopr.nRec, sumNalUch, sumNalUchUsl, false);
snSpSopr.priceN:= sumNalUch/snSpSopr.kolFact;
snSpSopr.vPriceN:= sumNalUchUsl/snSpSopr.kolFact;
update current snSpSopr;
}
}
}
Procedure InsertSpSopr(p_itemNode: longint; p_bufKatSopr: type$KatSopr);
var
p_nodeList : longint;
p_count : word;
p_bufSpSopr: type$SpSopr;
{
ClearAdvRecord(p_bufSpSopr);
p_nodeList := XMLDOMNode_get_ChildNodes(p_itemNode);
if (p_nodeList = 0)
exit;
p_count := XMLDOMNodeList_get_Length(p_nodeList);
if (p_count = 0 ) // нет позиций спецификации
{
XMLDOMNode_Release(p_nodeList);
exit;
}
var i : integer;
// создаем позиции SpSopr
for (i := 0; i < p_count; i++)
{
p_itemNode := XMLDOMNodeList_get_Item(p_nodeList, i);
if (XMLDOMNode_get_NodeName (p_itemNode) != 'SpSopr' )
{
XMLDOMNode_Release(p_itemNode);
exit;
}
else
if (GetSpSopr( XMLDOMNode_get_Attributes(p_itemNode), p_bufSpSopr))
{
if (not SetSpSopr_defFieldsFromKatSopr(p_bufKatSopr, p_bufSpSopr))
exit;
snSpSopr.buffer := p_bufSpSopr;
if (insert current snSpSopr != tsOk)
#Log('Ошибка вставки в SpSopr')
}
XMLDOMNode_Release(p_itemNode);
}
}
Procedure InsertObjAccT(p_itemNode: longint; p_bufKatSopr: type$KatSopr);
var
p_nodeList : longint;
p_count : word;
p_bufObjAccT: type$ObjAccT;
{
ClearAdvRecord(p_bufObjAccT);
p_nodeList := XMLDOMNode_get_ChildNodes(p_itemNode);
if (p_nodeList = 0)
exit;
p_count := XMLDOMNodeList_get_Length(p_nodeList);
if (p_count = 0 )
{
XMLDOMNode_Release(p_nodeList);
exit;
}
var i : integer;
for (i := 0; i < p_count; i++)
{
p_itemNode := XMLDOMNodeList_get_Item(p_nodeList, i);
if (XMLDOMNode_get_NodeName (p_itemNode) != 'Claim' )
{
XMLDOMNode_Release(p_itemNode);
exit;
}
else
if (GetClaim( XMLDOMNode_get_Attributes(p_itemNode), p_bufObjAccT))
{
p_bufObjAccT.TypeOwn := toKatSopr;
p_bufObjAccT.cOwner := p_bufKatSopr.Nrec;
p_bufObjAccT.VidSopr := p_bufKatSopr.VidSopr;
snObjAccT.buffer := p_bufObjAccT;
if (insert current snObjAccT != tsOk)
#Log('Ошибка вставки в ObjAccT')
}
XMLDOMNode_Release(p_itemNode);
}
}
Procedure ParseDom;
var KSNodeList
,SSNodeList
,ItemNode
,KSChildNodes : longint;
var
iCountKS
,iCountSS
,Iterator : integer;
var
bufKatSopr : type$KatSopr;
bufSpSopr : type$SpSopr;
{
KSNodeList := XMLDOMDoc_GetElementsByTagName(domDocument, 'KatSopr') ;
iCountKS := XMLDOMNodeList_get_Length(KSNodeList);
StartNewVisual(vtIndicatorVisual, vfTimer, 'Идет разбор DOM-документа...', iCountKS);
for (Iterator := 0; Iterator < iCountKS ; Iterator++)
{
NextVisual;
ItemNode := XMLDOMNodeList_get_Item(KSNodeList, Iterator);
if (ItemNode = 0)
continue;
if ( GetKatSopr( XMLDOMNode_get_Attributes(ItemNode), bufKatSopr) )
{
// ищем в базе накладную с таким номером и датой, если есть - спрашиваем, чего делать
if ( RecordExists KatSopr where ((
101 == KatSopr.VidSopr
and bufKatSopr.dSopr == KatSopr.dSopr
and bufKatSopr.nSopr == KatSopr.nSopr
))
= tsOk
)
if (Message('Уже существует накладная №'+ bufKatSopr.nSopr +
' от ' + DateToStr(bufKatSopr.dSopr, FORMAT_DATE)+'.'#13'' +
'Все равно загрузить?'
, Confirmation | YesNo
) != cmYes
)
continue;
snKatSopr.buffer := type$KatSopr(bufKatSopr);
[b]
if (insert current snKatSopr <> tsOk)
{
Message('Ошибка вставки KatSopr');
}
else[/b]
{
KSChildNodes := XMLDOMNode_get_ChildNodes(ItemNode);
XMLDOMNode_Release(ItemNode);
if (KSChildNodes = 0) // нет спецификации и ссылок на заявки
continue;
iCountSS := XMLDOMNodeList_get_Length(KSChildNodes);
if (iCountSS > 2 ) // дочерних узлов больше двух, чего быть не может
{
XMLDOMNode_Release(KSChildNodes);
continue;
}
var i : integer;
for (i := 0; i < iCountSS; i++)
{
ItemNode := XMLDOMNodeList_get_Item(KSChildNodes, i);
case (XMLDOMNode_get_NodeName (ItemNode)) of
'SpSoprs' : InsertSpSopr (ItemNode, snKatSopr.buffer);
'Claims' : InsertObjAccT(ItemNode, snKatSopr.buffer);
end;
XMLDOMNode_Release(ItemNode);
}
XMLDOMNode_Release(KSChildNodes) ;
// кооректируем накладные
iGrPl.InsSpGrPlD_Default(snKatSopr.VidSopr, snKatSopr.nRec, snKatSopr.cOrg);
var resultCheckSum : boolean;
RunInterface(
iChkSum
,snKatSopr.Nrec //сопроводительный документ
,0 //по всем позициям
,FALSE //выполнить только пересчет позиции (true)
,if (snKatSopr.cVal = 0, 10, 20) //метод пересчета суммы в валюте по текущему курсу
,resultCheckSum //резутьтат выполнения (был ли пересчет) [возвращаемый]
);
// пересчет для налогового учета
//ReCalcNalUch(snKatSopr.Nrec);
}
}
}
StopVisual('', 0);
XMLDOMNode_Release(KSNodeList);
XMLDOMDoc_Done(domDocument);
}
procedure ObjKatSoprTransfer.SaveToXML(lMarker: longint);
var
iCount
,Iterator : word;
{
Action_mode := SAVE_MODE;
if (lMarker = 0) // ссылка на маркер нулевая
Exit;
if (GetMarkerCount(lMarker) = 0) // ничего не выбрано
Exit;
XMLPathName := if (IfDefServerApp()
, ConvertClientPathToSrv (sGetTune('REPHLOGISTICS.PATH_FILE_KATSOPRS'))
, sGetTune('REPHLOGISTICS.PATH_FILE_KATSOPRS')
);
if (Trim(XMLPathName) = '')
RunWindowModal(wSetSaveLoadPath);
if (isCanceled)
Exit;
if (not VerifyPathName(XMLPathName, true))
{
Message('Указанный путь не существует.', Error);
Exit;
}
if (CreateXML(lMarker))
{
Message('Файл успешно создан!', Information);
}
else
{
Message('Не удалось создать файл!', Error);
}
}
procedure ObjKatSoprTransfer.LoadFromXML;
{
Action_mode := LOAD_MODE;
XMLPathName := sGetTune('REPHLOGISTICS.PATH_FILE_KATSOPRS');
if (Trim(XMLPathName) = '')
RunWindowModal(wSetSaveLoadPath);
if (isCanceled)
Exit;
if (not VerifyPathName(XMLPathName, false))
{
Message('Указанный путь не существует.', Error);
Exit;
}
if (not FileExist (XMLPathName + XML_NAME) )
{
Message('По указанному пути нет данных для загрузки накладных.'#13''+
'Файл "'+XMLPathName + XML_NAME+'" не найден.', Information);
Exit;
}
if (IfDefServerApp())
{
if (GetFileFromClient(XMLPathName+XML_NAME, true) != 0)
{
Message('Файл не найден'#13'' + XMLPathName+XML_NAME, Warning);
Exit;
}
XMLPathName := ConvertClientPathToSrv (sGetTune('REPHLOGISTICS.PATH_FILE_KATSOPRS'));
}
if (not LoadXML)
exit;
ParseDom;
if (boGetTune('REPHLOGISTICS.NEEDDEL_FILE_KATSOPRS'))
{
DeleteFile(XMLPathName + XML_NAME) ;
}
Message('Загрузка накладных завершена', Information);
}
Procedure ObjKatSoprTransfer.SetXML_NAME(_XML_Name : string) ;
{
XML_NAME := _XML_Name;
}
HandleEvent
cmOnVipLoad:
{
XML_NAME := 'KatSoprTransfer_' + SystemHelper::GetDataBaseName() + '.xml'
}
end
end.
Программист-самоучка
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Не работает опреатор Insert current
Попробовал несколько урезанный код Ваш (по понятным причинам) и на 2000 и на 2005 и на 2008 сервере...вставка в katsopr, в принципе, проходит при Ваших методах работы с буфером katsopr.
Попробуйте посмотреть с помощью Profailer что за код пытается выполнить SQL Server ...
Попробуйте посмотреть с помощью Profailer что за код пытается выполнить SQL Server ...
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: Не работает опреатор Insert current
Запустил Profiler, в нём видно, что эти запросы обрабатываются.
Тем не менее в Галактике при выполнении запроса возвращается ошибка вставки в таблицу.
Тем не менее в Галактике при выполнении запроса возвращается ошибка вставки в таблицу.
Программист-самоучка
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Не работает опреатор Insert current
42000: [Microsoft][ODBC SQL Server Driver][SQL Server]Zver писал(а):Запустил Profiler, в нём видно, что эти запросы обрабатываются.
Тем не менее в Галактике при выполнении запроса возвращается ошибка вставки в таблицу.
Странно немного все же...это сообщение от сервера что ему не удалось выполнить успешно какую то директиву на вставку по указанным причинам.
А Вы пишите "видно, что эти запросы обрабатываются" это значит что реально вставка в таблу проходит ? Вам нужно попинать Execute ( средствами самого sql сервера) тех вызовов процедур текстов запросов которые сыпятся в профайлер при выполнении Вашего алгоритма. По идее, какой то из них должен выкинуть ошибку аналогичную.
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: Не работает опреатор Insert current
Den,
Стал разбираться глубже, что происходит при исполнении запроса.
В Profiler был сгенерирован вот такой запрос для выполняемой операции:
При выполнении его получился список описанных в первом сообщении ошибок.
Стал разбираться глубже, что происходит при исполнении запроса.
В Profiler был сгенерирован вот такой запрос для выполняемой операции:
Код: Выделить всё
exec sp_executesql N'DECLARE @CurDT DATETIME, @AtlDate INT, @AtlTime INT
SELECT @CurDT=GETDATE()
SELECT @AtlDate=dbo.ToAtlDate(@CurDT), @AtlTime=dbo.ToAtlTime(@CurDT)
INSERT INTO T$KATSOPR(F$ATL_LASTUSER,F$ATL_OWNER,F$ATL_BRANCH,F$ATL_ORIGINOFFICE,F$ATL_LASTDATE,F$ATL_LASTTIME,F$NREC,F$FILIALNO,F$NAME,F$DESCR,F$DESGR,F$CORG,F$SUMMA,F$CVAL,F$SUMVAL,F$VHODNAL,F$DPRICE,F$CCOMPL,F$KOLKOMPL,F$RNDR,F$RNDV,F$CNAZNA,F$CDOGOVOR,F$CAPPDOGOVOR,F$CCALPLAN,F$CPERSON,F$CDOVER,F$NDOVER,F$DDOVER,F$SDOVER,F$CDOVFIO,F$STATUS,F$CNOTE,F$CPAYMENT,F$CTRANSP,F$NVAGON,F$NKVIT,F$NSERTIF,F$CMASED,F$CMASVID,F$NETTO,F$MTARA,F$CSTEPDOC,F$TIPSOPR,F$DSOPR,F$YEARSOPR,F$NSOPR,F$VIDSOPR,F$CPODRFROM,F$CPODRTO,F$CMOLFROM,F$CMOLTO,F$CGRUZFROM,F$CGRUZTO,F$CORGBASE,F$DOPR,F$CHOZOPER,F$SOPRHOZ,F$RESERVED,F$SROKRES,F$CKATSOPR,F$CVALUT,F$CSCHFACT,F$USERFIELD,F$CGRSOPR,F$SNALOGS,F$SVNALOGS,F$TRANSP,F$CNZAKAZ,F$COTGORDER,F$WADOC,F$CADOC,F$CIZD,F$WCIZD,F$CZAKAZ,F$CPRICEALG,F$TYPEDOC,F$CCELLVAL,F$CNMOVECELL,F$TARAVOZ,F$CORGPLAT,F$TIPOTVPODR,F$COTVPODR,F$CUKS,F$CADOC,F$CAPPDOGOVOR,F$CCALPLAN,F$CCELLVAL,F$CCOMPL,F$CDOGOVOR,F$CDOVER,F$CDOVFIO,F$CGRSOPR,F$CGRUZFROM,F$CGRUZTO,F$CHOZOPER,F$CIZD,F$CKATSOPR,F$CMASED,F$CMASVID,F$CMOLFROM,F$CMOLTO,F$CNAZNA,F$CNMOVECELL,F$CNOTE,F$CNZAKAZ,F$CORG,F$CORGBASE,F$CORGPLAT,F$COTGORDER,F$COTVPODR,F$CPAYMENT,F$CPERSON,F$CPODRFROM,F$CPODRTO,F$CPRICEALG,F$CSCHFACT,F$CSTEPDOC,F$CTRANSP,F$CUKS,F$CVAL,F$CVALUT,F$CZAKAZ,F$DDOVER,F$DESCR,F$DESGR,F$DOPR,F$DPRICE,F$DSOPR,F$FILIALNO,F$KOLKOMPL,F$MTARA,F$NAME,F$NDOVER,F$NETTO,F$NKVIT,F$NSERTIF,F$NSOPR,F$NVAGON,F$RESERVED,F$RNDR,F$RNDV,F$SDOVER,F$SNALOGS,F$SOPRHOZ,F$SROKRES,F$STATUS,F$SUMMA,F$SUMVAL,F$SVNALOGS,F$TARAVOZ,F$TIPOTVPODR,F$TIPSOPR,F$TRANSP,F$TYPEDOC,F$USERFIELD,F$VHODNAL,F$VIDSOPR,F$WADOC,F$WCIZD,F$YEARSOPR) (SELECT @P1,@P2,@P3,@P4,@AtlDate,@AtlTime,@P5,@P6,@P7,@P8,@P9,@P10,@P11,@P12,@P13,@P14,@P15,@P16,@P17,@P18,@P19,@P20,@P21,@P22,@P23,@P24,@P25,@P26,@P27,@P28,@P29,@P30,@P31,@P32,@P33,@P34,@P35,@P36,@P37,@P38,@P39,@P40,@P41,@P42,@P43,@P44,@P45,@P46,@P47,@P48,@P49,@P50,@P51,@P52,@P53,@P54,@P55,@P56,@P57,@P58,@P59,@P60,@P61,@P62,@P63,@P64,@P65,@P66,@P67,@P68,@P69,@P70,@P71,@P72,@P73,@P74,@P75,@P76,@P77,@P78,@P79,@P80,@P81,@P82,@P83,@P84,@P85,@P86,@P87,@P88,@P89,@P90,@P91,@P92,@P93,@P94,@P95,@P96,@P97,@P98,@P99,@P100,@P101,@P102,@P103,@P104,@P105,@P106,@P107,@P108,@P109,@P110,@P111,@P112,@P113,@P114,@P115,@P116,@P117,@P118,@P119,@P120,@P121,@P122,@P123,@P124,@P125,@P126,@P127,@P128,@P129,@P130,@P131,@P132,@P133,@P134,@P135,@P136,@P137,@P138,@P139,@P140,@P141,@P142,@P143,@P144,@P145,@P146,@P147,@P148,@P149,@P150,@P151,@P152,@P153,@P154,@P155,@P156,@P157,@P158,@P159 FROM T$KATSOPR WHERE F$NREC=@P160)
IF @@ERROR=0 AND @@ROWCOUNT>0 SELECT Sys#UL FROM T$KATSOPR WHERE F$NREC=@P161',N'@P1 binary(8),@P2 binary(8),@P3 binary(8),@P4 int,@P5 binary(8),@P6 int,@P7 varchar(81),@P8 varchar(21),@P9 varchar(5),@P10 binary(8),@P11 float,@P12 binary(8),@P13 float,@P14 int,@P15 int,@P16 binary(8),@P17 float,@P18 float,@P19 float,@P20 binary(8),@P21 binary(8),@P22 binary(8),@P23 binary(8),@P24 binary(8),@P25 binary(8),@P26 varchar(21),@P27 int,@P28 varchar(81),@P29 binary(8),@P30 int,@P31 binary(8),@P32 binary(8),@P33 binary(8),@P34 varchar(21),@P35 varchar(21),@P36 varchar(21),@P37 binary(8),@P38 binary(8),@P39 float,@P40 float,@P41 binary(8),@P42 int,@P43 int,@P44 int,@P45 varchar(41),@P46 int,@P47 binary(8),@P48 binary(8),@P49 binary(8),@P50 binary(8),@P51 binary(8),@P52 binary(8),@P53 binary(8),@P54 int,@P55 binary(8),@P56 int,@P57 int,@P58 int,@P59 binary(8),@P60 binary(8),@P61 binary(8),@P62 varchar(81),@P63 binary(8),@P64 float,@P65 float,@P66 int,@P67 binary(8),@P68 binary(8),@P69 int,@P70 binary(8),@P71 binary(8),@P72 int,@P73 binary(8),@P74 binary(8),@P75 int,@P76 binary(8),@P77 binary(8),@P78 int,@P79 binary(8),@P80 int,@P81 binary(8),@P82 binary(8),@P83 binary(8),@P84 binary(8),@P85 binary(8),@P86 binary(8),@P87 binary(8),@P88 binary(8),@P89 binary(8),@P90 binary(8),@P91 binary(8),@P92 binary(8),@P93 binary(8),@P94 binary(8),@P95 binary(8),@P96 binary(8),@P97 binary(8),@P98 binary(8),@P99 binary(8),@P100 binary(8),@P101 binary(8),@P102 binary(8),@P103 binary(8),@P104 binary(8),@P105 binary(8),@P106 binary(8),@P107 binary(8),@P108 binary(8),@P109 binary(8),@P110 binary(8),@P111 binary(8),@P112 binary(8),@P113 binary(8),@P114 binary(8),@P115 binary(8),@P116 binary(8),@P117 binary(8),@P118 binary(8),@P119 binary(8),@P120 binary(8),@P121 binary(8),@P122 int,@P123 varchar(21),@P124 varchar(5),@P125 int,@P126 int,@P127 int,@P128 int,@P129 float,@P130 float,@P131 varchar(81),@P132 varchar(21),@P133 float,@P134 varchar(21),@P135 varchar(21),@P136 varchar(41),@P137 varchar(21),@P138 int,@P139 float,@P140 float,@P141 varchar(81),@P142 float,@P143 int,@P144 int,@P145 int,@P146 float,@P147 float,@P148 float,@P149 int,@P150 int,@P151 int,@P152 int,@P153 int,@P154 varchar(81),@P155 int,@P156 int,@P157 int,@P158 int,@P159 int,@P160 binary(8),@P161 binary(8)',0x8001000000000367,0x8001000000000367,0x8001000000000002,1,0x800100000003E41A,0,' ДO № 03-228 от 04/10/2007','MAL','ZAK',0x80010000000017B2,14,0x8000000000000000,0,2,131533316,0x8000000000000000,0,0,0,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,' ',0,' ',0x8000000000000000,1,0x8000000000000003,0x8000000000000000,0x8000000000000000,' ',' ',' ',0x8000000000000000,0x8000000000000000,0,0,0x8001000000001F0D,1,131533316,2007,'03-228',101,0x8000000000000000,0x800100000000036E,0x8000000000000000,0x8000000000000000,0x80010000000017B2,0x80010000000017B9,0x80010000000017B2,131533316,0x80010000000001B5,0,0,0,0x8000000000000000,0x8000000000000000,0x8000000000000000,' ',0x8000000000000000,0,0,0,0x8000000000000000,0x8000000000000000,0,0x8000000000000000,0x8000000000000000,0,0x8000000000000000,0x8000000000000000,0,0x8000000000000000,0x8000000000000000,2,0x80010000000010F1,0,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x800A000000000003,0x80010000000017B9,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000003,0x8000000000000000,0x800A000000000003,0x800A000000000003,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8001000000000001,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0x8000000000000000,0,'ZVE','CHT',0,131924487,131924487,0,0,0,' ',' ',0,' ',' ','017782',' ',0,0,0,' ',0,0,0,0,0,0,0,0,0,1,0,0,' ',2,101,0,0,2013,0x80010000000033AE,0x800100000003E41A
Программист-самоучка
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Не работает опреатор Insert current
Ну вот он и баг
в списке полей в конструкции INSERT INTO T$KATSOPR.....дважды почему то F$CADOC.
Хм...
в списке полей в конструкции INSERT INTO T$KATSOPR.....дважды почему то F$CADOC.
Хм...
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: Не работает опреатор Insert current
При анализе кода обнаружилось, что в сгенерированном запросе в разделе insert Into () ряд полей в выражении используются больше одного раза.
Похоже, что запрос, генерится в Галактике с ошибками.
Может ли это помочь с направлением поиска?
Похоже, что запрос, генерится в Галактике с ошибками.
Может ли это помочь с направлением поиска?
Программист-самоучка
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Не работает опреатор Insert current
Не???
snKatSopr.buffer := type$KatSopr(bufKatSopr);
set snKatSopr.nrec := comp(0);
if (insert current snKatSopr <> tsOk)
snKatSopr.buffer := type$KatSopr(bufKatSopr);
set snKatSopr.nrec := comp(0);
if (insert current snKatSopr <> tsOk)
Время ведет!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Не работает опреатор Insert current
а так тоже не подсобит
....
clearbuffer(#snKatSopr);
snKatSopr.buffer := type$KatSopr(bufKatSopr);
?
попробовать, конечно бы, обычным присвоением буфера таблицы со вставкой,если Вам не лень переписывать немнога кода ,ради эксперимента... )
....
clearbuffer(#snKatSopr);
snKatSopr.buffer := type$KatSopr(bufKatSopr);
?
попробовать, конечно бы, обычным присвоением буфера таблицы со вставкой,если Вам не лень переписывать немнога кода ,ради эксперимента... )