|
Подскажите с обработкой. | ☑ | ||
---|---|---|---|---|
0
Mr Elidan
06.08.15
✎
12:45
|
Бухи хотят обработку которая перезаполняла сумму табличной части в документа "отчет о розничных продажах", а я хз как её написать. Точнее понимаю механику, а написать не могу) На сколько я понимаю, нужно сделать таблицу значений, в неё выгрузить запрос "ценыНоменклатуры.срезПоследних", поставить связь с доком по номенклатуре, перемножить цену на количество и все это в цикл. Есть у кого пример такой обработки? и да, я не сильно заморачиваюсь, в смысле может есть способ проще?
|
|||
1
salvator
06.08.15
✎
12:47
|
Одним запросом выбрать ТЧ документа и регистр, с соединением по номенклатуре. В запросе же рассчитать сумму (цена*количество), выгрузить результат запроса в ТЗ, загрузит ТЗ в ТЧ документа.
|
|||
2
Fram
06.08.15
✎
12:52
|
(1) ТС остается только выучить и понять язык запросов и научиться кодить на 1С
|
|||
3
Mr Elidan
06.08.15
✎
14:00
|
Запросы я знаю, и с СКД проблем нет, а вот кодить проблема (обработки), делаю в основном по образцам (внештатного программиста), из нескольких один , хотя это мысль сделать во внешней обработкой) есть у меня "универсалных обработчик", в котором можно просто прописать алгоритм, и я пытался через него, по скольку мне нужно изменить 1 лишь столбе
|
|||
4
D_E_S_131
06.08.15
✎
14:46
|
"...делаю в основном по образцам (внештатного программиста)" — по идее, после этой задачи организация должна сменить "штатного программиста".
|
|||
5
Mr Elidan
06.08.15
✎
14:49
|
Был бы он еще у нас, я экономист и занимаюсь этим 1.5 месяца)))
|
|||
6
FIXXXL
06.08.15
✎
14:51
|
(1) сумму лучше типовыми функциями для каждой строки рассчитывать, они НДС просчитают корректно
|
|||
7
el7cartel
06.08.15
✎
14:52
|
(0) а зачем экономисту заниматься вот этим "Бухи хотят обработку которая перезаполняла сумму табличной части в документа "отчет о розничных продажах", а я хз как её написать", делайте свою работу, а внештатный программист будет иметь дополнительный заработок)))
|
|||
8
Franchiser
гуру
06.08.15
✎
14:52
|
возьми пример внешней обработки заполнения ТЧ и сделай по образцу
|
|||
9
vicof
06.08.15
✎
14:53
|
(5) Экономист может сказать внештатному: "делай, сц*кан, быстро"
|
|||
10
Franchiser
гуру
06.08.15
✎
14:54
|
в модуле менеджера обычно есть функция которая пересчитывает всю тч
|
|||
11
FIXXXL
06.08.15
✎
14:54
|
(8) кстати, может и без запроса взлетит, наверняка есть типовая функция по перезаполнению цен на дату документа
|
|||
12
Franchiser
гуру
06.08.15
✎
14:55
|
ты 1,5 экономист, или экономист который занимается программированием 1,5 мес?
|
|||
13
Mr Elidan
06.08.15
✎
15:03
|
FIXXXL - честно говоря я плохо понимаю типовой код, в том плане, что внештатный программист (как и любой другой я предпологаю) в одной процедуре описывает все что нужно достаточно простым кодом, а в типовом где то переменные, где то запрос, где то процедура и их дофига....
el7cartel - жмут ФОТ + внештатный "своевольный", по этому финансовый директор посчитал, что не плохо было бы что бы я умел, за доп денежку естественно. Franchiser - не всегда я могу найти похожую обработку + внештатный любит пароль ставить. Как функция называется, хоть примерно? FIXXXL - можно это сделать вручную, путем проставить галку в нужном месте, но в типовом коде процедура может быть из одной строчки, а искать все остальное можно рехнуться, ну, для меня) Franchiser - я экономист, и всего 1.5 месяца занимаюсь 1с. |
|||
14
Franchiser
гуру
06.08.15
✎
15:08
|
Если БП 3.0 то
Общий модуль ОбработкаТабличныхЧестейКлиентСервер // Рассчитывает сумму в строке табличной части документа // // Параметры: // СтрокаТабличнойЧасти - строка табличной части документа // Процедура РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЗначениеПустогоКоличества = 0) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена * ?(СтрокаТабличнойЧасти.Количество = 0, ЗначениеПустогоКоличества, СтрокаТабличнойЧасти.Количество); КонецПроцедуры |
|||
15
el7cartel
06.08.15
✎
15:13
|
(13) эта допденюжка потом выйдет тебе боком
|
|||
16
Mr Elidan
06.08.15
✎
15:18
|
Franchiser - спасибо, буду смотреть)
el7cartel - Чойто? |
|||
17
Mr Elidan
06.08.15
✎
15:40
|
Нашел другую херню
Процедура ПриИзмененииТипаЦен(Ответ) Если Товары.Количество()>0 Тогда ТекстВопроса = "Изменился тип цен. Пересчитать табличную часть?"; Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); Если Ответ = КодВозвратаДиалога.Да Тогда СтруктураЗначений = Новый Структура; СтруктураЗначений.Вставить("НовыйТипЦен", ТипЦен); СтруктураЗначений.Вставить("НовыйВалютаДокумента", мВалютаРегламентированногоУчета); СтруктураЗначений.Вставить("НовыйКурсДокумента", 1); СтруктураЗначений.Вставить("НовыйКратностьДокумента", 1); СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры; // Получить нужные цены запросом РезультатЗапросаЦен = Ценообразование.СформироватьЗапросПоЦенам(СтруктураЗначений, СпособЗаполненияЦен, Товары.ВыгрузитьКолонку("Номенклатура"), Дата, Неопределено); ВыборкаИзРезультатаЗапроса = РезультатЗапросаЦен.Выбрать(); СтруктураПоиска = Новый Структура(); // стркутура для поиска в результате запроса // В цикле по ТЧ перезаполняем цены, приводя их к текущим скидкам, валюте и режиму налогообложения Для каждого СтрокаТабличнойЧасти Из Товары Цикл СтруктураПоиска.Вставить("Номенклатура" , СтрокаТабличнойЧасти.Номенклатура); СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры); ВыборкаИзРезультатаЗапроса.Сбросить(); Если ВыборкаИзРезультатаЗапроса.НайтиСледующий(СтруктураПоиска) Тогда // Нашли запись // Если для данного товара есть цена данного типа // Единицу устанавливаем в единицу цены, если она не задана, то в основную единицу товара Если НЕ ЗначениеЗаполнено(ВыборкаИзРезультатаЗапроса.Цена) Тогда СтрокаТабличнойЧасти.Цена = 0; Иначе // Присваиваем значение цены и единицы цены Если СтруктураЗначений.НовыйТипЦен.Рассчитывается Тогда Цена = ВыборкаИзРезультатаЗапроса.Цена * (1 + ВыборкаИзРезультатаЗапроса.ПроцентСкидкиНаценки / 100); СтруктураВалюты = МодульВалютногоУчета.ПолучитьКурсВалюты(СтруктураЗначений.НовыйТипЦен.ВалютаЦены, ДокументОбъект.Дата); МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(Цена, ВыборкаИзРезультатаЗапроса.ВалютаЦены, СтруктураЗначений.НовыйТипЦен.ВалютаЦены, ВыборкаИзРезультатаЗапроса.КурсВалютыЦены, СтруктураВалюты.Курс, ВыборкаИзРезультатаЗапроса.КратностьВалютыЦены, СтруктураВалюты.Кратность); СтрокаТабличнойЧасти.Цена = Ценообразование.ОкруглитьЦену(Цена, СтруктураЗначений.НовыйТипЦен.ПорядокОкругления, СтруктураЗначений.НовыйТипЦен.ОкруглятьВБольшуюСторону); Иначе СтрокаТабличнойЧасти.Цена = ВыборкаИзРезультатаЗапроса.Цена; КонецЕсли; // Пересчитываем цену в валюту документа Если СтруктураЗначений.НовыйВалютаДокумента <> ВыборкаИзРезультатаЗапроса.ВалютаЦены Тогда СтрокаТабличнойЧасти.Цена = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(СтрокаТабличнойЧасти.Цена, ВыборкаИзРезультатаЗапроса.ВалютаЦены, СтруктураЗначений.НовыйВалютаДокумента, ВыборкаИзРезультатаЗапроса.КурсВалютыЦены, СтруктураЗначений.НовыйКурсДокумента, ВыборкаИзРезультатаЗапроса.КратностьВалютыЦены, СтруктураЗначений.НовыйКратностьДокумента); КонецЕсли; ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриИзмененииТипаЦен() ругается на {(1,1)}: Ожидается последовательность операторов <<?>>Процедура ПриИзмененииТипаЦен(Ответ) ему не хватает какой то процедуры? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |