1с как обойти табличную часть
Строка — примитивный тип данных в языке программирования 1С. Помимо 1С, этот тип данных используется во всех известных языках программирования, обычно он называется «string».
Функции работы со строками в 1С
Рассмотрим основные функции встроенного языка программирования 1С.
Строка
Функция Строка() позволяет получить текстовое представление переменных других типов.
СтрДлина
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
СокрЛП, СокрЛ, СокрП
Полезная функция для удаления незначащих символов в строковом значении. СокрЛ обрабатывает символы, стоящие слева от последнего значащего символа, СокрП — справа. А СокрЛП — справа и слева.
Помимо пробелов, функция 1C удаляет такие символы, как перенос строки, неразрывный пробел и т.д.
Лев, Прав, Сред
С помощью данных функций очень просто получить первые (Лев) или последние (Прав) символы в строке, а также произвольное количество символов (Сред).
Найти
Функция для поиска подстроки внутри другой подстроки. Синтаксис Найти( , ). Функция возвращает число — номер позиции символа (или символов) в исходной подстроке. Если подстроки не найдено, вернётся число 0. Если в искомой подстроке есть несколько вхождений, вернется номер позиции первого совпадения.
ВРег, НРег, ТРег
Функции для управления регистром строки. ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Получите 267 видеоуроков по 1С бесплатно:
Аналогично можно проверить строку на пустое значение следующим образом:
СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
СтрЧислоСтрок
Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).
Например, построчная обработка текстового фрагмента:
СтрПолучитьСтроку
С помощью данной функции можно получить произвольную строку из многострочного текста. Синтаксис — СтрПолучитьСтроку( , ).
СтрЧислоВхождений
Функция для подсчета числа вхождений произвольного фрагмента в строку. Например, подсчитать количество вхождений определенных символов или слов в текст.
Символ и КодСимвола
Две обратные функции. С помощью КодСимвола можно получить код символа в кодировке Unicode. Функцией Символ можно получить символ, зная Unicode кодификатор.
Часто встречающиеся задачи по работе со строками в 1С
Рассмотрим классические примеры решения задач в работе с текстовыми переменными.
Конкатенация строк в 1С
Конкатенация, или объединение строк в 1С делается оператором «+».
Преобразовать число в строку
Тут всё просто. Достаточно использовать метод «Строка()»:
Однако может смущать наличие неразрывного пробела.
Его можно убрать с помощью замены неразрывного пробела на пустую строку:
или с помощью метода Формат:
Кавычки в строке 1С
Для новичков достаточно трудно установить кавычки внутри строки, хотя в этом нет ничего сложного. Достаточно внутри строки поставить вместо одних кавычек двое.
Символ переноса строки
Символ переноса строки необходим для переноса строки на следующую строку. В 1С это можно сделать с помощью специальной конструкции «Символы.ПС».
Сравнение строк в 1С
Сравнить строки достаточно просто с помощью оператора сравнения — «=».
Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:
Таким образом, мы получим более точное сравнение двух строк.
Убрать пробелы в строке 1С
Достаточно часто нужно убрать пробелы в строке 1С.
Если требуется убрать пробелы справа и слева:
Если требуется убрать абсолютно все пробелы, можно заменить их на пустую строку:
Если требуется убрать неразрывные пробелы из строки, которая получена из числового типа, сделать это можно так:
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Табличные части существуют у многих объектов в 1С:
- Справочники
- Документы
- Отчеты и обработки
- Планы счетов
- Планы видов характеристик
- Планы видов расчета
- Бизнес-процессы и задачи
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
Сообщить ( Строка . РеквизитТабличнойЧасти ) ;
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.
Для получения перечня выделенных строк используется следующий код:
Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
Чтобы программно выделить все строки табличного поля:
Как очистить табличную часть
Как получить текущую строку табличной части
Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.
Для обычных форм код будет выглядеть так:
Для управляемых форм:
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
//Индекс – номер добавляемой строки. Нумерация строк начинается с нуля.
НоваяСтрока . Реквизит 1 = "Значение" ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
- Элемент — содержит элемент управления ТабличноеПоле.
- НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
- Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;
//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедуры
Работа с табличной частью объектов в 1С : 7 комментариев
Приветствую!
Только начал изучать 1С.
Кое что уже знаю, но мало и опыта практически ноль.
Создал свою конфигурацию, пока только для тестов.
В данной конфигурации есть документ, назовем его «Заявка».
В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
Вопрос.
Как мне это сделать?
Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
Но как это оформить, пока не могу понять…
Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.
Спасибо!
Буду пробовать.
А может это подойдет?
Табличная часть (Tabular section)
Итог (Total)
Синтаксис:
Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:
Тип: Число; Неопределено.
Суммирует значения всех строк в указанной колонке.
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.
Сервер, толстый клиент, внешнее соединение.
Пример:
Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?
Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.
Описание:
Значения данного типа содержат строку в формате Unicode произвольной длины.
Обратите внимание. Для строки в 1С НЕ доступен обход её символов посредством оператора Для Каждого . Из . Цикл. Также НЕ доступно обращение к отдельным символам посредством оператора [. ]. Взятие отдельного символа строки возможно при помощи специальных функций для работы со строками, например, Сред (см. примеры использования ниже). При этом нумерация символов в строках 1С идёт с единицы.
Литералы:
Литералы строкового типа представляют собой набор символов заключенных в кавычки. Для задания в строке символа " (кавычка) необходимо записать две кавычки подряд. Кроме того, допускаются "многострочные" строковые константы. В исходном тексте многострочные константы могут задаваться двумя способами:
- Между фрагментами, представляющими отдельные строки многострочной строки, не должно встречаться никаких символов, за исключением пробелов, переводов строки и строк комментариев.
- Каждая отдельная составляющая не замыкается кавычками, а на каждой последующей строке помещен символ переноса строки | (вертикальная черта). В этом варианте комментарии допускаются, если строка начинается с символа комментария //.
Строки в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
На управляемой форме есть табличная часть документа. Сам документ ещё не записан и данные находятся на клиенте.
Как обойти эту табличную часть в цикле?
Цикл то работает. Есть пример как обратится к ТЧ?
Пишет что итератор не задан.
(8) Allexe8.1, В 8.3 тоже есть "ЭтотОбъект". там он равен "ЭтаФорма".
Получается ЭтаФорма=ЭтотОбъект.
(9) dj_serega, да, действительно есть такое. Не очень понятен смысл.
Но в любом случае к ЭтотОбъект.ТЧ - это не относится.
(12) PhoenixAOD, В 8.3 без режима совместимости или с режима 8.3.4 вроде. Или может с 8.3.5. Где-то в изменениях было. С первого раза гугл не нашел.
Таблица 1. Переименования методов и свойств в версии 8.3
Что переименовано -------- Старое наименование -------- Новое наименование
Свойство управляемой формы -------- ЭтаФорма (ThisForm) -------- ЭтотОбъект (ThisObject)
Колво = Объект.Загрузки.Количество()-1;
СчЦикла = 0;
Для СчЦикла = 0 По Колво Цикл
Элементы.Загрузки.ДанныеСтроки(СчЦикла).Флаг = Истина;
КонецЦикла;
кхе-кхе, четыре года прошло, пока написали правильный ответ.
Хвала разработчикам, слабо осветившим этот затруднительный момент, а так же персонажам типа Поручика, не способных спокойно объяснять такое.
У ДанныеФормыЭлементКоллекции есть свойство Флаг? Или это название какого-то реквизита в конкретном примере?
(18)
Ну как будто вы не знаете, что он говорит.
Набор свойств элемента коллекции зависит от того, на основе какого объекта построена данная коллекция. Может включать в себя свойства, значениями которых будут являться другие универсальные структуры, универсальные коллекции и наборы записей.
- вот что он говорит.
Если у меня, например, коллекция построена на основе таблицы (табличной части), размещённой в обработке - то какие слова я могу указывать после точки в вышеприведённом примере?
(20) Нет, не пытался выяснить.
Потому что меня интересовал противоположный вопрос - можно ли в том примере после точки указать вообще какой бы то ни было реквизит.
(21) Ваше первое предложение говорит об обратном. А если бы вы в СП посмотрели еще и ДанныеСтроки - то и вопросов не возникло бы.
(15) Это неправильный метод. Интерактивно удалите не последнюю строку ТЧ и вышеуказанный код выдаст ошибку. Правильный ответ в (6).
(23) О, хорошо что кто-то читает тему. Объясните мне, пожалуйста - если в (6) правильный ответ, то почему когда я его делаю у себя, то мне выдаёт ошибку?
(25), (26)
Разобрался. Магия присутствия специалистов в действии ))
Видимо, это какой-то психологический механизм: когда знаешь, что кто-то способный дать правильный ответ существует в досягаемости, голова начинает работать иначе.
И на всякий случай, если эту тему будет читать кто-то только начинающий изучать язык 1С: в (6) надо писать не "Объект" и не что попало, а то, что на моём скриншоте обведено красной рамкой. И имя подчинённого элемента после точки (то есть имя таблицы) - такое, как в той же колонке у подчинённого узла. Это и будет путём к коллекции.
Всем привет. Хотел бы спросить у вас, обход табличной части осуществляется только через цикл Для Каждого Из Цикл и как происходит вычисление количества строк в табличной части, я пишу диплом и прошу у вас совета
И мне преподаватель еще сказал чтобы я : При записи включил контроль заполнения реквизита Специальность в документе План и Урок это реквизит в табличной части Уроки.
Скажите внешне как мне это осуществить и я буду копаться, благодарю вас!
(7) Господи, спасибо большое, я уже 2 дня на других форумах сижу, там никто так и не помог и онлайн маленький, тут за 2 минуты ответили, благодарен вам ребят, большое спасибо
А как мне сделать при записи включить контроль заполнения реквизита Специальность в документе План и Урок это реквизит в табличной части Уроки.
Я в том плане, мне на кнопку какую-то это надо привязать или что?
(12) Я прочитал 50 страниц и уже в своей тетради страниц 25 законспектировал, читать в таком режиме быстро не получается
(22) Так а модуль объекта, какой объект выбрать у меня на форме и реквизит специальность и реквизит табличной части Урок в табличной части Уроки, что выбрать то?
(22) Заметил что можно создать только:
Создать на клиенте
Создать на клиенте и процедуру на сервере без контекста
А создать на клиенте и процедуру на сервере(заблокировано) - нельзя выбрать, тогда без контекста значит выбирать, раз просто с сервера если заблокировано?
Заметил что можно создать только:
Создать на клиенте
Создать на клиенте и процедуру на сервере без контекста
А создать на клиенте и процедуру на сервере(заблокировано) - нельзя выбрать, тогда без контекста значит выбирать, раз просто с сервера если заблокировано?
(10) Это называется нестандартный подход. По идее неуд тут не за что ставить, надо просто объяснить недостатки такого подхода.
(28) Я просто отличник и мне дали супер крутое задание как они сказали, потому что я в будущем хочу быть программистом 1С поэтому и прошу меня валить преподавателям
(18) Надо не конспектировать, а делать на компе примеры из этой книжки, это будет еще медленней чем конспектировать, но пользы будет в разы больше.
Помогите с этим пожалуйста, никто не отвечает:
Заметил что можно создать только:
Создать на клиенте
Создать на клиенте и процедуру на сервере без контекста
А создать на клиенте и процедуру на сервере(заблокировано) - нельзя выбрать, тогда без контекста значит выбирать, раз просто с сервера если заблокировано?
(34) Это довольно обыденные вещи, если ты только начал изучать 1С, то бери книгу Радченко ППР и пиши "Рога и копыта". И у тебя не будет таких простых вопросов
(2) Вот проверьте правильный ли он:
Я хочу вас спросить: Вот в ТаблПоле что вставлять, если мне надо сделать При записи включить контроль заполнения реквизита специальность и реквизита табличной части Урок в табличной части Уроки. И это делается когда у нас курсовых работ меньше двух или дата документа меньше текущей даты , текущаяДата() я нашел, а вот как с Курсовыми работами - табличная часть работать не понимаю, объясните и если сможете пожалуйста пример, так понятней :)
(53) Спасибо я указал в реквизите Чтобы выдавало ошибку, у меня в реквизите надо и в реквизите табличной части Урок в табличной части Уроки. Мне в реквизите табл части тоже поставить?
(55) мне больше интересео в каком вузе начинают обцчать программированию сразу с 1ски? А как же паскаль?
(58) У нас С++ и 1С, только с С++ нет проблем вообще, а тут прям завал какой-то в 1С и информации мало в интернете
(60) я вам отвечаю что обход строк таблицы в цикле хоть в 1с хоть в с++ хоть в камушках и ракушках-одинаков!
С циклом наверное вот так:
Вот мне друг скинул, но не знаю правильно это может быть или нет
Коллекции значений 1С — это универсальные объекты Массив, Список значений, Таблица значений, Дерево значений, Структура, Соответствие.
Я хочу вас спросить: Вот в ТаблПоле что вставлять, если мне надо сделать При записи включить контроль заполнения реквизита специальность и реквизита табличной части Урок в табличной части Уроки. И это делается когда у нас курсовых работ меньше двух или дата документа меньше текущей даты , текущаяДата() я нашел, а вот как с Курсовыми работами - табличная часть работать не понимаю, объясните и если сможете пожалуйста пример, так понятней :)
А у меня табличная часть Курсовые работы, а там в описании нет табличная часть, поэтому я не понимаю
(71) Уже сделал, мне надо чтобы он теперь посчитал мне в табличной части мои строки
(74) Вот это мне сейчас надо понять как сделать: включить контроль заполнения реквизита специальность и реквизита табличной части Урок в табличной части Уроки. И это делается когда у нас курсовых работ меньше двух (вот последнее предложение)
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
Сообщить ( Строка . РеквизитТабличнойЧасти ) ;
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.
Для получения перечня выделенных строк используется следующий код:
Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
Чтобы программно выделить все строки табличного поля:
Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки . Добавить ( ТекущаяСтрока ) ;
КонецЦикла ;
Как очистить табличную часть
Как получить текущую строку табличной части
Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.
Для обычных форм код будет выглядеть так:
Для управляемых форм:
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
//Индекс - номер добавляемой строки. Нумерация строк начинается с нуля.
НоваяСтрока . Реквизит 1 = "Значение" ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
- Элемент — содержит элемент управления ТабличноеПоле.
- НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
- Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;
//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедуры
Работа с табличной частью объектов в 1С : 13 комментариев
Приветствую!
Только начал изучать 1С.
Кое что уже знаю, но мало и опыта практически ноль.
Создал свою конфигурацию, пока только для тестов.
В данной конфигурации есть документ, назовем его «Заявка».
В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
Вопрос.
Как мне это сделать?
Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
Но как это оформить, пока не могу понять…
Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.
Спасибо!
Буду пробовать.
А может это подойдет?
Табличная часть (Tabular section)
Итог (Total)
Синтаксис:
Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:
Тип: Число; Неопределено.
Суммирует значения всех строк в указанной колонке.
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.
Сервер, толстый клиент, внешнее соединение.
Пример:
Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?
Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.
Здравствуйте!
Опишу вкратце ситуацию:
Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//Создаём новую коллекцию печатных форм
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«ПечатьЭтикеток»);
//Добавляем в коллекцию сформированный табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДокумент;
//Устанавливаем параметры печати (при необходимости)
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = «ПечатьЭтикеток»; //Так будет выглядеть имя файла при сохранении в файл из формы «Печать документов»
//Вывод через стандартную процедуру БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, Неопределено);КонецПроцедуры
ТабДокумент.АвтоМасштаб = истина ;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;
Макет = ДокСсылка.ПолучитьОбъект().ПолучитьМакет(«Этикетка»);
Для каждого Стр Из ДокСсылка.Картриджи Цикл
//Если Лев(Стр.СерийныйНомер,2) «30» Тогда
// Продолжить;
//КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(«ШПК»);
ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;
Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?
Да, логика такая. Только учтите, что таблица значений не передается с клиента на сервер.
Выделенный строки табличного поля на форме — это массив строк. Надо попробовать, передастся ли он. Если да, хорошо. Если нет — надо думать, как его передать.
Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?
Обход строк табличной части проще всего реализуется с помощью цикла Для Каждого СтрокаТЧ Из ТабЧасть Цикл.
При этом переменной цикла будет являться не номер строки, а вся строка как объект. Если нужен еще номер строки, то можно использовать свойство НомерСтроки или добавить переменную и инкрементировать ее в теле цикла.
Есть также возможность использовать обычный цикл Для . По . Цикл, но необходимо помнить, что индекс 1-го элемента коллекции всегда равен 0 (нулю).
Как обойти строки табличной части?
Обход строк табличной части проще всего реализуется с помощью цикла "Копировать в буфер обмена Для Каждого СтрокаТЧ Из ТабЧасть Цикл". При этом переменной цикла будет являться не номер строки, а вся строка как объект. Если нужен еще номер строки, то можно использовать свойство НомерСтроки или добавить переменную и инкрементировать ее в теле цикла. Есть также возможность использовать обычный цикл "Для. По..Цикл", но необходимо помнить, что индекс 1-го элемента коллекции всегда равен 0 (нулю).
1С 8.2, обход табличной части формы в цикле
Добрый день!
Подскажите как обойти табличную часть формы обработки в цикле.
Объясняю подробно, есть форма обработки, на данной форме имеется табличная часть ТабСотр, я пытаюсь обойти данную табличную часть в цикле
Обход табличной части документа
Вопрос не новый, но все-таки я много бродил оп Интернет и не нашел рабочий пример. Помогите.
Запрос. Условие: строка из первой табличной части равна любой строке из другой табличной части
Есть документ "РаспределениеМатериаловНаВыпуск". У этого документа имеется "Форма документа". На.
Как из модуля формы обратиться к табличной части другой формы?
Как из модуля формы обратиться к табличной части другой формы внутри одного документа?
Автозаполнение табличной части, управляемые формы
Есть справочник Клиенты(реквизиты Наименование, Код) и документ Работа, с табличной частью.
Читайте также: