Имя: Пароль:
1C
1С v8
Не пойму откуда сумма в отчете
, ,
0 Paracoccidioidomicos
 
27.07.17
08:39
http://pastenow.ru/89c966ad1b1a467b0981f94a24350a3d
как понять/посмотреть от куда в просрочке эта сумма ?
была реализация на 236к и потом возврат на 236к
от куда он в задолженности?
1 Paracoccidioidomicos
 
27.07.17
08:46
ап
2 Ненавижу 1С
 
гуру
27.07.17
08:49
позовите программиста
3 Paracoccidioidomicos
 
27.07.17
08:50
(2) зачем отвечаешь ?)
4 Paracoccidioidomicos
 
27.07.17
08:54
Просто не пойму как посмотреть, эта просрочка - вычисляемое поле
как его в консоле задать ?
5 Йохохо
 
27.07.17
08:56
(4) пусть программист посмотрит код отчета
6 Paracoccidioidomicos
 
27.07.17
08:56
(5) код скд ?
7 Paracoccidioidomicos
 
27.07.17
08:57
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаБухНачальныйОстаток,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК Отгрузка,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК Оплата,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаБухКонечныйОстаток,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК Дебет,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК Кредит,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК ДоговорКонтрагента
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
8 Paracoccidioidomicos
 
27.07.17
08:57
Вот вычисляемое поле
Выбор когда Дебет > 0 тогда  ПолучитьПросроченнуюЗадолженностьБух(ДоговорКонтрагента, &КонецПериода) иначе 0 Конец
9 segn
 
27.07.17
08:59
Ну и смотри эту функцию, как она вычисляет задолженность.
10 Paracoccidioidomicos
 
27.07.17
09:01
(9) А где эта функция находится ?
11 Масянька
 
27.07.17
09:03
(10) В конфигураторе.
12 Paracoccidioidomicos
 
27.07.17
09:05
(11) Ctrl+Shift+f - ПросроченнаяДебиторкаБух
галочка Модули
Поиск
Результат поиска ничего
13 segn
 
27.07.17
09:10
(12) Надо искать "ПолучитьПросроченнуюЗадолженностьБух"
14 Мимохожий Однако
 
27.07.17
09:12
Найди в интернете консоль СКД
15 Paracoccidioidomicos
 
27.07.17
09:16
(14) ну а как вычполя в консоле то делать
16 Paracoccidioidomicos
 
27.07.17
09:18
КраснаяДата = ПолучитьКраснуюДату(ДоговорКонтрагента, Дата);
    
    //Получаем просроченную задолженность по Упр и Бух    
    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВЫБОР
                   |        КОГДА ХозрасчетныйОстатки.СуммаОстаток - ХозрасчетныйОбороты.СуммаОборотКт > 0
                   |            ТОГДА ХозрасчетныйОстатки.СуммаОстаток - ХозрасчетныйОбороты.СуммаОборотКт
                   |        ИНАЧЕ 0
                   |    КОНЕЦ КАК ПросроченнаяЗадолженность
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&СЧ), , Субконто2 = &Договор) КАК ХозрасчетныйОстатки,
                   |    РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата, , , Счет В ИЕРАРХИИ (&СЧ), , Субконто2 = &Договор, , ) КАК ХозрасчетныйОбороты
                   |";
    Запрос.УстановитьПараметр("Дата",КраснаяДата);
    Запрос.УстановитьПараметр("Договор",ДоговорКонтрагента);
    Запрос.УстановитьПараметр("СЧ",ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками);
        
    Просрочка = Запрос.Выполнить().Выбрать();
    
    Если Просрочка.Следующий() тогда
        Возврат Просрочка.ПросроченнаяЗадолженность;
    КонецЕсли;
17 Мимохожий Однако
 
27.07.17
09:20
Ты не понял. Найди в интернете Консоль системы компоновки данных и в ней отработай свой отчет в СКД. Удобная штука для отладки. Это не консоль запросов, если что
18 Paracoccidioidomicos
 
27.07.17
09:23
как мн ев эту функцию попасть
19 Paracoccidioidomicos
 
27.07.17
09:23
при формировании отчета
20 Numerus Mikhail
 
27.07.17
09:23
(19) поставь точку остановки
21 Масянька
 
27.07.17
09:25
(18) (19) Сначала найди эту функцию.
22 Paracoccidioidomicos
 
27.07.17
09:26
(21) нашел
23 Paracoccidioidomicos
 
27.07.17
09:26
(20) поставил не попадает
24 Ёпрст
 
27.07.17
09:28
Интересно посмотреть на шедевр с красной ценой
25 Масянька
 
27.07.17
09:28
(22) Дык, код давай.
26 Numerus Mikhail
 
27.07.17
09:28
(23) отладка в фоновых заданиях включена?
27 Ёпрст
 
27.07.17
09:28
*с красной датой.

ЗЫ: аутор, покажи функцию ПолучитьКраснуюДату
28 Ёпрст
 
27.07.17
09:29
так то конечно, забавно, смотреть обороты без граничной даты
29 segn
 
27.07.17
09:30
(23) Можешь просто текст запроса скопировать в консоль, установить параметры и выполнить.
30 Paracoccidioidomicos
 
27.07.17
09:33
Функция ПолучитьПросроченнуюЗадолженностьБух(ДоговорКонтрагента, Дата) экспорт
    
    КраснаяДата = ПолучитьКраснуюДату(ДоговорКонтрагента, Дата);
    
    //Получаем просроченную задолженность по Упр и Бух    
    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВЫБОР
                   |        КОГДА ХозрасчетныйОстатки.СуммаОстаток - ХозрасчетныйОбороты.СуммаОборотКт > 0
                   |            ТОГДА ХозрасчетныйОстатки.СуммаОстаток - ХозрасчетныйОбороты.СуммаОборотКт
                   |        ИНАЧЕ 0
                   |    КОНЕЦ КАК ПросроченнаяЗадолженность
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&СЧ), , Субконто2 = &Договор) КАК ХозрасчетныйОстатки,
                   |    РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата, , , Счет В ИЕРАРХИИ (&СЧ), , Субконто2 = &Договор, , ) КАК ХозрасчетныйОбороты
                   |";
    Запрос.УстановитьПараметр("Дата",КраснаяДата);
    Запрос.УстановитьПараметр("Договор",ДоговорКонтрагента);
    Запрос.УстановитьПараметр("СЧ",ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками);
        
    Просрочка = Запрос.Выполнить().Выбрать();
    
    Если Просрочка.Следующий() тогда
        Возврат Просрочка.ПросроченнаяЗадолженность;
    КонецЕсли;    
    
КонецФункции
31 Paracoccidioidomicos
 
27.07.17
09:33
Функция ПолучитьКраснуюДату(ДоговорКонтрагента, Дата) Экспорт
    //Получаем красную дату
    
    Если ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности = 0 тогда
        Возврат Дата;
    КонецЕсли;
    
    КраснаяДата = Дата;
    
    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ " + ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + "
                                  |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
                                  |ПОМЕСТИТЬ Дни
                                  |ИЗ
                                  |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                                  |ГДЕ
                                  |    РегламентированныйПроизводственныйКалендарь.ВидДня В(&ВидДня)
                                  |    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря < НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
                                  |
                                  |УПОРЯДОЧИТЬ ПО
                                  |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря УБЫВ
                                  |;
                                  |
                                  |////////////////////////////////////////////////////////////////////////////////
                                  |ВЫБРАТЬ
                                  |    МИНИМУМ(Дни.ДатаКалендаря) КАК ДатаКалендаря
                                  |ИЗ
                                  |    Дни КАК Дни";
                                  
    Запрос.УстановитьПараметр("Дата",Дата);
    
    //Считаем по рабочим или банковским
    ТипыДней  = Новый СписокЗначений();    
    ТипыДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
    ТипыДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);        
    Если ДоговорКонтрагента.бит_СпособРасчетаСрокаЗадолженности = Перечисления.бит_способРасчетаСрокаЗадолженности.ПоКалендарнымДням тогда
        ТипыДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье);
        ТипыДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота);
        ТипыДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник);
    КонецЕсли;                    
    Запрос.УстановитьПараметр("ВидДня",ТипыДней);
        
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() тогда
        Возврат Выборка.ДатаКалендаря;
    КонецЕсли;
    
    Возврат неопределено;
    
КонецФункции
32 Paracoccidioidomicos
 
27.07.17
09:34
(29) вычисляемое поле то как в консоль впихнуть
33 Масянька
 
27.07.17
09:35
(28) Гений :) (после 31).
34 Paracoccidioidomicos
 
27.07.17
09:38
?
35 Ёпрст
 
27.07.17
09:42
(31) зачет. Особенно с возвратом неопределено, в качестве даты.

Логика отчета вообще супер - берём значит обороты за какой-то конкретный период. Если дебетовое сальдо положительное, то смотрим "просроченную задолженность":

для этого смотрим у договора ДопустимоеЧислоДнейЗадолженности , выччисляем "красную дату" - это дата конца отчета минус количество ДопустимоеЧислоДнейЗадолженности согласно рабочим дням.
Далее смотрим остатки на эту дату и оборот с этой "красной даты" и до обеда, т.е вообще весь оборот. Ну а дальше, можно не продолжать
36 Paracoccidioidomicos
 
27.07.17
09:43
(35) Как мне узнать от куда задолженность взялась ?
37 Paracoccidioidomicos
 
27.07.17
09:50
просто сумма 1в1 с реализацией, но был возврат, а от куда задолженность не понятно
38 Мимохожий Однако
 
27.07.17
09:52
(36) Из основной таблицы регистра
39 Paracoccidioidomicos
 
27.07.17
09:53
(38) взаиморасчеты с контрагентами ?
40 Ёпрст
 
27.07.17
09:56
(35) переписать отчет
Если че, просроченный долг надо вычислять так:
за конечную дату взять ДОЛГ и отнять обороты за количество дней просрочки по договору до даты долга.

У себя  исправь, в Функция ПолучитьКраснуюДату(
....
//Возврат неопределено;
Возврат Дата;

далее

Функция ПолучитьПросроченнуюЗадолженностьБух(ДоговорКонтрагента, Дата) экспорт
    
    КраснаяДата = ПолучитьКраснуюДату(ДоговорКонтрагента, Дата);
    
    //Получаем просроченную задолженность по Упр и Бух    

    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВЫБОР
                   |        КОГДА ХозрасчетныйОстатки.СуммаОстаток - ХозрасчетныйОбороты.СуммаОборотКт > 0
                   |            ТОГДА ХозрасчетныйОстатки.СуммаОстаток - ХозрасчетныйОбороты.СуммаОборотКт
                   |        ИНАЧЕ 0
                   |    КОНЕЦ КАК ПросроченнаяЗадолженность
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&СЧ), , Субконто2 = &Договор) КАК ХозрасчетныйОстатки,
                   |    РегистрБухгалтерии.Хозрасчетный.Обороты(&КраснаяДата,&Дата , , Счет В ИЕРАРХИИ (&СЧ), , Субконто2 = &Договор, , ) КАК ХозрасчетныйОбороты
                   |";
    Запрос.УстановитьПараметр("КраснаяДата",КраснаяДата);
    Запрос.УстановитьПараметр("Дата",Дата);
    Запрос.УстановитьПараметр("Договор",ДоговорКонтрагента);
    Запрос.УстановитьПараметр("СЧ",ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками);
        
    Просрочка = Запрос.Выполнить().Выбрать();
    
    Если Просрочка.Следующий() тогда
        Возврат Просрочка.ПросроченнаяЗадолженность;
    КонецЕсли;
    Возврат 0;  
    
КонецФункции
41 Мимохожий Однако
 
27.07.17
09:56
(39) РегистрБухгалтерии.Хозрасчетный
..Регистратор
42 Paracoccidioidomicos
 
27.07.17
09:58
(40) Ну нельзя мне этого делать, я стажер, я должен помочь сейчас разобраться пользователю, почему сумма там стоит такая
Да и если бы отчет был кривой, то сумма было бы кривой не у 1 же контрагента ?
43 Ёпрст
 
27.07.17
10:00
(42) Тогда беги оттуда.
Одни дятлы судя по твоим темам написали хню, другие на этом "учится" пытаются
44 Ёпрст
 
27.07.17
10:01
Если че, сохраняешь это изделие как внешний отчет, исправляешь, показываешь тем, кто ЭТО смотрит. профит.
45 Paracoccidioidomicos
 
27.07.17
10:03
(44) Но то, что ты сказал исправить - внешиний модуль
46 Paracoccidioidomicos
 
27.07.17
10:03
(45) общий*
47 Paracoccidioidomicos
 
27.07.17
10:10
(44) Эти функции используются в ВЫчисляемом поел СКД
48 Ёпрст
 
27.07.17
10:11
(46) тогда беги оттуда
49 Ёпрст
 
27.07.17
10:11
Сделать копию базы, исправить там, показать отчет из неё, это недостижимо ?
Вы всё всегда лепите в рабочей базе ?
50 Paracoccidioidomicos
 
27.07.17
10:14
(49) А зачем мне показывать отчет в копии базы то? Пользователю нужно, чтобы в рабочей базе в отчете не было задолженности этой
51 Paracoccidioidomicos
 
27.07.17
10:15
(49) Можешь объяснить, от куда там это число, если учесть, что это число было реализацией, потом возвратом
от куда задолженность ?
52 Ёпрст
 
27.07.17
10:17
(50) Затем, что в рабочей ваш отчет показывает радугу. Нравится радуга - можешь показывать её.
53 Ёпрст
 
27.07.17
10:18
(51) Задолженность из-за неверного отчета. Как тебе еще это втолковать ?
54 Paracoccidioidomicos
 
27.07.17
10:20
:(
55 Paracoccidioidomicos
 
27.07.17
10:21
Спасибо
56 Ёпрст
 
27.07.17
10:40
(55)
— Недоделанный отчет — это не беда. Главное, когда будете делать детей — доделайте их! А то потом приходят недоделанные дети и приносят недоделанные отчеты. И никак не прервать этот замкнутый круг...
57 Paracoccidioidomicos
 
27.07.17
10:53
(56) А почему у других контрагентов нормально отчет показывает ?)
58 Масянька
 
27.07.17
10:56
(57) Вот ты Достоевский...
А у других контрагентов есть возвраты?
Кстати, в отчете колонки "Возвраты" нет.
59 Paracoccidioidomicos
 
27.07.17
11:01
(58) Ну я посмотрел сам
говорю же реализация на сумму задолженности и возврат на эту же сумму
60 Ёпрст
 
27.07.17
11:03
(57) Сделай запрос за прошлый месяц.
Посмотри, на радугу
61 Ёпрст
 
27.07.17
11:03
или, хотя бы , за прошлую неделю.
62 Paracoccidioidomicos
 
27.07.17
11:06
(61) норм всё
63 Ёпрст
 
27.07.17
11:07
(62) как дышишь
64 Ёпрст
 
27.07.17
11:10
Могу даже сказать, что видишь ты там : просрочки ни у кого нет :))
65 igorPetrov
 
27.07.17
11:14
(59) Программиста позови.
66 Paracoccidioidomicos
 
27.07.17
11:14
возврат на основании заказа сделали.....
67 Paracoccidioidomicos
 
27.07.17
11:15
(65) хорошо
68 igorPetrov
 
27.07.17
11:15
(66) Зачем?
69 Paracoccidioidomicos
 
27.07.17
11:16
(68) Я не знаю, от этого и проблема, сча исправим
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший