Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:09

Помогите найти ошибку

Автор Бестия, 10 ноя 2010, 18:56

0 Пользователей и 1 гость просматривают эту тему.

Бестия

Процедура Сформировать()
   ИтДт = СоздатьОбъект("БухгалтерскиеИтоги");
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Справка");
   Таб.ВывестиСекцию("Шапка");
   // ========== ТЗ дебиторов ========================
   ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
   ТЗ2= СоздатьОбъект("ИндексированнаяТаблица");
   ТЗ.НоваяКолонка("Контрагент");         
   ТЗ.НоваяКолонка("Договор");//,"Документ.Договор"
   ТЗ.НоваяКолонка("Счет");//"Строка",4
   ТЗ.НоваяКолонка("ВидДоговора");
   ТЗ.НоваяКолонка("Дата");
   ТЗ.НоваяКолонка("СКД");    //"Число",15,2
   ТЗ.НоваяКолонка("СКК");    //, "Число",15,2
   ТЗ.НоваяКолонка("Документ");
   
   БВ=СоздатьОбъект("ТаблицаЗначений");
   БВ.НоваяКолонка("НомерДок");
   БВ.НоваяКолонка("ДатаДок");
   БВ.НоваяКолонка("Договор");
   БВ.НоваяКолонка("Объект");
   //Если глПроверкаИнтервалаОтчета(,ДатаКон) = 0 Тогда
   //   Возврат;
   //КонецЕсли;
   
   ИтДт.ВключатьСубсчета(0);                         
   
   СчетСубк = ("6852;6854;361;631;371;3772");
   //Все вышеуказанные счета имеют два вида субконто
   //1. Субконто = Контрагенты
   //2. Субконто = Заказы - договор
   Сч[1]="6852";
   Сч[2]="6854";
   Сч[3]="361";
   Сч[4]="631";
   Сч[5]="371";
   Сч[6]="3772";
   
   глУстПропись(Гривня);
   Д=СоздатьОбъект("Документ");
   // == Заполнение по счетам 361;3711;3772 ==========
   Для Счета=1 По 6 Цикл
      ИтДт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1);
      ИтДт.ИспользоватьСубконто(ВидыСубконто.Заказы,,1);
      
      Если ИтДт.ВыполнитьЗапрос('01.12.06',ДатаКон,Сч[Счета]) = 0 Тогда
         Возврат;
      КонецЕсли;
      
      ИтДт.ВыбратьСчета();
      Пока ИтДт.ПолучитьСчет() = 1 Цикл
         СчетТек=ИтДт.Счет;
                  
         ИтДт.ВыбратьСубконто(1,,,,1);
         Пока ИтДт.ПолучитьСубконто(1) = 1 Цикл
            Если (ИтДт.СКД()=0) И (ИтДт.СКК()=0) Тогда
               Продолжить;
            КонецЕсли;
            ИтДт.ВыбратьСубконто(2,,,,1);
            Пока ИтДт.ПолучитьСубконто(2) = 1 Цикл
               Если (ИтДт.СКД()=0) И (ИтДт.СКК()=0) Тогда
                  Продолжить;
               КонецЕсли;
               
               ТЗ.НоваяСтрока();
               ТЗ.Контрагент = ИтДт.Субконто(1);
               ТЗ.Договор = ИтДт.Субконто(2);
               
               ТЗ.Счет = СокрЛП(ИтДт.Счет);
               Если ИтДт.Субконто(2).вид()="Договор" Тогда
               Если Счета=2 Тогда
               Д=ИтДт.Субконто(2).ТекущийДокумент();
   ВОТ ГДЕ ТО ТУТ         если Д.ВыбратьПодчиненныеДокументы(,,Д.ТекущийДокумент())=1 Тогда
                        Пока д.ПолучитьДокумент()=1 Цикл
                           
                           Если д.Вид()="БанковскаяВыписка" Тогда
                              ТЗ.Дата=д.ДатаДок;
                           КонецЕсли;
                        КонецЦикла;
                     КонецЕсли;
                  КонецЕсли;
                  ТЗ.ВидДоговора = ИтДт.Субконто(2).ВидДоговора;
               иначе
                  ТЗ.ВидДоговора = ИтДт.Субконто(2);
               конецесли;
               
               ТЗ.СКД = ИтДт.СКДРС();
               ТЗ.СКК = ИтДт.СККРС();
               
               //Если (Счета=1) или (Счета=4) или (Счета=5) или (Счета=6) Тогда
               //   ТЗ.Дата=ИтДт.Субконто(2).ДатаДок;
               
         //Иначеесли Счета=2 Тогда
               
                  //   ИтДт.ВыполнитьЗапрос(,,"6854","3774");
                  //Сообщить(ИтДт.Операция.Документ.ТекущийДокумент());
                  
               //Иначе
                  
               //КонецЕсли;
            КонецЦикла;
         КонецЦикла;
         //КонецЕсли;
         
      КонецЦикла;
   КонецЦикла;
   //БВ.ВыбратьСтроку();
   ТЗ.Свернуть("Контрагент,Договор,Счет,ВидДоговора,Дата","СКД,СКК");
   
   ТЗ.ВыбратьСтроку();
   ТЗ.Сортировать("Контрагент,Договор,Счет,ВидДоговора,Дата");
   ТЗ.Группировать("Контрагент:Контрагент","Договор,Дата,Счет,ВидДоговора",1);
   ТЗ.ВыбратьСтроки();
   Пока ТЗ.ПолучитьСтроку() = 1 Цикл
      ТЗ.тзПотомки.Выгрузить(ТЗ2);
      Таб.ВывестиСекцию("Группа");
      
      ТЗ2.ВыбратьСтроки();
      Пока ТЗ2.ПолучитьСтроку()=1 Цикл
         Таб.ВывестиСекцию("Строка");
      КонецЦикла;
      
      
   КонецЦикла;
   Таб.ВывестиСекцию("Подвал");
   Таб.Показать();
конецпроцедуры

Ошибка
если Д.ВыбратьПодчиненныеДокументы(,,Д.ТекущийДокумент())=1 Тогда
Объект не может быть перепозиционирован!


Может кто то знает, как мне по счету 6854 найти операцию (в моем случае это банковская выписка, которая подчиняеется договору ) и соответсвенно получить дату первой БВ внезависимости от количества БВ. Просто дату первой и записать её в ТЗ. Спасибки.

DenPlus

Д=ИтДт.Субконто(2).ТекущийДокумент();
   ВОТ ГДЕ ТО ТУТ         если Д.ВыбратьПодчиненныеДокументы(,,Д.ТекущийДокумент())=1 Тогда

ВыбратьПодчиненныеДокументы() - Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.

Используйте:
Док = СоздатьОбъект("Документ...");
Если Док.НайтиДокумент(Д) = 1 Тогда
ПродолжаемРаботатьс Д
КонецЕсли;

DenPlus

Сорри. ПродолжаемРаботать с "уже Док"

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск