Вход | Регистрация


1С:Предприятие ::

Метки: 

Ошибка "Выполнение операции невозможно, так как строка была удалена"

Я
   alexshape
 
18.12.17 - 11:23
Привет всем, такая вот ошибка, и все это после того как я в цикле перебираю строки в модуле объекта документа, и в определенный момент выполняю метод Прочитать(); С чем может быть связанно?
 
 
   asady
 
1 - 18.12.17 - 11:26
(0) код покажи - кривой скорее всего
   Lexey_
 
2 - 18.12.17 - 11:26
(0) с тем, что строка не существует
   alexshape
 
3 - 18.12.17 - 11:28
   igorPetrov
 
4 - 18.12.17 - 11:29
(3) мдя...
   alexshape
 
5 - 18.12.17 - 11:30
(4) есть идеи?
   igorPetrov
 
6 - 18.12.17 - 11:31
(3) Что такое "Прочитать()"?
   alexshape
 
7 - 18.12.17 - 11:31
(6) ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Прочитать (Read)
Синтаксис:

Прочитать()
Описание:

Считывает данные документа из базы данных.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Позволяет прочесть данные заново. Недопустим для нового объекта.
Пример:

РасходнаяНакладная.Прочитать();
   vde69
 
Модератор
8 - 18.12.17 - 11:31
(3) код следует постить СЮДА а не ссылку на картинку
   alexshape
 
9 - 18.12.17 - 11:32
(8) а какая разница?
   igorPetrov
 
10 - 18.12.17 - 11:32
(7) Ну и? Что написано в справке и что у тебя?
 
  Рекламное место пустует
   nordbox
 
11 - 18.12.17 - 11:33
Внимательно код читай
Что ты собралась ЧИТАТЬ???
   igorPetrov
 
12 - 18.12.17 - 11:33
(9) Потому, что твои картинки нах не нужны ни кому.
   alexshape
 
13 - 18.12.17 - 11:33
(10) Если ты что не напрямую, то я просто в модуле объекта выполняюсь
   vicof
 
14 - 18.12.17 - 11:33
"и в определенный момент выполняю метод Прочитать(); С чем может быть связанно?"
Ответ в вопросе.
   nordbox
 
15 - 18.12.17 - 11:34
ОбъектЗадача.Записать()
Прочитать()
Это что???
   igorPetrov
 
16 - 18.12.17 - 11:34
(13) И что из этого следует?
   igorPetrov
 
17 - 18.12.17 - 11:34
(13) Читай справку к "Прочитать()"
   alexshape
 
18 - 18.12.17 - 11:36
(12) Ты умеешь нормально выражать свои мысли?  Я спросил в чем разница между картинкой и текстом, информативность одинаковая.

(11) В модуле объекта документа, я СОБРАЛСЯ читать документ
   alexshape
 
19 - 18.12.17 - 11:37
(15) Это я перечитываю документ, на случай если в задаче я изменю его, перезапишу и тд
   nordbox
 
20 - 18.12.17 - 11:39
ОбъектЗадача.Записать()
ОбъектЗадача.Прочитать()
а чо не вот так?
   alexshape
 
21 - 18.12.17 - 11:41
(20) Я нахожусь в модуле объекта Документа, и мне надо прочитать документ, а не задчу
   DmitrO
 
22 - 18.12.17 - 11:42
(0)Это происходит потому, что при вызове Прочитать() перечитываются и пересоздаются в памяти все данные документа, в том числе и ТЧ, которую перебираешь.

Комиссия премии Дарвина берет на карандашик программистов, которые пишут такой код.
   Табуретко
 
23 - 18.12.17 - 11:45
нам за паяльником сходить или выложите весь код в студию?
   igorPetrov
 
24 - 18.12.17 - 11:46
(21) Покажи пример вызова "Прочитать()" из справки.
   alexshape
 
25 - 18.12.17 - 11:48
(23)  


Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    НужноЗаписать=Ложь;
    Если Состояние=Перечисления.CRM_ТипыСостоянийСобытий.Завершено тогда
        Для каждого стр Из Распоряжения Цикл
            
            Если стр.Задача.Выполнена=Ложь Тогда
                
                Отказ = Истина;
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Для завершения все задачи в списке должны быть выполнены!";
                Сообщение.Поле = "";
                Сообщение.УстановитьДанные(ЭтотОбъект);
                Сообщение.Сообщить();
                прервать;
            КонецЕсли; 
            
        КонецЦикла; 
    ИначеЕсли Распоряжения.Количество() > 0 
        И     ( Состояние = Перечисления.CRM_ТипыСостоянийСобытий.Запланировано 
        ИЛИ Состояние = Перечисления.CRM_ТипыСостоянийСобытий.ВРаботе)Тогда    
        
        Для каждого стр  Из Распоряжения Цикл
            
            Если ЗначениеЗаполнено(стр.Задача) Тогда
                
                Если     
                    НЕ стр.Задача.ПринятаКИсполнению 
                    И НЕ стр.Задача.Выполнена  
                    И     (стр.Задача.Описание<>стр.Описание 
                    ИЛИ стр.Задача.Исполнитель<>стр.Исполнитель 
                    ИЛИ стр.Задача.ДатаНачала<>стр.ДатаНачала 
                    ИЛИ стр.Задача.СрокИсполнения<>стр.ДатаОкончания
                    ИЛИ стр.Задача.Важность<>стр.Важность 
                    ИЛИ стр.Задача.Сложность<>стр.Сложность)  Тогда
                    
                    ОбъектЗадача = стр.Задача.ПолучитьОбъект();
                    ОбъектЗадача.Предмет                    = Ссылка;
                    ОбъектЗадача.ПредметСтрокой                = CRM_БизнесПроцессыИЗадачиСервер.ПредметСтрокой(Ссылка);
                    ОбъектЗадача.Автор                        = ПараметрыСеанса.ТекущийПользователь;
                    ОбъектЗадача.Исполнитель                = стр.Исполнитель;
                    ОбъектЗадача.Наименование                = "Распоряжение " + объектЗадача.ПредметСтрокой;
                    ОбъектЗадача.Дата                        = ТекущаяДата();
                    ОбъектЗадача.ДатаНачала                    = стр.ДатаНачала;
                    ОбъектЗадача.Описание                    = стр.Описание;
                    ОбъектЗадача.CRM_Личная                    = Истина;
                    ОбъектЗадача.Важность                   = стр.Важность;
                    ОбъектЗадача.Сложность                    = Стр.Сложность;
                    ОбъектЗадача.СрокИсполнения             = стр.ДатаОкончания;
                    Попытка
                        ОбъектЗадача.Записать();
                    Исключение
                        Отказ=Истина;
                        Сообщение = Новый СообщениеПользователю;
                        Сообщение.Текст = "Не удалось обновить информацию в задаче из "+Строка(стр.НомерСтроки)+" строки!";
                        Сообщение.Поле = "";
                        Сообщение.УстановитьДанные();
                        Сообщение.Сообщить(); 
                    КонецПопытки;    
                КонецЕсли;
                
                продолжить;
                
            КонецЕсли; 
            
            ОбъектЗадача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
            ОбъектЗадача.Предмет                    = Ссылка;
            ОбъектЗадача.ПредметСтрокой                = CRM_БизнесПроцессыИЗадачиСервер.ПредметСтрокой(Ссылка);
            ОбъектЗадача.Автор                        = ПараметрыСеанса.ТекущийПользователь;
            ОбъектЗадача.Исполнитель                = стр.Исполнитель;
            ОбъектЗадача.Наименование                = "Распоряжение " + объектЗадача.ПредметСтрокой;
            ОбъектЗадача.Дата                        = ТекущаяДата();
            ОбъектЗадача.ДатаНачала                    = стр.ДатаНачала;
            ОбъектЗадача.Описание                    = стр.Описание;
            ОбъектЗадача.CRM_Личная                    = Истина;
            ОбъектЗадача.Важность                   = стр.Важность;
            ОбъектЗадача.Сложность                    = Стр.Сложность;
            ОбъектЗадача.СрокИсполнения             = стр.ДатаОкончания;
            
            ОбъектЗадача.АктивироватьИнтерактивно();
            Попытка
                ОбъектЗадача.Записать(); 
                Прочитать();
                стр = Распоряжения.Получить(ИндексСтроки);
                стр.Задача = ОбъектЗадача.Ссылка;
                НужноЗаписать=Истина;
            Исключение
                отказ = Истина;
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Не удалось создать задачу по "+Строка(стр.НомерСтроки)+" строке";
                Сообщение.Поле = "";
                Сообщение.УстановитьДанные();
                Сообщение.Сообщить();
            КонецПопытки;    
            
        КонецЦикла;
        
    КонецЕсли;
    
    Если НужноЗаписать Тогда    
        Записать(РежимЗаписиДокумента.Запись);
    КонецЕсли;
    
КонецПроцедуры
   alexshape
 
26 - 18.12.17 - 11:48
(24) Пример:

РасходнаяНакладная.Прочитать();
   alexshape
 
27 - 18.12.17 - 11:49
(24) И для чего этот пример?
   alexshape
 
28 - 18.12.17 - 11:50
(25)

стр = Распоряжения.Получить(ИндексСтроки);

на Это не обращайте внимания, это я начал заплатку ставить, оригинальный код без этой строки
   igorPetrov
 
29 - 18.12.17 - 11:52
(26) А у тебя, что написано?
   alexshape
 
30 - 18.12.17 - 11:53
(29) так я и так в модуле объекта, мне не нужна пресловутая "РасходнаяНакладная.", чтобы обратиться к . В это нет ошибки - это 100 %
   igorPetrov
 
31 - 18.12.17 - 11:57
(30) Что говорит отладчик когда ты останавливаешься на строке
"стр = Распоряжения.Получить(ИндексСтроки);" ?
   alexshape
 
32 - 18.12.17 - 11:59
(31) Это строка не в счет, это я начал код править и Вам скинул, без это строки код смотреть надо
   igorPetrov
 
33 - 18.12.17 - 12:00
(32) а какая в счет ? гадать будем?
 
 
   alexshape
 
34 - 18.12.17 - 12:01
(33) все остальное в счет, не надо гадать я еще в (28) это сказал
   igorPetrov
 
35 - 18.12.17 - 12:01
(34) если все не в счет, то где ошибка?
   igorPetrov
 
36 - 18.12.17 - 12:02
(34) и да, см (22) читай внимательно.
   igorPetrov
 
37 - 18.12.17 - 12:04
Интересные эти маленькие мальчики, которые не понимают основ и гнут пальчики свои. Типа крутые такие.
   nordbox
 
38 - 18.12.17 - 12:06
(37) У тебя тема как называется??
>>Ошибка "Выполнение операции невозможно, так как строка была удалена"
Может стоит мозги напрячь??



Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует