Имя: Пароль:
1C
1C 7.7
v7: Списание расходов будущих периодов.
0 Eeakie
 
30.08.12
14:07
Добрый день. Перестала формироваться проводка 26 - 97.9 при заполнении документа "СписаниеРасходовБП". До марта всё было нормально. В справочнике РБП даты с 01.01.2012 по 01.01.2013 - вроде всё пучком. Прогнал через отладчик, оказалось не может получить счет (БухИт.ПолучитьСчет() = 0!). В чём может быть проблема?

БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
   БухИт.ВключатьСубсчета(-1,);
   Если Группа.Выбран()=1 тогда
       Если (Группа.ЭтоГруппа()=1)  тогда
           БухИт.ИспользоватьСубконто(ВидыСубконто.РасходыБудущихПериодов,Группа,1,0);
       Иначе
           БухИт.ИспользоватьСубконто(ВидыСубконто.РасходыБудущихПериодов,Группа,2);
       КонецЕсли;
   Иначе
       БухИт.ИспользоватьСубконто(ВидыСубконто.РасходыБудущихПериодов);
   КонецЕсли;  
   
   БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,Счет97);
   
   Если НужноВыбиратьСч97 = 1 Тогда
       БухИт.ВыбратьСчета();
       Пока БухИт.ПолучитьСчет(,) = 1 Цикл
           СчРасхБП = БухИт.Счет;
           СформироватьПроводкиПоСубконто(БухИт);
       КонецЦикла;
   Иначе
       СформироватьПроводкиПоСубконто(БухИт);
   КонецЕсли;
1 Eeakie
 
30.08.12
14:16
Я как-то неясно изложил суть проблемы или никто не в курсе?
2 fedoss
 
30.08.12
14:31
Остатки на 97 есть по этим РБП? Пересчет БИ пробовали?
3 Eeakie
 
30.08.12
14:37
(2) Остатки имеются. Полный пересчет сделал - не помогло.

Кстати, при перепроведении за январь-март проводки опять же исчезают. Никто ничего не менял (или просто никто не признается).
4 Eeakie
 
30.08.12
14:39
Процедура ОбработкаПроведения()
Счет97 = СчетПоКоду("97");
   НужноВыбиратьСч97 = Счет97.ЭтоГруппа();
   Если НужноВыбиратьСч97 = 1 Тогда
       СчРасхБП  = ОпределитьСчет97(ДатаДок);
       
       Если ПустоеЗначение(СчРасхБП) = 1 Тогда
           Сообщить("Не удалось подобрать субсчет счета 97!");
           Сообщить("     Обновите ""План счетов""","!");
           КолОшибок = КолОшибок + 1;
       КонецЕсли;  
   Иначе
       СчРасхБП  = Счет97;
   КонецЕсли;
   
   Если КолОшибок > 0 Тогда
       Сообщить("---------"+ТекущийДокумент()+": Документ не проведен из-за ошибок","I");
       СтатусВозврата(0);
       Возврат;  
   КонецЕсли;
   
   ДатаКон  = КонМесяца(ДатаДок);
   ГодДок   = ДатаГод(ДатаДок);
   МесяцДок = ДатаМесяц(ДатаДок);

   СуммаОперации = 0;
   ИтогоОстаток=0;

   БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
   БухИт.ВключатьСубсчета(-1,);
   Если Группа.Выбран()=1 тогда
       Если (Группа.ЭтоГруппа()=1)  тогда
           БухИт.ИспользоватьСубконто(ВидыСубконто.РасходыБудущихПериодов,Группа,1,0);
       Иначе
           БухИт.ИспользоватьСубконто(ВидыСубконто.РасходыБудущихПериодов,Группа,2);
       КонецЕсли;
   Иначе
       БухИт.ИспользоватьСубконто(ВидыСубконто.РасходыБудущихПериодов);
   КонецЕсли;  
   
   БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,Счет97);
   
   Если НужноВыбиратьСч97 = 1 Тогда
       БухИт.ВыбратьСчета();
       Пока БухИт.ПолучитьСчет(,) = 1 Цикл
           СчРасхБП = БухИт.Счет;
           СформироватьПроводкиПоСубконто(БухИт);
       КонецЦикла;
   Иначе
       СформироватьПроводкиПоСубконто(БухИт);
   КонецЕсли;
   
   Операция.СуммаОперации = СуммаОперации;
   Операция.Записать();
   ИтогоСписано= СуммаОперации;
КонецПроцедуры
5 Eeakie
 
30.08.12
14:40
Функция ОпределитьСчет97(ДатаПроверки)
   
   Счет = СоздатьОбъект("Счет.Основной");
   Сч97 = ПолучитьПустоеЗначение(Счет);
   Если ДатаГод(ДатаПроверки)< 2009 тогда
       Если Счет.НайтиПоКоду("97.0") = 1 Тогда
           Сч97 = СчетПоКоду("97.0");
       КонецЕсли;
   Иначе
       Если Счет.НайтиПоКоду("97.9") = 1 Тогда
           Сч97 = СчетПоКоду("97.9");
       КонецЕсли;    
   КонецЕсли;
   Возврат Сч97;
   
КонецФункции
6 Eeakie
 
30.08.12
14:41
Процедура СформироватьПроводкиПоСубконто(БухИт)
   
   БухИт.ВыбратьСубконто();
   Пока БухИт.ПолучитьСубконто() = 1 Цикл
       Страховка = БухИт.Субконто();
       
       Если (Страховка.ДатаОкончанияСписания=Дата(0)) или (Страховка.ДатаНачалаСписания=Дата(0)) Тогда
           Продолжить;
       КонецЕсли;
                                                 
       Если Страховка.ДатаНачалаСписания > ДатаКон Тогда
           Продолжить;
       КонецЕсли;
       
       ДатаОкончанияСписания  = КонМесяца(Страховка.ДатаОкончанияСписания);
       ГодОкончанияСписания   = ДатаГод(Страховка.ДатаОкончанияСписания);
       МесяцОкончанияСписания = ДатаМесяц(Страховка.ДатаОкончанияСписания);
       
       Если ДатаОкончанияСписания >= ДатаКон Тогда
           Если ГодОкончанияСписания = ГодДок Тогда
               КолМес = МесяцОкончанияСписания - МесяцДок +1;  //
           Иначе
               КолМес = 12 - МесяцДок + 1; // кол месяцев до конца года, включая текущий месяц                  
               КолГод = ГодОкончанияСписания - ГодДок; // количество ост. лет, включая текущий год
               КолМес = КолМес + 12 * (КолГод - 1);
               КолМес = КолМес + МесяцОкончанияСписания;
           КонецЕсли;
           ОстСтраховки  = БухИт.СНД();
           СуммаСписания = ОстСтраховки / КолМес;
           
           Если СуммаСписания > 0 Тогда
               Операция.НоваяПроводка();  // СчетСписания - 97
               Операция.СодержаниеПроводки = "Списание расходов БП за "+Формат(ДатаДок,"Д ММММГГГГ");
               Операция.Сумма = СуммаСписания;
               СуммаОперации  = СуммаОперации + СуммаСписания;
               ИтогоОстаток   = ИтогоОстаток  + ОстСтраховки - СуммаСписания;
               
               Операция.Дебет.Счет = СчетСписания;
               Операция.Дебет.Субконто(1,Субконто1);
               Операция.Дебет.Субконто(2,Субконто2);
               Операция.Дебет.Субконто(3,Субконто3);
               
               Операция.Кредит.Счет = СчРасхБП;
               Операция.Кредит.РасходыБудущихПериодов = Страховка;
               Таб.ВывестиСекцию("Стр");
           КонецЕсли;
           
       Иначе
           Продолжить;
       КонецЕсли;
       
   КонецЦикла;
КонецПроцедуры
7 Eeakie
 
30.08.12
14:42
Может в коде косяк какой... я уже не знаю...
8 Eeakie
 
30.08.12
14:43
Такое ощущение, что с запросом что-то не так.
9 Eeakie
 
30.08.12
14:48
Сдаюсь. Пусть операциями вводят.