Имя: Пароль:
1C
1C 7.7
v7: Странно: ЗначениеИзФайла
0 Злопчинский
 
23.08.12
20:38
ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
ЗначениеИзФайла(КаталогИБ()+"buhtorg01.dbf",ТЗисключениеКлиенты,1);
Если ПустоеЗначение(ТЗисключениеКлиенты)=1
Тогда
       ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
       ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
       ЗначениеВФайл(КаталогИБ()+"buhtorg01.dbf",ТЗисключениеКлиенты,1);
КонецЕсли;
.
//далее по коду ТЗисключениеКлиенты заполняется и скидывается в файл
и все нормально.. - если исполнить по кнопке этот код - еще раз в таблице появляется то что внее было заполнено.. все ок.
.
но
.
если инициализировать
ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
то при повторном исполнении тз из файла не заполняется...
.
странно...
очень страннно...
ил я чего-то не втыкаю...
???
1 NS
 
23.08.12
20:44
Функция ПустоеЗначение() разве определена для ТЗ?
2 Злопчинский
 
23.08.12
20:51
(1) смысл в том, что значениеизфпйла ВОЗВРАЩАЕТ В ПЕРЕМЕННУЮ итог чтения из файла.
.
вместо
ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
можно написать
ТЗисключениеКлиенты = "";
- будет тоже работать нормально
3 NS
 
23.08.12
20:59
(2) И что тебя не устраивает?
4 Злопчинский
 
23.08.12
21:01
тестовая обработочка
http://dump.ru/file/5832025
5 NS
 
23.08.12
21:01
А нельзя обработку и результат на форуме выложить?
У меня нет дома 1С.
6 Злопчинский
 
23.08.12
21:02
(3) любопытство: почему когда переменная для приема значения из файла определена как ПолучитьПустоеЗначение() - из файла не читается...? в других случаях - когда переменная определена другим образом - хоть числом.. - нормально?
7 Злопчинский
 
23.08.12
21:06
сейчас
8 Злопчинский
 
23.08.12
21:06
код теста
.
Перем ТЗисключениеКлиенты;

//======================================================================
Процедура Инициализировать()

   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);

   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид1";
   ТЗисключениеКлиенты.Наименование = "имя1";
   ТЗисключениеКлиенты.ИНН = "инн1";

   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид2";
   ТЗисключениеКлиенты.Наименование = "имя2";
   ТЗисключениеКлиенты.ИНН = "инн2";
   ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   
   ТЗисключениеКлиенты.ВыбратьСтроку(,"результат инициализации 2 строки от 1 до 2");
   
КонецПроцедуры // Инициализировать

//======================================================================
Процедура Хорошо()

   ТЗисключениеКлиенты = "";
   ЗначениеИзФайла(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   Если ПустоеЗначение(ТЗисключениеКлиенты)=1
   Тогда
       ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
       ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
       ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   КонецЕсли;

   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид3";
   ТЗисключениеКлиенты.Наименование = "имя3";
   ТЗисключениеКлиенты.ИНН = "инн3";

   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид4";
   ТЗисключениеКлиенты.Наименование = "имя4";
   ТЗисключениеКлиенты.ИНН = "инн4";
   ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   
   ТЗисключениеКлиенты.ВыбратьСтроку(,"результат хорошо 4 строки от 1 до 4");
   
КонецПроцедуры // Хорошо()

//======================================================================
Процедура Плохо()

   ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
   ЗначениеИзФайла(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   Если ПустоеЗначение(ТЗисключениеКлиенты)=1
   Тогда
       ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
       ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
       ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   КонецЕсли;

   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид3";
   ТЗисключениеКлиенты.Наименование = "имя3";
   ТЗисключениеКлиенты.ИНН = "инн3";

   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид4";
   ТЗисключениеКлиенты.Наименование = "имя4";
   ТЗисключениеКлиенты.ИНН = "инн4";
   ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   
   ТЗисключениеКлиенты.ВыбратьСтроку(,"результат плохо 2 строки от 3 до 4");
   
КонецПроцедуры // Плохо()
9 NS
 
23.08.12
21:07
(6) Может у тебя просто срабатывает код в конце? Загруженная ТЗ определяется как пустоеЗначение()=1, и в файл пишется пустая ТЗ.
10 NS
 
23.08.12
21:08
Процедура Плохо()

   ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
   ЗначениеИзФайла(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   Если ПустоеЗначение(ТЗисключениеКлиенты)=1 // Вот этот код. Кто тебе сказал что метод ПустоеЗначение() на заполненной ТЗ даст 0? Если СП - то не верь ему.
   Тогда
       ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
       ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
       ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   КонецЕсли;
11 NS
 
23.08.12
21:09
короче, см. (1)
12 Злопчинский
 
23.08.12
21:10
13 NS
 
23.08.12
21:11
(12) и?
14 NS
 
23.08.12
21:12
Процедура Плохо()

   ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
   ЗначениеИзФайла(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   Если ПустоеЗначение(ТЗисключениеКлиенты)=1 // Вот этот код. Кто тебе сказал что метод ПустоеЗначение() на заполненной ТЗ даст 0? Если СП - то не верь ему.

   Тогда
       сообщить("Блин! Следующей строкой ТЗ очистилась")
       ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
       ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
       ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
       ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   КонецЕсли;
15 Злопчинский
 
23.08.12
21:12
(10) по барабану! если даже СП врет что ПустоеЗначение(ТЗ) при наличии строк в ТЗ даст ноль.. - смысл не в этом.
.
а втом
что в (10) после чтения из файла - в переменной куда читаем - пустое значение! вообще пустое - типзначенияСтр(переменная)= ""
16 Злопчинский
 
23.08.12
21:14
17 NS
 
23.08.12
21:15
(15) С чего ты взял?
18 Злопчинский
 
23.08.12
21:16
19 Злопчинский
 
23.08.12
21:17
(17) из того что вижу (возможно вижу фигу - поэтому и волнуюсь ;_)
20 NS
 
23.08.12
21:17
(19) Три твои картинки всего лишь показывают симптомы (1) (10) (14)
21 Злопчинский
 
23.08.12
21:18
(17) поставим вопрос по другому...
почему шаги Иницализация+Хорошо и Инициализация+Плохо - дают разные результаты..?
22 NS
 
23.08.12
21:20
(21) Прочитай (14) наконец. Потому что метод пустоезначение() на ТЗ глючит.
23 Злопчинский
 
23.08.12
21:20
(20) ты тупишь.. ;-) в (14) возвращается нифига не ТЗзаполненная из файла, а вообще неопределенное значение - вопрос - почему?
24 Эльниньо
 
23.08.12
21:20
Расширение dbf прикола ради или какой-то смысл?
25 Злопчинский
 
23.08.12
21:20
(22) читай (23)
26 NS
 
23.08.12
21:21
(23) С чего ты взял?
27 Злопчинский
 
23.08.12
21:21
(24) несущественно, ради прикола
28 NS
 
23.08.12
21:21
Убери в плохо блок с проверкой на пустое значение.
Сделай.

Процедура Плохо()

   ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
   ЗначениеИзФайла(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);


   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид3";
   ТЗисключениеКлиенты.Наименование = "имя3";
   ТЗисключениеКлиенты.ИНН = "инн3";

   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = "ид4";
   ТЗисключениеКлиенты.Наименование = "имя4";
   ТЗисключениеКлиенты.ИНН = "инн4";
   ЗначениеВФайл(КаталогИБ()+"_test01.dbf",ТЗисключениеКлиенты,1);
   
   ТЗисключениеКлиенты.ВыбратьСтроку(,"результат плохо 2 строки от 3 до 4");
   
КонецПроцедуры // Плохо()
29 Злопчинский
 
23.08.12
21:22
(26) потому что проверил!

в случае хорошо -
после исполнения оператора ЗначениеИзФайла()
ТипЗначенияСтр(ТЗисключениеКлиенты)="ТаблицаЗначений"

в случае плохо -
после исполнения оператора ЗначениеИзФайла()
ТипЗначенияСтр(ТЗисключениеКлиенты)=""
30 Злопчинский
 
23.08.12
21:23
(28) попробую, но очень сомневаюсь... выдас ошибку
31 Злопчинский
 
23.08.12
21:23
(28) НА!
ТЗисключениеКлиенты.НоваяСтрока();
{F:\BASE\DB2006.DIR\EXTFORMS\_БАГИ\ЗНАЧЕНИЕВФАЙЛТЕСТ.ERT(70)}: Значение не представляет агрегатный объект (НоваяСтрока)
32 Злопчинский
 
23.08.12
21:24
вся фишка вот как раз в этом -
ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
.
если инициализировать переменную любым значением = хоть бухитогами - сработает ок.
33 Classic
 
23.08.12
21:26
(32)
а что дает  Типзначения(ТЗисключениеКлиенты ) после ПолучитьПустоеЗначение ?
34 Злопчинский
 
23.08.12
21:26
(33) как всегда..
ТипЗначенияСтр(ТЗисключениеКлиенты)=""
35 Злопчинский
 
23.08.12
21:27
(33) сорри, сейчас
36 Classic
 
23.08.12
21:27
(34)
не Стр, а просто
37 Злопчинский
 
23.08.12
21:28
ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
   Сообщить(ТипЗначения(ТЗисключениеКлиенты));
   Сообщить(ТипЗначенияСтр(ТЗисключениеКлиенты));

возвращает
0
пустая строка
38 Classic
 
23.08.12
21:28
И еще

выдаст ли ошибку, если ТЗисключениеКлиенты вообще не инициализировать, а только прописать в Перем.
П.С. Я понимаю, что Перем - тоже инициализация, но думаю ты понял :)
39 smaharbA
 
23.08.12
21:29
ЗначениеИзФайла(Файл,ТЗ);
40 smaharbA
 
23.08.12
21:30
ааааа
41 Злопчинский
 
23.08.12
21:31
Получается что-то типа когда инициализируешь переменную нормально любым способом - типа выделяется память/ссылка на переменную, потом в нее успешно возвращается объект
.
а если инициализировать пустым значением - то .. "null" - и в нулл хрен что вернешь...
???
42 Злопчинский
 
23.08.12
21:31
<Формат> - необязательный параметр. Число: 1 - сохранение во внутреннем формате; иначе - во внешнем. Значение по умолчанию: 1.
43 smaharbA
 
23.08.12
21:31
а дбф это для прикола ?
44 Злопчинский
 
23.08.12
21:32
(39) пофиг
45 Злопчинский
 
23.08.12
21:32
(43) угу, чтобы бэкапилось автоматом с базой вместе
46 NS
 
23.08.12
21:35
(45) Сколько у тебя может быть строк в ТЗ? 1С умирает на сохранении (или восстановлении, уже точно не помню) больших ТЗ.
47 Злопчинский
 
23.08.12
21:36
(46) здесь явно не тот случай. всего 4 строки  ;-)
48 Злопчинский
 
23.08.12
21:37
(46) на полтора мегабайта и немного поболее - дышит нормально...
49 smaharbA
 
23.08.12
21:39

Процедура ЗагрузитьТаблицуЗначений(Файл,ТЗ,Ф=1)
   ТЗ=ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(ЗначениеИзФайла(Файл,,Ф)))
КонецПроцедуры    // ЗагрузитьТаблицуЗначений(Файл,ТЗ)
//*******************************************
Процедура Сформировать()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   ЗагрузитьТаблицуЗначений(Файл,ТЗисключениеКлиенты);
   ТЗисключениеКлиенты.ВыбратьСтроку();
КонецПроцедуры


Процедура ПриОткрытии()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,1);
КонецПроцедуры    // ПриОткрытии
50 m-serg74
 
23.08.12
21:40
(48) ЗначениеИзФайла(<?>,,);
Синтаксис:
ЗначениеИзФайла(<ИмяФайла>,<Объект>,<Формат>)
Назначение:
Востанавливает и возвращает значение из файла.
Параметры:
<ИмяФайла> - имя файла.
<Объект> - необязательный параметр. Идентификатор переменной, куда система вернет значение, которое получено из файла.

у тебя после ПолучитьПустоеЗначение твоя ТЗтратата = Неопределено говоря по 8-шному, поэтому ЗначениеИзФайла в никуда, равнозначно если б ты написал
ЗначениеИзФайла(ИмяФайла, , )
51 Злопчинский
 
23.08.12
21:42
(50) это предположение я еще выше в (41) высказал..
52 m-serg74
 
23.08.12
21:42
так это не предположение а 100% истина
53 smaharbA
 
23.08.12
21:42
Нихера не из-за пустого значения
54 Злопчинский
 
23.08.12
21:42
(49) это сильное колдунство (если работает, не проверяю) - обойти "проблему" и проще можно.
55 m-serg74
 
23.08.12
21:43
после
ТЗисключениеКлиенты = ПолучитьПустоеЗначение();

считай что переменной ТЗисключениеКлиенты нету
56 smaharbA
 
23.08.12
21:44
про пустое значение куйня, не верю
57 Злопчинский
 
23.08.12
21:44
(53) а из-за чего?
почему если написать иницализацию
ТЗисключениеКлиенты = 256; - работает!

а если
ТЗисключениеКлиенты = ПолучитьПустоеЗначение(); - не работает!
58 m-serg74
 
23.08.12
21:45
(56) можно верить можно не верить но это к сожеланию именно так
59 m-serg74
 
23.08.12
21:45
сожеланию = сожалению
60 smaharbA
 
23.08.12
21:45
(58) не так и без сожаления
61 m-serg74
 
23.08.12
21:45
поясни
62 smaharbA
 
23.08.12
21:46
//*******************************************
Процедура Сформировать()
   Форма.ОбработкаОжидания("");
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   //ЗагрузитьТаблицуЗначений(Файл,ТЗисключениеКлиенты);
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,1);
   ТЗисключениеКлиенты.ВыбратьСтроку();
КонецПроцедуры


Процедура ПриОткрытии()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,1);
   Форма.ОбработкаОжидания("Сформировать",1);
КонецПроцедуры    // ПриОткрытии
63 Злопчинский
 
23.08.12
21:50
(49) ты сильный колдун - работает такой вариант...
.
что-то получается что в моем тестовом варианте - где-то как-то теряется типа "ссылка" на переменную, а ты это обошел, через передачу ссылки в процедуру...???
64 Злопчинский
 
23.08.12
21:51
.. типа если передавать "нулл" в процедуру - то оно "переопределяется" и уже нифига не нулл...
65 m-serg74
 
23.08.12
21:52
(62) прими извинения был не прав)))
причем интересная фуйня


Процедура Сформировать()
   Форма.ОбработкаОжидания("");
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   //ЗагрузитьТаблицуЗначений(Файл,ТЗисключениеКлиенты);
   Если ТЗисключениеКлиенты = 0 Тогда
       Сообщить("0");
   Иначе
       Сообщить("1");
   КонецЕсли;
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,1);
   ТЗисключениеКлиенты.ВыбратьСтроку();
КонецПроцедуры


Процедура ПриОткрытии()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,1);
   Форма.ОбработкаОжидания("Сформировать",1);
КонецПроцедуры


сообщает 1
и показывает заполненную ТЗшку (бред ваще какой то)
66 Злопчинский
 
23.08.12
21:53
(65) ТЗисключениеКлиенты = 0
- это ты мощно выступил
67 Злопчинский
 
23.08.12
21:53
тз с нулем сравнил
68 smaharbA
 
23.08.12
21:55
ищи всеж в коде казявку
(62) да фигня, тож поддался на инсеннуации автора про неопределенность )) (автор не сцы ) )
69 m-serg74
 
23.08.12
21:55
(66) специально делал, по идее если бы ТЗ было неопределено или нулл или хз еще как то должно было при сравнении ошибку дать))) ан нет она почему то = 1
70 Злопчинский
 
23.08.12
21:55
вся фишка в том что ТЗисключениеКлиенты - определена В ТЕСТОВОМ ПРИМЕРЕ как глобальная для модуля обработки
71 m-serg74
 
23.08.12
21:59
(70) ни причем это сделал вот:


Процедура Сформировать()
   Форма.ОбработкаОжидания("");
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   //ЗагрузитьТаблицуЗначений(Файл,ТЗисключениеКлиенты);
   Если ТЗисключениеКлиенты = 0 Тогда
       Сообщить("0");
   Иначе
       Сообщить("1");
   КонецЕсли;
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,1);
   ТЗисключениеКлиенты.ВыбратьСтроку();
КонецПроцедуры


Процедура ПриОткрытии()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,1);
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   Если ТЗисключениеКлиенты = 0 Тогда
       Сообщить("0");
   Иначе
       Сообщить("1");
   КонецЕсли;
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,1);
   ТЗисключениеКлиенты.ВыбратьСтроку();
   Форма.ОбработкаОжидания("Сформировать",1);
КонецПроцедуры


в при открытии сообщает 1
на выбрать строку ессно ругается
72 Злопчинский
 
23.08.12
21:59
так что если эту переменную в обработке не определять как глобальную - то и абрахамсовский код не нужен - все и так работает.
.
а вот если опрелделить как глобаольную - начинаются косяки.. и абрахомский код это обходит.
73 m-serg74
 
23.08.12
22:00
у меня не определена она как глобальная и уй не пашет
74 Злопчинский
 
23.08.12
22:02
(71) тупишь в очередной раз.
75 Злопчинский
 
23.08.12
22:02
итого:
76 Злопчинский
 
23.08.12
22:03
//*******************************************

Процедура Сформировать()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,1);
   ТЗисключениеКлиенты.ВыбратьСтроку();
КонецПроцедуры


Процедура ПриОткрытии()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,1);
КонецПроцедуры    // ПриОткрытии


работает совершенно нормально
77 Злопчинский
 
23.08.12
22:03
Перем ТЗисключениеКлиенты;

//*******************************************

Процедура Сформировать()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,1);
   ТЗисключениеКлиенты.ВыбратьСтроку();
КонецПроцедуры


Процедура ПриОткрытии()
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,1);
КонецПроцедуры    // ПриОткрытии

не работает...
78 smaharbA
 
23.08.12
22:06
ЗначениеИзФайла(Файл,,1).Выгрузить(ТЗисключениеКлиенты);
79 m-serg74
 
23.08.12
22:09
(77) причем тут тупишь я ж говорю специально делаю проверку с 0

попробуй

Процедура ПриОткрытии()
   
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,1);
   
   ТЗисключениеКлиенты=ПолучитьПустоеЗначение();
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,1);
   
   ТЗисключениеКлиенты.ВыбратьСтроку();

КонецПроцедуры

и тоже будет косяк хоть и нет твоего определения Перем
80 m-serg74
 
23.08.12
22:15
а вот это работает на ура

Процедура ПриОткрытии()
   
   Файл=КаталогИБ()+"_test01.dbf";
   ТЗисключениеКлиенты = СоздатьОбъект("ТаблицаЗначений");
   ТЗисключениеКлиенты.НоваяКолонка("ИД",                "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("Наименование",    "Строка");
   ТЗисключениеКлиенты.НоваяКолонка("ИНН",            "Строка");
   ТЗисключениеКлиенты.НоваяСтрока();
   ТЗисключениеКлиенты.ИД = 1;
   ТЗисключениеКлиенты.Наименование = 2;
   ТЗисключениеКлиенты.ИНН = 3;
   ЗначениеВФайл(Файл,ТЗисключениеКлиенты,0);
   
   ТЗисключениеКлиенты = ПолучитьПустоеЗначение();
   ЗначениеИзФайла(Файл,ТЗисключениеКлиенты,0);
   
   ТЗисключениеКлиенты.ВыбратьСтроку();

КонецПроцедуры
81 Злопчинский
 
23.08.12
22:15
(78) хитрый какой ;-) так работает.. бо возвращается ТЗ, и она уже выгружается в нашу переменную...
.
а вот вторым параметром - хрен
82 NS
 
23.08.12
22:16
(81) Кстати, да (78) менее глючно.
83 smaharbA
 
23.08.12
22:17
(81) согласен, в вб передал бы функцию с возвратом "косвенным" переменной
а тут интересно обороть как есть
84 Злопчинский
 
23.08.12
22:18
(79) да.. не фурычит..
85 Злопчинский
 
23.08.12
22:19
(82) это колдунсвто как в (49)...
обходится проще
прост не использовать получитьпустоезначение() для инициализации принимающей переменной, даже пустую строк уприсвоить - и все ок.
86 Злопчинский
 
23.08.12
22:20
(80) так не покатит, ибо в файле - объекты базы могут быть, а не базовые типы
87 NS
 
23.08.12
22:21
(85) У загрузки вторым параметром еще какие-то глюки были. Если меня не клинит конечно.
88 Злопчинский
 
23.08.12
22:26
(87) угу, сталкивался тоже, например если файлик открыт на просмотр фаром - то не прочитается, в то время как нотепадом нормально прочитается... что-то типа такого...
89 Злопчинский
 
23.08.12
22:28
Короче резюме:
при загрузке ТЗ из файла (а может не только тз - надо проверить) вторым параметром не следует передавать переменную, инициализированную как ПолучитьПустоеЗначение(). Инициализировать следует хотя бы пустой строкой. Или применять обходные/колдунские методы, приведенные выше
90 Злопчинский
 
23.08.12
22:28
два часа коту под хвост
91 Classic
 
23.08.12
22:29
(89)
Ты так и не ответил.
Если переменной вообще ничего не присваивать - прокатит или нет?
92 Злопчинский
 
23.08.12
22:35
(91) ничего не присваивать - тогда с амом прочтом виде - ее надо описать как Перем - локально впроцедуре или глобально в обработке - при этом работает нормуль
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший