Программист 1с
twitter email rss
  • Home
  • Полезности
    • Мобильное приложение курьера
    • MailChimp + УТ 11.
    • 1с-sms
    • Pharma-MPD
    • Зуботехническая лаборатория
  • Блог
  • Партнеры
  • Команда
    • Услуги
    • Опыт
    • Отзывы
    • Контакты
  • Поддержка
    • Инструкция
    • Redmine






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

Для упрощения демонстрации кросс-таблица в примере строится на основании данных справочника Номенклатура и Пользователи. При формировании таблицы строятся строки таблицы по номенклатуре и колонки по пользователям.

В таблице есть колонки:

  • Регион. Случайное число, которое надо распределить между всеми пользователями
  • Разница. Вычисляемая колонка, по которой можно контролировать правильность распределения. Вычисляется как разница между значением Регион и всеми значениями пользователей по строке.

Интересные куски кода:

#НаСервере
Процедура СформироватьКолонки()
   ОчиститьРеквизиты();

   МассивДобавляемыхРеквизитов = Новый Массив;
   МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("План", Новый ОписаниеТипов("ТаблицаЗначений")));
   ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
   Запрос = Новый Запрос;
   Запрос.текст = "ВЫБРАТЬ
   |    Пользователи.Ссылка
   |ИЗ
   |    Справочник.Пользователи КАК Пользователи
   |ГДЕ
   |    Пользователи.ПометкаУдаления = ЛОЖЬ";
   Выборка = Запрос.Выполнить().Выбрать();
   КоличествоСотрудниковВТаблице = 0;
   МассивДобавляемыхРеквизитов.Очистить();
   МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"),"План" ,"Номенклатура"));
   МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Регион", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,2)),"План" , "Регион"));
   МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Разница", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,2)),"План" , "Осталось распределить"));
   ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
   МассивДобавляемыхРеквизитов.Очистить();
   СписокСоответствийСотрудниковНомерам.Очистить();

   Пока Выборка.Следующий() Цикл
      КоличествоСотрудниковВТаблице = КоличествоСотрудниковВТаблице + 1;
      СписокСоответствийСотрудниковНомерам.Добавить(Выборка.Ссылка);
      МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Сотрудник" + Строка(КоличествоСотрудниковВТаблице), Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,2)),"План", Строка(Выборка.Ссылка.Наименование)));
   КонецЦикла;
   ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
   ТаблицаФормы = Элементы.Добавить("План", Тип("ТаблицаФормы"));
   ТаблицаФормы.ПутьКДанным = "План";
   ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
   ТаблицаФормы.ФиксацияСлева = 3;
   ТаблицаФормы.УстановитьДействие("ПередУдалением", "ПланПередУдалением");
   ТаблицаФормы.УстановитьДействие("ПередНачаломДобавления", "ПланПередНачаломДобавления");
   ДобавитьКолонку("План", "Номенклатура", "Номенклатура");
   ДобавитьКолонку("План", "Регион", "Регион");
   ДобавитьКолонку("План", "Разница", "Разница");
   Для Каждого ТекЭлемент Из МассивДобавляемыхРеквизитов Цикл
      ДобавитьКолонку("План", ТекЭлемент.Имя, ТекЭлемент.Заголовок);
   КонецЦикла;

КонецПроцедуры

Скачать конфигурацию с примером

  DemoCrossTable.dt (28,2 KiB, 1 001 скачиваний)

Рад буду, если для кого-то эта информация окажется полезной.

Похожие записи:

  1. Программное создание таблицы значений с условным оформлением в 8.2
  2. 1C 8.2 и Google Maps
  3. Система оповещения пользователей
  4. Нечеткий поиск спешит на помощь. Работаем в web-клиенте.
  5. Штрихкодирование документов
← Импорт документа Excel через web-клиент 1с 8.2
1C 8.2 и Google Maps →

Новости

  • Работаем с Opendatabot из 1с
  • Сокращаем ссылки в 1с
  • Загрузка данных из Google spreadsheet в 1с
  • Формирование скриншотов сайтов в 1с
  • Удаление старой номенклатуры

Подписка

Copyright © 2021 danila.org.ua
Умные решения для вашего бизнеса