7.7 Свертка базы ТиС 9.2

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем NovInNik, 28 дек 2010.

  1. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    проще иначе:
    1) Добавляем в ТЗ1 новую колонку
    2) В цикле перебираем строки ТЗ с поиском в ТЗ (если нашли значение - ставим)
    3) Вывели отчет по ТЗ1
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Приведи тут код. Явно ошибка в логике алгоритма.
  3. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Код:
     
    ТЗ1.ВыбратьСтроки();
    Пока ТЗ1.ПолучитьСтроку()=1 Цикл
    Стр=СокрЛП(ТЗ1.Номенклатура);
    ТЗ2.ВыбратьСтроки();
    Пока ТЗ2.ПолучитьСтроку()=1 Цикл
    Если СокрЛП(ТЗ2.Номенклатура)=СокрЛП(Стр) Тогда
    ТЗ.Код=ТЗ1.Код;
    ТЗ.Номенклатура=ТЗ1.Номенклатура;
    ТЗ.Количество=ТЗ2.Количество;
    ТЗ.ЕдИзм=ТЗ1.ЕдИзм;
    ТЗ.Цена=ТЗ1.Цена;
    ТЗ.Сумма=ТЗ1.Сумма;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;  
    
    
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    1. Если хочешь добавить строку в ТЗ, то нужно использовать метод НоваяСтрока(). Иначе у тебя будет записываться все в текущую строку, а если ее нет, то будет ошибка.
    2. По твоему алгоритму, все строки из ТЗ2 будут записываться в ТЗ, если выполняется условие СокрЛП(ТЗ2.Номенклатура)=СокрЛП(Стр). На счет условия сложно сказать, не "трогая руками". Пройдись отладчиком, проверь сверяемые значения.
    3. У таблицы значений имеется метод Найти(). Возможно его использование будет оптимальнее, чем цикл.
    4. Если уж остановишься на цикле, то задумайся, может нужно его прервать. Тогда используй оператор Прервать.

    Проверяй все это и задавай новый вопрос.

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