|
v7: Сумма килограммов в подвале | ☑ | ||
---|---|---|---|---|
0
AlaMaRit
12.09.15
✎
16:52
|
Ребята кто может помочь в составлении кода? Нужно чтобы при выводе таблицы документа перемещения, с перечнем товаров, где есть количество, масса в кг. и цена за кг. так вот внизу её высчитывается итог суммы цены, а мне надо чтобы высчитывалось и итог суммы веса всего списка, буду очень признателен если поможете
|
|||
1
2S
12.09.15
✎
16:53
|
ТвояТаблица.итог("ТвояКолонка")
|
|||
2
AlaMaRit
12.09.15
✎
16:56
|
(1) а куда этот код правильно вставить?
|
|||
3
Брегорьян
12.09.15
✎
16:57
|
(2) рядом с кодом про сумму. а что такое итог суммы цены, кстати?
|
|||
4
AlaMaRit
12.09.15
✎
16:58
|
(1) чтобы во всех таблицах с перечнем развесных товаров, показывал сумму веса
|
|||
5
AlaMaRit
12.09.15
✎
16:59
|
(3) сумма цены, я наверно не правильно выразился, это на пример 1 пункт стоит 2 р., 2 - 5р. а вместе 7 рублев
|
|||
6
Брегорьян
12.09.15
✎
17:00
|
(4) один центнер плюс 20 кило - вместе будет 21?
|
|||
7
HawkEye
12.09.15
✎
18:35
|
(2) тут так не принято... ты свой код показывай, тебе скажут где и что не так, а за тебя писать никто не будет
|
|||
8
vcv
12.09.15
✎
20:32
|
Если все позиции в таблице в единой единице измерения (желательно килограмм), то просто Итог(). А если там 2 мешка сахара, 10 коробок печения и 6 ящиков газировки, то возможность посчитать зависит от конфигурации и ведущегося в ней учета.
|
|||
9
Фокусник
12.09.15
✎
21:18
|
(6) будет 121 кило ;)
|
|||
10
Фокусник
12.09.15
✎
21:18
|
(9)+ 120 конечно, опечатка...
|
|||
11
AlaMaRit
14.09.15
✎
09:25
|
(7) //-------------------------------------------------------------------------
Процедура ПриНачалеВыбораЗначения(Идент, Флаг = 1) Если Идент = "РасчетЗП" Тогда Флаг = 0; Если Модифицированность() = 1 Тогда Сообщить("Необходимо предварительно записать, провести документ!", "!!"); Записать(); Провести(); КонецЕсли;//Конт.Модифицированность() = 1 глСозданиеРасчетаЗП(Контекст, "РасчетЗП"); КонецЕсли;//Идент = "РасчетЗП" КонецПроцедуры//ПриНачалеВыбораЗначения(,) //_____________________________________________________________________________ // ПриВыбореДокОснования() // // Параметры: // Нет // // Описание: // // Процедура ПриВыбореДокОснования() ДокОсн = ДокументОснование; Если Не(ДокОсн.Выбран() = 1) Тогда Возврат; КонецЕсли;//Не(ДокументОснования.Выбран() = 1) ДатаДок = ДокОсн.ДатаИсполнения; Комментарий = ДокОсн.Комментарий; Склад=ДокОсн.МестоХранения; Поставщик = ДокОсн.Контрагент; ТчДок = СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(ТчДок); ДокОсн.ВыбратьСтроки(); Пока ДокОсн.ПолучитьСтроку() = 1 Цикл Стр = 0; Если ТчДок.НайтиЗначение(ДокОсн.Товар, Стр, "Товар") = 1 Тогда ПолучитьСтрокуПоНомеру(Стр); Иначе НоваяСтрока(); Товар = ДокОсн.Товар; УстЕдиницы(Контекст); Коэффициент = 1; КонецЕсли;//НайтиРеквизит("Товар", ДокОсн.Товар) = 1 ЕдиницаИзмеренияПоЗаявке = ДокОсн.ЕдиницаИзмерения; КоличествоПоЗаявке = ДокОсн.Количество; //глВернутьЦену(Товар, Тип, ДатаДок, Цена, ЕдиницаЦены, ВалютаЦены);//Пока не будем т.к. в штуках разный вес КонецЦикла;//ДокОсн.ПолучитьСтроку() = 1 КонецПроцедуры //ПриВыбореДокОснования() //------------------------------------------------------------------------- Процедура ПриОкончанииРедактированияСтроки() Если (Товар.Вшт = 1) и (Штуки = 0) Тогда Предупреждение("Не введено количество ШТУК для товара!", 3); СтатусВозврата(0); КонецЕсли;//(Товар.Вшт = 1) и (Штуки = 0) КонецПроцедуры//ПриОкончанииРедактированияСтроки() //------------------------------------------------------------------------- Процедура счВ() Кол=СчитатьВес(); Сообщить(Кол); Если (количество=0) или (количествострок()=0 )тогда НоваяСТрока(); Количество=кол; Иначе Количество=Кол; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------- Процедура ПриЗаписи() глПриЗаписиИзменений(Контекст); Если (Константа.ДатаЗапрета>=ДатаДок) Тогда СтатусВозврата(0); Возврат; КонецЕсли; ПриЗаписиДокумента(Контекст); Если СкладПолучатель.Отдел=1 Тогда Если Пользователь.Кас=1 Тогда If POS=1 Then РаботаСКассовымСервером(Контекст); POS=0; Endif; КонецЕсли; Если Пользователь.ВВесы=1 Тогда ВыгрузитьВВесыПоПереоценке(ТекущийДокумент()); КонецЕсли; КонецЕсли; Статус = 1; ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл Если (Товар.ВШт = 1) И (Штуки = 0) Тогда Сообщить("в строке " + НомерСтроки + " по товару " + Товар + " ведется ШТучный учет!","!!!"); Статус = 0; КонецЕсли;//Товар.Штучный = 1 КонецЦикла; Если Статус = 0 Тогда Предупреждение("Заполните пожалуйста Штуки для штучных товаров!", 3); СтатусВозврата(0); Возврат; КонецЕсли;//Статус = 0 Выпуск(Контекст);//При перемещении из цехов создает выпуск продукции Если РасчетЗП.Выбран() = 0 Тогда СпПродукции = НуженРасчетЗПилиНет(Контекст); Если СпПродукции.РазмерСписка() > 0 Тогда Сообщить("Необходимо сделать расчет ЗП сотрудников!", "!!!"); ПриНачалеВыбораЗначения("РасчетЗП"); КонецЕсли;//СпПродукции.РазмерСписка() = 0 КонецЕсли;//РасчетЗП.Выбран() = 0 КонецПроцедуры//ПриЗаписи() //------------------------------------------------------------------------- Процедура пересч() Выбратьстроки(); Пока получитьСтроку()>0 Цикл Цена=Товар.РозничнаяЦена.Получить(ДатаДок); Сумма=Цена*Количество; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------- Процедура ПриОткрытии() глПроверкаРазрешенияРедактирования(Контекст); ПриОткрытииДокумента(Контекст); Если ТекущийДокумент().Выбран()=0 Тогда Если Сред(НомерДок,3,1)="-" Тогда УстановитьНовыйНомер(Фирма.Преф+Лев(НомерДок,3)); КонецЕсли; КонецЕсли; конецПроцедуры //---------------------------------------------------------------------------------------------------------- Процедура ВводНового() ПриВводеНового(Контекст); Склад = Константа.ОснСклад; конецПроцедуры //---------------------------------------------------------------------------------------------------------- Процедура ВводНаОсновании(ДокОсн) ПриВводеНового(Контекст, ДокОсн); датаДок=ДокОсн.датаДок; Если ДокОсн.Вид() = "Заявка" Тогда ДатаДок = ДокОсн.ДатаИсполнения; Комментарий = ДокОсн.Комментарий; Склад=ДокОсн.МестоХранения; Контрагент = ДокОсн.Контрагент; СпрСкл = СоздатьОбъект("Справочник.Склады"); Если (Контрагент.Выбран() = 1) И (СпрСкл.НайтиПоРеквизиту("ОсновнойПокупатель", Контрагент, 1) = 1) Тогда СкладПолучатель = СпрСкл.ТекущийЭлемент(); КонецЕсли;//Покупатель.Выбран() = 1 Иначе Склад = ДокОсн.Склад; КонецЕсли;//ДокОсн.Вид() = "Инвентаризация" ДокОсн.ВыбратьСтроки(); пока ДокОсн.ПолучитьСтроку()=1 цикл Если докОсн.Вид()="Инвентаризация" Тогда Если ДокОсн.Остаток=ДокОсн.Количество тогда продолжить; Иначе кол=ДокОсн.Остаток-ДокОсн.Количество; конецесли; НоваяСтрока(); Единица = ДокОсн.Единица; Коэффициент = ДокОсн.Коэффициент; ИначеЕсли ДокОсн.Вид() = "Заявка" Тогда НоваяСтрока(); УстЕдиницы(Контекст); Кол = 0; Коэффициент = 1; КоличествоПоЗаявке = ДокОсн.Количество; ЕдиницаИзмеренияПоЗаявке = ДокОсн.ЕдиницаИзмерения; Иначе НоваяСтрока(); Кол= ДокОсн.Количество; Единица = ДокОсн.Единица; Коэффициент = ДокОсн.Коэффициент; конецесли; Товар = ДокОсн.Товар; Количество =Кол; Цена=ДокОсн.Товар.РозничнаяЦена.Получить(ДатаДок); Сумма=Цена*Количество; конецЦикла; конецПроцедуры //---------------------------------------------------------------------------------------------------------- Процедура Подбор() Сп1=СоздатьОбъект("СписокЗначений"); Сп1.ДобавитьЗначение(Фирма); Сп1.ДобавитьЗначение(Склад); ОткрытьПодбор("Справочник.Номенклатура","ФормаСписка",Сп1,1,); УстановитьЗначениеВПодборе("Склад",Склад); КонецПроцедуры //---------------------------------------------------------------------------------------------------------- Процедура ОбработкаПодбора(Тов) ГлобальнаяОбработкаПодбора(Тов,Контекст); АктивизироватьСТроку(КоличествоСТрок()); Если мясо(Тов)=1 Тогда Цена=Тов.РозничнаяЦена.Получить(ДатаДок); Иначе Кл=создатьОбъект("Документ"); Кл.ОбратныйПорядок(1); Если Кл.ВыбратьПоЗначению(,,"Блюдо",Тов)<>0 Тогда Цена=Тов.РозничнаяЦена.Получить(ДатаДок); Иначе Цена=Тов.ЦенаПриобретения.Получить(ДатаДок); КонецЕсли; КонецЕсли; Сумма=Цена*Количество; КонецПроцедуры //---------------------------------------------------------------------------------------------------------- Процедура Печать() Если ГлПередПечатью(Контекст) = "Не печатать" Тогда Возврат; КонецЕсли;//ГлПередПечатью(Контекст) = "Не печатать" Таб = СоздатьОбъект("Таблица"); Ед=СоздатьОбъект("Справочник.Единицы"); Таб.ВывестиСекцию("Шапка"); ВыбратьСтроки(); Ном = 0; пока ПолучитьСтроку()=1 цикл если Товар.Выбран()=1 тогда Ном = Ном + 1; Шк=Товар.ШтрихКод; Таб.ВывестиСекцию("Строка"); Ед.ИспользоватьВладельца(Товар); Ед.ВыбратьЭлементы(); Пока Ед.ПолучитьЭлемент()>0 Цикл Если (ПустаяСтрока(Ед.ШтрихКод)<>1) и ((Ед.ШтрихКод<>ШК)) и ((Число(Ед.ШтрихКод)<>0)) Тогда ШтрихКод=Ед.ШтрихКод; Таб.ВывестиСекцию("ДопШк"); КонецЕсли; КонецЦикла; конецЕсли; конецЦикла; Таб.ВывестиСекцию("Подвал"); Таб.Опции(0,0,7,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Перемещение",""); КонецПроцедуры //---------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------- процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные, КлавИлиПорт = "Порт") // Обработка сканера если (Источник = "BarCodeScaner") и (Событие = "BarCodeValue") тогда Данные=Прав(Данные,13); //Обрезаем лишнее из штрихкода Если КлавИлиПорт = "Порт" Тогда глСканерПосылкаДанных(1); //Оповещаем сканер о приеме КонецЕсли; //Ишем товар по штрихкоду Спр=СоздатьОбъект("Справочник.Номенклатура"); Если Спр.НайтиПоРеквизиту("ШтрихКод", Данные,1)<>0 Тогда //Штрихкод найден Товар1=Спр.ТекущийЭлемент(); Кол1=1; //Товар1=ШтрихКодУникальный(СокрЛП(Данные)); Иначе // Выделение кода товара из штрих-кода Код1=Лев(Данные,7); Код1=Прав(Код1,5); Если Спр.НайтиПоКоду(Число(Код1),0)<>0 Тогда //Код товара найден Товар1=Спр.ТекущийЭлемент(); //Выделение количества товара из штрих-кода Кол1=Прав(Данные,6); Кол1=Лев(Кол1,5); Кол1=Строка(Окр((Число(Кол1)/1000),2,1)); Иначе //Товар не найден Кол1=0; КонецЕсли; КонецЕсли; Если ПустоеЗначение(Товар1)=1 тогда //Товар не найден Предупреждение("Товар с кодом "+СокрЛП(Данные)+" не зарегистрирован.",30); иначе //Товар найден по коду или штрих-коду а=0; //Добавление количества товара в соответствующую строку ВыбратьСтроки(); Пока ПолучитьСтроку()>0 Цикл Если Товар=Товар1 Тогда АктивизироватьСтроку(НомерСтроки); а=1; Количество=Количество+Кол1; Сообщить("В строку " + НомерСтроки + ". с товаром под кодом (" + Код1 + ") " + Товар + " к количеству " + (Количество - Кол1) + " добавленно " + Кол1 + " = " + Количество); Прервать; КонецЕсли; КонецЦикла; //Добавление новой строки Если а=0 Тогда НоваяСтрока(); Товар=Товар1; Коэффициент=1; Количество=Кол1; АктивизироватьСтроку(НомерСтроки); АктивизироватьОбъект(Товар); Сообщить("Добавленна новая строка " + НомерСтроки + " по товару с кодом (" + Код1 + ") " + Товар + " количеством " + Количество); КонецЕсли; УстЕдиницы(Контекст); Форма.Обновить(1); конецЕсли; конецЕсли; конецПроцедуры //---------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------- Процедура ОбработкаВнешнегоСобытия1(Источник,Событие,Данные) Если (Источник="КассКлиент")и(Событие="Обмен") тогда ОбработкаВнешнегоКассовогоКлиента(Данные); иначе ОбработкаВнешнегоСобытияКонт(Источник,Событие,Данные,Контекст); конецЕсли; КонецПроцедуры //---------------------------------------------------------------------------------------------------------- Процедура ЖЖЖ() УдалитьСтроки(); Рег=СоздатьОбъект("Регистр.ТоварыНаСкладах"); Рег.ВременныйРасчет(); РассчитатьРегистрыНа(ДатаДок); Рег.УстановитьФильтр(,Склад,); Рег.ВыбратьИтоги(); Пока рег.ПолучитьИтог()>0 Цикл Если рег.Фирма<>Фирма(Рег.Товар) Тогда НоваяСтрока(); Товар=Рег.Товар; Количество=Рег.Остаток; Фирма2=Рег.Фирма; Фирма3=Фирма(Рег.Товар); Единица=БазоваяЕдиница(Товар); Коэффициент=1; КонецЕсли; конеццикла; КонецПроцедуры //---------------------------------------------------------------------------------------------------------- Процедура ПриВводеСтроки(); ГлобальнаяПроцедураПриВВодеСтроки(); КонецПроцедуры //------------------------------------------------------------------------- //Для сканирования клавиатурными сканерами Процедура ПодборСканером() ОчиститьОкноСообщений(); СканКод = ""; Пока ВвестиЗначение(СканКод, "Просканируйте пожалуйста штрих-код товаров!", "Строка", 17) = 1 Цикл СканКод = СокрЛП(СканКод); Если СканКод = "" Тогда СканКод = ""; Предупреждение("Нет информации, попробуйте снова!", 3); Продолжить; КонецЕсли; ОбработкаВнешнегоСобытия("BarCodeScaner", "BarCodeValue", СканКод, "Клав"); Предупреждение("Успешно сосканирован """ + СканКод + """!", 1); СканКод = ""; КонецЦикла; Пересч(); КонецПроцедуры//ПодборСканером() //------------------------------------------------------------------------------------------------------------- ПриЗаписиПерепроводить(1); //АвтоВремяТекущее(); вот это код документа перемещения, что? и куда? мне надо вставить, желательно наглядно показать |
|||
12
aka AMIGO
14.09.15
✎
09:32
|
(11) что? и куда? мне надо вставить, желательно наглядно показать
ИтогоВес = ТвояТаблицаЗначений.Итог("ИмяКолонкиВтвоейТаблицеЗначений"); //вот сюда вставить //а в Подвале таблицы предусмотреть поле "ИтогоВес" Таб.ВывестиСекцию("Подвал"); |
|||
13
AlaMaRit
14.09.15
✎
09:34
|
(12) Спасибо что ответил, Так подвал там есть, там итог суммы цены выводиться, мне надо чтоб ещё и сумма веса выводилась
|
|||
14
AlaMaRit
14.09.15
✎
09:37
|
(12)кажется код функции подсчета итога суммы вот этот
Процедура пересч() Выбратьстроки(); Пока получитьСтроку()>0 Цикл Цена=Товар.РозничнаяЦена.Получить(ДатаДок); Сумма=Цена*Количество; КонецЦикла; КонецПроцедуры |
|||
15
aka AMIGO
14.09.15
✎
09:38
|
(13) я не говорил, что надо создавать "Подвал". Секция с таким названием у тебя есть в таблице.
Теперь в этой секции, в нужном для итогового веса, поле, в свойствах поставь имя ИтогоВес, и Тип "Выражение" (14) Сумма=Цена*Количество; - это не итог, а текущее значение Суммы в строке. |
|||
16
AlaMaRit
14.09.15
✎
09:41
|
(15) так мне в сом код не надо ниче записывать?
|
|||
17
AlaMaRit
14.09.15
✎
09:42
|
(16) наверно опять чего то ляпнул
|
|||
18
aka AMIGO
14.09.15
✎
09:47
|
(16)
так я-ж в (12) тебе написал: ИтогоВес = ТвояТаблицаЗначений.Итог("ИмяКолонкиВтвоейТаблицеЗначений");// //этот оператор вставить перед следующим, Таб.ВывестиСекцию("Подвал"); //это оператор уже есть в твоем коде, вот перед ним и вставь |
|||
19
AlaMaRit
14.09.15
✎
09:49
|
Процедура Печать()
Если ГлПередПечатью(Контекст) = "Не печатать" Тогда Возврат; КонецЕсли;//ГлПередПечатью(Контекст) = "Не печатать" Таб = СоздатьОбъект("Таблица"); Ед=СоздатьОбъект("Справочник.Единицы"); Таб.ВывестиСекцию("Шапка"); ВыбратьСтроки(); Ном = 0; пока ПолучитьСтроку()=1 цикл если Товар.Выбран()=1 тогда Ном = Ном + 1; Шк=Товар.ШтрихКод; Таб.ВывестиСекцию("Строка"); Ед.ИспользоватьВладельца(Товар); Ед.ВыбратьЭлементы(); Пока Ед.ПолучитьЭлемент()>0 Цикл Если (ПустаяСтрока(Ед.ШтрихКод)<>1) и ((Ед.ШтрихКод<>ШК)) и ((Число(Ед.ШтрихКод)<>0)) Тогда ШтрихКод=Ед.ШтрихКод; Таб.ВывестиСекцию("ДопШк"); КонецЕсли; КонецЦикла; конецЕсли; конецЦикла; ИтогоВес = ТвояТаблицаЗначений.Итог("ИмяКолонкиВтвоейТаблицеЗначений"); Таб.ВывестиСекцию("Подвал"); Таб.Опции(0,0,7,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Перемещение",""); КонецПроцедуры Вот Так? |
|||
20
aka AMIGO
14.09.15
✎
09:54
|
(19) угу..
|
|||
21
aka AMIGO
14.09.15
✎
10:00
|
(19) посмотрел я твой код в (11), не увидел переменной "Вес"
Где Вес указывается? в карточке номенклатуры (т.е. Товара)? |
|||
22
AlaMaRit
14.09.15
✎
10:07
|
(21) ну когдатам подбираешь наменклатуру, у нас товар развесной и указывается вес
|
|||
23
aka AMIGO
14.09.15
✎
10:12
|
(22) я не так спросил.. надо было: "Где Вес хранится?"
|
|||
24
AlaMaRit
14.09.15
✎
10:12
|
(21) вот это что?
//------------------------------------------------------------------------- Процедура счВ() Кол=СчитатьВес(); Сообщить(Кол); Если (количество=0) или (количествострок()=0 )тогда НоваяСТрока(); Количество=кол; Иначе Количество=Кол; КонецЕсли; КонецПроцедуры |
|||
25
aka AMIGO
14.09.15
✎
10:16
|
(24) это - тихий ужас © :)
Процедура счВ есть, а обращения к процедуре счВ я в твоем коде не вижу. Стало быть, вес не подсчитывается, это раз, а два - он маскируется переменной кол.. Я думал, это количество.. |
|||
26
AlaMaRit
14.09.15
✎
10:17
|
(25) и как теперь быть?
|
|||
27
aka AMIGO
14.09.15
✎
10:17
|
А процедуры СчитатьВес() я вообще в коде не нашел..
|
|||
28
aka AMIGO
14.09.15
✎
10:19
|
(26) друже, у меня нет ни твоей конфигурации, ни Базы, я помочь уже ничем не могу. Может у кого есть ПУБ, смогут помочь..
Иначе это - гадание на кофейной гуще.. |
|||
29
AlaMaRit
14.09.15
✎
10:30
|
спасибо брат, что хоть попытался
|
|||
30
Dump
14.09.15
✎
10:35
|
"и как теперь быть?" - кинуть как проект на любую биржу, можно и здесь. Заплатить. Потом разобрать, что написано и как работает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |