Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 01:47

Нумерация в отчете

Автор andryscha92, 05 ноя 2013, 22:21

0 Пользователей и 1 гость просматривают эту тему.

andryscha92

Здравствуйте!Можете пожалуйста подсказать мне что я делаю не так. У меня не отображается нумерация(2 столбик).Она Выводиться только по инструменту а по деталям не отображается...хотя фактически следует в правильном порядке. Может с таблицей надо что то подправить? Процедура Ведомость()
   Док = СоздатьОбъект("Документ.Диагностика"); 
                  
   Номер = 0;
   НомерГ = 0;
   Кол1  = 0;
   Сум   = 0;
   Табл  = СоздатьОбъект("Таблица");
   Табл.ИсходнаяТаблица("Интерскол");
   Табл.ВывестиСекцию("Шапка");
   Таб.ВыбратьСтроки();
   Пока Таб.ПолучитьСтроку() = 1 Цикл
      Кол       = 0;
      Номер       = Номер + 1;
      НомерГ = НомерГ +1;
      Док.НайтиДокумент(Таб.Док);
      А = Найти(Док.Инструмент,"Интерскол");
      B = Найти(Док.Инструмент,"Байкал");
      Если А>0 Тогда
         Модель   = Лев(СокрЛП(Док.Инструмент),А-1)+Прав(СокрЛП(Док.Инструмент),СтрДлина(Док.Инструмент)-А-9);
      ИначеЕсли B>0 Тогда
         Модель   = Лев(СокрЛП(Док.Инструмент),B-1)+Прав(СокрЛП(Док.Инструмент),СтрДлина(Док.Инструмент)-B-6);
      КонецЕсли;
         
      
      ДатаПрод   = Док.ДатаПродажи;
      ДатаРемонта   = Док.ДатаВыдачи;      
      Если  ПустоеЗначение(Док.СерийныйНомер) = 1 Тогда
               ЗавНомер    = "б/н";
      Иначе
               ЗавНомер      = Док.СерийныйНомер;
      КонецЕсли;                 
      Табл.ВывестиСекцию("Детали|Инст");
      Док.ВыбратьСтроки();
      Пока Док.ПолучитьСтроку() = 1 Цикл
          Если (Док.Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Материал) и (Док.НомерСтроки = 1) Тогда
            
            Деталь         = СокрЛП(Док.Товар)+" "+СокрЛП(Док.Товар.Код);
            Количество       = Док.Количество;         
            Цена         = Строка(Док.Итог("Всего"))+",00р.";
            Табл.ПрисоединитьСекцию("Детали|Деталь");
            Табл.ПрисоединитьСекцию("Детали|Итог");
            Кол          = Кол + Док.Количество;
            Сум            = Сум + Док.Итог("Всего");
            Кол1         = Кол1 + Док.Количество;            
         ИначеЕсли (Док.Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Материал) Тогда
            Деталь         = СокрЛП(Док.Товар)+" "+СокрЛП(Док.Товар.Код);
            Количество       = Док.Количество;         
            Цена         = Док.Итог("Всего");
             НомерГ = НомерГ + 1;
            Табл.ВывестиСекцию("Ит|Инст");
            Табл.ПрисоединитьСекцию("Детали|Деталь");
            Табл.ПрисоединитьСекцию("Ит|Итог");          
            Кол          = Кол + Док.Количество;
            Кол1         = Кол1 + Док.Количество;
         КонецЕсли;                                                             
      КонецЦикла;
   КонецЦикла;       
   Итоги   = Кол1;
   Сумма   = Строка(Сум)+",00р.";   
   Табл.ВывестиСекцию("Подвал");
   Табл.Показать("Отчет о выполненых работах", "");
КонецПроцедуры

Mitay_D

Табл.ВывестиСекцию("Ит|Инст");
в 2-1 столбец поставь <НомерГ>
Добавлено: 06 ноя 2013, 08:54


Вот тебе пример

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



mixqn

Все очень просто: в одном из условий у вас не присоединяется часть табличного документа.
сделайте так:
...
Если (Док.Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Материал) и (Док.НомерСтроки = 1) Тогда
Табл.ВывестиСекцию("Ит|Инст");
...

только нужно учесть, что при этом выведутся и другие параметры этой области (Номер, Модель и т.д.). Вариантов решения несколько:
1. выделить колонку с номером (параметр НомерГ) в отдельную секцию, например, назвать ее "НомерГ", тогда код будет такой:
...
Если (Док.Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Материал) и (Док.НомерСтроки = 1) Тогда
Табл.ВывестиСекцию("Ит|НомерГ");
...

2. Сохранять все параметры в буфер, обнулять, выводить секцию, затем восстанавливать из буфера примерно так:
...
Если (Док.Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Материал) и (Док.НомерСтроки = 1) Тогда
тНомер = Номер;
тМодель = Модель;
Номер = "";
Модель = "";
Табл.ВывестиСекцию("Ит|Инст");
Номер = тНомер;
Модель = тМодель;
...

Добавлено: 06 ноя 2013, 09:14


Mitay_D написал правильнее, мой вариант 1 неверный - так работать не будет.

тогда вариантов 2:
1. как предложил Mitay_D
2. как у меня описано - с помещением значений в буферные переменные

вариант 1 наверно проще и правильнее.

andryscha92

Сделал как предложил Mitay_D. Спасибо всем!!!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск