|
Программное создание нового документа ЗаказКлиента | ☑ | ||
---|---|---|---|---|
0
IamLev
26.06.12
✎
22:17
|
Платформа: 8.2.15.317
Конфигурация: УТ 11.0.8.8 Суть проблемы: Делаю обработку по загрузке нового заказа клиента. Данные беру из скульной базы, т.е. подключение идет через ком объект. Все выполняется &НаСервере. Документы загружаются нормально, все заполняется. Они нормально записываются. Но вот незадача, при открытии списка документов и самого документа не отображаются итоговые показатели документа. Предложили сделать через ОткрытьФорму, т.е. получить форму, заполнить ее данными и открыть, но мне это не подходит, т.к. я получаю не один документ заказа, а несколько в Цикле, т.е. я не могу каждый новый открытый документ записывать, к тому же при этом есть заморочки по подключению к самой скульной базе &НаКлиенте. Подскажите, какие могут быть варианты решения этой проблемы. |
|||
1
Amra
26.06.12
✎
22:22
|
ЕСли мне память не изменяет, в шапке документа есть "итоговые" реквизиты. Судя по всему их не заполняешь. Год назад такое же делал как и ты
|
|||
2
IamLev
26.06.12
✎
22:27
|
В шапке документа - это в реквизитах самого объекта?
|
|||
3
Klesk
26.06.12
✎
22:30
|
(0) +(1) юзай модули формы и объекта
что то типа РассчитатьСуммуВзаиморасчетов() |
|||
4
IamLev
26.06.12
✎
22:43
|
Вот последнее не понял. Можно по подробнее? :)
|
|||
5
IamLev
26.06.12
✎
22:46
|
Поясню. Итоговые показатели - это реквизиты формы. Я не знаю где, но они явно где-то хранятся и после закрытия документа.
Есть там процедура такая: &НаКлиентеНаСервереБезКонтекста Процедура РассчитатьИтоговыеПоказателиЗаказа(Форма) // Заполнение итогов по таблице "Товары" КоллекцияТовары = Форма.Объект.Товары; Форма.СуммаЗаказано = КоллекцияТовары.Итог("СуммаСНДС") - КоллекцияТовары.Итог("СуммаСНДСОтменено"); Форма.СуммаНДСЗаказано = КоллекцияТовары.Итог("СуммаНДС") - КоллекцияТовары.Итог("СуммаНДСОтменено"); Форма.СуммаАвтоСкидки = КоллекцияТовары.Итог("СуммаАвтоматическойСкидки") - КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиОтменено"); Форма.СуммаРучнойСкидки = КоллекцияТовары.Итог("СуммаРучнойСкидки") - КоллекцияТовары.Итог("СуммаРучнойСкидкиОтменено"); Форма.СуммаСкидки = Форма.СуммаАвтоСкидки + Форма.СуммаРучнойСкидки; Форма.СуммаОтменено = КоллекцияТовары.Итог("СуммаСНДСОтменено"); Если КоллекцияТовары.Итог("СуммаСНДСОтменено") = КоллекцияТовары.Итог("СуммаСНДС") Тогда Форма.ВсеСтрокиОтменены = Истина; Иначе Форма.ВсеСтрокиОтменены = Ложь; КонецЕсли; СуммаЗаказано = КоллекцияТовары.Итог("Сумма") - КоллекцияТовары.Итог("СуммаОтменено"); Если СуммаЗаказано > 0 Тогда Форма.ПроцентАвтоСкидки = Форма.СуммаАвтоСкидки * 100 / (СуммаЗаказано + Форма.СуммаСкидки); Форма.ПроцентРучнойСкидки = Форма.СуммаРучнойСкидки * 100 / (СуммаЗаказано + Форма.СуммаСкидки); Форма.ПроцентСкидки = Форма.ПроцентАвтоСкидки + Форма.ПроцентРучнойСкидки; ИначеЕсли Форма.СуммаСкидки > 0 Тогда Форма.ПроцентАвтоСкидки = Форма.СуммаАвтоСкидки * 100 / Форма.СуммаСкидки; Форма.ПроцентРучнойСкидки = Форма.СуммаРучнойСкидки * 100 / Форма.СуммаСкидки; Форма.ПроцентСкидки = Форма.ПроцентАвтоСкидки + Форма.ПроцентРучнойСкидки; Иначе Форма.ПроцентАвтоСкидки = 0; Форма.ПроцентРучнойСкидки = 0; Форма.ПроцентСкидки = 0; КонецЕсли; // Заполнение итогов по этапам оплаты ПредыдущееЗначениеДаты = Дата(1,1,1); Форма.НомерСтрокиПолнойОплаты = 0; ПроцентПлатежейОбщий = 0; Форма.СуммаАвансаДоОбеспечения = 0; Форма.СуммаПредоплатыДоОтгрузки = 0; Форма.СуммаКредитаПослеОтгрузки = 0; Форма.ПроцентАвансаДоОбеспечения = 0; Форма.ПроцентПредоплатыДоОтгрузки = 0; Форма.ПроцентКредитаПослеОтгрузки = 0; СоответствиеВариантовОплаты = Новый Соответствие; СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыОплатыКлиентом.АвансДоОбеспечения"), Новый Структура("Сумма, Проценты", "СуммаАвансаДоОбеспечения", "ПроцентАвансаДоОбеспечения") ); СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыОплатыКлиентом.ПредоплатаДоОтгрузки"), Новый Структура("Сумма, Проценты", "СуммаПредоплатыДоОтгрузки", "ПроцентПредоплатыДоОтгрузки") ); СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыОплатыКлиентом.КредитПослеОтгрузки"), Новый Структура("Сумма, Проценты", "СуммаКредитаПослеОтгрузки", "ПроцентКредитаПослеОтгрузки") ); Для Каждого ТекСтрока Из Форма.Объект.ЭтапыГрафикаОплаты Цикл ПроцентПлатежейОбщий = ПроцентПлатежейОбщий + ТекСтрока.ПроцентПлатежа; ТекСтрока.ПроцентЗаполненНеВерно = (ПроцентПлатежейОбщий > 100); ТекСтрока.ДатаЗаполненаНеВерно = (ПредыдущееЗначениеДаты > ТекСтрока.ДатаПлатежа); ПредыдущееЗначениеДаты = ТекСтрока.ДатаПлатежа; Если ПроцентПлатежейОбщий = 100 Тогда Форма.НомерСтрокиПолнойОплаты = ТекСтрока.НомерСтроки; КонецЕсли; ИменаЭлементов = СоответствиеВариантовОплаты[ТекСтрока.ВариантОплаты]; Если ИменаЭлементов <> Неопределено Тогда Форма[ИменаЭлементов.Сумма] = Форма[ИменаЭлементов.Сумма] + ТекСтрока.СуммаПлатежа; Форма[ИменаЭлементов.Проценты] = Форма[ИменаЭлементов.Проценты] + ТекСтрока.ПроцентПлатежа; КонецЕсли; КонецЦикла; // Выбор странцицы отображения НДС Если Форма.Объект.НалогообложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС") ИЛИ Форма.Объект.НалогообложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД") Тогда Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС; Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС; Иначе Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС; Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС; КонецЕсли; КонецПроцедуры Она заполняет их когда открыта форма. Но я создаю объект программно, следовательно к форме вообще никак обратиться не могу... |
|||
6
IamLev
26.06.12
✎
22:51
|
Получается, что на сервере я не могу получить форму, а на клиенте не могу получить Объект. Веселуха...
|
|||
7
Amra
26.06.12
✎
23:41
|
(6) Зачем тебе объект на клиенте?
|
|||
8
Amra
26.06.12
✎
23:52
|
(5) Вообщем ради интересаа посмотрел. Итоговые показатели это реквизиты шапки объекта
|
|||
9
IamLev
03.07.12
✎
19:29
|
Не в этом фишка была...
Как оказалось, итоговый показатель Сумма, который выводится в списке документов, считается по полю таблицы Товары. Я думал что это сумма, но ошибался... Считает по полю СуммаСНДС. :) Всем спасибо! :) |
|||
10
IamLev
03.07.12
✎
19:31
|
Если заполнить это поле, то итоговый показатель в шапке объекта рассчитывается автоматом при записи объекта.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |