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

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

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

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

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

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

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

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

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


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

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

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

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