8.х БП Запись в регистр в подписке. Вылетает в дамп.

Тема в разделе ""1С:Бухгалтерия БП"", создана пользователем Itsys, 26 дек 2010.

  1. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Добрый день,

    Пытаюсь изобразить следующее: справочник валют, есть валюты USD+%, создан регистр в котором прописаны соответствие базовой валюты и процент наценки. В подписке к регистру сведений КурсыВалют перед записью:
    Код:
    	Результат = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
    Набор = РегистрыСведений.итСоответствиеКурсовВалют.СоздатьНаборЗаписей();
    Набор.Прочитать();
    ТЗСоответсвия = Набор.Выгрузить();
    Для Каждого Запись Из Источник Цикл
    СтруктураПоиска = Новый Структура;
    СтруктураПоиска.Вставить("ОсновнаяВалюта", Запись.Валюта);
    НайденныеСоответствия = ТЗСоответсвия.НайтиСтроки(СтруктураПоиска);
    Для Каждого ТекСоответствие Из НайденныеСоответствия Цикл 
    НоваяЗапись = Результат.Добавить();
    НоваяЗапись.Период = Запись.Период;
    НоваяЗапись.Кратность = Запись.Кратность;
    
    НоваяЗапись.Валюта = ТекСоответствие.ЗависимаяВалюта;
    НоваяЗапись.Курс = Окр(Запись.Курс + Запись.Курс * ТекСоответствие.Процент / 100, 2, 1);
    КонецЦикла;
    КонецЦикла;
    Результат.Записать();
    
    
    Меняю курс исходной валюты, вылетает в дамп. Насколько я понимаю, это связано с одновременной записью в один регистр.
    Что посоветуете?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    8.1.15.14?
    Зачем в перед записью?
    Надо цепляться тогда уж к ПриЗаписи....
  3. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Пробовал при записи, то же самое...

    8.1.13.41, сейчас попробую обновиться...
  4. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Обновил, то же самое, вылетает в дамп. Видать придется делать через фоновое задание... Очень не хочется :(
  5. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Проблема была бесконечная рекурсия. Убрал рекурсию, вылезла новая беда, перетираются все курсы кроме записываемого и производных. Чтобы не мудрить, сделал через менеджер записи, может и медленнее, но надежнее.
    Код:
    	Набор = РегистрыСведений.итСоответствиеКурсовВалют.СоздатьНаборЗаписей();
    Набор.Прочитать();
    ТЗСоответсвия = Набор.Выгрузить();
    Для Каждого Запись Из Источник Цикл
    СтруктураПоиска = Новый Структура;
    СтруктураПоиска.Вставить("ОсновнаяВалюта", Запись.Валюта);
    НайденныеСоответствия = ТЗСоответсвия.НайтиСтроки(СтруктураПоиска);
    Для Каждого ТекСоответствие Из НайденныеСоответствия Цикл 
    НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
    НоваяЗапись.Период = Запись.Период;
    НоваяЗапись.Кратность = Запись.Кратность;
    
    НоваяЗапись.Валюта = ТекСоответствие.ЗависимаяВалюта;
    НоваяЗапись.Курс = Окр(Запись.Курс + Запись.Курс * ТекСоответствие.Процент / 100, 4, 1);
    НоваяЗапись.Записать();
    КонецЦикла;
    КонецЦикла;
    
    

Поделиться этой страницей