Имя: Пароль:
1C
 
Документ не проведен, а движения по регистру есть
0 Klesk
 
14.08.07
12:06
Программно проводил заявку покупателя: Провести(1), не сдвинулась точка актуальности почему то, но документ провелся, отменил проведение, документ не проводится, пишет недостаточно свободного количества, так как  зарезервирован товар, причем  этим же непроведенным документом... Как так может быть?
1 ТелепатБот
 
гуру
14.08.07
12:06
2 Стрелок
 
14.08.07
12:07
кривой
3 Стрелок
 
14.08.07
12:07
кривой код
4 Skom
 
14.08.07
12:08
в документе не стоит галка автоматически удалять движения документа
это в метаданных
5 Klesk
 
14.08.07
12:11
(3) согласен, хочу поправить
(4) в заявке это сделано еще 1с, наверно это не зря

Наверно вот этого где то не хватает?:
// Удаление движений по регистрам.
Для Номер = 1 По Метаданные.Регистр() Цикл
   ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор);
КонецЦикла;

А как программно проводить документ в разделенном режиме двигая точку актуальности?
6 у лю 427
 
14.08.07
12:11
хм.... хорошая в (2) самокритика....


P.S. это фича такая в 8-ке, уже 4 года удаляют. Чтобы программисты не спали и трах.лись...
7 Klesk
 
14.08.07
12:12
(6) у меня 7,7
8 dk
 
14.08.07
12:17
(4,5) бред
9 Стрелок
 
14.08.07
12:18
(6) а при чём тут 8-ка?

(4) а при чём тут "не удалять движения" у непроведённого документа?
10 перцептрон
 
14.08.07
12:29
(0)(4) изврат. Получаеться что движения удаляються ПриОтменеПроведенияДокумента()?
11 Klesk
 
14.08.07
12:38
(10) этот изврат придуман фирмой 1с, а вот зачем...
12 Klesk
 
14.08.07
12:39
(10) нет, этой процедуры нет в модуле
13 Стрелок
 
14.08.07
12:40
(12)

ответь на вопросы

1. документ проведён или не
2. выложи код который выдаёт что товар уже зарезервирован заказом
14 Klesk
 
14.08.07
12:50
Документ не проведен, в остатках показывает что зарезервировано количество этим документом.

Вот кусок функции:
Функция СоздатьРезерв(КолРезерва,ТекНоменклатура,ТекСклад,ВремРезервыТМЦ,ВремОстаткиТМЦ)
   
   ОстатокНаСкладе = 0;
   РезервНаСкладе  = 0;
   
   // проверим, а есть ли у нас вообще-то свободный остаток?
   Если ПустоеЗначение(ТекСклад) = 0 Тогда
       Если ПустоеЗначение(ФирмаДляОстатковТМЦ) = 1 Тогда // Фильтр по фирме не нужен
           ОстатокНаСкладе = ВремОстаткиТМЦ.СводныйОстаток(,ТекНоменклатура,ТекСклад,, "Количество");  
           РезервНаСкладе  = ВремРезервыТМЦ.СводныйОстаток(,ТекНоменклатура,ТекСклад,,,"Количество");  
       ИначеЕсли ТипЗначенияСтр(ФирмаДляОстатковТМЦ) = "СписокЗначений" Тогда // Нужны сводные остатки по нескольким фирмам
           
           СчетчикЦикла = 0;
           Для СчетчикЦикла = 1 По ФирмаДляОстатковТМЦ.РазмерСписка() Цикл
               
               ТекФирма        = ФирмаДляОстатковТМЦ.ПолучитьЗначение(СчетчикЦикла);
               ОстатокНаСкладе = ОстатокНаСкладе +
               ВремОстаткиТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,ТекСклад,, "Количество");
               РезервНаСкладе  = РезервНаСкладе +
               ВремРезервыТМЦ.СводныйОстаток(ТекФирма,ТекНоменклатура,ТекСклад,,,"Количество");
           КонецЦикла;
           
       ИначеЕсли ТипЗначенияСтр(ФирмаДляОстатковТМЦ) = "Справочник" Тогда  // нужны сводные остатки только по одной фирме
           ОстатокНаСкладе = ВремОстаткиТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,ТекСклад,, "Количество");  
           РезервНаСкладе  = ВремРезервыТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,ТекНоменклатура,ТекСклад,,,"Количество");  
       КонецЕсли;    
       МожноСделатьРезервНаСкладе = Макс(0,Мин(КолРезерва,(ОстатокНаСкладе - РезервНаСкладе)));
       
       // проверка резерва на складе
       Если (МожноСделатьРезервНаСкладе < КолРезерва)
       и    (ВидОперации = Перечисление.ВидыОперацийЗаявок.НаСклад)
       Тогда
           //Смотри за кем зарезервировано              
           
           Если РезервНаСкладе>0 Тогда
               ТаблЗн=СоздатьОбъект("ТаблицаЗначений");
               Если ПустоеЗначение(ФирмаДляОстатковТМЦ)=1 Тогда
                   
                   ВремРезервыТМЦ.УстановитьФильтр(ФирмаДляОстатковТМЦ,ТекНоменклатура,ТекСклад);
               Иначе
                   ВремРезервыТМЦ.УстановитьФильтр(,ТекНоменклатура,ТекСклад);
               КонецЕсли;    
               
               ВремРезервыТМЦ.ВыгрузитьИтоги(ТаблЗн,1,1);
               
               ТаблЗн.ВыбратьСтроки();
               КемЗарезервировано=РазделительСтрок+"     (";
               Пока  ТаблЗн.ПолучитьСтроку()=1 Цикл
                   КемЗарезервировано=КемЗарезервировано+ТаблЗн.Количество+" "+ТекНоменклатура.БазоваяЕдиница+" - "+глПредставлениеДокумента(ТаблЗн.ЗаявкаПокупателя)+" ("+ТаблЗн.ЗаявкаПокупателя.Автор+")"+" ; ";
               КонецЦикла;
               
               КемЗарезервировано=Лев(КемЗарезервировано,СтрДлина(КемЗарезервировано)-3)+")";
           КонецЕсли;
           глНеПроводить(Контекст,"На складе нет нужного свободного количества ТМЦ "+ТекНоменклатура.Наименование
           +". "+РазделительСтрок+"    Всего осталось "+Строка(ОстатокНаСкладе)+" "+ТекНоменклатура.БазоваяЕдиница
           +". "+РазделительСтрок+"    Зарезервировано по выписанным Заявкам "+Строка(РезервНаСкладе)
           +" "+ТекНоменклатура.БазоваяЕдиница+"."+КемЗарезервировано+РазделительСтрок+"Требуемое количество "+Строка(КолРезерва)+" "+ТекНоменклатура.БазоваяЕдиница);
           Возврат 0;
       КонецЕсли;
15 FreeFin
 
14.08.07
13:00
Программно проводил...=думкаю шо не "этим" резервируется. ищи док наосновании, кот от имени "этого" твои резервы двигает.
16 Klesk
 
14.08.07
13:17
удалил все документы которые вводил - резерв остался :)
17 Klesk
 
14.08.07
13:23
помогло только в конфигураторе - пересчет служебных данных
18 Skom
 
14.08.07
13:25
(9) если не стоит галка автоматом удалять движения тогда провел док потом отменил а движения остались вот проверь....
19 Klesk
 
14.08.07
13:29
(18) Вся фишка в том, что при ручном создании и проведении работает нормально, а при программном такая вот...
20 Ёпрст2
 
14.08.07
13:30
(18) Чего, правда ? :)) ... фантазёры ...
21 Стрелок
 
14.08.07
13:30
(18) бред полный. учите матчасть. у непроведённого документа не может быть никаких движений. в любом положении галки. она работает только при повторном проведении проведённого документа
22 Skom
 
14.08.07
13:33
(21) у изначально непроведенного ДА
а вот если проведешь док а потом сделаешь отмену проведения то движения ОСТАЮТСЯ вот ради интереса попробуй
убери галку у опердока проведи его, проверь движения...
потом отмени и зайди в меню действия - движения документа
тока процедуру ОтменаПроведения() пустую оставь и потом посмотрим кто прав а кто нет
23 Skom
 
14.08.07
13:35
точнее обработкаудаленияпроведения
24 Skom
 
14.08.07
13:38
блин народ...
тока что попробовал не канает...что за бред что за фигня....я как то сталкивался с таким...было все как я описал я сам долго не мог въехать
25 Стрелок
 
14.08.07
13:37
(22) хватит нести бред
26 Skom
 
14.08.07
13:39
блин ваще подстава....
но я точно помню что было такое
27 Skom
 
14.08.07
13:39
(25) все не несу...
28 Skom
 
14.08.07
13:40
просто реально говорю сам долго въезжал что было когда подобная ситуевина была...
может на старой платформе было подобное может что ...но тут я не ошибаюсь был у мну такой косяк....
блин вот специально найду 21-ую платформу и проверю
29 Klesk
 
14.08.07
13:41
Стрелок, ты не прав - движения остаются, и уходят только с пересчетом служебных данных, их надо вручную чистить, только где и как - не пойму...
30 Стрелок
 
14.08.07
13:43
(29) см 22
31 Skom
 
14.08.07
13:46
движения чистишь в предопределенной процедуре..ОбработкаУдаленияПроведения()
32 FreeFin
 
14.08.07
13:46
движения непроведенного документа в снеговике имеют/ли место...и в релизах до 14-го в клюшках.
33 Skom
 
14.08.07
13:48
(32) нугде то я с этим глюком точно сталкивался....
34 FreeFin
 
14.08.07
13:50
а в ВремРезервыТМЦ.ВыгрузитьИтоги(ТаблЗн,1,1);
Смотрим на КонОст = причьома тута движения? Итоги кривые а движения ищим.
35 Klesk
 
14.08.07
13:53
Релиз 25
ОбработкаУдаленияПроведения() отсутствует
Когда вручную вводишь док - никаких проблем
36 Стрелок
 
14.08.07
13:54
о майн гот... пора поднимать на крыло пита
37 Klesk
 
14.08.07
14:09
Добавил ПроводитьПослеТА(1,1);

Вроде заработало :)
38 Стрелок
 
14.08.07
14:15
(37) читай № 3 и думай о чём ты тут спорил