Имя: Пароль:
1C
1C 7.7
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
"и как теперь быть?" - кинуть как проект на любую биржу, можно и здесь. Заплатить. Потом разобрать, что написано и как работает.