| 
    
        
     
     | 
    
    
  | 
Как осуществить реструктуризацию ТЧ ? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Олеся999    
     12.03.15 
            ✎
    08:18 
 | 
         
        http://lvkr.ru/f/MyNTXK/1280.jpg
 
        Подскажите пожалуйста каким образом можно осуществить ? Может кто-нибудь сталкивался с подобной задачей?  | 
|||
| 
    1
    
        Otkr    
     12.03.15 
            ✎
    08:19 
 | 
         
        Ничего не понял. Чем отличаются то ТЧ?     
         | 
|||
| 
    2
    
        Dilgorp    
     12.03.15 
            ✎
    08:21 
 | 
         
        (1) может быть размером?     
         | 
|||
| 
    3
    
        Dilgorp    
     12.03.15 
            ✎
    08:23 
 | 
         
        (1)Хотя в первой ПозиционноеОбозначение через запятую, видимо это и разбить надо     
         | 
|||
| 
    4
    
        Dilgorp    
     12.03.15 
            ✎
    08:23 
 | 
         
        (0) ПозиционноеОбозначение - Строка?     
         | 
|||
| 
    5
    
        patria0muerte    
     12.03.15 
            ✎
    08:27 
 | 
         
        Цикл по первой таблице, для каждой строки выполняешь что то типа:МассивСтрок =  ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Строка, ",")
 
        Для каждого элемента получившегося массива добавляешь в нижнюю ТЗ новую строку, где ПозиционноеОборудование = ЭлементМассива а остальное - из строки верхней ТЗ. При условии конечно, что в позиционном оборудовании - строки  | 
|||
| 
    6
    
        patria0muerte    
     12.03.15 
            ✎
    08:27 
 | 
         
        РазложитьСтрокуВМассивПодстрок - функция такая есть в каждой типовой конфигурации..     
         | 
|||
| 
    7
    
        Олеся999    
     12.03.15 
            ✎
    08:49 
 | 
         
        (5) Там не ТЗ а ТЧ     
         | 
|||
| 
    8
    
        Dilgorp    
     12.03.15 
            ✎
    08:53 
 | 
         
        (7) считай ТЗ=ТЧ     
         | 
|||
| 
    9
    
        Олеся999    
     12.03.15 
            ✎
    09:54 
 | 
         
        &НаКлиенте
 
        Процедура Реструкторизировать(Команда) РазложитьСтрокуВМассив(); КонецПроцедуры &НаСервере Функция РазложитьСтрокуВМассив(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции Пишет ошибку :{Справочник.СпецификацияТК.Форма.ФормаЭлемента.Форма(219,2)}: Недостаточно фактических параметров (РазложитьСтрокуВМассив) <<?>>РазложитьСтрокуВМассив(); (Проверка: Тонкий клиент)  | 
|||
| 
    10
    
        palpetrovich    
     12.03.15 
            ✎
    10:06 
 | 
         
        (9) ну дык,  "Недостаточно фактических параметров" :)
 
        чего раскладываешь укажи  | 
|||
| 
    11
    
        Олеся999    
     12.03.15 
            ✎
    10:21 
 | 
         
        (10) я вот и понять не могу, где и как указывается ? в примерах тоже не вижу :(     
         | 
|||
| 
    12
    
        Олеся999    
     12.03.15 
            ✎
    10:56 
 | 
         
        &НаКлиенте
 
        Процедура Реструкторизировать(Команда) РеструкторизироватьНаСервере(); КонецПроцедуры &НаСервере Процедура РеструкторизироватьНаСервере() НашМассив = РазложитьСтрокуВМассив(Объект.ТаблицаSMD, ",") ; Объект.ТаблицаSMDТХ.Выгрузить(НашМассив); КонецПроцедуры &НаСервере Функция РазложитьСтрокуВМассив(Знач Стр , Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции Пишет ошибку : {Справочник.СпецификацияТК.Форма.ФормаЭлемента.Форма(232)}: Ошибка при вызове метода контекста (Выгрузить) Объект.ТаблицаSMDТХ.Выгрузить(НашМассив); по причине: Несоответствие типов (параметр номер '1')  | 
|||
| 
    13
    
        D_E_S_131    
     12.03.15 
            ✎
    11:06 
 | 
         
        НашМассив это не массив строк ТЧ.     
         | 
|||
| 
    14
    
        Бледно Золотистый    
     12.03.15 
            ✎
    11:09 
 | 
         
        (12) Все печально (     
         | 
|||
| 
    15
    
        ks_83    
     12.03.15 
            ✎
    11:11 
 | 
         
        Девушка, вы ведь не работаете программистом, да?     
         | 
|||
| 
    16
    
        mikecool    
     12.03.15 
            ✎
    11:13 
 | 
         
        (15) судя по фото -кальяны раскуривает )     
         | 
|||
| 
    17
    
        Zhuravlik    
     12.03.15 
            ✎
    11:18 
 | 
         
        (0) "Реструктуризировать верхнюю ТЧ в нижнюю ТЧ" - хотя бы так. Потом:
 
        1) Цикл по строкам ТЧ 2) Раскладываем на массив подстрок значения поля "Позиционное обозначение". При этом передавать в параметр разделителя необходимо ", " (запятая пробел). Получаем МассивПодстрок (т.е. для строки "R12, R22" вернется массив с двумя элементами "R12" и "R22"). 3) Цикл по массиву подстрок. Добавление новой строки в "нижнЕю ТЧ", заполнение этой строки: позиционное обозначение - текущий элемент МассиваПодстрок, остальное - элементы "Верхней" текущей строки ТЧ (из первого цикла). Как-то так.  | 
|||
| 
    18
    
        D_E_S_131    
     12.03.15 
            ✎
    11:24 
 | 
        
     | 
|||
| 
    19
    
        D_E_S_131    
     12.03.15 
            ✎
    11:24 
 | 
         
        + к (18) удалить строки
 
        
     | 
|||
| 
    20
    
        Олеся999    
     12.03.15 
            ✎
    11:53 
 | 
         
        &НаСервере
 
        Процедура РеструкторизироватьНаСервере() //НашМассив = РазложитьСтрокуВМассив(Объект.ТаблицаSMD, ",") ; //Объект.ТаблицаSMDТХ.Выгрузить(НашМассив); ТЧ = Объект.ТаблицаSMD; ТЗ = ТЧ.Выгрузить(); // Тут я поменяла с ТЗ = ТЧ.ВыгрузитьКолонки(); на ТЗ = ТЧ.Выгрузить(); Для каждого СтрТЧ Из ТЧ Цикл МассивПозОбоз = РазложитьСтрокуВМассив(СтрТЧ.ПозиционноеОбозначение, ","); Для каждого ЭлементПозОбоз Из МассивПозОбоз Цикл НовСтр = ТЗ.Добавить(); НовСтр.ПозиционноеОбозначение = ЭлементПозОбоз; НовСтр.Количество = 1; ЗаполнитьЗначенияСвойств(НовСтр, СтрТЧ, "MyData, Номенклатура"); КонецЦикла; КонецЦикла; ТЧ.Загрузить(ТЗ); КонецПроцедуры Пишет ошибку : {Справочник.СпецификацияТК.Форма.ФормаЭлемента.Форма(250)}: Поле объекта не обнаружено (ПозиционноеОбозначение) МассивПозОбоз = РазложитьСтрокуВМассив(СтрТЧ.ПозиционноеОбозначение, ",");  | 
|||
| 
    21
    
        Олеся999    
     12.03.15 
            ✎
    11:57 
 | 
         
        А все разобралась спасибо :)     
         | 
|||
| 
    22
    
        Олеся999    
     12.03.15 
            ✎
    12:11 
 | 
         
        А еще вопросик :)  а как сделать чтобы в Объект.ТаблицаSMDТХ загружалось а не в Объект.ТаблицаSMD; А то она выгружает в ту же ТЧ из которой берет:)     
         | 
|||
| 
    23
    
        Олеся999    
     12.03.15 
            ✎
    12:18 
 | 
         
        (22) Глупый вопрос задала сделала так     Объект.ТаблицаSMDТХ.Загрузить(ТЗ);     
         | 
|||
| 
    24
    
        D_E_S_131    
     12.03.15 
            ✎
    14:44 
 | 
         
        Ну вот, уже самостоятельно получается что-то. А то все "кальяньщица", "кальяньщица" говорят. :)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |