Имя: Пароль:
1C
1С v8
Нужен совет, как перенести отчет в СКД
0 K1RSAN
 
10.12.19
09:44
В общем, есть отчет, который смог топорно реализовать в коде.
В нем надо взять данные из заказов, которые частично оплачены или оплата после отгрузки, и получить остаток необходимой оплаты. И в этот же отчет под каждый заказ надо добавить несколько строчек с товарами (номенклатура, количество, цена)
Без СКД это получилось реализовать кодом. По сути затык именно в необходимости указать номенклатуру, то сумма начинает чудить, то контрагент не показывается (а надо сумму по контрагенту еще желательно, но это быстро накидать)

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказЗаказ.Контрагент КАК Контрагент,
                   |    ЗаказЗаказ.Ссылка КАК Заказ,
                   |    ЗаказЗаказ.СуммаДокумента КАК Сумма,
                   |    ЕСТЬNULL(РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход, 0) КАК Оплачено,
                   |    ЗаказЗаказ.Ссылка.СуммаДокумента - ЕСТЬNULL(РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход, 0) КАК Долг,
                   |    ЗаказЗаказ.Товары.(
                   |        Номенклатура КАК Номенклатура,
                   |        Цена КАК Цена,
                   |        Количество КАК Количество
                   |    ) КАК Товары
                   |ИЗ
                   |    Документ.ЗаказКлиента КАК ЗаказЗаказ
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты КАК РасчетыСКлиентамиОстаткиИОбороты
                   |        ПО ЗаказЗаказ.Ссылка = РасчетыСКлиентамиОстаткиИОбороты.ЗаказКлиента
                   |ГДЕ
                   |    ЗаказЗаказ.Товары.ВариантОбеспечения В (ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить), ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.ОтгрузитьОбособленно), ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.ИзЗаказов), ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Обособленно))
                   |    И НЕ ЗаказЗаказ.Товары.Отменено
                   |    И ЗаказЗаказ.СуммаДокумента > ЕСТЬNULL(РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход, 0)
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Контрагент,
                   |    Заказ
                   |АВТОУПОРЯДОЧИВАНИЕ";
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапка);
    Выгрузка = Запрос.Выполнить().Выгрузить();
        
    ТабДок.НачатьАвтогруппировкуСтрок();    
    Для Каждого СтрокаКонтрагент ИЗ Выгрузка Цикл
        
        ОбластьКонтрагент.Параметры.Заполнить(СтрокаКонтрагент);
        ТабДок.Вывести(ОбластьКонтрагент,0);
        Для Каждого СтрокаТовары ИЗ СтрокаКонтрагент.Товары Цикл
            
            ОбластьНоменклатура.Параметры.Заполнить(СтрокаТовары);
            ТабДок.Вывести(ОбластьНоменклатура,1);
            
        КонецЦикла
        
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();

(Не обессудьте, накидал за 15 минут буквально, лишь бы собрало)
НО хотелось бы в СКД (отчет красивее получается), такой отчет не хотелось бы ставить никому.
1 K1RSAN
 
10.12.19
09:57
+ Пробовал использовать за основу регистр "Расчеты с клиентами", но там выходит куча взаимозачетов, потому что КА странным образом не хочет зачитывать оплату и выходит, что вроде в документе поступления стоит объект расчетов - этот заказ, но если проверить остатки по регистру - выходит взаимный долг... Поэтому решился взять за основу именно документы.
2 toypaul
 
гуру
10.12.19
09:58
"НО хотелось бы в СКД" хочется сделай. надо начать с простого - жмакнуть по кнопке "Открыть схему компоновки". изучить курсы если знаний 0 (есть на ЮТ бесплатно).

и только после каких-то попыток спрашивать тут конкретные вопросы.

или ты предлагаешь за тебя отчет написать? тогда сколько денег пиши :)
3 K1RSAN
 
10.12.19
10:05
(2) Уже пробовал, потому и пишу сюда. Наз запросом указал, какие проблемы вылезли при попытке реализовать в СКД (проблема с группировками и суммированием при выводе номенклатуры, проблема с выводом контрагента, когда вывожу номенклатуру)
4 toypaul
 
гуру
10.12.19
10:22
(3) уже хорошо. тогда картинки всех настроек. результат как есть и результат как надо - в картинках
5 D_E_S_131
 
10.12.19
13:31
Бери данные запросом из ТЧ "Товары" и ссылку на Заказ от туда же. Присоединенные долги сгруппируй через "Максимум". Всякие прочие поля вытащи в настройках от "ЗаказСсылка", а "Долг" в расчетных определи. Вот будет самое простое.
6 pikachu
 
10.12.19
13:32
условия из ГДЕ перенести в ПО в первую очередь. перестанут отваливаться контрагенты и прочее что временами отваливается
7 K1RSAN
 
10.12.19
13:52
(6) (5) (4) Спасибо, вечером займусь)