Универсальная функция получения дополнительных реквизитов и пример на форме

Публикация № 1232160

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

Обработка универсальная дополнительные реквизиты

Решаем следующую задачу. Например, в справочнике «Номенклатура» — 10 дополнительных реквизитов: "Материал", "Наименование на английском", "Наименование на французском" и т.д., и 20 дополнительных реквизитов в справочнике «Характеристики номенклатуры». Необходимо вывести все характеристики по ТЧ "Товары", так называемую «Спецификацию» по «Заказу клиента» или «Заказу поставщика».

Если задачу решать классически — пишем запрос, делаем левое соединение к нашим справочникам и получаем нужную нам выборку. Довольно скучная, муторная и повторяющаяся задача.

Поэтому, решим эту задачу другим путем:

  1. Разработаем универсальную функцию для получения таблицы значений для всех ссылок (строки) и со всеми реквизитами (в колонках). ПолучитьТаблицуЗначенийДополнительныхРеквизитов(МассивСсылок, МассивИменРеквизитов = Неопределено).
    Массив имен будем передавать, если нужен лишь определенный список реквизитов
  2. Готовую таблицу значений будем выводить на печать или передавать в реквизит на форме, если далее это будет нужно

Если с п2 — никакой проблемы нет, то п1 — задача вполне интересная. Делать будем так:

  • получим список дополнительных реквизитов, которые есть у переданных объектов. Так как для каждого вида метаданных (справочников, документов) есть свой набор дополнительных реквизитов, передаваемые объекты должны быть однородны (одного вида, т.е. только ссылки вида «Номенклатура» или «Контрагенты»). Для этого создадим функцию ПолучитьМассивДополнительныхРеквизитов(ПолноеИмяМетаданных)
  • Далее сформируем текст запроса, в котором в цикле будем делать левое соединение с таблицей объекта (справочника, документа и т.д.). На выходе получим искомые данные. Их и выгрузим в таблицу

 

&НаСервереБезКонтекста
Функция ПолучитьТаблицуЗначенийДополнительныхРеквизитов(МассивСсылок, МассивИменРеквизитов = Неопределено)
Если МассивСсылок.Количество() > 0 Тогда
    Ссылка = МассивСсылок[0];
    ПолноеИмяМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).ПолноеИмя();
Иначе
    Возврат Новый Массив;
КонецЕсли; 
Если МассивИменРеквизитов = Неопределено Тогда

    МассивИменРеквизитов = ПолучитьМассивДополнительныхРеквизитов(ПолноеИмяМетаданных);     

КонецЕсли; 

Запрос = Новый Запрос;
Текст = "ВЫБРАТЬ
        |   Таблица.Ссылка КАК Ссылка
        |ПОМЕСТИТЬ Таблица
        |ИЗ
        |   ИмяВидаОбъектаМетаданных.ИмяОбъектаМетаданных КАК Таблица
        |ГДЕ
        |   Таблица.Ссылка В(&МассивСсылок);
        |";

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

    Текст = СтрЗаменить(Текст, "ЗначениеСвойства", ИмяРеквизита); 
    Текст = СтрЗаменить(Текст, "НоменклатураДополнительныеРеквизиты", "ДополнительныеРеквизиты_" + ИмяРеквизита); 

    ТекстСоединение = СтрЗаменить(ТекстСоединение, "НоменклатураДополнительныеРеквизиты", "ДополнительныеРеквизиты_" + ИмяРеквизита); 
    ТекстСоединение = СтрЗаменить(ТекстСоединение, "ИмяВидаОбъектаМетаданных.ИмяОбъектаМетаданных", ПолноеИмяМетаданных); 
    ТекстСоединение = СтрЗаменить(ТекстСоединение, "&ИмяРеквизита", "&ИмяСвойства_" + ИмяРеквизита); 
    Запрос.УстановитьПараметр("ИмяСвойства_" + ИмяРеквизита, ИмяРеквизита);
КонецЦикла; 
Текст = Текст + "
                |ИЗ
                |Таблица КАК Таблица";
Запрос.Текст = Текст + ТекстСоединение;;
ТаблицаЗначенийДополнительныхРеквизитов = Запрос.Выполнить().Выгрузить();
Возврат ТаблицаЗначенийДополнительныхРеквизитов;
КонецФункции

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

МассивСсылок = Новый Массив();
МассивСсылок.Добавить(Номенклатура);
Таблица = ПолучитьТабличныйДокументЗначенийДополнительныхРеквизитов(МассивСсылок);
Таблица.Показать();

И вот результат

А вот вызов печати всех товаров из табличной части Товары выбранного документа, причем любого вида:

МассивСсылок = ПолучитьМассивСсылокПоТЧ(Документ, "Товары", "Номенклатура");
Таблица = ПолучитьТабличныйДокументЗначенийДополнительныхРеквизитов(МассивСсылок);
Таблица.Показать();

И результат

Для формирования ссылок с товарами пришлось добавить универсальную функцию ПолучитьМассивСсылокПоТЧ(Документ, ИмяТЧ, ИмяРеквизита), куда передаем ссылку на документ, имя табличной части «Товары» и имя реквизита «Номенклатура»

 

&НаСервереБезКонтекста
Функция ПолучитьМассивСсылокПоТЧ(Документ, ИмяТЧ, ИмяРеквизита)
МассивСсылок = Новый Массив();
ЕстьРеквизит = Ложь;

МетаданныеДок = Метаданные.НайтиПоТипу(ТипЗнч(Документ));
Если не МетаданныеДок = Неопределено Тогда

    ТЧТовары = МетаданныеДок.ТабличныеЧасти.Найти(ИмяТЧ);
    Если не ТЧТовары = Неопределено Тогда
        Если не ТЧТовары.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда

            ЕстьРеквизит = Истина;  

        КонецЕсли; 

    КонецЕсли; 

КонецЕсли; 

Если ЕстьРеквизит Тогда

    Для каждого Строка Из Документ[ИмяТЧ] Цикл
        Если МассивСсылок.Найти(Строка[ИмяРеквизита]) = Неопределено Тогда

            МассивСсылок.Добавить(Строка[ИмяРеквизита]);    

        КонецЕсли; 

    КонецЦикла;     

КонецЕсли; 

Возврат МассивСсылок;
КонецФункции

 

Таким образом можно выбрать любую ссылку с дополнительными реквизитами или любой документ/справочник/ПВХ со ссылками, у которых есть ТЧ с дополнительными реквизитами.

Вот собственно и все, обработка - во вложении. Кому нужен функционал - качайте. Собственно функция - копируйте, если было полезно - ставьте лайки :)

PS Протестировано на УТ11.4.10.94, 1С:Предприятие 8.3.15.1830. Но довольно универсально для всех конфигураций с БСП самых старых версий.

Скачать файлы

Наименование Файл Версия Размер
Универсальная функция получения дополнительных реквизитов и пример отображения на форме:

.epf 10,74Kb
05.05.20
1
.epf 10,74Kb 1 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Ovrfox 14 06.05.20 12:36 Сейчас в теме
В принципе идея полезная, но не понятно, зачем для каждого реквизита делать отдельное соединение
Почему просто не сформировать запрос с одним соединением?
И текста меньше и итог тот же, еще и время как минимум на парсинг сэкономится
2. Ovrfox 14 06.05.20 12:47 Сейчас в теме
(1) Я понял - много соединений, чтобы преобразовать результат сразу в шахматку.
Но если сразу преобразовывать, а не через СКД, то пустые , незаполненные ни разу свойства тоже выведуться в виде пустых столбцов
ИМХО преобразовать в шахматку после выборки будет правильнее
3. papche 382 06.05.20 15:29 Сейчас в теме
(1)Одним соединением?! Это как?
Можете пример выдать, чтобы было понятно?
4. Cmapnep 12 11.05.20 23:07 Сейчас в теме
(3) Соглашусь с коллегой - по соединению на свойство это уж слишком не оптимально
Одним соединением это как-то так:
Запрос.Текст = СтрЗаменить(Запрос.Текст,
" &ТекстПолученияЗначенияСвойства КАК ТекстПолученияЗначенияСвойства,",
" МАКСИМУМ(ВЫБОР КОГДА ХДР.Свойство = &Свойство_" + ВыборкаСвойств.Имя + " ТОГДА ХДР.Значение ИНАЧЕ " + ПустоеЗначениеСвойства + " КОНЕЦ) КАК Значение_" + ВыборкаСвойств.Имя +
"," + Символы.ВК +
" &ТекстПолученияЗначенияСвойства КАК ТекстПолученияЗначенияСвойства,");

ХДР это ХарактеристикиНоменклатуры.ДополнительныеРеквизиты
ПустоеЗначениеСвойства нужно прежде всего для корректного заполнения типа БУЛЕВО в случае отсутствия значения в ТЧ
5. papche 382 14.05.20 11:09 Сейчас в теме
(4)
ТекстПолученияЗначенияСвойства

Я не понимаю данного примера. Можете готовый запрос привести? Можно не универсальный, например на 2-х доп реквизитах? И пример выборки на 2-х элементах?
У меня что-то предполагаемый результат совсем не вяжется с поставленной задачей...
6. Cmapnep 12 15.05.20 00:23 Сейчас в теме
(5) Ну смотрите, результирующий запрос может быть таким:
ВЫБРАТЬ
ХДР.Ссылка КАК Характеристика,
МАКСИМУМ(ВЫБОР КОГДА ХДР.Свойство.Имя = &ИмяСвойства1 ТОГДА ХДР.Значение ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ) КАК ЗначениеСвойства1,
МАКСИМУМ(ВЫБОР КОГДА ХДР.Свойство.Имя = &ИмяСвойства2 ТОГДА ХДР.Значение ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ) КАК ЗначениеСвойства2
ИЗ
Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХДР
ГДЕ
ХДР.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
ХДР.Ссылка

Чтобы получить значения всех свойств по их именам можно использовать такой запрос:
ВЫБРАТЬ
&ТекстПолученияЗначенияСвойства КАК ТекстПолученияЗначенияСвойства,
ХДР.Ссылка КАК Характеристика
ИЗ
Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХДР
ГДЕ
ХДР.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
ХДР.Ссылка

дополнив его в цикле из готового массива имен свойств, например:
Для каждого ИмяСвойства Из МассивИменСвойств Цикл
Запрос.Текст = СтрЗаменить(Запрос.Текст,
" &ТекстПолученияЗначенияСвойства КАК ТекстПолученияЗначенияСвойства,",
" МАКСИМУМ(ВЫБОР КОГДА ХДР.Свойство.Имя = " + ИмяСвойства + " ТОГДА ХДР.Значение ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ) КАК Значение_" + ИмяСвойства +
"," + Символы.ВК +
" &ТекстПолученияЗначенияСвойства КАК ТекстПолученияЗначенияСвойства,");
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст, " &ТекстПолученияЗначенияСвойства КАК ТекстПолученияЗначенияСвойства,", "");

Надеюсь в этот раз понятно расписал
7. papche 382 15.05.20 11:20 Сейчас в теме
(6) Согласен, вполне рабочий вариант. И да, работать будет быстрее
Оставьте свое сообщение

См. также

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо

Универсальные функции Инструментарий разработчика Учет ТМЦ Учет ТМЦ v8 1cv8.cf Россия БУ Абонемент ($m)

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

1 стартмани

17.08.2015    44950    155    ekaruk    31    

Универсальное хранилище настроек

Универсальные функции v8 Абонемент ($m)

Универсальная константа для хранения любых настроек, например интеграции с API. Легко вносить новые настройки без "ломания" выполнения кода в модулях.

1 стартмани

10.03.2020    4478    1    v.krivenko    17    

Шаблоны внешних обработок (БСП, управляемые формы)

Обработки Печать Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Набор из шаблонов для создания внешних обработок вида: Внешняя печатная форма, Отчет на СКД, Схема СКД для сегмента, Внешняя обработка (Самостоятельная, Заполнение объектов, Создание связанных объектов). Предварительно наполнены базовым функционалом и некоторыми механизмами для отладки.

1 стартмани

01.03.2020    2153    19    riposte    2    

Выгрузка любого запроса или таблицы значений в текст JSON

Обработка справочников WEB Универсальные функции Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Отчет позволяет выгрузить любые данные из 1С в JSON текст, выполнив произвольный запрос к данным.

1 стартмани

07.02.2020    6220    21    user796054    18    

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом Промо

Печатные формы документов Универсальные функции Email v8 КА1 БП2.0 УТ10 УПП1 Абонемент ($m)

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    21430    13    stvorl    0    

Универсальные функции: разложение произвольной строки адреса в структуру

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

Процедуры и функции раскладывают произвольную строку адрес в структуру по ключевым словам.

1 стартмани

30.12.2019    2937    5    vik070777    10    

Подпись PDF в новой версии 8.3.16

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

Проверяем новую возможность платформы 1С:Предприятие 8 по формированию подписей в PDF.

1 стартмани

23.12.2019    3812    5    kolya_tlt    6    

Простой способ загрузить файл Excel на тонком клиенте.

Загрузка и выгрузка в Excel Универсальные функции v8 1cv8.cf Абонемент ($m)

Самый простой способ загрузить файл Excel на тонком клиенте - это скопировать лист Excel в "табличный документ" на форме обработки и обрабатывать уже поля "табличного документа".

1 стартмани

30.10.2019    6733    2    John_d    16    

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

Печатные формы документов Практика программирования Универсальные функции v8 1cv8.cf Абонемент ($m)

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    36762    28    agent00mouse    0    

Версионирование объеков УТ 10 с возможностью перехода к сохраненной версии

Журнал регистрации Универсальные функции v8 УТ10 Абонемент ($m)

Версионирование объектов УТ 10.3 с возможностью перехода к сохраненной версии. Взята стандартная система версионирования УПП, добавлена возможность восстановления ранее сохраненной версии.

1 стартмани

28.10.2019    5918    23    art.prm    8    

Картинка вместо кнопки без html

Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

Вариант замены стандартных кнопок на форме для тех, кого не устраивают кнопки 1С и нет особых возможностей делать все с использованием html. Тестировал работу на платформах 8.3.10, 8.3.13, 8.3.14

1 стартмани

23.10.2019    4382    3    zatoichi    3    

Выгрузка данных из дерева значений 1С в формат JSON иерархический список (Сериализация ДереваЗначений в JSON)

Обмен через XML Универсальные функции v8 1cv8.cf Россия Абонемент ($m)

Тема: Иерархические списки при обмене данными. В интернете не удалось найти подобного решения. Обнаружена реализация только обратной операции JSON в дерево значений 1С или рассматриваются линейные списки (таблицы).

1 стартмани

22.10.2019    4465    4    mwoleg    6    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    47456    15    DarkAn    86    

Универсальная подсистема ДМ

Универсальные функции v8 1cv8.cf Россия Абонемент ($m)

ДМ — дополнительные модули Это не альтернатива или дополнение БСП. Данная подсистема призвана быстро получить множество нужных функций в любой конфигурации. Для использования подсистемы изменения в конфигурацию вносить не надо. К сожалению поддержка обычных форм прекращена и поэтому данная разработка предназначена только для УФ. Разработка ведётся с 2009 года, но именно этот релиз был подготовлен на платформе 8.3.15.1565

1 стартмани

22.10.2019    3545    4    strange2007    10    

Вывод QR-кода типовыми средствами.

Универсальные печатные формы Сканер штрих-кода Универсальные функции v8 КА1 УТ10 УПП1 Абонемент ($m)

Вывод QR-кода типовыми средствами. На данный момент очень часто нужно вывести в печатную форму QR-код. Показываю как на примере типового кода из УТ11 это сделать. Можно использовать в любых конфигурациях с обычными формами.

1 стартмани

21.10.2019    12661    24    Емельянов Алексей    45    

Генерация QR кода для любых конфигураций 1С (обычные и управляемые формы)

Универсальные обработки Универсальные функции v8 v8::УФ 1cv8.cf Абонемент ($m)

Для генерации используется компонента типовой конфигурации УТ11, встроенная в общий макет "КомпонентаПечатиQRКода". Ниже приведены процедуры, чтобы сделать обработку самостоятельно (только для УФ).

1 стартмани

11.10.2019    7093    36    dm1try    0    

Лучшие методы сравнения таблиц значений Промо

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

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

1 стартмани

02.02.2015    103136    37    ildarovich    59    

Полезные процедуры и функции для программиста

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

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

1 стартмани

07.10.2019    26816    14    HostHost    40    

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

Универсальные функции Чистка базы v8 1cv8.cf Абонемент ($m)

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

1 стартмани

27.09.2019    7280    9    John_d    15    

1С REST API клиент. Обмен из 1С с сайтом/магазином WordPress/WooCommerce с помощью REST API

Универсальные обработки WEB Универсальные функции Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 1cv8.cf УУ Абонемент ($m)

Обмен 1С с сайтом на WordPress и магазином Woocommerce. Внешняя обработка сделана как REST API клиент сайта WordPress, позволяет разработчику публиковать/изменять/удалять/просматривать посты/страницы/товары/фотографии (в связке с товаром/страницей) на сайте/магазине WordPress/Woocommerce. Обработки сделаны с использованием обычных форм, демо-формы использования в комплекте.

10 стартмани

29.07.2019    6243    11    osivv    14    

Генерация QR-кода программная и интерактивная (код открыт, управляемая форма, обычное и управляемое приложение, API) Промо

Универсальные функции Универсальные обработки v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработку можно быстро и легко интегрировать в любую конфигурацию с и без БСП (Библиотека Стандартных Подсистем).

3 стартмани

04.02.2016    45152    169    TuneSoft    26    

Экспортные процедуры и функции общих модулей БП 3.0, ЗУП 3.1, УТ 11

Универсальные функции v8 1cv8.cf Россия Абонемент ($m)

Таблицы экспортных процедур и функций общих модулей конфигураций БП КОРП 3.0, ЗУП КОРП 3.1, УТ 11 + обработка по формированию такой таблицы из любой конфигурации.

14.06.2019    8252    20    SanchoD    29    

Работа с графической схемой в объектной модели DOM

Универсальные функции v8 v8::УФ Абонемент ($m)

Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

1 стартмани

04.06.2019    7603    5    botokash    19    

Программное формирование картинки в 1С:Предприятие 8.3.9 (ПотокВПамяти / ЗаписьДанных)

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

В статье представлен код программного формирования картинки (двоичные данные) без всяких внешних компонент, без формирования строки Base64, используя лишь встроенные механизмы 1С предприятие 8.3.9 (объекты ПотокВПамяти и ЗаписьДанных). Сам по себе код формирования картинки не несёт ничего нового. Всё описано в википедии. Захотелось попробовать новые методы, но никак не доходитили руки. В приложении обработка практически с этим же кодом.

1 стартмани

16.05.2019    8528    5    yku    7    

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 Промо

Универсальные функции Практика программирования v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    26461    3    Serginio    1    

Альтернатива внешним печатным формам. ЗУП 3.1

Печатные формы документов Универсальные функции Зарплата Практика программирования Зарплата Разработка v8 v8::СПР ЗУП3.x Абонемент ($m)

Как в ЗУП 3.1.8 отказаться от внешних печатных форм и расширением увеличить количество полей, доступных при редактировании макетов, для изменения печатных форм Т1, Т5, Т8 и аналогичные пользователями.

1 стартмани

30.01.2019    13618    17    Mogilnikova    3    

Создание и запуск скрипта для ввода текста на базе AutoHotkey

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

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

1 стартмани

28.01.2019    4999    1    Wezoowy    1    

Использование подсистемы БСП "Заполнение объектов"

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    23856    12    ids79    23    

Автоматическая подстановка уничтожений временных таблиц в текст запроса Промо

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

Функция, которая сама подставляет в текст запроса "УНИЧТОЖИТЬ" в местах последнего использования ВТ.

1 стартмани

14.11.2015    19056    0    SeiOkami    3    

Пропорциональное распределение в запросе

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

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

1 стартмани

28.06.2018    11394    1    invertex    7    

Подписка на события, преобразование объекта в JSONAPI, отправка в RabbitMQ

Внешние источники данных Универсальные функции v8 1cv8.cf Абонемент ($m)

Обработка содержит функции: - сериализация объекта 1с в JSONAPI - отправка в RabbitMQ по HTTP

1 стартмани

26.02.2018    10404    20    yaxinr    3    

Проверка таблицы на дублирование строк (ТаблицаЗначений, ТабличнаяЧасть) и получение массива таких строк

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

Функция для проверки дублирования строк в ТаблицеЗначений или ТабличнойЧасти. Также, если необходимо, возвращает массив задублированных строк (можно обработать).

1 стартмани

05.02.2018    10877    6    uri1978    27    

Библиотека математических функций 1.1 Промо

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

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

1 стартмани

18.12.2014    24622    11    alex271    67    

Свертка таблицы значений. С блэкджеком и всем остальным

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

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

1 стартмани

22.01.2018    10153    2    dusha0020    10    

Определение MIME-типа файла

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

Небольшая, но полезная функция для определения MIME-типа файла по его расширению. Сэкономит время разработчикам.

1 стартмани

12.01.2018    10025    6    o.nikolaev    4    

Запуск приложений на клиенте из RDP-сессии

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

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

1 стартмани

30.10.2017    11079    6    GusevNA    4    

Полезные функции БСП Промо

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

Список часто востребованных, по моему мнению, функций из состава Библиотеки стандартных подсистем 2.2.

1 стартмани

01.02.2015    59806    25    spec8s    31    

Простые подсистемы: Библиотека подсистем

Инструментарий разработчика Универсальные обработки Универсальные функции v8 Абонемент ($m)

Библиотека простых подсистем и наработок, облегчающих жизнь разработчика и внедренца, предоставляя относительно готовые решения. Логическое развитие линейки публикаций "Простые подсистемы". Базируются на БСП. Вошли часть ранее опубликованных подсистем и новые. Всего 5 штук (будет больше).

1 стартмани

26.10.2017    10603    9    pbabincev    1    

Размеры управляемой формы

Практика программирования Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

08.10.2017    25547    71    json    9    

Шаблон внешней обработки регламентного задания с формой настройки параметров выполнения

Инструментарий разработчика Универсальные функции v8 v8::УФ 1cv8.cf Абонемент ($m)

Шаблон внешней обработки призван упростить программисту процесс реализации внешнего регламентного задания. Пригоден к использованию во всех конфигурациях на управляемых формах, в которых присутствует подсистема "Дополнительные отчеты и обработки" из состава библиотеки стандартных подсистем (БСП) версии 2.1 и выше.

1 стартмани

28.05.2017    23706    169    Bassgood    10    

Регулярные выражения без COM объектов и внешних компонент Промо

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

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

1 стартмани

09.02.2015    23366    8    boogie    38    

Универсальная процедура по загрузке файла из интернета

Практика программирования WEB Универсальные функции v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

17.05.2017    15275    12    json    2    

Правильный вопрос

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

Заметили, что пользователи бездумно кликают по первой попавшейся кнопке, не удосужившись прочитать текст предупреждения или вопроса? Данная функция призвана решить данную проблему!

1 стартмани

15.05.2017    10981    0    SvoyakMartin    15    

Web сервис 1С

Практика программирования Универсальные функции WEB v8 1cv8.cf Россия Абонемент ($m)

Пример реализации простого web сервиса. Особенность: не используются XDTO пакеты, определяемые в дереве конфигураций; возможность передачи любых структур данных: списки значений, таблицы значений, табличные документы и т.п.

1 стартмани

21.03.2017    29163    86    hiduk    34    

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

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

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    101041    97    daMaster    90    

Набор математических функций

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

Небольшой набор математических функций для работы с массивами чисел.

1 стартмани

12.01.2017    13441    4    SvoyakMartin    17    

Сравнение строк. Наибольшая общая последовательность

Универсальные функции v8 1cv8.cf Россия Абонемент ($m)

Заданы две строки Строка1 и Строка2. Требуется найти наибольшую общую подпоследовательность (НОП) этих строк.

1 стартмани

14.11.2016    9301    2    Alex_YAM    4    

Набор процедур для парсера консоли запросов

Инструментарий разработчика Универсальные функции v8 1cv8.cf Абонемент ($m)

Данный набор функций и процедур необходимо вставить в Консоль запросов для управляемого приложения 1С 8.2 - 8.3 (Такси) http://infostart.ru/public/64522/, и вы получите возможность разбирать сложные запросы на вложенные, вносить необходимые правки и собирать измененные подзапросы в запрос. Данный модуль не содержит консоли!!! Ее придется отдельно скачать по ссылке http://infostart.ru/public/64522/

1 стартмани

09.11.2016    9406    4    blockcode    5    

Универсальная функция получения таблицы дат за период. С любым интервалом (день, неделя, месяц, квартал и т.д.) Промо

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

Небольшая функция, возвращающая таблицу значений со всеми датами за период. Интервал дат можно задать любой: Секунда, Минута, Час, День, Неделя, Месяц, Квартал, Полугодие, Год.

1 стартмани

14.06.2014    37034    16    mtv:)    6    

Организация выбора месяца из списка (универсально + НЕ модально )

Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

Пришлось столкнуться с такой проблемой, как выбор месяца из ниспадающего списка (с элементами вида "НазваниеМесяца Год") с возможностью изменения года. Хочу предложить универсальный вариант реализации данного механизма на основе механизма http://infostart.ru/public/167549/ ЗЫ: основные отличия: - вместо "НачалоВыбораИзСписка" работаем с "ОбработкаВыбора" без модальности - Обратное преобразование в дату не только на русском - Универсальность процедур. Одна функция выбирается в нескольких полях.

1 стартмани

09.11.2016    13249    13    igorkosmos    5