8.х Как сложить две ТЗ?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Korolev, 26 июл 2010.

  1. TopicStarter Overlay
    Korolev
    Offline

    Korolev Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Добрый день!
    Есть две таблицы значений.
    Первая ТЗ1 содержит колонки: вид, название, сумма
    Вторая ТЗ2 содержит: вид, название, сумма1, сумма2..

    Как в Т31 добавить данные из ТЗ2, учитывая что вид и название должны быть одинаковы?:)
  2. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Перебором, два цикла, проверка условий.
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    как вариант - запросом.
  4. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Зачем два цикла?
    Одного хватит.

    Код:
    СчОбхода = 0;
    Для каждого СтрокаТЗ2 из ТЗ2 Цикл
    СчОбхода = СчОбхода + 1;
    Сосотояние("Идет объединение таблиц. Обработанно "+СчОбхода+" строк из "+ТЗ2.Количество());
    
    СтрокаТЗ1 = ТЗ1.Добавить();
    СтрокаТЗ1.Вид = СтрокаТЗ2.Вид;
    СтрокаТЗ1.Наименование = СтрокаТЗ2.Наименование;
    СтрокаТЗ1.Сумма = СтрокаТЗ2.Сумма1 + СтрокаТЗ2.Сумма2;
    
    ОбработкаПрерыванияПользователя(); //вдруг пользователь решит контрол+брейк нажать
    КонецЦикла;
    ТЗ1.Свернуть("Вид, Наименование", "Сумма");
    
    
    Можно конечно и запросом. Полным объединением например. Но лучше ТЗ в запрос не пихать IMHO ибо
    нужно чтобы колонки ТЗ были типизированны. При не слишком больших таблицах запрос работает не многим быстрее, а иногда и медленее тупого перебора.
  5. TopicStarter Overlay
    Korolev
    Offline

    Korolev Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    чтобы сравнивать ячейки вида и наименования.
  6. Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    Зачем? Uza правильно говорит - добавляем в конец одной таблицы другую и сворачиваем.
  7. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Зачем тебе их сравнивать? 1С сравнит в момент сворачивания. Более того, 1С это сделает уж точно не медленее чем ты (практика показывает что не медленее, а быстрее, много быстрее). А кода получиться много меньше, и он (код) будет IMHO много сипатишнее.

    А если сравнивать виды и наименования - программа много, если не бОльшую часть времени будет тратить на поиск нужных строк и добавления/изменение данных этих самых строк.

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