Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Сортировка динамического списка по двум полям

Здравствуйте! Есть ли в 1с возможность отсортировать список по двум полям? Допустим у меня имеется в документе реквизит "высокий приоритет", тип булево. Хочется отсортировать список документов сначала по приоритету, чтобы документы с высоким приоритетом оказывались в верху списка, а остальные шли просто по порядку номеров. Пишу код:
Код:
    Порядок1 = ЭтаФорма.Список.Порядок;
    Порядок1.Элементы.Очистить();
    ЭлементПорядка1 = Порядок1.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
    ЭлементПорядка1.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
    ЭлементПорядка1.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
    ЭлементПорядка1.Поле = Новый ПолеКомпоновкиДанных("Номер");
    ЭлементПорядка1.Использование = Истина;

       
    Порядок = ЭтаФорма.Список.Порядок;
    Порядок.Элементы.Очистить();
    ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
    ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
    ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
    ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Приоритет");
    ЭлементПорядка.Использование = Истина;
   
В верх списка перекидываются приоритетные документы, но остальные идут вразнобой, абы как. Как бы мне отсортировать их по двум полям?
Ответ:
На случай если пользователь изменил сортировку, а при изменении запроса и обновлении данных в ДС, необходима сортировка по умолчанию: по 2-м полям!
Вопрос: Сортировка динамического списка в 8.3

8.3.10.2168 Есть справочник Номенклатура. Необходимо на ФормеСписка сортировать дерево групп либо по наименованию либо по коду. В настройке ДС в конфигураторе добавил две эти сортировки. В дависимости от нажатой кнопки, активируется соответствующая сортировка.
Для К = 0 По ИерархияНоменклатуры.Порядок.Элементы.Количество() - 1 Цикл
        лЭл = ИерархияНоменклатуры.Порядок.Элементы.Получить(К);
    Если лСорт - 1 = К Тогда
        лЭл.Использование=Истина
    Иначе
        лЭл.Использование=Ложь
    КонецЕсли;
КонецЦикла;

Процедура свое дело делает, но сортировки не происходит.
Ответ: Проблему не решил, но обошел. Добавил отображение Шапки и сортировка работает кликом по Колонке в Шапке.
Вопрос: Обновление динамического списка из другой формы

Здравствуйте.

Есть общая форма, и на ней динамический список некого документа. Когда я открываю из этого динамического списка форму самого документа, провожу его, и потом закрываю форму, то разумеется ДС (на основной форме) не обновляется. И следовательно пиктограмма “что документ проведен” не перерисовывается. Вопрос в том, как из формы документа (при ее закрытии) обновить динамический список общей формы
Ответ:
Такой же вопрос))) Скажите, пожалуйста, ОбновитьОтображениеДанных( ) на форме проводимого документа или на форме динамического списка?
Вопрос: Динамический список на управляемой форме.

Коллеги, прошу совета.
На управляемой форме есть динамический список, построенный на запросе. Запрос строится на 3-х таблицах. При этом две таблицы большие и по количеству записей и по количеству полей. Непосредственно в списке используются полностью поля одной таблицы и еще по нескольку из больших. Какие-то поля выводятся в список, а какие-то используются только для отборов.
При активизации строки списка надо получить фактически все данные из этих таблиц и отобразить их на форме в виде отдельных полей.
Вижу два варианта реализации:
1. В запросе списка отбирать только поля нужные в списке. (Правда, я не могу заранее сказать какие из них не потребуются в отборах.) А потом при активизации строки отдельным запросом получать уже полный набор полей по данным строки.
2. В запросе списка сразу выбирать все поля из этих таблиц, а поля на форме привязать к полям списка.

Опыта пока мало. Не могу определиться какой вариант лучше.
Что скажете?
Ответ: в твоем случае получать сразу все в одном запросе можно если соблюдается

1. динамический список НЕ В ВИДЕ ДЕРЕВА
2. нет РЛС
3. соединения нормально используют индексы друг друга

если хоть одно из трех правил не соблюдается - только тестирование тебе поскажет... ибо там дофига вариантов
Вопрос: Динамический список и его запрос

Уважаемые специалисты, скажите пожалуйста, какова вероятность что это правда (пишу с чужих слов): что в динамическом списке могут в некоем  будущем перестать запросы, в которых используется оператор "Объединить"? Услышал это от знакомого, хочу узнать - это правда или нет?
Ответ: А если основная таблица не задана, то нет в этом списке ничего "динамического". Использование объекта динамический список в этом случае - легкое поддуривание.
Вопрос: Вопрос по механике работы динамического списка

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

Да, теоретически дубли возможны, но их точно нет в результате запроса.
Случайно нашёл обходной путь: присоединяемую таблицу обернул во вложенный запрос, и уже вложенный запрос соединяю с основной таблицей.
Теперь всё работает как надо.

Вопрос: почему? Что за хрень? В обоих случаях запрос возвращает одно  и то же, однако без обёртки во вложенный запрос форма с ДС не работает.
Может ли кто-нибудь объяснить механизм работы ДС?
Ответ: Спасибо всем откликнувшимся. Как это обычно бывает, косяк в моей невнимательности. Дело в том, что после использования конструктора запроса в настройке динамического списка, самопроизвольно меняется основная таблица. Я этого сразу не заметил, так что дело не в запросе вообще, а поведении конструктора запроса.
Вопрос: Не работает группировка в Динамическом списке

Привет всем, столкнулся с проблемой что не работает группировка в динамическом списке Вот пример запроса, а на форме без группировки

ВЫБРАТЬ
    КонтактнаяИнформация.Объект КАК КонтактноеЛицо,
    КонтактнаяИнформация.Объект.Должность КАК Должность
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.КонтактныеЛица)
    И КонтактнаяИнформация.Объект.ОбъектВладелец = &ОбъектВладелец

СГРУППИРОВАТЬ ПО
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Объект.Должность
Ответ: () ()  В динамическом списке группировки по иному видимо работают. Завернул все во вложенную таблицу, Работает как надо. Всем спасибо
Вопрос: Изменение Динамического списка в расширении. Установленные параметры не фильтруют данные

Есть такая замечательная обработка в ЕРП - ЖурналДокументовЗакупки. Потребовалось вывести дополнительные колонки, типа булево (или ИндексКартинки чтобы вместо Да/нет были картинки свои)

Запрос Динамического списка успешно переделал, столбцы вывел, отображается как задумано. При изменении периода, Параметры устанавливаются, а вот данные ни в какую не хотят фильтроваться.

Установка параметров как обычно, в типовой форме происходит

СписокДокументыЗакупки.Параметры.УстановитьЗначениеПараметра("НачалоПериода",
        Период.ДатаНачала);
    СписокДокументыЗакупки.Параметры.УстановитьЗначениеПараметра("КонецПериода",
        Период.ДатаОкончания);


А вот при изменении любого поле отбора, все прекрасно фильтруется.
Ответ: Это очередной из серии глюков с динамическом списком в расширении..
Вопрос: Обновить динамический список

Добрый день,

Прошу помочь кто, чем может, т.к. самостоятельно ну никак не получается.

Исходные данные:
1. Платформа 8.3.10, УФ, самописная конфигурация.
2. Форма. На форме - Табличная часть, у которой один из реквизитов - Уникальный идентификатор (УИД), плюс - динамический список, ссылающийся на периодический регистр сведений (в пределах секунды). У Регистра поле "для связи" (в которое записывается УИД - строковое).
3. при изменении значения любого поля в табличной части в регистр сведений записываются изменения (УИД строки, период, что было, что стало). Изменения записываются по событию поля табличной части "При изменении" (один из вариантов).
4. После записи в регистр на форме срабатывает процедура по обновлению данных динамического списка. Код процедуры:
Код:
ТаблицаИзменений.Отбор.Элементы.Очистить();
    ЭлементОтбора = ТаблицаИзменений.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УИДСтроки");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Строка("" + УИДСТроки);
    ЭлементОтбора.Использование = Истина;
5. Динамический список имеет всего 3 видимых строки, остальные видны только с помощью вертикальной прокрутки.

5. В результате:
5.1. В Регистр все исправно пишется.
5.2. Данные в динамический список поступают, но если количество добавленных строк в регистр по табличному полю более 4, они не видны (только с прокруткой).
5.3. Не удается активизировать строку динамического списка после добавления.

Подскажите, где, что не так? Заранее благодарю.

P.S. Динамический список БЕЗ произвольного запроса. Установлен порядок "По убыванию" для "Периода"
Ответ:
Точнее, немного не так. Правильнее вопрос должен звучать так: Почему, если я ставлю обновление списка на событие табличной части (ТЧ) "При активизации строки", то все работает - как надо. А если на событие "При изменении" (какого-либо поля ТЧ), то - не все гладко?
Вопрос: Получить объекты выделенных элементов динамического списка

Всем привет!
Блин! столкнулся с проблемой ... даже не знаю..
Что нужно для первого шага задуманной процедуры.. ПОЛУЧИТЬ ОБЪЕКТ ЭЛЕМЕНТА ВЫДЕЛЕННОЙ СТРОКИ ДИНАМИЧЕСКОГО СПИСКА!
Я просто не могу понять почему это можно когда речь о получении одного элемента списка:
Код:
СписокИмя="Список"; ЭлементСписка = Элементы[СписокИмя].ТекущаяСтрока; Предупреждение(ЭлементСписка);
А почему целая проблема когда нужно получить объекты несколько выделенных элементов уже в цикле.
Код:
СписокИмя="Список";
ВыделенныеСтроки = Элементы[СписокИмя].ВыделенныеСтроки;
Для каждого СтрокаСписка Из ВыделенныеСтроки Цикл
ЭлементСписка=Элементы[СписокИмя].ДанныеСтроки(СтрокаСписка);
Сообщить(ЭлементСписка);
КонецЦикла;
И самое не понятное, что бы получить не объект элемента, а просто значение реквизита можно сделать так:
Код:
ЭлементСписка=Элементы[СписокИмя].ДанныеСтроки(СтрокаСписка)["ИмяРеквизита"];
Только в случае если это список справочника, то можно указать любой реквизит наименование, код и т.д.
Но в случае, если список документов то, стоит только указать реквизит возврата на пример номер то выдает кляузу. И вообще на какие то определенные реквизиты реагирует нормально. А на какие то ревет.
Дур-дом ... т.е. платформе не все реквизиты по вкусу, что ли ? .. одурею.
Поэтому ни в какую... А нужно элементарное... Просто получить объекты выделенных элементов списка. А уже полом сам знаю как получить нужные значения реквизитов полученных объектов списка.
Конечно для этого есть команда ПолучитьОбъект(), но она для сервера.
И что понять не могу, почему если список справочника все без проблем, а если документа то выдает кляузу. Тогда как и тот и другой это динамический список.
Поэтому как получить объекты? Может что то не учел. И может капризной среде нужен на пример какой то индекс ... вообщем не знаю.
Поэтому это уже не просто просьба а крик о помощи!
Буду очень очень очень очень признателен!
Ответ:
Да получилось.. вот таким макаром
Код:
СписокИмя="Список";
ВыделенныеСтроки = Элементы[СписокИмя].ВыделенныеСтроки;
Для каждого СтрокаСписка Из ВыделенныеСтроки Цикл
ЭлементКод=Элементы[СписокИмя].ДанныеСтроки(СтрокаСписка).код;
ЭлементИмя=Элементы[СписокИмя].ДанныеСтроки(СтрокаСписка).Наименование;
Сообщить(ЭлементИмя+" - "+ЭлементКод);
КонецЦикла;
В том и дело, что в выше указанном коде он используется, но для списка документов возникает кляуза.
Я просто не знаю "Разбирайте" что имеется ввиду.... и как разбирать В указном цикле он и разбирается.
Просто кляузничает если список документа. Ну на пример если так
Код:
ЭлементНомер=Элементы[СписокИмя].ДанныеСтроки(СтрокаСписка).Номер;
Тут же ревет о том, что "Поле объекта не обнаружено (Номер)"
Ладно! Если так не хочет тогда без номера
Код:
ЭлементСписка_Объект=Элементы[СписокИмя].ДанныеСтроки(СтрокаСписка);
Сообщить(ЭлементСписка_Объект);
На что любезно но не без ехидства сообщает: "". И ничего более.
А нужно, что бы он выдавал список выделенных объектов (не по типу текста а просто ссылки или объекты). И так по всем тем выделенным элементам которых затрагивает цикл.
Вот что нужно!
Только не понятно как это сделать?
Гуууууу ....
Вообщем прощу и буду очень признателен!
И если не трудно побольше конкретики и работающих примеров.
Буду признателен!