7.7 Данные по счетам

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем gatalevich, 1 окт 2009.

  1. TopicStarter Overlay
    gatalevich
    Offline

    gatalevich

    Регистрация:
    1 окт 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Проблема такова -
    Есть список котрагентов, они сгрупированны, есть счет 68 на котором авансы контрагентов, есть счет 361 на котором задолженность контрагентов. Нужно создать обработку-отчет, где бы в таблицу на определенную дату выбирались все контрагенты и по каждому дебетовый остаток по 361сч. и кредитовый по 68сч.
    1с старенькая, 7.5 конф. Форт 2000
    Интересует алгоритм и последовательность действий.

    Дальше такого кода что-то не двигается дело.... -

    Код:
    Спр = СоздатьОбъект("Справочник.Контрагенты");
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Група1,1,0);
    Ит.ВыполнитьЗапрос(Дата1,Дата1,"361.1");
    //Ит.ВыбратьСчета();
    
    
    ИтК=СоздатьОбъект("БухгалтерскиеИтоги");
    ИтК.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Група1,1,0);
    ИтК.ВыполнитьЗапрос(Дата1,Дата1,"68.1");
    //ИтК.ВыбратьСчета();
    //ИтК.ВыбратьСубконто(1);  
    
    Таб=СоздатьОбъект("Таблица");
    Таб.ВывестиСекцию("Заголовок");
    Таб.ВывестиСекцию("Шапка"); 
    
    Спр.НайтиЭлемент(Група1);
    Спр.ИспользоватьРодителя(Група1);
    Спр.ВключатьПодчиненные(1);
    Спр.ВыбратьЭлементы();
    
    
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Контр=Спр.ТекущийЭлемент();
    НаимОрганиз=Контр.Наименование;
    КодОрг=Контр.Код;
    
    Ит.ВыбратьСубконто();
    Если Ит.ПолучитьСубконто(1,,Контр)=1 Тогда
    Рах361=Ит.СКД();
    Иначе Рах361="не пол_субконто";
    КонецЕсли;
    
    ИтК.ВыбратьСубконто();
    Если ИтК.ПолучитьСубконто(1,,Контр)=1 Тогда
    Рах68=ИтК.СКК();
    Иначе Рах68="не пол_субконто";
    КонецЕсли;                                 
    
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    а от куда этот код? он даже не запуститься, т.к. написан с ошибками.

    Да и не видя структуры ИБ сложно сказать.

    Общий алгоритм таков.

    1. Создаем объект БИ
    2. Указываем использовать субконто Контрагент
    3. Делаем запрос на нужную дату по двум счетам
    4. Первым циклом перебираем субконто (контров)
    5. Вложенным циклом перебираем счета
    6. Внутри вложенного цикла выводим правильно заполненную секцию
  3. TopicStarter Overlay
    gatalevich
    Offline

    gatalevich

    Регистрация:
    1 окт 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    3. Делаем запрос на нужную дату по двум счетам
    4. Первым циклом перебираем субконто (контров)
    5. Вложенным циклом перебираем счета

    спасибо за ответ)

    а можна пример кода, применимый к даной ситуации?)
  4. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Код:
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Група1,1,0);
    Ит.ВыполнитьЗапрос(Дата1,Дата1,"361.1,68.1");
    Ит.ВыбратьСубконто(1);
    Пока Ит.ПолучитьСубконто(1) = 1 Цикл
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    // Сдесь вывод секции
    КонецЦикла;
    КонецЦикла;
    
    
    Хотя можно получать и конкретные счета, например так
    Код:
    //....
    Ит.ВыбратьСчета();
    Если Ит.ПолучитьСчет(,"361.1") = 1 Тогда
    // Сдесь вывод секции 361.1
    КонецЕсли;
    Если Ит.ПолучитьСчет(,"68.1") = 1 Тогда
    // Сдесь вывод секции 68.1
    КонецЕсли;
    //....
    
    
  5. TopicStarter Overlay
    gatalevich
    Offline

    gatalevich

    Регистрация:
    1 окт 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо)
    так?

    Код:
     Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Група1,1,0);
    Ит.ВыполнитьЗапрос(Дата1,Дата1,"361.1,68.1");
    Ит.ВыбратьСубконто(1);
    
    Таб=СоздатьОбъект("Таблица");
    Таб.ВывестиСекцию("Заголовок");
    Таб.ВывестиСекцию("Шапка"); 
    
    Пока Ит.ПолучитьСубконто(1)=1 Цикл
    
    Контр=Ит.Субконто();
    НаимОрганиз=Контр.Наименование;
    КодОрг=Контр.Код; 
    
    Ит.ВыбратьСчета();
    
    Если Ит.ПолучитьСчет(,"361.1")=1 Тогда
    Рах361=Ит.СКД();
    Иначе Рах361="не пол_субконто";
    КонецЕсли;
    
    Если Ит.ПолучитьСчет(,"68.1")=1 Тогда
    Рах68=Ит.СКК();
    Иначе Рах68="не пол_субконто";
    КонецЕсли;
    
    Таб.ВывестиСекцию("Контрагент");
    Ном=Ном+1;
    
    КонецЦикла;
    
    При этом выводит секцию "Шапка" и дальше пусто...( в чем причина?
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не срабатывает условие
    Код:
    Пока Ит.ПолучитьСубконто(1)=1 Цикл
    
    
    Нет оборотов за узанную дату
  7. TopicStarter Overlay
    gatalevich
    Offline

    gatalevich

    Регистрация:
    1 окт 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Хм... но на любую дату по этим счетам как минимум по 1000 контрагентов есть обороты...(
    Это может быть из-за структуры справочника "Контрагенты"? Они сгрупированны там -
    Контрагенты-
    Потребители-
    -район1
    -район2
    ......
    ......
    каждая из этих папок еще в свою очередь разбита на несколько, а там уже сами элементы справочника...
    Никак не могу понять где ошибка..(
  8. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Бери отладчик, без него не обойтись
  9. TopicStarter Overlay
    gatalevich
    Offline

    gatalevich

    Регистрация:
    1 окт 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Код:
    Ит.ВыполнитьЗапрос(Дата1,Дата1,"361.1,68.1");
    
    
    эта запись коректна в 1с 7.5? Имею ввиду по двум счетам запрос..
  10. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А кто его знает? Я работаю с 7.7....
  11. TopicStarter Overlay
    gatalevich
    Offline

    gatalevich

    Регистрация:
    1 окт 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    :unsure:
    есть другой путь?)

    например, такая запись будет правильной?

    Код:
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Група1,1,0);
    Ит.ВыполнитьЗапрос(Дата1,Дата2,"361.1");
    Ит.ВыбратьСубконто(1);
    
    ИтК=СоздатьОбъект("БухгалтерскиеИтоги");
    ИтК.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Група1,1,0);
    ИтК.ВыполнитьЗапрос(Дата1,Дата2,"68.1");
    ИтК.ВыбратьСубконто(1);  
    
    Таб=СоздатьОбъект("Таблица");
    Таб.ВывестиСекцию("Заголовок");
    Таб.ВывестиСекцию("Шапка"); 
    
    
    Суммм=0; 
    Пока Ит.ПолучитьСубконто(1)=1 Цикл
    
    Контр=Ит.Субконто();
    НаимОрганиз=Контр.Наименование;
    КодОрг=Контр.Код; 
    
    Ит.ВыбратьСчета();
    Если Ит.ПолучитьСчет(,"361.1")=1 Тогда
    Рах361=Ит.СКД();
    Иначе Рах361="не пол_субконто";
    КонецЕсли;
    
    ИтК.ВыбратьСчета();
    Если ИтК.ПолучитьСчет(,"68.1")=1 Тогда
    Рах68=ИтК.СКК();
    Иначе Рах68="не пол_субконто";
    КонецЕсли;
    
    Таб.ВывестиСекцию("Контрагент");
    
    
  12. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Не совсем, ведь по ИтК нет выбора и перебора субконто (контров)

Поделиться этой страницей