Сравнение двух ТЗ #410167


#0 by Глупый дятел
Есть две тз. У каждой есть колонка для привязки и колонка, значение которой надо сравнить. Как это проще организовать? Как сравнить каждый элемент с каждым через двойной цикл сам догадаюсь. Надо ченить более оптимальное.
#1 by Фокусник
"сложить", счетчик, свернуть
#2 by Defender aka LINN
Сравнить - это самоцель? Вообще, запросом можно.
#3 by Глупый дятел
Киньте кто-нить пример кода плиз, ато не очень понятно.
#4 by Злобный Йожег
где-то так в-общем...
#5 by Глупый дятел
Как запросом ТЗ сравнивать? Я только всякие реальные объекты обрабатывал раньше.
#6 by Глупый дятел
извиняюсь, еще не отображалось, сейчас гляну
#7 by Mitriy
#8 by Глупый дятел
Кстати, можно ли результат запроса в ТЗ выгрузить сразу. Если можно то как?
#9 by Злобный Йожег
Выгрузка = РезультатЗапроса.Выгрузить; :)
#11 by hhhh
ты не поверишь
#12 by Глупый дятел
Задача немного изменилась, надо сравнить поле с тремя привязками. Есть две таблицы с колонками "дата, гаражный_номер, вид_топлива, количество_заправлено". Надо отыскать различия в заправленном количестве при равных датах, номерах и видах. Подскажите, как поступить в данном случае, нодогоняю пока.
#13 by Глупый дятел
???
#14 by hhhh
здесь будет не одно а три условия
#15 by Глупый дятел
Ктонить конечный код запроса может помочь накидать? Нужна в итоге таблица гаражный марка дата код топлива заправлено АЗС (1 табл) заправлено ПЛ (2 табл)
#16 by Pashkaa
#17 by Глупый дятел
А более конкретно кто-нить может?
#18 by Pashkaa
Куда еще более конкретное то. Ты хочешь что бы за тебя всю работу сделали. Вместо Дата Номер и Вид поставь названия своих столбцов. Передай эти таблицы в запрос Выполни запрос и выгрузи данные в ТЗ
#19 by vde69
конечно могут, но за более конкретные денюжки... советов и примеров полно, если что-то не понимаешь - спрашивай конкретно что не понятно, а готовое решение просить - не кошерно.
#20 by Глупый дятел
Я прописал так    Запрос = Новый Запрос("ВЫБРАТЬ В итоге ошибка {Отчет.СравнениеДбфДляАЗС.Форма.ФормаОтчета}: Метод объекта не обнаружен (УстановитьПараметры) Запрос.УстановитьПараметры("ТЗ1", тзАЗС);
#21 by Andry888
уже не смешно...
#22 by Andry888
к
#23 by Глупый дятел
Ну блин, не знакома мне эта тема, дополните чуток код.
#24 by Злобный Йожег
дятел, у тебя телепат в восьмерке не работает, или что?
#25 by Глупый дятел
Чего где не хватает?
#26 by Andry888
УстановитьПараметр (без Ы)
#27 by Злобный Йожег
#28 by Глупый дятел
Ага, верно. Теперь другая ошибка {Отчет.СравнениеДбфДляАЗС.Форма.ФормаОтчета}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Таблица не найдена "тзАЗС" Но у меня есть такая таблица и с заполненными значениями.
#29 by 73
1. ТЗ как параметр можно только помещать во временные. 2. Вид соединения уточнить по задаче. Запрос = Новый Запрос("ВЫБРАТЬ | ТЗ1.*
#30 by Злобный Йожег
Только установить параметры надо вот так:
#31 by 73
+ недоглядел:
#32 by Fram
интересно как он задания самостоятельно выполняет...
#33 by Глупый дятел
{Отчет.СравнениеДбфДляАЗС.Форма.ФормаОтчета}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Тип не может быть выбран в запросе <<?>>&тзАЗС КАК ТЗ1;
#34 by 73
Колонки ТЗ должны быть типизированы.
#35 by Злобный Йожег
А может, тебе сначала лучше почитать про временные таблицы? А то ты реально задолбал уже тут всех...
#36 by Cheeflain
#37 by Злобный Йожег
Еще один тормознутый...
#38 by Fram
да он тут везде своими супер оптимизированными кодами расбрасывается
#39 by Глупый дятел
Я тут немного код переделал, все равно ошибка В итоге: {Отчет.СравнениеДбфДляАЗС.Форма.ФормаОтчета}: Ошибка при вызове метода контекста (Выполнить): {(20, 14)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов.
#40 by Kolyasik
читай
#41 by Kolyasik
+ промазал читай :)
#42 by Fram
ну и?.. все же написано! исправляй ошибку
#43 by Kolyasik
ограничь длинну строки
#44 by Kolyasik
наверное не  в эту тему :)
#45 by Глупый дятел
Да я понял, что написано, но у меня в обоих случаях строки, я описал код выше
#46 by alexkv_m
Функции работы с Таблицей значений(объединить, сравнить, соединить)
#47 by Kolyasik
у тебя ошибка: Строка не ограниченной длины тебе лень вот ето добавить? Новый КвалификаторыСтроки
#48 by Kolyasik
СП почитай, помогает для самообразования ;)
#49 by 73
тзАЗС.Колонки.Добавить("Гаражный", Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки));
#50 by Kolyasik
расскажи чем занимался 1,5 года на етом форуме? ;)
#51 by Глупый дятел
Теперь вроде все правильно. Но когда я задал сообщить значения итоговой таблицы ТЗрезультат, 200 значений выводилось минуты 3, из другой тз они выводятся 2 сек. Нунафиг этот запрос. Лучше бы сразу сделал тупым перебором. И проще сделать и быстрее работает.
#52 by Fram
а ты уверен что это запрос 3 минуты работал? мне кажется до запроса что то работало эти 3 минуты. пройдись отладчиком
#53 by Глупый дятел
Не, именно это. Все гаражные минуты 3 выводятся. А если я задаю вывод дат, то система вообще подвисает. Выводятся даты типа "11 11 0001". Нет у меня в предыдущих таблицах таких дат. Глюк какой-то.
#54 by Fram
у меня вопрос.. ты зачем запрос 2 раза выполняешь? :) PS скорее всего накосячил с запросом. тренируйся на кошках
#55 by Глупый дятел
Запускаю, все нормально, но сумма не идет, выходит ошибка           {Отчет.Отчет3РасчетГСМ.Форма.ФормаОтчета}: Преобразование значения к типу Число не может быть выполнено Типы вроде заданы правильно, с размером.    тзАЗС.Колонки.Добавить("Гаражный", Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки));    тзАЗС.Колонки.Добавить("ЗаправленоАЗС", Новый ОписаниеТипов("Число",,,,Новый КвалификаторыСтроки)); В чем еще может быть причина? Кроме суммирования все выводится корректно.
#56 by Fram
Вот этот кусок это нечто!
#57 by Глупый дятел
Предложи, как лучше. А еще лучше если поможете понять, почему выходит ошибка {Отчет.Отчет3РасчетГСМ.Форма.ФормаОтчета}: Преобразование значения к типу Число не может быть выполнено                   обл.Параметры.разница=Стр.ЗаправленоАЗС-Стр.ЗаправленоПЛ;
#58 by 73
Null-ы там в запросе получаются наверное.
#59 by hhhh
а индексировать ТЗ за тебя Пушкин будет? Что же ты? Не проиндексировал, а надеешься, что быстро сработает.
#60 by Глупый дятел
Действительно, там есть вероятность пустых значений. А как это лучше обработать?
#61 by 73
+ или неразрывные пробелы. зачем число в строку?: число(сокрлп(строка(Стр.ЗаправленоАЗС)))-
#62 by 73
Расписать по полям |ВЫБРАТЬ | ТЗ2.*, ТЗ1.* используя функцию ЕстьNull
#63 by Глупый дятел
73, Большое спасибо, проблема была действительно в этом, решил следующим способом                   запАЗС=?(значениезаполнено(Стр.ЗаправленоАЗС),Стр.ЗаправленоАЗС,0);
#64 by NcSteel
Лучше в запросе, хотя в твоем случае главное что бы работало.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С