Имя: Пароль:
1C
1С v8
Движения по регистру бухгалтерии международного учета
0 Oz11
 
27.06.12
12:23
конфа - Бухгалтерия (Украина 1.12.6.5)+ бит (1.2.5.3/2.8.8.9.F) - отличаются версии конфигураций потому что обновлял бухгалтерию до выхода битовского обновления (оно похоже даже в этот момент еще не вышло).
не могу записать движения в регистр бухгалтерии международный из документа ОпределениеФинансовыхРезультатов.
сначала делал подпиской - результат 0.
   Если ТипЗнч(Источник) = Тип("ДокументОбъект.ОпределениеФинансовыхРезультатов") Тогда
       Если Источник.АТА_СписаниеМедСтраховок И НЕ Отказ Тогда
           // сначала закроем забаланс
           ПроводкиМУ = Источник.Движения.бит_Дополнительный_2;
           ПроводкиМУ.Записывать = Истина;
           Обороты = ЗапросНаЗакрытиеЗатрат(Источник.Дата).Выгрузить();
           Для каждого Строка Из Обороты Цикл
               Проводка = ПроводкиМУ.Добавить();
               Проводка.Период     = Источник.Дата;
               Проводка.Содержание  = "Закрытие затрат будущих периодов (МУ)";
               Проводка.Регистратор = Источник.Ссылка;
               //Проводка.ВидПроводки = ВидДвиженияБухгалтерии.Дебет;
               //Проводка.ДатаФормирования = Источник.Дата;
               ЗаполнитьЗначенияСвойств(Проводка, Строка);
               АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "АТА_Заказы", Строка.СубконтоДт1);
               АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "АТА_Сотрудники", Строка.СубконтоДт2);
               АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "АТА_МесяцНачисления", Строка.СубконтоДт3);
           КонецЦикла;
           // затем отразим затраты
           Результат = ЗапросПоОтражениюЗатратРаспределения(Обороты);
           // проверим существования счетов для отражения затрат 2022 и 1044
           Счет2022 = ПланыСчетов.бит_Дополнительный_2.НайтиПоКоду("2022");
           Счет1044 = ПланыСчетов.бит_Дополнительный_2.НайтиПоКоду("1044");
           Если Счет2022 = ПланыСчетов.бит_Дополнительный_2.ПустаяСсылка() ИЛИ Счет1044 = ПланыСчетов.бит_Дополнительный_2.ПустаяСсылка() Тогда
               Сообщить("В системе не определены счета международного учета (2022 и 1044) для отражения затрат.");
               Отказ = Истина;
               Возврат;
           КонецЕсли;
           Таблица = СформироватьТаблицуРаспределенияЗатрат(Результат, Счет2022, Счет1044);
           // в итоге все есть в Таблице
           Для каждого Строка Из Таблица Цикл
               Проводка = ПроводкиМУ.Добавить();
               Проводка.Период = Источник.Дата;
               Проводка.Содержание = "Отражение затрат будущих периодов (МУ)";
               Проводка.Регистратор = Источник.Ссылка;
               //Проводка.ВидПроводки = ВидДвиженияБухгалтерии.Дебет;
               //Проводка.ДатаФормирования = Источник.Дата;
               ЗаполнитьЗначенияСвойств(Проводка, Строка);
               // нужно еще заполнять субконто
               Если Проводка.СчетКт = Счет2022 Тогда
                   УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "Контрагенты", Строка.КонтрагентИзДокументаМед);
                   УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "ДоговорыКонтрагентов", Строка.ДоговорКонтрагентаИзДокументаМед);
               ИначеЕсли Проводка.СчетКт = Счет1044 Тогда
                   УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "РаботникиОрганизаций", Строка.Сотрудник.ФизЛицо);        
               КонецЕсли;
               УстановитьСубконтоМУ(Проводка.СчетДт, Проводка.СубконтоДт, "РаботникиОрганизаций", Строка.Сотрудник.ФизЛицо);
               УстановитьСубконтоМУ(Проводка.СчетДт, Проводка.СубконтоДт, "ЦФО", Строка.ЦФО);
           КонецЦикла;
       КонецЕсли;        
   КонецЕсли;
потом перенес код в обработку проведения документа (думал может натупил чего) - все равно 0.
при том что на последней строке обработки проведения документа в движениях по этому регистру аж 66 проводок. какая-то мистика. что я делаю не так?
1 Maxus43
 
27.06.12
12:24
обалдеть названия... "бит_Дополнительный_2"
быдлоБИТ
2 Oz11
 
27.06.12
12:27
в самом регистре перед записью количество строк в наборе 0! как так?
делал через принудительную запись (ПроводкиМУ.Записывать = Ложь) - первый проход в регистре есть 66 записей, второй - 0. такое ощущение что все затирается. не пойму в чем дело.
3 Maxus43
 
27.06.12
12:27
ПроводкиМУ.Записать(); в конце
4 Oz11
 
27.06.12
12:32
(3) принудительная запись ничего не дает. и Записать() и Записать(Ложь). все как описано в (2).
5 Oz11
 
27.06.12
12:34
думал может запрет какой на запись в этот регистр - так нет. все разрешено. проводил еще один свой документ - двигающий этот регистр - все ОК. проводки идут.
6 YF
 
27.06.12
12:40
Что за Источник, если код в модуле документа?
7 Oz11
 
27.06.12
12:43
представленный код из подписки на событие - в модуль документа его перенес естественно с правками, никаких источников в модуле документа нет.
8 Oz11
 
27.06.12
12:45
вот код из модуля документа:
   Если АТА_СписаниеМедСтраховок И НЕ Отказ Тогда
       // сначала закроем забаланс
       ПроводкиМУ = Движения.бит_Дополнительный_2;
       //ПроводкиМУ.Записывать = Истина;
       Обороты = АТА_ОбщегоНазначения.ЗапросНаЗакрытиеЗатрат(СтруктураШапкиДокумента.Дата).Выгрузить();
       Для каждого Строка Из Обороты Цикл
           Проводка = ПроводкиМУ.Добавить();
           Проводка.Период     = СтруктураШапкиДокумента.Дата;
           Проводка.Содержание  = "Закрытие затрат будущих периодов (МУ)";
           Проводка.Регистратор = СтруктураШапкиДокумента.Ссылка;
           //Проводка.ВидПроводки = ВидДвиженияБухгалтерии.Дебет;
           //Проводка.ДатаФормирования = Источник.Дата;
           ЗаполнитьЗначенияСвойств(Проводка, Строка);
           АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "АТА_Заказы", Строка.СубконтоДт1);
           АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "АТА_Сотрудники", Строка.СубконтоДт2);
           АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "АТА_МесяцНачисления", Строка.СубконтоДт3);
       КонецЦикла;
       // затем отразим затраты
       Результат = АТА_ОбщегоНазначения.ЗапросПоОтражениюЗатратРаспределения(Обороты);
       // проверим существования счетов для отражения затрат 2022 и 1044
       Счет2022 = ПланыСчетов.бит_Дополнительный_2.НайтиПоКоду("2022");
       Счет1044 = ПланыСчетов.бит_Дополнительный_2.НайтиПоКоду("1044");
       Если Счет2022 = ПланыСчетов.бит_Дополнительный_2.ПустаяСсылка() ИЛИ Счет1044 = ПланыСчетов.бит_Дополнительный_2.ПустаяСсылка() Тогда
           Сообщить("В системе не определены счета международного учета (2022 и 1044) для отражения затрат.");
           Отказ = Истина;
           Возврат;
       КонецЕсли;
       Таблица = АТА_ОбщегоНазначения.СформироватьТаблицуРаспределенияЗатрат(Результат, Счет2022, Счет1044);
       // в итоге все есть в Таблице
       Для каждого Строка Из Таблица Цикл
           Проводка = ПроводкиМУ.Добавить();
           Проводка.Период = СтруктураШапкиДокумента.Дата;
           Проводка.Содержание = "Отражение затрат будущих периодов (МУ)";
           Проводка.Регистратор = СтруктураШапкиДокумента.Ссылка;
           //Проводка.ВидПроводки = ВидДвиженияБухгалтерии.Дебет;
           //Проводка.ДатаФормирования = Источник.Дата;
           ЗаполнитьЗначенияСвойств(Проводка, Строка);
           // нужно еще заполнять субконто
           Если Проводка.СчетКт = Счет2022 Тогда
               АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "Контрагенты", Строка.КонтрагентИзДокументаМед);
               АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "ДоговорыКонтрагентов", Строка.ДоговорКонтрагентаИзДокументаМед);
           ИначеЕсли Проводка.СчетКт = Счет1044 Тогда
               АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетКт, Проводка.СубконтоКт, "РаботникиОрганизаций", Строка.Сотрудник.ФизЛицо);        
           КонецЕсли;
           АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетДт, Проводка.СубконтоДт, "РаботникиОрганизаций", Строка.Сотрудник.ФизЛицо);
           АТА_ОбщегоНазначения.УстановитьСубконтоМУ(Проводка.СчетДт, Проводка.СубконтоДт, "ЦФО", Строка.ЦФО);
       КонецЦикла;
       ПроводкиМУ.Записать();
   КонецЕсли;
в этом варианте в методе перед записью регистра ловлю запись 2а раза!! первый раз - 66 строк в наборе, второй - 0.
9 YF
 
27.06.12
12:52
(8) Это же не весь код обработки проведения ...

+
Отладчиком-то иди по проведению документа - увидишь где теряются
10 Oz11
 
27.06.12
12:58
(9) ходил.
если через Записывать = Истина; - на последней строке обработки проведения 66 строк в наборе, в регистре, перед записью, - 0.
если через принудительную запись Записать(Ложь); - сперва в регистре 66 строк, в конце обработки проведения - 0 строк, в регистре 0 строк.
если через принудительную запись Записать(); - сперва в регистре 66 строк, в конце обработки проведения - 66 строк, в регистре 0 строк.
такое ощущение что "на пути" из документа в регистр набор затирается.
код обработки проведения:

   мКонДата    = Дата;
   мПроводкиБУ = Движения.Хозрасчетный;

   // Сформируем структуру реквизитов шапки документа
   СтруктураШапкиДокумента = ОбщегоНазначения.СформироватьСтруктуруШапкиДокумента(ЭтотОбъект);
   
   УчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(СтруктураШапкиДокумента.Дата, Отказ, СтруктураШапкиДокумента.Организация);
   СтруктураШапкиДокумента.Вставить("НеРаспределятьОПЗнаСебестоимостьПродукции", УчетнаяПолитика.НеРаспределятьОПЗнаСебестоимостьПродукции);

   Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка);
   
   // Проверка ручной корректировки
   Если ОбщегоНазначения.РучнаяКорректировкаОбработкаПроведения(РучнаяКорректировка,Отказ,Заголовок,ЭтотОбъект) Тогда
       Возврат
   КонецЕсли;

   ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок);
   
   ПроверитьНастройкиСубконто(Отказ, Заголовок);

   Если Не Отказ Тогда
       ДвиженияПоРегистрам(СтруктураШапкиДокумента, Отказ, Заголовок);
       //+АТА Олег ЖВ (27.06.12)
       ДвижениеПоСписаниюМедСтраховок(СтруктураШапкиДокумента, Отказ);
       //-АТА Олег ЖВ (27.06.12)
   КонецЕсли;
   
   Движения.Хозрасчетный.ВыполнитьДействияПередЗаписьюДвижений();
11 Oz11
 
27.06.12
13:44
подбросьте какую-то умную мысль - что-то уже умаялся я с выяснением причины.