Вход | Регистрация


1С:Предприятие ::

Метки:регистры

РассчитатьРегистрыНа! Ну ёлы-палы!

Я
   Crystalizer
 
09.06.04 - 17:54
есть такой текст:

    Ре = СоздатьОбъект("Регистр.ПартииТоваров");
    Ре.ВременныйРасчет(1);
    Ре.РассчитатьРегистрыНа(ДатаДок);/// !!! тут выдаёт ошибку Поле агрегатного объекта не обнаружено (РассчитатьРегистрыНа) ПОЧЕМУ????

    Ре.ВыбратьДвиженияСОстатками(датадок, "Себестоимость");
      .......
 
  Рекламное место пустует
   spock
 
1 - 09.06.04 - 18:03
ВремРегистры = СоздатьОбъект("Регистры");
Рег = ВремРегистры.ПартииТоваров;
Рег.ВременныйРасчет();
ВремРегистры.РассчитатьРегистрыНа(ДатаДок);
   alxkorvin
 
2 - 09.06.04 - 18:09
(0) Потому что у объекта "Регистр.ПартииТоваров" нет процедуры РасчитатьРегистрыНа
   Crystalizer
 
3 - 09.06.04 - 18:12
да, спасибо, так оно катит
хотя почему это нужно делать так пока непонятно
но в итоге всё равно значение какое-то неадекватное %/
   alxkorvin
 
4 - 09.06.04 - 18:14
(3) Почему нужно делать что?
   At
 
5 - 09.06.04 - 18:17
потому что синтаксис языка 1С такой
нету для объектов, созданных функцией СоздатьОбъект(Регистр.ХХХ) метода РассчитатьРегистрыНа()
   Crystalizer
 
6 - 09.06.04 - 18:25
(5) т.е. расчет всегда идёт по всем регистрам?
и если я хочу быстрый расчет то это никак?
   At
 
7 - 09.06.04 - 18:27
Ре = СоздатьОбъект("Регистр.ПартииТоваров"); 
Ре.ВременныйРасчет(1); 
РассчитатьРегистрыНа(ДатаДок);
   Gavrila
 
8 - 09.06.04 - 18:28
(6) не по всем, а по тем которые участвуют во временном расчете (Рег.ВременныйРасчет();)
   alxkorvin
 
9 - 09.06.04 - 18:29
РассчитатьРегистрыНа(<?>,);
Синтаксис:
РассчитатьРегистрыНа(<ГраницаРасчета>,<ГрафаОтбора>)
Назначение:
Рассчитать все регистры с установленным флагом временного расчета на начало события.

ВременныйРасчет(<?>)
Синтаксис:
ВременныйРасчет(<Флаг>)
Назначение:
Установить флаг участия регистра во временном расчете.
   Crystalizer
 
10 - 09.06.04 - 18:31
(7,8) ну так конечно лучше :)

а чем СВодный остаток отличается от остатка?
 
  Рекламное место пустует
   At
 
11 - 09.06.04 - 18:35
Метод СводныйОстаток возвращает сводный остаток ресурса <ИмяРесурса> по регистру. Данный метод работает аналогично методу Остаток, однако здесь могут быть заданы не все значения измерений, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе. Изме­рения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные измерения.
   Gavrila
 
12 - 09.06.04 - 18:36
(10)
Сводный остаток:
Измерения могут задаваться с пропусками (неуказанное значение - просто запятая), фиксируются только указанные измерения. Метод используется только для регистров остатков.
   At
 
13 - 09.06.04 - 18:39
Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.СводныйОстаток(Тов1, , "ОстатокТовара");

означает, что ресурс «ОстатокТовара» будет получен только по одному то­вару (Тов1), но по всем складам и всем МОЛам.
   Crystalizer
 
14 - 09.06.04 - 18:46
(11) понял

но вот результаты вычислений (кстати всё равно долго считает блин, ну хрен с ним):
Из регистра стоимость: 4170930.93
и так по всем товарам!!! :(((

текст такой:

    Ре = СоздатьОбъект("Регистр.ПартииТоваров");
    Ре.ВременныйРасчет(1); 
    РассчитатьРегистрыНа(ДатаДок);
    
    Ре.ВыбратьДвиженияСОстатками(датадок, "Стоимость");
    себрег = Ре.СводныйОстаток (Товар,,,,,,, "Стоимость");
    Сообщить("Из регистра стоимость: "+ себрег );

товар = тот самый товар... но блин... почему же такое значение?
   Crystalizer
 
15 - 09.06.04 - 18:48
(12) Gavrila, ок, это понял, спасибо
   Crystalizer
 
16 - 09.06.04 - 18:50
(13) - это может быть ответом на (14)

//хорошо мысль выразил %)
   At
 
17 - 09.06.04 - 18:51
может я конечно чего не понимаю...
но после <Ре.Выбрать....> случайно не нужна ли конструкция типа <Пока Ре.Получить...>
   Crystalizer
 
18 - 09.06.04 - 18:58
At: эээ... что то я такого не видел...
кстати правильно оказалось так:

себрег = Ре.СводныйОстаток (,Товар, Склад,,,,, "Стоимость");

теперь вообще нуль в результате... блин
   Crystalizer
 
19 - 09.06.04 - 19:00
даже не так, а так:
    себрег = Ре.СводныйОстаток (,Товар,, Склад,,,, "Стоимость");
ждёмс результатов...
   At
 
20 - 09.06.04 - 19:01
надо использовать что-нить одно...
1.либо делать цикл по "Товар" и получать для каждого сводный остаток..
2.либо использовать <ВыбратьДвиженияСОстатками> и опять цикл, но уже использовать <СводныйОстаток> не получится

и то, и другое одновременно - не очень...
   At
 
21 - 09.06.04 - 19:03
в 1С после того как мы чего-нить выбрали, мы обязательно должны теперь это получить...
   Crystalizer
 
22 - 09.06.04 - 19:05
блин, всё равно неадекватно :-/
   At
 
23 - 09.06.04 - 19:06
и потом... если хочешь использовать <ВыбратьДвиженияСОстатками> и что бы они сводные были.. нужно сначала использовать <УстановитьФильтр>
   At
 
24 - 09.06.04 - 19:07
Товар откуда берешь?
   Gavrila
 
25 - 09.06.04 - 19:08
(22) если не ошибаюсь, то по партиям одна и таже операция выполняется два разы(по фирме, и без фирмы), потому ставь фильтр по фирме :)
   Crystalizer
 
26 - 09.06.04 - 19:08
дык вроде стоимость и получаю...
не нашёл ни одного примера похожего :(
   romix
 
27 - 09.06.04 - 21:42
(0) Короче бери образец из типовой конфы (ТиС кажется).
Поиск по слову РасчитатьРегистрыНа (или По).
Мне кто-то это дело посоветовал, и я быстро въехал.
   Crystalizer
 
28 - 10.06.04 - 10:50
блин... кажеца все грабли в том что там хранится цена за количество, а не за единицу...
   At
 
29 - 10.06.04 - 11:58
Цена за количество это уже Сумма. :)
но проблема вряд в этом

либо 1.Рег.ВыбратьДвиженияСОстатками();
       Пока Рег.ПолучитьДвижение()=1 Цикл 
          //получаем по очереди все остатки регистра

       КонецЦикла;

либо 2.Пока Товар.Получить()=1 Цикл 
           Рег.СводныйОстаток (,Товар, Склад,,,,, "Стоимость");
          //получаем для Товар сводный остаток по регистру 

       КонецЦикла;

так понятнее?
   Crystalizer
 
30 - 10.06.04 - 12:25
At:
ну вот такая конфигурация... %-/

1й вариант ещё полностью не понял, а 2й вариант, к-й ты написал если товар всего 1 превращается просто в СводныйОстаток. Это и использую. Как я понял, он возвращает сумму по по заданному полю по всем полученным строкам. Но может из-за этого результат не всегда адекватный? :/ пойду покурю, потом исследую "получитьДвижение" :)

Аt: спасибо за подсказки :)
   At
 
31 - 10.06.04 - 12:48
для того что бы лучше разобраться... ;)

//------------------------------------
Выбрать ДвиженияСОстатками
Выбрать все движения регистра с остатками.

Синтаксис:

ВыбратьДвиженияСОстатками(<КонецВыборки>, <ГрафаОтбора>)

Англоязычный синоним:

SelectActsWithRests

Параметры:

<КонецВыборки>
Выражение типа дата, документ или позиция документа задающее конец временного интервала выбора движений регистра.

<ГрафаОтбора>
Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора.

"*" — автоматический выбор графы отбора.

Пустая строка — не использовать графу отбора.

По умолчанию устанавливается автоматический выбор графы отбора.


Описание:

Метод ВыбратьДвиженияСОстатками инициирует выбор всех движении регистра в указанном интервале дат. До вызова данной процедуры может быть установлен фильтр (см. УстановитьФильтр), ограничивающий выборку значений из регистра. Если <КонецВыборки> не указан или равен 0, то конном временного интервала выбора движений регистра считается ТА.

Данный метод отличается от метода ВыбратьДвижения тем, что после получения очередного движения метод Остаток будет выдавать актуальные значения остатков для этого регистра. Но для этого перед вызовом метода ВыбратьДвиженияСОстатками регистру должен быть установлен признак временногоРасчета» (см. ВременныйРасчет) и должен быть выполнен временный расчет (см. РассчитатьРегистрыНа и РассчитатьРегистрыПо) — его дата и будет являться начальной датой выбираемых движений регистра. Данная возможность не может быть использована совместно с дальнейшими «Временными» расчетами.

Собственно выбор первого и последующих движений регистра осуществляется методом ПолучитьДвижение.

Данный метод используется только для регистров остатков.

Пример:

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент, );

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, "Задолженность");

   Док = Рег.ТекущийДокумент();

   Таб.ВывестиСекцию("Документ");

КонецЦикла;
   Crystalizer
 
32 - 10.06.04 - 13:56
At: спасибо, я понял :)

тут просто очень замороченная конфигурация или я ещё что-то не понял
плюс цена меняется в зависимости от коэффициента
   spock
 
33 - 10.06.04 - 15:23
вах.... тема-то еще актуальна
 
  Рекламное место пустует



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует