Имя: Пароль:
1C
1С v8
Программное создание ручных операций
,
0 Dark_Warrior
 
22.05.15
10:54
Доброй всем пятницы, товарищи. Подскажите, пожалуйста, ЧЯДНТ - БП3.0 (3.0.39.56), платформа 8.3.6.1999. Есть обработка, которая создает в ручных операциях движения в регистре бухгалтерии "Хозрасчетный". Проводка есть, в оборотке сумма есть, но, если из оборотки "провалиться" в карточку счета, то там пусто. Собственно в этом и проблема.
З.Ы.: у хозрасчетного .Записывать и .ОбменДанными.Загрузка = истина.
1 Славен
 
22.05.15
10:55
код приведи
2 Славен
 
22.05.15
10:55
и да ОбменДанными.Загрузка = Ложь поставь и посмотри ошибки
3 Dark_Warrior
 
22.05.15
11:04
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
наборзаписей.Записывать = Истина;  
наборзаписей.ОбменДанными.Загрузка = Ложь;
НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
ЗаполнитьПроводки(Док, ДатаПер, НаборЗаписей, Валюта);
4 Dark_Warrior
 
22.05.15
11:06
Это из процедуры ЗаполнитьПроводки:

Если (ОстатокВалюты > 0 и Курс2 - Курс1 > 0) или (ОстатокВалюты < 0 и Курс2 - Курс1 < 0) Тогда
        Движение = НаборЗаписей.Добавить();
    
        Движение.Регистратор = Док.Ссылка;
        Движение.Период = Док.Дата;
        
        Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.29");
        БухгалтерскийУчет.УстановитьСубконто(Движение.СчетДт, Движение.СубконтоДт, 1, Объект.СубконтоДт1);
        БухгалтерскийУчет.УстановитьСубконто(Движение.СчетДт, Движение.СубконтоДт, 2, Объект.СубконтоДт2);

        Движение.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01");
        БухгалтерскийУчет.УстановитьСубконто(Движение.СчетКт, Движение.СубконтоКт, 1, Справочники.ПрочиеДоходыИРасходы.КурсовыеРазницы);
        
        Движение.Организация = док.Организация;
        Движение.ВалютаДт = Валюта;
        Если ОстатокВалюты > 0 Тогда
            суммавал = ОстатокВалюты;
            //Движение.ВалютнаяСуммаДт = суммавал;
            Движение.Сумма = суммавал * ((Курс2-Курс1)/Кратность1);
        ИначеЕсли ОстатокВалюты < 0 Тогда
            суммавал = ОстатокВалюты*(-1);
            //Движение.ВалютнаяСуммаДт = суммавал;
            Движение.Сумма = суммавал * ((Курс1-Курс2)/Кратность1);
        КонецЕсли;
        СуммаДок = Движение.Сумма;            
        НаборЗаписей.Записать();    
    ИначеЕсли (ОстатокВалюты > 0 и Курс2 - Курс1 < 0) или (ОстатокВалюты < 0 и Курс2 - Курс1 > 0) Тогда
        Движение = НаборЗаписей.Добавить();
        Движение.Регистратор = Док.Ссылка;
        Движение.Период = Док.Дата;
        
        Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.02");
        БухгалтерскийУчет.УстановитьСубконто(Движение.СчетДт, Движение.СубконтоДт, 1, Справочники.ПрочиеДоходыИРасходы.КурсовыеРазницы);

        Движение.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.29");
        БухгалтерскийУчет.УстановитьСубконто(Движение.СчетКт, Движение.СубконтоКт, 1, Объект.СубконтоДт1);
        БухгалтерскийУчет.УстановитьСубконто(Движение.СчетКт, Движение.СубконтоКт, 2, Объект.СубконтоДт2);
        
        Движение.Организация = док.Организация;
        Движение.ВалютаКт = Валюта;
        Если ОстатокВалюты > 0 Тогда
            суммавал = ОстатокВалюты;
            //Движение.ВалютнаяСуммаКт = суммавал;
            Движение.Сумма = суммавал * ((Курс1-Курс2)/Кратность1);
        ИначеЕсли ОстатокВалюты < 0 Тогда
            суммавал = ОстатокВалюты*(-1);
            //Движение.ВалютнаяСуммаКт = суммавал;
            Движение.Сумма = суммавал * ((Курс2-Курс1)/Кратность1);
        КонецЕсли;
        СуммаДок = Движение.Сумма;            
        НаборЗаписей.Записать();
    КонецЕсли;
    Док.СуммаОперации = СуммаДок;
    Док.Записать();
5 Рэйв
 
22.05.15
11:09
Движение.Активность=Истина;
6 Рэйв
 
22.05.15
11:11
хотя "в оборотке сумма есть".. Тогда итоги пересчитать
7 Dark_Warrior
 
22.05.15
12:19
(6) Пересчет не помогает.
8 azt-yur
 
22.05.15
12:34
может у тебя субконто не правильно заполняются? например, не правильные типы субконто - в результате в оборотке по счету сумма отображается, а в карточке отбор не может установить корректно. проверь установленные отборы в карточке счета
9 Dark_Warrior
 
22.05.15
12:45
(8) Пробовал... Все отборы убраны, а показатели активны.
10 pavelul73
 
22.05.15
12:46
Организацию забыли
11 pavelul73
 
22.05.15
12:47
а нет, извиняюсь, увидел
12 Dark_Warrior
 
22.05.15
13:51
Подниму..
13 Барматолог
 
22.05.15
14:05
(0) какой документ используется?
14 Славен
 
22.05.15
14:22
ОбменДанными.Загрузка = истина. убрал?
15 Dark_Warrior
 
22.05.15
14:35
(14) Да, убрал.
16 Dark_Warrior
 
22.05.15
14:41
(13) ОперацияБух
17 trooba
 
22.05.15
15:11
(16) Я сначала создаю ОперацияБух, заполняю его шапку, записываю, потом обращаюсь:

БухСпр = Документы.ОперацияБух.СоздатьДокумент();
    
    БухСпр.Содержание = "Проценты по кредитам и займам ("+Строка(Объект.Процент)+"%) - "+Объект.Контрагент.Наименование;
    БухСпр.Комментарий = "Проценты по кредитам и займам ("+Строка(Объект.Процент)+"%) - "+Объект.Контрагент.Наименование;
    
    БухСпр.Дата = Объект.ДатаБух;
    БухСпр.Организация=Объект.Организация;
    БухСпр.Ответственный=Пользователи.ТекущийПользователь();
    
    БухСпр.ОбменДанными.Загрузка=Истина;
    
    БухСпр.Записать(РежимЗаписиДокумента.Запись);
    
    БухСпрСсылка = БухСпр.Ссылка;
    
    РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    
    РегХозрасчетный.Отбор.Регистратор.Значение = БухСпрСсылка;


а после добавляю данные уже в регистр, в конце записываю набор и все ок работает.
18 Dark_Warrior
 
25.05.15
07:59
(17) Странно, методика та же, но лыжи не едут)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн