Форум: "Основная";
Текущий архив: 2009.10.04;
Скачать: [xml.tar.bz2];
Вниз1С OLE запись - в полях значения "<>" Найти похожие ветки
← →
pogi (2008-08-08 12:48) [0]Помогите разобраться плиз!
При записи документа в 1С через OLE все успешно записываем, но потом в интерфейсе 1С в форме документа некоторые поля-справочники заполняются значением "<>". Не "<Объект не найден>", а просто "<>".
В эти поля значение вообще не передается.
Причем происходит это только у закзачика, в тестовой среде все отображается как надо.
Откуда берутся эти "<>" и как от них избавиться?
1С v.7.7 + MS SQL 2000 sp4
← →
Сергей М. © (2008-08-08 12:53) [1]Значит тестовая среда чем-о отличается от рабочей среды у Заказчика.
Например, локали разные..
← →
pogi (2008-08-08 13:01) [2]То что отличается - это понятно.
а при чем здесь локали? ведь это поля-справочники. а потом в объекте для данных полей значение ВООБЩЕ не выставляется.
Причем это относиться не ко всем подобным полям, а только к определенным.
← →
Сергей М. © (2008-08-08 13:23) [3]
> в объекте для данных полей значение ВООБЩЕ не выставляется
Это ради проверки сделано ? Или ты сознательно игнорируешь ссылочную целостность ?
А конфигурации в тестовой среде и у заказчика совпадают один-в-один ?
← →
pogi (2008-08-08 13:34) [4]Просто эти поля не заполнялись в форме. Там код записи примерно такой:
if Loss.fNM_REASON <> "" then
AddValFromSpr(Handle1CObj, "ПричинаОтказа", Loss.fNM_REASON, "ПричинаОтказа");
function AddValFromSpr(Handle1CObj: OleVariant; nmSpr, nmFind, nmField: string): Boolean;
var hSprObj: OleVariant;
str: string;
begin
Result := False;
LogMessage("Begin TfrmLossInit.AddValFromSpr", 6);
hSprObj := Unassigned;
hSprObj := ConnectTo1C_Object(Handle1C, "Справочник."+nmSpr);
LogMessage("Справочник."+nmSpr, 6);
if not VarIsEmpty(hSprObj) then
begin
if (hSprObj.FindByDescr(Trim(nmFind), 0, 0)=1) then
begin
LogMessage("Справочник."+nmSpr + " - Нашли значение", 6);
Handle1CObj.SetAttrib(nmField, hSprObj.CurrentItem);
Result := True
end;
end;
DisconnectFrom1C_Object(hSprObj);
LogMessage("End TfrmLossInit.AddValFromSpr", 6);
end;
Соответственно если пол не заполнили, то и в объект 1С в соответствующем поле ничего не заполняю.
Конфигурации 1-в-1.
← →
Сергей М. © (2008-08-08 13:47) [5]
> и в объект 1С в соответствующем поле ничего не заполняю
А запись в объекте-документе кто и как создает, перед тем как начинает работать твоя ф-ция AddValFromSpr ?
И еще:
> hSprObj := Unassigned; // <- это что, контрольный в голову что ли ? Зачем ?!
> hSprObj := ConnectTo1C_Object(Handle1C, "Справочник."+nmSpr);
>
← →
Сергей М. © (2008-08-08 13:54) [6]
> просто "<>"
Если не ошибаюсь, это означает , что ссылка на объект валидна, и этот объект имеет в атрибуте "Название" (или как его там ?) пустую строку.
← →
Сергей М. © (2008-08-08 13:58) [7]И если [6] соответствует действительности, то это означает, что среды не полностью идентичны - конфигурации (метаданные) одинаковые, а данные отличаются.
← →
pogi (2008-08-11 14:28) [8]Объект 1С создается так:
try
if VarIsNull(Handle1C) or VarIsEmpty(Handle1C) then
Handle1C := ConnectTo1C_Application("V77S.Application", //имя сервера автоматизации
// строка инициализации
"/D"" + GetPath1C + """,//директория, где Б.Д., с которой соединяемся
//" /N" + ResStrE("LOGIN") + //пользователь (имя)
//" /P" + ResStr(OwnClsId,"PWD"), //пароль
""); //не грузится заставка
if VarIsEmpty(Handle1C) then
begin
MessageDlg(ResStrE("MES.1CNOSTART", "LOSS"), mtInformation, [mbOk], 0);
Exit;
end else
try
Handle1CObj := ConnectTo1C_Object(Handle1C, "Документ.<ИмяДокумента>");
if VarIsEmpty(handle1CObj) then
begin
MessageDlg(ResStrE("MES.NODOC", "LOSS"), mtInformation, [mbOk], 0);
Exit;
end
else
begin
LogMessage("TfrmLossInit.SaveOle1C Создали документ", 6);
try
prNeedCreateNew := true;
NumDoc := Loss.NUM;
DtDoc := Loss.DT;
if Trim(Loss.ID_LOSS_1C) <> "" then
if (Handle1CObj.FindByNum(NumDoc, DtDoc)=1) then
begin
prNeedCreateNew := false;
end;
if prNeedCreateNew then
begin
Handle1CObj.New;
end;
В базу 1С в эти поля пишутся значения вида " 0 " - и у меня и у заказчика одинаково.
← →
pogi (2008-08-11 15:01) [9]Разобрался с помощью добрых людей.
В некоторых справочниках были значения пустые строки. Соответственно, там где проверки на пустоту не было, 1С находил в справочнике пустую строку и успешно ссылался на нее. А символами "<>" в форме показываются вот такие поля - где значение выбрано, но 1С не может показать его.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.10.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c