7.7 выборка документов

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

  1. TopicStarter Overlay
    did_alyona
    Offline

    did_alyona

    Регистрация:
    10 окт 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Уважаемые участники форума! Помогите, пожалуйста!
    Необходимо выбрать все документы по реализации по определенному контрагенту за текущий месяц и вычислить общую сумму. Код:

    Док=СоздатьОбъект("Документ.Реализация");
    Док.ВыбратьДокументы(НачМесяца(ТекущаяДата()),КонМесяца(ТекущаяДата()));
    Пока Док.ПолучитьДокумент()=1 Цикл
    ///***Выбираем только документы,у которых контрагент такой же как и в "Реализация"
    Если Контрагент = Док.Контрагент Тогда
    Сум = Сум + Док.Сумма;
    Иначе
    Сообщить("Нет подходящих документов для данного контрагента!");
    КонецЕсли;
    КонецЦикла;


    При запуске выходит сообщение "Нет подходящих документов для данного контрагента!"

    Подскажите, пожалуйста, что неправильно?
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если речь идет о ТиС
    Код:
    Сум = Сум + Док.СуммаВзаиморасчетов;
    
    
    Иначе

    Код:
    Сум = Сум + Док.Итог("Сумма");
    
    
  3. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если Контрагент = Док.Контрагент Тогда
    
    
    Здесь Контрагент откуда берется и что содержит?
  4. TopicStarter Overlay
    did_alyona
    Offline

    did_alyona

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

    Контрагент - реквизит текущего документа, его надо сравнить с реквизитом Контрагент выбранных документов "Реализация", процедура ПриЗаписи
  5. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    а ты запросегом ;)
    Код:
        oRef = CreateObject("Reference.Контрагенты");
    oRef.FindByCode("12345");
    pRef = oRef.CurrentItem();
    ДатаНач = НачМесяца(ТекущаяДата());
    ДатаКон = КонМесяца(ТекущаяДата());
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаНач по ДатаКон;
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |Док = Документ.Реализация.ТекущийДокумент;
    |Контрагент = Документ.Реализация.Контрагент;
    |Группировка Док упорядочить по Док.ДатаДок без групп все ВошедшиеВЗапрос;   
    |Условие (Контрагент = pRef);
    |"//}}ЗАПРОС
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    
    
    
    ну ток pRef это твой контрагент, сам понимаешь
  6. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Вообще-то не видно ошибок, только алгоритм какой-то странный. Надо как-то так сделать:
    Код:
    Док=СоздатьОбъект("Документ.Реализация");
    Док.ВыбратьДокументы(НачМесяца(ТекущаяДата()),КонМесяца(ТекущаяДата()));
    Сум=0;
    Пока Док.ПолучитьДокумент()=1 Цикл
    ///***Выбираем только документы,у которых контрагент такой же как и в "Реализация"
    Если Контрагент = Док.Контрагент Тогда
    Сум = Сум + Док.Сумма;
    КонецЕсли;
    КонецЦикла;
    Если Сум = 0 Тогда
    Сообщить("Нет подходящих документов для данного контрагента!");
    КонецЕсли;
    
    
    А Вы уверены, что доки с нужным контрагентом существуют?
  7. TopicStarter Overlay
    did_alyona
    Offline

    did_alyona

    Регистрация:
    10 окт 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    ВСЕМ ОГРОМНОЕ СПАСИБО! ОЧЕНЬ ПОМОГЛИ! :unsure:

    В итоге рабочий код получился такой:
    Док=СоздатьОбъект("Документ.Реализация");
    Док.ВыбратьДокументы(НачМесяца(ТекущаяДата()),КонМесяца(ТекущаяДата()));
    Сум = 0;
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Если Док.Проведен() > 0 Тогда
    Если Док.Контрагент = Контрагент Тогда
    Сум = Сум + Док.СуммаВзаиморасчетов;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Если Сум = 0 Тогда
    Сообщить("Нет подходящих документов для данного контрагента!");
    КонецЕсли;

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