Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Дата возникновения задолженности  (Прочитано 37927 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Sonik
Интересующийся

ru
Offline Offline

« : 10-06-2011 05:26 » 

Нужно выбрать из документов даты, выбирая самую раннюю, но из тех которые были после начала возникновения задолженности. Например в начале было какое-то сальдо, в какойто момент стало  оборот ДТ= оборот КТ, а после этого началось новое возникновение задолженности - вот нужно выбрать начало возникновения этой самой задолженности.Как это реализовать? Пример:

Контрагенты    ДебетКредит                ДебетКредит              ДебетКредит
Рога и копыта                                                   900                                 900

Контрагенты    ДебетКредит                ДебетКредит              ДебетКредит
Рога и копыта               900                               900


Контрагенты    ДебетКредит                ДебетКредит              ДебетКредит               ----  Вот эту дату хочу получить
Рога и копыта                                                      700                              700
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-06-2011 05:49 » 

Опиши алгоритм, как его ты видишь, а не только задачу - тогда постараюсь помочь привязать его к 1С
Решать на 100% за тебя не буду
Записан
Sonik
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 10-06-2011 06:28 » 

Это алгоритм?

Цитата
Алгори́тм, от имени учёного аль-Хорезми (перс. خوارزمی‎ [al-Khwārazmī]) — точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время.
Записан
Sonik
Интересующийся

ru
Offline Offline

« Ответ #4 : 10-06-2011 06:37 » 

1.Получаем  все даты документов по контрагенту где СуммаКонечныйОстаток<0
2. Получаем  все даты документов по контрагенту где СуммаКонечныйОстаток=0
3.Выбираем максимальную дату из дат полученных в пункте 2.
4.Отбираем из дат полученных в пункте 1 те, которые больше даты из пункта 3.
5.Из дат полученных в пункте 4 выбираем минимальную. Конец.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #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
Интересующийся

ru
Offline Offline

« Ответ #6 : 10-06-2011 10:50 » 

В таком случае просто минимальная дата 1.1.11 возникновения задодженности
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 10-06-2011 13:28 » 

Тогда алгоритм получается такой:
0. Зата задолженности = текущая дата (или пустая - как удобнее)
1. Выбираем следующую запись с конца (по дате)
2. Если сальдо записи меньше нуля: Дата задолженности = дата записи, вернуться к п.1
3. Если сальдо >= 0 - прервать
4. Имеем дату задолженности с п.2 или п.0

Получится реализовать самостоятельно?
Записан
Sonik
Интересующийся

ru
Offline Offline

« Ответ #8 : 11-06-2011 17:59 » 

пожалуй нет((

Добавлено через 2 дня, 11 часов, 6 минут и 50 секунд:
поможете примером?
« Последнее редактирование: 14-06-2011 05:06 от Sonik » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 14-06-2011 06:05 » 

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

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

ДатаЗадолженности = '';
Пока Выборка.Следующий() Цикл
Если Выборка.СуммаКонечныйОстаток >=0 Тогда
Прервать;
КонецЕсли;
ДатаЗадолженности = Выборка.Период;
КонецЦикла;
Сообщить(ДатаЗадолженности);
Записан
Sonik
Интересующийся

ru
Offline Offline

« Ответ #10 : 14-06-2011 09:31 » new

и получается что при первом же СуммаКонечныйОстаток >=0 запрос заканчивается,и по всем контрагентам я получаю общую дату а не дату для каждого - это не верно.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 14-06-2011 10:01 » 

Sonik, Я тебе показал суть.
У меня в запросе стоит отбор по Субконто1 - обычно это контрагент.
Нужно по всем - сделай предварительный запрос, получи контрагентов с отрицательными остатками, подставь их в отбор запроса, сделай выборку результата не прямую, а по группировке Контрагент.
С последними двумя пунктами помогу, когда покажешь работающий код для всех предыдущих пунктов.
Записан
Sonik
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 14-06-2011 15:40 » 

Пошли по порядку:
Цитата
сделай предварительный запрос, получи контрагентов с отрицательными остатками
где?
Записан
Sonik
Интересующийся

ru
Offline Offline

« Ответ #14 : 15-06-2011 07:17 » 

Код:
ЗапросОС = Новый Запрос(
"ВЫБРАТЬ
|Выбор когда ХозрасчетныйОстаткиИОбороты1.Счет.Код=&Счет601001 ТОГДА
|ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
|ИНАЧЕ
| ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
|КОНЕЦ  КАК Субконто1Наименование,
        |Выбор когда  ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток<0 Тогда
|   ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток КОНЕЦ КАК СуммаКонечныйОстаток
| ИЗ
| РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ПериодНачало, &ПериодКонец, Запись, Движения,Счет В ИЕРАРХИИ (&ПланСчетов) , , ) КАК ХозрасчетныйОстаткиИОбороты1
|
   | СГРУППИРОВАТЬ ПО
        |Выбор когда ХозрасчетныйОстаткиИОбороты1.Счет.Код=&Счет601001 ТОГДА
|ХозрасчетныйОстаткиИОбороты1.Субконто2.Наименование
|ИНАЧЕ
| ХозрасчетныйОстаткиИОбороты1.Субконто1.Наименование
|КОНЕЦ,  
   |Выбор когда  ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток<0 Тогда
|   ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток КОНЕЦ
        |УПОРЯДОЧИТЬ ПО
|Субконто1Наименование
|ИТОГИ
|СУММА(СуммаКонечныйОстаток)
        |ПО
|ОБЩИЕ");
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 15-06-2011 07:32 » 

Что значит эта запись:
"Выбор когда  ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток<0 Тогда
   |   ХозрасчетныйОстаткиИОбороты1.СуммаКонечныйОстаток КОНЕЦ"
?
Почему это условие не вынесено в раздел "ГДЕ"?
Как ты дальше работаешь с результатом, чтобы получить список?
Записан
Sonik
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 15-06-2011 08:40 » 

Лучше, но не намного.

> дальше работаю с массивом
Как? Если в запросе у тебя - Наименования?
Тебе нужно получить ссылки на контрагентов, а не их наименования....

Кроме того - обороты тебе не нужны, т.е. запрос должен быть по таблице РегистрБухгалтерии.Основной.Остатки()
И отбор должен быть по счетам - зачем тебе запрос по всем счетам (фин результаты, ОС, ДС, ...)?
Записан
Sonik
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 15-06-2011 10:20 » 

Не РегистрБухгалтерии.Основной, а РегистрБухгалтерии.Основной.Остатки (а ты использовал РегистрБухгалтерии.Основной.ОстаткиИОбороты)

P.S. не забывай пользоваться [code][/code]
Записан
Sonik
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 16-06-2011 06:44 » 

Выведи результат выборки через Сообщить и сравни с результатом ОСВ - получил правильный результат?
Блок "СГРУППИРОВАТЬ ПО..." ИМХО лишний
Записан
Sonik
Интересующийся

ru
Offline Offline

« Ответ #22 : 16-06-2011 07:58 » 

получил, контрагенты с СуммаОстаток<0 и их количество совпадают. Что дальше?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 16-06-2011 08:16 » 

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

Результат = Запрос.Выполнить();
ВыборкаКонтрагент = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Субконто1");

Задолженности = Новый Соответствие;
Пока ВыборкаКонтрагент.Следующий() Цикл
ВыборкаДвижения = ВыборкаКонтрагент.Выбрать();
ДатаЗадолженности = '';
Пока ВыборкаДвижения.Следующий() Цикл
Если ВыборкаДвижения.СуммаКонечныйОстаток >=0 Тогда
Прервать;
КонецЕсли;
ДатаЗадолженности = ВыборкаДвижения.Период;
КонецЦикла;
Задолженности.Вставить(ВыборкаКонтрагент.Субконто1, ДатаЗадолженности);
КонецЦикла;

Для каждого Эл Из Задолженности Цикл
Сообщить(""+Эл.Ключ+": "+Эл.Значение);
КонецЦикла;

Пробуй

Добавлено через 2 минуты и 56 секунд:
Внимание: поскольку мы в параметрах ХозрасчетныйОстаткиИОбороты указываем вид субконто (ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)), то всегда получаем Субконто1 этого вида, независимо от того, какое оно на самом деле по счету в плане счетов
« Последнее редактирование: 16-06-2011 08:19 от Kivals » Записан
Sonik
Интересующийся

ru
Offline Offline

« Ответ #24 : 16-06-2011 10:07 » 

Выдает ошибку: Неверные параметры в операции сравнения. Нельзя сравнивать поля
 неограниченной длины и поля несовместимых типов.
ХозрасчетныйОстаткиИОбороты.Субконто1<<?>>=&Субконто1. То есть получается я пытаюсь сравнить значение и весь массив, как быть?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #25 : 16-06-2011 14:01 » 

Sonik, подумай сам. Там должна быть другая операция сравнения
Записан
Sonik
Интересующийся

ru
Offline Offline

« Ответ #26 : 20-06-2011 09:05 » 

все вроде получилось))чтобы работало, добавил "Субконто1"
        
Код:
|ИТОГИ
|СУММА(СуммаКонечныйОстаток)
|ПО
|ОБЩИЕ,Субконто1"

        
а строчку вообще убрал из запроса
 
Код:
       |	 Где
|    ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка=&Субконто1


спасибо огроменное!
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 20-06-2011 10:49 » 

В этом случае тебе выдаст список из всех контрагентов.
Условие нужно было сделать:
Код:
ХозрасчетныйОстаткиИОбороты1.Субконто1.Ссылка В(&Субконто1)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines