В процессе работы с типовыми конфигурациями «1С:Предприятие» пользователи часто сталкиваются с необходимостью добавить новое поле для ввода информации. Особенно остро эта проблема встает, когда данные нужно привязать не к документу в целом (не к его шапке), а к конкретной строке его табличной части. Классический пример — необходимость указать номер коробки, ящика или посылки для каждой товарной позиции в документе Реализация товаров и услуг.
Стандартный механизм «Дополнительные реквизиты и сведения», реализованный в Библиотеке стандартных подсистем (БСП), отлично справляется с добавлением полей в карточки справочников и шапки документов. Однако добавить колонку в табличную часть (многострочную часть) в режиме «1С:Предприятие» без изменения конфигурации стандартными средствами невозможно. Рассмотрим детально, почему так происходит, и разберем практические обходные пути решения этой задачи.
---
Проанализируем архитектуру платформы «1С:Предприятие». Дополнительные реквизиты физически хранятся в специальных табличных частях объектов. Если мы попытаемся добавить дополнительный реквизит к документу, система создаст поле, привязанное к самому документу (фактически к его шапке).
Для того чтобы добавить реквизит в строку табличной части (например, в таблицу «Товары»), система должна была бы поддерживать «вложенные» табличные части или динамическое расширение структуры конкретной таблицы базы данных, что не предусмотрено стандартным механизмом БСП в режиме «Предприятие». Поэтому пользователям приходится искать альтернативные варианты. Ниже мы детально разберем четыре практических метода решения этой задачи — от самых простых (без программирования) до профессиональных (с использованием расширений).
---
Если в вашей организации не ведется учет импортного товара и вам не нужно заполнять номера грузовых таможенных деклараций, то колонка Номер ГТД в табличной части «Товары» идеально подойдет для решения нашей задачи. Выясним, почему этот способ удобен и как его настроить.
Посмотрим на особенности этого реквизита: он уже присутствует в метаданных документа Реализация товаров и услуг, выведен на форму и связан со справочником Номера ГТД. Для оператора это означает, что вместо ручного ввода текста он сможет выбирать ящики из заранее созданного списка, что исключит опечатки.
Пошаговый алгоритм настройки:
Реализация товаров и услуг. В табличной части «Товары» появится колонка Номер ГТД.Этот метод хорош тем, что он абсолютно типовой, не требует программирования, не мешает обновлению базы данных и доступен в любой момент.
---
Рассмотрим самый простой, но наименее автоматизированный способ. Если дорабатывать систему категорически нельзя, а колонка ГТД уже занята под реальные импортные операции, мы можем использовать стандартное текстовое поле Комментарий внизу документа или поле Содержание в самой строке (если оформляется услуга).
Выясним, как организовать этот процесс. Администратор разрабатывает для операторов жесткий регламент заполнения комментариев. Например, текст в комментарии должен выглядеть следующим образом:
Строка 1 - Ящик 10; Строка 2 - Ящик 10; Строка 3 - Ящик 12;
Плюсы метода: не требует абсолютно никаких изменений в системе.
Минусы метода: высокий риск человеческой ошибки, невозможность автоматического контроля заполнения, сложность автоматического вывода этих данных в печатные формы без ручной правки документов перед печатью.
---
Современные технологии «1С» позволяют подключать к базе данных так называемые расширения конфигурации. Это специальные модули, которые дополняют стандартную программу новыми возможностями, но при этом сама конфигурация остается полностью типовой и обновляется автоматически в обычном режиме.
В сообществе разработчиков 1С существует множество готовых универсальных расширений для добавления дополнительных реквизитов в табличные части. Рассмотрим, как воспользоваться таким решением:
.cfe).---
Если у вас есть штатный программист или приходящий специалист, задачу можно решить максимально изящно и надежно с помощью создания собственного расширения. Разберем по шагам, как правильно спроектировать такое расширение, чтобы избежать проблем при последующих обновлениях конфигурации.
Частая ошибка начинающих разработчиков — затягивание формы документа в расширение и визуальное добавление колонки в редакторе форм. При первом же обновлении от фирмы «1С», когда изменится структура оригинальной формы, расширение может «слететь» или заблокировать работу пользователей. Мы применим более надежный метод: добавим реквизит в табличную часть объекта в расширении, а на форму выведем его программно.
Шаг 1. Создание расширения и добавление реквизита:
РеализацияТоваровУслуг, нажмем по нему правой кнопкой мыши и выберем Добавить в расширение.Товары документа РеализацияТоваровУслуг, нажмем кнопку Добавить — Реквизит табличной части. Назовем его НомерЯщика с типом Строка (длина 50 символов) или свяжем его со справочником.Шаг 2. Программный вывод колонки на форму:
Для того чтобы колонка отобразилась у пользователя, перехватим событие формы документа ПриСозданииНаСервере. Добавим форму документа в расширение, перейдем в ее модуль и создадим обработчик:
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Находим таблицу "Товары" на форме документа
ТаблицаТовары = Элементы.Найти("Товары");
Если ТаблицаТовары <> Неопределено Тогда
// Создаем новый элемент формы - поле ввода в табличной части
ИмяРеквизитаФормы = "ТоварыНомерЯщика";
НоваяКолонка = Элементы.Добавить(ИмяРеквизитаФормы, Тип("ПолеФормы"), ТаблицаТовары);
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
// Связываем поле формы с добавленным в расширении реквизитом табличной части
НоваяКолонка.ПутьКДанным = "Объект.Товары.НомерЯщика";
// Настраиваем визуальное представление
НоваяКолонка.Заголовок = "№ ящика";
НоваяКолонка.Ширина = 10;
НоваяКолонка.Подсказка = "Укажите номер ящика или посылки, в которую упакован товар";
КонецЕсли;
КонецПроцедуры
Проанализируем этот код. Конструкция &После("ПриСозданииНаСервере") указывает платформе, что наш код выполнится сразу после того, как отработает стандартный код инициализации формы. Метод Элементы.Добавить динамически создает элемент управления на форме. Данный подход гарантирует стабильность работы расширения при любых обновлениях конфигурации 1С:Бухгалтерия.
---
Выбор конкретного решения зависит от ваших ресурсов и требований к ведению учета:
Номер ГТД в качестве номера ящика. Это быстро, бесплатно и надежно.