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

Содержание:

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

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

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

 

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




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


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


 

 


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


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




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


 


  

 

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


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


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

    

 




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


 



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


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


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


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



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



 


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

Игорь Торба.

Наши проекты

Внедрение 1С:Управление торговлей в оптово-розничной компании «Ална-Байк»
ИП Титов Виктор Сергеевич «Ална-Байк»

Отрасль:
Торговля

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

- Управление складами;
- Управление заказами поставщиков;
- Управление зак...

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

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

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

Реализовали разработку уникального модуля «Интернет-магазины» на базе прог...

ПЭК
ПЭК

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

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

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

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

Внедренное типовое решение:
1C:Управление производственным предприятием

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

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

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетна...

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

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

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

Бухгалтерский учет:
- Завершение периода;
- Регламентированная отчетнос...

Автоматизация системы учета продаж газа на базе «1С:ERP Управление предприятием 2.0»
ООО «Эйр Продактс Газ»

Отрасль:
Производство промышленных газов

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

- Расчеты с контрагентами;
- Производственные операции;
- Управление скла...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:ТОИР Управление ремонтами и обслуживанием оборудования

Мониторинг и анализ ключевых показателей деятельности предприятия Управле...

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

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

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и И...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

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

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

Объемно-календарное планирование производства Автоматизация бизнес-проце...

СТС-Медиа
СТС-Медиа

Отрасль:
Медиаиндустрия

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

- Бухгалтерский учет;
- Налоговый учет;
- МСФО (GAAP/управленческий учет);
- ...

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

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

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

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

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

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

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

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