|
Пересчет в ТЧ поступления. | ☑ | ||
---|---|---|---|---|
0
never_sleep
02.05.17
✎
12:21
|
....
//Создаю новый документ поступление. Заполняю его на основании заказа ДокПоступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); ... ДокПоступление.Заполнить(ВыбЗаказПоставщику.Заказ); .... //он забивает в ТЧ остатки по этому заказу. //мне нужны реальные данные из выгрузки, поэтому в цикле меняю количество на рельное. СтрокаТЧ = ДокПоступление.Товары.Найти(Справочники.Номенклатура.НайтиПоКоду(ТекущаяСтрокаТЗ.Номенклатура),"Номенклатура"); СтрокаТЧ.Количество = ТекущаяСтрокаТЗ.Количество; СтрокаТЧ.КоличествоУпаковок = ТекущаяСтрокаТЗ.Количество; //Но остальные колонки, зависящие от этих, разумеется автоматом не пересчитываются: Сумма, СуммаНДС, взаиморасчетов и т.п. Как сделать? Ручками прописывать их пересчет? //Или можно вызвать что-то вида ~ "ДокПоступление.ПересчитатьТЧ"? Есть такое? |
|||
1
catena
02.05.17
✎
12:23
|
Нету. Прописывать ручками.
|
|||
2
Buster007
02.05.17
✎
12:24
|
ну посмотри что там вызывается при в форме документа при изменении количества и то же вызови у себя
|
|||
3
Ц_У
02.05.17
✎
12:26
|
(0) в модуле менеджера посмотри, там могут быть процедуры пересчета всего, что тебе нужно
|
|||
4
torgm
02.05.17
✎
12:26
|
(0) Ленивый код. если переносишьданные будь добр запонить все ручками.
Не дай бог цена с округлением упадет. а если тупо ответить на твой вопрос то. ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); |
|||
5
polosov
02.05.17
✎
12:27
|
(0) Что за конфа то?
|
|||
6
Рэйв
02.05.17
✎
12:31
|
(0)Это что за тайное заклинание вуду?
Справочники.Номенклатура.НайтиПоКоду(ТекущаяСтрокаТЗ.Номенклатура) |
|||
7
polosov
02.05.17
✎
12:32
|
(6) Да он там код хранит в ТЗ подготовленной видимо
|
|||
8
Рэйв
02.05.17
✎
12:34
|
(7)а..Ну так еще ладно:-)
|
|||
9
polosov
02.05.17
✎
12:35
|
А вообще если УФ, то можно подсмотреть клиентские конструкции в процедурах при изменении цены, к примеру.
Но использовать на сервере можно ОбработкаТабличнойЧастиВызовСервера.ОбработатьСтрокуТЧ (...) |
|||
10
never_sleep
02.05.17
✎
12:36
|
(6) В ТЗ загружаю из ДБФного файла выгрузки данные. Потом по ней формирую доки
(5) Управление торговлей, редакция 11.2 (11.2.3.213) |
|||
11
polosov
02.05.17
✎
12:43
|
(10)
КэшированныеЗначения = Неопределено; СтруктураПересчетаСуммы = ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);<--- Эту структуру сам сделай СтруктураДействий = Новый Структура; СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСумму"); СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь)); СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов"); Для Каждого СтрокаТЧ ИЗ ДокОбъект.Товары Цикл ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; ОбработкаТабличнойЧастиВызовСервера.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения); КонецЦикла; |
|||
12
never_sleep
02.05.17
✎
12:48
|
(11) сейчас попробую переварить. Спасибо)
|
|||
13
never_sleep
02.05.17
✎
14:58
|
(11) Короче, я все руками пропишу напрямую. Так, как мне кажется, проще.
Но по предложенному вами методу все же хотелось бы прояснить: Код в котором бы я хотел сделать пересчет выполняется на сервере. В определении процедуры ОбработкаТабличнойЧастиВызовСервера.ОбработатьСтрокуТЧ написано "Вызов этой функции должен осуществляться только из клиентского модуля ОбработкаТабличнойЧастиКлиент". Можно забить на рекомендации и напрямую вызвать с сервера? Второй вопрос можно? В её коде делаются только 2 действия: Заполняется, если не заполнен параметр заполняется КэшированныеЗначения и вызывается ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения) Там снова заполняется таким же самым способом параметр КэшированныеЗначения и вызываются процедуры обработки ТЧ в зависимости от структуры (собственно что и нужно). Вопрос такой, зачем нужно делать вложенную процедуру? Зачем нужна эта ОбработкаТабличнойЧастиВызовСервера.ОбработатьСтрокуТЧ а не сразу ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ? Я нубоват в 8ке. Если бы вы объяснили, был бы крайне признателен. |
|||
14
polosov
02.05.17
✎
16:23
|
(13) Вызов сервера можно делать с клиента.
ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ наверно правильнее с сервера будет вызывать. |
|||
15
never_sleep
05.05.17
✎
07:10
|
(14) Все-таки вашим способом сделал. Спасибо, что показали куда копать. За основу взял, что лежало в процедуре ТоварыКоличествоУпаковоПриИзменении и в процедурах из неё вызываемых.
//Надо найти в какой строке ТЧ документа лежит текущая строка ТЗ и скорректировать её СтрокаТЧ = ДокПоступление.Товары.Найти(Справочники.Номенклатура.НайтиПоКоду(ТекущаяСтрокаТЗ.Номенклатура),"Номенклатура"); СтрокаТЧ.Количество = ТекущаяСтрокаТЗ.Количество; СтрокаТЧ.КоличествоУпаковок = ТекущаяСтрокаТЗ.Количество; //Пересчитаем остальные показатели в строке СтруктураПересчетаСуммы = Новый Структура; СтруктураПересчетаСуммы.Вставить("ЦенаВключаетНДС", ДокПоступление.ЦенаВключаетНДС); НДСпоСтавкам4и2 = ДокПоступление.Контрагент.НДСпоСтавкам4и2; СтруктураПересчетаСуммы.Вставить("НДСпоСтавкам4и2", НДСпоСтавкам4и2); СтруктураДействий = Новый Структура; СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц"); СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСумму"); СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь)); СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов"); СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару", ДокПоступление.ПоступлениеПоЗаказам, ДокПоступление.ТребуетсяЗалогЗаТару)); ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтрокаТЧ, СтруктураДействий, КэшированныеЗначения); Еще раз спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |