7.7 Правильно свести ТЗ и СЗ (список значения)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем KatrineKA, 25 апр 2012.

  1. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    В общем немножко не получается отчетик. Выборки по данным проведены правильно, теперь нужно все что выбрали связать. У таблицы есть левая часть Основная и в цикле нужно Присоединять секции.

    Вот та часть в которой пытаюсь сделать соединение: (а еще не понятно когда шапки таблдлицы выводить присоединяемых)
    Код:
    ТекТабУслуг.Выгрузить(КопияТЗ);
    КопияТЗ.Свернуть("Услуга",);   
    КопияТЗ.Выгрузить(СЗ); 
    
    ТекТабУслуг.Свернуть("Услуга,Номенк","Тариф");
    ТЗ.Свернуть("Номенк,Дата","Гр,ДУсл,СуммаФ");
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 цикл
    Номенк		 = ТЗ.Номенк;
    ТекДата			 = ТЗ.Дата;
    СуммаДУ	   = ТЗ.ДУсл; 
    Гр				  = ТЗ.Гр;
    СебестоимостьФ = ТЗ.СуммаФ;
    Таб.ВывестиСекцию("Строка|Основа");
    
    Для а=1 по СЗ.РазмерСписка() цикл 
    Стр=0;
    Кол=0;
    Услуга = СЗ.ПолучитьЗначение(а);
    
    Если ТекТабУслуг.НАйтиЗначение(НомерВагона,Стр,Кол)=1 тогда
    СуммаП = ТекТабУслуг.ПолучитьЗначение(Стр,"Тариф");			   
    Иначе			   
    СуммаПродажи=0;
    КонецЕсли;
    
    Таб.ПрисоединитьСекцию("Строка | Услуга");						   
    КонецЦикла;
    
    Итог  = СуммаДУ - Гр - СебестоимостьФ - СуммаП;
    Таб.ПрисоединитьСекцию("Строка | Итог");
    КонецЦикла;
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    если честно, то ничего не понятно.... что не получается? как надо?
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Заголовок выводим аналогично.
    Основная вертикальная секция + секции по размеру списка (услуги) + итоговая

    Для того чтобы получилась шахматка - добавьте еще итоговую строку. Для итогов понадобится еще промежуточный СЗ, которая заполняется во внутреннем цикле по ТЗ
  4. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    в заголовке по услугам уже должно присутствовать наименование Услуг, ну т.е. разные колонки и у каждой по своему называется услуга. Поэтому добавила для шапки еще цикл.
    Код:
     //для шапки
    Для а=1 по СЗ.РазмерСписка() цикл 
    Услуга = СЗ.ПолучитьЗначение(а);
    Таб.ПрисоединитьСекцию("Шапка | Услуга");	  
    КонецЦикла;
    Таб.ПрисоединитьСекцию("Шапка | Итог");
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 цикл
    .... и т.д.
    
  5. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    Проблема в цикле по СЗ, т.е. в таблицу во всех колонках попадают одни и те жы данные. Т.е. левая часть с данными выводится корректно, а присоединяемая часть повторяется. Мне в СЗ необходимо выбрать Услуги именно по Номенк, на которой я в данный момент стою.
    Если ТекТабУслуг.НайтиЗначение(Номенк,Стр,Кол)=1 тогда
    СуммаП = ТекТабУслуг.ПолучитьЗначение(Стр,"Тариф");
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Приведенного куска не достаточно для анализа всей структуры. Выложите сам отчет.
  7. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    мне не жалко конечно, но в самом отчете нет ничего что бы мешало вывести результат. Там есть несколько обходов в цикле, и результат я помещаю в ТЗ. Саму ТЗ проверяла в отладчике, там все хорошо. Вы думаете, что сами ТЗ могут быть не корректно заполнены?
    Код:
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 цикл
    Номенк   = ТЗ.Номенк;
    ТекДата    = ТЗ.Дата;
    СуммаДУ    = ТЗ.ДУсл;
    Гр	  = ТЗ.Гр;
    СебестоимостьФ = ТЗ.СуммаФ;
    Таб.ВывестиСекцию("Строка|Основа");
    Ит=0;
    Для а=1 по СЗ.РазмерСписка() цикл
    Стр=0;
    Кол=0;
    
    Если ТекТабУслуг.НАйтиЗначение(Номенк,Стр,Кол)=1 тогда
    СуммаП = ТекТабУслуг.ПолучитьЗначение(Стр,"Тариф");
    Ит = Ит + СуммаП;
    Иначе	 
    СуммаП=0;
    КонецЕсли;	
    Таб.ПрисоединитьСекцию("Строка | Услуга");		
    КонецЦикла;
    
    Итог  = СуммаДУ - Гр - СебестоимостьФ - Ит;
    Таб.ПрисоединитьСекцию("Строка | Итог");
    КонецЦикла;
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Просто из подобного куска
    Код:
    Если ТекТабУслуг.НайтиЗначение(Номенк,Стр,Кол)=1 тогда
    СуммаП = ТекТабУслуг.ПолучитьЗначение(Стр,"Тариф");
    
    совершенно не понятно что и откуда берется. и какова структура ТЗ
    Одно могу сказать... Ведь по номенклатуре у вас м.б. тесколько тарифов, а получаете всегда только первое....

    Что за конфа? Не типовая похоже?
  9. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    Конфа не типовая, да получается берет только первое значение.
    А можно модуль вам в личку кинуть?
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    стучите в аську.
    Для правильного отбора значения нужно еще цикл организовать
  11. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Решение:
    1) Сортировка для упорядочивания колонок отбора
    2) Доп. цикл для поиска по строке вывода

Поделиться этой страницей