Имя: Пароль:
1C
1С v8
Неоперативное проведение
,
0 BarakuzA
 
11.10.11
15:33
Ситуация: большая часть документов движения (приходы, перемещения) делаются задним числом. в данном случаи получается что все документы проводятся неоперативно и остатки не контралируются. возможно как то объиграть такую ситуацию чтобы остатки контролировались??? конф ут типовая
1 Кокос
 
11.10.11
15:47
можно. запрограммировать. заполнение неоперативное серий программируется гдето за полчаса. контроль остатков не помню за сколько делал. от часа до 4х или тоже за полчаса. давно делал в 10.3
2 BarakuzA
 
11.10.11
15:48
в документе проведение по упр учете прописать контроль остатков при неоперативном учете??
3 Ненавижу 1С
 
гуру
11.10.11
15:49
не взлетит в самом общем случае, точнее может и взлетит, но тормозить будет очень долго
4 Кокос
 
11.10.11
15:51
(3) да не особо тормозит. у трех или 4х клиентов делал. норм летает. добавить в глобальные процедуры дату и рассовать даты по запросам. работает без проблем. левый конечно контроль. но свести концы с концами получается в принципе никто не жаловался
5 BarakuzA
 
11.10.11
15:54
запрос проверяет остаток  на дата документа и если нехватате, то тормозит проведение документа???
6 Ненавижу 1С
 
гуру
11.10.11
15:55
(4) ключевое слово "левый" контроль
7 Fragster
 
гуру
11.10.11
15:56
делал контроль по минимальному остатку от позиции документа до "точки актуальности"... не супер тупило, ну так и назад лезли только на пару недель максимум
8 Кокос
 
11.10.11
15:58
(6) да в принципе нормальный контроль. :) а если приход задним числом вводят или поставщик или клиент(в отношениях с которым имеет приоритет ихняя бухгалтерия. звонят и меняют дату прих\расх накладных. творят что хотят а тебе более мелкому деваться некуда)а товародвижения хочется привести в нормальный вид то деваться некуда. )
9 BarakuzA
 
11.10.11
15:59
(8) - не осталось примера кода что да как для образца???
10 Рэйв
 
11.10.11
16:00
(0)Буквально на днях делал проверку остатков на неопереативное проведение.

Дарю:-)


<1C>
   тТовары.Свернуть(ИмяКолонкиНом,ИмяКолонкиКол); //обойдем случай дубля,трубля и четверубля строк.
   Если Ответ Тогда
       
       //<------Сергей.Составление списка в параметр запроса , заполнение типизированной тз для ВТ
       спТовары=Новый СписокЗначений;
       тТоварыВЗапрос=Новый ТаблицаЗначений;
       тТоварыВЗапрос.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
       тТоварыВЗапрос.Колонки.Добавить("КоличествоКСписанию",Новый ОписаниеТипов("Число"));
       Для Каждого Стр Из тТовары Цикл
           НовСтр=тТоварыВЗапрос.Добавить();
           НовСтр.Номенклатура=Стр[ИмяКолонкиНом];
           НовСтр.КоличествоКСписанию=Стр[ИмяКолонкиКол];
           Если спТовары.НайтиПоЗначению(НовСтр.Номенклатура)=Неопределено Тогда
               спТовары.Добавить(НовСтр.Номенклатура);
           КонецЕсли;    
       КонецЦикла;    
       //------------>
       
       Если РежимПроведения=РежимПроведенияДокумента.Неоперативный Тогда
           
           //Если режим неоперативный,т.е. работают прошлым периродом, то будем реализовать схему двойной проверки остатков
           //1. Брем остатки на дату документа и на тек. момент.
           //2. Сравниваем и получаем меньшее из остатков.С ним и сравниваем списываемое количество. При таком подходе никогда не уйдем в минус
           //+ну и естественно учитываем резервы на оба момента
           
           Запрос=Новый Запрос;
           Граница = Новый Граница(Момент, ВидГраницы.Исключая);
           Запрос.УстановитьПараметр("Граница",Граница);
           Запрос.УстановитьПараметр("тз",тТоварыВЗапрос);
           Запрос.УстановитьПараметр("Товары",спТовары);
           Запрос.УстановитьПараметр("Склад",Склад);
           УсловиеПоОрганизации="";
           Если ТипЗнч(Организация)=Тип("СправочникСсылка.Организации") И  ЗначениеЗаполнено(Организация) Тогда
               Запрос.УстановитьПараметр("Организация",Организация);
               УсловиеПоОрганизации= " И Организация=&Организация " ;
           КонецЕсли;    

           Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
           Запрос.Текст="
           //-----------------------Поднимаем полученную таблицу товаров и количества во временную таблицу
                        |ВЫБРАТЬ
                        |    т.Номенклатура КАК Номенклатура,
                        |    т.КоличествоКСписанию КАК КолСписать,
                        |    0 КАК ОстатокНаМомент,
                        |    0 КАК ОстатокОперативный,
                        |    0 КАК РезервНаМомент,
                        |    0 КАК РезервОперативный
                        |ПОМЕСТИТЬ ВТ
                        |ИЗ
                        |    &тз КАК т
                        |;
                        |
                        |////////////////////////////////////////////////////////////////////////////////
                       
                       
           //-----------------------Группировочный верхний запрос            
                        |ВЫБРАТЬ
                        |    ЗапросОстатков.Номенклатура,
                        |    СУММА(ЗапросОстатков.КолСписать) КАК КолСписать,
                        |    СУММА(ЗапросОстатков.ОстатокНаМомент) КАК ОстатокНаМомент,
                        |    СУММА(ЗапросОстатков.ОстатокОперативный) КАК ОстатокОперативный,
                        |    СУММА(ЗапросОстатков.РезервНаМомент) КАК РезервНаМомент,
                        |    СУММА(ЗапросОстатков.РезервОперативный) КАК РезервОперативный,
                        |    СУММА(ЗапросОстатков.ОстатокНаМомент) - СУММА(ЗапросОстатков.РезервНаМомент) КАК ОстатокНаМоментРеальный,
                        |    СУММА(ЗапросОстатков.ОстатокОперативный) - СУММА(ЗапросОстатков.РезервОперативный) КАК ОстатокОперативныйРеальный
                        |ИЗ
                       
                       
           //-----------------------Выборка из ВТ
                        |    (ВЫБРАТЬ
                        |        ВТ.Номенклатура КАК Номенклатура,
                        |        ВТ.КолСписать КАК КолСписать,
                        |        ВТ.ОстатокНаМомент КАК ОстатокНаМомент,
                        |        ВТ.ОстатокОперативный КАК ОстатокОперативный,
                        |        ВТ.РезервНаМомент КАК РезервНаМомент,
                        |        ВТ.РезервОперативный КАК РезервОперативный
                        |    ИЗ
                        |        ВТ КАК ВТ
                        |    
                        |    ОБЪЕДИНИТЬ
                       
           //-----------------------Остатки по момент документа (исключая его)            
                        |    
                        |    ВЫБРАТЬ
                        |        ТоварыНаСкладахОстатки.Номенклатура,
                        |        0,
                        |        ТоварыНаСкладахОстатки.КоличествоОстаток,
                        |        0,
                        |        0,
                        |        0
                        |    ИЗ
                        |        РегистрНакопления.ТоварыНаСкладах.Остатки(
                        |                &Граница,
                        |                Номенклатура В (&Товары)
                        |                    И Склад = &Склад"+УсловиеПоОрганизации+") КАК ТоварыНаСкладахОстатки
                        |    
           //-----------------------Остатки оперативные(на тек момент)
                        |    ОБЪЕДИНИТЬ
                        |    
                        |    ВЫБРАТЬ
                        |        ТоварыНаСкладахОстатки.Номенклатура,
                        |        0,
                        |        0,
                        |        ТоварыНаСкладахОстатки.КоличествоОстаток,
                        |        0,
                        |        0
                        |    ИЗ
                        |        РегистрНакопления.ТоварыНаСкладах.Остатки(
                        |                ,
                        |                Номенклатура В (&Товары)
                        |                    И Склад = &Склад"+УсловиеПоОрганизации+") КАК ТоварыНаСкладахОстатки
                        |    
                        |    ОБЪЕДИНИТЬ
                        |    
           //-----------------------Резервы на момент документа(исключая его)            
                        |    ВЫБРАТЬ
                        |        ТоварыВРезервеНаСкладах.Номенклатура,
                        |        0,
                        |        0,
                        |        0,
                        |        ТоварыВРезервеНаСкладах.КоличествоОстаток,
                        |        0
                        |    ИЗ
                        |        РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                        |                &Граница,
                        |                Номенклатура В (&Товары)
                        |                    И Склад = &Склад"+УсловиеПоОрганизации+") КАК ТоварыВРезервеНаСкладах
                        |    
                        |    ОБЪЕДИНИТЬ
           //-----------------------Резервы оперативные
                        |    
                        |    ВЫБРАТЬ
                        |        ТоварыВРезервеНаСкладах.Номенклатура,
                        |        0,
                        |        0,
                        |        0,
                        |        0,
                        |        ТоварыВРезервеНаСкладах.КоличествоОстаток
                        |    ИЗ
                        |        РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                        |                ,
                        |                Номенклатура В (&Товары)
                        |                    И Склад = &Склад"+УсловиеПоОрганизации+") КАК ТоварыВРезервеНаСкладах) КАК ЗапросОстатков
                        |
                        |СГРУППИРОВАТЬ ПО
                        |    ЗапросОстатков.Номенклатура";
           тРез=Запрос.Выполнить().Выгрузить();
           Запрос.МенеджерВременныхТаблиц.Закрыть();
           Для Каждого Стр Из тРез Цикл
               ОстатокНаСкладе=Мин(Стр.ОстатокНаМоментРеальный,Стр.ОстатокОперативныйРеальный);
               Если Стр.КолСписать>ОстатокНаСкладе Тогда
                   Ответ=Ложь;
                   Сообщить(""+Стр.Номенклатура+". Списывается: "+Стр.КолСписать+". Остаток на складе("+Склад+"): "+ОстатокНаСкладе+". Не хватает:"+(Стр.КолСписать-ОстатокНаСкладе),СтатусСообщения.Важное);
               КонецЕсли;    
           КонецЦикла;    
       Иначе
           
       КонецЕсли;        

</1С>
11 Кокос
 
11.10.11
16:01
(9) да я к ним еще не скоро заеду.
(10) можно конечно и так. но можно и в стандартные запросы в общих модулях даты рассовать и все :)
12 Fragster
 
гуру
11.10.11
16:02
(10)
//2. Сравниваем и получаем меньшее из остатков.С ним и сравниваем списываемое количество. При таком подходе никогда не уйдем в минус

это фигня
13 BarakuzA
 
11.10.11
16:02
(10) ну вот и еще одна предстоит бессонная ночь!!!
14 Рэйв
 
11.10.11
16:03
(12)Обоснуй
15 Ненавижу 1С
 
гуру
11.10.11
16:04
а если вдруг взяли и перемещение сняли с проведения, а вот они минуса!
16 Fragster
 
гуру
11.10.11
16:04
(14)
день движение
1 +10
3 -10
4 +10

в день "2" хотим провести реализацию
17 Fragster
 
гуру
11.10.11
16:05
(15) на отмену проведения тоже контроль
18 Рэйв
 
11.10.11
16:06
(16)В чем проблема? На оба момента остаток 10
10>2  даст провети.
Я имел в виду минусы на оперативный момент.
19 Ненавижу 1С
 
гуру
11.10.11
16:06
(17) умаяться можно, потому как надо по-хорошему проверять чтоб не конечный вообще итог был >0 а после каждого документа, то есть как в (16)
20 Рэйв
 
11.10.11
16:07
(19)Отмену отслеживать запаришься.Так что это на совести юзверей.
21 Ненавижу 1С
 
гуру
11.10.11
16:07
(20) тогда вообще к чему контроль, если в нем дырки?
22 Рэйв
 
11.10.11
16:08
(21)Ну хоть что-то..Совсем ьез контроля можно хз в какую яму залесть
23 Fragster
 
гуру
11.10.11
16:08
(19) да, я так и делал, после записи набора проверялся, не образовался ли где минус от периода набора до конца - если есть - то откатывалось все назад.
24 Рэйв
 
11.10.11
16:08
к тому же при минусах сразу перестанет проводится.
25 Fragster
 
гуру
11.10.11
16:09
(23)+ режим "допроведения" и отсустсвие автоматического удаления движений
26 BarakuzA
 
11.10.11
16:09
(24)-это оперативный режим, а если неоперативный - пишет что не может по партиям списать.хоть какой то сигнал,что то не так
27 Рэйв
 
11.10.11
16:13
(26)У меня слава богу нет партий..потому я и сделал свою проверку.Все эти километровые запросы в УТ и УПП  такое г...
28 Кокос
 
11.10.11
16:14
(26) угу и ведомость по остаткам все равно надо приводить в норму. да и выгрузка в БП20 по 41му счету все равно должна быть ровной
29 BarakuzA
 
11.10.11
16:16
а если просто сделать так: что если не может распределить по партиям, то не проводить документ???
30 BarakuzA
 
11.10.11
16:16
(28) - у меня нет бп и 41 счета.
31 Рэйв
 
11.10.11
16:23
(29) я запрещаю проведение. Пусть разбираются
32 BarakuzA
 
11.10.11
16:39
(31) я думаю что такой вариант лучше всего.
33 BarakuzA
 
11.10.11
16:59
а в каком месте стоп лучше всего поставить???