Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
15-1248939658
SKIPtr
2009-07-30 11:40
2009.10.04
Хранение ip адресов


11-1204725355
andreil
2008-03-05 16:55
2009.10.04
Организовать правильную работу с потоками...


2-1248893634
bag
2009-07-29 22:53
2009.10.04
copy в тексте


15-1249450605
Kerk
2009-08-05 09:36
2009.10.04
В России начали подделывать китайские авто


2-1248115102
thing
2009-07-20 22:38
2009.10.04
3D игра - переход от управления с клавы на мышь





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский