|   |   | 
| 
 | 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) есть.
 твой документ - лишь контенер для показа. а отдельные склады в отдельных подчиненных документах | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |