0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
1

Запрос. Условие: строка из первой табличной части равна любой строке из другой табличной части

21.10.2013, 06:57. Показов 8931. Ответов 23
Метки нет (Все метки)

Есть документ "РаспределениеМатериаловНаВыпуск".
У этого документа имеется "Форма документа".
На этой форме есть элементы формы: "ОсновнаяПанель".
На элементе "ОсновнаяПанель" есть две табличные части: "Продукция" и "Материалы".
Каждая табличная часть имеет поле "Заказ".

Вопрос: Как мне поставить условие в запрос: "строка из первой табличной части равна любой строке из другой табличной части"?


Я предполагаю должно получиться что-то на подобие:
Документ.РаспределениеМатериаловНаВыпуск.ФормаДокумента.Элем ентыФормы.ОсновнаяПанель.Материалы.Заказ =
Документ.РаспределениеМатериаловНаВыпуск.ФормаДокумента.Элем ентыФормы.ОсновнаяПанель.Продукция.Заказ


Но то что я написал не работает. Помогите пожалуйста решить данную проблему.
Миниатюры
Запрос. Условие: строка из первой табличной части равна любой строке из другой табличной части  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2013, 06:57
Ответы с готовыми решениями:

Копирование данных из ячейки одной Табличной Части на форме в такую же ячейку другой Табличной части на этой же форме
Всех с Новым годом и грядущим Рождеством пособите начинающему: затык такой - НА форме есть две...

Экспорт в эксель табличной части подчиненной формы с учетом полей-комбобоксов в табличной части
Добрый день. Пришло пожелание от коллег выгружать информацию из табличной подформы в...

Значение строки табличной части получить в табличной части другого документа
Есть документ ПриходнаяНакладная (товар приходит от поставщика по его цене), с табличной частью...

Автоматическое заполнение табличной части документа из табличной части другого
Добрый день. Совсем недавно начал изучать 1С и пока не могу найти решения собственной задачи)...

23
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 07:31  [ТС] 2
Или так:
Документ.РаспределениеМатериаловНаВыпуск.ФормаДокумента.Элем ентыФормы.ОсновнаяПанель.Страницы.Продукция.Значение =
Документ.РаспределениеМатериаловНаВыпуск.ФормаДокумента.Элем ентыФормы.ОсновнаяПанель.Страницы.Материалы.Значение
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
21.10.2013, 09:13 3
Цитата Сообщение от so1idsnake Посмотреть сообщение
Как мне поставить условие в запрос
Цитата Сообщение от so1idsnake Посмотреть сообщение
Я предполагаю должно получиться что-то на подобие:
Документ.РаспределениеМатериаловНаВыпуск.ФормаДокумента.Элем ентыФормы.ОсновнаяПанель.Материалы.Заказ =
Документ.РаспределениеМатериаловНаВыпуск.ФормаДокумента.Элем ентыФормы.ОсновнаяПанель.Продукция.Заказ
so1idsnake, не совсем понятно о чем идет речь, т.к. в запросах обращение к элементам формы не используются. Вам условие нужно все таки в запросе наложить или просто в коде формы что то проверить?
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 09:30  [ТС] 4
Мне нужно наложить условие в запросе.
На скриншоте видно Панель. У которой пять вкладок, две из них: "Продукция" и "Материалы".

В каждой из вкладок имеются строки.
Мне нужно, что бы запрос, брал строки из вкладки "Материалы" и сравнивал их со строками вкладки "Продукция". Если две строки имеют одинаковое поле "Заказ", то выводить эти строки во вкладке "Материалы".

Я делал так:

Код
	|ИЗ (
	|	//ДляУпрУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваУУ
	|	//ДляУпрУчета //ДляБухУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляБухУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваБУ
	|	//ДляБухУчета //ДляНалУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляНалУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваНУ
	|	) КАК НезавершенноеПроизводство,
	|	Документ.РаспределениеМатериаловНаВыпуск
	|ГДЕ
	|   НезавершенноеПроизводство.Заказ = Продукция.Заказ
в этом случае 1С не ругается, но она выводит все строки, а мне нужны только с одинаковым полем "заказ".
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
21.10.2013, 12:09 5
Используете внутреннее соединение таблиц Документ.РаспределениеМатериаловНаВыпуск.Материалы и Документ.РаспределениеМатериаловНаВыпуск.Продукция.
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 12:26  [ТС] 6
Цитата Сообщение от Fenomen Посмотреть сообщение
Используете внутреннее соединение таблиц Документ.РаспределениеМатериаловНаВыпуск.Материалы и Документ.РаспределениеМатериаловНаВыпуск.Продукция.
Внутреннее соединение тоже пробовал:
Код
	|ИЗ (
	|
	|
	|	//ДляУпрУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваУУ
	|	//ДляУпрУчета //ДляБухУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляБухУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваБУ
	|	//ДляБухУчета //ДляНалУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляНалУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваНУ
	|	) КАК НезавершенноеПроизводство,
	|	Документ.РаспределениеМатериаловНаВыпуск
	|
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РаспределениеМатериаловНаВыпуск.Материалы КАК ДокументРаспределениеМатериаловНаВыпускМатериалы
	|	По ДокументРаспределениеМатериаловНаВыпускМатериалы.Заказ = Документ.РаспределениеМатериаловНаВыпуск.Продукция.Заказ.Ссылка
Тоже не помогло. Выводятся абсолютно все строки.

Я нуб ещё в этом, быть может я пишу неправильно соединение?
0
855 / 654 / 111
Регистрация: 01.11.2012
Сообщений: 2,406
21.10.2013, 12:54 7
1C
1
2
3
ВЫБРАТЬ * ИЗ Документ.РаспределениеМатериаловНаВыпуск.Материалы КАК Материалы
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РаспределениеМатериаловНаВыпуск.Продукция КАК Продукция
ПО Материалы.Заказ=Продукция.Заказ
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 13:06  [ТС] 8
Ребята, вы уж сильно не ругайтесь на меня, но у меня до этого в запросе есть другие условие, и нужно добавить новые не избавляясь от старых.


Вот код:
Код
	ТекстЗапроса = "
	|ВЫБРАТЬ 
	|	НезавершенноеПроизводство.ЕстьРасчетСебестоимостиВыпуска,
	|	НезавершенноеПроизводство.Затрата КАК Номенклатура,
	|	НезавершенноеПроизводство.ХарактеристикаЗатраты КАК ХарактеристикаНоменклатуры,
	|	НезавершенноеПроизводство.СерияЗатраты КАК СерияНоменклатуры,
	|	НезавершенноеПроизводство.СтатьяЗатрат,
	|	НезавершенноеПроизводство.НоменклатурнаяГруппа,
	|	НезавершенноеПроизводство.Заказ КАК Заказ,
	|	
	|	НезавершенноеПроизводство.ЕдиницаИзмерения,
	|	НезавершенноеПроизводство.Коэффициент,
	|	
	|	НезавершенноеПроизводство.СчетЗатрат,
	|	НезавершенноеПроизводство.СчетЗатратНУ,
	|
	|	
	|	&Знак * НезавершенноеПроизводство.Количество КАК Количество,
	|	&Знак * НезавершенноеПроизводство.КоличествоБух КАК КоличествоБух,
	|	&Знак * НезавершенноеПроизводство.КоличествоНал КАК КоличествоНал,
	|	
	|	&Знак * НезавершенноеПроизводство.Сумма КАК Сумма,
	|	&Знак * НезавершенноеПроизводство.СуммаБух КАК СуммаБух,
	|	&Знак * НезавершенноеПроизводство.СуммаНал КАК СуммаНал
	|	
	|ИЗ (
	|
	|
	|	//ДляУпрУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваУУ
	|	//ДляУпрУчета //ДляБухУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляБухУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваБУ
	|	//ДляБухУчета //ДляНалУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляНалУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваНУ
	|	) КАК НезавершенноеПроизводство,
	|	Документ.РаспределениеМатериаловНаВыпуск.Материалы КАК Материалы
	|
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РаспределениеМатериаловНаВыпуск.Продукция КАК Продукция
	|	По Материалы.Заказ = Продукция.Заказ
Я сделал в нем всё точно так же как и в последнем посте, только оставил свои условия выбора в начале. Но почему-то этот код выводит не те строки которые надо... Я уже несколько дней сижу, не знаю как это реализовать...

При этом строки выводятся каким-то чудом если одна из табличных частей вообще пустая. Уже мозг скоро лопнет.

Ещё на всякий случай добавлю что данные в табличной части "материалы" берутся из РегистрНакопления.НезавершенноеПроизводство. Быть может это важно.
0
855 / 654 / 111
Регистрация: 01.11.2012
Сообщений: 2,406
21.10.2013, 13:20 9
Уточню, у тебя есть ТЧ Продукция и она заполена, ты хочешь заполнять ТЧ Материалы по текущей строке из ТЧ Продукция Остатками по региструНакопления.НезавершенноеПроизводство?
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 13:32  [ТС] 10
Цитата Сообщение от Xomych Посмотреть сообщение
Уточню, у тебя есть ТЧ Продукция и она заполена, ты хочешь заполнять ТЧ Материалы по текущей строке из ТЧ Продукция Остатками по региструНакопления.НезавершенноеПроизводство?
У меня есть ТЧ продукция и она заполнена, ТЧ материалы очищена.

Сейчас по нажатию кнопки, у меня формируется запрос, который берёт данные из РегистрНакопления.НезавершенноеПроизводство и вставляет эти строки в ТЧ материалы.
Я хочу что бы эти строки проходили дополнительный отбор, и что бы записывались только те строки, у которых поле "Заказ" имеет аналогичную запись в ТЧ продукция с таким же заполнением поля "Заказ".
0
Модератор
Эксперт 1С
3649 / 2878 / 562
Регистрация: 10.03.2011
Сообщений: 11,275
Записей в блоге: 1
21.10.2013, 13:40 11
1C
1
2
3
|ГДЕ НезавершенноеПроизводство.Заказ В (&Заказы)
 
Запрос.УстановитьПараметр("Заказы",ТЧПродукция.ВыгрузитьКолонку("Заказ"));
1
855 / 654 / 111
Регистрация: 01.11.2012
Сообщений: 2,406
21.10.2013, 13:41 12
Или как Dethmontt предлагает или так,

del

У предыдущего автора лучше
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 14:12  [ТС] 13
Цитата Сообщение от Dethmontt Посмотреть сообщение
1C
1
2
3
|ГДЕ НезавершенноеПроизводство.Заказ В (&Заказы)
 
Запрос.УстановитьПараметр("Заказы",ТЧПродукция.ВыгрузитьКолонку("Заказ"));
Строку №1 я добавил внутри запроса.

Строку №3 я изменил немного второй параметр так как отладчик ругался и вставил сразу после запроса:
Код
ТекстЗапроса.УстановитьПараметр("Заказы", Документы.РаспределениеМатериаловНаВыпуск.ПолучитьФорму("ФормаДокумента").ЭлементыФормы.ОсновнаяПанель.Страницы.Продукция.ВыгрузитьКолонку("Заказ"));
В режиме предприятия при запуске появилось сообщение:
Заполнение ТЧ не произведено!
Поле объекта недоступно для чтения


Когда я изменял последнюю строку и набрал Продукция. , то у меня было "Видимость", "Доступность", "Заголовок", "Значение", "Имя", "КартинкаЗаголовка", "Раскрыта".
Мне кажется он не знает что такое "ВыгрузитьКолонку".
0
Модератор
Эксперт 1С
3649 / 2878 / 562
Регистрация: 10.03.2011
Сообщений: 11,275
Записей в блоге: 1
21.10.2013, 14:18 14
Цитата Сообщение от so1idsnake Посмотреть сообщение
Мне кажется он не знает что такое "ВыгрузитьКолонку".
По моему это ты не понимаешь что написал =))

Добавлено через 1 минуту
Покажи все параметры запроса

Добавлено через 2 минуты
Цитата Сообщение от so1idsnake Посмотреть сообщение
Документы.РаспределениеМатериаловНаВыпуск.ПолучитьФорму("Фор маДокумента").ЭлементыФормы.ОсновнаяПанель.Страницы.Продукци я.ВыгрузитьКолонку("Заказ")
Для понимания....
Попробуй объяснить что ты тут написал?
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 14:31  [ТС] 15
Цитата Сообщение от Dethmontt Посмотреть сообщение
По моему это ты не понимаешь что написал =))

Добавлено через 1 минуту
Покажи все параметры запроса

Добавлено через 2 минуты

Для понимания....
Попробуй объяснить что ты тут написал?
Это я попытался обратиться к колонке "Заказ" табличной части "продукция". И да, признаю, это я не понимаю что написал)))

Что значит показать все параметры запроса? То есть написать "ТекстЗапроса." и посмотреть что будет после точки? К сожаления ничего не будет...

Или под параметрами запроса подразумевался сам запрос? Если да, то вот он:
Код
ТекстЗапроса = "
	|ВЫБРАТЬ
	|	НезавершенноеПроизводство.ЕстьРасчетСебестоимостиВыпуска,
	|	НезавершенноеПроизводство.Затрата КАК Номенклатура,
	|	НезавершенноеПроизводство.ХарактеристикаЗатраты КАК ХарактеристикаНоменклатуры,
	|	НезавершенноеПроизводство.СерияЗатраты КАК СерияНоменклатуры,
	|	НезавершенноеПроизводство.СтатьяЗатрат,
	|	НезавершенноеПроизводство.НоменклатурнаяГруппа,
	|	НезавершенноеПроизводство.Заказ КАК Заказ,
	|	
	|	НезавершенноеПроизводство.ЕдиницаИзмерения,
	|	НезавершенноеПроизводство.Коэффициент,
	|	
	|	НезавершенноеПроизводство.СчетЗатрат,
	|	НезавершенноеПроизводство.СчетЗатратНУ,
	|	
	|	&Знак * НезавершенноеПроизводство.Количество КАК Количество,
	|	&Знак * НезавершенноеПроизводство.КоличествоБух КАК КоличествоБух,
	|	&Знак * НезавершенноеПроизводство.КоличествоНал КАК КоличествоНал,
	|	
	|	&Знак * НезавершенноеПроизводство.Сумма КАК Сумма,
	|	&Знак * НезавершенноеПроизводство.СуммаБух КАК СуммаБух,
	|	&Знак * НезавершенноеПроизводство.СуммаНал КАК СуммаНал
	|	
	|ИЗ (
	|
	|	//ДляУпрУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваУУ
	|	//ДляУпрУчета //ДляБухУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляБухУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваБУ
	|	//ДляБухУчета //ДляНалУчета ОБЪЕДИНИТЬ ВСЕ
	|	//ДляНалУчета //ТекстЗапросаПоОстаткамНезавершенногоПроизводстваНУ
	|	) КАК НезавершенноеПроизводство
	|
	|ГДЕ
	|	НезавершенноеПроизводство.Заказ В (&Заказы) // это я добавил только что.
	|СГРУППИРОВАТЬ ПО
	|	НезавершенноеПроизводство.ЕстьРасчетСебестоимостиВыпуска,
	|	НезавершенноеПроизводство.Затрата,
	|	НезавершенноеПроизводство.ХарактеристикаЗатраты,
	|	НезавершенноеПроизводство.СерияЗатраты,
	|	НезавершенноеПроизводство.СтатьяЗатрат,
	|	НезавершенноеПроизводство.НоменклатурнаяГруппа,
	|	НезавершенноеПроизводство.Заказ,
	|	
	|	НезавершенноеПроизводство.ЕдиницаИзмерения,
	|	НезавершенноеПроизводство.Коэффициент,
	|	
	|	НезавершенноеПроизводство.СчетЗатрат,
	|	НезавершенноеПроизводство.СчетЗатратНУ,
	|	НезавершенноеПроизводство.ИндексУчета,
	|	
	|	НезавершенноеПроизводство.Количество,
	|	НезавершенноеПроизводство.КоличествоБух,
	|	НезавершенноеПроизводство.КоличествоНал,
	|	
	|	НезавершенноеПроизводство.Сумма,
	|	НезавершенноеПроизводство.СуммаБух,
	|	НезавершенноеПроизводство.СуммаНал
	|		
	|//ТолькоОтрицательныеОстатки ИМЕЮЩИЕ (НезавершенноеПроизводство.Количество < 0
	|//ТолькоОтрицательныеОстатки 	ИЛИ НезавершенноеПроизводство.КоличествоБух < 0
	|//ТолькоОтрицательныеОстатки 	ИЛИ НезавершенноеПроизводство.КоличествоНал < 0)
	|
	|УПОРЯДОЧИТЬ ПО
	|	НезавершенноеПроизводство.ИндексУчета
	|
	|ИТОГИ 
	|	МАКСИМУМ(ЕстьРасчетСебестоимостиВыпуска),
	|	СУММА(Количество),
	|	СУММА(КоличествоБух),
	|	СУММА(КоличествоНал),
	|	СУММА(Сумма),
	|	СУММА(СуммаБух),
	|	СУММА(СуммаНал)
	|ПО
	|	НезавершенноеПроизводство.Затрата,
	|	//Материальные НезавершенноеПроизводство.ХарактеристикаЗатраты,
	|	//Материальные НезавершенноеПроизводство.СерияЗатраты,
	|	НезавершенноеПроизводство.СтатьяЗатрат,
	|	НезавершенноеПроизводство.НоменклатурнаяГруппа,
	|	НезавершенноеПроизводство.Заказ,
	|	//Материальные НезавершенноеПроизводство.ЕдиницаИзмерения,
	|	//Материальные НезавершенноеПроизводство.Коэффициент,
	|	НезавершенноеПроизводство.СчетЗатрат
	|";
0
Модератор
Эксперт 1С
3649 / 2878 / 562
Регистрация: 10.03.2011
Сообщений: 11,275
Записей в блоге: 1
21.10.2013, 15:45 16
В каком контексте запрос выполняется? (Он у тебя где написан? НА форме документа? В общем модуле?)
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 15:49  [ТС] 17
Цитата Сообщение от Dethmontt Посмотреть сообщение
В каком контексте запрос выполняется? (Он у тебя где написан? НА форме документа? В общем модуле?)
Запрос написан в функции которая находится во внешней обработке.
0
Модератор
Эксперт 1С
3649 / 2878 / 562
Регистрация: 10.03.2011
Сообщений: 11,275
Записей в блоге: 1
21.10.2013, 16:27 18
Внешняя обработка является Обработкой по заполнению табличных частей?
Т.е. вызывается через процедуру Инициализировать() ???
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 54
21.10.2013, 17:35  [ТС] 19
Цитата Сообщение от Dethmontt Посмотреть сообщение
Внешняя обработка является Обработкой по заполнению табличных частей?
Т.е. вызывается через процедуру Инициализировать() ???
Да, через процедуру Инициализировать()
0
Модератор
Эксперт 1С
3649 / 2878 / 562
Регистрация: 10.03.2011
Сообщений: 11,275
Записей в блоге: 1
21.10.2013, 20:56 20
Процедура Инициализировать(Объект,ИмяТЧ,НепомнюЭтотПараметр)
//Тут много текста
//................
//................

Запрос.УстановитьПараметр("Заказы",Объект.ИмяТабличнойЧастиПроизводство.ВыгрузитьКолонку("Заказ"));
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2013, 20:56
Помогаю со студенческими работами здесь

Программное заполнение табличной части документа из табличной части справочника
Доброго! Ситуация, поставившая меня в тупик. Имеем 1с 8.2 УФ Имеем справочник &quot;Работ&quot; Имеем...

Заполнение табличной части одного документа из табличной части другого документа
Здравсвуйте. 1С 8.2. Есть документ Приход и документ Расход. Оба документа имеют табличные части -...

Заполнение табличной части одного документа из табличной части этого же документа
Здравсвуйте. 1С 8.2. Есть документ в этом документе 2 табличные части В 1 табличной части...

Строка табличной части (событие)
Здравствуйте. Есть таблица с данными. Подскажите написания кода, что бы при нажатии мышкой по...

Запись первой строки табличной части в в реквизит
Подскажите пожалуйста как программно записать первую строку из табличной части документа в реквизит.

Запрос к табличной части
Всем бодрого времени суток! Помогите новичку составить запрос. Есть документ &quot;Закупка&quot;, в нём...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru