|
Поиск соответствий по строкам таблицы | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
28.03.12
✎
01:32
|
Для Каждого ТС Из ТаблВыставленияСоответствия Цикл
ТС.Номенклатура = ""; ТС.ХарактеристикаНоменклатуры = ""; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Контрагент, | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, | НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ШтрихКодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО &НаименованиеНоменклатурыКонтрагента"; Запрос.УстановитьПараметр("Контрагент",Контрагент); Запрос.УстановитьПараметр("НаименованиеНоменклатурыКонтрагента" , ТС.ХарактеристикаНоменклатурыСтрока); РезЗап = Запрос.Выполнить(); Выб = РезЗап.Выбрать(); Пока Выб.Следующий() Цикл ТС.Номенклатура = Выб.Номенклатура; ТС.ХарактеристикаНоменклатуры = Выб.ХарактеристикаНоменклатуры; КонецЦикла; КонецЦикла; |
|||
1
Boudybuilder
28.03.12
✎
01:32
|
Сделал так , но запрос в цыкле - это глупость наверное.
Как сделать чтоб не в цыкле ? Выгрузить в массив или ТаблицуЗначений? |
|||
2
Boudybuilder
28.03.12
✎
01:33
|
Можете показать пример?
|
|||
3
ptrtss
28.03.12
✎
06:10
|
Запрос такой:
"ВЫБРАТЬ | т.НомерСтроки, | т.ХарактеристикаНоменклатурыСтрока |ПОМЕСТИТЬ вт |ИЗ | &т КАК т |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | вт.НомерСтроки КАК НомерСтроки, | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры |ИЗ | вт КАК вт | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ПО (вт.ХарактеристикаНоменклатурыСтрока ПОДОБНО НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента) |ИТОГИ ПО | НомерСтроки" При обходе ищем строку таблицы по индексу, и из группировки итогов второго уровня берем первую строчку, забираем номенклатуру с характеристикой из нее |
|||
4
Boudybuilder
28.03.12
✎
10:53
|
(3) Смотрю как баран на новые ворота...
Ничего не понимаю. Что за т.НомерСтроки , Что за вт.НомерСтроки? |
|||
5
Boudybuilder
31.03.12
✎
01:32
|
Кто подскажет поподробнее
|
|||
6
Boudybuilder
31.03.12
✎
02:02
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Контрагент, | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, | НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ШтрихКодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; Запрос.УстановитьПараметр("Контрагент",Контрагент); РезЗап = Запрос.Выполнить(); Выб = РезЗап.Выбрать(); Ном = Выб.Номенклатура; ХарНом = Выб.ХарактеристикаНоменклатуры; Для Каждого ТС Из СписокНоменклатуры Цикл ТС.Номенклатура = ""; ТС.ХарактеристикаНоменклатуры = ""; Если Строка(Выб.НаименованиеНоменклатурыКонтрагента) = Строка(ТС.НаименованиеНоменклатурыКонтрагента) Тогда ТС.Номенклатура = Выб.Номенклатура; ТС.ХарактеристикаНоменклатуры = Выб.ХарактеристикаНоменклатуры; КонецЕсли; КонецЦикла; |
|||
7
Boudybuilder
31.03.12
✎
02:02
|
(6)
Так правильно? |
|||
8
Boudybuilder
31.03.12
✎
02:05
|
Так почему то вобще ничего не возвращает... :(
|
|||
9
echo77
31.03.12
✎
08:00
|
(4) Используется описание временной таблицы. Временная таблица передается в запрос как переметр с именем "т", в таблице две колонки:
-НомерСтроки -ХарактеристикаНоменклатурыСтрока |
|||
10
Boudybuilder
31.03.12
✎
10:52
|
Извените , но во впременных таблицах я еще пока не соображаю.
Вобщем покажите пожалуйста конкретно на моем примере если не жалко минутки вашего времени. Ведь мне то еще париться и париться... А запос в цыкле на 25 000 строк работает 2,5 минуты... :( Прискорбно. Тут еще раз показываю как работает мой запрос с отбором по тек строке в цикле. Для Каждого ТС Из ТаблВыставленияСоответствия Цикл ТС.Номенклатура = ""; ТС.ХарактеристикаНоменклатуры = ""; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Контрагент, | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, | НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ШтрихКодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО &НаименованиеНоменклатурыКонтрагента"; Запрос.УстановитьПараметр("Контрагент",Контрагент); Запрос.УстановитьПараметр("НаименованиеНоменклатурыКонтрагента" , ТС.НаименованиеНоменклатурыКонтрагента); РезЗап = Запрос.Выполнить(); Выб = РезЗап.Выбрать(); Пока Выб.Следующий() Цикл ТС.Номенклатура = Выб.Номенклатура; ТС.ХарактеристикаНоменклатуры = Выб.ХарактеристикаНоменклатуры; КонецЦикла; КонецЦикла; На его примере переделайте пожалуйста как должно быть. Плиз. Спасибо. |
|||
11
Boudybuilder
31.03.12
✎
11:54
|
...
|
|||
12
Boudybuilder
31.03.12
✎
14:06
|
Народ!!! Не поленитесь помочь (10)
|
|||
13
FIXXXL
31.03.12
✎
22:41
|
(0) возми ТС.ХарактеристикаНоменклатурыСтрока по всей ТЧ, запихни в ТЗ, и ТЗ передавай как параметр в запрос
сравнение через "В" ну и дальше играйся :) |
|||
14
Новиков
31.03.12
✎
22:48
|
цИкл, извИните - пиши правильно, блеать!
пожалуйста = Плиз - учи русский, блеать! и да. Будь мужиком, блеать! Пиши сам. |
|||
15
Boudybuilder
02.04.12
✎
00:14
|
(13)
Мне пример нужен. Я сам не разберусь пока |
|||
16
CepeLLlka
02.04.12
✎
01:36
|
АльфаАвто... не иначе :)
|
|||
17
Boudybuilder
03.04.12
✎
01:15
|
Я б хотел чтоб мой цикл переделали на правильное решение этой проблемы , или показали мне пример конкретный по этой теме. Ато (13) я так особо и не понял. Извените , за пока недостаточное количество знаний.
|
|||
18
Boudybuilder
04.04.12
✎
02:35
|
ТЗ = СписокНоменклатуры.ВыгрузитьКолонку("НаименованиеНоменклатурыКонтрагента");
ЗП = Новый Запрос; ЗП.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗП.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента, |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; ЗП.Параметры.Вставить("ТЗ",ТЗ); ЗП.Выполнить(); ЗП.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Контрагент, | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, | НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ШтрихКодНоменклатурыКонтрагента, | НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО (НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО ТЗ.НаименованиеНоменклатурыКонтрагента) |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; ЗП.УстановитьПараметр("Контрагент",Контрагент); СписокНоменклатуры.ЗагрузитьКолонку(ЗП.Выполнить().Выгрузить("НаименованиеНоменклатурыКонтрагента"),"Номенклатура"); Что тут не так? |
|||
19
Rusty Nail
04.04.12
✎
03:16
|
(18) ТЗ, по твоему, это что?
|
|||
20
Boudybuilder
04.04.12
✎
03:24
|
ТЗ = Новый ТаблицаЗначений ?
|
|||
21
Boudybuilder
04.04.12
✎
03:36
|
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НаименованиеНоменклатурыКонтрагента",Новый ОписаниеТипов("Строка"),"НаименованиеНоменклатурыКонтрагента"); ТЗ.ЗагрузитьКолонку(СписокНоменклатуры.ВыгрузитьКолонку("НаименованиеНоменклатурыКонтрагента"),"НаименованиеНоменклатурыКонтрагента"); ЗП = Новый Запрос; ЗП.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗП.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; ЗП.Параметры.Вставить("ТЗ",ТЗ); ЗП.Выполнить(); ЗП.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО (НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО ТЗ.НаименованиеНоменклатурыКонтрагента) |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; ЗП.УстановитьПараметр("Контрагент",Контрагент); СписокНоменклатуры.ЗагрузитьКолонку(ЗП.Выполнить().Выгрузить("Номенклатура"),"Номенклатура"); |
|||
22
Boudybuilder
04.04.12
✎
09:50
|
(21) Правильно я сделал?
Но на эту строку ругается... СписокНоменклатуры.ЗагрузитьКолонку(ЗП.Выполнить().Выгрузить("Номенклатура"),"Номенклатура"); |
|||
23
Boudybuilder
04.04.12
✎
12:18
|
&
|
|||
24
Boudybuilder
04.04.12
✎
12:18
|
?
|
|||
25
Boudybuilder
04.04.12
✎
12:42
|
Народ , что тут не правильно ? (21) (22)
|
|||
26
111Ivan111
04.04.12
✎
12:56
|
Книжки полистай))) Арбра-кадабра везде у тебя)
|
|||
27
111Ivan111
04.04.12
✎
12:58
|
(21) ЗП.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;?
А де Менеджер = Новый МенеджерВременныхТаблиц? |
|||
28
Boudybuilder
04.04.12
✎
13:08
|
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НаименованиеНоменклатурыКонтрагента",Новый ОписаниеТипов("Строка"),"НаименованиеНоменклатурыКонтрагента"); ТЗ.ЗагрузитьКолонку(СписокНоменклатуры.ВыгрузитьКолонку("НаименованиеНоменклатурыКонтрагента"),"НаименованиеНоменклатурыКонтрагента"); ЗП = Новый Запрос; Менеджер = Новый МенеджерВременныхТаблиц; ЗП.МенеджерВременныхТаблиц = Менеджер; ЗП.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; ЗП.Параметры.Вставить("ТЗ",ТЗ); ЗП.Выполнить(); ЗП.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО (НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО ТЗ.НаименованиеНоменклатурыКонтрагента) |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; ЗП.УстановитьПараметр("Контрагент",Контрагент); СписокНоменклатуры.ЗагрузитьКолонку(ЗП.Выполнить().Выгрузить("НоменклатураКонтрагентов.Номенклатура"),"Номенклатура"); Ошибка при вызове метода контекста (Выгрузить) СписокНоменклатуры.ЗагрузитьКолонку(ЗП.Выполнить().Выгрузить("НоменклатураКонтрагентов.Номенклатура"),"Номенклатура"); |
|||
29
Boudybuilder
04.04.12
✎
13:13
|
Ошибка при вызове метода контекста (Выгрузить)
СписокНоменклатуры.ЗагрузитьКолонку(ЗП.Выполнить().Выгрузить("НоменклатураКонтрагентов.Номенклатура"),"Номенклатура"); |
|||
30
111Ivan111
04.04.12
✎
13:14
|
(29)ТаблицаЗначений (ValueTable)
ЗагрузитьКолонку (LoadColumn) Синтаксис: ЗагрузитьКолонку(<Массив>, <Колонка>) Параметры: <Массив> (обязательный) Тип: Массив. Массив значений, который выступает в качестве источника данных для колонки. <Колонка> (обязательный) Тип: Число; Строка; КолонкаТаблицыЗначений. Колонка, в которую будут загружены значения из массива. В качестве значения параметра может выступать индекс колонки, имя колонки, сама колонка. Описание: Загружает колонку таблицы значений из массива значений. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Значения из массива загружаются в колонку в порядке индексов. Пример: ТаблицаРезультат = Новый ТаблицаЗначений; Для каждого ИмяКолонки Из МассивИменКолонок Цикл ТаблицаРезультат.Колонки.Добавить(ИмяКолонки); КонецЦикла; // Создадим пустые строки таблицы Для Н=1 По СтрокиДереваЗначений.Количество() Цикл ТаблицаРезультат.Добавить(); КонецЦикла; // Скопируем значения колонок Для каждого ИмяКолонки Из МассивИменКолонок Цикл ЗначенияКолонки = СтрокиДереваЗначений.ВыгрузитьКолонку(ИмяКолонки); ТаблицаРезультат.ЗагрузитьКолонку(ЗначенияКолонки, ИмяКолонки); КонецЦикла; Читай! |
|||
31
Boudybuilder
04.04.12
✎
13:34
|
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НаименованиеНоменклатурыКонтрагента",Новый ОписаниеТипов("Строка"),"НаименованиеНоменклатурыКонтрагента"); ТЗ.ЗагрузитьКолонку(СписокНоменклатуры.ВыгрузитьКолонку("НаименованиеНоменклатурыКонтрагента"),"НаименованиеНоменклатурыКонтрагента"); ЗП = Новый Запрос; Менеджер = Новый МенеджерВременныхТаблиц; ЗП.МенеджерВременныхТаблиц = Менеджер; ЗП.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; ЗП.Параметры.Вставить("ТЗ",ТЗ); ЗП.Выполнить(); ЗП.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО (НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО ТЗ.НаименованиеНоменклатурыКонтрагента) |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; ЗП.УстановитьПараметр("Контрагент",Контрагент); Рез = ЗП.Выполнить().Выгрузить(); Кол = Рез.ВыгрузитьКолонку("Номенклатура"); СписокНоменклатуры.ЗагрузитьКолонку(Кол,"Номенклатура"); |
|||
32
Boudybuilder
04.04.12
✎
13:34
|
(31) Сделал так. Уже не ругается , но не возвращает ничего... :(
|
|||
33
m-serg74
04.04.12
✎
14:13
|
(32) а вместо
>ТЗ = Новый ТаблицаЗначений; >ТЗ.Колонки.Добавить("НаименованиеНоменклатурыКонтрагента",Новый >ОписаниеТипов("Строка"),"НаименованиеНоменклатурыКонтрагента"); >ТЗ.ЗагрузитьКолонку(СписокНоменклатуры.ВыгрузитьКолонку("НаименованиеНоменклатурыКонтрагента"),"НаименованиеНоменклатурыКонтрагента"); не судьба как нить так: ТЗ = СписокНоменклатуры.Скопировать( ,"НаименованиеНоменклатурыКонтрагента")? |
|||
34
Boudybuilder
04.04.12
✎
14:39
|
Блин , но я туплю с єти кодом!
сто раз переделываю а то ничего не дает!!!!!!! ТабЗначений = Новый ТаблицаЗначений; ТабЗначений.Колонки.Добавить("НаименованиеНоменклатурыКонтрагента",Новый ОписаниеТипов("Строка")); ТабЗначений.ЗагрузитьКолонку(СписокНоменклатуры.ВыгрузитьКолонку("НаименованиеНоменклатурыКонтрагента"),"НаименованиеНоменклатурыКонтрагента"); Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ",ТабЗначений); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента КАК НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО (НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО ТЗ.НаименованиеНоменклатурыКонтрагента) |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; Запрос.УстановитьПараметр("Контрагент",Контрагент); Рез = Запрос.Выполнить(); Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл НовСтр = СписокНоменклатуры.Добавить(); НовСтр.Номенклатура = Выборка.Номенклатура; НовСтр.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры; НовСтр.НаименованиеНоменклатурыКонтрагента = Выборка.НаименованиеНоменклатурыКонтрагента; КонецЦикла; ЧТО Я ТУТ НЕ ТАК ДЕЛАЮ. ИМПРАВЬТЕ ПОЖАЛУЙСТА!!! |
|||
35
m-serg74
04.04.12
✎
14:43
|
(34) не хочешь читать книжки так хоть почитай что написал в (33)
|
|||
36
Boudybuilder
04.04.12
✎
14:46
|
(35)
ТЗ = Новый ТаблицаЗначений; ТЗ = СписокНоменклатуры.Скопировать( ,"НаименованиеНоменклатурыКонтрагента") Так не катит... |
|||
37
m-serg74
04.04.12
✎
14:47
|
катит но достаточно просто
ТЗ = СписокНоменклатуры.Скопировать( ,"НаименованиеНоменклатурыКонтрагента") |
|||
38
ProProg
04.04.12
✎
14:48
|
пишешь очередную нетленку по загрузке прайсов?
|
|||
39
m-serg74
04.04.12
✎
14:50
|
похоже писать ему придется очььььь долго)))
|
|||
40
Boudybuilder
04.04.12
✎
14:54
|
(38) Она готова , но запрос в цикле. Хочу от него избавиться...
|
|||
41
FIXXXL
04.04.12
✎
14:56
|
(40) у тебя поиск-сравнение по текстовому полю идет?
|
|||
42
Boudybuilder
04.04.12
✎
14:57
|
(37) Метод объекта не обнаружен (Скопировать)
ТЗ = СписокНоменклатуры.Скопировать( ,"НаименованиеНоменклатурыКонтрагента"); |
|||
43
Boudybuilder
04.04.12
✎
14:58
|
(41) по строке ТЧ НаименованиеНоменклатурыКонтрагента это строка
|
|||
44
FIXXXL
04.04.12
✎
15:00
|
в ТЧ есть поле с типом СсылкаНоменклатура?
|
|||
45
Boudybuilder
04.04.12
✎
15:05
|
Да
|
|||
46
FIXXXL
04.04.12
✎
15:12
|
тогда попробуй
для каждого стр из ТЧ цикл стр.СсылкаНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(стр.НаименованиеНоменклатурыКонтрагента) конеццикла |
|||
47
Boudybuilder
04.04.12
✎
15:17
|
(46) ты посмотри рабочий код в цикле (0)
|
|||
48
m-serg74
04.04.12
✎
15:21
|
(42) Если у тебя СписокНоменклатуры - это ТабличнаяЧасть, тогда
ТЗ = СписокНоменклатуры.Выгрузить( ,"НаименованиеНоменклатурыКонтрагента"); |
|||
49
FIXXXL
04.04.12
✎
15:21
|
(47) а, у тебя там контрагент еще...
|
|||
50
Boudybuilder
04.04.12
✎
15:29
|
(49) Идет отбор по контрагенту , он же Реквизит в обработке
|
|||
51
m-serg74
04.04.12
✎
15:40
|
(50) так что (48) попробовал
|
|||
52
Boudybuilder
04.04.12
✎
17:02
|
ТЗ = СписокНоменклатуры.Выгрузить( ,"НаименованиеНоменклатурыКонтрагента");
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ",ТЗ); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента КАК НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО (НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО ТЗ.НаименованиеНоменклатурыКонтрагента) |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; Запрос.УстановитьПараметр("Контрагент",Контрагент); Рез = Запрос.Выполнить(); Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл НовСтр = СписокНоменклатуры.Добавить(); НовСтр.Номенклатура = Выборка.Номенклатура; НовСтр.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры; НовСтр.НаименованиеНоменклатурыКонтрагента = Выборка.НаименованиеНоменклатурыКонтрагента; КонецЦикла; Вот так уже работает. Только меня выбрка смущает. Выгрузить не быстрее будет работать?! |
|||
53
m-serg74
04.04.12
✎
17:55
|
а что значит
>Пока Выборка.Следующий() Цикл > НовСтр = СписокНоменклатуры.Добавить(); ты снизу к существующим строчкам еще добавляешь строчки??? |
|||
54
Boudybuilder
04.04.12
✎
18:06
|
(53) Да... И Это глупость.
|
|||
55
Boudybuilder
04.04.12
✎
18:09
|
Перед этим очищаю таблицу ,и мне возвращает только те которые есть в регистре. А в таблице до этого были строчки , которых в регистре пока нету. И мне надо чтобы они не пропадали.
Короче запрос работает ок! Но надо теперь ко всем срочкам колонки НаименованиеНоменклатурыКонтрагента подставить значения в колонки Номенклатура и ХарактеристикаНоменклатуры. Каким способом это сделать? |
|||
56
m-serg74
04.04.12
✎
18:16
|
Пока Выборка.Следующий() Цикл
НовСтр = СписокНоменклатуры.Найти(Выборка.НаименованиеНоменклатурыКонтрагента, "НаименованиеНоменклатурыКонтрагента"); Если НовСтр = Неопределено Тогда НовСтр = СписокНоменклатуры.Добавить(); КонецЕсли; ЗаполнитьЗначенияСвойств(НовСтр, Выборка); КонецЦикла; |
|||
57
Boudybuilder
04.04.12
✎
19:53
|
ТЗ = СписокНоменклатуры.Выгрузить( ,"НаименованиеНоменклатурыКонтрагента");
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ",ТЗ); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТЗ.НаименованиеНоменклатурыКонтрагента КАК НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ | ПО (НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО ТЗ.НаименованиеНоменклатурыКонтрагента) |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент"; Запрос.УстановитьПараметр("Контрагент",Контрагент); Рез = Запрос.Выполнить(); Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл НовСтр = СписокНоменклатуры.Найти(Выборка.НаименованиеНоменклатурыКонтрагента, "НаименованиеНоменклатурыКонтрагента"); Если НовСтр = Неопределено Тогда НовСтр = СписокНоменклатуры.Добавить(); КонецЕсли; ЗаполнитьЗначенияСвойств(НовСтр, Выборка); КонецЦикла; Вроде работает... |
|||
58
Boudybuilder
04.04.12
✎
20:44
|
Сделал замеры производительности. По запросу №1 в цикле который я создал самостоятельно у меня в (1) и №2 с вашей помощью (57). Разница есть
№1: Форма.Форма.Форма 444 РезЗап = Запрос.Выполнить(); 24 749 152,169186 80,07 №2: Форма.Форма.Форма 444 Рез = Запрос.Выполнить(); 1 96,134330 86,53 Но 96 секунд ждать - это тоже не интересно... Могут ли быть решения побыстрее? |
|||
59
Boudybuilder
04.04.12
✎
21:36
|
(58) Что скажете?
|
|||
60
ProProg
04.04.12
✎
22:59
|
(58) плюс добавь еще потом время чтобы еще рузельтат по строкам запихать то на тои выйдет
|
|||
61
ProProg
04.04.12
✎
23:00
|
когда ты в цикле запрос делаешь у тебя уже обход есть и его размещение. Когда одни запросом получешь результат и его опять же в талицу теперь надо разместить это тоже время
|
|||
62
ProProg
04.04.12
✎
23:00
|
И вообще кто сказал что надо ставить ПОДОБНО
|
|||
63
ProProg
04.04.12
✎
23:02
|
(56) очень неоптимальный варинат! садтсь - два
|
|||
64
Лефмихалыч
04.04.12
✎
23:02
|
(61) ты код так же пишешь, как этот пост написал?
|
|||
65
Boudybuilder
04.04.12
✎
23:08
|
(62) Сравниваю строковые значения.
или надо все таки "=" ? |
|||
66
Boudybuilder
04.04.12
✎
23:11
|
ТЗ = СписокНоменклатуры.Выгрузить( ,"НаименованиеНоменклатурыКонтрагента");
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТЗ.НаименованиеНоменклатурыКонтрагента |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ",ТЗ); Запрос.Выполнить(); Тут первая строка работает для ТЧ , а если СписокНоменклатуры у меня не ТЧ а ТЗ , то как тут быть? Как выгрузить колонку ТаблицыЗначений в ТЗ ? Просто нужно то же где ТаблицаЗначений. |
|||
67
ProProg
04.04.12
✎
23:16
|
(65) равно конечно!
|
|||
68
Boudybuilder
04.04.12
✎
23:20
|
(66) Затупил и исправился! Это действие просто не нужно!
(67) Тогда для чего используется ПОДОБНО ? |
|||
69
Boudybuilder
05.04.12
✎
09:01
|
(58)(63) Какой тогда оптимальный?
|
|||
70
m-serg74
05.04.12
✎
09:25
|
(69) попроси помощи у (63) он поможет с оптимальным вариантом)
|
|||
71
m-serg74
05.04.12
✎
09:31
|
(67) НаименованиеНоменклатурыКонтрагента неограниченной длины потому и ПОДОБНО!!!
|
|||
72
hhhh
05.04.12
✎
09:35
|
(71) надо говорить: НаименованиеНоменклатурыКонтрагента неограниченной длины потому и "="!
|
|||
73
m-serg74
05.04.12
✎
09:54
|
(72)
Если "=" Тогда Нельзя сравнивать поля неограниченной длины и поля несовместимых типов Поэтому "ПОДОБНО" КонецЕсли; |
|||
74
Boudybuilder
05.04.12
✎
09:57
|
(67)(72) Респект и уважуха!
Четко , внятно , доступно! |
|||
75
m-serg74
05.04.12
✎
09:58
|
(74) а ты пробовал?
|
|||
76
m-serg74
05.04.12
✎
10:01
|
{Форма.Форма.Форма(742)}: Ошибка при вызове метода контекста (Выполнить): {(18, 45)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов. ПО ТЗ.НаименованиеНоменклатурыКонтрагента <<?>>= НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |
|||
77
m-serg74
05.04.12
✎
10:01
|
а вот запрос
ВЫБРАТЬ НоменклатураКонтрагентов.Номенклатура, НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОМЕСТИТЬ ТЗ ИЗ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураКонтрагентов.Номенклатура, НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, ТЗ.НаименованиеНоменклатурыКонтрагента ИЗ ТЗ КАК ТЗ ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ПО ТЗ.НаименованиеНоменклатурыКонтрагента = НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |
|||
78
m-serg74
05.04.12
✎
10:02
|
а с вот этим все ОК
ВЫБРАТЬ НоменклатураКонтрагентов.Номенклатура, НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОМЕСТИТЬ ТЗ ИЗ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураКонтрагентов.Номенклатура, НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, ТЗ.НаименованиеНоменклатурыКонтрагента ИЗ ТЗ КАК ТЗ ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ПО ТЗ.НаименованиеНоменклатурыКонтрагента ПОДОБНО НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |
|||
79
Boudybuilder
05.04.12
✎
10:03
|
(75) Я не пробовал. Мне в конструкторе сразу выдало ПОДОБНО , вот я и не парился ставить "=".
(78) Пересмотрю свои запросы. Спасибо. |
|||
80
m-serg74
05.04.12
✎
10:15
|
(79)+ а (67)(72) колы!!!
|
|||
81
Boudybuilder
05.04.12
✎
11:11
|
m-serg74
А что скажешь об этом? (58) |
|||
82
ProProg
05.04.12
✎
14:10
|
(71) лол. так сделай в запросе его ограничение!
|
|||
83
ProProg
05.04.12
✎
14:11
|
Я прайсы по 10-20-50 тысяч строк гружу - все летает!
При этом 10 вариантов поиска. |
|||
84
ProProg
05.04.12
✎
14:12
|
|ГДЕ
| (ВЫРАЗИТЬ(НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента КАК СТРОКА(1000))) = &НаименованиеНоменклатурыКонтрагента |
|||
85
ProProg
05.04.12
✎
14:12
|
(80) тебе кол с минусом и родителей в школу!)))
|
|||
86
ProProg
05.04.12
✎
14:13
|
(81) вообще не парься. продам со скидкой для 1Сника http://subsystems.ru/catalog/27/158/
научишся сразу всему. |
|||
87
m-serg74
05.04.12
✎
14:42
|
(85) вот в (84) для (0) понятно написано, а то что ты сказал вместо ПОДОБНО надо лепить "=" воспринял бы буквально, в результате снова - "А почему пишет ошибку?"
(81) пусть ProProg расскажет он все ж таки Про по загрузкам прайсов и по запросам) |
|||
88
Boudybuilder
06.04.12
✎
03:12
|
Но все таки это меня интересует больше всего (58)
(81) Многофункциональными не интересуюсь. Ибо считаю что нужно для каждого дока иметь свою , заточеную под нужды заполнения ТЧ конкретного дока и своих нужд. |
|||
89
Boudybuilder
06.04.12
✎
12:18
|
...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |