1с получить выделенные строки динамического списка
Работа с алгоритмом:
Вызывается функция ПолучитьОтборСтрокДинамическогоСписка, в которую передаются необходимые параметры. ВНИМАНИЕ: возвращаемое значение - таблица значений! Функция выполняется на сервере.
В приложении пример получения списка отобранных ссылок на примере справочника Номенклатура.
Функция ПолучитьОтборСтрокДинамическогоСписка ( ДинамическийСписок , ДополнительныеПоляВыбора = Неопределено, ДополнительныйОтбор = Неопределено) Экспорт
// Описание переменной ДополнительныйОтбор:
//ДополнительныйОтбор = Новый ТаблицаЗначений;
// Сформируем схему компоновки
СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных ;
// Заполнение запроса источника данных
ИсточникДанных = СхемаКомпоновкиДанных . ИсточникиДанных . Добавить ();
ИсточникДанных . Имя = "ИсточникДанных1" ;
ИсточникДанных . ТипИсточникаДанных = "Local" ;
НаборДанныхЗапрос = СхемаКомпоновкиДанных . НаборыДанных . Добавить ( Тип ( "НаборДанныхЗапросСхемыКомпоновкиДанных" ));
НаборДанныхЗапрос . Имя = "НаборДанных" ;
НаборДанныхЗапрос . ИсточникДанных = "ИсточникДанных1" ;
Если ДинамическийСписок . ПроизвольныйЗапрос Тогда
НаборДанныхЗапрос . Запрос = ДинамическийСписок . ТекстЗапроса ;
НаборДанныхЗапрос . Запрос = "ВЫБРАТЬ
| " + ДинамическийСписок . ОсновнаяТаблица + " КАК ИсточникДанных" ;
// Заполнение выводимых полей и группировок
ВыбранноеПолеКомпоновкиДанных = СхемаКомпоновкиДанных . ВариантыНастроек . Основной . Настройки . Выбор . Элементы . Добавить ( Тип ( "ВыбранноеПолеКомпоновкиДанных" ));
ВыбранноеПолеКомпоновкиДанных . Поле = Новый ПолеКомпоновкиДанных ( "Ссылка" );
Если ДополнительныеПоляВыбора <> Неопределено Тогда
Для Каждого ДополнительноеПолеВыбора Из ДополнительныеПоляВыбора Цикл
ВыбранноеПолеКомпоновкиДанных = СхемаКомпоновкиДанных . ВариантыНастроек . Основной . Настройки . Выбор . Элементы . Добавить ( Тип ( "ВыбранноеПолеКомпоновкиДанных" ));
ВыбранноеПолеКомпоновкиДанных . Поле = Новый ПолеКомпоновкиДанных ( ДополнительноеПолеВыбора );
ГруппировкаКомпоновкиДанных = СхемаКомпоновкиДанных . ВариантыНастроек . Основной . Настройки . Структура . Добавить ( Тип ( "ГруппировкаКомпоновкиДанных" ));
АвтоВыбранноеПолеКомпоновкиДанных = СхемаКомпоновкиДанных . ВариантыНастроек . Основной . Настройки . Структура [ 0 ]. Выбор . Элементы . Добавить ( Тип ( "АвтоВыбранноеПолеКомпоновкиДанных" ));
// Сформируем настройки КД
ИсточникДоступныхНастроекКомпоновкиДанных = Новый ИсточникДоступныхНастроекКомпоновкиДанных ( СхемаКомпоновкиДанных );
КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных ;
КомпоновщикНастроекКомпоновкиДанных . ЗагрузитьНастройки ( СхемаКомпоновкиДанных . НастройкиПоУмолчанию );
КомпоновщикНастроекКомпоновкиДанных . Инициализировать ( ИсточникДоступныхНастроекКомпоновкиДанных );
Для Каждого ЭлементОтбора Из ДинамическийСписок . Отбор . Элементы Цикл
СоздатьЭлементОтбора ( КомпоновщикНастроекКомпоновкиДанных . Настройки . Отбор . Элементы , ЭлементОтбора );
Если ДополнительныйОтбор <> Неопределено Тогда
Для Каждого ЭлементОтбора Из ДополнительныйОтбор Цикл
НовыйЭлементОтбора = КомпоновщикНастроекКомпоновкиДанных . Настройки . Отбор . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ));
НовыйЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( ЭлементОтбора . ЛевоеЗначение );
Если ЭлементОтбора . ВидСравнения = Неопределено Тогда
НовыйЭлементОтбора . ВидСравнения = ВидСравненияКомпоновкиДанных . Равно ;
НовыйЭлементОтбора . ВидСравнения = ЭлементОтбора . ВидСравнения ;
НовыйЭлементОтбора . ПравоеЗначение = ЭлементОтбора . ПравоеЗначение ;
// Получим итоговые настройки и макет
НастройкиКомпоновкиДанных = КомпоновщикНастроекКомпоновкиДанных . ПолучитьНастройки ();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных ;
МакетКомпоновкиДанных = КомпоновщикМакета . Выполнить ( СхемаКомпоновкиДанных , НастройкиКомпоновкиДанных . Тип ( "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений" ));
// Подготовим процессор и выполним компоновку
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновкиДанных . Инициализировать ( МакетКомпоновкиДанных );
ТаблицаСсылок = Новый ТаблицаЗначений ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений ;
ПроцессорВывода . УстановитьОбъект ( ТаблицаСсылок );
ПроцессорВывода . Вывести ( ПроцессорКомпоновкиДанных ,Истина);
Процедура СоздатьЭлементОтбора ( ЭлементыОтбора , ЭлементОтбораИсточник )
НовыйЭлементОтбора = ЭлементыОтбора . Добавить ( Тип ( ЭлементОтбораИсточник ));
ЗаполнитьЗначенияСвойств ( НовыйЭлементОтбора , ЭлементОтбораИсточник );
Если Тип ( ЭлементОтбораИсточник ) = Тип ( "ГруппаЭлементовОтбораКомпоновкиДанных" ) И ЭлементОтбораИсточник . Элементы . Количество () > 0 Тогда
Для Каждого ЭлементОтбора Из ЭлементОтбораИсточник . Элементы Цикл
СоздатьЭлементОтбора ( НовыйЭлементОтбора . Элементы , ЭлементОтбора )
Специальные предложения
(5). Если кого-то интересует, то параметры можно передавать:
(5) да, с параметрами я практически увидел недочет уже после публикации.
там же где заполнение отбора:
Для Каждого ЭлементПараметра Из ДинамическийСписок.Параметры.Элементы Цикл
Если Не ЭлементПараметра.Использование Тогда Продолжить; КонецЕсли;
КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(ЭлементПараметра.Параметр,ЭлементПараметра.Значение);
КонецЦикла;
А как этот самый, полученный запросом, динамический список вывести, например, в табличный документ по нажатию кнопки?
эх, полный код написать не могу, нет времени на подарки.
как вариант: вывод компоновкой не в таблицу значений, а в табличный документ, возврат его с сервера на клиента, далее отображение на клиенте.
Мне не нужен полный код.
Идея с выводом "компоновкой не в таблицу значений, а в табличный документ"
имеет, конечно, право на существование. Рассматривал этот вариант. Но в
моем случае лучше из уже сформированной в результате открытия формы
таблицы значений. Никак не получается достучаться до этой таблицы по нажатию
кнопки, чтобы ее перебрать в отчет
все намного проще,
и не нужен не какой сервер, на сервер ты уже без контекста передаешь для обработки данные. Хотя может не отработать при установки ЛиномическийОтбор = Истина, в этом случае только через СКД и копирование параметров с ДинамическогоСписка.
После строки (after line)
Код |
---|
Показать полностью |
Добавить (add code)
Код |
---|
Показать полностью |
Народ в зазеркалье проскочила статейка, что в 8.3.5 появился новый метод.
Написал для информации.
Автору спасибо. до 8.3.5 еще пыхтеть и пыхтеть.
1. еще не смотрел что нового в 3.5. что за метод?
2. "пыхтеть" - в смысле?
в 8.3 отбор динамического списка может устанавливаться по другому, например так:
По этому код немного надо менять
А у меня не проходит с параметром, хотя задаю их :
ПараметрСКД=КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.Элементы.Найти("ВидЦены");
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = Справочники.ВидыЦен.НайтиПоНаименованию("Себестоимость");
а в результатк ошибка-
: Ошибка при вызове метода контекста (Вывести)
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных,Истина);
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
<(15, 79)>: Не задано значение параметра "ВидЦены"
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = >&ВидЦены) КАК ЦеныНоменклатуры
может подскажите чт делать?
Особенности использования метода ДанныеСтроки()
Табличное поле предоставляет свойства "ТекущиеДанные", "ТекущаяСтрока", а также метод ДанныеСтроки(). Свойство "ТекущиеДанные" содержит значения считанных данных текущей строки табличного поля, а свойство "ТекущаяСтрока" содержит значение, идентифицирующее строку. Следует отметить, что свойство "ТекущиеДанные" содержит коллекцию значений текущей строки, соответствующую коллекции колонок отображаемого динамического списка. Метод "ДанныеСтроки" возвращает коллекцию значений произвольной строки динамического списка, отображаемого табличным полем. При этом возвращаемая коллекция значений также соответствует коллекции колонок отображаемого динамического списка.
Метод "ДанныеСтроки" может использоваться для обхода различных коллекций строк табличного поля (например, коллекции выделенных строк при множественном выделении или массива строк, полученного при перетаскивании данных из одного табличного поля в другое). Также данный метод можно использовать для проверки возможности вставки данных в табличное поле при перетаскивании.
Поясним использование данного метода на следующем примере. Пусть существует форма подбора номенклатуры, на которой расположено табличное поле, отображающее справочник номенклатуры. Требуется осуществлять подбор номенклатуры из данного табличного поля, причем, подбирать можно только те строки, у которых не установлена пометка удаления. Для упрощения примера будем осуществлять подбор только при помощи механизма перетаскивания. Для этого у табличного поля, отображающего справочник номенклатуры, необходимо установить свойство "РазрешитьНачалоПеретаскивания", а также установить режим множественного выделения строк, используя свойство "РежимВыделения". Далее, при обработке события «НачалоПеретаскивания» необходимо проверить в массиве перетаскиваемых строк (он передается через свойство «Значение» параметра "ПараметрыПеретаскивания" в обработчике события) наличие строк, помеченных на удаление и если такие строки существуют, то удалить их из массива. Пример обработчика события приведен ниже :
Обход коллекции выделенных строк можно пояснить на следующем примере. Пусть существует табличное поле, отображающее список справочника "Номенклатура". Требуется сохранить в текстовом документе все выделенные строки данного справочника, причем, сохранять необходимо только значения видимых колонок табличного поля. В приведенном ниже примере запись выделенных строк осуществляется при нажатии на специальную кнопку " Записать" :
Более подробно ознакомиться с особенностями реализации перетаскивания в формах можно в разделе "Особенности реализации перетаскивания в формах".
Бывают такие ситуации, что список большой, более 10 позиций, и пользователю необходимо выбрать все строки. Стандартного способа как это сделать я не нашел.
Для решения это задачи я использовал объект “WSCript.Shell“.
В процессе реализации у меня получилось 2 варианта:
Вариант №1
Определим кнопку “Выделить все строки” и в модуль обработчика добавим код:
Код 1C v 8.2 УП
С помощью данного кода выполняется нажатие клавиш “Ctrl + A“, т.е. “выделить все”.
Вариант №2
Вариант №1 не всегда срабатывал. Тогда данный код я переписал следующим образом:
Добавим реквизит формы “ПоследняяСтрокаСписка”
Для списка укажем свойство “Начальное отображение списка” = В конце списка
В процедуру “ПриОткрытии” добавим заполнение реквизита, определенного в пункте 1.
Код 1C v 8.2 УП
Определим кнопку “Выделить все строки” и в модуль обработчика добавим код:
Код 1C v 8.2 УП
С помощью данного кода выполняется нажатие клавиш “Shift + кнопка вверх“.
Хочу обратить внимание. Данное решение не будет работать на клиентах, которые запускаются на Линукс.
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За Автоматическая архивация баз 1С с использованием Cobian Backup и VBS скриптов 8
Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет - так хочет, делаем: Первым делом настроим автоматическую архивац Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 22
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Бывают такие ситуации, что список большой, более 10 позиций, и пользователю необходимо выбрать все строки. Стандартного способа как это сделать я не нашел.
Для решения это задачи я использовал объект “WSCript.Shell“.
В процессе реализации у меня получилось 2 варианта:
Вариант №1
Определим кнопку “Выделить все строки” и в модуль обработчика добавим код:
Код 1C v 8.2 УП
С помощью данного кода выполняется нажатие клавиш “Ctrl + A“, т.е. “выделить все”.
Вариант №2
Вариант №1 не всегда срабатывал. Тогда данный код я переписал следующим образом:
Добавим реквизит формы “ПоследняяСтрокаСписка”
Для списка укажем свойство “Начальное отображение списка” = В конце списка
В процедуру “ПриОткрытии” добавим заполнение реквизита, определенного в пункте 1.
Код 1C v 8.2 УП
Определим кнопку “Выделить все строки” и в модуль обработчика добавим код:
Код 1C v 8.2 УП
С помощью данного кода выполняется нажатие клавиш “Shift + кнопка вверх“.
Хочу обратить внимание. Данное решение не будет работать на клиентах, которые запускаются на Линукс.
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 22
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
Сообщить ( Строка . РеквизитТабличнойЧасти ) ;
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.
Для получения перечня выделенных строк используется следующий код:
Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
Чтобы программно выделить все строки табличного поля:
Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки . Добавить ( ТекущаяСтрока ) ;
КонецЦикла ;
Как очистить табличную часть
Как получить текущую строку табличной части
Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.
Для обычных форм код будет выглядеть так:
Для управляемых форм:
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
//Индекс - номер добавляемой строки. Нумерация строк начинается с нуля.
НоваяСтрока . Реквизит 1 = "Значение" ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
- Элемент — содержит элемент управления ТабличноеПоле.
- НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
- Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;
//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедуры
Работа с табличной частью объектов в 1С : 13 комментариев
Приветствую!
Только начал изучать 1С.
Кое что уже знаю, но мало и опыта практически ноль.
Создал свою конфигурацию, пока только для тестов.
В данной конфигурации есть документ, назовем его «Заявка».
В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
Вопрос.
Как мне это сделать?
Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
Но как это оформить, пока не могу понять…
Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.
Спасибо!
Буду пробовать.
А может это подойдет?
Табличная часть (Tabular section)
Итог (Total)
Синтаксис:
Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:
Тип: Число; Неопределено.
Суммирует значения всех строк в указанной колонке.
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.
Сервер, толстый клиент, внешнее соединение.
Пример:
Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?
Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.
Здравствуйте!
Опишу вкратце ситуацию:
Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//Создаём новую коллекцию печатных форм
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«ПечатьЭтикеток»);
//Добавляем в коллекцию сформированный табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДокумент;
//Устанавливаем параметры печати (при необходимости)
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = «ПечатьЭтикеток»; //Так будет выглядеть имя файла при сохранении в файл из формы «Печать документов»
//Вывод через стандартную процедуру БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, Неопределено);КонецПроцедуры
ТабДокумент.АвтоМасштаб = истина ;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;
Макет = ДокСсылка.ПолучитьОбъект().ПолучитьМакет(«Этикетка»);
Для каждого Стр Из ДокСсылка.Картриджи Цикл
//Если Лев(Стр.СерийныйНомер,2) «30» Тогда
// Продолжить;
//КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(«ШПК»);
ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;
Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?
Да, логика такая. Только учтите, что таблица значений не передается с клиента на сервер.
Выделенный строки табличного поля на форме — это массив строк. Надо попробовать, передастся ли он. Если да, хорошо. Если нет — надо думать, как его передать.
Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?
Читайте также: