|
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
|
|
|||
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) прими извинения был не прав)))
причем интересная фуйня
сообщает 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) ни причем это сделал вот:
в при открытии сообщает 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) ничего не присваивать - тогда с амом прочтом виде - ее надо описать как Перем - локально впроцедуре или глобально в обработке - при этом работает нормуль
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |