#0
by El_Duke
Есть две табл. значений ТЗ_1 и ТЗ_2. В обоих по 3 поля. Надо сравнить строки этих таблиц и если строка из ТЗ2 не входит и ТЗ1, то перенести её в ТЗ_3. Пишу код: ТЗ_2.ВыбратьСтроки; Как правильно сформулировать условие для Если ? Перепробовал несколько условий - каждый раз отбираются лишние строки. Подскажите кто сталкивался и делал такое.
#3
by Sarius
Добавить в таблицы по полю со значением "1" для новой и "-1" для старой, слить таблицы и свернуть по первым трем полям и суммой по единицам. Далее разбор таблицы - где положительные - этих строк нет в первой таблице.
#8
by kiruha
В 7.7 нет индексов. И для справки - внутренний алгоритм работы ТЗ даже на групповых операциях - последовательный перебор. Прежде чем руки отрывать - неплохо голову включить
#12
by Sarius
ну не под БК же программируем.... По сути это и происходит. Сливая 2 таблицы с -1 и 1 и сворачивая мы делаем новое поле нулевым. Если было несколько одинаковых строк в таблице - то поле будет -1 или +3 - неважно, важно, что плюсовое значение покажет, что во второй таблице таких строк на столько-то больше. Если же свернуть таблицы до создания поля - то получим именно уникальные строки, т.е. повторений не будет.
#13
by El_Duke
причем тут количество строк ? мне надо по значениям строк отбирать, значит надо сравнивать поля каждой строки в двух таблицах
#15
by lamme
само тупое ... сцепляем все значения колонок в одну строку - и сравниваем имхо - такой поиск и перебеор долгий черех Тз.НайтиЗначений - быстрее получится (сначала подготовить так же в двух ТЗ - колонку где искать (ТЗ1) и что искать (ТЗ2))
#16
by Sarius
сначала пришло в голову такое - отбросил, так как поле с единицей и проще добавить и проще работать
#24
by Mikeware
Параметры: ТЗ2 - тип: ИндексированннаяТаблица. Таблица, с которой строится разность. ИндексТекущейТЗ - тип: Строка, Число. Имя или номер индекса в текущей таблицы. ИндексВторойТЗ - тип: Строка, Число. Имя или номер индекса в ТЗ2. флДобавлятьСтрокиТЗ2 - тип: Число. Флаг добавления строк ТЗ2 в результат. Описание: разность двух таблиц по ключевым полям. Результатом является таблица, в которой присутствуют строки текущей ТЗ, которых нет в ТЗ2, и строки ТЗ2, которых нет в текущей ТЗ (с учетом флДобавлятьСтрокиТЗ2). Совпадение строк определяется по индексам ИндексТекущейТЗ и ИндексТЗ2. Количество колонок в индексах должно быть одинаковым
#38
by zdas
это заполнение ТЗ как для первого варианта, так и для второго. я тебе дал время в скорость заполнения индекса для 11 документов. И насколько я помню разговор не о скорости заполнения ТЗ :).
#39
by Euguln
имеется в виду, интересна ситуация, когда индекс создается дополнительно уже для готовых таблиц, а не на этапе их создания.
#43
by Serginio1
Сортируем сравниваемые таблицы, сравниваем и идем от меньшего к большему. К сожаление сравнение полей на <> не проходит т.к. разные функции сравнения для таблицы. Пример для 2 полей. Можно упростить через получитьЗначение
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- как в запросе отнять день от даты
- Как можно программно проверить пароль пользователя в 1С 8.х ?
- GetInfoBaseConnections(,) - не выполняется на сервере
- ЗУП: Индексация заработка с коэффициентом
- Как вычислить количество в запросе?
- 1C Архив. Пароль администратора по умолчанию.
- Проблемы с печатью товарной накладной Торг-12
- v7: Как в УТП включить учет по проектам?
- Периодичность нумерации документов
- количество дней наличия товара на складе за период
- Создание файла в формате dBase IV
- Как бы реализовать Акт сверки в Бухгалтерии предприятия для группы контрагентов?
- Записи в регистре есть, а в запрос не попадают
- Подскажите хороший CHM редактор
- Конвертация v2: Как в событие "После загрузки" обратиться к форме документа
- Идентификаторы регистров
- Excel через ADODB формат чисел
- V8: Ошибка при вызове конструктора (ЧтениеZipФайла): Файл не найден:
- Куда-то пропали роли новые роли. Динамическое обновление.
- Группировка День Все