|
Как осуществить реструктуризацию ТЧ ? | ☑ | ||
---|---|---|---|---|
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
|
Ну вот, уже самостоятельно получается что-то. А то все "кальяньщица", "кальяньщица" говорят. :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |