Имя: Пароль:
1C
1С v8
два FIFO по двум измерениям одного регистра.
0 и тут и там
 
02.10.16
15:46
Имеем:регистр накопления "Товары"
Измерений три:
-Сертификат (тип:Справочник.Сертификаты)
-Документ поступления (тип:Документ)
-Номенклатура(тип:справочник.номенклатура)

ресурсы: количество (число(15,3))

проблема с расходом. На вход в запрос передаю ТЗ с двумя типизированными колонками "номенклатура" и "количество" которое нужно списать
на выходе хотелось бы получить результат запроса в котором выбытие по было распределено по остальным двум измерениям по методу ФИФО. под моментом времени прихода фифо понимается ДАТА у документа поступления и реквизит ДатаПоступления у Сертификата.

по одному дополнительному измерения могу построить списание по фифо, но вот по двум сразу - чтото никак. ухожу в минус то по одному то по другому измерению. Но верится мне что это возможно.

Помогите плз как это сделать и вообще возможно ли это?

Конфигурация - самописка учебная.
1 Aleksey
 
02.10.16
15:50
Ну или запрос, или доп поле для сортировки
2 и тут и там
 
02.10.16
15:53
(1) то есть в одном запросе это реально сделать?
3 KSergey1C
 
02.10.16
15:54
(0) Возможно, но сложнно.
4 KSergey1C
 
02.10.16
15:55
(2) не в запросе на пордок проще.
5 Serginio1
 
02.10.16
18:44
6 Лефмихалыч
 
02.10.16
18:48
(0) не вижу проблемы - в запросе сортируешь сначала по Сертификат.ДатаПоступления, потом по ДокументПостулпение.ПоЧёмТамНадоПостулпенияСортировать

или проблема в том, что в задании не сказано, что делать, если по одному сертификату более одного докумета поступления и ты просто не знаешь, по чём документы сортировать?
7 Злопчинский
 
02.10.16
18:51
Очевидно, что имея две НЕЗАВИСИМЫЕ даты, в общем случае обеспечить одновременное фифо не удастся
???
8 KSergey1C
 
02.10.16
18:54
(6) Сортировать ты можешь только в выборке даных, тут тоньше надо.
9 KSergey1C
 
02.10.16
18:55
(7) Почему? Сначала выбирается самый первый документ, а потом самый первый сертификат поэтому документу.
10 Лефмихалыч
 
02.10.16
18:57
(8) Какие так, например, могут быть тоньше? Все просто, как апельсин. Если по одному сертификату может быть более одного документа поступления, то проблема сводится к тому, чтобы определить порядок сортировки документов внутри сертификата.
11 Злопчинский
 
02.10.16
18:59
(9) в условии задачи нигде не увидел явного указания что дата поступления сертификата как-то привязана к дате документа

Что конкретно понимает автор под датой поступления сертификата - нам неведомо
12 Злопчинский
 
02.10.16
19:01
Задача решаема тогда, когда например  даты поступления сертификатов не позже дат документов
13 Злопчинский
 
02.10.16
19:03
Пункт 12 относится к парам документы сертификат, которые есть в записях приходов
14 KSergey1C
 
02.10.16
19:05
(10) Ну и что? Это две не связанные сортировки.

Единсвенное не написан приоритет сначала делаем сортировку по дает документа а потом по сретификату или наоборот.
15 KSergey1C
 
02.10.16
19:06
(11) Ну и что? Это две не связанные сортировки.

Единсвенное не написан приоритет сначала делаем сортировку по дает документа а потом по сретификату или наоборот.
16 KSergey1C
 
02.10.16
19:08
(10) НАдо сначала отсортировать, а потом сделать ФИФО, а сортировку ты можешь сделать только для результата запроса.

Как ты ФИФО сделашь?
17 Лефмихалыч
 
02.10.16
19:10
(16) что за муть ты понимаешь под "сделать ФИФО"? В моем понимании списание по ФИФО осуществляется как раз при обходе выборки и с той точки зрения все сводится тупо к сортировке.
18 Злопчинский
 
02.10.16
19:11
(15) с точки зрения минимизации потерь товара первой по фифо следует делать по сертификата

Дабы в итоге не остался товар с окончившимся сроком сертификата
19 KSergey1C
 
02.10.16
19:12
(17) В моем понимании результатом запроса должны быть выборка которую можно сразу выгрузить в регистр накоплений.
20 Злопчинский
 
02.10.16
19:14
Пока автор явно не скажет что такое дата поступления сертификата - дальнейшее бесполезно

Ибо я например под датой поступления сертификата понимаю дату начала действия\выдачи сертификата, потому как это критично для продаж
21 KSergey1C
 
02.10.16
19:17
(18) Это явно учебная задача. ТУт точек зрения быть не может.

Собсвенно как могут приходить товары по одному документу по разным сертификатам. Я такое только на пивзаводе встречал, в котором на каждый розлив свой сертификат и при отгрузке могут быть товары по разным сертификатам. Соотсвенно у покупателей для ЕГАИС такое может потребоваться, а вот у организаций которые снабжают всякие школы, больницы, сертификаты меняются редко, онии их вообще текстом в номенклатуру прописывают.
22 Злопчинский
 
02.10.16
19:21
(21) фармация
Пришло сколько то аспириновой. Разные даты изготовления, разные серии, разные сертификаты
23 Злопчинский
 
02.10.16
19:24
Пока автор не напишет что такое дата поступления сертификата - все полная фигня

Автора вообще надо забанить за неуважение к сообществв
24 Злопчинский
 
02.10.16
19:26
Например по разным бокам пришёл товар с одинаковым сертификатом

В этом случае дата поступления сертификата может быть дата первого появления сертификата в приходе
25 Лефмихалыч
 
02.10.16
19:26
(19) может - напрасно? Да даже и в этом случае это вопрос сортировки и условия, отсеивающего лишние записи. При этом условие обязано опираться на эту сортировку.
26 Злопчинский
 
02.10.16
19:27
Итого на данный момент я могу назвать как минимум ТРИ разных варианта определения что такое дата поступления сертифтката
27 Лефмихалыч
 
02.10.16
19:28
(23) узбагойзя. Что тебе мешает понимать дату поступления сертификата как тупо значение реквизита Сертификат.ДатаПоступления? Какая разница, что там за физический смысл этой даты?
28 Злопчинский
 
02.10.16
19:28
Итого пока в адрес автора можно сказать лишь одно

Кг\ам
29 Злопчинский
 
02.10.16
19:30
(27)  в общем случае ничего не мешает, но тогда задача в общем случае не имеет решения удовлетворяющего одновременность фифо
30 KSergey1C
 
02.10.16
19:31
(22) Не спорю, так может быть. Как быть если товар с сертификатом который позже - пришел раньше.

С точки зрения упр. желательно списать тот товар у которого срок годности быстрее заканчивается, а сточки зрения налогового учета надо списать более раннюю партию.

Тут как постановщик задачи скажт, так и делать.
31 KSergey1C
 
02.10.16
19:33
(25) Еще раз: какую сортировку? Сортировать ты можешь лишь результат запроса. А тебе в запросе надо получить конечный результат.
32 и тут и там
 
02.10.16
19:37
(11) Действительно не привязано. дата сертификата может быть и до поступления а может быть и позже.
33 KSergey1C
 
02.10.16
19:40
(32) Вот и определись с приоритетеом.

Сначала выбираем самый первый сертификат, а потом самый первый документ связанный с этим сертификатом или сначала самый первый документ и по нему самый первый сертификат.
34 и тут и там
 
02.10.16
20:05
(23) За что? (28) Давайте не будем торопится с обзываниями. я сейчас все поясню что нужно.

даты друг к другу не привязаны. может быть раньше может позже.

дата сертификата = дата начала действия сертификата и она всегда равна дате выдачи. (для примера)

на один сертификат может существовать несколько документов прихода (партий)
и наоборот в одном документе прихода могут быть одинаковые номенклатуры по разным сертификатам.

то есть еще проще говоря: имеем три абсолютно независимых измерения. одно - материальное (номенклатура), два других измерения (сертификат и документ прихода) нематериальны, но упорядочены по дате. (Документ по Дате Документа, сертификат по ДатеСертификата)
Документ прихода осуществляет делает движения по по измерениям.
Партия = ссылка на сам документ прихода
Номенклатура = реквизит ТЧ документа Приход
Сертификат = реквизит ТЧ документа Приход
Если на момент прихода сертификат не получен, то элемент создается с пустой датой. после поступления сертификата в элементе справочника Сертификаты ставится дата. если один товар пришел в одном доукменте поступления но позже выяснилось что сертификатов два и больше - то документ прихода корерктируется.


в запросе расхода сертификаты с пустой даты не учавствуют ни в каких отборах

первые наброски на бумаге показывают что решений может быть несколько - тогда достаточно получить одно решение и приоритетом в скорейшем списании выступает сертификат.
35 KSergey1C
 
02.10.16
20:12
(34) Ты лучше расскажи где такие задачи.

Для практики тебе проще сделать простую выборку по остаткам, и распределение по ФИФО сделать кодом, - тогда это элементарная задача.
36 Лефмихалыч
 
02.10.16
20:12
(31) "в запросе надо получить конечный результат"
кто сказал?
37 KSergey1C
 
02.10.16
20:14
(36) САБЖ: результат запроса в котором выбытие по было распределено по остальным двум измерениям по методу ФИФО.
38 Лефмихалыч
 
02.10.16
20:15
(29) мне кажется, ты слишком близко к сердцу принимаешь слово "одновременно" в данном случае
39 Лефмихалыч
 
02.10.16
20:16
(34) если не пудрить себе мозг магическим запросом, который сам всё вернет, то задача тривиальная. Такая же, как обычное партионное списание, только цикла два, а не один
40 Лефмихалыч
 
02.10.16
20:17
(37) из этого не следует, что в этом результате должны быть только те партии, которые надо списать.
41 KSergey1C
 
02.10.16
20:21
(39) Два циклу будет все равно, один по товарам к списанию, другой по остаткам.

А для порядка достаточно сделать сортировку в запросе.
42 и тут и там
 
02.10.16
20:28
(35) нуу я встречал подобные задачи у пищевиков, у фармацевтов, у таможенных декларантов. выходил из ситуации по разному и не всегда красивым решением. то есть подобный пример (два партионных учета на одном регистре) у меня давно созрела, и потребность в решении до сих пор есть (иначе я бы и забил и не парил мозг форумчанам) - но вот решить я ее не мог. потому и спросил мнение
43 и тут и там
 
02.10.16
20:30
(41) (39) Спасибо всем, буду подумать еще немного. Если запросом победу не одержу - буду делать кодом.

положительный итог в ветке отпишу. если вдруг у кого нибудь было чтото подобное прошу делится. У остальных прошу извинения за беспокойство.
44 KSergey1C
 
02.10.16
20:36
(43) Ты это серьезно? Кодом у тебя будет десять строк на запрос и 15-20 на код. И все будет четко и понятно.

Запрос у тебя будет на сотню строк минимум и будет неочевидным тем кто попытается его прочитать.

Запрос может быть интересн только в качество проверки твоих знаний.

Еще раз: запрос написать можно но будет сложный.

Не скажу что самый сложный из тех с каким я сталкивался, но и писать такое за бесплатно не интересно.
45 Злопчинский
 
02.10.16
21:48
(32) отвечаю: в таких условиях обеспечить одновременное списание по фифо и сертификатов и по документам поступления - невозможно
46 KSergey1C
 
02.10.16
21:51
(45) в (34) написано:  тогда достаточно получить одно решение и приоритетом в скорейшем списании выступает сертификат.
47 Злопчинский
 
02.10.16
22:01
(34) автор, ты - дятел
В регистре накопления с несколькими измерениями не может быть независимых измерений

Остаток (как и движение) ВСЕГДА описывается совокупностью всех измерений, а не каким-то одним измерением

Если ты из рн с 3 измерениями выдергиваешь остаток по двум или одному измерению - это по сути уже не твой рН, а другой + с меньшим количеством измерений (схлопывагие измерения) это как трехмерный куб в проекции на плоскость - ТВ теряешь инфу про третее измерение. Поэтому у тебя и прут минуса потому что ты пытаещься остаток получить по меньшему количеству измерентй , а потом суешь получившуюся инфу в ьои измерения, не согласовав их друг с другом

И пусть там Левмихалыч хоть обсортируется хоть в запросе, хоть в цикле - одновременно фифо по приходам и сертификата ты не получишь, или получишь, но регистр будет не закрыт с минусами как у тебя и есть
48 Злопчинский
 
02.10.16
22:05
(46) я сказал что автор дятел. В (0) - требование одновременности фифо, в (34) - приоритет серьиыиката . если делать приоритет сертификата что логично и я это выше указал - то можно сделать только фифо по сертификатам, по приходам не будет никакого фифо
Итого : 34 противоречит 0, автор дятел
49 Злопчинский
 
02.10.16
22:06
Дятел это не унизить, а просто констатации текущей ситуации
50 DrShad
 
02.10.16
22:09
(49) какие люди на снеговика зашли
сколько лет, сколько зим
51 DrShad
 
02.10.16
22:10
(48) возможно сделать и по серийнику и по документу одновременно, но придется помучаться

автор нормальный
52 Злопчинский
 
02.10.16
22:13
Для одновременности фифо можно вывернуться, но это требует определённых свойств товара

Если товар разных сертификатов и разных приходов неотличим физически, то делаем два рН: сертификат-товар и приход-товар
И теперь когда измерения приход и сертификат действительно являются независимыми, так как принадлежат разным рН - теперь по каждому рН можно одновременно делать фифо - фифо и по сертификата и фифо по приходу

Понятно что если из этих двух рН попытаться получить остаток склеиванием для сертификат-приход-товар - то ничего путного не выйдет
53 Злопчинский
 
02.10.16
22:13
(51) и как?
54 DrShad
 
02.10.16
22:15
(53) ну как сделать ФИФО в запросе ты уже знаешь?
55 Злопчинский
 
02.10.16
22:19
(51) не получится
Достаточно вместо виртуальност сертификатов и приходов использовать осязаемые физические величины, например
Если товар красный - то он угловатый, а если товар зелёный - то он гладко сферический
И ты тут хоть укакайся, но ты никак не сможешь взять со склада товар который зелёный и угловатый
56 Злопчинский
 
02.10.16
22:20
(54) да по барабану в запросе ли, выборкой, иди как-то иначе
57 KSergey1C
 
02.10.16
22:30
(48) ПОчему нельзя натий первый сертификат и потом перебирать документы по этому сертификату?
58 и тут и там
 
02.10.16
22:41
(47) Сергей, Прошу быть корректным в развешивании ярлыков. я в топикстарте спросил "А возможно ли вообще?" зачем обзываться.

высказывание "независимость трех измерений" имел в виду что состояние в наборе записей из состояния одного не возможно предположить состояние другого. т.е.

то что остатки и движения хранится уже совместно со всеми измерениями мне известно.
59 и тут и там
 
02.10.16
23:15
(48) сергей, ну почему не возможно?

таблица остатков представляет собой в моем случае трехмерный куб. (номенклтура+Документ поступления + сертификат)
и моя задача и представляет собой то самое "СУДОКУ" где зная количество по горизонтали количество по вертикали и количество по глубине - получить требуемое количество с нормальным распределением,

чтобы показатся более понятным - иначе объяснсю - в городе есть улицы, дома и квартиры.
создаем остаточный регистр накопления. измерения:улица, дом, квартира.
селим туда разное количество людей. и того допустим у нас 100 людей на и того у нас получилось 10 улиц, домов всего 10. квартир в домах количество разное.

потом нам нужно выбрать людей. нам нужно получить с улицы Х 10 обезличеных человек с приоритетом от наименьшего номера дома и наименьшего номера квартиры.
результатом будет так:
с улицы такой то:
1 человек из дома №1 кв №1
3 чел из дома №1 кв 20
5 чел из дома №1 кв 30
1 чел из дома №2 кв 1
математически мне кажется эта задача разрешимой.
я б даже сказал что в любой ситуации всегда можно будет найти как минимум одно решение. чтобы нигде в минус не ушло.
вот это распределение в запросе и хочу получить.
60 Злопчинский
 
02.10.16
23:24
(57) можно, но это не будет фифо по документам, так как по другому сертификату на этот же товар будут болеирангие документы прихода
61 Злопчинский
 
02.10.16
23:27
(59)  потому что гладиолус ;-)
Что непонятного в (55) ?
62 Злопчинский
 
02.10.16
23:32
(59) обращаются внимание
Что мы ещё все решаемых задачу  одновременности фифо

В твоём примере условие одновременности фифо для дома и для квартиры не выполнено, квартиры не выбраны по фифо
63 DrShad
 
02.10.16
23:33
(61) извини, но в (55) бред клюшечника
64 и тут и там
 
02.10.16
23:40
(55) вот вот вот!! начинает таки доходить моя мысль.
нам потребно конкретного товара просто число! например Нам говорят - нам надо 10 томатов.

а мы должны мудрой адинэской сказать "ИХ ЕСТЬ У НАС !"
и уже в расходдный ордер писать: взять 3 томата красных и угловатых и 7 томатов зеленых и круглых
65 Злопчинский
 
02.10.16
23:43
(63) возможно
Давай уточним, решаем задачу обеспечения одновременности фифо по измерению сертификат и по измерению документ прихода при списании товара по рн  сертификат-документприхода-товар ?
66 Злопчинский
 
02.10.16
23:47
(64) неверно
10 томатов мы всегда сможем набрать, но мы не сможем их набрать с соблюдением требований потому что ..см мой следующий пост
67 Злопчинский
 
02.10.16
23:52
... Потому что по исходным данным
Красные раньше зеленых
Гладкосферические раньше угловатых

Поэтому требуемое количество
Ты должен набрать из
КрасныхГладкосферических и ЗеленыхУгловатых

А таких на остатках нет
68 Злопчинский
 
02.10.16
23:54
В частных случаях решение есть,
В общем случае - нет
69 Torquader
 
03.10.16
00:13
Граждане!
Вопрос "одновременности" нескольких измерений сводится к необходимости введения оператора сравнения на множестве, состоящем из нескольких чисел (в вашем случае - два).
Как вы хорошо понимаете, без проекции (или отображения) этого множества на упорядоченное (то есть взаимнооднозначное отображение многомерного пространства на прямую) это выполнить невозможно.
И, в итоге, у вас должен получиться один ФИФО, а не несколько.
70 Злопчинский
 
03.10.16
00:21
(69) понимаешь, они это не понимают... по крайней мере ТС
71 Злопчинский
 
03.10.16
00:27
Конкретный пример для совсем уж ...

РН, Товар-Сертификат(ДатаВыдачи)-Документ(ДатаПрихода)
При списании товара необходимо обеспечить ФИФО сертификатов(по дате выдачи) и ФИФО Документов(по дате прихода)

9 число, на остатках - ничего нет.

10 число: Приход от 10числа, Товар1, Сертификат от 4числа, +4шт
12 число: Приход от 12числа, Товар1, Сертификат от 1числа, +10шт

13 число: заявка на Расход, Товар1, -6шт.
Напишите движения по списанию товара.
72 Злопчинский
 
03.10.16
00:29
73 Torquader
 
03.10.16
01:16
Вопрос - а два одинаковых поступления одной и той же даты и одного и того же сертификата мы как списываем ? Поровну, или наугад ?
74 Злопчинский
 
03.10.16
01:22
(73) ты такие сложные вопросы не мути, а то бросятся тебе объяснять, а на вышетривиальное - сделают вид что не заметили...
75 Torquader
 
03.10.16
01:27
(74) Просто, если допускаются совпадения - то нужно ЧУМ (частично упорядоченное множество) - это намного проще, чем полное отношение порядка.
То есть, мы вводим коэффициенты по значимости измерений и определяем расстояние с учётом данных коэффициентов - полученное значение можно использовать как частичный порядок.
Конечно, в реальности - фигня получится, но в теории всё будет также красиво как "сферонь".
76 KSergey1C
 
03.10.16
03:04
(60) Ну и что? Будет и будет. Просто определяется приоритете документы или сертификаты и вперед. Автор определился.
77 KSergey1C
 
03.10.16
03:09
(71)
Опираясь на слова в (34) "приоритетом в скорейшем списании выступает сертификат."

Берем самый первый сертификат, т.е.
Сертификат от 1числа,
Ищим в остатках документы связанные сэотим сертификатом
Приход от 12числа

Поэтой аналитике есть 10 штук  - списываем 6 штук.
78 Злопчинский
 
03.10.16
03:09
(76)(76) может я и пропустил, но что-то я не узрел, что автор "определился", (0) и (34) противоречат, уточнений не поступало. Если нет требования одновременности фифо для разных измерений - то и проблемы вообще нет.
79 KSergey1C
 
03.10.16
03:10
(72) Векторную графику надо использовать, а не маяться ерундой.
80 Злопчинский
 
03.10.16
03:11
(77) "приоритет" противоречит "одновременному фифо". (34) нельзя имхо принимать как УТОЧНЕНИЕ (0) - ибо это в принципе разные задачи получаются, а о смене задачи - надо уведомлять явно - как отмена старой задачи, новая задача вот она - а в новой задаче уже "приоритетность" сертификата играет
81 Злопчинский
 
03.10.16
03:15
и таможенников и фармацевтов и прочая хрень - наш внутренний учет (сертификат+приход) нахрен не будет интересовать.

упомянутых будет интересовать
фармацевтов: а сколько по такому-то сертификату поступило и скольо отпущено?
таможня - аналогично по ГТД
и нет никакой необходимости ни одновременного фифо, ни приоритет ов.

ТС выбирает для своего РН - нужную схему списания - ФИФО по какому-то измерению например (остальные - ведомые по приоритетам). Для получения ответов для фармацевтов/nfvj;yz - все что надо - собрать движения по нужному измерени и все.
82 KSergey1C
 
03.10.16
03:16
(80) Давай начнем с того, что термин "одновременное фифо" - ввел ты, а не автор. И это не какой-то академический термин, однозначно определяемый, что он значит понимаешь только ыт сам, вополне возмжно что оты опд ним имеешь ввиду: "клоуны хохотуны в цирке на бульваре".
83 Злопчинский
 
03.10.16
03:21
(82) "в котором выбытие по было распределено по остальным двум измерениям по методу ФИФО. "

- возможно что я страый маразматик, но вот это я понимаю как хотелку "одновременного фифо по двум измерениям", а так как в выбытии два измерения всегда связаны - ну никак не получится по "остальным двум измерениям по методу ФИФО".

скорее всего большая простыня этой ветки совершенно лишняя, и все что хотел автор это "фифо по одному измерению, а по второму фифо в рамках первого измерения".
84 KSergey1C
 
03.10.16
04:34
(83) ДОстаточно ввести приоритете одного измерения и все становится в порядке.
85 Torquader
 
03.10.16
14:41
Одновременное FIFO можно рассматривать только в том случае, если в одном регистре мы ведём учёт по одному параметру (скажем, документ поступления), а в другом - по другому (дата сертификата), тогда у нас в разных регистрах будет различное списание партий согласно установленному приоритету - но это допустимо только тогда, когда для раной отчётности нам нужен совершенно различный виртуальный учёт.
Закон Брукера: Даже маленькая практика стоит большой теории.