|
Проблема с документом ОплатаПокупателя | ☑ | ||
---|---|---|---|---|
0
sovsemnovichek
22.07.13
✎
16:41
|
При проведении документа "ОплатаПокупателя" должна, по моей идее, автоматически подставляться Сумма К Оплате из Регистра Накопления "Задолженность"
Но что-то не так, не выходит, подскажите в чем ошибка Эта функция вытаскивает Сумму из Регистра и находится она в общем модуле ункция ПолучитьСуммуДолга(Контрагент,Организация,Дата) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗадолженностиОстатки.СуммаДолгаОстаток КАК СуммаДолга, | ЗадолженностиОстатки.Организация КАК Организация, | ЗадолженностиОстатки.Контрагент КАК Контрагент |ИЗ | РегистрНакопления.Задолженности.Остатки( | &Дата, | Контрагент = &Контрагент | И Организация = &Организация) КАК ЗадолженностиОстатки |ГДЕ | ЗадолженностиОстатки.Контрагент = &Контрагент | И ЗадолженностиОстатки.Организация = &Организация"; Запрос.УстановитьПараметр("Дата",Дата); Запрос.УстановитьПараметр("Контрагент",Контрагент); Запрос.УстановитьПараметр("Организация",Организация); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.СуммаДолга Иначе Возврат 0; КонецЕсли; КонецФункции А эта функция должна срабатывать при подстановке Контрагента или его изменении, однако это происходит при только при повторном проведении &НаКлиенте Процедура КонтрагентПриИзменении(Элемент) M = РаботаСоСправочниками.ПолучитьСуммуДолга(Объект.Контрагент,Объект.Организация,Объект.Дата); Объект.СуммаКОплате = M; КонецПроцедуры и в регистре Задолженность Сумма тоже появляется только после повторного проведения |
|||
1
mikecool
22.07.13
✎
16:43
|
потому что при первом проведении проводок еще нет
и это, зачем для выбора суммы выбираешь еще и | ЗадолженностиОстатки.Организация КАК Организация, | ЗадолженностиОстатки.Контрагент КАК Контрагент ? |
|||
2
Wobland
22.07.13
✎
16:51
|
куда должна сумма подставляться? при записи подставляй
|
|||
3
sovsemnovichek
22.07.13
✎
16:51
|
дак чтобы узнавать какой конкретно контрагент какую конкретно сумму должен! Ведь по идее при подстановке контрагента подставляется сумма его долга
|
|||
4
Wobland
22.07.13
✎
16:52
|
(3) зачем тубу узнавать контрагента?
|
|||
5
mikecool
22.07.13
✎
16:53
|
(3) "чтобы узнавать какой конкретно контрагент какую конкретно сумму должен!" это ты написал здесь:
РегистрНакопления.Задолженности.Остатки( | &Дата, | Контрагент = &Контрагент | И Организация = &Организация) это вообще выкинуть надо: |ГДЕ | ЗадолженностиОстатки.Контрагент = &Контрагент | И ЗадолженностиОстатки.Организация = &Организация |
|||
6
mikecool
22.07.13
✎
16:53
|
итого остается
Запрос.Текст = "ВЫБРАТЬ | ЗадолженностиОстатки.СуммаДолгаОстаток КАК СуммаДолга |ИЗ | РегистрНакопления.Задолженности.Остатки( | &Дата, | Контрагент = &Контрагент | И Организация = &Организация) КАК ЗадолженностиОстатки |
|||
7
Wobland
22.07.13
✎
16:54
|
странно как-то сумму взаиморасчётов суммой долга звать
|
|||
8
sovsemnovichek
22.07.13
✎
16:54
|
Я не хочу его знать, я хочу его просто вставить в поле "Контрагент" и чтобы после этого подставилась сумма его долга в поле "Сумма к оплате" вот и все. Если напортачил в коде, укажи где, буду признателен)
|
|||
9
Wobland
22.07.13
✎
16:55
|
(8) не хочешь знать, а выбираешь зачем-то. ай-ай
|
|||
10
sovsemnovichek
22.07.13
✎
16:57
|
|ГДЕ
| ЗадолженностиОстатки.Контрагент = &Контрагент | И ЗадолженностиОстатки.Организация = &Организация почему это выкинуть надо? это же параметры, которые я передаю... Если этого не будет, то как параметры определять? |
|||
11
Wobland
22.07.13
✎
16:59
|
(10) а у тебя только там параметры?
|
|||
12
sovsemnovichek
22.07.13
✎
17:00
|
ну еще при обработке проведения в модуле в запросе параметры есть
|
|||
13
Wobland
22.07.13
✎
17:01
|
(12) а в тексте запроса?
|
|||
14
sovsemnovichek
22.07.13
✎
17:09
|
ну да, в тексте запроса есть
Процедура ОбработкаПроведения(Отказ, Режим) // регистр Задолженности Приход Движения.Задолженности.Записывать = Истина; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОплатаПокупателя.Контрагент КАК Контрагент, | ОплатаПокупателя.Организация КАК Организация, | ОплатаПокупателя.СуммаКОплате КАК СуммаКОплате |ПОМЕСТИТЬ Долг |ИЗ | Документ.ОплатаПокупателя КАК ОплатаПокупателя |ГДЕ | ОплатаПокупателя.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕСТЬNULL(ЗадолженностиОстатки.СуммаДолгаОстаток, 0) КАК СуммаДолгаОстаток, | Долг.СуммаКОплате КАК СуммаКОплате, | Долг.Контрагент КАК Контрагент, | Долг.Организация КАК Организация |ИЗ | РегистрНакопления.Задолженности.Остатки(&Момент, Контрагент = &Контрагент) КАК ЗадолженностиОстатки, | Долг КАК Долг"; Запрос.УстановитьПараметр("Ссылка",Ссылка); Запрос.УстановитьПараметр("Момент", МоментВремени()); Запрос.УстановитьПараметр("Контрагент",Контрагент); Запрос.УстановитьПараметр("Организация", Организация); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий()Цикл Движение = Движения.Задолженности.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Организация = Организация; Движение.Контрагент = Контрагент; Движение.СуммаДолга = Выборка.СуммаДолгаОстаток; КонецЦикла; КонецПроцедуры |
|||
15
Wobland
22.07.13
✎
17:11
|
ВТ зачем?
|
|||
16
Wobland
22.07.13
✎
17:15
|
ЕСТЬNULL что такое?
чо-т я не понял. движения формируются из движений? документ тогда чисто для галочки? |
|||
17
sovsemnovichek
22.07.13
✎
17:19
|
В смысле движения из движений?
|
|||
18
sovsemnovichek
22.07.13
✎
17:19
|
ЕСТЬNULL проверяет наличие остатков в регистре
|
|||
19
mikecool
22.07.13
✎
17:20
|
(18) нет
|
|||
20
sovsemnovichek
22.07.13
✎
17:43
|
что нет?
|
|||
21
mikecool
22.07.13
✎
17:47
|
(20) ЕСТЬNULL не проверяет наличие остатков в регистре
|
|||
22
sovsemnovichek
22.07.13
✎
17:51
|
а что же?
|
|||
23
Wobland
22.07.13
✎
17:54
|
(22) заменяет значение при условии
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |