Ошибка при вызове метода контекста заблокировать блокировка заблокировать

Управляемые блокировки

Я
   amadeus2010

23.11.12 — 11:14

Добрый день, сразу вопрос. Перевел конфигурацию УПП в режим автоматические и управляемые блокировки,система РА, некоторые документы с регистрами по которым делаются движения переведены в управляемый режим блокировок для исключения взаимоблокировок при одновременном проведении. В процедуру ОбработкаПроведения() для каждого документа добавил такой код

////////////////////////////////////////////////////////

Блокировка = Новый БлокировкаДанных;

   ЭлементБлокировки = Блокировка.Добавить();

   ЭлементБлокировки.Область = «РегистрНакопления.ТоварыОрганизаций»;

   ЭлементБлокировки.Область = «РегистрНакопления.ЗаказыПокупателей»;

   ЭлементБлокировки.Область = «РегистрНакопления.УчетЗатрат»;

   ЭлементБлокировки.Область = «РегистрНакопления.УчетЗатратРегл»;

   ЭлементБлокировки.Область = «РегистрНакопления.Продажи»;

   ЭлементБлокировки.Область = «РегистрНакопления.СвободныеОстатки»;

   ЭлементБлокировки.Область = «РегистрНакопления.ТоварыНаСкладах»;

   ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;

   ЭлементБлокировки.ИсточникДанных =ЭтотОбъект.Товары;

   ЭлементБлокировки.ИспользоватьИзИсточникаДанных(«Номенклатура», «Номенклатура»);

   Блокировка.Заблокировать();

////////////////////////////////////////////////////////////

При одновременном проведении таких документов как РеализацияТоваровУслуг,ПеремещениеТоваров,ВозвратТоваровОтПокупателя выходит Ошибка при вызове метода контекста (Заблокировать)

   Блокировка.Заблокировать()

После этого документы проводятся поочередно.Как можно убрать эту ошибку?

   Нуф-Нуф

1 — 23.11.12 — 11:18

а что за ошибка?

   amadeus2010

2 — 23.11.12 — 11:33

Ошибка при вызове метода контекста (Заблокировать)

  Блокировка.Заблокировать()

Превышено время ожидания, т.е один документ на какие-то доли секунды успевает провестись, а для второго выходит это сообщение.Также у перечисленных выше документов есть общие регистры по которым они делают движения.Может при попытке одновременного проведения,документы пытаются сделать запись в один и тот же регистр и в результате выскакивает эта ошибка? Тогда как можно оптимизировать код установления блокировки?

   Grimnir

3 — 23.11.12 — 12:08

Ну система все правильно пишет. В документах пересекающиеся товары есть?

   amadeus2010

4 — 23.11.12 — 12:13

в принципе есть. Например я проверял работу кода по двум документам, перемещение и возврат.Значит получается что если один товар пытаться провести по двум разным документам выйдет ошибка блокировки, правильно ли я понял?

   ДенисЧ

5 — 23.11.12 — 12:19

(4) логика железная…

   ssh2012

6 — 23.11.12 — 12:19

(0) Странный код, явно избыточные блокировки устанавливаются, зачем он нужен?

   Нуф-Нуф

7 — 23.11.12 — 12:20

все правильно у тебя ошибку выдает. увеличивай скорость проведения

   Reset

8 — 23.11.12 — 12:23

(4) В нормальных условиях, если «один документ на какие-то доли секунды успевает провестись», ошибка не возникнет. Второй документ дождется освобождения и проведется

   ssh2012

9 — 23.11.12 — 12:26

(0) Явную упр блокировку нужно ставить, когда ты прочитал данные из регистра, а затем анализируя полученные данные изменяешь регистр. Пример — партионное списание — перед получением остатков по партиям нужно установить упр исключит блокировку. Это нужно для того, чтобы параллельная транзакция не поменяла данные и не даже не начала чтение, пока не закончится первая транзакция

   Grimnir

10 — 23.11.12 — 12:31

(4) Исходя из твоего кода да. Ты же накладываешь исключительную блокировку на все товары из данного регистра. Если документы по разным складам проводятся, то блокируй в разрезе склада, тогда параллельность будет.

Если по одному, то блокировка обязательно нужна, ты же одни и те же остатки хочешь списать разными документами.

А вообще почитай теорию блокировок и зачем они нужны, инфы сейчас полно.

   amadeus2010

11 — 23.11.12 — 12:35

(7)как можно увеличить скорость проведения?

(10)в принципе товары в документах могут по разным складам проводиться, могут и на один склад. По теории блокировок инфу читал, код с небольшой доработкой был взят из примера на сайте.

   Нуф-Нуф

12 — 23.11.12 — 12:35

(9) фигню сказал

   ssh2012

13 — 23.11.12 — 12:35

(10) > Если по одному, то блокировка обязательно нужна, ты же одни и те же остатки хочешь списать разными документами.

Если идет просто движение по регистру то не нужно никаких блокировок ставить руками, платформа все сама делает

   ssh2012

14 — 23.11.12 — 12:36

(12) обоснуй

   max2309

15 — 23.11.12 — 12:36

(11), Судя по всему часть регистров не перевел в управляемый режим. Есть еще регистры сведений, регистры бухгалтерского учета, последовательности.

   Нуф-Нуф

16 — 23.11.12 — 12:36

кстати да. накладывай более избирательную блокировку

   Нуф-Нуф

17 — 23.11.12 — 12:37

(14) а не. перечитал еще раз. все по теме ) беру слова обратно

   amadeus2010

18 — 23.11.12 — 12:42

(11)у меня в конфигурации стоит смешанный режим блокировки, а это дает возможность системе выбирать какой вид блокировки ставить документам и связанным с ними регистрами. Поэтому управляемую блокировку я поставил на те документы и связанные с ними регистры,которые являются общими для них

   ssh2012

19 — 23.11.12 — 12:46

(18) поставь для нужных документов и регистров упр режим блокировок в конфигураторе и выкинь код установки явных блокировок, там где он не требуется по какой-то логике алгоритма

   amadeus2010

20 — 23.11.12 — 12:55

я поставил для нужных документов и регистров управляемый режим блокировки+ добавил вышеуказанный код в обработку проведения этих документов, в  нужных регистрах только поставил управляемый режим блокировок.

   Леха Дум

21 — 23.11.12 — 13:01

Странно, а что, «БлокироватьДляИзменения = Истина;» в модуле регистра в событии «ПередЗаписью» отменили?

   ssh2012

22 — 23.11.12 — 13:12

(20) зачем код явных блокировок добавлен? Использование режима упр блокировок не означает, что везде нужно прописывать блокировки самостоятельно. Платформа продолжит сама накладывать неявные блокировки там, где это необходимо, но т.к. понижается уровень изоляции транзакций, может возникнуть нарушение логики работы некоторых алгоритмов (пример — контроль остатков до списания), написанных для авто режима, вот там, в нужный момент надо явно установить блокировку.

   Нуф-Нуф

23 — 23.11.12 — 13:14

(22) блокировки в начале накладываются для избежания взаимоблокировок (дедлоков) в случаях непоследовательного захвата ресурсов разными документами.

   pavig

24 — 23.11.12 — 13:14

(9) плюсую

(0) явно не нужная блокировка, убирай к чертем

(21) именно это ему и надо в данном случае

(22) плюсую

   pavig

25 — 23.11.12 — 13:17

(23) скорее всего, дедлоки у него и не вылезут, зато избыточность блокировки явная. Я бы исходил из проблем: есть проблема дедлока — решал бы. Вряд ли у него они проявятся.

   pavig

26 — 23.11.12 — 13:18

кстати, код:

   ЭлементБлокировки.Область = «РегистрНакопления.ТоварыОрганизаций»;

   ЭлементБлокировки.Область = «РегистрНакопления.ЗаказыПокупателей»;

   ЭлементБлокировки.Область = «РегистрНакопления.УчетЗатрат»;

   ЭлементБлокировки.Область = «РегистрНакопления.УчетЗатратРегл»;

   ЭлементБлокировки.Область = «РегистрНакопления.Продажи»;

никого не смущает? мне одному кажется что заблокируется только область, описанная в последней инструкции?

   Нуф-Нуф

27 — 23.11.12 — 13:22

(25) в принципе верно говоришь

   Grimnir

28 — 23.11.12 — 13:24

(26) Кстати да :) Слона-то я и не приметил

   ssh2012

29 — 23.11.12 — 13:27

(23) по ситуации нужно смотреть, явно залочить все регистры  это не решение

   max2309

30 — 23.11.12 — 13:43

(0) Так,как режим стоит «автоматические и управляемые блокировки», то возможно проблема даже не в коде вовсе?. На сколько я помню при таком режиме работы, если что то «сверху» по метаданным стоит в режиме  «автоматической блокировки», то вся «операция» переводиться в автоматическую блокировку, соответственно и все регистры блокируются в автоматическом режиме. Например один из регистров не переведен в управляемую блокировку. ? Или в документе стоит автоматическое удаление движений. Но в УПП по моему стоит «не автоматическое удаление». Возможно автору все регистры перевести в режим управляемый блокировок.?

   Леха Дум

31 — 23.11.12 — 14:00

(30) как правило, при попытке наложения разных вариантов блокировок объектов в одной транзакции платформа начинает материться

   amadeus2010

32 — 23.11.12 — 14:04

(30)все регистры переводить в управляемый режим блокировок,замучаешься,ведь их полно.

(21)это обязательно делать если регистр переведен в управляемый режим блокировки?

(31)следует ли перевести целиком конфигурацию в управляемый режим блокировки, а документы и регистры оставить как есть?

   Нуф-Нуф

33 — 23.11.12 — 14:07

(32) переводи конфигу в управляемый режим. этого будет достаточно

   ЧеловекДуши

34 — 23.11.12 — 14:10

(32)Зачем тебе эту головную боль?

Что ты ожидаешь увидеть при управляемых блокировках?

   Леха Дум

35 — 23.11.12 — 14:15

В каждом регистре делаешь как в (21), конфу переводишь в управляемый режим. Я к этому еще и контроль остатков переписывал — за примером его работы в УТ11.

(34) основной эффект после выполнения вышеописанного — существенное сокращение времени блокировки при проведении документов — блокировки накладываются в момент записи в регистр. Контроль остатков смотрит только на возникновение отрицательных остатков после записи наборов данных, но до завершения транзакции.

   amadeus2010

36 — 23.11.12 — 14:16

хорошо, предположим перевел конфигурацию на управляемый режим блокировок, убрал код из обработки проведения, но не будет ли конфликта от того что вся конфа под управляемым режимом, а документы и регистры часть в управляемом, часть в автоматическом режимах?

(34) вся затея по написанию этого кода от того что возникла необходимость решить вопрос взаимоблокировок при одновременном проведениии некоторых документов, у которых есть общие регистры

   Нуф-Нуф

37 — 23.11.12 — 14:17

(35) +1

   Нуф-Нуф

38 — 23.11.12 — 14:17

(36) если конфига в управляемом режиме — то пофиг что у объектов стоит

   EasyRider

39 — 23.11.12 — 14:17

(36)во всех этих регистрах нужен контроль остатков?

   Нуф-Нуф

40 — 23.11.12 — 14:19

(36) я думаю идея с управляемым режимом — это уход от ожидания на блокировках, а не уход от взаимоблокировок. взаимоблокировки у тебя еще впереди

   amadeus2010

41 — 23.11.12 — 14:19

(35)+(38) т.е при этом изчезает проблема с взаимоблокировками?

   Нуф-Нуф

42 — 23.11.12 — 14:21

(41) взаимоблокировки — неразрешимые блокировки, дедлок. когда два документа захватили одни ресурсы и не могут разойтись.

а ожидания на блокировках — это когда документы работают с общими ресурсами, и один ждет пока закончится транзакция другого. именно этого и позволяет избежать (точнее уменьшить вероятность такого) управляемый режим

   Нуф-Нуф

43 — 23.11.12 — 14:22

какая у тебя вообще сейчас проблема? пользователи получают сообщения «вы стали жертвой дедлока?»

   amadeus2010

44 — 23.11.12 — 14:27

(42) т.е дедлок неизлечимая болезнь конфигурации

(43) что-то в этом духе, особенно при попытке одновременного проведения, реализация товаров, перемещение товаров и возврат товаров.

(39)в большинстве из них.Часть проблемы решилась за счет перевода в РАУЗ

   amadeus2010

45 — 23.11.12 — 14:30

(21) кроме «БлокироватьДляИзменения = Истина;» нужно что то еще дописать в коде?

   Нуф-Нуф

46 — 23.11.12 — 14:31

(44) тогда у тебя точно дедлоки. но это излечимо — как раз установкой предварительной блокировки на те ресурсы, которые будут изменяться в модуле проведения. только устанавливать их надо грамотно, не на все подряд, а с максимальным количеством отборов, иначе уже есть риск нарваться избыточные блокировки

   ssh2012

47 — 23.11.12 — 14:33

(35) > В каждом регистре делаешь как в (21)

Какой смысл так делать везде? (БлокироватьДляИзменения = Истина;)? Это нужно только там где есть контроль остатков после записи. Писать БлокироватьДляИзменения [в модуле регистра в событии «ПередЗаписью»] без разбора имхо неверно.

   amadeus2010

48 — 23.11.12 — 14:33

(46) я так думаю что можно сделать отбор по складам

   Нуф-Нуф

49 — 23.11.12 — 14:34

(47) +1

   Нуф-Нуф

50 — 23.11.12 — 14:34

(48) как минимум

   amadeus2010

51 — 23.11.12 — 14:40

еще как правильней ЭлементБлокировки = Блокировка.Добавить(РегистрНакопления.ТоварыОрганизаций);

или так

   ЭлементБлокировки.Область = «РегистрНакопления.ТоварыОрганизаций»;

   pavig

52 — 23.11.12 — 14:40

(40) +1 ^-)

   amadeus2010

53 — 23.11.12 — 14:41

потому что в синтаксис помощнике 1С пишется Блокировка.Добавить(РегистрНакопления.ТоварыОрганизаций); , а в примерах ЭлементБлокировки.Область = «РегистрНакопления.ТоварыОрганизаций»;

   Нуф-Нуф

54 — 23.11.12 — 14:43

в типовой ут 11 посмотри реализацию

   Reset

55 — 23.11.12 — 14:43

(51) Это однофигственно

   Reset

56 — 23.11.12 — 14:47

(51) Только, разумеется, в 1м случае имя пространства нужно тоже в кавычках

   amadeus2010

57 — 23.11.12 — 14:57

понятно, сейчас стало немного

   max2309

58 — 23.11.12 — 15:01

(57) А у тебя же SQL версия да?

   amadeus2010

59 — 23.11.12 — 15:02

скл 2088 р2

   max2309

60 — 23.11.12 — 15:15

(59) — Возможно, тебе придется полностью модуль проведения переписывать по документам, сложно, долго, но это единственный вариант. Только он даст эффект «качественного» проведения.  С блокировками стоит потренироваться на каркасной конфигурации для начала. Возможно придется избавится в конфигурации от «тормозящих» объектов. Если конечно бесстрашный в УПП такое делать. :)

   amadeus2010

61 — 23.11.12 — 15:23

(59) иного не остается, и так конфа не тиовая, частично переписанная, но хотелось бы решить вопрос окончательно по взаимоблокировкам

   amadeus2010

62 — 26.11.12 — 13:57

Добрый день в продолжении темы взаимоблокировок.Вернул с РАУЗ на партионный учет, онлайн списание по партиям, режим блокировок управляемый, в регистрах там где необходимо стоит БлокироватьДляИзменений=Истина, в обработке проведения оставил

/////////////////////////////////////////////////

Блокировка = Новый БлокировкаДанных;

   ЭлементБлокировки = Блокировка.Добавить();

   ЭлементБлокировки.Область = «РегистрНакопления.УчетЗатрат»;

   ЭлементБлокировки.Область = «РегистрНакопления.УчетЗатратРегл»;

   ЭлементБлокировки.Область = «РегистрНакопления.СвободныеОстатки»;

   ЭлементБлокировки.Область = «РегистрНакопления.Продажи»;

   ЭлементБлокировки.Область = «РегистрНакопления.ТоварыНаСкладах»;

   ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;

   ЭлементБлокировки.ИсточникДанных =ЭтотОбъект.Товары;

   ЭлементБлокировки.ИспользоватьИзИсточникаДанных(«Номенклатура», «Номенклатура»);

   ЭлементБлокировки.ИспользоватьИзИсточникаДанных(«Склад», «Склад»);

   Блокировка.Заблокировать();

/////////////////////////////////////////////////////////

но все равно выходит ошибка блокировки при выполнении транзакции, превышено время ожидания.

   amadeus2010

63 — 26.11.12 — 14:26

ПОЛУЧАЕТСЯ ЧТО ПРИ СПИСАНИЕ ПО ПАРТИЯ ОНЛАЙН ПРОИСХОДИТ ОЖИДАНИЕ ПО ВРЕМЕНИ ПРИ БЛОКИРОВКАХ. В КОНФИГУРАТОРЕ В АДМИНИСТРИРОВАНИИ В НАСТРОЙКАХ ИБ УВЕЛИЧИЛ ВРЕМЯ ОЖИДАНИЯ ПРИ БЛОКИРОВКАХ ДО 30 СЕК. ЧТО ЕЩЕ МОЖНО СДЕЛАТЬ?

   krbIso

64 — 26.11.12 — 14:33

Ожидание происходит потому что граница последовательности по одной организации это одна запись в таблице.

Расчет себестоимости в онлайне невозможен. Увеличивать время таймаута нельзя.

   amadeus2010

65 — 26.11.12 — 15:01

что-нибудь можно сделать в этом случае?

   amadeus2010

66 — 26.11.12 — 15:04

может при онлайн списании есть регламентные процедуры? управляемые блокировки теоретически снижают взаимоблокировки

   krbIso

67 — 26.11.12 — 15:33

(66)можно двигать границу последовательности регламентно. Есть обработка «Установка границы последовательности…»

У вас неверное представление об управляемом режиме и понятий блокировка и взаимоблокировка.

http://1cexpo.ru/metodiki/21-tipichnye-prichiny-izbytochnyx-blokirovok-i-metody-optimizaczii.html

Вообще изначально задача какая была? Рассчитывать себестоимость в онлайне?

   amadeus2010

68 — 26.11.12 — 16:00

(67)изначальная задача настроить списание по партиям в онлайн,чтобы не выходила взаимоблокировка.Как можно это настроить?

   dimaldinho

69 — 26.11.12 — 16:06

(64) +1

(68) убедить не списывать онлайн

   amadeus2010

70 — 26.11.12 — 16:17

(69) снял в настройках учета галочки в списывать партии при проведении документов, также Гилев советует использовать регистр Свободные остатки и РАУЗ, но вот тут и возникает вопрос как настроить все правильно?

   krbIso

71 — 26.11.12 — 16:19

(68) я так понял проблема в следующем

вам нужен расчет себестоимости в онлайн, вы начали использовать политику «списывать при проведении» в этом случаи у вас начали возникать ожидании на блокировках (20 сек таймаут). Затем вы решили расчитывать с помощью РАУЗ, но в этом случаи у вас начали проблемы со взаимоблокировками.

Значит вам нужно разобраться почему у вас возникают взаимоблокировки, ЦУП в помощь, если нет ЦУПа, профайлер событие дедлок граф. Если ни того ни другого нет, посмотрите в коде есть ли запись движение в регистры из разных документов вручную, и в каком порядке они выполняются.

   amadeus2010

72 — 26.11.12 — 16:26

спасибо за совет

   amadeus2010

73 — 27.11.12 — 09:53

доброе утро, еще раз возвращаясь к теме списание по партиям онлайн.Как советует Гилев в рекомендациях, отказаться от использования режима списания по партиям онлайн, перейти в оффлайн, использовать регистр Свободные остатки, перейти на РАУЗ и управляемые блокировки.Сделал все кроме РАУЗ, также добавил в регистры вызов управляемой блокировки и в обработке проведения добавил код управляемых блокировок.При проведении одновременно двух документов вышла такая ошибка

Ошибка при выполнении обработчика — ‘ОбработкаПроведения’

по причине:

{Документ.РеализацияТоваровУслуг.МодульОбъекта(7004)}: Ошибка при вызове метода контекста (Выполнить)

по причине:

по причине:

Ошибка выполнения запроса

по причине:

Конфликт блокировок при выполнении транзакции:

Microsoft OLE DB Provider for SQL Server: Транзакция (идентификатор процесса 59) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.

HRESULT=80004005, SQLSrvr: SQLSTATE=40001, state=33, Severity=D, native=1205, line=1

   amadeus2010

74 — 27.11.12 — 10:07

первая часть ошибки могла появиться так как одновременно с этим документом проводился Перемещение товаров.Как можно в дальнейшем при списании по партиям онлайн добиться исключения взаимоблокировок?

  

krbIso

75 — 27.11.12 — 16:35

выложи конфу нужно смотреть что ты там наделал

Здравствуйте,

Пробовал заполнить начальными данными довольно большой справочник безрезультатно, но проблема оказалась не в его размере. В стандартный журнал регистрации вываливаются ошибки:

{ОбщийМодуль.внЖурналРегистрацииСервер.Модуль(492)}: Ошибка при вызове метода контекста (Заблокировать)
Блокировка.Заблокировать();
по причине:
Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок!

Ошибка возникает в процедуре «РегистрацияИзмененияОбъекта», которая по логике вызывается как при подписках записи объектов, так и при начальном заполнении. Но разница в том, что при записи объектов платформа неявно открывает транзакцию самостоятельно, а при начальном заполнении явного открытия транзакции я не увидел, т.е. происходит попытка блокировки вне транзакции. Впрочем, код просматривал бегло, может и пропустил чего или недопонял.

Тема: Блокировки Данных 1с по билетам  (Прочитано 5852 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Пытаю воспроизвести нечего не выходит

Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    Блокировка.Заблокировать();

Скрыть

Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{Документ.РасходнаяНакладная.МодульОбъекта(18)}: Ошибка при вызове метода контекста (Заблокировать)
Блокировка.Заблокировать();
по причине:
Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок!


Записан


Ну так включи управляемые блокировки в свойствах конфигурации. По умолчанию там автоматические.


Записан




Записан



Stasya
28.08.2013 07:55 Прочитано: 6493

При проведении документа в серверной версии бухгалтерии 1с 8.2 (обычное приложение) вылетает ошибка:
Ошибка при вызове метода контекста (Заблокировать): У счета отсутствует субконто, заданное ссылкой на характеристику.
При проведении только одного документа»Возврат поставщику», остальные документы проводятся нормально. Сделала копию базы, обновила. В копии ошибка исчезла, при обновлении рабочей базы — ошибка осталась.
Что делать??? Откуда у такой ошибки «ноги растут»?


Изменено 28.08.13 07:55:49

Yandex
Возможно, вас также заинтересует

Реклама на портале

Jonsony
28.08.2013 09:00 Ответ № 1

релиз платформы?
релиз конфы?

без этого ноги не просто искать

Stasya
28.08.2013 13:53 Ответ № 2

ой, извитие. Платформа: 8.2.17.157, релиз БП 2.0.44.5

Stasya
28.08.2013 14:04 Ответ № 3

отбой, слетел режим совместимости с 8.2.13. Установила, все заработало.

Stasya
28.08.2013 14:04 Ответ № 4

Вопрос закрыт!

Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы!

Перейти к контенту

Всем доброго дня!

Делаю расширение с версионированием. Скопировал стандартный механизм в расширение. Все работало ок.

Тут добавил новый документ в типы объекта расширения и при попытке заблокировать таблицу получаю следующую ошибку

{ЭИТ ОбщийМодуль.ЭИТ_ВерсионированиеОбъектов.Модуль(1402)}: Ошибка при вызове метода контекста (Заблокировать): Неверный тип значения: РегистрСведений.ЭИТ_ВерсииОбъектов.Объект

Вот код, который приводит к ошибке.

    Если ТранзакцияАктивна() Тогда

        БлокировкаДанных = Новый БлокировкаДанных();

        ЭлементБлокировки = БлокировкаДанных.Добавить(«РегистрСведений.ЭИТ_ВерсииОбъектов»);

        ЭлементБлокировки.УстановитьЗначение(«Объект», Ссылка);

        БлокировкаДанных.Заблокировать();

    КонецЕсли;

проблема только в одной базе. Делаю ее копию через восстановление бэкапа sql — все работает

База продакшн почти 24/7, так что час на бэкап и его восстановление — непозволительная роскошь

Пробовал и добавить новый тип в этот регистр, и убрать этот документ и добавить заново — ничего не помогает

Причем если добавлять запись в регистр руками — то тип выбрать и записать можно. То есть в базе эти данные храниться могут. Проблема только в блокировке.

Остальные типы — и справочники, и документы записываются без проблем.

Может у кого есть какие идеи?

  1. Добрый день. При проведении документа в БП 3.0 последней версии Реализация товаров и услуг, выдает ошибку — Ошибка при вызове метода контекста (Заблокировать): Неверные значения типов полей : РегистрНакопления.ПрочиеРасчеты.РасчетныйДокумент — Возврат товаров от покупателя
    Не можем понять даже при чем тут Возврат товаров от покупатля.

  2. Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
  3. Offline

    nickpugachev
    Профессионал в 1С
    Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    156
    Баллы:
    104

    обработчик проведения пытается заблокировать остатки регистра по измерению РасчетныйДокумент по значению. В значении указывает документ возврата товаров, которого нет среди типов значения измерения — вот и ошибка.

    скорее всего что-то сделали не так в возврате, раз он его ловит на расчетах.

  4. «В значении указывает документ возврата товаров, которого нет среди типов значения измерения» — в 1С не такой специалист, где можно посмотреть, что он указывает? Перерыл весь документ.

    — Объединение сообщений, 7 июл 2014

    В общем пока не понимаю что делать

    Последнее редактирование: 7 июл 2014

  5. Это пишет в отладчике

    {ОбщийМодуль.РеализацияТоваровУслугФормыКлиент.Модуль(70)}: Ошибка при вызове метода контекста (Записать)
    Если Форма.Записать(ПараметрыЗаписи) Тогда
    по причине:
    Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
    по причине:
    {ОбщийМодуль.ОбщегоНазначенияБПВызовСервера.Модуль(987)}: Операция не выполнена
    Если Форма.Записать(ПараметрыЗаписи) Тогда

    по причине:
    Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
    по причине:
    {ОбщийМодуль.ОбщегоНазначенияБПВызовСервера.Модуль(987)}: Операция не выполнена

    {ОбщийМодуль.ОбщегоНазначенияБПВызовСервера.Модуль(987)}: Операция не выполнена
    ВызватьИсключение НСтр(«ru=’Операция не выполнена’»);

  6. Ошибка устранена. Дело оказалось в косячном обновлении 34.10 откатил до 33 и все нормально начало проводиться

Ошибка при вызове метода контекста (Заблокировать): Неверные значения типов полей : РегистрНакопления.ИПМПЗОтгруженные.ДокументОтгрузки — Списание с расчетного счета Интересно они когда нибудь эту ошибку поправят? Ошибки уже больше года, а воз и ныне там

если писать на мисту — то нет, пиши в 1с :)

И что это даст? Неужели нужно 1001 письмо чтобы исправить? Или за год никто не написал и я буду первым? А насчет мисты ты зря так думаешь, там мониторят и правят ошибки, плюс на мисте есть много людей которые поближе к 1С чем я, и поэтому вероятность исправление будет выше, чем от моего одинокого письма

ты сам привёл темы на мисте, целых 3, а их наверно и больше было. результата то нет) Да исправят когданибудь… пути 1с неисповедимы

Ну так может кто поближе, знают то, что я не знаю. Например что в 33 релизе это исправят

или как обойти эту ошибку

собсно таки надо личку на мисте. написал бы сюда

дык исправь, иль на автоматический режим регистр переведи.

Да чтоб я знал как, не спрашивал бы

нет БП под рукой, судя по ошибке — неправильно параметры задаёт, в СП описано что должно быть (типы) и т.д., это проверь сначала в отладчике, что в параметры лезет

Он просто зачем то пытается наложить блокировку на ИПМПЗОтгруженные, при этом в измерении регистра ДокументОтгрузки, не включен документ (списание с расчетного счета), который передается ему в качестве параметра (берется из ТЧ документа корректировка долга)

В принципе, чтобы не заморачиватся можно прописать Если СтруктураПараметров.ИмяТаблицы=»ИПМПЗОтгруженные» тогда Возврат; КонецЕсли; Или добавить в измерения Списание со счета

движения регистра будут корректные в итоге? тогда да, заглушку ставь

Ну эта же блокировка, т.е. на движение не влияет, а только на параллельную работу

Вечером, сейчас люди работают, а дома в файловой версии эта ошибка не воспроизводится

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Stasya
28.08.2013 07:55 Прочитано: 6343

При проведении документа в серверной версии бухгалтерии 1с 8.2 (обычное приложение) вылетает ошибка:
Ошибка при вызове метода контекста (Заблокировать): У счета отсутствует субконто, заданное ссылкой на характеристику.
При проведении только одного документа»Возврат поставщику», остальные документы проводятся нормально. Сделала копию базы, обновила. В копии ошибка исчезла, при обновлении рабочей базы — ошибка осталась.
Что делать??? Откуда у такой ошибки «ноги растут»?


Изменено 28.08.13 07:55:49

Yandex
Возможно, вас также заинтересует

Реклама на портале

Jonsony
28.08.2013 09:00 Ответ № 1

релиз платформы?
релиз конфы?

без этого ноги не просто искать

Stasya
28.08.2013 13:53 Ответ № 2

ой, извитие. Платформа: 8.2.17.157, релиз БП 2.0.44.5

Stasya
28.08.2013 14:04 Ответ № 3

отбой, слетел режим совместимости с 8.2.13. Установила, все заработало.

Stasya
28.08.2013 14:04 Ответ № 4

Вопрос закрыт!

Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста документ не выбран
  • Ошибка при вызове метода контекста вызватьhttpметод
  • Ошибка при вызове метода контекста добавить недопустимое значение параметров
  • Ошибка при вызове метода контекста выгрузитьколонку
  • Ошибка при вызове метода контекста добавить неверное имя колонки