Имя: Пароль:
1C
1С v8
Парюсь с выводом данных в ТЗ
0 байт
 
07.03.12
09:47
Здравствуйте, коллеги, вопрос следующий как заполнить конкретными данными в созданные программно колонки, количество колонок изменяется в зависимости от количества типов цен, исходные данные:

Номенклатура    ТипЦен    Наценка
01.01 МЯСО: МОРОЖЕННОЕ    О Кей    3,00
01.01 МЯСО: МОРОЖЕННОЕ    АШАН    2,00
01.01 МЯСО: МОРОЖЕННОЕ    ТС Матрица    1,00
01.02 МЯСО: МОРОЖЕННОЕ: ФАСОВКА    О Кей    6,00
01.02 МЯСО: МОРОЖЕННОЕ: ФАСОВКА    АШАН    5,00
01.02 МЯСО: МОРОЖЕННОЕ: ФАСОВКА    ТС Матрица    4,00
01.06 МЯСО: СУБПРОДУКТЫ: МОНОЛИТ    О Кей    
01.06 МЯСО: СУБПРОДУКТЫ: МОНОЛИТ    АШАН    
01.06 МЯСО: СУБПРОДУКТЫ: МОНОЛИТ    ТС Матрица    
01.07 МЯСО: СУБПРОДУКТЫ: ФАСОВКА    О Кей    
01.07 МЯСО: СУБПРОДУКТЫ: ФАСОВКА    АШАН    
01.07 МЯСО: СУБПРОДУКТЫ: ФАСОВКА    ТС Матрица    
01.08 МЯСО: ПОЛУФАБРИКАТЫ    О Кей    
01.08 МЯСО: ПОЛУФАБРИКАТЫ    АШАН    
01.08 МЯСО: ПОЛУФАБРИКАТЫ    ТС Матрица    
02.01 ПТИЦА: МОРОЖЕННАЯ КУРИЦА    О Кей    
02.01 ПТИЦА: МОРОЖЕННАЯ КУРИЦА    АШАН    
02.01 ПТИЦА: МОРОЖЕННАЯ КУРИЦА    ТС Матрица    
02.02 ПТИЦА: КОПЧЕНАЯ    О Кей    
02.02 ПТИЦА: КОПЧЕНАЯ    АШАН    
02.02 ПТИЦА: КОПЧЕНАЯ    ТС Матрица    
02.03 ПТИЦА: ГРИЛЬ    О Кей    
02.03 ПТИЦА: ГРИЛЬ    АШАН    
02.03 ПТИЦА: ГРИЛЬ    ТС Матрица    
02.04 ПТИЦА: ВЯЛЕННАЯ    О Кей    
02.04 ПТИЦА: ВЯЛЕННАЯ    АШАН    
02.04 ПТИЦА: ВЯЛЕННАЯ    ТС Матрица    
02.06 ПТИЦА: СУБПРОДУКТЫ КУРИЦА    О Кей    
02.06 ПТИЦА: СУБПРОДУКТЫ КУРИЦА    АШАН    
02.06 ПТИЦА: СУБПРОДУКТЫ КУРИЦА    ТС Матрица    
02.08 ПТИЦА: ПОЛУФАБРИКАТЫ КУРИЦА    О Кей    
02.08 ПТИЦА: ПОЛУФАБРИКАТЫ КУРИЦА    АШАН    
02.08 ПТИЦА: ПОЛУФАБРИКАТЫ КУРИЦА    ТС Матрица    
02.09 ПТИЦА: КУЛИНАРНЫЕ ИЗДЕЛИЯ    О Кей    
02.09 ПТИЦА: КУЛИНАРНЫЕ ИЗДЕЛИЯ    АШАН    
02.09 ПТИЦА: КУЛИНАРНЫЕ ИЗДЕЛИЯ    ТС Матрица    
03.01 РЫБА: МОРОЖЕННАЯ    О Кей    
03.01 РЫБА: МОРОЖЕННАЯ    АШАН    
03.01 РЫБА: МОРОЖЕННАЯ    ТС Матрица    
03.02 РЫБА: СОЛЕНАЯ    О Кей    

Мне нужно вывести таким образом в ТЧ документа;

Номенклатура АШАН ТС Матрица О Кей
РЫБА          1        2       3

как решить подскажите пожалуйста?
1 Fragster
 
гуру
07.03.12
09:48
управляемые формы или нет?
2 байт
 
07.03.12
09:48
(1) нет
3 Fragster
 
гуру
07.03.12
09:48
(2) тогда при выводестроки / приполученииданных
4 Grusswelle
 
07.03.12
09:49
(1) А какая разница, ТЗ - она и в Африке ТЗ.
(0) Именуй колонки в соответствии с типами цен (по кодам, например).
5 байт
 
07.03.12
09:54
(3) на этом и завис создаю колонки с Наименованием ТиповЦен, а заполнить наценками не могу, может есть свои варианты как трансформировать Таблицу?
6 Ranger_83
 
07.03.12
09:57
ЗаполнитьЗначения()?
7 Ranger_83
 
07.03.12
09:57
точнее ЗаполнитьЗначенияСвойств()
8 байт
 
07.03.12
10:14
(7) ты имеешь в виду так: ЗаполнитьЗначенияСвойств(ТаблицаЦен, ТЗ), почему-то не получается?
9 Ranger_83
 
07.03.12
10:15
(8)Нет,построчно
10 _
vovanidze_3412341
 
07.03.12
10:21
(4) +1 тока не забудь перед цифровым именем "_" ставить а то восприймет как номер колонки
11 байт
 
07.03.12
10:32
(4) я переименовал по наименованию только вместо пробелов поставил "_" поскольку пользователю нужно видеть не коды а имена.
12 _
vovanidze_3412341
 
07.03.12
12:09
так есть имя колонки а есть Заголовок
13 байт
 
07.03.12
12:18
(12) таблицаЦен формируется так:

           ТаблицаЦен.Колонки.Добавить(ИмяКолонки,ОписаниеТиповЧисло);
           Колонка = ЭлементыФормы.ТаблицаЦен.Колонки.Вставить(2, ИмяКолонки);
           //Колонка = ЭлементыФормы.ТаблицаЦен.Колонки.Добавить(ИмяКолонки,ОписаниеТиповЧисло);
           Колонка.Имя = ИмяКолонки;
           Колонка.Ширина = 10;
           Колонка.Данные = ИмяКолонки;
           Колонка.Доступность = Истина;
           Колонка.Видимость = Истина;
           Колонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
           Колонка.ИзменениеРазмера = ИзменениеРазмераКолонки.НеИзменять;
           Колонка.РежимРедактирования =  РежимРедактированияКолонки.Непосредственно;
14 байт
 
07.03.12
12:22
(13) далее я сохраняю при записи эти данные в ТЧ документа с реквизитами Номенклатура, Наценка, ТипЦен, теперь приОткрытии надо восстановить данные пользователю в виде Номенклатура, АШАН, ОКЕЙ....ТИПЦенN ну и соответствующие значения подставить
15 Dmitry77
 
07.03.12
12:25
Отбирай запросом, его можно напрямую в ТЗ конвертировать.
16 байт
 
07.03.12
12:35
Мысли иссякли кто бы как решил эту задачу подкиньте варианты пожалуйста буду благодарен.
17 байт
 
07.03.12
12:40
Фрагмент кода восстановления:

   Для каждого стр из ТЗ Цикл
       Если не Стр.Номенклатура = ПровНоменклатура Тогда
           НоваяГруппа = ТаблицаЦен.Добавить();
           НоваяГруппа.Номенклатура = Стр.Номенклатура;
           ПровНоменклатура = стр.Номенклатура;
           Для Каждого КолонкиЦен из СписокТиповЦен Цикл
               ИмяКолонки = СтрЗаменить(КолонкиЦен.Значение," ","_");
               //ЗначНац[0].Наценка
               //ТаблицаЦен.ЗаполнитьЗначения(стр.Наценка,ИмяКолонки);
               //ИмяКолонки = СтрЗаменить(КолонкиЦен.Значение," ","_");
               ЗаполнитьЗначенияСвойств(ТаблицаЦен,ТЗ,ИмяКолонки);//КолонкиЦен.Значение.Наименование);
           КонецЦикла;    
       КонецЕсли;    
   КонецЦикла;
18 байт
 
07.03.12
20:46
подниму может есть те кто еще работает)
19 vmv
 
07.03.12
20:48
это стандартная задача транспонирования табличных данных - в школу надо было ходить
20 EvgeniuXP
 
07.03.12
20:50
(19) грубиян ты какой-то.
21 vmv
 
07.03.12
20:51
(20) не какой-то, а лучший в своем роде)
22 байт
 
07.03.12
21:13
(19) ну так подскажи я че то ее не догоняю?
23 байт
 
07.03.12
21:14
такие не решал еще
24 байт
 
07.03.12
21:15
(19) вбрасывать-то все умеют
25 Нева
 
07.03.12
21:16
Ну так колонки по типам цен ты создал, далее бежишь по исходной таблице заполняешь колонку номенклатура и цены проставляешь, потом таблицу свернуть да и все.
не?
26 байт
 
07.03.12
21:19
(25) у меня таблицаЦен имеет имена колонок ТаблицаЦен.АШАН ... как ее заполнить так бы я давно уже сделал
27 байт
 
07.03.12
21:21
сами-то колонки без проблем сформировал а как наценки раскидать не знаю
28 байт
 
07.03.12
21:21
в первый раз такую задачу решаю
29 Нева
 
07.03.12
21:23
(26) не понял.
У тебя таблица одна? одна.
На ее основе ты создаёшь вторую?
Почему нельзя пройтись по исходной, и расставить наценки в созданной, потом свернуть?
30 байт
 
07.03.12
21:31
2-е таблицы Исходная и 2-я динамическая в зависимости от количества ТиповЦен добавляет колонки, соответственно формируется каркас 2-й с колонками Номенклатура, Ашан, ОКЕЙ, ТС Матрица, исходная имеет колонки Номенклатура, Наценка, ТипЦен, я так и хочу сделать но расставить наценки не могу понимаешь?
31 байт
 
07.03.12
21:32
ТаблицаЦен.ЗаполнитьЗначения(стр.Наценка,ИмяКолонки) пытался так но он заполняет всю колонку одним значением что не верно
32 байт
 
07.03.12
21:35
может где-то туплю не спорю
33 байт
 
07.03.12
21:35
поэтому и прошу помощи
34 Нева
 
07.03.12
21:36
у меня на ноуте 8-ки нет, чо нельзя обратиться к колонке зная ее имя?
35 байт
 
07.03.12
21:42
получилось спасибо))))
36 байт
 
07.03.12
21:43
Всем и тебе(34) че то тупанул)))
37 Нева
 
07.03.12
21:45
(36) капец ты кадр, с десяти часов ветка живет, а ты тока щас в работу включился.
38 байт
 
07.03.12
21:46
(37) бывает иногда такое ступор какой-то слишком много думаю
39 Новиков
 
07.03.12
22:37
На самом деле это самая обыкновенная задача по развороту строки таблицы в стобцы, и ее лучше решать на сервере одним запросом. И я не вижу тут вообще ничего сложного. Тут всего лишь нужно транспонировать результирующее выражение при помощи конструкции ВЫБОР и агрегатной функции СУММА. Причем количество столбцов легко собрать через конкатенацию строк при обходе всех типов цен.

На выходе ты получишь готовое ТЗ. В итоге твоя задача решается в два запроса:
1. все типы цен + цикл на конкатенацию
2. само транспонирование

На выходе получаешь готовое ТЗ.

Вопросы?
40 МихаилМ
 
08.03.12
12:18
простейший алгоритм построчный перебор обернутый в исключение

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

даный алгоритм оптимален по быстродействию при разряженной матрице.

если матрица не разряжена то оптимальней по быстродействию
строить матрицу по столбцам, но програмировать этот алгоритм раз в 100 сложней.
41 Новиков
 
08.03.12
12:56
Все равно мой способ лучше :)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан