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



Ошибка при записи в регистр сведений.

Ошибка при записи в регистр сведений.
Я
   Zareshivatel
 
10.10.16 - 20:36
Регистр независимый, периодический. Возникает ошибка времени выполнения: ошибка при вызове метода контекста(записать) в модуле...
Вот такой код:

Попытка
        
НачатьТранзакцию(); 
        


        НаборЗаписей = РегистрыСведений.озм_ИсполнителиЗаказов.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Заказ.Установить(Заказ);
        НаборЗаписей.Отбор.Исполнитель.Установить(Исполнитель);
        НаборЗаписей.Отбор.Этап.Установить(Этап);
        НаборЗаписей.Прочитать();
        
        Если НаборЗаписей.Количество() = 0 Тогда
            НовыйИсполнитель                = НаборЗаписей.Добавить();
            НовыйИсполнитель.Заказ            = Заказ;
            НовыйИсполнитель.Исполнитель    = Исполнитель; 
            НовыйИсполнитель.Комментарий    = Комментарий;
            НовыйИсполнитель.Этап            = Этап;
        ИначеЕсли НаборЗаписей.Количество() = 1 Тогда
            НовыйИсполнитель        = НаборЗаписей[0];
            НовыйИсполнитель.Комментарий    = Комментарий;
            ИзменитьСуществующуюЗадачу(Заказ, Исполнитель);
        КонецЕсли;
        
        НаборЗаписей.Записать();    
        
        ЗафиксироватьТранзакцию();
        
    Исключение
        
        ОтменитьТранзакцию();
        
    КонецПопытки;  

Ошибка возникает на строк НаборЗаписей.Записать();
Все отборы и присваиваемые значения по типам соответствуют измерениям (заказ, этап, исполнитель) и реквизиту (комментарий). В чем косяк, товарищи?
 
 
   Zareshivatel
 
1 - 10.10.16 - 20:37
Если это вдруг важно: сейчас регистр пустой
   shuhard
 
2 - 10.10.16 - 20:43
(0)[Исключение
        
        ОтменитьТранзакцию();]
убери
   RomanYS
 
3 - 10.10.16 - 20:43
Викторина, угадай какой текст ошибки у ТС.
   Zareshivatel
 
4 - 10.10.16 - 20:48
(3) я же написал "ошибка времени выполнения: ошибка при вызове метода контекста(записать) в модуле...". Там дальше ссылка на модуль и строку кода.
"По причине..." - этого нет.
   RomanYS
 
5 - 10.10.16 - 20:50
(4) "Там дальше ссылка на модуль и строку кода. "
Так открой - ошибка в той самой строчке кода.
   Zareshivatel
 
6 - 10.10.16 - 20:50
(2) Как же я уберу "исключение", если у меня вверху есть "Попытка"?) Или ты вообще предлагаешь эту конструкцию убрать?
   hhhh
 
7 - 10.10.16 - 20:51
(4) ну проверь все процедуры ПередЗаписью и ПриЗаписи. Если их меньше десяти, можешь их сюда выложить.
   Zareshivatel
 
8 - 10.10.16 - 20:52
(5) я же указал в (0), в какой строке выложенного кода ошибка..(!?)
   Zareshivatel
 
9 - 10.10.16 - 20:56
(7) Ошибка возникает при записи в регистр сведений. Это модуль формы
   hhhh
 
10 - 10.10.16 - 20:59
(9) какая разница? Вс1 равно по-полной вызываются всен 70 процедур при записи и перед записью. Или сколько их у вас?
 
 Рекламное место пустует
   Zareshivatel
 
11 - 10.10.16 - 21:01
(10) 0, например :)
   hhhh
 
12 - 10.10.16 - 21:03
(11) ну если ты записываешь регистр, значит должна вызываться процедура при записи этого регистра. Правильно?
   RomanYS
 
13 - 10.10.16 - 21:03
(8) тогда смотри модуль объекта и лови отладчиком Отказ = Истина в одном из обработчиков (перед/при записи)
   Zareshivatel
 
14 - 10.10.16 - 21:09
(13) Это самописная обработка, модуль объекта пустой

(12) Регистр я сам создал, нет было у меня в модуле набора записей ничего. Подумал, что, быть может, обязано быть, скопировал процедуру "перед записью" из другого РС:

Процедура ПередЗаписью(Отказ, Замещение)
    
    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);

КонецПроцедуры


ничего не изменилось
   Zareshivatel
 
15 - 10.10.16 - 21:10
Раньше подобные вещи делал уже - ошибок не было. Да и где им тут взяться, казалось бы. Единственный нюанс: у меня нет ресурсов в этом регистре. Как-то может влиять?
   hhhh
 
16 - 10.10.16 - 21:11
(14) не у обработки. У регистра смотри.
   RomanYS
 
17 - 10.10.16 - 21:13
(14) у регистра конечно. Может он(регистр) в какие-то общие подписки попал
   hhhh
 
18 - 10.10.16 - 21:13
(14) подписки на события все проверь
   Zareshivatel
 
19 - 10.10.16 - 21:13
(16) я и говорю: регистр этот мой. Модуль менеджера и модуль набора записей у него пустой. Соответственно, нет там процедур, связанных с записью
   RomanYS
 
20 - 10.10.16 - 21:18
(19) остановись отладчиком на НаборЗаписей.Записать(); и включи замер производительности - увидишь весь код, который исполняется при обработке записи
   Zareshivatel
 
21 - 10.10.16 - 21:23
(20) Ага. Ну вот смотрите:
Процедура ПередЗаписьюОбщихДанных(Объект, Отказ)
    
    Если Объект.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    ТолькоПросмотр = Ложь;
    АвтономнаяРаботаСлужебный.ОпределитьВозможностьИзмененияДанных(Объект.Метаданные(), ТолькоПросмотр);
    
    Если ТолькоПросмотр Тогда
        СтрокаОшибки = НСтр("ru = 'Изменение неразделенных данных (%1), загружаемых из приложения, в Автономном рабочем месте запрещено.
        |Обратитесь к администратору.'");
        СтрокаОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаОшибки, Строка(Объект));
        ВызватьИсключение СтрокаОшибки;
    КонецЕсли;
    
КонецПроцедуры


И процедура из АвтономнаяРаботаСлужебный:

// Определяет возможность внесения изменений в объект

// Объект нельзя записать в Автономном рабочем месте, если он одновременно соответствует следующим условиям:
//    1. Это автономное рабочее место.

//    2. Это неразделенный объект метаданных.
//    3. Этот объект входит в состав плана обмена автономной работы.

//    4. Не входит в список исключений.
//

// Параметры:
//    ОбъектМетаданных - Метаданные проверяемого объекта

//    Только просмотр - Булево - Если Истина, то объект доступен только для просмотра.
//

Процедура ОпределитьВозможностьИзмененияДанных(ОбъектМетаданных, ТолькоПросмотр) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТолькоПросмотр = ЭтоАвтономноеРабочееМесто()
        И (Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ОбъектМетаданных.ПолноеИмя(),
            ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных())
            И Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ОбъектМетаданных.ПолноеИмя(),
                ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных()))
        И Не ОбъектМетаданныхЯвляетсяИсключением(ОбъектМетаданных)
        И Метаданные.ПланыОбмена[ПланОбменаАвтономнойРаботы()].Состав.Содержит(ОбъектМетаданных);
    
КонецПроцедуры


В переменной ТолькоПросмотр  возвращается "Ложь". То есть вроде бы все норм
   Zareshivatel
 
22 - 10.10.16 - 21:24
Блин, что же так криво вставляет код-то...извиняюсь
   Zareshivatel
 
23 - 10.10.16 - 21:26
(18) Как это сделать, если в erp подписок не меньше сотни?)
   Zareshivatel
 
24 - 10.10.16 - 21:31
Мужики, отбой)))
   Zareshivatel
 
25 - 10.10.16 - 21:32
Я вот что-то предполагал, что период автоматически система должна поставить. А нет - попробовал вручную текущую дату присвоить, прокатило.

Спасибо!
   RomanYS
 
26 - 10.10.16 - 21:32
(23) они все должны попасть в отладку
   RomanYS
 
27 - 10.10.16 - 21:33
(25) и система ни слова не сказала по пустой период - не верю)
   Zareshivatel
 
28 - 10.10.16 - 21:40
   DrShad
 
29 - 10.10.16 - 21:42
(28) наборы записей в модуле формы!? ужас
   RomanYS
 
30 - 10.10.16 - 21:43
(28) у тебя 1с плохая)), у меня говорит

{Обработка.Обработка5.Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Записать)
    Набор.Записать();
по причине:
Запись не верна! Период не может быть пустым!: РегистрСведений3: 01.01.0001, sdsd (Регистр сведений: РегистрСведений3; Номер строки: 1)
   Zareshivatel
 
31 - 10.10.16 - 21:46
(30) обновлю платформу)
(29) Чем это плохо? Правило дурного тона? Ухудшение производительности? Прошу объяснить или ссылку на статью хотя бы. От ваших пустых возгласов ума у меня не прибавиться))
   Zareshivatel
 
32 - 10.10.16 - 21:47
Не прибавится* Брр, пора спать идти)
   RomanYS
 
33 - 10.10.16 - 21:58
а если после "исключение" вставить 
Сообщить(ОписаниеОшибки());
???
 
 
   Zareshivatel
 
34 - 11.10.16 - 06:29
(33) Да, тогда то, что у тебя))


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