Имя: Пароль:
1C
IT-новости
оприходование
0 Mt111
 
18.07.14
16:28
7.7 сетевая ТИС на дбф
есть документ в шапке есть поля "Склад", "ТМЦ", "количество", "ЕдиницаТМЦ", "Фирма" и есть табличная часть формы.нужно списать ТМЦ то которое выбрано в шапке, а списывается с табличной части
код:

Процедура глИзменитьОстатки(Конт, спФирмы, Склад, ФлагВозврата, ФлагПрихода, ФлагУчетаОстатков=0, ФлагПеремещения=2, УчитыватьРезерв=0, Счет="") Экспорт
    
    ВремРегистры=СоздатьОбъект("Регистры");
    Если (ФлагПрихода = 0) или (ФлагУчетаОстатков = 1) Тогда
        // будем использовать остатки, рассчитаем итоги
        спТовары = СоздатьОбъект("СписокЗначений");
        Конт.ВыгрузитьТабличнуюЧасть(спТовары,"Товар");
        
        РегОстатки=ВремРегистры.ОстаткиТоваров;
        
        РегОстатки.УстановитьЗначениеФильтра("Фирма",спФирмы,2);
        РегОстатки.УстановитьЗначениеФильтра("Товар",спТовары,2);
        РегОстатки.УстановитьЗначениеФильтра("Склад",Склад,1);

        Если УчитыватьРезерв=1 Тогда
            РегРезерв=ВремРегистры.РезервыТоваров;
            
            РегРезерв.УстановитьЗначениеФильтра("Товар",спТовары,2);
            Если Конт.ИтогиАктуальны()=0 Тогда
                РегРезерв.ВременныйРасчет(1);            
            КонецЕсли;                     
        КонецЕсли;
        
        Если Конт.ИтогиАктуальны()=0 Тогда
            РегОстатки.ВременныйРасчет(1);
            ВремРегистры.РассчитатьРегистрыНа(Конт.ТекущийДокумент());
        КонецЕсли;    
        
    КонецЕсли;                                       
    
    ВремРегистры.Актуальность(1);
    Для Инд = 1 по спФирмы.РазмерСписка() Цикл
        текФирма=спФирмы.ПолучитьЗначение(Инд);
        
        Конт.ВыбратьСтроки();
        Пока Конт.ПолучитьСтроку() = 1 Цикл    
            
            Товар = Конт.Товар;
            
            Если Товар.ВидТовара = Перечисление.ВидыТоваров.Услуга Тогда
                // услуги по остаткам не проводим
                Продолжить;
            КонецЕсли;
            
            ОстатокТовара = Конт.Количество * Конт.Коэффициент;
            
            Конт.Регистр.ОстаткиТоваров.ПривязыватьСтроку(Конт.НомерСтроки);
            
            Если ФлагПрихода = 1 Тогда
                
                Конт.Регистр.ОстаткиТоваров.Фирма = текФирма;
                Конт.Регистр.ОстаткиТоваров.Товар = Товар;
                Конт.Регистр.ОстаткиТоваров.Склад = Склад;
                Конт.Регистр.ОстаткиТоваров.ФлагУчета = ФлагПеремещения;
                Если ФлагВозврата = 0 Тогда
                    Конт.Регистр.ОстаткиТоваров.ОстатокТовара = ОстатокТовара;
                    Конт.Регистр.ОстаткиТоваров.ДвижениеПриходВыполнить();
                Иначе
                    Конт.Регистр.ОстаткиТоваров.ОстатокТовара = - ОстатокТовара;
                    Конт.Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
                КонецЕсли;
            Иначе
                // проверка остатка
                ТекущийОстаток = РегОстатки.Остаток(текФирма,Товар,Склад,"ОстатокТовара");
                Текст = ?(ПустоеЗначение(текФирма)=1,"Управленческий учёт.",Шаблон("Фирма [текФирма]."));
                Если ОстатокТовара > ТекущийОстаток Тогда
                    глТрассировка(Текст + Шаблон("Строка [Конт.НомерСтроки]. На складе [Склад] недостаточно товара [Товар].
                    | Имеется [ТекущийОстаток], требуется [ОстатокТовара]."),0);
                    Если Константа.РазрешитьОтрицательныеОстаткиТоваров = Нет Тогда
                        глНеПроводить(Конт);
                        ВремРегистры.Актуальность(0);
                        Возврат;
                    КонецЕсли;
                КонецЕсли;
                // проверка свободного остатка
                Если УчитыватьРезерв=1 Тогда
                    Резерв = РегРезерв.СводныйОстаток(Товар,,"РезервТовара");
                    РезервПоСчету = РегРезерв.Остаток(Товар,Счет,"РезервТовара");
                    ОстатокВсего = РегОстатки.СводныйОстаток(текФирма,Товар,,"ОстатокТовара");
                    
                    СвободныйОстаток = Мин(РезервПоСчету, ОстатокВсего) + Макс(0,ОстатокВсего - Резерв);
                    
                    Если ОстатокТовара > СвободныйОстаток Тогда
                        глТрассировка(Текст + Шаблон("Строка [Конт.НомерСтроки]. Недостаточно свободного товара [Товар].
                        | Свободный остаток [СвободныйОстаток], необходимо [ОстатокТовара]."),0);
                        Если (Константа.РазрешитьПродаватьРезерв = Нет) и (Константа.РазрешитьОтрицательныеОстаткиТоваров = Нет) Тогда
                            глНеПроводить(Конт);
                            ВремРегистры.Актуальность(0);
                            Возврат;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;

                Конт.Регистр.ОстаткиТоваров.Фирма = текФирма;
                Конт.Регистр.ОстаткиТоваров.Товар = Товар;
                Конт.Регистр.ОстаткиТоваров.Склад = Склад;
                Конт.Регистр.ОстаткиТоваров.ФлагУчета = ФлагПеремещения;
                
                Если ФлагВозврата = 0 Тогда
                    Конт.Регистр.ОстаткиТоваров.ОстатокТовара = ОстатокТовара;
                    Конт.Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
                Иначе
                    Конт.Регистр.ОстаткиТоваров.ОстатокТовара = - ОстатокТовара;
                    Конт.Регистр.ОстаткиТоваров.ДвижениеПриходВыполнить();
                КонецЕсли;
                
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    ВремРегистры.Актуальность(0);    
    
КонецПроцедуры


как можно его изменить чтобы работало как нужно
1 Ёпрст
 
18.07.14
16:36
http://infostart.ru/public/79515/

на вот, запиши что хочешь куда угодно, без правки кода рученьками
2 Ёпрст
 
18.07.14
16:36
Если че, нужно заменить выборку строк таб части на реквизиты шапки доков.. Только вот, нахрена ? спрашивается в задачнике..
3 Mt111
 
18.07.14
16:39
(2) суть вот в чем, нужно организовать калькуляцию блюд
ТМЦ с шапки нужно Дооприходовать, а с таб.части списать
4 Ёпрст
 
18.07.14
16:40
(3) делай, разрешаю.
5 Ёпрст
 
18.07.14
16:40
хотя, не проще ли, оприходыванием оприходывать, а списанием списать ?
и.. ничего не писать ручонками..
6 Mt111
 
18.07.14
16:42
дак... это ...не получается
сначала с табличной части все списывается а потом дооприходывается
7 Mt111
 
18.07.14
16:43
не непроще
8 Mt111
 
18.07.14
16:52
у номнклатуры есть подчиненый справочник(срецептурой)
в шапке выбираешь блюдо а в табючасти появляется все что входит в рецепт
9 Ёпрст
 
18.07.14
16:55
Ну тогда переписывай модуль дока.
10 Ёпрст
 
18.07.14
16:56
ставишь turbomd и вперёд, полчаса и готово
11 torgm
 
21.07.14
07:57
(0) А чем комплектация/разукомплектация не угодила???
12 mikecool
 
21.07.14
07:58
и при чем здесь ит-новости? ничего нового не увидел
Закон Брукера: Даже маленькая практика стоит большой теории.