Имя: Пароль:
1C
1С v8
не выдает остатки
0 gsn
 
15.02.12
10:27
Привет всем
я пишу свою конфигурацию в 1с 8.2

и у меня есть  РегистрыНакопления  под названием ВзаиморасчетыСПокупателями   остаток
у него есть измерения: Контрагент и ДоговораКонтрагентов
ресурсы: сумма

в которой записывается при приходе его долг , при расходе его выплату


я написал свою  процедуру


&НаСервере
Функция ДолгПокупателя(Дата, Контрагент, ДоговораКонтрагентов)
   
   //Возвращает общее количество номенклатуры
   
   Фильтр = Новый Структура();
   Фильтр.Вставить("Контрагент", Контрагент);
   Фильтр.Вставить("ДоговораКонтрагентов", ДоговораКонтрагентов);
   
   ТекущийОстаток=
       РегистрыНакопления.ВзаиморасчетыСПокупателями.Остатки(Дата, Фильтр, "Контрагент, ДоговораКонтрагентов", "Сумма");  
           
   Возврат ТекущийОстаток.Итог("Сумма");      
   
КонецФункции

и он возражает почему то 0 всегда
в чем может быть причина ?
1 depthzer0
 
15.02.12
10:28
лучше запросом
2 depthzer0
 
15.02.12
10:30
если сам регистр открыть в предприятии и сделать отбор по этому контрагенту с договором, то есть записи?
3 Wobland
 
15.02.12
10:30
ДоговораКонтрагентов - это что-то многочисленное? как Остатки() на такое среагируют?
4 gsn
 
15.02.12
10:34
(1) как именно запросом ?


(2) записи есть
5 Fish
 
гуру
15.02.12
10:37
(4) Запрос = Новый Запрос;
Запрос.Текст = "......";

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

Как-то так :)))
6 Ненавижу 1С
 
гуру
15.02.12
10:38
(4) обычным запросом
7 gsn
 
15.02.12
10:43
вот что мне конструктор выдал


   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ВзаиморасчетыСПокупателямиОстатки.Контрагент,
       |    ВзаиморасчетыСПокупателямиОстатки.ДоговораКонтрагентов,
       |    ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток
       |ИЗ
       |    РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки КАК ВзаиморасчетыСПокупателямиОстатки
       |ГДЕ
       |    ВзаиморасчетыСПокупателямиОстатки.Контрагент = &Контрагент
       |    И ВзаиморасчетыСПокупателямиОстатки.ДоговораКонтрагентов = &ДоговораКонтрагентов
       |
       |СГРУППИРОВАТЬ ПО
       |    ВзаиморасчетыСПокупателямиОстатки.Контрагент,
       |    ВзаиморасчетыСПокупателямиОстатки.ДоговораКонтрагентов,
       |    ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток";

   Запрос.УстановитьПараметр("ДоговораКонтрагентов", ДоговораКонтрагентов);
   Запрос.УстановитьПараметр("Контрагент", Контрагент);

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

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

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       // Вставить обработку выборки ВыборкаДетальныеЗаписи
   КонецЦикла;

   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА



что мне надо здесь добавить , что бы у мня работало ?
8 Ненавижу 1С
 
гуру
15.02.12
10:47
дарю:

&НаСервере
Функция ДолгПокупателя(Дата, Контрагент, ДоговораКонтрагентов)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
       |    СУММА(ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток) КАК СуммаОстаток
       |ИЗ
       |    РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки(&Дата, Контрагент = &Контрагент и ДоговораКонтрагентов = &ДоговораКонтрагентов) КАК ВзаиморасчетыСПокупателямиОстатки";
Запрос.УстановитьПараметр("ДоговораКонтрагентов", ДоговораКонтрагентов);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Дата", Дата);
Возврат Запрос.Выполнить().Выгрузить()[0].СуммаОстаток;

КонецФункции
9 hhhh
 
15.02.12
10:47
(7) тебе от количества строк платят, что ли?

Запрос.Текст =
"ВЫБРАТЬ
       |    ВзаиморасчетыСПокупателямиОстатки.Контрагент,
       |    ВзаиморасчетыСПокупателямиОстатки.ДоговораКонтрагентов,
       |    ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток
       |ИЗ
       |    РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки(, Контрагент = &Контрагент И ДоговораКонтрагентов = &ДоговораКонтрагентов)  КАК ВзаиморасчетыСПокупателямиОстатки
       |   ";
10 Wobland
 
15.02.12
10:48
щас опять 0 выдаст
11 hhhh
 
15.02.12
10:49
(8) опередил. Только лучше без СУММА()

ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток КАК СуммаОстаток
12 depthzer0
 
15.02.12
10:49
(9) ему сумма нужна, как в (8)

(8)

Выборка = Запрос.Выполнить().Выбрать();
Возврат ?(Выборка.Следующий(), Выборка.СуммаОстаток, 0);
13 Wobland
 
15.02.12
10:50
(12) остатки всегда что-нибудь да дадут
14 Ненавижу 1С
 
гуру
15.02.12
10:50
(11) согласен
15 Ненавижу 1С
 
гуру
15.02.12
10:51
(11) хотя нет - без "сумма()" может быть пустая выборка
16 НЕА123
 
15.02.12
10:55
лучше СУММА. может еще измерения какие еще есть.
17 Ненавижу 1С
 
гуру
15.02.12
10:55
(16) про измерения ты мимо - оно сворачивает их. ВСЕГДА
18 gsn
 
15.02.12
10:56
так же 0 выводит
19 Ненавижу 1С
 
гуру
15.02.12
10:57
(18) не повезло значит тебе
20 Wobland
 
15.02.12
10:57
(18) а я говорил :-Р
21 Ненавижу 1С
 
гуру
15.02.12
10:58
(0) наверное рано тебе свои конфигурации писать
22 НЕА123
 
15.02.12
10:58
(17)
хм. не знал.
но если по по глупости добавить поле измеренияЭн.
23 НЕА123
 
15.02.12
11:00
почему ТС проигнорировал (3)?
24 Ненавижу 1С
 
гуру
15.02.12
11:02
может ТС в параметры пихает не ссылки, а объекты, может вообще строки, может движений все таки нет, все может быть - гадания на кофейных остатках ))
25 Fish
 
гуру
15.02.12
11:05
Вообще, в последнее время наблюдается странная тенденция: Появляются ветки с вопросами явных новичков типа "а как запросом", "как посчитать расход краски", и т.п. Смотришь стаж ТС - 5-7 лет. Объясните, как такое может быть? Или здесь идёт активная торговля аккаунтами с полосочкой 22 см? :))))
26 gsn
 
15.02.12
11:09
(25) на личности не надо переходить

просто я уже не сколько лет на 1с  не сидел  
а формально сайт стаж считает
стаж не показатель !!!
27 Fish
 
гуру
15.02.12
11:15
(26) А где в (25) переход на личности? Просто меня удивляет, когда человек, сидящий на этом форуме 5-7 лет, задаёт такие вопросы. А в слове "новичок", имхо ничего обидного нету. :)))
Я могу понять, когда у человека был перерыв, и он всё позабыл. (хотя лично мне не понятно, как можно забыть основы) :))) Но дело в том, как я уже сказал, это не единичный случай, а в последнее время таких веток всё больше и больше.
28 depthzer0
 
15.02.12
11:20
(13) ну да ))

(18) что-то с параметрами не то
29 Wobland
 
15.02.12
11:21
(25) вчера девушка жаловалась, какая хорошая миста, какие все добрые и отзывчивые, всегда помогут (без сарказма). хотя у самой стажу лет 5 и одна вчерашняя тема. старый пароль вспомнила?
30 Fish
 
гуру
15.02.12
11:25
(29) Так вот это и не понятно. Ладно бы один-два случая. Это еще можно понять: забыл пароль, давно не заходил. Но когда это происходит массово? может на форуме даты регистрации слетели? Но тогда почему не у всех? :))))
31 Fish
 
гуру
15.02.12
11:27
+(30) Это случаем не та, у которой я, между прочим, спросил "почём нынче аккаунты", и получил ответ в грубой форме, причём потом моё сообщение потёрли? Наводит на размышления однако :)))
32 Wobland
 
15.02.12
11:31
(31) не. та добрая, милая, симпатичная и топлесс
33 Fish
 
гуру
15.02.12
11:38
(32) Когда добрая, милая, да еще и топлесс, почему-то хочется помочь, даже не смотря на большой стаж на форуме и глупые вопросы :)))
34 palpetrovich
 
15.02.12
11:41
(25) а еще "ишу свою конфигурацию" :))
(32) интриган :)
35 Wobland
 
15.02.12
11:45
кстати, да. не припомню девушку с фото (пусть даже не сразу), чтоб некрасивая была или хамила как-то (без фото - пожалста). вывод: желание помочь коррелирует с красотой девушки, пусть даже не заявленной в начале ;)
(34) имя не проси ;)
36 palpetrovich
 
15.02.12
11:46
(35) имя не надо, хватит ника ;)
37 Fish
 
гуру
15.02.12
11:48
(36) Mayflower :)))
38 Aprobator
 
15.02.12
11:53
(0) ну ка типы значений Контрагент и ДоговораКонтрагентов в студию.
39 gsn
 
15.02.12
11:57
спасибо всем

у меня заработало таким образом




   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ВзаиморасчетыСПокупателямиОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
       |    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент,
       |    ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДоговораКонтрагентов
       |ИЗ
       |    РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты
       |ГДЕ
       |    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент = &Контрагент
       |    И ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДоговораКонтрагентов = &ДоговораКонтрагентов
       |
       |СГРУППИРОВАТЬ ПО
       |    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент,
       |    ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДоговораКонтрагентов,
       |    ВзаиморасчетыСПокупателямиОстаткиИОбороты.СуммаКонечныйОстаток
       |ИТОГИ ПО
       |    СуммаКонечныйОстаток";

   Запрос.УстановитьПараметр("ДоговораКонтрагентов", ДоговораКонтрагентов);
   Запрос.УстановитьПараметр("Контрагент", Контрагент);

   Результат = Запрос.Выполнить();
   Возврат Запрос.Выполнить().Выгрузить()[0].СуммаКонечныйОстаток;
40 gsn
 
15.02.12
11:58
тема закрыта
41 Ненавижу 1С
 
гуру
15.02.12
11:58
(39) запрос воняет
42 gsn
 
15.02.12
12:01
(41)
если есть предложение по оптимизации кода , то я всегда рад услышать чужое мнение
43 depthzer0
 
15.02.12
12:01
(40)

это то же самое, что в (8) только без даты и в разы неэффективнее. будет сильно тормозить.
44 Aprobator
 
15.02.12
12:03
+(41) и, судя по запросу, косяк был в (0) с датой на которую строились остатки.
(42) в запросе даже тупо нет даты, на которую отбираются остатки.
45 Fish
 
гуру
15.02.12
12:03
(42) Если Результат будет пустой, то на Возврат Запрос.Выполнить().Выгрузить()[0].СуммаКонечныйОстаток; - будет ругаться :))))
46 hhhh
 
15.02.12
12:04
(33) да, а потом случайно откроешь какой-нибудь freelance.ru и там эта дама в первом десятке по рейтингу.
47 ssh2006
 
15.02.12
12:11
(42) переделай запрос, он никакой
Основная теорема систематики: Новые системы плодят новые проблемы.