Top.Mail.Ru

Редактирование данных в отчете СКД

При создании отчета СКД часто возникает потребность непосредственно из формы отчета внести изменения в те данные, которые отображаются в отчете. 

Рассмотрим пример на рисунке 1. Отчет «Редактирование данных в отчете СКД» получает данные из табличной части «Товары» документа «Заказ клиента». Пользователь выделяет нужные ячейки и нажимает кнопку «Изменить данные». Далее нужно внести изменения в табличную часть «Товары» в выбранных заказах клиента по выбранным позициям номенклатуры. Как это сделать рассмотрим в этой статье.

Рисунок 1. Отчет «Редактирование данных в отчете СКД»

Исходные данные

1. Платформа 8.3.25.1374

2. Документ «ЗаказКлиента»

3. Справочник «Номенклатура»

4. Справочник «ПричиныОтменыЗаказовКлиентов»

5. Справочник «Контрагенты»

6. Отчет «РедактированиеДанныхВОтчетеСКД»

Получение данных из выделенных ячеек отчета

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

Рисунок 2. Выделение ячеек отчета пользователем

Клиентская процедура обработчик нажатия кнопки «Изменить данные» будет выглядеть следующим образом:

Рисунок 3. Клиентская процедура-обработчик нажатия кнопки «Изменить данные»

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

Рисунок 4. Массив выделенных пользователем областей отчета

Рисунок 5. Обход массива по выделенным областям и по строкам в текущей области

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

Рисунок 6. Создание макета для поля «Код номенклатуры»

Рисунок 7. Настройка расшифровки для поля «Код номенклатуры»

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

Рисунок 8. Получение расшифровки по текущей строке текущей области отчета

Далее запишем данные из выбранных пользователем строк в таблицу значений и проверим результат:

Рисунок 9. Помещение данных из выбранных строк в таблицу значений

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

Рисунок 10. Запись данных из отчета в заказы клиента и вывод сообщений пользователю

Таким образом мы достигли поставленных целей:

1) Научились получать позиции номенклатуры по выбранным ячейкам в отчете. Причем пользователь может выбрать любую ячейку в строке;

2) По каждой выбранной строке отчета научились получать всю необходимую информацию и записывать ее в таблицу значений;

3) Научились вносить изменения в заказы и выводить пользователю информацию о тех изменениях, которые были сделаны.


Разработка и новости из мира 1С

Подпишитесь на Телеграм-канал, чтобы быть в курсе

Эту статью хорошо дополняют
Доставка в 1С:ERP. Инструкция по работе с базовым функционалом
Склад в 1С: ERP — обзор возможностей (часть 3)
Реализация конфигурации с нуля. Портал для клиентов организации с синхронизацией с учетной системой
Частичная ликвидация основных средств в 1С
Модернизация основного средства в 1С
Основы бюджетирования и способы его автоматизации в 1С
Разукомплектация основного средства в 1С
Основные отличия 1С: Бухгалтерия 8 ПРОФ от КОРП
Основные отличия ПРОФ и КОРП 1С: Документооборот
Свяжитесь с нами