1с выделенныестроки не работает

Обработать выделенные строки в ТЧ — слетает нумерация при перезаполнении ТЧ

Добрый день!
Подскажите пожалуйста, хотел все сделать быстро и красиво, а тут попался камушек и я споткнулся(((

Ковыряю неведомую программу Управляющий 8, редакция 1.4 (там все не как у людей, возможно дело в этом, но наверно дело в коде)

Задачка простая — сделать обработочку для группового изменения документов.
Заполняю табличную часть, в ТЧ ссылки на документы. Потом юзер в списке выделит какие нужны, и нажмет обработать (это такая фишечка — обрабатывать выделенные, предлагал сделать галочки вместо этого, но не катит)

Нахожу выделенные строки грубо говоря вот так:
СписокЗначенийВыделенныеЗаявкиДляОбработки = Новый СписокЗначений;

СписокЗначенийВыделенныеЗаявкиДляОбработки.ЗагрузитьЗначения(ЭтаФорма.Элементы.ЗаявкиДляОбработки.ВыделенныеСтроки);
//ЗаявкиДляОбработки — табличная часть
СписокЗначенийВыделенныеЗаявкиДляОбработки.СортироватьПоЗначению();

Если МассивВыделенныеЗаявкиДляОбработки.Количество()>0 Тогда
Для Индекс = 0 По МассивВыделенныеЗаявкиДляОбработки.Количество() — 1 Цикл
Сообщить(МассивВыделенныеЗаявкиДляОбработки[Индекс]);
КонецЦикла;
КонецЕсли;

Например в ТЧ 10 строк, индекс пишет 0-9, все норм.
Но вот косяк: когда я перезаполняю табличную часть, очищая ее при этом
Объект.ЗаявкиДляОбработки.Очистить();
, то индекс слетает и считается не с нуля а со следующего номера после конца предыдущей ТЧ.
Например в новой ТЧ 5 строк, и тут выделенные строки дают индекс 10-14!! и т.д. То есть при перезаполнении ТЧ выделенные строки считаются не с нуля, как надо, а с последнего номера в старой таблице! И вообще там получается индекс строки, а не ее содержимое (неделю назад делал так в списке документов, все работало, а тут никак) Подскажите, может как-то еще надо очищать ТЧ? Или я вообще делаю не так.

Читайте также:  Mikrotik настроить wifi wlan

Еще одна жертва подхода «а ща мы тут сабелькой помашем».

Выделенная строка и текущая строка — это не индексы а идентификаторы. Про это даже в СП пишут. Там же написано про методы получения строк по идентификатору.

Источник

Установка значения выделенных строк

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Копирование выделенных строк из отчета (чтобы потом добавить в ТЧ документа) 1с 8.3
Добрый день! Помогите кто может, бьюсь безрезультатно.. Есть отчет ДниРождения, нужно выделить.

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

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

Вывести значения всех выделенных строк в DataGridView
Доброго времени суток. У меня никак не получается вывести необходимые значения всех выделенных.

Добавлено через 3 минуты
Scratchsv,
<Документ.ПланированиеВыработкиПоРесурсам.Форма.ФормаДокумен та.Форма(41)>: Ошибка при вызове метода контекста (НайтиПоИдентификатору)
НСтроки = объект.ПланированиеВыработки.НайтиПоИдентификатору(Строка).Н омерСтроки;
по причине:
Несоответствие типов (параметр номер ‘1’)

Добавлено через 8 минут
Scratchsv, при нажатии этой кнопки, он должен сначала выводить общую форму для выделенных строк

Добавлено через 4 часа 52 минуты
Поподробнее: есть в конфигураторе документ «ПланированиеВыработкиПоРесурсам», у документа есть ТЧ, реквизиты у ТЧ след: Сотрудник(тип справочник ФизическиеЛица), Часы(тип Число), Комментарии(тип Строка), и в форме этого документа мною созданы кнопки «Заполнить»(при нажатии он загружает в ТЧ документа список сотрудников из справочника ФизическиеЛица) и кнопка «УстановкаЗначения», эта кнопка устанавливает значения для выделенных строк,т.е после того как список сотрудников загружен в ТЧ(часы и комментарии остаются не заполненные), надо чтоб пользователь выделил строки(может быть несколько строк), и должна открываться общая форма, для того чтобы установить значения(общая форма называется «ВыборПроизвольногоЗначения», у него единственный реквизит: Значения, тип: Произвольный, есть кнопки «ПодтвердитьВыбор»(для того чтобы при нажатии кнопки «ОК» подтвертился выбор) и «ОтменитьВыбор»(для отмены установки значения)

Добавлено через 1 час 41 минуту
записал вот так:

Источник

Установка значения выделенных строк

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Копирование выделенных строк из отчета (чтобы потом добавить в ТЧ документа) 1с 8.3
Добрый день! Помогите кто может, бьюсь безрезультатно.. Есть отчет ДниРождения, нужно выделить.

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

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

Вывести значения всех выделенных строк в DataGridView
Доброго времени суток. У меня никак не получается вывести необходимые значения всех выделенных.

Добавлено через 3 минуты
Scratchsv,
<Документ.ПланированиеВыработкиПоРесурсам.Форма.ФормаДокумен та.Форма(41)>: Ошибка при вызове метода контекста (НайтиПоИдентификатору)
НСтроки = объект.ПланированиеВыработки.НайтиПоИдентификатору(Строка).Н омерСтроки;
по причине:
Несоответствие типов (параметр номер ‘1’)

Добавлено через 8 минут
Scratchsv, при нажатии этой кнопки, он должен сначала выводить общую форму для выделенных строк

Добавлено через 4 часа 52 минуты
Поподробнее: есть в конфигураторе документ «ПланированиеВыработкиПоРесурсам», у документа есть ТЧ, реквизиты у ТЧ след: Сотрудник(тип справочник ФизическиеЛица), Часы(тип Число), Комментарии(тип Строка), и в форме этого документа мною созданы кнопки «Заполнить»(при нажатии он загружает в ТЧ документа список сотрудников из справочника ФизическиеЛица) и кнопка «УстановкаЗначения», эта кнопка устанавливает значения для выделенных строк,т.е после того как список сотрудников загружен в ТЧ(часы и комментарии остаются не заполненные), надо чтоб пользователь выделил строки(может быть несколько строк), и должна открываться общая форма, для того чтобы установить значения(общая форма называется «ВыборПроизвольногоЗначения», у него единственный реквизит: Значения, тип: Произвольный, есть кнопки «ПодтвердитьВыбор»(для того чтобы при нажатии кнопки «ОК» подтвертился выбор) и «ОтменитьВыбор»(для отмены установки значения)

Добавлено через 1 час 41 минуту
записал вот так:

Источник

1с получить выделенные строки табличной части

Сейчас мы рассмотрим с Вами как получить текущие данные строки в табличной части на форме в 1с 8.3 (управляемые формы). Для начала нам нужно НаКлиенте обратится к самой форме, после этого выбрать, текущий элемент, а затем текущие данные. В приведенном ниже коде мы высчитываем сумму строки в событии ПриИзмененииКоличества.

Если у Вас возникли какие-то вопросы Вы можете воспользоваться нашими услугами 1с программистов, и они обязательно помогут Вам в решении любых вопросов.

Табличные части существуют у многих объектов в 1С:

  • Справочники
  • Документы
  • Отчеты и обработки
  • Планы счетов
  • Планы видов характеристик
  • Планы видов расчета
  • Бизнес-процессы и задачи

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

Рассмотрим некоторые приемы работы с табличными частями.

Как обойти табличную часть

Для обхода табличной части можно использовать цикл Для каждого

Для каждого Строка из ТабличнаяЧасть Цикл

Сообщить ( Строка . РеквизитТабличнойЧасти ) ;

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

Как получить и обойти выделенные строки табличной части

Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.

Для получения перечня выделенных строк используется следующий код:

Для того чтобы обойти выделенные строки используется цикл Для каждого:

ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;

Для каждого Строка из ВыделенныеСтроки Цикл

Как программно выделить строки табличной части (табличного поля) и снять выделение

Чтобы программно снять выделение строк табличного поля:

Чтобы программно выделить все строки табличного поля:

Как очистить табличную часть

Как получить текущую строку табличной части

Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.

Для обычных форм код будет выглядеть так:

Для управляемых форм:

Как добавить новую строку в табличную часть

Добавление новой строки в конец табличной части:

Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):

НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
//Индекс — номер добавляемой строки. Нумерация строк начинается с нуля.

НоваяСтрока . Реквизит 1 = «Значение» ;

Как программно заполнить реквизиты строки табличной части

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

Создаваемая обработчиком процедура имеет три параметра:

  • Элемент — содержит элемент управления ТабличноеПоле.
  • НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
  • Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.

Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.

Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )

//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;

//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедуры

Работа с табличной частью объектов в 1С : 7 комментариев

Приветствую!
Только начал изучать 1С.
Кое что уже знаю, но мало и опыта практически ноль.
Создал свою конфигурацию, пока только для тестов.
В данной конфигурации есть документ, назовем его «Заявка».
В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
Вопрос.
Как мне это сделать?
Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
Но как это оформить, пока не могу понять…

Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.

Я бы порекомендовал сделать запрос к табличной части документа (именно к табличной части, а не к документу). Выбрать там ваш столбец Стоимость и другие столбцы, если нужно. И применить функцию СУММА к этому столбцу. Подробнее и с примерами смотрите в статье Группировки в запросах 1С http://chel1c.ru/querry_group/

Спасибо!
Буду пробовать.

А может это подойдет?

Табличная часть (Tabular section)
Итог (Total)
Синтаксис:

Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:

Тип: Число; Неопределено.

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

Сервер, толстый клиент, внешнее соединение.
Пример:

Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.

Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?

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

Работа с коллекциями значений

Часто приходится работать с выделенными строками пользователем в различных элементах формы типа коллекции:

  • Дерево значений
  • Динамический список
  • Список значений
  • Таблица значений

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

Для демонстрации работы с выделенными строками, я создал в управляемой форме внешней обработки 4 вида коллекции ( см. Рис 1 )

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

Следующий программный кок показывает как использовать свойство
ВыделенныеСтроки в различных видах коллекции

Источник

Оцените статью