8.х Поменять местами строки в таблице значений

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

  1. TopicStarter Overlay
    1cport
    Offline

    1cport Опытный в 1С

    Регистрация:
    25 авг 2014
    Сообщения:
    114
    Симпатии:
    1
    Баллы:
    29
    Здравствутйе.

    Решаю задачу и для её реализации
    нужно в тблице значений каждую 3ю строку поменять с каждой 1й
    т. 3 на место 1й , 6 на место 4й и т.д.
    Подскажите пожалуйста как это можно сделать ?
  2. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    для чего, если не секрет?? Может задачу опишите...
    ЗЫ: Такое провернуть будет легче через массив, наверное
  3. TopicStarter Overlay
    1cport
    Offline

    1cport Опытный в 1С

    Регистрация:
    25 авг 2014
    Сообщения:
    114
    Симпатии:
    1
    Баллы:
    29
    вывожу табличный документ нужно менять данные для его заполнения - они находятся в таблице значений (не ТЧ)
    --- Объединение сообщений, 4 дек 2014 ---
    грубо говоря меняю порядок ввывода данных
  4. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    А может изначально заполнять Вашу ТЗ в нужном порядке?
  5. TopicStarter Overlay
    1cport
    Offline

    1cport Опытный в 1С

    Регистрация:
    25 авг 2014
    Сообщения:
    114
    Симпатии:
    1
    Баллы:
    29
    а как поменять ?
    там ведь нужно менять 3й на 1й . я бы еще понял если 2й на1й или первый на последний ,
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    из одной ТЗ создайте другую по Индексам и все...
  7. TopicStarter Overlay
    1cport
    Offline

    1cport Опытный в 1С

    Регистрация:
    25 авг 2014
    Сообщения:
    114
    Симпатии:
    1
    Баллы:
    29
    да я о создании по индексам и думал - а можно примео или ссылочку ?
  8. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    тут сплошная математика... надо просто алгоритм итератора придумать...
  9. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
  10. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вот без массивов - вроде работает
    Код:
    сч = 0;
        Пока сч < тз2.Количество() - 1 Цикл
           
            нс = тз2.Вставить(сч + 3);переносим первую строку
            ЗаполнитьЗначенияСвойств(нс, тз2[сч]); //перенесли первую на место третьей
           
            ЗаполнитьЗначенияСвойств(тз2[сч], тз2[сч + 2]); //перенесли третью в первую
           
            тз2.Удалить(сч + 2);//удалили третью
           
            сч = сч + 3
           
        КонецЦикла;
    
    1cport нравится это.
  11. TopicStarter Overlay
    1cport
    Offline

    1cport Опытный в 1С

    Регистрация:
    25 авг 2014
    Сообщения:
    114
    Симпатии:
    1
    Баллы:
    29
    СЕЙЧАС ПОСМОТРЮ , СПАСИБО ЗА ПРИМЕР !
    я отпишусь сегодня завтра
  12. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.431
    Симпатии:
    372
    Баллы:
    104
    в ТЗ штатно можно двигать строки
    Код:
    ТаблицаЗначений (ValueTable)
    Сдвинуть (Move)
    Синтаксис:
    
    Сдвинуть(<Строка>, <Смещение>)
    Параметры:
    
    <Строка> (обязательный)
    
    Тип: Число; СтрокаТаблицыЗначений.
    Индекс строки, которую нужно переместить, или сама строка.
    <Смещение> (обязательный)
    
    Тип: Число.
    Количество строк, на которое необходимо переместить строку. Положительное значение означает, что строка будет передвинута ближе к концу таблицы значений (вниз), отрицательное - ближе к началу (вверх).
    Описание:
    
    Сдвигает строку на указанное количество позиций.
    
    Доступность:
    
    Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
    Пример:
    
    // перемещение первой строки вперед на одну позицию
    ТаблицаЦен.Сдвинуть(0, 1);
    
    // перемещение второй строки назад на одну позицию
    ТаблицаЦен.Сдвинуть(1, -1);
    
    но алгоритм самому надо придумывать
    если взять предложенное ТС (не забываем что нумерация строк с 0)
    3-1 и 6-4
    то
    Код:
    ТаблицаЦен.Сдвинуть(0, 2); //опускаем 1-ую на две позиции на 3-ую
    //следовательно строки будут 2-3-1
    ТаблицаЦен.Сдвинуть(1, -1); //теперь 3-ую со второй нонешней позиции поднимаем на 1-ую
    --- Объединение сообщений, 4 дек 2014 ---
    6-4 аналогично
    Код:
    ТаблицаЦен.Сдвинуть(3, 2); //опускаем 4-ую на две позиции на 6-ую
    //следовательно строки будут 5-6-4
    ТаблицаЦен.Сдвинуть(4, -1);
    
  13. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну в мой код внутрь цикла - работает!
  14. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.431
    Симпатии:
    372
    Баллы:
    104
    ну если без проверки кол-ва строк
    Код:
    Для Строчка=0 По ТаблицаЦен.КоличествоСтрок()
        ТаблицаЦен.Сдвинуть(Строчка, 2);
        ТаблицаЦен.Сдвинуть(Строчка+1, -1);
        Строчка=Строчка+3
    КонецЦикла;
    
    1cport нравится это.
  15. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну то и выходит....
    автору на выбор... что подходит
  16. TopicStarter Overlay
    1cport
    Offline

    1cport Опытный в 1С

    Регистрация:
    25 авг 2014
    Сообщения:
    114
    Симпатии:
    1
    Баллы:
    29
    Тигру86 - Cпасибо ! - ваш код точно подошел !
    Лорду маверику - спасибо за развитие темы - остановился на варианте Тигр86.

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