Имя: Пароль:
1C
1С v8
1С: Предприятие 8.3.20 Создание взаимозачетов в отчете
,
0 AndMix
 
11.02.23
12:40
Здравствуйте, такая ситуация. Требуется сделать взаимозачет должников и кредиторов с их суммами долга. Всё это в внешнем отчете. Подскажите пожалуйста, как это сделать. Заранее благодарю.
1 AndMix
 
11.02.23
12:44
Вот фотография самого задания - https://imgur.com/a/M9NQXU1
2 vis_tmp
 
11.02.23
15:09
(0)Может, всё-таки, во внешней обработке?
3 Мимохожий Однако
 
11.02.23
15:25
(0) Надо открыть конфигуратор.
Далее Файл- Новый - внешний отчет и т.д.
4 AndMix
 
12.02.23
00:44
(3) Это понятное дело, я имею ввиду, как сделать такой взаимозачет в отчете.
5 AndMix
 
12.02.23
00:44
(2) Не-а, задание в внешнем отчете
6 Сергиус
 
12.02.23
01:02
(0)Конфу самому что ли писать под это всё?
7 AndMix
 
12.02.23
04:18
(6) Нет, просто объяснить, как это можно сделать, не обязательно в подробностях, коротко и понятно
8 Мимохожий Однако
 
12.02.23
06:36
ОФФ: Беспредельная наивность
9 Aleksey
 
12.02.23
12:49
А кто нибудь понял как из таблицы 1 получить таблицу 2?
10 Aleksey
 
12.02.23
12:51
Ну вот 1 строка
Должник 1 кредитор 2 500 рублей
Но встречных долгов нет, а в итоговой таблице сумма долга 100 рублей

Либо это не взаимные требования а 3-сторонний зачет, либо я чего то не понимаю
11 Сергиус
 
12.02.23
13:25
(10)Тоже интересно, как я понял ключевая фраза там "При этом надо постараться, найти такой вариант, чтобы сумма долгов всех участников была бы минимальной"
12 CepeLLlka
 
12.02.23
13:27
(6)В условии написано что нужно использовать каркасную конфигурацию.
13 Сергиус
 
12.02.23
13:27
+(11)[Либо это не взаимные требования а 3-сторонний зачет] Именно так и есть. Просто в теории, этих связей может быть сколько угодно, а по какому принципу их строить, с точки зрения минимализации долгов всех участников, и есть главный вопрос)
14 Сергиус
 
12.02.23
13:28
(12)это да, но думаю там ничего особенного не увидим.
15 Aleksey
 
12.02.23
13:57
(13) тогда Сашу нужно гнать санными тряпками из профессии, ибо в реальной жизни никто так не упрощает взаиморасчеты, тем более это по определению не зачет взаимных требований
16 bolder
 
12.02.23
14:07
(0) Интересная задача,действительно олимпиадного уровня.Хотя они там переборщили с условиями - в каркасной все таки понадобится создать документ и требуемый отчёт.
17 bolder
 
12.02.23
14:11
(16) Вот на решении подобных задач и стоит привлекать новичков в профессию.
18 Aleksey
 
12.02.23
14:21
(16) для кого? Для олимпиады по математики? Для новичков 1с-ников каков в ней практичный смысл? Что именно при решении этой задачи можно использовать в реальной жизни?
19 AndMix
 
12.02.23
14:24
(16) В каркасной присутствует документ НашиДолги и справочник с должниками
20 АгентБезопасной Нацио
 
12.02.23
14:35
(18) саму задачу и можно использовать в реальной жизни. правда, не новичку. В холдинговых структурах это обычная потребность. особенно в "мутных". Правда, там еще бывают усложнения типа разных валют, или срочных договоров.
(13) критерий простой - когда "больше нельзя ничего перезачесть".
(0) Вообще-то, это олимпиадная задача. Ты хочешь выиграть олимпиаду за чужой счет?
21 АгентБезопасной Нацио
 
12.02.23
14:41
Прикольно попробовать сделать это запросом. задачка для ildarovich'а
22 Обработка
 
12.02.23
14:47
Заголовок "1С: Предприятие 8.3.20" Можно дальше не читать.
23 Злопчинский
 
12.02.23
14:50
По идее - главное в этой задаче как раз алгоритм построения цепочек погашения. и причем как всегда - запросом!
Причем там есть существенная оговорака - итог взаиморасчетов чтобы остался прежним по каждому из участников.
ибо без этой оговорки итог выглядел бы так, (а не так как в примере)
3-1 100
4-1 100
24 АгентБезопасной Нацио
 
12.02.23
14:57
(23) это легко. сложнее определить сумму, если цепочек зачетов несколько.
25 АгентБезопасной Нацио
 
12.02.23
14:58
+(24) но можно. вечером попрробую, если не лень будет
26 Злопчинский
 
12.02.23
15:02
(24) хз.. я вот навскидку не накидаю так чтобы по каждому сохранился баланс. надо думать.. ;-)
27 RomanYS
 
12.02.23
15:06
(23) нет никаких цепочек. Сворачиваешь всё долги по каждому, потом раскидываешь дебет на кредит как угодно, например по ФИФО
28 RomanYS
 
12.02.23
15:08
(21) если умеешь нарастающий итог считать и ФИФО в запросе, то никакой Ильдарович не нужен))
29 RomanYS
 
12.02.23
15:10
+(27) это кстати даже из примера видно: в результате возникли долги, которых во входной таблице не было
30 AndMix
 
12.02.23
15:18
(20) Нет конечно, хочется лишь научиться решать такие задачи, ведь в данный момент совершенно не понимаю как это можно сделать. Направление ясно, через запрос, но дальнейшее в тайне так сказать.
31 Aleksey
 
12.02.23
15:24
(30) перебор наше всё
32 AndMix
 
12.02.23
15:27
(31) Уже пробовал, не помогло)
33 RomanYS
 
12.02.23
15:33
(32)
1. Посчитать по каждому долг/дебет перед банком/общаком
34 Сергиус
 
12.02.23
15:57
(28)Интересно посмотреть, как ты её через нарастающий итог будешь делать)
35 RomanYS
 
12.02.23
16:08
(34) Для фифо в запросе(того способа который я знаю) нарастающию итог нужен
36 Сергиус
 
12.02.23
16:14
(35)С чего ты взял, что там фифо? Судя по итоговой таблице, там главная задача - минимизировать долги ВСЕХ участников. ФИФО она тебе по максимуму спишет для первых, а для оставшихся шиш может быть..
37 RomanYS
 
12.02.23
16:17
Я не взял, это одни из способов распределения дебета на кредит. Можно пропорционально просто всё на всё раскидать, проще но таблица будет большая.
38 RomanYS
 
12.02.23
16:18
(36) >>а для оставшихся шиш может быть..
Не может, все долги внутренние, т.е. общая сумма 0. Хватит на всех.
39 mistеr
 
12.02.23
16:35
(27) Тут нужно уточнить условия, можно ли выходить за границы транзитивных цепочек. В реальной жизни это нежелательно.
40 RomanYS
 
12.02.23
16:36
(39) что это? (29) видел?
41 mistеr
 
12.02.23
16:40
(40)  Могут ли возникнуть отношения, которых не было даже через других участников.
42 RomanYS
 
12.02.23
16:51
(41) судя по примеру в задаче это не запрещено.
43 mistеr
 
12.02.23
17:03
(42) В примере как раз нет такого.
Берешь две независимые таблицы, объединяешь, вот и пример.
44 RomanYS
 
12.02.23
17:08
(43) Теперь понял, что ты имел в виду под "даже через других участников". Это совсем другая задача на поиск "кластеров"
45 АгентБезопасной Нацио
 
12.02.23
17:43
(26) чтоб сохранился баланс - это просто. вспомни, например, 2-3 курс, схемотехнику, идеальные источники напряжения...
(28) нарастающий тут совершенно ни при чем. задача на другое.
(27) есть цепочки (которые могут быть замкнутыми, например). И "долга перед общаком/банком" нет, ибо других контрагентов кроме перечисленных - нет.  Ну и нет явно указанного условия, что кто-то может (или не может) выступить сторонним держателем долгов. Ибо если есть - тогда задача вообще решается более чем просто.
(31) а ты не офигеешь при паре десятков предприятий?
(42) но и не разрешено.
(44) а никаких кластеров не нужно.
46 АгентБезопасной Нацио
 
12.02.23
17:45
(30) "через запрос" - это не направление. Это всего лишь способ представления решения. Но не обязательно он будет самым лучшим, или даже вообще хорошим.
47 RomanYS
 
12.02.23
22:33
(37) тупой вариант "всё на все". Из очевидных минусов - суммы могут быть не кратны копейкам


ВЫБРАТЬ
    "А" КАК Должник,
    "Б" КАК Кредитор,
    500 КАК Сумма
ПОМЕСТИТЬ ВТ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Б",
    "В",
    200

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Б",
    "Г",
    150

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "В",
    "А",
    250

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Г",
    "А",
    100
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Кредитор КАК Контрагент,
    ВТ.Сумма
ПОМЕСТИТЬ ВсеДолги
ИЗ
    ВТ КАК ВТ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ.Должник,
    -ВТ.Сумма
ИЗ
    ВТ КАК ВТ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеДолги.Контрагент,
    СУММА(ВсеДолги.Сумма) КАК Сумма
ПОМЕСТИТЬ ДолгиСвернуто
ИЗ
    ВсеДолги КАК ВсеДолги

СГРУППИРОВАТЬ ПО
    ВсеДолги.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(ДолгиСвернуто.Сумма) КАК Сумма
ПОМЕСТИТЬ Итог
ИЗ
    ДолгиСвернуто КАК ДолгиСвернуто
ГДЕ
    ДолгиСвернуто.Сумма > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Должники.Контрагент КАК Должник,
    Кредиторы.Контрагент КАК Кредитор,
    -Кредиторы.Сумма * Должники.Сумма / Итог.Сумма КАК Сумма
ИЗ
    ДолгиСвернуто КАК Кредиторы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДолгиСвернуто КАК Должники
        ПО (Кредиторы.Сумма > 0)
            И (Должники.Сумма < 0)
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Итог КАК Итог
        ПО (ИСТИНА)
48 Злопчинский
 
12.02.23
22:43
(47) все на все - результат будет другим...?
баланс долга по каждому клиенту должнен остаться без изменений.
49 Злопчинский
 
12.02.23
22:44
а так задачка для размять мозги - вполне ничего считаю. как раз можно на собеседованиях на проверку давать ;-)
50 RomanYS
 
12.02.23
22:48
(48) баланс конечно сохранится. В данном примере результат будет такой
Должник    Кредитор    Сумма
01    02    112,5
01    04    37,5
03    02    37,5
03    04    12,5
51 Злопчинский
 
12.02.23
23:18
(50) Плохой результат. В исходном примере - результат решения задачи лучше. При ручной решалке получил тоже такой результат как в задании.
.
Меня напрягли сразу копейки.
52 RomanYS
 
12.02.23
23:28
это распределение в лоб, могли и например 1/7 копейки.
Чтобы подобие фифо изобразить запросом, большую простыню накидать надо)
53 Сергиус
 
12.02.23
23:53
(50)Ваш вариант интересен, но решение немного не таким кажется..в задании более красивое)
54 Злопчинский
 
13.02.23
08:00
(52) вопрос не втом чтобы в лоб, а в том чтобы было минимально колво обязателств (по числу обязательств), грубо говоря - возиться с тремя проще, чем с четырьмя...
55 RomanYS
 
13.02.23
08:31
(53) Ничего интересного, просто решение)
(54) ФИФО годно решит такую задачу для коммерческих целей. А если такое условие жестко поставить (найти минимальное количество записей), то задача становится олимпиадной и без перебора имхо не обойтись
56 Мимохожий Однако
 
13.02.23
10:47
Лицо 01    Лицо 02    150
Лицо 03    Лицо 04    50
57 RomanYS
 
13.02.23
11:12
(56) ага, "ФИФО" при сортировке по суммам вернуло бы именно такой результат. Но это очень удачный пример, в общем случае возврат самого оптимального не гарантирован.
58 mistеr
 
13.02.23
11:37
(0) Это задача со спеца?

Конфу скиньте кто-нибудь, если есть.
59 Мимохожий Однако
 
13.02.23
13:05
(57) Фокус в том, что мой ответ не сошёлся с заданием
60 Мимохожий Однако
 
13.02.23
13:11
61 Адинэснег
 
13.02.23
13:12
(0) ну чо, взяли сеньором? или не проверяли еще?
62 Доминошник
 
13.02.23
13:33
(1) Просто ради интереса.
А почему в предложенном "конечном варианте" 3 строки
01 отдаёт 02 сумму 100
01 отдаёт 04 сумму 50
03 отдаёт 02 сумму = 50

а не 2
01 отдаёт 02 сумму 150
03 отдаёт 04 сумму 50
63 DrZombi
 
гуру
13.02.23
13:45
(0) Каркасную конфигурацию вам выдали, или вы так же все должны в ручном режиме выполнить? :)
64 DrZombi
 
гуру
13.02.23
13:50
(1) Сумма долга в первой таблице непонятно что показывает :)
Долг к чему?...

Первый дал в долг 4-тому, четвёртый дал долг 2-му...
...А вы понимаете что суммировать обороты Дебита и кредита в один итог, неактуально? :)...

..Вторая таблица такая же :)...
65 mistеr
 
13.02.23
13:56
(60) Спасибо
66 RomanYS
 
13.02.23
15:52
(59) Сошёлся. Общая сумма 200, как и в (50) например, а распределение может быть любое.
67 RomanYS
 
13.02.23
15:54
>> А вы понимаете что суммировать обороты Дебита и кредита в один итог, неактуально?
С чего вдруг, просуммировав обороты получишь сальдо. Только в данном условии уже даны сальдо.
68 Eiffil123
 
13.02.23
17:37
(62) я не думаю, что задание подразумевает трехсторонний зачет. скорее только между двумя сторонами
69 Eiffil123
 
13.02.23
17:38
а, понял, это же олимпиадная задача. значит там всё что угодно может быть
70 Aleksey
 
13.02.23
18:13
(62) ИМХО по правилам сума долга должна быть минимальная. У тебя не минимальная
71 RomanYS
 
13.02.23
18:20
(70) минимальная. Везде 200.
72 RomanYS
 
13.02.23
18:22
(62) По условию нет цели найти оптимальное решение по количеству записей, только по общей сумме. Поэтому формально и (50) и (56) правильные ответы
73 polosov
 
13.02.23
18:24
А с чего благородные доны решили, что задачу надо решить запросом?
74 RomanYS
 
13.02.23
18:28
(73) Это предположение ТС. Если это экзамен на спеца, то за "ФИФО" запросом можно и огрести имхо.
75 AndMix
 
14.02.23
07:55
(61) Не, тут дело в том, что задание от учебного заведения :)
76 AndMix
 
14.02.23
07:56
(63) Выдали, там справочник и документ с данными, как на первом рисунке.
77 AndMix
 
14.02.23
07:58
(75) При том считается, что уровня Джуна
78 Мимохожий Однако
 
14.02.23
08:17
Насколько я понял, дело не в программировании, а в понимании логики нахождения ответа. Если понятна логика, то программирование действительно на уровне джуна
Закон Брукера: Даже маленькая практика стоит большой теории.