Функции для обработки произвольной таблицы значений

17.03.23

Разработка - Универсальные функции

Просто несколько функций для работы с произвольной таблицей значений: Левое соединение, Внутреннее соединение, Свертка таблицы. Платформа 8.3.20.1674.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Функции для обработки произвольной таблицы значений:
.epf 8,69Kb
18
18 Скачать (1 SM) Купить за 1 850 руб.

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

Пример:

имеем 3 исходных таблицы:

первая функция "Левое соединение"

параметры:

  1. Таблица1,
  2. Таблица2
  3. строка вида "Поле11 = Поле21, Поле12 = Поле22"

(поля Поле11,Поле12 принадлежат первой таблице, Поле21,Поле22 второй, объединять можно только по равенству полей)

таблицаЛевоеСоединение = ЛевоеСоединение(таблицаТест1, таблицаТест2, "Сотрудник = Сотрудник");  

Результат ниже:

таблицаВнутреннееСоединение  = ВнутреннееСоединение(таблицаТест1, таблицаТест2, "Сотрудник = Сотрудник");

таблицаВнутреннееСоединение1 = ВнутреннееСоединение(таблицаТест1,
                                                                                                      таблицаТест3,
                                                                                                     "Сотрудник = Сотрудник, ВидРасчета = Начисление");

 

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

следующая написанная функция "СвернутьТаблицуЗначений"

параметры:

  1. таблица значений,
  2. поля для группировки в виде строки, перечислены через запятую
  3. структура, где ключи имена полей, а значения агрегатные функции СКД

 

Пример:

Выберем максимальный период для каждого сотрудника:

таблицаСвернутая  = СвернутьТаблицуЗначений(таблицаТест1,
                                                                                    "Сотрудник",
                                                                                    Новый Структура("МаксПериод", "МАКСИМУМ(ПериодРегистрации)"));

 

Для каждого сотрудника получим табличку значений, где поля будут ВидРасчета и Сумма:

таблицаСвернутая1 = СвернутьТаблицуЗначений(
                                       таблицаТест1,
                                       "Сотрудник",
                                       Новый Структура("ТаблицаРасчетов",  "ТаблицаЗначений(ВидРасчета КАК Начисление, Результат КАК Сумма)"));

 

Для каждого сотрудника получим массив уникальных значений видов расчетов:

таблицаСвернутая2 = СвернутьТаблицуЗначений(
                                         таблицаТест1,
                                         "Сотрудник",
                                         Новый Структура("ВидыРасчетов", "Массив(Различные ВидРасчета)"));

Для каждого сотрудника на каждый период получим список строк вида - "Вид расчета, Результат":

таблицаСвертка3 = СвернутьТаблицуЗначений(
                                   таблицаТест1,
                                  "ПериодРегистрации, Сотрудник",
                                  Новый Структура("Начисления", "СоединитьСтроки(ТаблицаЗначений(ВидРасчета, Результат), "";"", "","")"));

Для каждого сотрудника получим сумму начислений и список строк уникальных видов расчетов:

таблицаСвертка4 = СвернутьТаблицуЗначений(
                                    таблицаТест1,
                                    "Сотрудник",
                                    Новый Структура(
                                          "Начислено, ВидыРасчетов",
                                          "Сумма(Результат)", "СоединитьСтроки(Массив(Различные ВидРасчета), "";"")")
                                    );

Функции написаны на основе механизма компоновки данных, СКД формируется программно, за основу взяты статьи

"Программное создание схемы компоновки данных"
//infostart.ru/1c/articles/1179039/

"Агрегатные функции СКД, о которых мало кто знает"
//infostart.ru/1c/articles/1116759/

См. также

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

21.05.2024    20245    dimanich70    81    

145

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4100    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    18209    atdonya    24    

57

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    5511    ke.92@mail.ru    16    

65

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    14778    YA_418728146    7    

166

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3594    57    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    18500    171    sapervodichka    112    

135
Оставьте свое сообщение