#0
by Алексей В
Второй день бьюсь, видать, не там ищу. Задача в том, чтобы вывести в дополнительной колонке справочника вычисляемое при открытии значение, своё для каждой строки списка, основанное на данных этой строки. В 7.7 это было поле "Формула" вкладки "Дополнительно" в свойствах колонки. Там можно было вызывать функцию, имеющую доступ ко всем данным в её строке списка. Как реализовать подобную вещь? К Типовой УТ отпралять не надо, там посмотрел - кривая реализация извращенцев: вывод остатков формированием всего списка при каждом переходе по группам. При этом даже нельзя вывести весь справочник без групп с остатками. Типа, оператор, если не знаешь, в какой группе нужный элемент, переключай режим, вклучай вывод без иерархии, потом возвращайся в подбор с остатками, переходи в нужную группу и смотри этот остаток.
#1
by Rovan
А ты проститай кэш при открвытии формы а потом гуляй по ней где хочешь. Принудительный пересчет через кнопку на форме или через ОбработчикОшидания.
#3
by Алексей В
Разобрался... М.Г.Радченко. 1С Предприятие 8.0 Практическое пособие разработчика. Страница 524. Вычисляемые колонки в списках. Обработчик события "ПриВыводеСтроки" нам поможет.
#5
by Волшебник
Есть еще метод УстановитьТекст, который делает сразу два действия одноврменно. ----------- Вообще к этому вопросу нужно подходить очень аккуратно. Если при выводе каждой строки тащить из регистра остатки, то это может привести к великим тормозам. Если начались тормоза, то рекомендуется сделать следующее: 1. Кеширование результата запроса в переменной модуля формы (таблица значений или массив, еще можно использовать соответствие, которое индексируется для примитивных типов данных, например, код товара или артикул) 2. При отключенной колонке (видимость) запрос к базе НЕ должен выполняться. По умолчанию колонку держать выключенной, включение только по кнопке в форме или при личных настройках определенного пользователя. 3. Лучше выполнять один большой запрос на несколько товаров, чем несколько маленьких запросов на один товар. 4. Список товаров нужно передавать как ПАРАМЕТР виртуальной таблицы Остатки, а не как параметр условия ГДЕ. 5. При повышенных требованиях к скорости отображения списка и большом количестве пользователей можно завести регистр сведений, хранящий актуальные остатки. Для поддержки его актуальности можно создать последовательность.
#7
by Алексей В
Вообще, конкретно моё решение данной задачи таково: Задача: Отображение актуальных остатков в форме подбора справочника. Решение: При открытии формы подбора справочника выполняем запрос и выгружаем его результат в реквизит формы типа ТаблицаЗначений. В запросе обращаемся в виртуальным таблицам Остатки (ОстаткиТоваров, РезервыТоваров и т.д.). Если оптимизировать запрос, то в нём можно получить уже готовую таблицу расчитанных остатков (ОстатокНаСкладе-Резервы и т.п.). В таблице формы добавляем колонку "Остаток" Далее в предопределённой процедуре "ПриВыводеСтроки" ищем ту самую, уникальную строку, соответствующую выводимому элементу справочника. И значение "Остаток" из неё выводим в нужную колонку. Обращение к таблице с результатом запроса будет происходить только при перерисовке отображённых на экране строк. Пусть этих строк в справочнике будет хоть 100 000, на экране их будет не более 50. Тонкое место здесь - скорость поиска нужной строки в таблице значений. Я воспользовался методом "Найти", как он себя покажет при 100 000 строк, пока не знаю, но более быстрого варианта средствами 1С предложить не могу. Нам по идее не нужно обновлять данные об остатках раз в секунду или раз в час и т.п. Нам нужно обновлять таблицу остатков только при изменении этих остатков. Т.е. нужно как-то остлеживать в системе проведение документа, влияющего на остатки и после этого проведения повторять запрос к таблицам регистров в форме справочника.
#8
by Волшебник
При поиске по табличному полю событие ПриВыводеСтроки может срабатывать не только для тех строк, которые на экране. Это еще зависит от релиза платформы.
#9
by Алексей В
Сижу сейчас на 8.0.8.7 Сделал счётчик обращений к процедуре ПриВыводеСтроки. Количество обращений равно количеству отображаемых элементов справочника. Причём обращения происходят только при сдвиге списка. Кроме того, обращения всегда происходят при нажатии клавиш PgUp и PgDn. Если не сдвигать список, а только перемещаться курсором по отображённым элементам, то обращений к ПриВыводеСтроки нету. Ну, и при открытии формы происходит удвоенное от количества элементов на экране количество обращений. В моём предыдущем посте вкралась неточность: Таблицу остатков формирую не ПриОткрытии формы справочника, а ПередОткрытием.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как заполнить и вывести диаграмму в табличном документе ?
- v 8.0 Как программно вывести другую картинку в форме списка справочника
- как вывести в УТ в подборе номенклатуры колонку остаток и цена
- Можно ли в 7.7 вывести зачеркнутый шрифт?
- Как в 1С v8 справочнике, в форме списка в табличном поле, вывести свою картинку
- v7: Получить остаток по товару в колонке Остаток в форме списка спр. Номенклатура
- Как в одном отчете вывести и остаток на нач. месяца и обороты за период
- Свободный остаток и остаток организации
- Как в СКД вывести входящий остаток первой строкой, а исходящий-последней
- Как вывести сообщение пользователю в форме, не привязанной к объекту?
- Дин. список - настройка периода - как вывести в надпись на форме?
- Остаток организации и свободный остаток не совпадают
В этой группе 1С
- Кто знает как ввести одним документом"Ввод ОС" группу основных средств?
- Слишком много фактических параметров
- как переделать ActiveX для работы с 1С ?
- Сканер штрих-кода передает пустой код в 1С. Терминал под Windows 2003 Server
- УстановитьНовыйКод() - как бороться?
- v8. Отрицательные остатки разрешить/запретить
- УРБД –как из обычной базы с данными сделать периферийную ИБ ?
- ФСС от НС ПЗ в ЗиК 7.7
- Пустое значение пременной типа даты
- Как узнать остатки товара и его резерв на складе
- Перехват печати с изменением содержания.
- Шаблон кода счета
- Как добавить артикул в ценник?
- Подскажите какую галку где поставить чтоб включить возможность сохранения
- Оплата простоя по вине работодателя за неполный день в ЗиК (7.7.250)
- Кто знает, что значит РасчетыВУсловныхЕдиницах в УПП 1.1 в договорах?
- Как "мамочки" в СЗВ должны отражаться???
- 8.0: Как посмотреть подчиненный справочник? В контекстном меню пункта такого нет
- УПП 1.1 Контрагенты и Организации
- Как изменить разрядность цен и сумм в 1С комплексная?