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.Получаем все даты документов по контрагенту где СуммаКонечныйОстаток<0 2. Получаем все даты документов по контрагенту где СуммаКонечныйОстаток=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 » |
|
ЗапросОС = Новый Запрос( "ВЫБРАТЬ |ХозрасчетныйОстаткиИОбороты.Субконто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"); КонецЕсли; ДокументРезультат.Вывести(ОбластьВидЗатрат); КонецЦикла;
Добавлено через 55 секунд:Вот что получил, как быть дальше?
|
|
« Последнее редактирование: 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 » |
|
ВЫБРАТЬ РАЗЛИЧНЫЕ ВЫБОР КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01" ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование КОНЕЦ КАК Субконто1Наименование ИЗ РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Период, Движения, , , ) КАК ХозрасчетныйОстаткиИОбороты1 ГДЕ ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток < 0 СГРУППИРОВАТЬ ПО ВЫБОР КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01" ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование КОНЕЦ, ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток УПОРЯДОЧИТЬ ПО Субконто1Наименование Добавлено через 3 минуты и 33 секунды:Так лучше? дальше работаю с массивом
|
|
« Последнее редактирование: 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 » |
|
ВЫБРАТЬ РАЗЛИЧНЫЕ ВЫБОР КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01" ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Ссылка ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка КОНЕЦ КАК Субконто1Ссылка ИЗ РегистрБухгалтерии.Основной.Остатки(&ПериодНачало, Счет В ИЕРАРХИИ (&ПланСчетов) , , ) КАК ХозрасчетныйОстаткиИОбороты1 ГДЕ ХозрасчетныйОстаткиИОбороты1.СуммаОстаток < 0 СГРУППИРОВАТЬ ПО ВЫБОР КОГДА ХозрасчетныйОстаткиИОбороты1.Счет.Код = "62.10.01" ТОГДА ХозрасчетныйОстаткиИОбороты1.Субконто2.Ссылка ИНАЧЕ ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка КОНЕЦ, ХозрасчетныйОстаткиИОбороты1.СуммаОстаток УПОРЯДОЧИТЬ ПО Субконто1Ссылка Добавлено через 16 часов, 54 минуты и 6 секунд:Так??
|
|
« Последнее редактирование: 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)
|
|
|
Записан
|
|
|
|
|