28.09.2018 Игорь Торба 33400
Как изменить табличную часть документа из фор...

Содержание:

1.       Создание внешней обработки

2.       Описание модуля формы

3.       Перенос изменений в документ

 

На практике часто возникает потребность реализовать инструмент, с помощью которого можно было бы корректировать табличную часть документа из вспомогательной формы, пользуясь функционалом дополнительных внешних обработок. Например, для программы 1С Управление торговлей редакция 11 разработать аналог обработки табличной части, используемой в конфигурации Управление торговлей 10.3 (см. рис.). При этом конфигурация должна находиться на поддержке без возможности изменения.




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


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


 

 


1.   Создание внешней обработки


Создаем внешнюю обработку. В модуле внешней обработки создаем экспортную процедуру «СведенияОВнешнейОбработке». В параметр «Вид» устанавливаем значение «ЗаполнениеОбъекта», настройку команды «Использование» устанавливаем «ОткрытиеФормы».




Создаем форму обработки с необходимыми элементами управления. В нашем случае это – поле для ввода процента и таблица, в которой будут отражены строки табличной части документа. Создаем две команды «Рассчитать» и «Перенести в документ». По кнопке «Рассчитать» мы будем вычислять в таблице формы обработки новое значение цены с учетом процента, а по кнопке «Перенести в документ» - заполнять табличную часть документа новыми значениями.


 


  

 

2. Описание модуля формы


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


Ссылку на документ можно получить из параметра формы «ОбъектыНазначения». Этот параметр доступен внешним обработкам в режиме «ОткрытиеФормы». Параметр «ОбъектыНазначения» представляет собой массив ссылок выбранных документов. В нашем случае мы будем запускать обработку только из формы документа, следовательно, массив объектов назначения будет содержать только один элемент с индексом 0.

    

 




Мы описали заполнение формы исходными данными и переходим к описанию функционала изменения значений табличной части. На данном этапе мы реализуем задачу нашей обработки. Здесь можно изменить количество, цену, ставку налога и т.д. Не забываем, что состав колонок реквизита формы Товары тоже должен соответствовать поставленной задаче. Я выбрал самый простой вариант - изменение цены.


 



3.   Перенос изменений в документ


Переходим к завершающему этапу – перенос изменений в документ. Вот на этом этапе и возникает вопрос: «Как это сделать?». Традиционно перенос данных в документ осуществляется механизмом оповещений, но в нашем случае конфигурация полностью на поддержке с запретом изменений, и нет возможности обработать нетиповую ситуацию. Для решения этой задачи используем свойство управляемой формы «ВладелецФормы». Владельцем формы является форма нашего документа и устанавливается системой автоматически в режиме «ОткрытиеФормы». Через свойство владелец формы может получить доступ к ее основному реквизиту «Объект», в состав которого входит коллекция строк табличной части «Товары». Важно помнить, что свойство «ВладелецФормы» всегда доступно на клиенте открытой формы.


Учитывая данную возможность, обработаем в цикле строки документа и установим новые значения. Для поиска соответствующей строки используем реквизит «НомерСтроки».


Если мы меняем какое-либо числовое значение, то чаще всего необходимо выполнить пересчет связанных значений в строке. Например, изменяя цену необходимо пересчитать сумму, сумму НДС и что-то еще. Для этого лучше использовать типовые процедуры пересчета табличной части. Перенесем из документа в нашу форму типовой обработчик события изменения цены – «ТоварыЦенаПриИзменении».



В данном примере мы использовали метод поиска строки по реквизиту «НомерСтроки». Но может возникнуть ситуация, когда в процессе выполнения обработки пользователь случайно изменит порядок строк в документе, тем самым нарушив соответствие строк табличной части документа номеру строк таблицы формы нашей обработки. Для обеспечения гарантированного соответствия заблокируем окно документа на время проведения изменений. Для этого в форме обработки установим для свойства «РежимОткрытияОкна» значение «Блокировать окно владельца».



 


Специалист компании ООО «Кодерлайн» 

Игорь Торба.

Наши проекты

ПЭК
ПЭК

Отрасль:
Грузоперевозки

Внедренное типовое решение:
«1С: Управление торговлей»

- Создание прототипа SRM-системы на базе «1С: Управление торговлей»
- Автоматизация бизнес-процессов компании, связанных с поиском постав...

АО "Нижегородский водоканал"
АО "Нижегородский водоканал"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

-Кадровый учет
-Расчет зарплаты
-Регламентированная отчетность
-Подбор кадров
-Анализ кадрового состава
-Учет рабочего времен...

Автоматизация учета на базе ПП "1С:Комплексная автоматизация 8" в ЗАО "Крюгер-Гранд"
ЗАО «Крюгер-Гранд»

Отрасль:
Производство

Внедренное типовое решение:
1С:Комплексная автоматизация

- Создание интерфейсов и наборов прав пользователей;
- Отражению временных разниц по лизинговому имуществу...

ООО «Еврорадиаторы»
ООО «Еврорадиаторы»

Отрасль:
1С:ERP 2.4

Внедренное типовое решение:

Специалисты «Кодерлайн» помогли перенести базу из текущей системы «1С:ERP 2.2» в новую систему «1С:ERP 2.4». ...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную систему управления финансовой и закупочной деятельностью (АС ФЗД) ...

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Разработка специализированных форм внутрикорпоративной отчетност...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам
- Оформление заказов покупателей
- Управление складскими запасами ...

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение документов
• Учет рабочего времени
Закупки (снабжение) и...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

Внедренное типовое решение:
1С:Комплексная автоматизация

- Разработка подсистемы оперативного учета транзакций...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот» для сервиса «1С:Облачная карта решений»; - Возможность интеграц...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

– Управление складскими запасами;
– Оформление заказов покупателей;
– Логистика адресного склада;
– Управление отношениями с пост...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение