|
v7: Помощь с алгоритмом | ☑ | ||
---|---|---|---|---|
0
zenon46
21.03.19
✎
13:05
|
Доброго дня!
Как можно реализовать такой алгоритм? Имеем табличную часть в документе, в котором есть номенклатура, у номенклатуры есть реквизит Номер склада, это строка. Как перебрав строки документа, получить на выходе строку содержащую, все номера складов встречающиеся у номенклатуры без повторения, ну т.е. есть в документе 50 строк, у этих товаров склады хранения 1,2,5 как получить строку содержащую только эти три значения? |
|||
1
Mikeware
21.03.19
✎
13:12
|
(0) выбери запросом различные номера, а затем сконкатенируй
выгрузи в тз, свени по номеру склада и сконкатенируй... перебором... |
|||
2
Builder
21.03.19
✎
13:13
|
1. ТЗ и Свернуть()
2. Через СписокЗначений, метод Установить() 3. Через строку и поиск номеров, но разделенных типа такого ",1," |
|||
3
Mikeware
21.03.19
✎
13:15
|
5)выгрузить в индексированную таблицу, установить индекс, пройтись по индексу.
|
|||
4
Mikeware
21.03.19
✎
13:26
|
во, можно еще 6)брать номер склада из первой строки, и удалять строки с этим номером склада. пока все не удалим...
|
|||
5
dk
21.03.19
✎
13:27
|
рез = созд"СЗ"
выбратьстроки текСклад = товар.склад Если Рез.Найтизначение(текСклад) = 0 Тог рез.добавЗН(текСклад) КонЕ КонЦ Сообщи(Рез.ВстрокуСразд()) |
|||
6
Mikeware
21.03.19
✎
13:30
|
(5) ну, это простой перебор...т.е. п.3 А надо извращенные...
7) построить полный список номеров складов, обходить его и удалять из него отсутсвующие в ТЧ. |
|||
7
Garykom
гуру
21.03.19
✎
13:33
|
И тут выясняется что "у номенклатуры есть реквизит Номер склада, это строка"
Строку и означает, где может быть "1", может быть "1,2" или "склад 1 или 2". А может и "основной склад и за оградой у бытовки" |
|||
8
Mikeware
21.03.19
✎
13:34
|
(7) и? из перечисленных 7 способов - ровно все работают со строками...
|
|||
9
Garykom
гуру
21.03.19
✎
13:35
|
(8) Угу и ТС не хочет получить из трех строк "1", "1, 2" и "2" два значения-склада 1 и 2
|
|||
10
dk
21.03.19
✎
13:40
|
(9) не надо додумывать за автора )
|
|||
11
Mikeware
21.03.19
✎
13:45
|
(9) "у номенклатуры есть реквизит Номер склада", но не "номера складов".
с "номерами" тоже можно, но лениво... |
|||
12
Garykom
гуру
21.03.19
✎
13:45
|
(10) Так я всего то из условий (0) исхожу
|
|||
13
Garykom
гуру
21.03.19
✎
13:48
|
(11) Угу "строковый".
И ни один юзер не додумался туда несколько складов/№ записать как в голову взбредет, да еще и с комментами )) |
|||
14
Mikeware
21.03.19
✎
13:50
|
(13) ну значит будут "с комментами"
|
|||
15
dk
21.03.19
✎
13:52
|
с несколькими складами тоже проблем нет
рез = созд"СЗ" выбратьстроки текСклад = СтрЗаменить(товар.склад," ","") текСклад = СтрЗаменить(текСклад,",",РазделСтрок) Для Сч = 1 ПО СтрКолСтр(тексклад) Цикл Тек = СтрПолСтроку(текСклад, сч) Если Рез.Найтизначение(тек) = 0 Тог рез.добавЗН(тек) КонЕ Конц КонЦ Сообщи(Рез.ВстрокуСразд()) |
|||
16
MWWRuza
гуру
21.03.19
✎
14:28
|
А кто вам вообще сказал, что если "Склад" - строка, то пользователи эти строки вручную забивают?
Может эти строки туда из какого-то другого алгоритма попадают? Например, у меня есть одна конфа, в которой справочник с документом связан через строки. Ну, так нужно, по условиям задачи, что-бы прямых ссылок из документа на справочник не было, для возможности удаления/изменения справочника, не трогая документ... Может здесь что-то аналогичное... |
|||
17
Mikeware
21.03.19
✎
14:39
|
(16) ага, ссылочную целостность специально придумали чтоб жизнь затруднять...
|
|||
18
zenon46
21.03.19
✎
15:21
|
(13) все, переделал на "число", не отрицательное, с одноразрядное.
|
|||
19
Mikeware
21.03.19
✎
15:22
|
(18) ТКВ...
|
|||
20
zenon46
21.03.19
✎
15:45
|
(19) ????
|
|||
21
Злопчинский
21.03.19
✎
15:48
|
Если исходить из того, что номер склада не содержит кавычек и зпт, то все достаточно просто...
Результат = СоздатьОбъект("ТаблицаЗначений"); ВыбДок.ВыгрузитьТабличнуюЧасть(Результат,"НомерСклада"); Результат.Свернуть("НомерСклада",); СЗ=""; Результат.Выгрузить(СЗ); Результат = СЗ.ВСтрокуСРазделителями(); Результат = СтрЗаменить(Результат,"""",""); |
|||
22
Mikeware
21.03.19
✎
15:49
|
(20) ТрадиционныйКитайскийВопрос®, гласящий - "анахуа?"
|
|||
23
Mikeware
21.03.19
✎
15:51
|
(21) да, это, наверное, самый быстрый...
|
|||
24
Злопчинский
21.03.19
✎
15:52
|
ну и автору видимо пригодится вот такая хрень: http://catalog.mista.ru/public/15064/
потом в печатной форме разбить этот "документ" по складам... |
|||
25
zenon46
21.03.19
✎
16:02
|
(24) это уже я давно сделал)
|
|||
26
Злопчинский
21.03.19
✎
16:03
|
(25) но тогда странно чего в (0) вызвало трудности?
|
|||
27
zenon46
21.03.19
✎
16:03
|
(23) я просто думал есть более "крутой" способ нежели свертка таблицы значений по колонке.
|
|||
28
Mikeware
21.03.19
✎
16:06
|
(27) смотря для чего. можно самый первый способ...
|
|||
29
Злопчинский
21.03.19
✎
16:07
|
(27) есть.
твой документ - лишь контенер для показа. а отдельные склады в отдельных подчиненных документах |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |