Имя: Пароль:
1C
 
Получить Из Временного Хранилища
,
0 hasan-rusel
 
02.12.14
11:10
Подскажите в чем ошибка пожалуйста:

{Форма.Форма.Форма(19)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
    ДанныеСтроки = ПолучитьИзВременногоХранилища(Адрес);
по причине:
Недопустимое значение параметра (параметр номер '1')

//////////////////////////////////////////////////////////


Перем Адрес;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ДБФ = Новый XBase("D:\Kontr.dbf");
    ДБФ.Кодировка = КодировкаXBase.OEM;
    Адрес = Неопределено;
    ВХ = ПоместитьВоВременноеХранилище(ДБФ,Адрес);
    ЗагрузкаДБФ(Адрес);
    
КонецПроцедуры


&НаСервере
Процедура ЗагрузкаДБФ(Адрес)
    Сообщить(Адрес);
    ДанныеСтроки = ПолучитьИзВременногоХранилища(Адрес);
    ДанныеСтроки.Первая();
    Пока Не ДанныеСтроки.ВКонце() Цикл
        Если НЕ ДанныеСтроки.ЗаписьУдалена() Тогда
            Контр     = Справочники.Корреспонденты.НайтиПоНаименованию(СокрЛП(ДанныеСтроки.Name));
            Если Контр    = Справочники.Корреспонденты.ПустаяСсылка() тогда
                Контр=Справочники.Корреспонденты.СоздатьЭлемент();
                Контр.Наименование=СокрЛП(ДанныеСтроки.Name);
...............................................................................................................
                Контр.Записать();
            КонецЕсли;
        КонецЕсли;
        ДанныеСтроки.Следующая();
    КонецЦикла;
КонецПроцедуры



Заранее спасибо !
1 Wobland
 
02.12.14
11:12
Неопределено - так себе адрес
2 Легат
 
02.12.14
11:13
="";
3 Maxus43
 
02.12.14
11:13
Адрес = ПоместитьВоВременноеХранилище(ДБФ);
4 hasan-rusel
 
02.12.14
11:16
(2) не помогло.
(3) не помогло.

{Форма.Форма.Форма(19)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
    ДанныеСтроки = ПолучитьИзВременногоХранилища(Адрес);
по причине:
Недопустимое значение параметра (параметр номер '1')
5 Любопытная
 
02.12.14
11:17
(4) а Сообщить(Адрес) что сообщает?
6 Maxus43
 
02.12.14
11:19
Адрес = ПоместитьВоВременноеХранилище(ДБФ);
ЗагрузкаДБФ(Адрес);

не работает? да ладно. Код в студию
7 Легат
 
02.12.14
11:21
Возвращаемое значение:
Тип: Строка.
Адрес во временном хранилище.
Должно было прокатить..
8 hasan-rusel
 
02.12.14
11:21
(6) Перем Адрес;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ДБФ = Новый XBase("D:\Kontr.dbf");
    
    ДБФ.Кодировка = КодировкаXBase.OEM;
    //    УникальныйИдентификатор = Новый УникальныйИдентификатор;
    Адрес = "";
    Адрес = ПоместитьВоВременноеХранилище(ДБФ);
    ЗагрузкаДБФ(Адрес);
    
КонецПроцедуры


&НаСервере
Процедура ЗагрузкаДБФ(Адрес)
    Сообщить(Адрес);
    ДанныеСтроки = ПолучитьИзВременногоХранилища(Адрес);
    ДанныеСтроки.Первая();
    Пока Не ДанныеСтроки.ВКонце() Цикл
        Если НЕ ДанныеСтроки.ЗаписьУдалена() Тогда
            Контр     = Справочники.Корреспонденты.НайтиПоНаименованию(СокрЛП(ДанныеСтроки.Name));
            Если Контр    = Справочники.Корреспонденты.ПустаяСсылка() тогда
                Контр=Справочн
9 Любопытная
 
02.12.14
11:23
(8) Убери объявление переменной, оно тебе всю картину маслом портит
10 Maxus43
 
02.12.14
11:24
Адрес = "";
выкинь, чо за привычка так писать
11 hasan-rusel
 
02.12.14
11:26
(10)
теперь новая ошибка:

{Форма.Форма.Форма(20)}: Значение не является значением объектного типа (Первая)
    ДанныеСтроки.Первая();
12 Любопытная
 
02.12.14
11:26
(8) Написавши
Перем Адрес;
без директивы компиляции, ты определил определил переменную Адрес на сервере. Поэтому, когда ты приходишь на сервер, у тебя в ней уже не то, что ты с клиента передал, а очень даже Неопределено.
13 Maxus43
 
02.12.14
11:28
(11) ты сначала файл в двоичные данные, двоичные данные во врем хранилище, из врем хранилища в двоичные данные, двоичные данный сохрани на винт во врем каталог как дбф. И только потом Новый XBase (путь к временному файлу);
14 hasan-rusel
 
02.12.14
11:31
(13) О_О
А можно строчкой кода ?
15 Любопытная
 
02.12.14
11:32
ДвоичныеДанные = Новый ДвоичныеДанные("D:\Kontr.dbf");
16 hasan-rusel
 
02.12.14
11:36
(15) а как ?

"двоичные данный сохрани на винт во врем каталог как дбф. И только потом Новый XBase (путь к временному файлу);"
17 Любопытная
 
02.12.14
11:40
ох, блин...
ИмяВременногоФайла = КаталогИБ()+"TmpDBF.dbf";
ДвоичныеДанные.Записать(ИмяВременногоФайла);
...
Ну и далее по тексту.
И вообще, читайте СП, там все написано
18 Maxus43
 
02.12.14
11:47
(17) ну с КаталогИБ() перебор имхо, лучше КаталогВременныхФайлов, да ещё и удалить потом тоже на всякий не забыть бы
19 Любопытная
 
02.12.14
11:48
(18) первое, что в голову пришло) Не помню я их, я их в СП читаю обычно
20 hasan-rusel
 
03.12.14
12:22
(19)
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//    ДБФ = Новый XBase("D:\Kontr.dbf");
    ДвоичныеДанные = Новый ДвоичныеДанные("D:\Kontr.dbf");
    Времянка = КаталогВременныхФайлов() + "TmpDBF.dbf";
    ДвоичныеДанные.Записать(Времянка);

//    ДБФ.Кодировка = КодировкаXBase.OEM;
    //    УникальныйИдентификатор = Новый УникальныйИдентификатор;
//    Адрес = "";
    Адрес = ПоместитьВоВременноеХранилище(Времянка);
    ЗагрузкаДБФ(Адрес);
    
КонецПроцедуры


&НаСервере
Процедура ЗагрузкаДБФ(Времянка)
    
    ДанныеСтроки1 = ПолучитьИзВременногоХранилища(Времянка);
    ДанныеСтроки = Новый XBase(ДанныеСтроки1);
    ДанныеСтроки.Кодировка = КодировкаXBase.OEM;
    ДанныеСтроки.Первая();
    Пока Не ДанныеСтроки.ВКонце() Цикл

ЧЯДНТ ?
21 hasan-rusel
 
03.12.14
12:23
{Форма.Форма.Форма(25)}: Ошибка при вызове метода контекста (Первая)
    ДанныеСтроки.Первая();
по причине:
Перед выполнением операции нужно открыть базу
22 Wobland
 
03.12.14
12:24
(21) это ты так XBase на основе двоичных данных формируешь?
23 Wobland
 
03.12.14
12:25
(22) а, не. на основе какого-то левого пути
24 Любопытная
 
03.12.14
12:26
(21)
Синтаксис:

Новый XBase(<ПутьКБазе>, <ПутьКИндексу>, <ТолькоЧтение>)
Параметры:

<ПутьКБазе> (необязательный)

Тип: Строка.
Полное имя файла таблицы базы данных в формате DBF.
<ПутьКИндексу> (необязательный)

Тип: Строка.
Путь к индексному файлу таблицы.
<ТолькоЧтение> (необязательный)

Тип: Булево.
Истина - открывать файл только для чтения, Ложь - открывать файл для чтения и записи.
Значение по умолчанию: Ложь.
Описание:

Создает объект XBase. При создании могут быть сразу открыты файлы таблицы и индекса.

И еще раз:
<ПутьКИндексу> (необязательный)

Тип: Строка.
Путь к индексному файлу таблицы.
<ТолькоЧтение> (необязательный)

Тип: Булево.
Истина - открывать файл только для чтения, Ложь - открывать файл для чтения и записи.
Значение по умолчанию: Ложь.
25 Любопытная
 
03.12.14
12:26
И вообще, ты чего-то не то делаешь
26 hasan-rusel
 
03.12.14
12:27
(23) да я хз как, впервые с УФ сталкиваюсь, обычно то проще)

    ДБФ = Новый XBase("\\Servbd\Forma\Dok_UL.dbf");
    

    ДБФ.Кодировка = КодировкаXBase.OEM;
    ДБФ.Первая();

    Симв = Символ(160);
    Пока Не ДБф.ВКонце() Цикл
и т.д.
27 Любопытная
 
03.12.14
12:27
Ты из временного хранилища получаешь двоичные данные. А XBase на основании пути к файлу поднимается. Так что ты свои ДвоичныеДанные сохрани на сервере в файл и этот файл уже делай
28 Wobland
 
03.12.14
12:28
(26) обычно в управляемом режиме файловые системы разные у клиента и сервера
29 Wobland
 
03.12.14
12:28
(27) Времянка. он туда строку отдаёт
30 Любопытная
 
03.12.14
12:29
(26) ну не сталкивайся тогда. Забей, отдай работу тому, кто сталкивался.
Чего вы все ноете про эти упр формы? Не нравится вам инструмент, не работайте с ним. Работайте с тем, что вам нравится.
Нитики
31 Любопытная
 
03.12.14
12:29
*Нытики.
Извините
32 hasan-rusel
 
03.12.14
12:30
(28) вот это и вызывает затруднения.
33 hasan-rusel
 
03.12.14
12:32
(30) Ну не обижайся, помощи же прошу)
Если бы можно было как-то обойти эти УФ, не сталкивался бы... А тут такое... И отдать тут некому.
34 hasan-rusel
 
03.12.14
12:46
хелп...
35 Wobland
 
03.12.14
12:49
то есть, сделайте за меня?
36 hasan-rusel
 
03.12.14
12:50
(35) не, направьте на путь истинный с (20)
37 Wobland
 
03.12.14
12:53
(36) -> (24)(30)
38 DrZombi
 
гуру
03.12.14
13:09
(34) Бросай передавай в хранилище "XBase" объект.
Передай сперва на сервер сам файл, в виде двоичного коду.
А потом запиши его во временную папочку, открой, как XBase :)

И работак
39 МишельЛагранж
 
03.12.14
13:23
(30)>>Не нравится вам инструмент, не работайте с ним.
- типичные "аргументы" УФ-маньяков.
Они и в автобусе на билет через электронный банк передают. И их "не аргументет", что у водилы нет банковского терминала...
40 МишельЛагранж
 
03.12.14
13:24
+ да и вообще, водите управлять автобусом надо, а не изысками заниматься с пассажирами...
41 МишельЛагранж
 
03.12.14
13:24
*водиле
42 ramir
 
03.12.14
15:29
(0) Измени

ПоместитьВоВременноеХранилище(ДБФ,Адрес);

На

ПоместитьВоВременноеХранилище(ДБФ, ЭтаФорма.УникальныйИдентификатор);
43 hasan-rusel
 
04.12.14
07:02
Всем спасибо, вот так получилось)

/////////////////
//Перем Адрес;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
//    ДБФ = Новый XBase("D:\Kontr.dbf");
    ////ДвоичныеДанные = Новый ДвоичныеДанные("D:\Kontr.dbf");
    ////Времянка = КаталогВременныхФайлов() + "TmpDBF.dbf";
    ////ДвоичныеДанные.Записать(Времянка);
    
    
    Файл = Новый Файл("D:\Kontr.dbf");
    ФайлИсточник = Файл.ПолноеИмя;
    Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ФайлИсточник));
    
    
    
//    ДБФ.Кодировка = КодировкаXBase.OEM;
    //    УникальныйИдентификатор = Новый УникальныйИдентификатор;
//    Адрес = "";
    ////    Адрес = ПоместитьВоВременноеХранилище(Времянка);
    ЗагрузкаДБФ(Адрес);
    
КонецПроцедуры


&НаСервере
Процедура ЗагрузкаДБФ(Адрес)
    ФайлПриемник = КаталогВременныхФайлов() + "temp_v82.dbf";
    ДанныеХранилища = ПолучитьИзВременногоХранилища(Адрес);
    ДанныеХранилища.Записать(ФайлПриемник);
    ДанныеСтроки = Новый XBase(ФайлПриемник);
    ДанныеСтроки.Кодировка = КодировкаXBase.OEM;
    ДанныеСтроки.Первая();
    Пока Не ДанныеСтроки.ВКонце() Цикл
44 Wobland
 
04.12.14
07:19
можешь на досуге почитать про ПолучитьИмяВременногоФайла
45 hasan-rusel
 
04.12.14
07:20
(44) ок.