1с 8 где лучше привыводестроки или приполученииданных

Обновлено: 07.07.2024

1С предприятие 8.2
Толстыйклиент. Обычное приложение. Обычная формасписка. На этой форме расположена таблица (Данные "СправочникСписок")
Одна из колонок таблицы "Наименование", эта колонка автоматически заполняется наименованиями элементов справочника.

Пытаюсь выполнить запрос по регистру накопления.

В одном из событий таблицы формы я описываю код

Условие запроса срабатывает, но срабатывает так, что в результат запроса ничего не попадает.
Как правильно делать?

запросы 1с 7.7
|Функция Сум = Сумма(Рез) когда (рез > рез1); можно ли в функциях в запросе написать что-то с.

GET запросы
Помогите! Может ли 1С получать GET запросы и обрабатывать их?

Запросы
Справочник Сотрудники имеет периодичекий реквизит История. Не получается по каждому сотруднику.

1. Номенклатура.Ссылка = &Наименование - разные типы (. =НайтиПоНаим(Наим))
2. Запрос ПриВыводе() - ". не надо" (Саид). В упр это решено (ДинСп). В обычном надо крутиться, выводя в таб.поле. ТЗ с результатом запроса, либо добавив к типовому списку в форме поле с ТЗ из регистра с отбором ПриАктивизации.
ну и кнопка Обновить обороты Номенклатура.Ссылка = &Наименование - разные типы (. =НайтиПоНаим(Наим)) В обычном надо крутиться, выводя в таб.поле. ТЗ с результатом запроса чего-то я тут не понял. А именно Не понял Где нужен запрос если не в При выводе, а то, что для решения моей задачи нужен запрос я не сомневаюсь. что для решения моей задачи нужен запрос я не сомневаюсь я тоже. Но прикинь, сколько их будет?
. ДвижениеПродаж.Номенклатура.Ссылка = &Наименование.
Запрос.УстановитьПараметр("Наименование",Наименование); всё равно разные типы
Номенклатура.Ссылка - это не стринг. Это СправочникСсылка

что спросил, то получил.

Сколько строк, столько и будет запросов. И вообще что я делаю на запрос в цикле смахивает.

А если мне надо, например, узнавать текущий остаток по номенклатуре для каждой строки табличного поля и записывать этот остаток в новую колонку по текущей строке, колонку "Остаток" этого самого табличного поля, в ту колонку, которую я создавал руками через контекстное меню "Добавить колонку" на этом самом табличном поле, то что мне теперь для каждой номенклатуры выборку делать?, что по моей логике хуже чем использовать запрос.
Мой мозг наотрез отказывается искать другие способы кроме как получить номенклатуру текущей строки, выполнить запрос по этой номенклатуре, (ибо этот глупый мозг считает, что выборка для каждой строки, которая должна вытащить остаток из регистра выглядит или также или даже еще хуже чем использование запроса для каждой строки)
А если смотреть в сторону ПриАктивизации, то они же (строки) не все активизируются, а только одна из них (так вроде), а надо будет в каждую строку записать значение, которое надо вытащить из регистра

Оптимизация отображения ссылочных значений

Событие ПриВыводеСтроки() используется табличным полем для оформления ячеек каждой строки данных. При обработке данного события можно изменить цвет фона или текста ячейки, шрифт, которым отображается текст в ячейке, а также установить картинку или флажок в ячейке. Также существует возможность замены текста, отображаемого в ячейке, на какой-либо другой.

Обработчик события ПриВыводеСтроки() вызывается табличным полем в следующих случаях:

  1. Обновление данных, отображаемых табличным полем. Например, при обработке команды "Обновить" контекстного меню табличного поля или после окончания редактирования строки.
  2. Поиск по подстроке. В некоторых случаях (например, при поиске по колонке, не связанной с данными) поиск осуществляется табличным полем. В этом случае обработчик события ПриВыводеСтроки() вызывается для каждой строки между текущей и искомой.

Процесс вызова обработчика события ПриВыводеСтроки() имеет ряд особенностей. Так, представления ссылочных значений получаются при первом обращении к свойствам объекта ОформлениеЯчейки из встроенного языка. При этом, если текст ячейки, содержащей ссылочное значение, будет устанавливаться (например, через метод УстановитьТекст() или через свойство Текст объекта ОформлениеЯчейки ), то представление ссылочного значения получаться не будет, а будет сразу заменено на новый текст. После окончания обработки события ПриВыводеСтроки() представления остальных ссылочных значений (к которым не было обращения из встроенного языка) будут также получены.

В случае поиска по подстроке по определенной колонке есть еще одно отличие - получаются представления колонки поиска и всех колонок, к которым было обращение в событии ПриВыводеСтроки() . Представления остальных ссылочных значений не получаются. Тем самым, обработка события ПриВыводеСтроки() при поиске происходит быстрее.

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

  1. При заполнении источника данных табличного поля получать отдельно и ссылочные значения и их строковые представления.
  2. При обработке события ПриВыводеСтроки для ячеек колонки, отображающей ссылочные значения, устанавливать в качестве текста полученное строковое представление.

Поясним использование данного метода на следующем примере. Пусть существует форма подбора номенклатуры, на которой расположено табличное поле, отображающее таблицу значений. Строками таблицы значений являются ссылки на элементы списка справочника Номенклатура. Единственная колонка " Наименование " табличного поля связана с колонкой " Ссылка " таблицы значений. Заполнение таблицы значений происходит в результате выполнения запроса, причем группы списка справочника не получаются. Требуется осуществлять подбор номенклатуры из данного табличного поля.

В начале необходимо заполнить таблицу значений. Для этого в обработчике события ПередОткрытием() формы выполняется запрос, результатом которого является таблица значений, содержащая ссылки и строковые представления элементов справочника Номенклатура :

Для того чтобы при обновлении табличного поля не получались строковые представления ссылочных значений, необходимо при обработке события ПриВыводеСтроки() устанавливать ячейке, отображающей ссылочное значение, полученное строковое представление :

Подбор элементов справочника Номенклатура осуществляется при обработке события Выбор() табличного поля :

Необходимо заметить, что использование данного метода также положительно скажется на работе быстрого поиска в табличном поле, т.к. при поиске не будут получаться представления ссылочных значений.

Событие ПриПолученииДанных использется для оформления ячеек строк данных, отображаемых табличным полем. Обработчик данного события вызывается табличным полем в тех же случаях, что и обработчик ПриВыводеСтроки, т.е. при обновлении данных, отображаемых табличным полем или при поиске по подстроке. Важно отметить, что обработчик данного события вызывается табличным полем перед вызовом обработчиков события ПриВыводеСтроки для всех видимых строк табличного поля. Основным отличием данного события от события ПриВыводеСтроки является то, что в обработчике события ПриПолученииДанных можно изменять настройки ячеек группы строк, а не одной строки как в обработчике события ПриВыводеСтроки.

Обрабатывая данное событие можно изменять шрифт, цвет фона или текста, как определенной ячейки, так и всей строки табличного поля, устанавливать высоту или видимость ячеек строки табличного поля, а также устанавливать картинку, флажок или новый текст в ячейке. Параметром данного события является объект типа ОформлениеСтрок - коллекция объектов типа ОформлениеСтроки, являющихся оформлениями строк табличного поля.

А вот так это выглядит в реальности:


Разместил: E_Migachev  Версии: | 8.x | 8.2 УП |  Дата: 20.08.2014   Прочитано: 47102

Распечатать

Похожие FAQ

Еще в этой же категории

Как в форме списка реализовать сортировку по своему реквизиту?  10
Если реквизит примитивного типа, то достаточно установить для свойства реквизита «Индексировать» значение «Индексировать» или «Индексировать с доп. упорядочиванием» (не доступно для реквизитов типа ХранилищеЗначения). Если же реквизит ссылочного типа Сортировка списка по произвольной колонке?  7
В процедуру ПриОткрытии или в конец модуля добавить: ЭлементыФормы.РегистрСведенийСписок.НастройкаПорядка.НомерСоглашения.Доступность=Истина; Где НомерСоглашения - Колонка в списке регистра сведений по которой нужно сортировать! Далее щелкнув Табличное поле

Как получить строки табличного поля, отобранные отбором?  4
ОтборСтрок = ТабличнаяЧастьИсточник.ОтборСтрок ; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличнаяЧастьИсточник); // Добавляются необходимые отборы, такие же как в отбор Отбор по списку значений  3
СозданныйСписок = Новый СписокЗначений; СозданныйСписок.Добавить(Перечисления.СтатусЗаявки.Выполнено); СозданныйСписок.Добавить(Перечисления.СтатусЗаявки.ЗакрытиеЗаявки); СозданныйСписок.Добавить(Перечисления.СтатусЗаявки.ОтклоненаРукОтдЗакупок); Как пользователям запретить удаление условия отбора в форме списка?  3
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; Полный код: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(" ЭлементОтбораКомпоновкиДанных" )); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпонов Посмотреть все в категории Список Справочника, Документов, Регистров

Событие ПриПолученииДанных использется для оформления ячеек строк данных, отображаемых табличным полем. Обработчик данного события вызывается табличным полем в тех же случаях, что и обработчик ПриВыводеСтроки, т.е. при обновлении данных, отображаемых табличным полем или при поиске по подстроке. Важно отметить, что обработчик данного события вызывается табличным полем перед вызовом обработчиков события ПриВыводеСтроки для всех видимых строк табличного поля. Основным отличием данного события от события ПриВыводеСтроки является то, что в обработчике события ПриПолученииДанных можно изменять настройки ячеек группы строк, а не одной строки как в обработчике события ПриВыводеСтроки.

Обрабатывая данное событие можно изменять шрифт, цвет фона или текста, как определенной ячейки, так и всей строки табличного поля, устанавливать высоту или видимость ячеек строки табличного поля, а также устанавливать картинку, флажок или новый текст в ячейке. Параметром данного события является объект типа ОформлениеСтрок - коллекция объектов типа ОформлениеСтроки, являющихся оформлениями строк табличного поля.

А вот так это выглядит в реальности:


Разместил: E_Migachev  Версии: | 8.x | 8.2 УП |  Дата: 20.08.2014   Прочитано: 47104

Распечатать

Похожие FAQ

Google maps : вывод точек на карту и режим панорамы  7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Ввод дополнительного ежегодного отпуска  2
Вид расчета, используемый для начисления оплаты дополнительного ежегодного отпуска , описывается в плане видов расчета Основные начисления организаций . Новый вид расчета удобнее создать копированием предопределенного вида расчета Оплата отпуска п Документ "Корректировка записей регистров" - Как программно создать и заполнить?  8
Документ «Корректировка записей регистров» в типовых конфигурациях 1С предназначен для ручной корректировки записей регистров накопления, зависимых регистров сведений и регистров бухгалтерии. Типичные ситуации, в которых может понадобиться документ « Журнал регистрации  0
Журнал регистрации относится к информационной базе и служит для сохранения информации о событиях, возникающих в процессе работы пользователей с данной информационной базой . Эта информация может быть важной с организационной точки зрения , но не Загрузить данные в 1с из текстового файла с разделителями  6
В этой статье я расскажу, как загружать данные в 1с 8 из простейших текстовых файлов с разделителями. Обычно они имеют расширение csv (Comma-Separated Values). Т. е. название подразумевает, что в каждой строке такого текстового файла значения разделе Посмотреть все результаты поиска похожих

Еще в этой же категории

Как в форме списка реализовать сортировку по своему реквизиту?  10
Если реквизит примитивного типа, то достаточно установить для свойства реквизита «Индексировать» значение «Индексировать» или «Индексировать с доп. упорядочиванием» (не доступно для реквизитов типа ХранилищеЗначения). Если же реквизит ссылочного типа Сортировка списка по произвольной колонке?  7
В процедуру ПриОткрытии или в конец модуля добавить: ЭлементыФормы.РегистрСведенийСписок.НастройкаПорядка.НомерСоглашения.Доступность=Истина; Где НомерСоглашения - Колонка в списке регистра сведений по которой нужно сортировать! Далее щелкнув Табличное поле

Как получить строки табличного поля, отобранные отбором?  4
ОтборСтрок = ТабличнаяЧастьИсточник.ОтборСтрок ; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличнаяЧастьИсточник); // Добавляются необходимые отборы, такие же как в отбор Отбор по списку значений  3
СозданныйСписок = Новый СписокЗначений; СозданныйСписок.Добавить(Перечисления.СтатусЗаявки.Выполнено); СозданныйСписок.Добавить(Перечисления.СтатусЗаявки.ЗакрытиеЗаявки); СозданныйСписок.Добавить(Перечисления.СтатусЗаявки.ОтклоненаРукОтдЗакупок); Как пользователям запретить удаление условия отбора в форме списка?  3
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; Полный код: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(" ЭлементОтбораКомпоновкиДанных" )); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпонов Посмотреть все в категории Список Справочника, Документов, Регистров

Читайте также: