|   |   | 
| 
 | 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     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |