Имя: Пароль:
1C
1C 7.7
v7: Выгрузить таблицу значений в таблицу
0 MixanM
 
19.01.12
13:37
Собственно из названия , все понятно нуэно выгрузить ТЗ в обычную таблицу, сделал так:
Процедура Сформировать()
   Спр = СоздатьОбъект("Справочник.Номенклатура");
   Спр2 = СоздатьОбъект("Справочник.Номенклатура");
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Спр.ВыбратьЭлементы();
   Тз.НоваяКолонка("Код");
   ТЗ.НоваяКолонка("Номенклатура");
   Таб.ВывестиСекцию("Заголовок");
   Счетчик = 0;
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
       Счетчик=Счетчик+1;
       КодСпр = Спр.ТекущийЭлемент().Код;
       ИмяСпр = Спр.ТекущийЭлемент().Наименование;
       спр2.ВыбратьЭлементы();        
       Если Спр2.НайтиПоНаименованию(ИмяСпр) = 1 Тогда
           КодСпр2 = Спр2.ТекущийЭлемент().Код;
           Если (КодСпр<>Спр2) Тогда
               ТЗ.НоваяСтрока();
               ТЗ.Код = КодСпр;
               ТЗ.Номенклатура = ИмяСпр;
               Состояние("Обработано элементов " +Счетчик );
           КонецЕсли;
       КонецЕсли;    
   КонецЦикла;
   тз.ВыбратьСтроки();
     Пока тз.ПолучитьСТроку() = 1 Цикл
    Таб.ВывестиСекцию("Код");
 КонецЦикла;
Таб.Опции(0,0,0,0 );
Таб.ПараметрыСтраницы(1,100,,20,5,5,5,,,1);
Таб.ТолькоПросмотр(1);
Таб.Показать("Бубли");
Сообщить("Всего бублей : "+Счетчик);
КонецПроцедуры

Но вывводит пустую таблицу с нужным мне количеством строк т.е. по условию работает норм, 200 строк вываливает, но пустые =(
1 1Сергей
 
19.01.12
13:38
В макете что?
2 Джинн
 
19.01.12
13:39
См. секцию Код макета
3 Попытка1С
 
19.01.12
13:40
Нахрена тут вообще ТЗ. Выводи секцию при переборе справочника.
4 1Сергей
 
19.01.12
13:40
а вообще весь код в топку. Нафига эти игры с кодами? Задача какая?
5 1Сергей
 
19.01.12
13:41
Вот это ваще шедевр:

           КодСпр2 = Спр2.ТекущийЭлемент().Код;
           Если (КодСпр<>Спр2) Тогда
6 MixanM
 
19.01.12
13:41
найти будли товара с разными кодами
7 MixanM
 
19.01.12
13:42
(5) Пацаны - ваще ребята =D
8 Mikeware
 
19.01.12
13:43
У автора, похоже, классическая проблема с соотношением радиусов...
9 155153144627
 
19.01.12
13:43
:-)
В ячейках секции "код", есть выражения ТЗ.Код и ТЗ.Номенклатура?

Пока Спр.ПолучитьЭлемент() = 1 Цикл
       ТЗ.НоваяСтрока();
       ТЗ.Код = Спр.Код;
       ТЗ.Номенклатура = Спр.Наименование;
       Счетчик = Счетчик + 1;
КонецЦикла;
10 Mikeware
 
19.01.12
13:44
Процедура глПечатьТЗ(Результат,ВыбЗаголовок="") Экспорт
   Если Результат.КоличествоСтрок() = 0 Тогда
       Возврат;
   КонецЕсли;
   ПечВыбЗаголовокДополнительный = ВыбЗаголовок;

   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("ПечатьТЗ");
   Таб.ВывестиСекцию("Шапка|Номер");
   спРазмеры = СоздатьОбъект("СписокЗначений");
   Для Индекс1 = 1 По Результат.КоличествоКолонок() Цикл
       Графа = Результат.ПолучитьПараметрыКолонки(Индекс1);
       //Графа = "";//глИдентификаторВСтроку(Графа);
       Таб.ПрисоединитьСекцию("Шапка|Колонка");
       ТекРазмер = СтрДлина(Графа);
       Для Индекс2 = 1 По Результат.КоличествоСтрок() Цикл
           ТекРазмер = Макс(ТекРазмер, СтрДлина(Результат.ПолучитьЗначение(Индекс2, Индекс1)));
       КонецЦикла;
       спРазмеры.ДобавитьЗначение(Мин(80, ТекРазмер + 3));
   КонецЦикла;
   Таб.ПовторятьПриПечатиСтроки(1, Таб.ВысотаТаблицы());
   Таб.Опции(0,0,Таб.ВысотаТаблицы(),1);

   ТекРазмер = 0; вВсегоСтрок = Результат.КоличествоСтрок();
   
   Для Индекс1 = 1 По Результат.КоличествоСтрок() Цикл
       
       вПриставка = ?((Индекс1%2)=1,"2","");
       Таб.ВывестиСекцию("Строка"+вПриставка+"|Номер");
       Для Индекс2 = 1 По Результат.КоличествоКолонок() Цикл
           Графа = Результат.ПолучитьЗначение(Индекс1, Индекс2);
           Секция = Таб.ПолучитьСекцию("Строка"+вПриставка+"|Колонка");
           Секция.Область().ШиринаСтолбца(спРазмеры.ПолучитьЗначение(Индекс2));
           Если ТипЗначения(Графа) >= 10 Тогда
               Секция.Область().Расшифровка(Графа);
           КонецЕсли;
           Если (ТипЗначенияСтр(Графа) = "Число") Или (ТипЗначенияСтр(Графа) = "Дата") Тогда
               Секция.Область().ГоризонтальноеПоложение(2);
           Иначе
               Секция.Область().ГоризонтальноеПоложение(1);
           КонецЕсли;
           Таб.ПрисоединитьСекцию(Секция);
       КонецЦикла;
       Состояние(глПрогрессор(вВсегоСтрок,Индекс1));
   КонецЦикла;
   Таб.ТолькоПросмотр(1);
   Таб.Показать();
КонецПроцедуры // глПечатьТЗ
11 MixanM
 
19.01.12
13:45
(9) Да
12 Попытка1С
 
19.01.12
13:48
(10) Ну давай ему еще макет нарисуй тогда уж...
13 155153144627
 
19.01.12
13:49
Я так понимаю у тебя в справочнике номенклатуры дубли имеются?
14 Mikeware
 
19.01.12
13:50
(12) да куле там рисовать...
15 Попытка1С
 
19.01.12
13:51
(13) У него там бубли не видишь...
(14) Сдается мне автора это может ввести в ступор..
16 MixanM
 
19.01.12
13:51
(13) да завелись убли оператором, надо найти их, с "помощью " стороней обработки в базе изменилось название у некоторых номенклатур - задублировалось, но код остался прежний, счас выгрузил в таблицу код - наименование дублей и в ручную правим
17 155153144627
 
19.01.12
13:52
Если (КодСпр<>Спр2) Тогда - ошибка.
Если (КодСпр<>КодСпр2) Тогда !
18 Попытка1С
 
19.01.12
13:52
(0) Автор юзай свернуть не мучайся. А код свой выкини.
19 MixanM
 
19.01.12
13:52
(15) та кули, пусть будут бубли, ллишь бы их найти всех
20 MixanM
 
19.01.12
13:53
(17) да это я  в запарке наваял, сейчас уже все исправил, заработалро вроде
21 AlexNecro
 
19.01.12
13:55
22 MixanM
 
19.01.12
14:03
Спасибо, ребята всем, поехало