8.х Нумерация

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Swl68, 19 окт 2012.

  1. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток, подскажите пожалуйста, как можно организовать нумерацию строк в отчете...
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    В какм отчете? обычный или на скд?
    В обычно - заведите счетчик и выводите. В скд уже в параметрах там где поля - есть номер и номер в ггруппе
  3. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    Для Счетчик = 1 По СтрЧислоСтрок(ИсходныйТекст) Цикл
    ТекСтрока = СтрПолучитьСтроку(ИсходныйТекст, Счетчик);
    ...
    КонецЦикла;
    
    Правельную я процедуру использую если да, подскажи пожалуйста что добавлять в (ИсходныйТекст)
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Если я правильно понял, то вам нужен обычный счетчик с программной иттерацией.[CODE1C]
    НомСтр = 0;
    Для ... По ... Цикл // тут цикл вывода строк в отчет
    НомСтр = НомСтр + 1;

    // ...
    Область.Параметры.{ИмяПараметра} = НомСтр; // вывод счетчика в печатную форму (имя параметра установите своё)
    КонецЦикла;
    [/CODE1C]
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Выше коллега, правильно написал.
  6. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    что-то не соображу.
    Код:
    Для ... По ... Цикл // тут цикл вывода строк в отчет
    в цикл что загонять?
  7. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    По пунктам:
    1) Перед циклом инициализируете переменную. Строка кода
    Код:
    НомСтр =0; 
    Т.е. переменной НомСтр принудительно присваивается значение равным 0.
    2) Затем начинает отрабатывать ваш цикл. Цикл в котором у вас происходит вывод детальных записей вашего отчета. Что собственно происходит далее?! На каждом проходе цикла значение переменной прибавляется 1. Что соответствует номеру детальной записи.
    Это происходит здесь:
    Код:
    НомСтр = НомСтр + 1;
    3) В вашем макете есть место, где должен располагаться номер строки. Ему соответствует какой-то параметр. И значению этого параметра Вы присваиваете значение этой переменной. На каждом проходе цикла это будет новый номер (на единицу больше). Это происходит здесь:
    Код:
    Область.Параметры.[ИмяПараметра] = НомСтр;
  8. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    огромное спасибо, теперь все ясно
  9. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    получается сначала нужно посчитать количество строк, созданных запросом, а после уже цикл выполнять?
  10. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Видать, не совсем ясно то))))
    Нет. Это происходит все в один и тот же момент. Представьте, что у Вас есть таблица (тобишь результат запроса) с записями 1, 2, 3. Вы начинаете их перебирать в цикле. Вы понимаете, что происходит в этот момент?! Весь программный код выполняется построчно. Т.к. в таблице 3 записи, то и код в цикле выполнится 3 раза. И соответственно, на каждом витке цикла, вы присваиваете своей переменной с номером значение равным, старое значение + 1.
  11. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    НомСтр = 0;
    Для НомерСтроки = 1 По 12 Цикл
    НомСтр = НомСтр + 1;
    ОбластьДетальныхЗаписей.Параметры.НомерСтроки = НомСтр;
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    КонецЦикла;
    
  12. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.359
    Симпатии:
    5
    Баллы:
    29
    Тогда уж

    Для НомСтр=1 По 12 Цикл
  13. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    во все строки 12 добавляет

    дело в том что я же не знаю сколько строк будет выбраанно в запросе, я просто для примера 12 написал, а как до послденего элемента выполнять я вообще не знаю

    Вложения:

    • рпр.JPG
      рпр.JPG
      Размер файла:
      72,3 КБ
      Просмотров:
      41
  14. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.359
    Симпатии:
    5
    Баллы:
    29
    НомСтр = НомСтр + 1;
    ОбластьДетальныхЗаписей.Параметры.НомерСтроки = НомСтр;


    Эти строки местами поменяй
  15. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.359
    Симпатии:
    5
    Баллы:
    29
    Код:
     Для Шаг=1 По 12 Цикл
    Сообщить(Шаг);
    Если Шаг=12 Тогда
    Сообщить("Все");
    КонецЕсли;
    КонецЦикла;
    
    создай обработку новую, вставь код,посмотри как работает если не до конца понятно...
  16. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    вот полностью как
    Код:
    НомСтр = 0;
    Для НомерСтроки = 1 По 12 Цикл
    НомСтр = НомСтр + 1;
    
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Номер КАК Номер,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата КАК Дата,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник КАК Сотрудник,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ДатаПриемаНаРаботу КАК ПринятНаРаботу
    |ИЗ
    | Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
    |ГДЕ
    | (НЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.ПометкаУдаления)
    | И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен
    | И ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация = &Организация КОНЕЦ
    |   И ВЫБОР КОГДА &ПодразделениеОрганизации = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации В ИЕРАРХИИ(&ПодразделениеОрганизации)КОНЕЦ
    | И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ДатаПриемаНаРаботу >= &НачалоПериода
    | И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ДатаПриемаНаРаботу <= &КонецПериода
    |
    |УПОРЯДОЧИТЬ ПО
    | ПодразделениеОрганизации";
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("ПодразделениеОрганизации", ?(ЗначениеЗаполнено(ПодразделениеОрганизации), ПодразделениеОрганизации, Неопределено));
    Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Организация), Организация, Неопределено));
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьЗаголовок.Параметры.Организация = Организация;
    ОбластьЗаголовок.Параметры.НачалоПериода = НачалоПериода;
    ОбластьЗаголовок.Параметры.КонецПериода = КонецПериода;
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ОбластьДетальныхЗаписей.Параметры.НомерСтроки = НомСтр;
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    КонецЦикла;
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
  17. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.359
    Симпатии:
    5
    Баллы:
    29
    ой, я затупил что-то :)



    Для НомерСтроки = 1 По 12 Цикл

    ОбластьДетальныхЗаписей.Параметры.НомерСтроки = НомерСтроки;

    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    КонецЦикла;


    НомСтр = НомСтр +1; это надо убрать и код заработает
  18. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    не не фурычит
  19. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.359
    Симпатии:
    5
    Баллы:
    29
    а так если?
    Код:
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    НомерСтроки= 1;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ОбластьДетальныхЗаписей.Параметры.НомерСтроки = НомерСтроки;
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    НомерСтроки = НомерСтроки+1;
    КонецЦикла;
    НомСтр = 0;
    Для НомерСтроки = 1 По 12 Цикл
    НомСтр = НомСтр + 1;

    вот это сверху зачем? считать нужно в цикле, который заполняет макет из выборки
  20. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    все понял =)
Похожие темы
  1. кэт
    Ответов:
    1
    Просмотров:
    299
Загрузка...

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