| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | «  : 12-11-2013 09:43 »  |  | 
 
 Всем привет. Помогите разобраться: в документе ЗаявкаНаПоставку есть ТабЧ, которая содержит инфу по счетам (Инвойсам).  Соответственно регистрируется это все в регистре накоплений ОборотыДенежныхСредств. Инвойс может быть оплачен (Приход,соот-но нужна СуммаПриход) и неоплачен (Расход,соот-но нужна СуммаРасход). В заявке может быть как оплаченные так и неоплаченные Инвойсы. Код: ВЫБРАТЬОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход,
 ОборотыДенежныхСредствОстаткиИОбороты.СуммаРасход,
 ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
 ОборотыДенежныхСредствОстаткиИОбороты.Период
 ИЗ
 Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
 ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
 ГДЕ
 (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
 И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
 И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты
 ИТОГИ ПО
 Заявка
 
в результате получаю таблицу СуммаРасход, а хотелось бы СуммаРасход(что хочется). |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #1 : 12-11-2013 09:44 »  |  | 
 
 сорри |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #2 : 12-11-2013 09:49 »  |  | 
 
 пробовал ч\з объединить. ВЫБРАТЬОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход,
 ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
 ОборотыДенежныхСредствОстаткиИОбороты.Период
 ИЗ
 Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
 ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
 ГДЕ
 (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
 И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
 И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты
 
 ОБЪЕДИНИТЬ ВСЕ
 
 ВЫБРАТЬ
 ОборотыДенежныхСредствОстаткиИОбороты.СуммаРасход,
 ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка,
 ОборотыДенежныхСредствОстаткиИОбороты.Период
 ИЗ
 Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
 ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
 ГДЕ
 (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
 И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
 И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты
 ИТОГИ ПО
 Заявка
 
получил СуммаРасход(объединение) |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #3 : 12-11-2013 09:51 »  |  | 
 
 ч\з пакетный ВЫБРАТЬОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход,
 ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
 ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
 ОборотыДенежныхСредствОстаткиИОбороты.Период
 ПОМЕСТИТЬ Приход
 ИЗ
 Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
 ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
 ГДЕ
 (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
 И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
 ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
 И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
 И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты
 ;
 
 ////////////////////////////////////////////////////////////////////////////////
 
 ВЫБРАТЬ
 ОборотыДенежныхСредствОстаткиИОбороты.СуммаРасход,
 Приход.СуммаПриход,
 Приход.Заявка КАК Заявка,
 Приход.Инвойс КАК Инвойс,
 Приход.НомерЗаказ,
 Приход.Период
 ИЗ
 РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Приход КАК Приход
 ПО ОборотыДенежныхСредствОстаткиИОбороты.Заявка = Приход.Заявка
 ИТОГИ ПО
 Заявка
 
результат  |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #4 : 13-11-2013 08:41 »  |  | 
 
 jonik_joker, нет желания выкачивать все варианты и разбираться что там отличчается.Напиши конкретный вопрос: что ты не можешь получить (или что не так)
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #5 : 13-11-2013 20:36 »  |  | 
 
 Kivals,  в результате выполнения запроса получается таблица вида
 СуммПриход СуммРасход Инвойс
 расх3
 расх2
 расх1
 прих1                               инв1
 прих2                               инв2
 
 прих1=расх1,прих2=расх2
 
 хотелось бы получить
 
 СуммПриход СуммРасход Инвойс
 расх3
 прих1                               инв1
 прих2                               инв2
 
 
 Добавлено через 1 минуту и 2 секунды:
 но сойдет и
 
 СуммПриход СуммРасход Инвойс
 расх3
 прих1           расх1           инв1
 прих2           расх2           инв2
 
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 13-11-2013 20:37 от jonik_joker » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #6 : 14-11-2013 18:36 »  |  | 
 
 По какому признаку у теб связаны "прих1=расх1,прих2=расх2" ?В регистре ОборотыДенежныхСредств есть измерение Инвойс ?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #7 : 18-11-2013 09:58 »  |  | 
 
 спасибо,сделал так:выгрузил результат запроса в 2 таблицы значений потом объединил. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #8 : 18-11-2013 11:23 »  |  | 
 
 Вывод: свою задачу решил, с запросами так и не разобрался |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #9 : 18-11-2013 18:40 »  |  | 
 
 к сожалению, проще не получается: В регистре ОборотыДенежныхСредств есть измерение Инвойс ? измерение то есть, но оно заполняется только для регистра прихода. По какому признаку у теб связаны "прих1=расх1,прих2=расх2" ? прих - кол-во поступивших ден.средств, расх - кол-во ден. средств на изготовление.  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #10 : 19-11-2013 11:28 »  |  | 
 
 jonik_joker, если ты каким-то образом объединил данные в таблицах - значит условие есть, нужно с ним правильно работать в запросах. Если запрос получается слишком сложным или тормозит, а получаемые данные это необходимый результат от ввода документов - значит нужно менять (дорабатывать) структуру данных.Почему измерение Инвойс не заполняется для расхода? Если будет 2 инвойса с одинаковыми суммами - кк ты с ними разберешься?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #11 : 25-11-2013 19:45 »  |  | 
 
 Kivals, запрос и правда все в себя вобрал: 3 временные таблицы, вложенный и 4 пакетных запроса, в конце последнего - объединение 2 врем. таб. Короче развлекся как мог.  Если запрос получается слишком сложным или тормозит, а получаемые данные это необходимый результат от ввода документов - значит нужно менять (дорабатывать) структуру данных. Хотелось бы,но эта прерогатива для меня в перспективе. Почему измерение Инвойс не заполняется для расхода? Так написан конструктор движений для расхода, туда детально не заглядывал, главное результат - измерение Инвойс не заполняется. Если будет 2 инвойса с одинаковыми суммами - кк ты с ними разберешься? По номеру |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #12 : 25-11-2013 20:02 »  |  | 
 
 Kivals,  не знаю в этой теме продолжать или новую начать...ладно, попробуем здесь начать: как писал выше я соединил 2 ТЗ в 3-ю посредством периода, т.е. отсортировал каждую таблицу по периоду и посредством циклов сравнивал строчку одной ТЗ с другой. Что такое период для каждой из таблиц : для таблицы прихода это дата прихода денежных средств, для таблицы расхода - соответственно дата производства. Сначала изготавливаем(ДатаРасхода), потом отгружаем(ДатаПрихода), отсюда, к примеру, для 1-го инвойса в заявке получаем приход-расход и т.д. И все чудесно, пока тестировал отчет мне попадались только заявки, где не оплачен был последний по дате производства (!) инвойс в заявке, но вот незадача...  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #13 : 25-11-2013 20:13 »  |  | 
 
 а если не оплачен инвойс в середине? получается после сортировки по периоду строка инвойса без оплаты табрасхода присоединится к строке табприхода, но уже следующего оплаченного инвойса, что неверно...сделал сортировку в каждой ТЗ по номеруинвойса,что более-менее приблизило меня к решению,теперь вопрос:  как после нахождения нужного неоплаченного инвойса при сравнении строк этих таблиц сдвинуть строку с уже оплаченным инвойсом табприход вниз, чтобы восстановить порядок? пробовал метод Сдвинуть() , но выдается ошибка Неправильное смещение внутри коллекциискорее всего неправильно понимаю метод |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| jonik_joker 
								Участник    Offline | 
								|  | « Ответ #14 : 26-11-2013 03:53 »  |  | 
 
 все, сам разобрался. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #15 :  27-11-2013 09:47 »   |  | 
 
 jonik_joker, ты будешь постоянно натыкаться на какие-то проблемы в связи данных, пока не сделаешь конкретную связь между таблицами (в твоем случае напрашивается по инвойсу)ИМХО инвойс должен заполнятся при расходе, если это не так - значит это баг. Если не можешь сам это сделать по причине политики разработки - сообщи ответственным за эти движения.
 Если дело не в политике и ты сам полностью отвечаешь за конфигурацию - тогда пытайся разобраться почему не заполняется.
 
 Главная суть: весь программный анализ должен идти при проведении документов (сохранении данных), в отчетах должны работать только запросы. Тогда все необходимые отчеты будут на раз-два строиться с помощью СКД.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |