Имя: Пароль:
1C
1C 7.7
v7: Остатки видны только на следующий день после проводки
, ,
0 Alekssey
 
23.04.13
15:58
Здравствуйте, При проводке приходной накладной, на остатках этот товар появляется только на следующий день, в чем проблема? Отчет формируется так:
   Рег=СоздатьОбъект("Регистр.ОстаткиПродуктов");
   Рег.ВременныйРасчет(1);
   РассчитатьРегистрыНа(ВыбДата);
   

   Рег.ВыбратьИтоги();
   Пока Рег.ПолучитьИтог()=1 цикл
       Товар=Рег.Продукт;
       Количество=Рег.Количество;
       Сумма=Рег.Сумма;
       Таб.ВывестиСекцию("Опис");
   КонецЦикла;
1 ДенисЧ
 
23.04.13
15:59
потому что
РассчитатьРегистрыНа(ВыбДата);
2 Alekssey
 
23.04.13
15:59
Проведение накладной
Процедура ОбработкаПроведения()
 ВыбратьСтроки();
 Пока ПолучитьСтроку() = 1 Цикл
   Регистр.ОстаткиПродуктов.Продукт=Товар ;
   Регистр.ОстаткиПродуктов.Количество = Кол;
   Регистр.ОстаткиПродуктов.Сумма = Сумма;
   Регистр.ОстаткиПродуктов.ДвижениеПриходВыполнить();
КонецЦикла;
КонецПроцедуры
3 Alekssey
 
23.04.13
15:59
То есть если в ВыбДата укажу сегодня, то остатков не будет?
4 ДенисЧ
 
23.04.13
16:00
Ты говоришь НА - это значит "на начало дня". Что говоришь - то и получаешь
5 Alekssey
 
23.04.13
16:00
Еще пробовал так, но проблема осталась
Функция КонтрольОстатка(Продукт)

   Рег=СоздатьОбъект("Регистр.ОстаткиПродуктов");
   Спр=СоздатьОбъект("Справочник.Продукты");
   Спр.НайтиПоНаименованию(Продукт);
   Эл=Спр.ТекущийЭлемент();
   
   Кол=Рег.Остаток(Эл,"Количество");
   Возврат Кол;
   Рег="";
   Спр="";

КонецФункции
6 Alekssey
 
23.04.13
16:01
А как на конец тогда будет?
7 rasswet
 
23.04.13
16:01
23.59.59 ?
8 acsent
 
23.04.13
16:04
РассчитатьРегистрыПо
9 palpetrovich
 
23.04.13
16:04
(0) может посмотреть как в типовых отчеты строятся?
зы точно точно v8? :)
10 Alekssey
 
23.04.13
16:06
Оп, извиняюсь не там написал, 7
11 Alekssey
 
23.04.13
16:06
Где посмотреть?
12 Alekssey
 
23.04.13
16:07
Если писать РассчитатьРегистрыПо то ошибка РассчитатьРегистрыПо(ВыбДата);
{Отчет.ОстаткиНаСкладе.Форма.Модуль(17)}: Не могу рассчитать временные итоги после ТА!
13 palpetrovich
 
23.04.13
16:07
(11) в любой ТиС, отчет ОстаткиТоваров к примеру
14 Alekssey
 
23.04.13
16:09
А почему тогда вот эта конструкция не дает точных остатков:
Функция КонтрольОстатка(Продукт)

   Рег=СоздатьОбъект("Регистр.ОстаткиПродуктов");
   Спр=СоздатьОбъект("Справочник.Продукты");
   Спр.НайтиПоНаименованию(Продукт);
   Эл=Спр.ТекущийЭлемент();
   
   Кол=Рег.Остаток(Эл,"Количество");
   Возврат Кол;
   Рег="";
   Спр="";

КонецФункции
15 palpetrovich
 
23.04.13
16:24
(14) нарисуй сюда струкруру регистра
16 viktor_vv
 
23.04.13
16:26
(14) А точные остатки ты где смотришь ?
17 viktor_vv
 
23.04.13
16:28
И в отчетах лчше пользоваться запросами.
18 palpetrovich
 
23.04.13
16:44
ну как хо... попробуй так:
   ТекстЗапроса="        
   |ПЕРИОД С ВыбДата По ВыбДата;
   |Продукт    = Регистр.ОстаткиПродуктов.Продукт;
   |Количество    = Регистр.ОстаткиПродуктов.Количество;
   |Группировка Продукт;
   |Функция Остаток = КонОст(Количество);
   |Условие (Продукт  =  ВыбПродукт);
   |";  
   Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
       Возврат;
   КонецЕсли;
   Если Запрос.Группировка("Продукт") = 1 Тогда
       Сообщить("Остаток1= "+Запрос.Остаток);
   КонецЕсли;
19 Alekssey
 
23.04.13
16:53
С этим разобрался, нужно было просто сделать Временный расчет(0)
20 Alekssey
 
23.04.13
16:54
И еще подскажите, как проконтролировать, чтобы при вводе данных в документе в табличную часть, все столбцы в каждой строке были заполнены. То есть если строку полностью заполнили  выполнялась какая нибудь процедура.
21 DigitalDolphin
 
23.04.13
16:58
(19) Если выключить ВременныйРасчет, то остатки будут только на ТА
22 palpetrovich
 
24.04.13
13:27
(20) так можно:
МетаданныеДокумента = Метаданные.Документ(ТекДокумент.Вид());   // ТекДокумент - твой док
Если МетаданныеДокумента.РеквизитТабличнойЧасти()=0 Тогда    
   Возврат;
КонецЕсли;
ТекДокумент.ВыбратьСтроки();
Пока ТекДокумент.ПолучитьСтроку() = 1 Цикл  
   Для Индекс=1 По МетаданныеДокумента.РеквизитТабличнойЧасти() Цикл
       Идентификатор = МетаданныеДокумента.РеквизитТабличнойЧасти(Индекс).Идентификатор;
       Если ПустоеЗначение(ТекДокумент.ПолучитьАтрибут(Идентификатор))=1 Тогда
           Сообщить("Не заполнено " + Идентификатор + " в строке " + ТекДокумент.НомерСтроки);
       КонецЕсли;
   КонецЦикла;
КонецЦикла;