8.х Лимит

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Эмиль0690, 25 дек 2015.

  1. TDU2000
    Offline

    TDU2000

    Регистрация:
    27 дек 2015
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Если цель процедуры проверить долг конкретного контрагента, то тогда в первой временной таблице "Клиенты" добавьте отбор по этому контрагенту. Сейчас запрос возвращает список всех контрагентов, по которым были розничные продажи, в условии берете первого попавшегося в выборке.
  2. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    По проще объясните пожалуйста!
    --- Объединение сообщений, 10 фев 2016 ---
    извините где тут есть "отбор"
    upload_2016-2-10_14-54-11.png
  3. TDU2000
    Offline

    TDU2000

    Регистрация:
    27 дек 2015
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    В конструкторе запросов, на закладке условия, добавить условие по контрагенту. Тогда запрос вернет данные по одному контрагенту и суммы продаж и остаток с лимитом
  4. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    так?
    upload_2016-2-10_15-51-37.png

    ошибка

    upload_2016-2-10_15-50-20.png
  5. TDU2000
    Offline

    TDU2000

    Регистрация:
    27 дек 2015
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    У вас же в запросе параметр назван "Клиент", значит нужно писать: РозничнаяПродажа.Контрагент = &Клиент
  6. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    Вы имеете ввиду здесь?
    upload_2016-2-11_9-19-5.png
    если здесь то конструктор запроса не открывается
    upload_2016-2-11_9-20-22.png

    Вложения:

  7. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Зачем вы передаёте клиента в группировку? У вас и так будет выполнена группировка по всем клиентам которые будут в выборке. О чём вам программа и сообщает. Что нельзя так делать.
  8. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    да я понял что нельзя!
    а как можно сделать?
  9. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    сделать что?
  10. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    ну как правильно написать код.
  11. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Вам же выше написали что нужно сделать отбор по контрагенту. А не передавать "Клиента" в группировку.

    Параметр Контрагент у вас вообще не задаётся.

    В первом пакете сделайете условие ГДЕ Документ.РозничнаяПродажа = &Контрагент и передайте вашего контрагента в запрос.
  12. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    Так?

    Код:
     //ВТОРОЙ ВАРИАНТ 22222222222222222
        Запрос=Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    РозничнаяПродажа.Контрагент,
                       |    СУММА(РозничнаяПродажа.СуммаПродажиNC) КАК СуммаПродажиNC
                       |ПОМЕСТИТЬ Клиенты
                       |ИЗ
                       |    Документ.РозничнаяПродажа КАК РозничнаяПродажа
                       |ГДЕ
                       |    РозничнаяПродажа.Контрагент = &Контрагент
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    РозничнаяПродажа.Контрагент
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ВзаиморасчетыПоКонтрагентамОстатки.Клиент,
                       |    ВзаиморасчетыПоКонтрагентамОстатки.ОстатокNCОстаток
                       |ПОМЕСТИТЬ Взаиморасчеты
                       |ИЗ
                       |    РегистрНакопления.ВзаиморасчетыПоКонтрагентам.Остатки(&Момент, Клиент = &Клиент) КАК ВзаиморасчетыПоКонтрагентамОстатки
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ЛимитыСрезПоследних.Клиент,
                       |    ЛимитыСрезПоследних.Лимит
                       |ПОМЕСТИТЬ Лимиты
                       |ИЗ
                       |    РегистрСведений.Лимиты.СрезПоследних(&Момент, Клиент = &Клиент) КАК ЛимитыСрезПоследних
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    Клиенты.Контрагент,
                       |    Клиенты.СуммаПродажиNC,
                       |    ЕСТЬNULL(Взаиморасчеты.ОстатокNCОстаток, 0) КАК ОстатокNCОстаток,
                       |    ЕСТЬNULL(Лимиты.Лимит, 0) КАК Лимит
                       |ИЗ
                       |    Клиенты КАК Клиенты
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Взаиморасчеты КАК Взаиморасчеты
                       |        ПО Клиенты.Контрагент = Взаиморасчеты.Клиент
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Лимиты КАК Лимиты
                       |        ПО Клиенты.Контрагент = Лимиты.Клиент";
       
       
        Запрос.УстановитьПараметр("Клиент", Контрагент);
        Запрос.УстановитьПараметр("Момент", МоментВремени());
        //Запрос.УстановитьПараметр("Ссылка", Ссылка);
       
        Результат = Запрос.Выполнить();
       
        ВыборкаДетальныеЗаписи = Результат.Выбрать();
       
        //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
           
            Если ВыборкаДетальныеЗаписи.Следующий() Тогда
                ПланируемыйДолг = ВыборкаДетальныеЗаписи.СуммаПродажиNC + ВыборкаДетальныеЗаписи.ОстатокNCОстаток;   
                Если ПланируемыйДолг > ВыборкаДетальныеЗаписи.Лимит Тогда
                    Сообщить(("Превышен размер задолженности!  Сумма задолжености: "+Строка(ВыборкаДетальныеЗаписи.ОстатокNCОстаток)));
                    Отказ = Истина;
                КонецЕсли;   
            КонецЕсли;
        ////КонецЦикла;
    
    теперь при проведение ошибки дает
    upload_2016-2-11_10-7-0.png

    думаю что ошибка где то здесь
    upload_2016-2-11_10-8-14.png
    не смог решить( посмотрите еще раз пожалуйста!
  13. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    А параметр в запросе называется "Контрагент".

    нужно писать:
    Запрос.УстановитьПараметр("Контрагент", Контрагент);


    И проверить что передается в переменной Контрагент.
  14. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    сделал все еще ошибка
    Код:
     //ВТОРОЙ ВАРИАНТ 22222222222222222
        Запрос=Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    РозничнаяПродажа.Контрагент,
                       |    СУММА(РозничнаяПродажа.СуммаПродажиNC) КАК СуммаПродажиNC
                       |ПОМЕСТИТЬ Клиенты
                       |ИЗ
                       |    Документ.РозничнаяПродажа КАК РозничнаяПродажа
                       |ГДЕ
                       |    РозничнаяПродажа.Контрагент = &Контрагент
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    РозничнаяПродажа.Контрагент
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ВзаиморасчетыПоКонтрагентамОстатки.Клиент,
                       |    ВзаиморасчетыПоКонтрагентамОстатки.ОстатокNCОстаток
                       |ПОМЕСТИТЬ Взаиморасчеты
                       |ИЗ
                       |    РегистрНакопления.ВзаиморасчетыПоКонтрагентам.Остатки(&Момент, Клиент = &Клиент) КАК ВзаиморасчетыПоКонтрагентамОстатки
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ЛимитыСрезПоследних.Клиент,
                       |    ЛимитыСрезПоследних.Лимит
                       |ПОМЕСТИТЬ Лимиты
                       |ИЗ
                       |    РегистрСведений.Лимиты.СрезПоследних(&Момент, Клиент = &Клиент) КАК ЛимитыСрезПоследних
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    Клиенты.Контрагент,
                       |    Клиенты.СуммаПродажиNC,
                       |    ЕСТЬNULL(Взаиморасчеты.ОстатокNCОстаток, 0) КАК ОстатокNCОстаток,
                       |    ЕСТЬNULL(Лимиты.Лимит, 0) КАК Лимит
                       |ИЗ
                       |    Клиенты КАК Клиенты
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Взаиморасчеты КАК Взаиморасчеты
                       |        ПО Клиенты.Контрагент = Взаиморасчеты.Клиент
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Лимиты КАК Лимиты
                       |        ПО Клиенты.Контрагент = Лимиты.Клиент";
       
       
        Запрос.УстановитьПараметр("Контрагент", Контрагент);
        Запрос.УстановитьПараметр("Момент", МоментВремени());
        //Запрос.УстановитьПараметр("Ссылка", Ссылка);
       
        Результат = Запрос.Выполнить();
       
        ВыборкаДетальныеЗаписи = Результат.Выбрать();
       
        //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
           
            Если ВыборкаДетальныеЗаписи.Следующий() Тогда
                ПланируемыйДолг = ВыборкаДетальныеЗаписи.СуммаПродажиNC + ВыборкаДетальныеЗаписи.ОстатокNCОстаток;   
                Если ПланируемыйДолг > ВыборкаДетальныеЗаписи.Лимит Тогда
                    Сообщить(("Превышен размер задолженности!  Сумма задолжености: "+Строка(ВыборкаДетальныеЗаписи.ОстатокNCОстаток)));
                    Отказ = Истина;
                КонецЕсли;   
            КонецЕсли;
    
    ошибка
    upload_2016-2-11_10-32-6.png
    у меня в рег накопление "ВзаиморасчетыПоКонтрагентам" Измерения называется "Клиент" а в доке "РозничнаяПродажа" объект называется "Контрагент"
  15. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Так значит передавай ещё один параметр:
    Запрос.УстановитьПараметр("Клиент", Контрагент);
    Или в запросе измени имя параметра с клиента на контрагент, напиши так:
    Код:
     РегистрНакопления.ВзаиморасчетыПоКонтрагентам.Остатки(&Момент, Клиент = &Контрагент)
    И здесь то же:
    Код:
       РегистрСведений.Лимиты.СрезПоследних(&Момент, Клиент = &Клиент) 
    И вот эту часть перепиши на:
    Код:
    Запрос.УстановитьПараметр("Момент", Новый Граница(КонецДня(ДатаСреза,ВидГраницы.Включая));
    В переменную "ДатаСреза" передаёшь нужную тебе дату.
  16. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    так?
    Код:
     //ВТОРОЙ ВАРИАНТ 22222222222222222
        Запрос=Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    РозничнаяПродажа.Контрагент,
                       |    СУММА(РозничнаяПродажа.СуммаПродажиNC) КАК СуммаПродажиNC
                       |ПОМЕСТИТЬ Клиенты
                       |ИЗ
                       |    Документ.РозничнаяПродажа КАК РозничнаяПродажа
                       |ГДЕ
                       |    РозничнаяПродажа.Контрагент = &Контрагент
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    РозничнаяПродажа.Контрагент
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       //|    ВзаиморасчетыПоКонтрагентамОстатки.Клиент,
                       | РегистрНакопления.ВзаиморасчетыПоКонтрагентам.ОстаткиNC(&Момент, Клиент = &Контрагент)
                       |    ВзаиморасчетыПоКонтрагентамОстатки.ОстатокNCОстаток
                       |ПОМЕСТИТЬ Взаиморасчеты
                       |ИЗ
                       |    РегистрНакопления.ВзаиморасчетыПоКонтрагентам.Остатки(&Момент, Клиент = &Клиент) КАК ВзаиморасчетыПоКонтрагентамОстатки
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ЛимитыСрезПоследних.Клиент,
                       |    ЛимитыСрезПоследних.Лимит
                       |ПОМЕСТИТЬ Лимиты
                       |ИЗ
                       //|    РегистрСведений.Лимиты.СрезПоследних(&Момент, Клиент = &Клиент) КАК ЛимитыСрезПоследних
                       | РегистрСведений.Лимиты.СрезПоследних(&Момент, Клиент = &Клиент)
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    Клиенты.Контрагент,
                       |    Клиенты.СуммаПродажиNC,
                       |    ЕСТЬNULL(Взаиморасчеты.ОстатокNCОстаток, 0) КАК ОстатокNCОстаток,
                       |    ЕСТЬNULL(Лимиты.Лимит, 0) КАК Лимит
                       |ИЗ
                       |    Клиенты КАК Клиенты
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Взаиморасчеты КАК Взаиморасчеты
                       |        ПО Клиенты.Контрагент = Взаиморасчеты.Клиент
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Лимиты КАК Лимиты
                       |        ПО Клиенты.Контрагент = Лимиты.Клиент";
       
       
        Запрос.УстановитьПараметр("Контрагент", Контрагент);
        Запрос.УстановитьПараметр("Момент", МоментВремени());
        //Запрос.УстановитьПараметр("Ссылка", Ссылка);
        Запрос.УстановитьПараметр("Момент", Новый Граница(КонецДня(ДатаСреза,ВидГраницы.Включая));
       
        Результат = Запрос.Выполнить();
       
        ВыборкаДетальныеЗаписи = Результат.Выбрать();
       
        //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
           
            Если ВыборкаДетальныеЗаписи.Следующий() Тогда
                ПланируемыйДолг = ВыборкаДетальныеЗаписи.СуммаПродажиNC + ВыборкаДетальныеЗаписи.ОстатокNCОстаток;   
                Если ПланируемыйДолг > ВыборкаДетальныеЗаписи.Лимит Тогда
                    Сообщить(("Превышен размер задолженности!  Сумма задолжености: "+Строка(ВыборкаДетальныеЗаписи.ОстатокNCОстаток)));
                    Отказ = Истина;
                КонецЕсли;   
            КонецЕсли;
    
    куча ошибки есть -Wideyed-
  17. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Код:
      
    ДатаСреза = ТУТ_ТВОЯ_ДАТА;
      Запрос=Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    РозничнаяПродажа.Контрагент,
                       |    СУММА(РозничнаяПродажа.СуммаПродажиNC) КАК СуммаПродажиNC
                       |ПОМЕСТИТЬ Клиенты
                       |ИЗ
                       |    Документ.РозничнаяПродажа КАК РозничнаяПродажа
                       |ГДЕ
                       |    РозничнаяПродажа.Контрагент = &Контрагент
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    РозничнаяПродажа.Контрагент
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       //|    ВзаиморасчетыПоКонтрагентамОстатки.Клиент,
                       | РегистрНакопления.ВзаиморасчетыПоКонтрагентам.ОстаткиNC(&Момент, Клиент = &Контрагент)
                       |    ВзаиморасчетыПоКонтрагентамОстатки.ОстатокNCОстаток
                       |ПОМЕСТИТЬ Взаиморасчеты
                       |ИЗ
                       |    РегистрНакопления.ВзаиморасчетыПоКонтрагентам.Остатки(&Момент, Клиент = &Контрагент) КАК ВзаиморасчетыПоКонтрагентамОстатки
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ЛимитыСрезПоследних.Клиент,
                       |    ЛимитыСрезПоследних.Лимит
                       |ПОМЕСТИТЬ Лимиты
                       |ИЗ
                       |    РегистрСведений.Лимиты.СрезПоследних(&Момент, Клиент = &Контрагент) КАК ЛимитыСрезПоследних
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    Клиенты.Контрагент,
                       |    Клиенты.СуммаПродажиNC,
                       |    ЕСТЬNULL(Взаиморасчеты.ОстатокNCОстаток, 0) КАК ОстатокNCОстаток,
                       |    ЕСТЬNULL(Лимиты.Лимит, 0) КАК Лимит
                       |ИЗ
                       |    Клиенты КАК Клиенты
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Взаиморасчеты КАК Взаиморасчеты
                       |        ПО Клиенты.Контрагент = Взаиморасчеты.Клиент
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Лимиты КАК Лимиты
                       |        ПО Клиенты.Контрагент = Лимиты.Клиент";
      
      
        Запрос.УстановитьПараметр("Контрагент", Контрагент);
        Запрос.УстановитьПараметр("Момент", Новый Граница(КонецДня(ДатаСреза,ВидГраницы.Включая));
       
  18. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    а какой еще дата? ДатаСреза = ТУТ_ТВОЯ_ДАТА;???
    ошибка
    Код:
    {Документ.РозничнаяПродажа.МодульОбъекта(87,70)}: Ожидается символ ')'
        Запрос.УстановитьПараметр("Момент", Новый Граница(КонецДня(ДатаСреза<<?>>,ВидГраницы.Включая)); (Проверка: Сервер)
    
    при выставление знака ")" тоже ошибка
    Код:
    {Документ.РозничнаяПродажа.МодульОбъекта(87,61)}: Переменная не определена (ДатаСреза)
        Запрос.УстановитьПараметр("Момент", Новый Граница(КонецДня(<<?>>ДатаСреза),ВидГраницы.Включая)); (Проверка: Сервер)
    
  19. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Ипать, Эмиль, вы продолжаете радовать:D, скобку одну забыли
    Код:
    Запрос.УстановитьПараметр("Момент", Новый Граница(КонецДня(ДатаСреза,ВидГраницы.Включая)));
  20. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.570
    Симпатии:
    717
    Баллы:
    204
    Вид границы в данном случае можно не указывать :)
Похожие темы
  1. Arseni
    Ответов:
    1
    Просмотров:
    967
  2. bolonka
    Ответов:
    1
    Просмотров:
    699
  3. vovakent
    Ответов:
    4
    Просмотров:
    2.124
  4. gor242
    Ответов:
    6
    Просмотров:
    747
Загрузка...

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