7.7 Установить задолженность контрагента на конкретную дату

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

  1. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Подскажите, как установить задолженность контрагента на конкретную дату в 1С 7.7 Предпринимателе. Пытаюсь получить из регистров:
    Код:
    Рег1=СоздатьОбъект("Регистр.РасчетыСПокупателями");
    Пока СправочникКонтрагентов.ПолучитьЭлемент() > 0 Цикл
    ВыбКонтрагент=СправочникКонтрагентов.Наименование;
    Рег1.УстановитьФильтр(ВыбКонтрагент);
    Рег1.ВременныйРасчет();
    РассчитатьРегистрыНа(ДатаОперации);
    СуммаПок = Рег1.Остаток(ВыбКонтрагент, "Задолженность");
    КонецЦикла;
    
    Выдается сообщение: Недостаточное число параметров передано при вызове функции/процедуры объекта" при получении Остатка. Наверное, что-то не так делаю...
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104

    Остаток(<Измерен1>,<Измерен2>...,<ИмяРесурса>)
    Назначение:
    Возвращает значение остатка заданного ресурса регистра.
    Параметры:
    <Измерен1>,<Измерен2>... - значения измерений регистра;
    <ИмяРесурса> - название требуемого ресурса регистра.


    Не все измерения указали, вот и ругается..
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вообще В ДАННОЙ конфе остаток получим так:
    Код:
    ....
    ОстПок=Рег1.Остаток(,,,Договор,,,,"Сумма");
    ОстПост=Рег2.Остаток(,,,,Договор,,,"Сумма");
    Сообщить("Дог контрагента "+ОстПок-ОстПост)
    
    
    рег2 - регистр по поставщикам. Его тоже нужно учитывать, тк.
    контрагент м.б. не только покупателем
    Внимание! Обращаю внимание на то что в качестве ресурса в регистрах присутствует не контрагент, а договор (подчинен контрагенту)
  4. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Чтобы установить остаток на дату использовать:
    Код:
    Рег1.ИспользоватьПериод(ДатаРасчета);
    
    Это будет означать остаток точно на конец даты?
    Второй вопрос. Как установить связь Договора с Покупателем?
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Использовать РассчитатьРегистрыНа или РассчитатьРегистрыНа
    2)
    Код:
    Дог=СоздатьОбъект("Справочник.Договоры");
    Дог.ИспользоватьВладельца(ЭлементСпрКонтрагентов);
    Док.ВыбратьЭлементы();
    Пока Док.ПолучитьЭлемент()=1 Цикл
    //тут мы получаем список договоров контрагента, т.к. их
    //м.б. неограниченное количество
    КонецЦикла;
    
    
    
  6. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    С регистрами напрямую решить задачу не удалось, а вот с помощью Запроса все получилось:
    Код:
    ДатаНачала=ДатаОперации;
    ДатаКонца=ДатаОперации;
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаНачала по ДатаКонца;
    |Контрагент = Регистр.РасчетыСПокупателями.Договор.Владелец;
    |СуммаПокупателей = Регистр.РасчетыСПокупателями.Сумма;
    |Группировка Контрагент Упорядочить По Контрагент.Наименование Без Групп;
    |Функция КонОстПокупателей = КонОст(СуммаПокупателей);
    |Условие(Контрагент.ПринадлежитГруппе(ГруппаОтбора) = 1);";
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    Пока Запрос.Группировка(1) = 1 Цикл
    ДолгКонрагента=Запрос.КонОстПокупателей;
    Сообщить(СокрЛП(Строка(Запрос.Контрагент))+" "+Строка(ДолгКонрагента),"i");
    КонецЦикла;
    
    
    Нюанс в том, что задолженность ищется только для каждого покупателя, входящего в определенную группу, и, покупатель не может быть одновременно поставщиком.
    Не знаю, насколько верно сделал, но результат точно соответствует ведомости по контрагентам!
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А вы попробуйте....
    Сделайте контрагента Пупкин и получите от него товар (или услугу)
    и тут же что-нибудь ему продайте. После этого сравните отчеты...

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