Имя: Пароль:
1C
 
можно ли в 1с 83 сравнить без цикла 2 ТЗ
0 33554432
 
17.06.16
07:28
можно ли в 1с 83 сравнить без цикла 2 ТЗ по 2 полям. Результат - есть совпадение по 2 полям или нет. Если да, то как?
1 Beretta
 
17.06.16
07:31
Что такое "совпадение по двум полям"?
2 DDwe
 
17.06.16
07:32
ОбщийМодульРаботаСТЗСравнитьТЗПоПолям(поле1,поле2, тз1,тз2);
3 worker-good
 
17.06.16
07:35
(2) шутник:-)
4 worker-good
 
17.06.16
07:37
(0) если надо чтобы быстро работало то делаешь два отдельных цикла, а не цикл в цикле
5 DrLekter
 
17.06.16
07:38
Запросом?
6 Bigbro
 
17.06.16
07:48
в массив одну колонку, вторую. и сравнить значения?
7 Bigbro
 
17.06.16
07:51
СравнениеЗначений (CompareValues)
Сравнить (Compare)
Синтаксис:

Сравнить(<Значение1>, <Значение2>)
Параметры:

<Значение1> (обязательный)

Тип: Произвольный.
Первое значение сравнения.
<Значение2> (обязательный)

Тип: Произвольный.
Второе значение сравнения.
Возвращаемое значение:

Тип: Число.
Результат < 0 - первое значение меньше второго.
Результат > 0 - первое значение больше второго.
Результат = 0 - первое значение равно второму.
Описание:

Сравнивает два значения.

Доступность:

Сервер, толстый клиент, внешнее соединение.
8 MrStomak
 
17.06.16
07:53
Без цикла это даже sql не сравнивает.
9 Beretta
 
17.06.16
07:56
А напомните, кстати, построитель отчета в текстовый макет умеет выводить?
10 Провинциальный 1сник
 
17.06.16
08:03
Выгрузить эти два поля в другие ТЗ, сериализовать, сравнить как строки)
11 Beretta
 
17.06.16
08:05
(10) Через xml неспортивно. Надо многоступечато и сложно )
12 33554432
 
17.06.16
08:32
Я вот такой алгоритм написал. Работает. Не особо тормозит, но можно ли ускорить?

//-------------      забраковка
запросЗабр=новый запрос;
запросЗабр.Текст="ВЫБРАТЬ
                 |    ФАРМ_ЗаблокированныеТовары.Номенклатура,
                 |    ФАРМ_ЗаблокированныеТовары.СерияНомер,
                 |    ФАРМ_ЗаблокированныеТовары.Регистратор
                 |ИЗ
                 |    РегистрСведений.ФАРМ_ЗаблокированныеТовары КАК ФАРМ_ЗаблокированныеТовары";
ЗабракованныеТовары=запросЗабр.Выполнить().Выгрузить();
ЗабракованныеТовары.Колонки.Добавить("поиск");
для каждого стр из ЗабракованныеТовары цикл
    стр.поиск=строка(стр.номенклатура)+строка(стр.серияномер);
конеццикла;    
для каждого строкаОТБ из объект.ВыбранныйПТУ.товары.выгрузить() цикл
    новыйпоиск=ЗабракованныеТовары.Найти(строка(строкаОТБ.номенклатура)+строка(строкаОТБ.серия.номер)) ;
    если новыйпоиск=неопределено тогда
    иначе
    сообщить("забраковано: "+строка(строкаОТБ.номенклатура)+" серия: "+строка(строкаОТБ.серия.номер))    ;
    конецесли;    
конеццикла;    
//--------------------- забраковка
13 MSOliver
 
17.06.16
08:34
таблица значений сериализуетя, и сравнить две строки
14 FIXXXL
 
17.06.16
08:35
(12) а что помешало таблицу связать самое на себя в запросе и сравнить?
15 FIXXXL
 
17.06.16
08:36
(14) сорри, не саму на себя, а на ТЧ
16 MrStomak
 
17.06.16
08:37
1. Убрать нафиг преобразование ы строки.
2. ТЗ.Индексы.Добавить("поле1,поле2")
3. Искать через НайтиСтроки по двум полям
17 Serg_1960
 
17.06.16
09:30
(12) таблицу объекта в запрос и там соединяй.
18 Провинциальный 1сник
 
17.06.16
09:37
(11) Зачем xml, ЗначениеВСтрокуВнутр наше всё
19 H A D G E H O G s
 
17.06.16
09:45
(12) Можно, но не так, как ты думаешь
20 samozvanec
 
17.06.16
09:53
(0) Если НЕ ТЗ1[0].Поле1 = ТЗ1[0].Поле1 Тогда
Возврат Ложь;
ИначеЕсли НЕ ТЗ1[1].Поле1 = ТЗ1[1].Поле1 Тогда
Возврат Ложь;


ну и т.д.)
21 ovrfox
 
17.06.16
10:02
Подобный запрос
ВЫБРАТЬ
|    Товары.Номенклатура,
|    Товары.Серия.Номер КАК СерияНомер
|ИЗ
|    &Товары КАК Товары
|ГДЕ
|    (Товары.Номенклатура, Товары.Серия.Номер) В
|            (ВЫБРАТЬ
|                ФАРМ_ЗаблокированныеТовары.Номенклатура,
|                ФАРМ_ЗаблокированныеТовары.СерияНомер
|            ИЗ
|                РегистрСведений.АРМ_ЗаблокированныеТовары КАК ФАРМ_ЗаблокированныеТовары)

Тебя спасет и сразу выдаст только нужные строки.
Главное не забудь передать таблицу для поиска внутрь запроса. Еще лучше, если ты сможешь ее получить прямо на сервере и регистр будет иметь индекс по номенклатуре.
22 Ildarovich
 
17.06.16
11:12
Много различных способов решения этой задачи приведено в статье "Лучшие методы сравнения таблиц значений" http://catalog.mista.ru/public/326983/ .