Имя: Пароль:
1C
1С v8
Как двух ТЗ сформировать проводки по регистру бухгалтерии
0 Rizhij_Nikitos
 
13.10.11
15:19
Задача такова из двух ТЗ составить проводки и записать их в регистр бухгалтерии. Почему то выдает ошибку, когда я формирую проводки, вроде бы все делал, как написано уже на других форумах, но почему то ругается. Код такой:

  Для каждого СтрокаТЗ1 из ТЗ_СверткаПроводокСчета26Кт Цикл
      КоличествоПройденныхСтрок2 = 0;
      СуммаКорректировки = 0; //Сумма которая будет помогать ибегать накапливания погрешностей
      Для каждого СтрокаТЗ2 из ТЗ_ПроводокСчет20Кт Цикл
           СтрТЗ_Проводок = ТЗ_Новых_Проводок.Добавить();
           СтрТЗ_Проводок.Организация =СтрокаТЗ2.Организация;
           СтрТЗ_Проводок.Период = СтрокаТЗ2.Период;
           СтрТЗ_Проводок.Регистратор = СтрокаТЗ2.Регистратор;
           СтрТЗ_Проводок.СчетДт = СтрокаТЗ2.СчетДт;
           СтрТЗ_Проводок.СубконтоДт1 = СтрокаТЗ2.СубконтоДт1;
           СтрТЗ_Проводок.СубконтоДт2 = СтрокаТЗ2.СубконтоДт2;
           СтрТЗ_Проводок.СубконтоДт3 = СтрокаТЗ2.СубконтоДт3;
           СтрТЗ_Проводок.СчетКТ = СтрокаТЗ1.СЧетКт;
           СтрТЗ_Проводок.ПодразделениеКт = СтрокаТЗ1.ПодразделениеКт;
           //стрТЗ_Проводок.СубконтоКт1 = ТипЗнч(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат.Пустая());
           //просчет коэффициента КОЭФФИЦИЕНТ равен сумма из строки таблицы 2 делённая на сумму по всей Таблице 2
             Если КоличествоПройденныхСтрок1 <ТЗ_СверткаПроводокСчета26Кт.Количество()-1 Тогда
               Если КоличествоПройденныхСтрок2 < ТЗ_ПроводокСчет20Кт.Количество()-1 Тогда
                   Коэффициент = СтрокаТЗ2.Сумма/СуммаТЗ_Счет20Кт;
                   стрТЗ_Проводок.Сумма = Окр(СтрокаТЗ1.Сумма*Коэффициент,2);
                   СуммаКорректировки = СуммаКорректировки+Окр(СтрокаТЗ1.Сумма*Коэффициент,2);
               ИначеЕсли КоличествоПройденныхСтрок2= ТЗ_ПроводокСчет20Кт.Количество()-1 Тогда
                   СтрТЗ_Проводок.Сумма = СтрокаТЗ1.Сумма-СуммаКорректировки;
               КонецЕсли;
           ИначеЕсли КоличествоПройденныхСтрок1 = ТЗ_СверткаПроводокСчета26Кт.Количество()-1 Тогда
               Если КоличествоПройденныхСтрок2 < ТЗ_ПроводокСчет20Кт.Количество()-1 Тогда
                   Коэффициент = СтрокаТЗ2.Сумма/СуммаТЗ_Счет20Кт;
                   стрТЗ_Проводок.Сумма = Окр(СтрокаТЗ1.Сумма*Коэффициент,2);
                   СуммаКорректировки = СуммаКорректировки+Окр(СтрокаТЗ1.Сумма*Коэффициент,2);
               ИначеЕсли КоличествоПройденныхСтрок2= ТЗ_ПроводокСчет20
Кт.Количество()-1 Тогда
                   СтрТЗ_Проводок.Сумма = СтрокаТЗ1.Сумма-СуммаКорректировки;
               КонецЕсли;
           КонецЕсли;
           //
           КоличествоПройденныхСтрок2 = КоличествоПройденныхСтрок2+1;
       КонецЦикла;
       //
       КоличествоПройденныхСтрок1 = КоличествоПройденныхСтрок1+1;
   КонецЦикла;

Для каждого строкаТЗ из ТЗ_Новых_Проводок Цикл
        ЗаполнитьЗначенияСвойств(ТЗ_Проводок.Добавить(),СтрокаТЗ);
    КонецЦикла;
    НомерСтрокиТЗ=0;
    Для каждого строкаТЗ из ТЗ_Проводок Цикл
        строкаТЗ.НомерСтроки = НомерСтрокиТЗ+1;
        //строкаТЗ.Индекс = НомерСтрокиТЗ;
        НомерСтрокиТЗ = НомерСтрокиТЗ+1;
   КонецЦикла;


Где ТЗ_проводок я изначало получил, такой функцией
Функция ВозвратТЗсПроводками(ДокументИсточник) Экспорт
   //Если (ДокументИсточник.Проведен=Ложь) ИЛИ (ДокументИсточник.Пустая()) Тогда
   //    //Предупреждение("Документ не провели, проведите его или выберите другой.");
   //    Возврат Ложь;
   //КонецЕсли;    
   Движ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   Движ.Отбор.Регистратор.Установить(ДокументИсточник);
   Движ.Прочитать();
   ТЗ = Движ.Выгрузить();
   //КолПред  = ТЗ.Количество();
   //ТЗ.ВыбратьСтроку("Всего строк "+КолПред);
   Возврат ТЗ;
   
КонецФункции
и теперь хочу к этим добавить новые сформированные, и заного записать, записываю так:

Процедура ОчисткаИЗаписьПроводок(ДокументИсточник,ТЗ)
   Движ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   Движ.Отбор.Регистратор.Установить(ДокументИсточник);
   Движ.Очистить();
   Движ.Записать();
   Движ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   Движ.Отбор.Регистратор.Установить(ДокументИсточник);
   Движ.Загрузить(ТЗ);
   Движ.Записать();
   КонецПроцедуры
1 Рэйв
 
13.10.11
15:24
текст ошибки какой?
Основная теорема систематики: Новые системы плодят новые проблемы.