| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | «  : 10-06-2011 05:26 »  |  | 
 
 Нужно выбрать из документов даты, выбирая самую раннюю, но из тех которые были после начала возникновения задолженности. Например в начале было какое-то сальдо, в какойто момент стало  оборот ДТ= оборот КТ, а после этого началось новое возникновение задолженности - вот нужно выбрать начало возникновения этой самой задолженности.Как это реализовать? Пример:
 Контрагенты    ДебетКредит                ДебетКредит              ДебетКредит
 Рога и копыта                                                   900                                 900
 
 Контрагенты    ДебетКредит                ДебетКредит              ДебетКредит
 Рога и копыта               900                               900
 
 
 Контрагенты    ДебетКредит                ДебетКредит              ДебетКредит               ----  Вот эту дату хочу получить
 Рога и копыта                                                      700                              700
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #1 : 10-06-2011 05:49 »  |  | 
 
 Опиши алгоритм, как его ты видишь, а не только задачу - тогда постараюсь помочь привязать его к 1СРешать на 100% за тебя не буду
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #2 : 10-06-2011 06:12 »  |  | 
 
 ВЫБРАТЬ|Выбор когда ХозрасчетныйОстаткиИОбороты1.Счет.Код=&Счет601001 ТОГДА
 |ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
 |ИНАЧЕ
 | ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
 |КОНЕЦ  КАК Субконто1Наименование,
 |Выбор когда  МИНИМУМ(ХозрасчетныйОстаткиИОбороты1.Период)>Максимум(ХозрасчетныйОстаткиИОбороты4.Период) Тогда
 |     МИНИМУМ(ХозрасчетныйОстаткиИОбороты1.Период)
 |КОНЕЦ  КАК Период
 |
 |
 |        ИЗ
 |    РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Запись, Движения,Счет В ИЕРАРХИИ (&ПланСчетов) , , ) КАК ХозрасчетныйОстаткиИОбороты1
 |           ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Запись, Движения, , , ) КАК ХозрасчетныйОстаткиИОбороты4
 |    ПО      ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование=ХозрасчетныйОстаткиИОбороты4.Субконто2.Наименование
 |    и
 |    ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование=ХозрасчетныйОстаткиИОбороты4.Субконто1.Наименование
 |
 |       и ХозрасчетныйОстаткиИОбороты1.Период=(Выбор когда  ХозрасчетныйОстаткиИОбороты4.СуммаОборотДт=ХозрасчетныйОстаткиИОбороты4.СуммаОборотКт Тогда
 |         ХозрасчетныйОстаткиИОбороты4.Период"
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #3 : 10-06-2011 06:28 »  |  | 
 
 Это алгоритм ? Алгори́тм, от имени учёного аль-Хорезми (перс. خوارزمی [al-Khwārazmī]) — точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #4 : 10-06-2011 06:37 »  |  | 
 
 1.Получаем  все даты документов по контрагенту где СуммаКонечныйОстаток<02. Получаем  все даты документов по контрагенту где СуммаКонечныйОстаток=0
 3.Выбираем максимальную дату из дат полученных в пункте 2.
 4.Отбираем из дат полученных в пункте 1 те, которые больше даты из пункта 3.
 5.Из дат полученных в пункте 4 выбираем минимальную. Конец.
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #5 : 10-06-2011 10:36 »  |  | 
 
 п.2 вызывает сомнение - а если нет такой даты? Дата              Дт       Кт    Сальдо1.1.11 Приход             100       100
 2.1.11 Расход    200               -100
 3.1.11 Приход             300       200
 4.1.11 Расход    400               -200
 5.1.11 Приход             100      -100
 
Что тебе нужно получить в этом случае? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #6 : 10-06-2011 10:50 »  |  | 
 
 В таком случае просто минимальная дата 1.1.11 возникновения задодженности |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #7 : 10-06-2011 13:28 »  |  | 
 
 Тогда алгоритм получается такой:0. Зата задолженности = текущая дата (или пустая - как удобнее)
 1. Выбираем следующую запись с конца (по дате)
 2. Если сальдо записи меньше нуля: Дата задолженности = дата записи, вернуться к п.1
 3. Если сальдо >= 0 - прервать
 4. Имеем дату задолженности с п.2 или п.0
 
 Получится реализовать самостоятельно?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #8 : 11-06-2011 17:59 »  |  | 
 
 пожалуй нет((
 Добавлено через 2 дня, 11 часов, 6 минут и 50 секунд:
 поможете примером?
 |  
						| 
								|  |  
								| « Последнее редактирование: 14-06-2011 05:06 от Sonik » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #9 : 14-06-2011 06:05 »  |  | 
 
 Где-то так: 	ТекстЗапроса ="ВЫБРАТЬ
 |	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
 |	ХозрасчетныйОстаткиИОбороты.Период КАК Период
 |ИЗ
 |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Запись, Движения, Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
 |ГДЕ
 |	ХозрасчетныйОстаткиИОбороты.Субконто1 = &Субконто1
 |
 |УПОРЯДОЧИТЬ ПО
 |	Период УБЫВ";
 Запрос = Новый Запрос(ТекстЗапроса);
 Запрос.Параметры.Вставить("Счет", НужныйСчет);
 Запрос.Параметры.Вставить("Субконто1", ОтборПоСубконто1);
 
 Результат = Запрос.Выполнить();
 Выборка = Результат.Выбрать();
 
 ДатаЗадолженности = '';
 Пока Выборка.Следующий() Цикл
 Если Выборка.СуммаКонечныйОстаток >=0 Тогда
 Прервать;
 КонецЕсли;
 ДатаЗадолженности = Выборка.Период;
 КонецЦикла;
 Сообщить(ДатаЗадолженности);
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #10 :  14-06-2011 09:31 »   |  | 
 
 и получается что при первом же СуммаКонечныйОстаток >=0 запрос заканчивается,и по всем контрагентам я получаю общую дату а не дату для каждого - это не верно.  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #11 : 14-06-2011 10:01 »  |  | 
 
 Sonik, Я тебе показал суть.У меня в запросе стоит отбор по Субконто1 - обычно это контрагент.
 Нужно по всем - сделай предварительный запрос, получи контрагентов с отрицательными остатками, подставь их в отбор запроса, сделай выборку результата не прямую, а по группировке Контрагент.
 С последними двумя пунктами помогу, когда покажешь работающий код для всех предыдущих пунктов.
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #12 : 14-06-2011 11:51 »  |  | 
 
 Добавлено через 55 секунд:ЗапросОС = Новый Запрос("ВЫБРАТЬ
 |ХозрасчетныйОстаткиИОбороты.Субконто1Наименование КАК Субконто1Наименование,
 |ХозрасчетныйОстаткиИОбороты2.Счет,
 |ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
 |ЕстьNULL(ХозрасчетныйОстаткиИОбороты.Период,&Пробел) КАК Период,
 |Выбор когда МАКСИМУМ(ХозрасчетныйОстаткиИОбороты.Период) Есть Null Тогда
 |СУММА(ХозрасчетныйОстаткиИОбороты2.СуммаКонечныйРазвернутыйОстатокДт)
 |ИНАЧЕ СУММА(ХозрасчетныйОстаткиИОбороты2.СуммаКонечныйРазвернутыйОстатокДт)/2
 |КОНЕЦ КАК СуммаКонечныйРазвернутыйОстатокДт,
 |Выбор когда МАКСИМУМ(ХозрасчетныйОстаткиИОбороты.Период) Есть Null Тогда
 |СУММА(ХозрасчетныйОстаткиИОбороты2.СуммаКонечныйРазвернутыйОстатокКт)
 |ИНАЧЕ СУММА(ХозрасчетныйОстаткиИОбороты2.СуммаКонечныйРазвернутыйОстатокКт)/2
 |КОНЕЦ КАК СуммаКонечныйРазвернутыйОстатокКт
 |ИЗ
 |(ВЫБРАТЬ РАЗЛИЧНЫЕ
 |Выбор когда ХозрасчетныйОстаткиИОбороты1.Счет.Код=&Счет601001 ТОГДА
 |ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
 |ИНАЧЕ
 | ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
 |КОНЕЦ  КАК Субконто1Наименование,
 |   ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
 |	ХозрасчетныйОстаткиИОбороты1.Период КАК Период
 |
 |		ИЗ
 |	РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Запись, Движения,Счет В ИЕРАРХИИ (&ПланСчетов) , , ) КАК ХозрасчетныйОстаткиИОбороты1
 |
 |	СГРУППИРОВАТЬ ПО
 |	Выбор когда ХозрасчетныйОстаткиИОбороты1.Счет.Код=&Счет601001 ТОГДА
 | ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
 |ИНАЧЕ
 | ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
 |КОНЕЦ,
 | ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток,
 | ХозрасчетныйОстаткиИОбороты1.Период
 |ОБЪЕДИНИТЬ
 |ВЫБРАТЬ РАЗЛИЧНЫЕ
 |Выбор когда ХозрасчетныйОстаткиИОбороты1.Счет.Код=&Счет601001 ТОГДА
 | ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
 |ИНАЧЕ
 | ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
 |КОНЕЦ  КАК Субконто1Наименование,
 |	NULL,
 |	NULL
 |
 |ИЗ
 |	РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало2, &ПериодКонец, период, Движения,Счет В ИЕРАРХИИ (&ПланСчетов) , , ) КАК ХозрасчетныйОстаткиИОбороты1
 |
 |	СГРУППИРОВАТЬ ПО
 |	Выбор когда ХозрасчетныйОстаткиИОбороты1.Счет.Код=&Счет601001 ТОГДА
 | ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
 |ИНАЧЕ
 | ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
 |КОНЕЦ) КАК ХозрасчетныйОстаткиИОбороты
 |     		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Период, Движения,Счет В ИЕРАРХИИ (&ПланСчетов) , , ) КАК ХозрасчетныйОстаткиИОбороты2
 |	ПО ХозрасчетныйОстаткиИОбороты.Субконто1Наименование =(Выбор когда ХозрасчетныйОстаткиИОбороты2.Счет.Код=&Счет601001 ТОГДА
 | ХозрасчетныйОстаткиИОбороты2.Субконто2.Наименование
 |ИНАЧЕ
 |ХозрасчетныйОстаткиИОбороты2.Субконто1.Наименование
 |КОНЕЦ)
 |
 |	СГРУППИРОВАТЬ ПО
 |ХозрасчетныйОстаткиИОбороты.Субконто1Наименование,
 |ХозрасчетныйОстаткиИОбороты2.Счет,
 |ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
 |ХозрасчетныйОстаткиИОбороты.Период
 |
 |УПОРЯДОЧИТЬ ПО
 |Субконто1Наименование,
 |Период убыв
 |ИТОГИ
 |СУММА(СуммаКонечныйРазвернутыйОстатокДт),
 |СУММА(СуммаКонечныйРазвернутыйОстатокКт)
 |ПО
 |ОБЩИЕ");
 
 ЗапросОС.УстановитьПараметр("ПериодНачало",Дата(ДатаНачала));
 ЗапросОС.УстановитьПараметр("ПериодКонец",Дата(ДатаОкончания));
 ЗапросОС.УстановитьПараметр("ПериодНачало2",Дата("31.12.2009 00:00:00"));
 ЗапросОС.УстановитьПараметр("ПериодКонец2",Дата("31.12.2009 23:59:59"));
 ЗапросОС.УстановитьПараметр("Счет601001","62.10.01");
 ЗапросОС.УстановитьПараметр("Пробел","---");
 
 Счет=Новый массив;
 Если Кредиторы=Истина и Дебиторы=Ложь Тогда
 Счет.Добавить(ПланыСчетов.Основной.НайтиПоКоду("60.10.01.05"));
 Счет.Добавить(ПланыСчетов.Основной.НайтиПоКоду("60.10.02.02"));
 ИначеЕсли
 Дебиторы=Истина и Кредиторы=Ложь Тогда
 Счет.Добавить(ПланыСчетов.Основной.НайтиПоКоду("62.10.01"));
 ИначеЕсли Кредиторы=Истина и Дебиторы=Истина  Тогда
 
 Счет.Добавить(ПланыСчетов.Основной.НайтиПоКоду("60.10.01.05"));
 Счет.Добавить(ПланыСчетов.Основной.НайтиПоКоду("60.10.02.02"));
 Счет.Добавить(ПланыСчетов.Основной.НайтиПоКоду("62.10.01"));
 Иначе
 Сообщить("Укажите задолженность");
 
 КонецЕсли;
 ЗапросОС.УстановитьПараметр("ПланСчетов",Счет);
 
 Субконто1Наименование=Новый массив;
 СуммаКонечныйРазвернутыйОстатокДт=Новый массив;
 СуммаКонечныйРазвернутыйОстатокКт=Новый массив;
 Период=Новый массив;
 
 ВыборкаОС = ЗапросОС.Выполнить().Выбрать();
 ДатаЗадолженности="";
 Пока ВыборкаОС.Следующий()Цикл
 Если ВыборкаОС.СуммаКонечныйОстаток =0 Тогда
 Прервать;
 КонецЕсли;
 
 ДатаЗадолженности=ВыборкаОС.Период;
 Субконто1Наименование.Добавить(ВыборкаОС.Субконто1Наименование);
 СуммаКонечныйРазвернутыйОстатокДт.Добавить(ВыборкаОС.СуммаКонечныйРазвернутыйОстатокДт);
 СуммаКонечныйРазвернутыйОстатокКт.Добавить(ВыборкаОС.СуммаКонечныйРазвернутыйОстатокКт);
 КонецЦикла;
 Период.Добавить(ДатаЗадолженности);
 ОбластьВидЗатрат = Макет.ПолучитьОбласть("ВидЗатрат");
 Для й=1 По Субконто1Наименование.Количество()-1 Цикл
 Если Период[й]=NULL или Период[й]=Неопределено или Период[й]="" Тогда
 ОбластьВидЗатрат.Параметры.Период="---";
 Иначе
 ОбластьВидЗатрат.Параметры.Период=Формат(Период[й],"ДФ=dd.MM.yyyy");
 КонецЕсли;
 ДокументРезультат.Вывести(ОбластьВидЗатрат);
 КонецЦикла;
 
 
Вот что получил, как быть дальше? |  
						| 
								|  |  
								| « Последнее редактирование: 14-06-2011 12:38 от Sonik » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #13 : 14-06-2011 15:40 »  |  | 
 
 Пошли по порядку: сделай предварительный запрос, получи контрагентов с отрицательными остатками
 где? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #15 : 15-06-2011 07:32 »  |  | 
 
 Что значит эта запись:"Выбор когда  ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток<0 Тогда
 |   ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток КОНЕЦ"
 ?
 Почему это условие не вынесено в раздел "ГДЕ"?
 Как ты дальше работаешь с результатом, чтобы получить список?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #16 : 15-06-2011 07:51 »  |  | 
 
 Добавлено через 3 минуты и 33 секунды:ВЫБРАТЬ РАЗЛИЧНЫЕВЫБОР
 КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01"
 ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
 ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
 КОНЕЦ КАК Субконто1Наименование
 ИЗ
 РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Период, Движения, , , ) КАК ХозрасчетныйОстаткиИОбороты1
 ГДЕ
 ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток < 0
 СГРУППИРОВАТЬ ПО
 ВЫБОР
 КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01"
 ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
 ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
 КОНЕЦ,
 ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток
 УПОРЯДОЧИТЬ ПО
 Субконто1Наименование
Так лучше? дальше работаю с массивом  |  
						| 
								|  |  
								| « Последнее редактирование: 15-06-2011 07:54 от Sonik » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #17 : 15-06-2011 08:40 »  |  | 
 
 Лучше, но не намного.
 > дальше работаю с массивом
 Как? Если в запросе у тебя - Наименования?
 Тебе нужно получить ссылки на контрагентов, а не их наименования....
 
 Кроме того - обороты тебе не нужны, т.е. запрос должен быть по таблице РегистрБухгалтерии.Основной.Остатки()
 И отбор должен быть по счетам - зачем тебе запрос по всем счетам (фин результаты, ОС, ДС, ...)?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #18 : 15-06-2011 09:50 »  |  | 
 
 в таблице Основная регистра бухгалтерии у меня нет поля "СуммаКонечныйОстаток"ВЫБРАТЬ РАЗЛИЧНЫЕ
 ВЫБОР
 КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01"
 ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Ссылка
 ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка
 КОНЕЦ КАК Субконто1Ссылка
 ИЗ
 РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Период, Движения, Счет В ИЕРАРХИИ (&ПланСчетов)
 , , ) КАК ХозрасчетныйОстаткиИОбороты1
 
 ГДЕ
 ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток < 0
 
 СГРУППИРОВАТЬ ПО
 ВЫБОР
 КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01"
 ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Ссылка
 ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка
 КОНЕЦ,
 ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток
 УПОРЯДОЧИТЬ ПО
 Субконто1Ссылка
 
 
 Субконто1Ссылка =Новый массив;
 Выборка = Запрос.Выполнить().Выбрать();
 Пока Выборка.Следующий()Цикл
 Субконто1Ссылка.Добавить(Выборка. Субконто1Ссылка);
 КонецЦикла;
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 15-06-2011 10:18 от Sonik » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #19 : 15-06-2011 10:20 »  |  | 
 
 Не РегистрБухгалтерии.Основной, а РегистрБухгалтерии.Основной.Остатки (а ты использовал РегистрБухгалтерии.Основной.ОстаткиИОбороты)
 P.S. не забывай пользоваться [code][/code]
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #20 : 15-06-2011 11:22 »  |  | 
 
 Добавлено через 16 часов, 54 минуты и 6 секунд:ВЫБРАТЬ РАЗЛИЧНЫЕВЫБОР
 КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01"
 ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Ссылка
 ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка
 КОНЕЦ КАК Субконто1Ссылка
 ИЗ
 РегистрБухгалтерии.Основной.Остатки(&ПериодНачало, Счет В ИЕРАРХИИ (&ПланСчетов) , , ) КАК ХозрасчетныйОстаткиИОбороты1
 ГДЕ
 ХозрасчетныйОстаткиИОбороты1.СуммаОстаток < 0
 СГРУППИРОВАТЬ ПО
 ВЫБОР
 КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01"
 ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Ссылка
 ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка
 КОНЕЦ,
 ХозрасчетныйОстаткиИОбороты1.СуммаОстаток
 УПОРЯДОЧИТЬ ПО
 Субконто1Ссылка
Так?? |  
						| 
								|  |  
								| « Последнее редактирование: 16-06-2011 04:16 от Sonik » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #21 : 16-06-2011 06:44 »  |  | 
 
 Выведи результат выборки через Сообщить и сравни с результатом ОСВ - получил правильный результат?Блок "СГРУППИРОВАТЬ ПО..." ИМХО лишний
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #22 : 16-06-2011 07:58 »  |  | 
 
 получил, контрагенты с СуммаОстаток<0 и их количество совпадают. Что дальше? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #23 : 16-06-2011 08:16 »  |  | 
 
 После этого получим приблизительно следующую процедуру: ТекстЗапроса ="ВЫБРАТЬ
 |	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
 |	ХозрасчетныйОстаткиИОбороты.Период КАК Период
 |ИЗ
 |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Запись, Движения, Счет В ИЕРАРХИИ (&ПланСчетов), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты), ) КАК ХозрасчетныйОстаткиИОбороты
 |ГДЕ
 |	ХозрасчетныйОстаткиИОбороты.Субконто1 = &Субконто1
 |
 |СГРУППИРОВАТЬ ПО
 |	ХозрасчетныйОстаткиИОбороты.Субконто1,
 |	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
 |	ХозрасчетныйОстаткиИОбороты.Период
 |
 |УПОРЯДОЧИТЬ ПО
 |	Период УБЫВ";
 Запрос = Новый Запрос(ТекстЗапроса);
 Запрос.Параметры.Вставить("ПланСчетов", МассивСчетов);
 Запрос.Параметры.Вставить("Субконто1", МассивКонтрагентов);
 
 Результат = Запрос.Выполнить();
 ВыборкаКонтрагент = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Субконто1");
 
 Задолженности = Новый Соответствие;
 Пока ВыборкаКонтрагент.Следующий() Цикл
 ВыборкаДвижения = ВыборкаКонтрагент.Выбрать();
 ДатаЗадолженности = '';
 Пока ВыборкаДвижения.Следующий() Цикл
 Если ВыборкаДвижения.СуммаКонечныйОстаток >=0 Тогда
 Прервать;
 КонецЕсли;
 ДатаЗадолженности = ВыборкаДвижения.Период;
 КонецЦикла;
 Задолженности.Вставить(ВыборкаКонтрагент.Субконто1, ДатаЗадолженности);
 КонецЦикла;
 
 Для каждого Эл Из Задолженности Цикл
 Сообщить(""+Эл.Ключ+": "+Эл.Значение);
 КонецЦикла;
ПробуйДобавлено через 2 минуты и 56 секунд:Внимание: поскольку мы в параметрах ХозрасчетныйОстаткиИОбороты указываем вид субконто (ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)), то всегда получаем Субконто1 этого вида, независимо от того, какое оно на самом деле по счету в плане счетов |  
						| 
								|  |  
								| « Последнее редактирование: 16-06-2011 08:19 от Kivals » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #24 : 16-06-2011 10:07 »  |  | 
 
 Выдает ошибку: Неверные параметры в операции сравнения. Нельзя сравнивать полянеограниченной длины и поля несовместимых типов.
 ХозрасчетныйОстаткиИОбороты.Субконто1<<?>>=&Субконто1. То есть получается я пытаюсь сравнить значение и весь массив, как быть?
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #25 : 16-06-2011 14:01 »  |  | 
 
 Sonik, подумай сам. Там должна быть другая операция сравнения |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sonik 
								Интересующийся    Offline | 
								|  | « Ответ #26 : 20-06-2011 09:05 »  |  | 
 
 все вроде получилось))чтобы работало, добавил "Субконто1"  |ИТОГИ|СУММА(СуммаКонечныйОстаток)
 |ПО
 |ОБЩИЕ,Субконто1"
а строчку вообще убрал из запроса         |	 Где|    ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка=&Субконто1
спасибо огроменное! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #27 : 20-06-2011 10:49 »  |  | 
 
 В этом случае тебе выдаст список из всех контрагентов. Условие нужно было сделать: ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка В(&Субконто1) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |