8.х Доступ к итогу регистра накоплений

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

  1. TopicStarter Overlay
    hotep
    Offline

    hotep

    Регистрация:
    13 мар 2007
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте !

    Есть регистр накопления ОстаткиМатериалов. Хочу в форме справочника Номенклатуры вывести актуальные остатки. Как ??? Интуици подсказывает, что это надо делать в обработчике события СправочникСписокПриВыводеСтроки() НО ! Метод РегистрыНакопленияМенеджер.Остатки дает результатом таблицу значений. А как получить значение конкретного Ресурса по конкретному Измерению (двум измерениям)... ?


    Уже блин всю голову сломал...

    Только начал изучать v8.1.. пожалуйста, камнями не кидайтесь...
  2. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Не слушайте интуицию. Если вы будете считать остатки ПриВыводеСтроки() то получите ТААКИЕ тормоза списка, что мало не покажется. Посмотрите ка сделано в типовой УТ (УПП) в обработке "ПодборНоменклатуры"

    Кстати, а что вы имеете в виду под "Актуальными" остатками? ;)
    Ведь при интенсивной работе остатки могут меняться чаще, чем у вас строки будут выводиться.
    Кроме того, Обработчик ПриВыводеСтроки() вызывается только один раз для каждой строки при открытии или обновлении формы списка, и пока вы на неё смотрите, ситуация может поменяться.
  3. TopicStarter Overlay
    hotep
    Offline

    hotep

    Регистрация:
    13 мар 2007
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    И какие тогда варианты ?
  4. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    ПриАктивизацииСтроки как пользователь выделил строку, так и получил остаток. Для получения "конкретного Ресурса по конкретному Измерению (двум измерениям)"

  5. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    ну или конечно банальный запрос :)
  6. TopicStarter Overlay
    hotep
    Offline

    hotep

    Регистрация:
    13 мар 2007
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Очень все любят цитировать документацию... как будто я сам не могу прочитать :) Там тип возвращаемого значения - ТаблицаЗначений. И что с ней делать ??? Выковыривать значение для строки ? Тогда точно форма будет неделю исполняться.
  7. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Ну вы не сравнивайте время выполнения запроса к базе данных (в случае получения остатков) с временем поиска по таблице значений, находящейся в оперативной памяти. Проэкспериментируйте с замером производительности. Если не на порядок, то в разы быстрее работа с таблицей значений.

    Я же писал. Посмотрите, как в типовой УТ, УПП сделано.

    А еще я писал, что затея получения """АКТУАЛЬНЫХ ОСТАТКОВ""" в общем-то бесполезная, поскольку с актуальными остатками система работает только в момент оперативного проведения. То есть потеряете время, разработаете тормозную форму, а толку не будет и претензии пользователей останутся (или новые появятся).
  8. TopicStarter Overlay
    hotep
    Offline

    hotep

    Регистрация:
    13 мар 2007
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Я так понимаю, аналога v7.7 Регистр.<ИмяРегистра>.СводныйОстаток() нету ? :unsure:
  9. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Ну поскольку в v8 нет аналогов регистров из v7, то да, нету
  10. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    интересно у вас получаетсяю... Вы же не полным перебором среди 10000 строк искать будете... а выбрать первую строку и получить из нее одну ячейку это ИМХО достаточно быстро, тем более если это делать после выделения пользователем определенной номенклатуры, что гораздо медленнее чем операции с БД...
  11. TopicStarter Overlay
    hotep
    Offline

    hotep

    Регистрация:
    13 мар 2007
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    После выделения - не пойдет. Тут необходимо, чтобы продавец сразу видел сколько у него товара на остатке...
    Вообще, я в познавательно-учебных целях решил переделать собственную рабочую конфу v7.7 на платформу v8 :) Пока восьмерка не радует...

    Покажите, плиз, кусок кода - как выдрать значение регистра максимально просто ?
  12. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Код:
    НужныйРегистр = РегистрыНакопления.ИмяНужногоРегистра;
    ТабОстатков = НужныйРегистр.Остатки(<Момент времени>, <Отбор>, <Измерения>, <Ресурсы>); 
    
  13. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    1) Или так:
    Запрос = новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    | ТоварыНаСкладахОстатки.Номенклатура,
    | ТоварыНаСкладахОстатки.КоличествоОстаток
    |ИЗ
    | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";

    2) я вот просто не понимаю как это: "сразу видел сколько у него товара на остатке" и не испоьзовать таблицу значений... как можно "сразу" увидеть остатки по нескольким номенклатурам, если их не получить и как можно хранить несколько номенклатур с ценами как не в таблице (или подобии ее: структуре, соответствии, массиве и т.д).

    Имхо автор сам не знает чего хочит....
  14. TopicStarter Overlay
    hotep
    Offline

    hotep

    Регистрация:
    13 мар 2007
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    У меня конфигурация v7.7 уже добрых года три работает без всякой таблицы значений. И в справочнике сразу показывает остаток на складе. Тормоза замечены не были.
    То есть я как раз знаю, чего хочу. А вот Вы объяснить, как это сделать не можете :)

    У меня конфигурация v7.7 уже добрых года три работает без всякой таблицы значений. И в справочнике сразу показывает остаток на складе. Тормоза замечены не были.
    То есть я как раз знаю, чего хочу. А вот объяснить никто мне, как этого добиться никто из ответивших не может :(
  15. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    ну на 7.7 работал уже давно, поэтому не понимаю, что же вы хотите, а как я могу объяснить как сделать то, чего я не понимаю?..
  16. TopicStarter Overlay
    hotep
    Offline

    hotep

    Регистрация:
    13 мар 2007
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Во истину говорят: хочешь всё безнадежно запутать - обратись к мудрецам...
    Всё оказалось элементарно:

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

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