Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста (Заблокировать)...
,
0 krekotnev
 
21.01.13
18:42
Коллеги, приветствую!
Вот такая ситуация. Используем 1С БУ 8. В соответствии со спецификой учета на предприятии применяем три операции:
1) поступление ТМЦ,
2) перемещение ТМЦ,
3) передача ТМЦ на объект строительства через треб.-накл.

Сегодня нашел ошибку в одной из операций перемещения. Отменил ее проведение. Поменял счета учета на правильные (003.01 - 003.01), но снова провести документ не смог - система выдала ошибку: "Ошибка при вызове метода контекста (Заблокировать): Значение субконто, заданное с помощью ссылки на ПВХ, должно быть ссылочного типа, пространство блокировки = РегистрБухгалтерии.Хозрасчетный".
Подскажите, в каком направлении копать?
Спасибо!
1 krekotnev
 
21.01.13
18:43
Используем 1С Бухгалтерия 8.3
2 krekotnev
 
21.01.13
18:47
Был на Гэлэкси, там есть похожее обсуждение
http://www.1c-galaxy.ru/forum4/topic602010/
Но не могу понять ((
3 krekotnev
 
23.01.13
12:11
Народ, когда возникает ошибка, то в подробностях идет ссылка на конкретную процедуру УстановитьУправляемуюБлокировку в модуле ОбщегоНазначения:
Процедура УстановитьУправляемуюБлокировку(СтруктураПараметров, КоллекцияЗначенийБлокировки = Неопределено, КоллекцияОписанияИсточника = Неопределено, Отказ = Ложь, Заголовок = "") Экспорт
   
   Если НЕ ТипЗнч(СтруктураПараметров) = Тип("Структура") Тогда
       Возврат;
   КонецЕсли;
   
   ИспользоватьЗначенияБлокировки = КоллекцияЗначенийБлокировки <> Неопределено
       И (ТипЗнч(КоллекцияЗначенийБлокировки) = Тип("Структура")
           ИЛИ ТипЗнч(КоллекцияЗначенийБлокировки) = Тип("Соответствие"))
       И КоллекцияЗначенийБлокировки.Количество() > 0;
       
   ИспользоватьИсточникДанных     = КоллекцияОписанияИсточника <> Неопределено
       И (ТипЗнч(КоллекцияОписанияИсточника) = Тип("Структура")
           ИЛИ ТипЗнч(КоллекцияОписанияИсточника) = Тип("Соответствие"))
       И КоллекцияОписанияИсточника.Количество() > 0
       И СтруктураПараметров.Свойство("ИсточникДанных");
   
   Если НЕ ИспользоватьЗначенияБлокировки И НЕ ИспользоватьИсточникДанных Тогда
       Возврат;
   КонецЕсли;
   
   Блокировка = Новый БлокировкаДанных;
   
   ТипТаблицы = ?(СтруктураПараметров.Свойство("ТипТаблицы"), СтруктураПараметров.ТипТаблицы, "РегистрНакопления");
   ИмяТаблицы = СтруктураПараметров.ИмяТаблицы;
   ПространствоБлокировки = ТипТаблицы  + "." + ИмяТаблицы;
   ЭлементБлокировки = Блокировка.Добавить(ПространствоБлокировки);
   
   РежимБлокировки = ?(СтруктураПараметров.Свойство("РежимБлокировки"), СтруктураПараметров.РежимБлокировки, РежимБлокировкиДанных.Исключительный);
   ЭлементБлокировки.Режим = РежимБлокировки;
   
   Если ИспользоватьЗначенияБлокировки Тогда
       
       Для каждого ЭлементКоллекции Из КоллекцияЗначенийБлокировки Цикл
           
           ЭлементБлокировки.УстановитьЗначение(ЭлементКоллекции.Ключ, ЭлементКоллекции.Значение);
           
       КонецЦикла;
   
   КонецЕсли;
   
   Если ИспользоватьИсточникДанных Тогда
       
       ИсточникДанных = СтруктураПараметров.ИсточникДанных;
       
       Если ТипЗнч(ИсточникДанных) = Тип("МенеджерВременныхТаблиц") Тогда
       
           Запрос = Новый Запрос;
           Запрос.МенеджерВременныхТаблиц = ИсточникДанных;
           ТекстЗапроса = "";
           Для каждого ЭлементКоллекции Из КоллекцияОписанияИсточника Цикл
               ТекстЗапроса = ТекстЗапроса + ",
               |    Таб." + ЭлементКоллекции.Значение;
           КонецЦикла;
           ТекстЗапроса = Сред(ТекстЗапроса, 2);
           ТекстЗапроса =            
           "ВЫБРАТЬ РАЗЛИЧНЫЕ"
           + ТекстЗапроса + "
           |ИЗ
           |    " + СтруктураПараметров.ИмяВременнойТаблицы + " КАК Таб";
           Запрос.Текст = ТекстЗапроса;
           Результат    = Запрос.Выполнить();
           
           ЭлементБлокировки.ИсточникДанных = Результат;
           
       Иначе
           
           ЭлементБлокировки.ИсточникДанных = ИсточникДанных;
           
       КонецЕсли;
   
       Для каждого ЭлементКоллекции Из КоллекцияОписанияИсточника Цикл
           
           ЭлементБлокировки.ИспользоватьИзИсточникаДанных(ЭлементКоллекции.Ключ, ЭлементКоллекции.Значение);
           
       КонецЦикла;
   
   КонецЕсли;
   
   Попытка
   
       Блокировка.Заблокировать();
   
   Исключение
       
       ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(), Отказ, Заголовок);
       ВызватьИсключение "Операция не выполнена";
       
   КонецПопытки;

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

Пожалуйста, помогите понять, где и что надо исправить. Учетная политика не менялась.
4 krekotnev
 
23.01.13
13:24
Временная мера позволила перепроводить документы, гдебыли отменены проводки. В "хвостовой" части процедуры "УстановитьУправляемуюБлокировку" закомментированы строки:
Попытка
   
       Блокировка.Заблокировать();
   
   Исключение
       
       ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(), Отказ, Заголовок);
       ВызватьИсключение "Операция не выполнена";
       
   КонецПопытки;

После этого получается выполнить перепроведение документов по операции "Перемещение товаров". Остается открытым вопрос: а на что повлияет комментирование указанных строк?..
Может, обсудим?
5 krekotnev
 
25.01.13
18:03
Более опытный коллега подсказал, что это связано с несовпадением субконто.
6 krekotnev
 
25.01.13
18:03
тема закрыта, всем спасибо!