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

Обновлено: 05.07.2024

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

Илья Простаков , для начала, обычные или управляемые формы?

Управляемые, конфигурация Зарплата и кадры государственного учреждения, редакция 3.1
3.1.12.144
Версия платформы 8.3.15

MASU , для команды прописываете вызов серверного метода или клиентского? Стандартно просто при гуглении внешних печатных форм в интернете в процедуре инициализации предлагается прописывать вызов серверного метода, а из серверного модуля вы никак текущие данные формы не увидите, они же все на клиентской стороне.
Можно так сделать:
В модуле обработки:

Функция СведенияОВнешнейОбработке() Экспорт

Назначения = Новый Массив ;
Назначения.Добавить("Документ.НачислениеЗарплаты") ;

ПараметрыРегистрации = Новый Структура ;
ПараметрыРегистрации.Вставить("Вид","ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение",Назначения);
ПараметрыРегистрации.Вставить("Наименование","Печать текущей строки");
ПараметрыРегистрации.Вставить("Версия","1.0");
ПараметрыРегистрации.Вставить("Информация","Дополнительная обработка табличной части");
ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);

Команды = ПолучитьТаблицуКоманд() ;
ДобавитьКоманду(Команды, "Печать текущей строки","ПечатьТекущейСтроки","ВызовКлиентскогоМетода",Ложь,) ;

Функция ПолучитьТаблицуКоманд() и ДобавитьКоманду() стандартные, легко гуглятся.

здесь для переменной ВыполняемаяКоманда предусматривать условие в принципе нужно только если команд у вас несколько. Получаете форму вызывающего документа через ВладелецФормы, соответственно, все остальные данные вызывающей формы можно уже легко получить. В приведенном примере выводится сотрудник из текущей строки таблицы Начисления.

Простая , в два шага, схема программной установки нужной нам строки активной.

Как установить строку в 8.2 (Управляемые формы) читайте здесь .

Для начала хочу напомнить, что данные табличной части документа(или таблицы значений) и табличное поле – это разные объекты. Для того чтобы сделать какие-то визуальные действия мы работаем с табличным полем. В данном случае, мы будем использовать его свойство " ТекущаяСтрока ", как раз оно и отвечает за то, какая строка активна.

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

2. Установить значением текущей строки найденную строку
Теперь нам нужно присвоить значение переменной НужнаяСтрока свойству табличного поля ТекущаяСтрока:

Анна Викулина

Протестируйте качество нашей работы - получите первую консультацию в подарок.

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

Создание простой обработки в 1С 8.3

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

Рис.1 Выбор вида документа

Рис.1 Выбор вида документа

Рис.2 Конструктор формы обработки

Рис.2 Конструктор формы обработки

Рис.3 Внешняя обработка Форма

Рис.3 Внешняя обработка Форма

Рис.4 Создание процедуры на клиенте

Рис.4 Создание процедуры на клиенте

Рис.5 Внешняя обработка

Рис.5 Внешняя обработка

Добавление в ИБ дополнительной обработки

В конфигурациях, использующих библиотеку стандартных подсистем, существует возможность дополнять функциональность системы, не внося изменений в конфигурацию. Это очень удобный механизм и все компании, не снимающие типовые базы с поддержки, используют его. Реализуется это при помощи внешних обработок и отчетов одного из предусмотренных платформой видов:

  • ЗаполнениеОбъекта;
  • ДополнительнаяОбработка;
  • СозданиеСвязанныхОбъектов;
  • ПечатнаяФорма;
  • Отчет;
  • ДополнительныйОтчет.

Рис.6 Заполнение данных обработки

Рис.6 Заполнение данных обработки

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

  1. Вид – указывается 1 из вышеперечисленных вариантов;
  2. МасНазначений – массив, включающий в себя все объекты конфигурации, на которые предполагается добавить новый функционал;
  3. Наименование – как будет называться наша доработка в общем списке;
  4. БезопасныйРежим – ограничение определенных действий для обработки;
  5. Команды – список кнопок, которые появятся в объектах, перечисленных в МасНазначений.

Рис.7 НСИ и администрирование

Рис.7 НСИ и администрирование

Рис.8 Проведение документа

Рис.8 Проведение документа

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

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


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

1. Условное оформление в упр. формах настраивается как в режиме конфигуратора, так и в режиме пользовательском.

— в конфигураторе условное оформление существует на уровне самой формы (как в формах объекта, так и списка):

В форме

В формах списка условное оформление существует и на уровне самого динамического списка:

2

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

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

3

2. Программная работа с условным оформлением (УО).

Начнем с того, что работа с УО доступна только:

Для Добавления элемента УО в списке нужно обратится к списку и добавить элемент УО:

ЭлементОформления = Список . УсловноеОформление . Элементы . Добавить ();

Для УО формы добавление происходит через прикладной объект УсловноеОформление:

ЭлементУсловногоОформления = УсловноеОформление . Элементы . Добавить ();

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

Значение свойства УО:

Элемент . Использование = Истина;

Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:

// Создаем поля оформления
ПолеОформления = ЭлементОформления . Поля . Элементы . Добавить ();
ПолеОформления . Поле = Новый ПолеКомпоновкиДанных ( ПолеДляОформления );
ПолеОформления . Использование = Истина;

В качестве ИменПолей нужно передавать строковое представление ИМЕНИ реквизита.

3. Все настройки УО хранятся для каждого пользователя отдельно.

4. Пример.

Очень часто сталкивался с проблемой настройки свойства АвтоОтметкаНезаполненного в ТЧ по условию . В обычных формах все решалось в процедурах упомянутых выше, а здесь таких событий нет. А решается это все конечно при помощи УО. Заходим в форме объекта в Условное оформление и видим свойство — Отметка незаполненного. Ну а дальше настроииваем как надо.

4

Выводы:

— Простое условное оформление пользователь может настроить и сам, если его научить :). Это будет сложно конечно, но возможно.

— УО в табличной части можно задать в конфигураторе через УО формы.

— Программная работа с УО требуется в случае сложного условия отбора, в таких случаях лучше создавать процедуру в общем модуле использования в различных документах и списках.


Настрою вашу 1С. Опыт с 2004 года. Подробнее →

Смотрите видео инструкцию по этой статьей на моём Ютуб-канале:

Лайфхаки 1с видео инструкция

Добавление отдельной новой колонки в 1С с дополнительной информацией

Изменить форму 1с (2)

Настройка формы 1с (3)

Новая колонка успешно добавлена!

Новая колонка в таблице 1с (4)

Сортировка строк в 1с таблице

Сортировка строк в 1с (5)

Копирование строк из таблицы 1С

Копирование строк в 1с (6)

Разбить строку в 1С

Разбить строку в 1с (7)

Вывести таблицу документа 1с в Excel

Выбираем флагами нужные колонки для вывода или оставляем все по умолчанию.

Выбор колонок для вывода списка 1с (9)

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