7.7 Формирование Итогов продаж по Контрагенту

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем YuriyK, 12 окт 2010.

  1. TopicStarter Overlay
    YuriyK
    Offline

    YuriyK

    Регистрация:
    11 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Может ли кто-то подсказать?
    Как пройтись по всем договорам контрагента и подсчитать ИТОГ суммы взятого им товара по всем договорам. Установлена вот такая процедура в контрагенте, но она подсчитывает только по одному Основному договору, а нужно по всем. Пожалуйста подскажите, очень нужно! Я чайник в 1С, если можно подробнее? :angry:

    Посмотреть вложение 5512

    Процедура РасчетТекущегоДолга()

    ТекущийДолг = глТекущийДолг(Фирма, Договор, "покупатель");
    Если ТекущийДолг < 0 Тогда
    Форма.ТекстТекущийДолг.Цвет(255);
    Иначе
    Форма.ТекстТекущийДолг.Цвет(0,0,128);
    КонецЕсли;

    КонецПроцедуры

    1С 7.7 ТиС ред.9.2 (7.70.942)

    Вложения:

  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Есть 2 варианта.
    Первый
    Код:
    Функция ОбщаяСуммаДолга(ВыбФирма)
    Сумма=0;
    Спр=СоздатьОбъект("Справочник.Договоры");
    Спр.ИспользоватьВладельца(Контрагент);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Сумма=Сумма+глТекущийДолг(ВыбФирма, Спр.ТекущийЭлемен(), "покупатель");
    КонецЦикла;
    Возврат Сумма;
    КонецФункции
    
    
    Или через запрос:
    Код:
    Функция ОбщаяСуммаДолга(ВыбФирма)
    Сп=СоздатьОбъект("СписокЗначений");
    Спр=СоздатьОбъект("Справочник.Договоры");
    Спр.ИспользоватьВладельца(Контрагент);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Сп.ДобавитьЗначение(Спр.ТекущийЭлемент());
    КонецЦикла;
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ТекущаяДата() по ТекущаяДата();
    |Без итогов;
    |Фирма = Регистр.Покупатели.Фирма;
    |Договор = Регистр.Покупатели.Договор;
    |СуммаВал = Регистр.Покупатели.СуммаВал;
    |Функция СуммаВалКонОст = КонОст(СуммаВал);
    |Группировка Договор без групп;
    |Условие(Фирма = ВыбФирма);
    |Условие(Договор В Сп);
    |"//}}ЗАПРОС;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат 0;
    КонецЕсли;
    Таб=СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(Таб);
    Возврат Таб.Итог("СуммаВалКонОст");
    
    
  3. TopicStarter Overlay
    YuriyK
    Offline

    YuriyK

    Регистрация:
    11 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Все сделал по первому варианту он больше подходит, но почему-то выдает 0. Почему по договорам не считает? :angry:
  4. TopicStarter Overlay
    YuriyK
    Offline

    YuriyK

    Регистрация:
    11 окт 2010
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Ура!!! :angry: Все заработало!!! Огромное Вам спасибо!
    Код:
    Функция ОбщаяСуммаДолга(ВыбФирма) 
    Перем Сумма;
    Сумма=0;
    Спр=СоздатьОбъект("Справочник.Договоры");
    Спр.ИспользоватьВладельца(ТекущийЭлемент());
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл  
    Сумма=Сумма+глТекущийДолг(ВыбФирма, Спр.ТекущийЭлемент(), "покупатель");
    КонецЦикла;
    Возврат Сумма;
    КонецФункции
    

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