|
v7: Не могу понять НайтиДокумент | ☑ | ||
---|---|---|---|---|
0
1Сергей
13.07.11
✎
10:24
|
Иногда работает, иногда нет:
Док=СоздатьОбъект("Документ"); Док.НайтиДокумент(...); сейчас пишет Док.НайтиДокумент(СписокСуществующийДокументов.ПолучитьЗначение(Идн)); {Обработка.ПереносДокументовИзТиС.Форма.Модуль(682)}: Недопустимая операция |
|||
1
ДенисЧ
13.07.11
✎
10:24
|
Сообщить(СписокСуществующийДокументов.ПолучитьЗначение(Идн));
? |
|||
2
Ms Test
13.07.11
✎
10:25
|
а что внутри НайтиДокумент()?
|
|||
3
Ёпрст
13.07.11
✎
10:25
|
(1) "Реализация"
|
|||
4
ДенисЧ
13.07.11
✎
10:26
|
(3) Раздуваешь огонь :-)
|
|||
5
1Сергей
13.07.11
✎
10:27
|
(1) сек. обработка долго делается
|
|||
6
1Сергей
13.07.11
✎
10:29
|
Заполняется так:
СписокСуществующийДокументов=СоздатьОбъект("СписокЗначений"); Док.ВыбратьДокументы(НачДата,КонДата); Пока Док.ПолучитьДокумент()=1 Цикл Если СписокВидовДокументовТут.НайтиЗначение(Док.Вид())=0 Тогда Продолжить; КонецЕсли; Если (Док.Фирма = Фирма) И (Док.Проведен()=1) Тогда СписокСуществующийДокументов.ДобавитьЗначение(Док.ТекущийДокумент()); КонецЕсли; КонецЦикла; |
|||
7
1Сергей
13.07.11
✎
10:32
|
(1) вроде нормальная ссылка на документ
Производство 4 (31.01.07) |
|||
8
1Сергей
13.07.11
✎
10:33
|
Если
Док=СоздатьОбъект("Документ.Производство"); то работает нормально. А так: Док=СоздатьОбъект("Документ"); ошибка |
|||
9
Ёпрст
13.07.11
✎
10:34
|
(7) переменную Док поди где-то переопределил на документ с типом, а не просто Документ
Или есть такой реквизит формы. |
|||
10
Рэйв
13.07.11
✎
10:35
|
(0)Если инд выходит за размер списка, то ругаться не будет, но и вернет фиг с маслом, по которому естессно и получишь ругань как в сабже
|
|||
11
1Сергей
13.07.11
✎
10:35
|
(9) блин, точно. переопределил.
Сорри за то, что потратили время :) |
|||
12
Ёпрст
13.07.11
✎
10:36
|
(10) еще как будет - "индекс выходит за размеры списка"
|
|||
13
Рэйв
13.07.11
✎
10:37
|
(12)В табло проверил, просто пусто, ошибкой не ругается
|
|||
14
1Сергей
13.07.11
✎
10:40
|
(13) врёшь
|
|||
15
Рэйв
13.07.11
✎
10:41
|
+(13)ТипЗначенияСтр() дает ""
|
|||
16
Рэйв
13.07.11
✎
10:46
|
||||
17
Рэйв
13.07.11
✎
10:50
|
(14)Это на массив бы оно ругнулось на индекс.
|
|||
18
andrewks
13.07.11
✎
10:51
|
(16) а ч/з Сообщить()? :)
|
|||
19
Рэйв
13.07.11
✎
10:54
|
(18)Ругнулся, но тем не менее вывел полученную пустую строку:)
|
|||
20
Ёпрст
13.07.11
✎
10:54
|
(16) враньё!!!!!!!!!!!!!!!
Процедура Сформировать() СЗ = СоздатьОбъект("СписокЗначений"); СЗ.ДобавитьЗначение(1); Сообщить(СЗ.ПолучитьЗначение(2)); КонецПроцедуры Сообщить(СЗ.ПолучитьЗначение(2)); {_СЗ.ERT(5)}: Индекс не входит в границы списка значений. |
|||
21
andrewks
13.07.11
✎
10:54
|
(19) вот!
|
|||
22
Рэйв
13.07.11
✎
10:55
|
(20)Ну ты же не хочешь сказать, что (16) я в фотошопе рисовал?:))
Видимо это фича отладчика:) |
|||
23
Ёпрст
13.07.11
✎
10:56
|
(22) жуколов еще и не то умеет, а ошибка есть была и будет.
|
|||
24
Рэйв
13.07.11
✎
10:56
|
(23)Да, но не критическая тем не менее.програма продолжает отрабатывать.Просто ставят в извесность:)
|
|||
25
andrewks
13.07.11
✎
10:58
|
(24) нифига она не продолжает отрабатывать
|
|||
26
Ёпрст
13.07.11
✎
10:58
|
(24) еще раз - врешь. Это критическая ошибка и код прекратит своё выполнение.
|
|||
27
Рэйв
13.07.11
✎
10:58
|
(25)Проверь. Сообщить у меня вывело вполне нормально и открыло форму
|
|||
28
andrewks
13.07.11
✎
10:58
|
(26) возможно, он имеет в виду в отладчике?
|
|||
29
Рэйв
13.07.11
✎
10:59
|
(25)Сообщить в оттладчике?:))
может вам обработку выложить?:) Или сами проверите? |
|||
30
andrewks
13.07.11
✎
11:01
|
(29) я и так вижу твой код, просто у тебя эта строчка - последняя в обработчике открытия. ты после неё что-нить поставь, и увидишь, что выполнение кода прекращается
|
|||
31
Ёпрст
13.07.11
✎
11:01
|
(27) не тупи да ?
Где у тебя в коде строчка сп.ПолучитьЗначение(3) перед ОткрытьФорму ? То что ты там в табло пишешь - никакого отношения к выполняемому коду не имеет, если что.. Можешь там что угодно писать. В Предприятии - в том числе. |
|||
32
Рэйв
13.07.11
✎
11:01
|
||||
33
Рэйв
13.07.11
✎
11:02
|
форма тоже открывается ПОСЛЕ
|
|||
34
Ёпрст
13.07.11
✎
11:03
|
(32) может быть, надо поглядеть.
:) |
|||
35
andrewks
13.07.11
✎
11:03
|
() етить... а что ей помешает открыться-то? тебе про прекращение выполнения кода говорят
|
|||
36
andrewks
13.07.11
✎
11:03
|
(35) к (33)
|
|||
37
Рэйв
13.07.11
✎
11:04
|
(34)
Код: Процедура ПриОткрытии() сп=СоздатьОбъект("СписокЗначений"); сп.ДобавитьЗначение("1"); сп.ДобавитьЗначение("2 "); Зн=сп.ПолучитьЗначение(3); Сообщить("Вот вам : '"+Зн+"'") КонецПроцедуры :-) |
|||
38
Рэйв
13.07.11
✎
11:04
|
(35)Если бы прекратилось выполнение кода, Сообщить бы не отработало
|
|||
39
andrewks
13.07.11
✎
11:05
|
(38) погодь, щаз затестю
|
|||
40
Ёпрст
13.07.11
✎
11:07
|
(37) работает, видать работает так же как и ошибки в шаблоне или в формуле ячеек таблицы - ошибки показывает, но код не прерывает.
|
|||
41
andrewks
13.07.11
✎
11:08
|
(38) твоя взяла, не останавливается.
|
|||
42
Рэйв
13.07.11
✎
11:09
|
(40)Причем значение то какое то все равно в зн загоняет.
Наверное обработка ошибки в самом методе .ПолучитьЗначение() и в случае выхода за размер возвращает пустую строку |
|||
43
Рэйв
13.07.11
✎
11:09
|
(41):-)
|
|||
44
andrewks
13.07.11
✎
11:10
|
(42) видимо, отрабатывает, как в Получить(), только там сообщения не возникает вообще, если нет такого значения
|
|||
45
trdm
13.07.11
✎
11:16
|
(0) пе
вДокИзСписка = СписокСуществующийДокументов.ПолучитьЗначение(Идн) Док=СоздатьОбъект("Документ."+вДокИзСписка.Вид()); Док.НайтиДокумент(вДокИзСписка); |
|||
46
trdm
13.07.11
✎
11:18
|
+(45) Док - должен быть именно того вида, документ которого ищется тут Док.НайтиДокумент(вДокИзСписка);
|
|||
47
ДенисЧ
13.07.11
✎
11:18
|
(46) не обязательно
|
|||
48
1Сергей
13.07.11
✎
12:41
|
(47)+1
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |