Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Просроченные долги по расчетным документам: отбор по договорам          
Constantus Подменю пользователя
сообщение 24.07.17, 11:20
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Нашел и скачал вот такой интересный отчет: [необходимо зарегистрироваться для просмотра ссылки] (бесплатно)
Просроченные долги по срокам и документам для 1С УТ10

Отчет интересный получился и вроде правильный.

Код
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    Календарь.ДатаКалендаря КАК ДатаКалендаря,
    |    КОЛИЧЕСТВО(*) КАК Ранг
    |ПОМЕСТИТЬ Календарь
    |ИЗ
    |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК КалендарьКопия
    |        ПО Календарь.ДатаКалендаря >= КалендарьКопия.ДатаКалендаря
    |ГДЕ
    |    Календарь.ДатаКалендаря >= &МинимальнаяДата
    |    И (Календарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
    |            ИЛИ Календарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
    |    И КалендарьКопия.ДатаКалендаря >= &МинимальнаяДата
    |    И (КалендарьКопия.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
    |            ИЛИ КалендарьКопия.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
    |
    |СГРУППИРОВАТЬ ПО
    |    Календарь.ДатаКалендаря
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    ДатаКалендаря
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    КалендарьРанг.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    |    Календарь.ДатаКалендаря КАК ДатаКалендаря
    |ПОМЕСТИТЬ РабочаяДатаВзаиморасчетыОстаткиИОбороты
    |ИЗ
    |    Календарь КАК Календарь
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    |            МИНИМУМ(Календарь.Ранг) + МИНИМУМ(ВзаиморасчетыОстаткиИОбороты.ДопустимоеЧислоДнейЗадолженности) КАК РангСоединения,
    |            МИНИМУМ(Календарь.Ранг) КАК Ранг
    |        ИЗ
    |            (ВЫБРАТЬ
    |                ВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    |                МИНИМУМ(ВзаиморасчетыОстаткиИОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) КАК ДопустимоеЧислоДнейЗадолженности,
    |                НАЧАЛОПЕРИОДА(МИНИМУМ(ВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата), ДЕНЬ) КАК Дата
    |            ИЗ
    |                РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
    |                        &ДатаНач,
    |                        &ДатаКон,
    |                        Регистратор {(&Периодичность)},
    |                        ,
    |                        ДоговорКонтрагента.ВидДоговора В (&МассивВидовДоговоров)
    |                            И ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности > 0
    |                            И ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом = ИСТИНА) КАК ВзаиморасчетыОстаткиИОбороты
    |            ГДЕ
    |                ВзаиморасчетыОстаткиИОбороты.УпрУчет
    |            
    |            СГРУППИРОВАТЬ ПО
    |                ВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыОстаткиИОбороты
    |                ВНУТРЕННЕЕ СОЕДИНЕНИЕ Календарь КАК Календарь
    |                ПО ВзаиморасчетыОстаткиИОбороты.Дата <= Календарь.ДатаКалендаря
    |        
    |        СГРУППИРОВАТЬ ПО
    |            ВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом) КАК КалендарьРанг
    |        ПО (КалендарьРанг.РангСоединения = Календарь.Ранг)
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    ДокументРасчетовСКонтрагентом
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ИтогиВзаиморасчетов.Организация КАК Организация,
    |    ИтогиВзаиморасчетов.Контрагент КАК Контрагент,
    |    ИтогиВзаиморасчетов.ДоговорКонтрагента КАК ДоговорКонтрагента,
    |    ИтогиВзаиморасчетов.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
    |    ИтогиВзаиморасчетов.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    |    ИтогиВзаиморасчетов.ДокументРасчетовСКонтрагентом.Дата КАК ДатаДокумента,
    |    ИтогиВзаиморасчетов.КоличествоДнейОтсрочки КАК КоличествоДнейОтсрочки,
    |    ВЫБОР
    |        КОГДА РАЗНОСТЬДАТ(&ПолучитьНаДату, ИтогиВзаиморасчетов.Срок, ДЕНЬ) > 0
    |            ТОГДА 0
    |        ИНАЧЕ РАЗНОСТЬДАТ(&ПолучитьНаДату, ИтогиВзаиморасчетов.Срок, ДЕНЬ)
    |    КОНЕЦ КАК ПросроченоДней,
    |    ИтогиВзаиморасчетов.СуммаОбщегоДолга КАК СуммаОбщегоДолга,
    |    ИтогиВзаиморасчетов.Срок КАК Срок,
    |    ВЫБОР
    |        КОГДА ИтогиВзаиморасчетов.СуммаОбщегоДолга < 0
    |            ТОГДА ИтогиВзаиморасчетов.СуммаОбщегоДолга
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК СуммаАвансов,
    |    ВЫБОР
    |        КОГДА ИтогиВзаиморасчетов.СуммаОбщегоДолга > 0
    |                И ИтогиВзаиморасчетов.Срок <= &ПолучитьНаДату
    |            ТОГДА ИтогиВзаиморасчетов.СуммаОбщегоДолга
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК СуммаПросроченныйДолг,
    |    ВЫБОР
    |        КОГДА ИтогиВзаиморасчетов.СуммаОбщегоДолга > 0
    |                И НЕ ИтогиВзаиморасчетов.Срок <= &ПолучитьНаДату
    |            ТОГДА ИтогиВзаиморасчетов.СуммаОбщегоДолга
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК СуммаНепросроченныйДолг,
    |    ИтогиВзаиморасчетов.ДокументРасчетовСКонтрагентом.СуммаДокумента КАК СуммаДокумента
    |{ВЫБРАТЬ
    |    ВалютаВзаиморасчетов.*,
    |    Контрагент.*,
    |    Организация.*,
    |    ДоговорКонтрагента.*,
    |    ДокументРасчетовСКонтрагентом.*,
    |    ДатаДокумента,
    |    СуммаДокумента,
    |    КоличествоДнейОтсрочки,
    |    Срок,
    |    ПросроченоДней,
    |    СуммаОбщегоДолга,
    |    СуммаАвансов,
    |    СуммаПросроченныйДолг,
    |    СуммаНепросроченныйДолг}
    |ИЗ
    |    (ВЫБРАТЬ
    |        ОстаткиПоПериодам.Организация КАК Организация,
    |        ОстаткиПоПериодам.Контрагент КАК Контрагент,
    |        ОстаткиПоПериодам.ДоговорКонтрагента КАК ДоговорКонтрагента,
    |        ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
    |        ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    |        ОстаткиПоПериодам.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК КоличествоДнейОтсрочки,
    |        ОстаткиПоПериодам.СуммаВзаиморасчетовОстаток КАК СуммаОбщегоДолга,
    |        ВЫБОР
    |            КОГДА &СпособКонтроляДнейЗадолженности = ЗНАЧЕНИЕ(Перечисление.СпособыКонтроляДнейЗадолженности.ПоРабочимДням)
    |                ТОГДА ЕСТЬNULL(РабочаяДатаВзаиморасчетыОстаткиИОбороты.ДатаКалендаря, ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Дата)
    |            ИНАЧЕ ДОБАВИТЬКДАТЕ(ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ, ОстаткиПоПериодам.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности)
    |        КОНЕЦ КАК Срок
    |    ИЗ
    |        РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ПолучитьНаДату, ДоговорКонтрагента.ВидДоговора В (&МассивВидовДоговоров) {(Организация).*, (Контрагент).*, (ДоговорКонтрагента).*}) КАК ОстаткиПоПериодам
    |            ЛЕВОЕ СОЕДИНЕНИЕ РабочаяДатаВзаиморасчетыОстаткиИОбороты КАК РабочаяДатаВзаиморасчетыОстаткиИОбороты
    |            ПО (РабочаяДатаВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом = ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом)) КАК ИтогиВзаиморасчетов
    |{ГДЕ
    |    ИтогиВзаиморасчетов.Контрагент.*,
    |    ИтогиВзаиморасчетов.Организация.*,
    |    (РАЗНОСТЬДАТ(&ПолучитьНаДату, ИтогиВзаиморасчетов.Срок, ДЕНЬ)) КАК ПросроченоДней,
    |    ИтогиВзаиморасчетов.ДокументРасчетовСКонтрагентом.Агент.* КАК Агент}
    |{УПОРЯДОЧИТЬ ПО
    |    Контрагент.*,
    |    ДокументРасчетовСКонтрагентом.*,
    |    ПросроченоДней}
    |ИТОГИ
    |    МАКСИМУМ(ДатаДокумента),
    |    МАКСИМУМ(КоличествоДнейОтсрочки),
    |    МИНИМУМ(ПросроченоДней),
    |    СУММА(СуммаОбщегоДолга),
    |    МИНИМУМ(Срок),
    |    СУММА(СуммаАвансов),
    |    СУММА(СуммаПросроченныйДолг),
    |    СУММА(СуммаНепросроченныйДолг),
    |    СУММА(СуммаДокумента)
    |ПО
    |    ОБЩИЕ
    |{ИТОГИ ПО
    |    ВалютаВзаиморасчетов.*,
    |    Контрагент.*,
    |    Организация.*,
    |    ДоговорКонтрагента.*,
    |    ДокументРасчетовСКонтрагентом.*}";
    
    Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда        
        УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("ОстаткиПоПериодам.Контрагент", "Контрагент", "Контрагент", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Контрагенты);
        УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("ОстаткиПоПериодам.Организация", "Организация", "Организация", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Организации);
        
        УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса);        
    КонецЕсли;
    
    УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
    
    ПараметрыПостроителя = УниверсальныйОтчет.ПостроительОтчета.Параметры;



Воот... Теперь встал вопрос. Как можно провести отбор по Договорам контрагентов. Дело в том, что мы для удобства стандартизировали названия договоров. У всех Контрагентов имеются договора "Основной", "Перечисление", "Кредит", "Аванс"...

Как можно в этом отчете (обработку могу выслать, или скачайте с указанного сайта) провести отбор по "Наименованию" договоров?

Я вставил туда отбор по Договору, но он при начале отбора требует выбрать конкретного Контрагента, а уж потом Договор, в результате получается отбор по Договору конкретного Контрагента, а нужно отобрать только по Наименованию (возможно что-то типа содержит, но с возможностью выбора текста Наименования), чтобы , например, при выборе "Кредит" вышли все Контрагенты с этим договором.

Сообщение отредактировал Vofka - 24.07.17, 11:53

Bernet Подменю пользователя
сообщение 24.07.17, 11:43
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Constantus @ Сегодня, 12:20 * ,
Сделайте Перечисление "ТипыДоговоров" со значениями:
- Основной;
- Перечисление;
- Кредит;
- Аванс.
Добавьте реквизит "Тип договора" в справочник "ДоговораКонтрагентов"
В отчете делайте отбор по этому реквизиту "ТипДоговора"


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Constantus Подменю пользователя
сообщение 24.07.17, 12:29
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Возможно поставить вопрос иначе.

В отчете проставлен отбор:

    УниверсальныйОтчет.ДобавитьОтбор("Организация");
    УниверсальныйОтчет.ДобавитьОтбор("Контрагент");
    УниверсальныйОтчет.ДобавитьОтбор("Агент");
    УниверсальныйОтчет.ДобавитьОтбор("ВидДоговора");


"ВидДоговора" и есть текстовое название Договоров.
Имеется Справочник со всеми наименованиями Договоров ("Основной", "Кредит"...)

Как теперь в этом отчете на отбор
УниверсальныйОтчет.ДобавитьОтбор("ВидДоговора");


поставить
"ВидСравнения" = Содержит
Значение взять из справочника наименования Договоров.

//Сейчас в ручную это работает, т.е. я выбираю "Содержит" и прописываю руками "Основной"


Почти получилось

УниверсальныйОтчет.ДобавитьОтбор("ВидДоговора",Истина,ВидСравнения.Содержит);


А вот со значение туго...

Попытался сделать заведомую дурость:

УниверсальныйОтчет.ДобавитьОтбор("ВидДоговора",Истина,ВидСравнения.Содержит,Справочники.ВидыОтбораДоговоров);


Понимаю, что это текстовое значение, но как попытаться в поле "Значение" получить некий список текстовых значений, взятых из справочника?

pablo Подменю пользователя
сообщение 25.07.17, 15:47
Сообщение #4

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Цитата(Constantus @ 24.07.17, 12:29) *
как попытаться в поле "Значение" получить некий список текстовых значений, взятых из справочника?

Одновременно - никак. Или у вас могут быть договора с наименованием Основной Аванс?

Советую добавить поле
| ИтогиВзаиморасчетов.ДоговорКонтрагента.Наименование КАК ВидДоговораКонтрагента,

и его включить в отбор.


Тогда пользователь сможет устанавливать отбору по новому полю. Если же вы хотите стандартизовать варианты значений в поле отбора - то делайте так, как Bernet посоветовал.

Сообщение отредактировал pablo - 25.07.17, 15:42


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 2:55
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!