7.7 Помогите с регистрами

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Aton, 7 сен 2009.

  1. TopicStarter Overlay
    Aton
    Offline

    Aton

    Регистрация:
    8 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Здравия желаю!
    Вот хоть убейте не могу понять работу с регистрами. И так и эдак пробовал - не получается и всё. Подскажите - вопрос пустяковый в принципе.

    Так вот:
    1) Есть документ "Приход" имеющий в своей форме табличную часть (Сырьё | Количество | Цена | Стоимость) и с отмеченым "Оперативным учётом".
    [​IMG]
    В Модуле Документа процедура проведения взята из действующей конфы (изменена под свои параметры):

    Код:
    Процедура ОбработкаПроведения()
    ВыбратьСтроки();
    Пока ПолучитьСтроку() > 0 Цикл
    Регистр.ПривязыватьСтроку(НомерСтроки);
    Регистр.ОстаткиСырья.Материал = Сырьё;
    Регистр.ОстаткиСырья.Количество = Количество;
    Регистр.ОстаткиСырья.ДвижениеПриходВыполнить();
    КонецЦикла;
    КонецПроцедуры
    
    Также создан регистр "ОстаткиСырья" с измерением "Материал" (неопределённый тип, но пробовал и Документ.Приход) и ресурсом "Количество" для получения остатка по материалам.
    [​IMG]

    Пытаюсь сделать внешнюю обработку для вывода остатков:
    На форме создаю реквизит диалога "Материал" (тип Справочник.Материалы) для выбора материала по которому хочу получить остаток.

    Модуль:
    Код:
    Процедура ПолучитьОстаток(); //весит на кнопке Сформировать на форме
    Результат = Регистр.ОстаткиСырья.Остаток(Материал, "Количество"); //получить по выбраному материалу в ресурс "Количество" 
    Сообщить(Результат); //вывести результат
    КонецПроцедуры
    
    Не получается - выводит 0, хотя я создаю несколько документов с приходом. Я подозреваю, что что-то с методом Провести надо сделать.

    Спустя n-время.
    Добавил в Модуль Документа:

    Код:
    Процедура ПриЗакрытии()
    Док = СоздатьОбъект("Документ.Приход");
    Док.АвтоВремяТекущее();
    Док.Новый();
    Док.Записать();
    Док.Провести(1);
    КонецПроцедуры // ПриЗакрытии
    
    Всё равно ничё не работает...
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    РассчитатьРегистрыНа(<ГраницаРасчета>,<ГрафаОтбора>)
    Назначение:
    Рассчитать все регистры с установленным флагом временного расчета на начало события.

    И в данном случае ручше работать ч/з объект.
    Т.е

    Код:
    Рег=СоздатьОбъект("Регистры");
    
    
    
  3. TopicStarter Overlay
    Aton
    Offline

    Aton

    Регистрация:
    8 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Получилось. Считалось.
    Однако почему то выход результат независимо от выбранного измерения.

    Код:
            //создали объект
    СпецРег = СоздатьОбъект("Регистры");
    //Указали что это регистр Остатков Сырья
    Рег = СпецРег.ОстаткиСырья;
    //ТекДок - это последний документ
    СпецРег.РассчитатьРегистрыПо(ТекДок);
    //Задаю измерение регистра - Материал с формы
    Рег.Материал = Материал;
    Рег.ОстаткиПолучить();
    ТекОстаток = Рег.Количество;
    Сообщить(ТекОстаток);
    

    Однако независимо от выбранного материала выводит общий суммарный остаток.
    Т.е. независимо от того какой я материал провёл по документам - они складываются в регистр и выводятся, в общем, независимо от измерения. В чём может быть дело?
    Спасибо за помощь.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104

    ОстаткиПолучить()
    Назначение:
    Получить все ресурсы по регистру.


    В данном случае используй

    Остаток(<Измерен1>,<Измерен2>...,<ИмяРесурса>)
    Назначение:
    Возвращает значение остатка заданного ресурса регистра.
  5. TopicStarter Overlay
    Aton
    Offline

    Aton

    Регистрация:
    8 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Бухгалтерский угодник - я конечно не бухгалтер, но не могли бы вы мне ещё разок угодить...
    Эти регистры меня убьют... что не так делаю??? И так и сяк пробовал...
    Код:
    Процедура ПолучитьОстатки();
    //процесс поиска последнего документа 
    Док = СоздатьОбъект("Документ.Приход");
    Док.ВыбратьДокументы();
    Пока Док.ПолучитьДокумент() = 1 Цикл
    ПослДок = Док.ТекущийДокумент();
    КонецЦикла;
    Сообщить(ПослДок);
    
    
    //создаём общий объект Регистры
    Рег = СоздатьОбъект("Регистры");
    //Выбираем отдельный регистр "ОстаткиСырья"
    ОтделРег = Рег.ОстаткиСырья;
    //Не знаю зачем это нужно, но в справке было...
    ОтделРег.ВременныйРасчет(1);
    //Расчитываю объект Регистры до последнему документу
    Рег.РассчитатьРегистрыПо(ПослДок);
    //Считываю значение с формы для определения Измерения
    Материал = МатериалНаФорме;
    //ну вот типа пытаюсь получить остаток
    ОтделРег.Остаток(Материал,"Количество");
    Ост = ОтделРег.Количество;
    Сообщить(Ост);
    КонецПроцедуры
    

Поделиться этой страницей