Имя: Пароль:
1C
1С v8
Запись из формы списка
0 RogerRU
 
03.10.14
16:28
Есть форма списка справочника
при попытке программно записать данные в справочник:

Товар = Справочники.ТоварыВИнтернетМагазине.Выбрать();

Пока Товар.Следующий() Цикл
    
    ЗаписатьТоварНаСервер(Товар);
    ТоварОб = Товар.ПолучитьОбъект();
    ТоварОб.Синхронизированно = Истина; // меняем реквизит
    ТоварОб.Записать();    // здесь ошибка
    
КонецЦикла;

получаю ошибку:

{Справочник.ТоварыВИнтернетМагазине.Форма.ФормаСписка(1203)}: Ошибка при вызове метода контекста (Записать): Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
    ТоварОб.Записать();    


Предполагаю, что ошибка из за того, что справочник открыт и формой списка и при попытке записать.
Как можно попытаться обойти проблему.
Спасибо.
1 butterbean
 
03.10.14
16:30
что за ЗаписатьТоварНаСервер() ??
2 RogerRU
 
03.10.14
16:31
(1) Моя внутренняя процедура
3 фобка
 
03.10.14
16:32
Сообщить(товар.получитьобъект());
4 Nenaviwu1c20
 
03.10.14
16:35
Твоя внутренняя процедура возвращает тебе пустую ссылку
5 Килограмм
 
03.10.14
16:36
Скорее всего твоя процедура меняет объект, сохранят, в итоге не соответствие версий
6 Килограмм
 
03.10.14
16:37
(5) хотя не, я ошибся
7 RogerRU
 
03.10.14
16:38
(4) Да она вообще ничего не возвращает, она пишет данные на инетсервер не меняя данных, она тут вообще не причем, ее можно вычеркнуть
8 DmitrO
 
03.10.14
16:39
Ошибка из-за того что этот товар был записан другим сеансом в промежуток времени между моментами выполнения строки кода:
ТоварОб = Товар.ПолучитьОбъект();
и строки кода:
ТоварОб.Записать();

Открытая форма списка текущего сеанса тут не причем.
9 Килограмм
 
03.10.14
16:40
(7) уверен? Пробовал прогонять код с закоменченой процедурой?
10 RogerRU
 
03.10.14
16:43
(9) Да, заменил на
ЗаписатьТоварНаСервер(Товар);
    
    ТоварОб = Товар.ПолучитьОбъект();
    ТоварОб.Синхронизированно = Истина;          
    ТоварОб.Записать();

Разницы - никакой
11 ВРедная
 
03.10.14
16:46
Что происходит в "ПриЗаписи"?
12 ВРедная
 
03.10.14
16:46
или "ПередЗаписью"
13 RogerRU
 
03.10.14
16:49
(12) Не понял?
Если ты имеешь в виду события формы списка, то ничего они пустые
14 ВРедная
 
03.10.14
17:04
Я имею в виду соответствующие процедуры модуля объекта Товар
15 RogerRU
 
03.10.14
17:10
(14) Они пустые, т.е. по дефолту.
Я почти уверен, что проблема в том, что стандартная форма списка справочника блокирует справочник на запись
16 DmitrO
 
03.10.14
17:19
(15)
Ловим таракана, свистим - он убегает.
Ловим таракана, отрываем ему ноги, свистим - он не убегает.
Вывод: таракан без ног не слышит!
17 RogerRU
 
03.10.14
17:21
(16) Остроумно, но не по делу
18 DmitrO
 
03.10.14
17:22
(17)по делу было 40 минут назад
19 ВРедная
 
03.10.14
17:26
(15) Т.е. ты хочешь сказать, что при открытой форме списка нельзя нажать кнопку "Добавить" заполнить элемент справочника и записать его?

Вообще отладчик в руки и ходи смотри, чем там изменялся твой объект.
20 RogerRU
 
03.10.14
17:27
(18) если имеется в виду что по делу это (8) так вот нет.
Код:
    ТоварОб = Товар.ПолучитьОбъект();
      ТоварОб.Синхронизированно = Истина;          
    ТоварОб.Записать();    


Ничего не меняет
21 RogerRU
 
03.10.14
17:30
(19) Я хочу сказать что в форме списка способ изменения данных через ПолучитьОъект() не работает (или я что то не так делаю) и прошу совета как это обойти/делать правильно
22 RogerRU
 
04.10.14
12:31
Вообщем разобрался.
Ошибка была в том, что я пытался записать в открытую выборку
Надо было сделать запрос потом .Выгрузить(), ну и далее как обычно.
23 Килограмм
 
06.10.14
10:08
(22) эх, жаль что иногда ошибки так туманно описывает 1С, из одного описания и не въедешь, что дело было в этом.