|
перезаполнение счета на оплату при изменении количества в заказе | ☑ | ||
---|---|---|---|---|
0
kindzadza
02.07.13
✎
10:41
|
Добрый день! необходимо при изменении количества в заказе(уже проведенного и записанного) и созданном на его основании счета на оплату изменялось сумма в любом счете....конфа УТ11+crm
сделал так....добавил кнопку на форму счета и такой код: &НаКлиенте Процедура ПерезаполнитьСчет(Команда) ТаблицаЭтапов = Элементы.ЭтапыГрафикаОплаты.ТекущиеДанные; Для каждого СтрТаблицаЭтапов Из ТаблицаЭтапов Цикл Реквизит = СтрТаблицаЭтапов.НомерСтроки; Реквизит = СтрТаблицаЭтапов.ДатаПлатежа; Реквизит = СтрТаблицаЭтапов.СуммаПлатежа; Реквизит = СтрТаблицаЭтапов.ПроцентПлатежа; КонецЦикла; Перезаполнение(ТаблицаЭтапов); КонецПроцедуры &НаСервере Процедура Перезаполнение(ТаблицаЭтапов) ЗаписьЖурналаРегистрации("Отладка", УровеньЖурналаРегистрации.Информация, , , "Выполнено1 " ); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", Основание); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказКлиента.Ссылка |ИЗ | Документ.ЗаказКлиента КАК ЗаказКлиента |ГДЕ | ЗаказКлиента.Ссылка = &ТекущийДокумент"; Результат = Запрос.Выполнить().Выбрать(); Если Результат.Следующий() Тогда СчетНаОплатуКлиенту = Неопределено; //Если ИтогоОтмеченоКОплате = Результат.Ссылка.СуммаДокумента Тогда // Возврат; //КонецЕсли; НачатьТранзакцию(); ЗаписьЖурналаРегистрации("Отладка", УровеньЖурналаРегистрации.Информация, , , "Выполнено2 " ); Если Результат.Ссылка = Неопределено Тогда ДокументОбъект = Документы.СчетНаОплатуКлиенту.СоздатьДокумент(); Иначе ДокументОбъект = Результат.Ссылка.ПолучитьОбъект(); КонецЕсли; ЗаполнитьЗначенияСвойств(ДокументОбъект, Основание); ДокументОбъект.Заполнить(Неопределено); ДокументОбъект.Дата = ТекущаяДата(); ДокументОбъект.УстановитьНовыйНомер(); СуммаДокумента = 0; КоличествоЭтапов = 0; НомерЭтапа = 1; ПроцентПлатежа = 0; Для Каждого ТекущийЭтап Из ТаблицаЭтапов Цикл Если Не ТекущийЭтап.Выбран Тогда Продолжить; КонецЕсли; СуммаДокумента = СуммаДокумента + ТаблицаЭтапов.СуммаПлатежа - ТекущийЭтап.СуммаОплаты; КоличествоЭтапов = КоличествоЭтапов + 1; КонецЦикла; ДокументОбъект.СуммаДокумента = СуммаДокумента; Если Основание.СуммаДокумента <> СуммаДокумента Тогда ДокументОбъект.ЧастичнаяОплата = Истина; КонецЕсли; ДокументОбъект.ЭтапыГрафикаОплаты.Очистить(); Для Каждого ТекущийЭтап Из ТаблицаЭтапов Цикл Если Не ТекущийЭтап.Выбран Тогда Продолжить; КонецЕсли; НовыйЭтап = ДокументОбъект.ЭтапыГрафикаОплаты.Добавить(); НовыйЭтап.ДатаПлатежа = ТекущийЭтап.ДатаПлатежа; НовыйЭтап.СуммаПлатежа = ТекущийЭтап.СуммаКОплате; Если СуммаДокумента > 0 Тогда Если НомерЭтапа = КоличествоЭтапов Тогда НовыйЭтап.ПроцентПлатежа = 100 - ПроцентПлатежа; Иначе НовыйЭтап.ПроцентПлатежа = НовыйЭтап.СуммаПлатежа * 100 / СуммаДокумента; ПроцентПлатежа = ПроцентПлатежа + НовыйЭтап.ПроцентПлатежа; КонецЕсли; КонецЕсли; НомерЭтапа = НомерЭтапа + 1; КонецЦикла; БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДокументОбъект.Организация, , ДокументОбъект.БанковскийСчет); Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(ДокументОбъект.Организация, ДокументОбъект.ФормаОплаты, ДокументОбъект.Касса); ДокументОбъект.НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа( Основание.НомерДокумента, Основание.Префикс, Основание.ДокументОснование); Попытка ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); СчетНаОплатуКлиенту = ДокументОбъект.Ссылка; Исключение ТекстОшибки = НСтр("ru='Не удалось записать %Документ%. %ОписаниеОшибки%'"); ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ДокументОбъект); ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( ТекстОшибки, , ,); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; ЗафиксироватьТранзакцию(); КонецПроцедуры во первых выходит ошибка "итератор для значения не определен" да и вообще отладчиком не попадает в цикл в процедуре перезаполнить...ТаблицаЭтапов это табличная часть но в другой форме,в чем проблема и как исправить чтоб все попадало и заполнялось? до этого было немного по другому сделано,все перезаполнялось,попросили добавить кнопку,но создавался новый счет если его там не было(код как в нижней процедуре) прошу громко не кричать....только начал все это изучать и делать.... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |