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

1С:Предприятие :: 1С:Предприятие 8 общая

Алгоритмы в движениях.

Алгоритмы в движениях.
Я
   banan_CHIK_
 
10.10.17 - 19:00
Добрый день, ребята! У меня вот такой вопрос:
Нашел в интернете задание для начинающих (1clancer.ru/download/fileId=41594) Ссылка не битая!, Не получается в алгоритмах, подскажите, где найти информацию по этой теме или в чем у меня ошибка
ОстаткиТоваров – движение содержит записи (Приход) по каждой строчке табличной части «Товары», все данные для записи берутся из документа. Сумма в записи должна рассчитываться вот по такому алгоритму:

Сумма = Количество * СредневзвешеннаяЦена

СредневзвешеннаяЦена = ОстатокСумма / ОстатокКоличество;

ОстатокСумма = нужно вычислить остаток Суммы в регистре накопления ОстаткиТоваров, на дату документа, с отбором по Номенклатура и Склад:

ОстатокКоличество = нужно вычислить остаток Количество в регистре накопления ОстаткиТоваров, на дату документа, с отбором по Номенклатура и Склад:

ВзаиморасчетыСКонтрагентами – движение (одно) содержит запись (Приход) на общую сумму реализации.


Вот так я код написал:


Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!


    // регистр ОстаткиТоваров Расход

    Движения.ОстаткиТоваров.Записывать = Истина;
    Движения.ОстаткиТоваров.Очистить();
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = ТекСтрокаТовары.Товар;
        Движение.Склад = Склад;
        Движение.Количество = ТекСтрокаТовары.Количество;
        Движение.Сумма = ТекСтрокаТовары.Количество * РегистрыНакопления.ОстаткиТоваров.Остатки(Дата, "Номенклатура,Склад", , "Сумма") / РегистрыНакопления.ОстаткиТоваров.Остатки(Дата, "Номенклатура,Склад", , "Количество");
    КонецЦикла;

    // регистр ВзаиморасчетыСКонтрагентами Расход

    Движения.ВзаиморасчетыСКонтрагентами.Записывать = Истина;
    Движения.ВзаиморасчетыСКонтрагентами.Очистить();
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.ВзаиморасчетыСКонтрагентами.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;                                                              
        Движение.Период = Дата;
        Движение.Контрагент = Контрагент;
        Движение.Сумма = ТекСтрокаТовары.Сумма;
    КонецЦикла;

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры



Вот база ребят:
https://drive.google.com/open?id=0BzEWLPdHqpHGbzBWakpWUnNWVFE

Я понимаю тупые вопросы для вас, но я только начал учиться) Если не трудно, помогите)
 
 
   Джинн
 
1 - 10.10.17 - 19:05
(0) Коллега, за такой код убивать нужно. Найдите в инете книги Радченко и освойте сначала их.
   banan_CHIK_
 
2 - 10.10.17 - 19:11
Скажи, что не так делаю. Я хоть буду знать, многие говорят можно запросами, но с ними я не умею работать.
   Джинн
 
3 - 10.10.17 - 19:16
(2) Все не так. Ищите книгу Радченко и отрабатывайте последовательно с первой главы.
   0xFFFFFF
 
4 - 10.10.17 - 19:19
(0) на тупые вопросы не получишь ответа. Без понимания предмета - код писать не научишься (типа я ему по-русски, а может поймет что я хочу...).
Поэтому твоя помощь в (1)
   Mankubus
 
6 - 10.10.17 - 19:44
(2) учись запросам раз не умеешь. без запросов тебе путь заказан
   breezee
 
7 - 10.10.17 - 21:05
Движение.Сумма = ТекСтрокаТовары.Количество * РегистрыНакопления.ОстаткиТоваров.Остатки(Дата, "Номенклатура,Склад", , "Сумма") / РегистрыНакопления.ОстаткиТоваров.Остатки(Дата, "Номенклатура,Склад", , "Количество");
Спасибо! Поднял настроение под вечер. 
По теме:
Учи соединения в запросах, выборку из виртуальных таблиц в запросах. Даю подсказищу, данные в документе есть, надо связать по полям связи(пойми, что за поля их связывают) в запросе с данными по остаткам из регистра "ОстаткиТоваров". Посмотреть, что вернет запрос в случае того, если данных нет в регистре, что вообще возварщает запрос, для этого тебе поможет консоль запросов. По твоему коду - погугли, чем плохи запросы в цикле
   Ненавижу 1С
 
8 - 10.10.17 - 21:43
Первый регистр одним запросом выгружает в регистр.
Второй регистр одной записью в регистр.
Дебеторскую задолженность принято оформлять в 1с приходом.
   xXeNoNx
 
9 - 10.10.17 - 22:02
не ну, а че конструктор отработал нормально...
(0) Правильной дорогой идешь...

Радченко возьми, через пару глав увидишь где что можно оптимизировать и как на запросы переписать...

Основной косяк, на данном этапе - проверь оба цикла.., не смущает что он 2 раза прогоняется?
   xXeNoNx
 
10 - 10.10.17 - 22:03
Мля, вы еще тут про блокировки расскажите и ткните носом...
Хотел бы я на ваши художества в начале посмотреть
 
 Рекламное место пустует
   banan_CHIK_
 
11 - 11.10.17 - 12:44
Спасибо, ребята! Спасибо за подсказки. Рад, что развеселил кодом)

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