Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6  ОтправитьПечать
Очень популярная тема (более 25 ответов) аналог слова "Все" или "Вошедшие в запрос" (число прочтений - 24191 )
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #45 - 24. Октября 2012 :: 06:16
Печать  
Vlad7131 писал(а) 24. Октября 2012 :: 05:30:
Каким образом?
НайденнаяСтрока=ИТ.НайтиСтроку("Товар,Склад",_сз);
{C:\DB.ADM\PV\ОСТАТКИТОВАРОВ6.ERT(103)}: Индекс с именем Товар,Склад не найден !


После сгруппировать, у тебя 2 индекса в табличке - Товар и Склад.

Соответственно, добавь еще составной индекс и ищи там что хочешь
по двум значениям в этом составном индексе.
  
Наверх
 
IP записан
 
Vlad7131
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 74
Зарегистрирован: 06. Октября 2012
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #46 - 24. Октября 2012 :: 08:27
Печать  
А код можешь написать, как добавить составной индекс?

ИТ.ДобавитьИндекс("_инд","*Тов, *Склад"); Это не то ?
Я эту строку и после группировать ставил, все равно не ищет.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #47 - 24. Октября 2012 :: 08:58
Печать  
Код
Выбрать все
ИТ.Группировать("Товар:&Тов;Склад:Склад", "Остаток",0);
ИТ.ДобавитьИндекс("Вася","*Тов, *Склад");
сз = СоздатьОбъект("СписокЗначений");
сз.Установить("Товар",ТвойТовар);
сз.Установить("Склад",ТвойСклад);

Если ИТ.НайтиСтроку("Вася",сз) >0 Тогда
   ... 

  
Наверх
 
IP записан
 
Vlad7131
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 74
Зарегистрирован: 06. Октября 2012
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #48 - 25. Октября 2012 :: 07:15
Печать  
Подскажите, как соединить две ИТ.
Изначально была ИТ:      
                 Товар      Склад Остаток
                 ====================
                 Краб      Брак      4
                 Овощ      Сроки      5      
                 Краб      Сроки      4
                 Овощ      Терминал 2
                 Краб      Терминал 3
Выгрузил эту ИТ в еще 2 ИТ и свернул:
                                                Краб      Брак      4
     ИТ.Выгрузить(ИТСкл);            Овощ      Сроки      5
     ИТСкл.Свернуть("Склад","")      Овощ      Терминал 2
     --------------------------------------------------
     ИТ.Выгрузить(ИТТов);            Краб      Брак      4
     ИТТов.Свернуть("Тов","");      Овощ      Сроки      5

Нужно эти таблицы ИТСкл и ИТТов объединить между собой, чтобы получилось 6 строк,
добавилась строка с товаром Овощ на складе Брак.
Затем то, что получилось сделать левое соединение с первой ИТ, чтобы в итоге было 6 строк:
по 3 склада на каждый товар, остаток товара Овощ на складе Брак будет 0.

Код соединения выдает ошибку:
ИТСкл.ДобавитьИндекс("Инд_Тов","*Тов");
ИТТов.ПолноеСоединение("Тов", ИТСкл, Инд_Тов, "Склад:Склад");
     Ошибка: Количество колонок соединения в левой и правой таблицах не совпадают!
Подскажите, плз, в чем ошибка, и где можно найти примеры использования соединений.
     
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #49 - 25. Октября 2012 :: 07:19
Печать  
Это .. цель не ясна, а так, смотри в сторону метода Группировать, мот того, и сворачивать тебе ничего не надо.. и левоесоединение не нужно вовсе.
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#group
  
Наверх
 
IP записан
 
Vlad7131
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 74
Зарегистрирован: 06. Октября 2012
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #50 - 25. Октября 2012 :: 08:43
Печать  
В чем все же ошибка, как работать с соединением?
В индексе правой таблицы 2 колонки Тов и Скл
и колонок левой ИТ для поиска тоже две и те же самые.

ИТ.ДобавитьИндекс("ИндексПравойИТ","Тов,Склад");
ИТТов.ЛевоеСоединение("Тов,Склад", ИТ, ИндексПравойИТ, "Остаток");

Выд.ошибка: Количество колонок соединения в левой и правой таблицах не совпадают!
Этод метод вообще как то работает? Можно где то пример посмоьреть с кодом, учебник уже на 40 раз прочитал.
  
Наверх
 
IP записан
 
Vlad7131
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 74
Зарегистрирован: 06. Октября 2012
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #51 - 25. Октября 2012 :: 08:52
Печать  
ИТ с колонками Товар, Товар_Родитель, Склад сформировал, там все товары на всех складах, нет только остатка.
А в другой таблице есть остатки но строк Товар, Склад с нулевыми остатками нет.
Вот и надо бы мне левое соединение первой ИТ со второй.
А уж потом сгруппировать с &, да и вывести с раскладкой по группам справочника Номенклатура.
Вобщем осталось только понять как работает это левое соединение, получается учебника не хватает для этого.
Кто работал, посмотрите, я выше код написал, может я что не так понял из учебника.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #52 - 25. Октября 2012 :: 08:57
Печать  
ИТТов.ЛевоеСоединение("Тов,Склад", ИТ, ИндексПравойИТ, "Тов,Склад");
  
Наверх
 
IP записан
 
Vlad7131
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 74
Зарегистрирован: 06. Октября 2012
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #53 - 25. Октября 2012 :: 09:10
Печать  
Все равно не проходит.

ИТ.ДобавитьИндекс("ИндексПравойИТ","Тов,Склад");
ИТТов.ЛевоеСоединение("Тов,Склад", ИТ, ИндексПравойИТ, "Тов,Склад");
{C:\DB.ADM\PV\ОСТАТКИТОВАРОВ7.ERT(278)}: Количество колонок соединения в левой и правой таблицах не совпадают!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #54 - 25. Октября 2012 :: 09:19
Печать  
Мот того, отказатся от левого соединения..
Проще уж в класс.ИтогиПоГруппировкам загнать свою плоскую ТЗ..
Или уж с Группировать играться
  
Наверх
 
IP записан
 
Vlad7131
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 74
Зарегистрирован: 06. Октября 2012
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #55 - 25. Октября 2012 :: 09:45
Печать  
Спасибо са помощь, обязательно попробую с ИтогамиПоГруппировкам,
примеры бы еще были, простецкие с кодами, а то в учебнике много не нароешь.

Проблему решил как всегда случайно, помучившись.
Вот так не работало, индекс не создавался:
НомерИнд=ИТ.ДобавитьИндекс("_инд","Тов, Склад");
А вот так сработало:
НомерИнд=ИТ.ДобавитьИндекс("_инд","*Тов, *Склад");
Это может потому, что у меня в таблице поля были типизированные
[Тов $Справочник.Номенклатура]. Хотя точно не знаю надо проверять.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #56 - 26. Октября 2012 :: 03:40
Печать  
Код
Выбрать все
Процедура Печать()
...
	оИтогиПоГруппировкам = СоздатьОбъект("Отчет.ИтогиПоГруппировкам");
	оИтогиПоГруппировкам.Инит(Контекст, тзГрп, 1);
	оИтогиПоГруппировкам.ДобавитьКолонкуСуммы("Сумма", 2, оОтчет.стрФорматСуммы());

	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		оИтогиПоГруппировкам.ПередПечатьюСтроки(Таб, ТЗ);
		оИтогиПоГруппировкам.ПослеПечатиСтроки(Таб, ТЗ);
	КонецЦикла;
	оИтогиПоГруппировкам.ПослеПечатиТаблицы(Таб, ТЗ);
...
КонецПроцедуры 




Толи ПередПечатьюСтроки толи ПослеПечатиСтроки вызывает коллбэк ВывестиСекцию:

Код
Выбрать все
Процедура ВывестиСекцию(Т, ТЗ, стрПрефикс, ИмяПоказателя)
	Значение = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, ИмяПоказателя);
	Если ИмяПоказателя = "Документ" Тогда
		ДатаВыплаты	= ТЗ.Документ.ДатаДок;
		Выплачено	= "";
		Основание	= "";
		Если ТЗ.Документ.Вид() = "РасходныйОрдер" Тогда
			Выплачено = СокрЛП(ТЗ.Документ.Выдать);
			Основание = СокрЛП(ТЗ.Документ.Основание);
		КонецЕсли;
		Т.ВывестиСекцию("Документ" + стрДобавкаСекции);
	Иначе
		Т.ВывестиСекцию("Строка" + стрДобавкаСекции);
	КонецЕсли;
КонецПроцедуры 

  
Наверх
 
IP записан
 
Vlad7131
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 74
Зарегистрирован: 06. Октября 2012
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #57 - 26. Октября 2012 :: 06:12
Печать  
А где взять описание этого объекта?
В справке 1С++ в " Дополнительные классы и ЭУ" его нет.
Это уже не 1С++?
Если 1С++ это в какой то степени законченный продукт, есть описание, как с ним работать, то это что за библиотека?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #58 - 26. Октября 2012 :: 07:43
Печать  
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: аналог слова "Все" или "Вошедшие в запрос"
Ответ #59 - 26. Октября 2012 :: 07:48
Печать  
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 
ОтправитьПечать