Имя: Пароль:
1C
 
Реализация метода ФИФО в отчете СКД
Ø (Волшебник 04.03.2024 11:50)
0 nodrama
 
01.03.24
15:49
Добрый день. Есть не особо сложный отчет на СКД которые выводит данные из двух (ТЧ1 и ТЧ2) документов, к Основной ТЧ1 подставляет нужные данные из ТЧ2 второго документа. Но есть Нюансы
Так как выводим мы их построчно как есть, без группировок, сложений и т.д.

ТЧ1 имеет допустим
Товар1 - 10 штук
Товар1 - 5 штук
Товар1 - 15 штук

ТЧ2 имеет допустим
Товар1- 15 штук
Товар1 - 15 штук

В данном случаи он делает дубли строк в отчете. Так как не понимает как эти 15 и 15 штук, раскидать на 10 5 15 строки. А нужно прикрутить метод ФИФО грубо говоря

То есть ТЧ2 Товар1 - 15 штук, хватает на Товар1 10 штук + 5 штук. следовательно в этих строках он берет данные из ТЧ2 товар1 - 15 штук

Далее ТЧ2 товар 15 штук хватает на ТЧ1 товар 15 штук, он должен понимать что ТЧ2 Товар 15 штук, первая строка уже израсходована на 10+15. И осталось только вторая строка 15 штук.

Надеюсь понятно объяснил, как это реализовать в СКД или где посмотреть где это реализовано, так и не допер еще.
1 mikecool
 
01.03.24
15:51
не делай это в запросе
2 mikecool
 
01.03.24
15:52
циклы и рекурсии в запросы не подвезли еще
3 Волшебник
 
01.03.24
16:00
(1) А тут даже не запросом, а СКД. Хотят без программирования, мышкой.
4 nodrama
 
01.03.24
16:05
(1) Так я и говорю, что в СКД самолет не взлетает) и как это реализовать пока не допер.
Отчет уже на СКД он рабочий, таких ситуаций как выше не много они единичны. но они есть.
5 mikecool
 
01.03.24
16:06
(4) вот и порешай фифо в ПриКомпоновке
6 nodrama
 
01.03.24
16:07
(4) сейчас при таких ситуациях он делает дубли строк и т.д. криво в общем в этих случаях ибо они ранее не встречались и не предполагались.
7 Волшебник
 
01.03.24
16:18
(4) Это не надо делать в СКД
8 nodrama
 
01.03.24
16:30
(7) я понимаю, хотя я нашел статью как реализовывают ФИФО в СКД, создают отдельную колонку, там считают и т.д. статья там на инфостарте, но там криво то же все.

Я не понимаю как в отчете СКД, ПриКомпоновкеРезультата запилить ФиФо.. при этом важно это или нет. таких случаев за 1 календарный год.. допустим 2-3.. из 1000.  Проверять же надо будет все 1000 строк, ты же изначально не знаешь где там по фифо а где все норм и так
9 Волшебник
 
01.03.24
16:31
(8) Вообще непонятно, зачем ФИФО в отчёте...
10 nodrama
 
01.03.24
16:57
(9) А как реализовать эту ситуацию без "фифо".

Если у тебя в отчете строки
товар1 - 5
товар1 - 10
товар1- 20

А в ТЧ2 которое добавляется к этой строке (причем документа Два.. в одном 15 в другом 20) то есть не в одном документе ТЧ) в отчете
Товар1 - 15
Товар1-  20

Надо же как то объяснить что первые 15 идут на 5+10
А вторые 20 идут на - 20
11 nodrama
 
01.03.24
16:58
Первый пришел.. 15.. распределился на 5+10..
второй пришел 20 распределился на 20.
ФИФО
12 Волшебник
 
01.03.24
17:00
Всё распределение надо делать в документах, отражать в регистрах путём их проведения.
В отчётах показывать уже готовый факт из регистров.
13 NcSteel
 
01.03.24
17:10
(5) +100500
14 АгентБезопасной Нацио
 
01.03.24
17:15
(8) считай не ПриКомпоновке, а прямо в запросе.
15 Ботаник Гарден Меран
 
01.03.24
17:17
Из интереса.
Если не в одном запросе, то нужно таблицу запросом получить, потом распределить, распределить округление, обработанную таблицу снова в запрос и т.д.

А когда это всё в одном запросе в схеме СКД - проще. Сам отчет выполнялся раз в месяц, особых требований по производительности не было.

Отчетов было много одинаковых, только схема СКД в них различалась, очень удобно было копипастить.
16 nodrama
 
01.03.24
17:21
(12) Какое распределение делать в документах? Вы в идеальном мире живете?  мы нет. Мы об упр. учете, а не бухгалтерском.

Есть Заказ Клиента. с разными сроками Отгрузки по каждой строке.
Там Товар1- 5 штук, срок отгрузки допустим 3 дня
Далее Товар1 - 10 штук, срок отгрузки через 3 недели
Далее товар1 - 15 штук, срок отгрузки через 2 месяца..

Далее Заказ Поставщику один поставщик готов завтра привести 15 штук но цена на 20% дороже. Но все это заложено в цену продажи само собой))
Второй поставщик готов привести еще 15 штук но цена на 20% дешевле но сроки 3 недели. а не завтра. Логично что ты делаешь 2 заказа поставщику, зачем переплачивать 20% и заказывать все у одного если сроки позволяют.

Заказываем 15 у первого поставщика
и 15 у второго.
Получаем 2 документа Заказа Поставщика 15 и 15.

А в Заказе клиента 3 строки. Это образный пример.

В идеальном варианта менеджер типо должен разбить первый заказ поставщика на 5 + 10 .. две строки. Но он делает 1 строку 15 штук.  Почему? потому что менеджеры по продажам не видят чужие документы ему приходит что надо заказать 15 штук он заказывает. он не разбивает свой заказ единственный на 5+10 у одного поставщика. он не знает что там 5+10. надо 15 и надо. опять же образно

И отсюда проблема и растет.
В этих единичных случаев. когда строки из заказа клиента не сходятся со стороками из заказа поставщику (то есть по общему количеству сходится, а построчно нет)...
17 nodrama
 
01.03.24
17:23
(16) *менеджеры по закупкам
18 АгентБезопасной Нацио
 
01.03.24
17:23
(16) а что получить-то в итоге хочешь? ты ж уже заказ и принял от клиента, и поставщикам сделал? Хочешь разбивку по срокам, чтоль?
19 Волшебник
 
01.03.24
17:24
(16) бессмыслица какая-то
20 nodrama
 
01.03.24
17:24
(14) так вот прям в запросе и не получается. есть пример?
21 nodrama
 
01.03.24
17:30
(18) строки из ТЧ2 (Заказ поставщику). в отчете выводят данные срок поставки от поставщика, номер заказа поставщику, сам поставщик и т.д.

ТЧ1 это основная заказыКлиента.

Товар1-5
Товар1 - 10

К ним добавляются строки заказаПоставщику но там Товар1-15 (количетсво)

В итоге в отчете появляется

Товар1-5.. срок отгрузки по договору 10.10.10, срок поставки от поставщика 9.10.10 допустим. Поставщик тот-то.

То есть общии данные.. что строки из заказа клиента обработаны и срок не сорван.

Группировка стоит "Заказ клиента"
Далее выводит строки товара из заказа клиента.
и к ним должны присоеденится строки из ЗаказаПоставщика с их данными

И когда строки из заказа поставщика не сходятся по количеству из заказа клиента построчно. то получаются дубли.
22 nodrama
 
01.03.24
17:31
Только строк из заказа клиента с одним и тем же товаром может быть 10.. с разным количеством..
А строк из Заказа поставщику.. может быть 1-2-3 с другим количеством...
Но общее количетсво одинаковое.
23 nodrama
 
01.03.24
17:36
(18) мне в отчете нужно соеденить строки заказа клиента со стороками заказа поставщика.
Но они не сходятся..
В заказе клиента может быть 3 строки.. а в заказе поставщика 2 две
товар1-5
товар1-10
товар1- 20

А в заказе поставщика товар1 - 15 товар1 - 20.

и в отчете он должен понять что товар1-15 штук идет на 5+10
а втовар1 -20 идет на 20. что бы в эти строки отчета. подставить нормер заказа поставщика, срок поставки от поставщика и т.д.
24 АгентБезопасной Нацио
 
01.03.24
17:38
(21) Ну так и пиши:
ТЧ1, колонки Товар, срок отгрузки, количество отгрузки
ТЧ2, колонки Товар, срок поставки, количество поставки
25 nodrama
 
01.03.24
17:43
(24) где куда?

Сейчас все выводит как надо. если количество ТЧ1 = количеству Тч2
и товар ТЧ1 = товару Тч2.

Но при таком раскладе он не заполняет ячейки заказа поставщику где количество не сходится.

Если убрать тч1 количетсво = тч2 количетсва. и он попадает на сютуацию как я описал

Он делает дубли строк
из серии


Това1 - 5 штук  - Номер ЗаказаПоставщику 10
Товар1- 5 штук  Номер ЗаказаПоставщику 11
Това1 - 10 штук  - Номер ЗаказаПоставщику 10
Товар1- 10 штук  Номер ЗаказаПоставщику 11
Товар1- 15 штук - Номер Заказа Поставщику 11

Так как в обоих заказов поставщику по 15 штук он не учитывает что ЗаказПоставщику номер 10.. где 15 штук. тратиться на 5+10 строки из Заказа Клиента.
А заказ поставщику 11 штук тратится на заказ клиента товар1 - 15 штук.
26 nodrama
 
01.03.24
17:46
А должен

Това1 5 штук - Номер заказаПоставщику 10
Това1 10 штук - Номер заказапоставщику 10
Ибо в этом ЗаказеПоставщику 15 штук
Товар1 15 штук - Номер ЗаказаПоставщику 11
ибо в этом ЗаказеПоставщику 15 штук
27 nodrama
 
01.03.24
17:53
То есть Заказ Клиента 1 документ .  Заказа Поставщика 2-а документа Тч1 получается - 1 ТЧ2 получается 2 штуки.
Между ними разное количество строк с одной и той же номенклатурой и разными количествами.
Так как ТЧ1 основная, то в ТЧ2 надо считать по ФИФО первое пришло, первое присоединилось в отчете к строке ТЧ1, если количество по строке из ТЧ2 закончено он переходит к другой стороке ТЧ2
28 nodrama
 
01.03.24
17:54
обе ТЧ связаны основанием ЗаказКлиента
29 mikecool
 
01.03.24
17:58
в ПриКомпоновке получил результат
пробежался, посчитат фифу
засунул в компоновку программно и вывел
30 nodrama
 
01.03.24
18:29
(29) А есть где то пример для тупых на подобии?
31 Волшебник
 
01.03.24
19:08
(30) Ну пример сведётся к тому, что программным кодом будет сформирована ТаблицаЗначений, которая будет закинута в запрос как источник данных для предложения ИЗ.

Ваша СКД будет нервно курить в сторонке, пока ей готовят готовую таблицу, извините за тавтологию
32 RomanYS
 
01.03.24
20:59
(0) задача в принципе решаемая запросом. Если партий/списаний будет не тысячи по одному товару, то даже без потерь производительности.
Для прод всё равно так делать не стоит.

А так:
1. считаем нарастающий итог в обеих таблицах
2. соединяем по пересечению отрезков
33 Волшебник
 
01.03.24
21:23
(32) Фу
34 Волшебник
 
01.03.24
21:54
Перестаньте ограничивать себя СКД и языком запросов
35 nodrama
 
01.03.24
22:44
(34) так это не интересно. я могу из двух ТЧ, собрать данные как надо по итогу для вывода.. и вывести их. тупо в отчет, у нас там нет ни каких группировок даже, раскрасок и т.д. чуть ли не эксель по факту. Но тогда и СКД не нужно получается в данном случаи..
Просто отчет изначально был на СКД и он работает и все к нему привыкли. просто раньше не было таких ситуаций. а сейчас они аля.. 2 раза в год. из 1000 других строк. поэтому и думал изначально как то в СКД прикрутить.
36 Волшебник
 
01.03.24
23:07
(35) Перестаньте бредить
37 RomanYS
 
01.03.24
23:57
(33) ага, на вкус фломастеры разные.
Однозначно так делать не стоит, задавая такие вопросы на форумах.
38 RomanYS
 
01.03.24
23:58
(35) Если настройки СКД никто не крутит, то перепиши на тупую выборку и забудь.
39 nodrama
 
02.03.24
10:26
Ну ок. ПриКомпоновкеРезультата
создал ТЗ новое, заполнил это ТЗ результатом, отредактировал ТЗ как мне надо, в этих проблемных строках.

А как теперь эту верную ТЗ подсунуть обратно и вывести эти данные в отчет.
40 nodrama
 
02.03.24
10:29
а все, вопрос снят
41 RomanYS
 
02.03.24
10:35
(40) так поделись для последователей. Хоть какая-то польза от ветки будет.
42 nodrama
 
02.03.24
10:47
(41) доделаю сейчас поделюсь.
Но таким методом решения данной проблемы, получается почти х2 по времени формирования отчета
Пока получить результат в ТЗ, пока этот результат обработал, пока засунул правильное обратно, вывел.
44 Волшебник
 
03.03.24
22:31
(43) Покажите постановку Вашей задачи
45 GANR
 
04.03.24
10:45
(0) Внешние наборы данных в помощь. Формируем кодом таблицу ФИФО/ЛИФО, а уж потом в СКД работаем с ней.
47 Волшебник
 
04.03.24
11:50
(46) Бессмыслица