|
Ошибка при записи в регистр сведений. | ☑ | ||
---|---|---|---|---|
0
Zareshivatel
10.10.16
✎
20:36
|
Регистр независимый, периодический. Возникает ошибка времени выполнения: ошибка при вызове метода контекста(записать) в модуле...
Вот такой код: Попытка НачатьТранзакцию(); НаборЗаписей = РегистрыСведений.озм_ИсполнителиЗаказов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Заказ.Установить(Заказ); НаборЗаписей.Отбор.Исполнитель.Установить(Исполнитель); НаборЗаписей.Отбор.Этап.Установить(Этап); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда НовыйИсполнитель = НаборЗаписей.Добавить(); НовыйИсполнитель.Заказ = Заказ; НовыйИсполнитель.Исполнитель = Исполнитель; НовыйИсполнитель.Комментарий = Комментарий; НовыйИсполнитель.Этап = Этап; ИначеЕсли НаборЗаписей.Количество() = 1 Тогда НовыйИсполнитель = НаборЗаписей[0]; НовыйИсполнитель.Комментарий = Комментарий; ИзменитьСуществующуюЗадачу(Заказ, Исполнитель); КонецЕсли; НаборЗаписей.Записать(); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); КонецПопытки; Ошибка возникает на строк НаборЗаписей.Записать(); Все отборы и присваиваемые значения по типам соответствуют измерениям (заказ, этап, исполнитель) и реквизиту (комментарий). В чем косяк, товарищи? |
|||
1
Zareshivatel
10.10.16
✎
20:37
|
Если это вдруг важно: сейчас регистр пустой
|
|||
2
shuhard
10.10.16
✎
20:43
|
(0)[Исключение
ОтменитьТранзакцию();] убери |
|||
3
RomanYS
10.10.16
✎
20:43
|
Викторина, угадай какой текст ошибки у ТС.
|
|||
4
Zareshivatel
10.10.16
✎
20:48
|
(3) я же написал "ошибка времени выполнения: ошибка при вызове метода контекста(записать) в модуле...". Там дальше ссылка на модуль и строку кода.
"По причине..." - этого нет. |
|||
5
RomanYS
10.10.16
✎
20:50
|
(4) "Там дальше ссылка на модуль и строку кода. "
Так открой - ошибка в той самой строчке кода. |
|||
6
Zareshivatel
10.10.16
✎
20:50
|
(2) Как же я уберу "исключение", если у меня вверху есть "Попытка"?) Или ты вообще предлагаешь эту конструкцию убрать?
|
|||
7
hhhh
10.10.16
✎
20:51
|
(4) ну проверь все процедуры ПередЗаписью и ПриЗаписи. Если их меньше десяти, можешь их сюда выложить.
|
|||
8
Zareshivatel
10.10.16
✎
20:52
|
(5) я же указал в (0), в какой строке выложенного кода ошибка..(!?)
|
|||
9
Zareshivatel
10.10.16
✎
20:56
|
(7) Ошибка возникает при записи в регистр сведений. Это модуль формы
|
|||
10
hhhh
10.10.16
✎
20:59
|
(9) какая разница? Вс1 равно по-полной вызываются всен 70 процедур при записи и перед записью. Или сколько их у вас?
|
|||
11
Zareshivatel
10.10.16
✎
21:01
|
(10) 0, например :)
|
|||
12
hhhh
10.10.16
✎
21:03
|
(11) ну если ты записываешь регистр, значит должна вызываться процедура при записи этого регистра. Правильно?
|
|||
13
RomanYS
10.10.16
✎
21:03
|
(8) тогда смотри модуль объекта и лови отладчиком Отказ = Истина в одном из обработчиков (перед/при записи)
|
|||
14
Zareshivatel
10.10.16
✎
21:09
|
(13) Это самописная обработка, модуль объекта пустой
(12) Регистр я сам создал, нет было у меня в модуле набора записей ничего. Подумал, что, быть может, обязано быть, скопировал процедуру "перед записью" из другого РС: Процедура ПередЗаписью(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); КонецПроцедуры ничего не изменилось |
|||
15
Zareshivatel
10.10.16
✎
21:10
|
Раньше подобные вещи делал уже - ошибок не было. Да и где им тут взяться, казалось бы. Единственный нюанс: у меня нет ресурсов в этом регистре. Как-то может влиять?
|
|||
16
hhhh
10.10.16
✎
21:11
|
(14) не у обработки. У регистра смотри.
|
|||
17
RomanYS
10.10.16
✎
21:13
|
(14) у регистра конечно. Может он(регистр) в какие-то общие подписки попал
|
|||
18
hhhh
10.10.16
✎
21:13
|
(14) подписки на события все проверь
|
|||
19
Zareshivatel
10.10.16
✎
21:13
|
(16) я и говорю: регистр этот мой. Модуль менеджера и модуль набора записей у него пустой. Соответственно, нет там процедур, связанных с записью
|
|||
20
RomanYS
10.10.16
✎
21:18
|
(19) остановись отладчиком на НаборЗаписей.Записать(); и включи замер производительности - увидишь весь код, который исполняется при обработке записи
|
|||
21
Zareshivatel
10.10.16
✎
21:23
|
(20) Ага. Ну вот смотрите:
Процедура ПередЗаписьюОбщихДанных(Объект, Отказ) Если Объект.ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ТолькоПросмотр = Ложь; АвтономнаяРаботаСлужебный.ОпределитьВозможностьИзмененияДанных(Объект.Метаданные(), ТолькоПросмотр); Если ТолькоПросмотр Тогда СтрокаОшибки = НСтр("ru = 'Изменение неразделенных данных (%1), загружаемых из приложения, в Автономном рабочем месте запрещено. |Обратитесь к администратору.'"); СтрокаОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаОшибки, Строка(Объект)); ВызватьИсключение СтрокаОшибки; КонецЕсли; КонецПроцедуры И процедура из АвтономнаяРаботаСлужебный: // Определяет возможность внесения изменений в объект // Объект нельзя записать в Автономном рабочем месте, если он одновременно соответствует следующим условиям: // 1. Это автономное рабочее место. // 2. Это неразделенный объект метаданных. // 3. Этот объект входит в состав плана обмена автономной работы. // 4. Не входит в список исключений. // // Параметры: // ОбъектМетаданных - Метаданные проверяемого объекта // Только просмотр - Булево - Если Истина, то объект доступен только для просмотра. // Процедура ОпределитьВозможностьИзмененияДанных(ОбъектМетаданных, ТолькоПросмотр) Экспорт УстановитьПривилегированныйРежим(Истина); ТолькоПросмотр = ЭтоАвтономноеРабочееМесто() И (Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ОбъектМетаданных.ПолноеИмя(), ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных()) И Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ОбъектМетаданных.ПолноеИмя(), ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных())) И Не ОбъектМетаданныхЯвляетсяИсключением(ОбъектМетаданных) И Метаданные.ПланыОбмена[ПланОбменаАвтономнойРаботы()].Состав.Содержит(ОбъектМетаданных); КонецПроцедуры В переменной ТолькоПросмотр возвращается "Ложь". То есть вроде бы все норм |
|||
22
Zareshivatel
10.10.16
✎
21:24
|
Блин, что же так криво вставляет код-то...извиняюсь
|
|||
23
Zareshivatel
10.10.16
✎
21:26
|
(18) Как это сделать, если в erp подписок не меньше сотни?)
|
|||
24
Zareshivatel
10.10.16
✎
21:31
|
Мужики, отбой)))
|
|||
25
Zareshivatel
10.10.16
✎
21:32
|
Я вот что-то предполагал, что период автоматически система должна поставить. А нет - попробовал вручную текущую дату присвоить, прокатило.
Спасибо! |
|||
26
RomanYS
10.10.16
✎
21:32
|
(23) они все должны попасть в отладку
|
|||
27
RomanYS
10.10.16
✎
21:33
|
(25) и система ни слова не сказала по пустой период - не верю)
|
|||
28
Zareshivatel
10.10.16
✎
21:40
|
||||
29
DrShad
10.10.16
✎
21:42
|
(28) наборы записей в модуле формы!? ужас
|
|||
30
RomanYS
10.10.16
✎
21:43
|
(28) у тебя 1с плохая)), у меня говорит
{Обработка.Обработка5.Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Записать) Набор.Записать(); по причине: Запись не верна! Период не может быть пустым!: РегистрСведений3: 01.01.0001, sdsd (Регистр сведений: РегистрСведений3; Номер строки: 1) |
|||
31
Zareshivatel
10.10.16
✎
21:46
|
(30) обновлю платформу)
(29) Чем это плохо? Правило дурного тона? Ухудшение производительности? Прошу объяснить или ссылку на статью хотя бы. От ваших пустых возгласов ума у меня не прибавиться)) |
|||
32
Zareshivatel
10.10.16
✎
21:47
|
Не прибавится* Брр, пора спать идти)
|
|||
33
RomanYS
10.10.16
✎
21:58
|
а если после "исключение" вставить
Сообщить(ОписаниеОшибки()); ??? |
|||
34
Zareshivatel
11.10.16
✎
06:29
|
(33) Да, тогда то, что у тебя))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |