Универсальная функция - Сформировать результат СКД

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

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

Система компоновки данных

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

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

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

Предлагаемая функция, назовём её СформироватьРезультатСКД, одинаково работает как в обычном, так и в управляемом приложениях.

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

 

Описание универсальной функции.

СформироватьРезультатСКД(), версия 2.8.05

Синтаксис:

СформироватьРезультатСКД(<СтруктураПараметрыЗапускаСКД>)

Параметры:

<СтруктураПараметрыЗапускаСКД> (обязательный)

Тип: Структура.

Задает настройки и параметры запуска системы компоновки данных: ключ структуры определяет имя параметраЗапускаСКД, а значение структуры - значение параметраЗапускаСКД. Порядок объявления ключей в структуре несущественен. 

Ключи и значения структуры (СтруктураПараметрыЗапускаСКД).

ключ1 = "АдресРезультатаСКД", тип:строка. (Необязательный).

Значение1, тип:Строка.

Адрес временного хранилища, в которое будет помещен результат работы системы компоновки данных.

Наличие или отсутствие ключа1 определяет тип возвращаемого значения. Если ключ1 отсутствует, то будет возвращён сам РезультатСКД.

 

ключ2 = "АдресМакетаСКД", тип:строка. (обязательный) 

Значение2, тип: Строка.

Адрес временного хранилища, в которое помещен макет схемы компоновки данных (Тип:СхемаКомпоновкиДанных). 

 

ключ3 = "НастройкиСКД", тип:Строка. (необязательный).

Значение3= тип:Строка, НастройкиКомпоновкиДанных.

а) Если значение3 равно Имени вариантаСКД (строка), указанному на странице настроек схемыСКД, тогда РезультатСКД будет получен с настройками по умолчанию указанного вариантаСКД.

б) Если значение3 равно текущим настройкам (КомпоновщикНастроек.Настройки), то с этими настройками будет получен РезультатСКД.   

с) Если значение3 не указано, то РезультатСКД будет получен с настройками по умолчанию основного вариантаСКД.     

 

ключ4 = "ПараметрыСКД", тип:Строка

Значение4, тип:Структура. Структура4 содержит параметры схемы компоновки данных, указанные на странице параметров.

Структура4.Ключ = Имя параметра, как оно задано в схеме компоновки данных.

Структура4.Значение = Значение параметра.

 

ключ5 = "СтрокаСоединения", тип:Строка. (необязательный).

Значение5, тип:Строка. Строка соединения с внешней базой.   Если СтрокаСоединения не указана, то источником данных считается текущая база.

 

Ключ6 = "РезультатСКДТип", тип:Строка. (необязательный).

Значение6 = Тип:Строка,ТабличныйДокумент, ТаблицаЗначений,  ДеревоЗначений, ДанныеФормыКоллекция, ДанныеФормыДерево. 

Задает тип результатаСКД. 

Обрабатываются следующие значения строки: «ТабличныйДокумент», «ТабДок», «ТаблицаЗначений», «ТЗ» и «ДеревоЗначений», «ДЗ». Другие значения строки будут интерпретироваться как «ТабличныйДокумент».

Если ключ6 не указан, то будет возвращён результатСКД типа ТабличныйДокумент.

 

Ключ7 = «ВнешниеНаборыДанныхСКД».  Тип:Строка. (необязательный)

Значение7 = Тип:строка, структура.

а) Строка соединения с Внешней информационной базой 1С:Предприятие обеспечивает Com соединение с внешней базой.

б) Структура обеспечивает Web соединение с внешней базой.

Значение7структура.Ключ1=URLОписанияWebСервиса Значение7структура.Значение1=URLОписанияWebСервиса 

 

Ключ8 = «ПроверитьНаличие».  Тип:Строка (необязательный)

Значени8, тип Булево.

Используется для определения варианта местоположения ОбщегоМодуляСКД.

Допустимы два варианта:

А) Конфигурация.ОбщиеМодули.ОбщегоНазначенияСКД. (рекомендуется)

Б) ВнешнийОтчет.ОбщийМодуль.ОбщегоНазначенияСКД

 

Ключ9 = «ПроверятьДоступностьПолей».  Тип:Строка (необязательный)

Значение9, тип Булево. 

Определяет, выполнять ли проверку прав на просмотр полей и проверку доступности поля во включенных функциональных возможностях.
Значение по умолчанию:
Истина
.

 

Ключ10 = «ПараметрыФункциональныхОпций».  Тип:Строка (необязательный)

Значение10, тип Структура.

Содержит параметры функциональных опций, используемые при исполнении отчета.

 

Ключ11= «ВозможностьПрерыванияПользователем». Тип:Строка (необязательный).

Значени11, тип Булево.

Указывает, может ли пользователь прервать вывод при помощи комбинации клавиш Ctrl + Break.
Значение по умолчанию:
Истина
.

 

Ключ12= «ОбщиеФормулы». Тип:Строка (необязательный).

Значени12, тип Булево.

Указывает, может ли пользователь вызывать функции из общего модуля.
Значение по умолчанию:
Истина
.

 

 

Возвращаемое значение:

Тип: Строка, Структура, ТабличныйДокумент, ТаблицаЗначений, ДеревоЗначений.

А) Если тип - строка, то возвращен адрес временного хранилища, в котором размещен результат СКД.

Возвращаемое значение помещается во временное хранилище по адресу "АдресРезультатаСКД".

Б) Если тип – структура, то используются два ключа:

 Ключ1= «РезультатСКД»,

Ключ2= «ДанныеРасшифровки»

Вариант 1 возвращаемого значения типа Структура.

значение1 =  Тип:ТабличныйДокумент

значение2 = Тип:ДанныеРасшифровкиКомпоновкиДанных

 

Вариант 2 для тонкого клиента возвращаемого значения типа Структура,

Значение1 = Тип:ТабличныйДокумент

Значение2 = Неопределено

 

Вариант 3 возвращаемого значения – тип:Структура.

Значение1 = Тип:ТаблицаЗначений

Значение2 = Неопределено

 

Вариант 4 возвращаемого значения – тип:Структура.

Значение1 = Тип:ДеревоЗначений

Значение2 = Неопределено

 

Вариант 5 возвращаемого значения - тип:ТабличныйДокумент

 

Вариант 6 возвращаемого значения -тип:ТаблицаЗначений

 

Вариант 7 возвращаемого значения -тип:ДеревоЗначений

 

 

Описание:

Возвращает структуру, содержащую результат работы Системы компоновки данных (РезультатСКД) и ДанныеРасшифровки. Тип РезультатаСКД может быть ТабличныйДокумент,  ТаблицаЗначений или ДеревоЗначений.

Примечание. Возвращаемое значение может быть помещено во временное хранилище по адресу "АдресРезультатаСКД".

Доступность:

Сервер, Толстый клиент, тонкий клиент

Примечание:

  1.        Функция может быть размещена либо в общем модуле конфигурации (рекомендуется), либо в расширении конфигурации, либо в модуле внешнего отчета.
  2.       Для упрощения изучения функции, к данной разработке приложена блок-схема действий программиста, принявшего решение использовать функцию. Блок-схема вызывается кнопкой.
  3.         Функция состоит из трех модулей «ОбщегоНазначенияСКД» ,  «ФункцииДляОтчетовСерверСКД» и «ФункцииДляОтчетовСКД».
  4.        Для обеспечения чтения внешней базы, во внешней базе следует разместить процедуры «ФункцииДляОтчетовСерверСКД» и «ФункцииДляОтчетовСКД».

Использованный здесь алгоритм чтения внешней базы через Com соединение опубликован в книге «Разработка сложных отчетов в 1С:Предприятии 8»  автора Е.Ю.Хрусталева.  

  1.         В управляемом приложение данную функцию следует использовать в паре с другой универсальной функцией «СоздатьКолонкиНаУправляемойФорме» //infostart.ru/public/547849/

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

 

 

Озвучка демонстрационного примера.

(При разночтении озвученного текста и написанного, правильным следует считать текст написанный).

Начинается демонстрация использования универсальной функции СформироватьРезультатСКД.

Демонстрация функции будет выполнена для:

  1.        обычного приложения,
  2.       тонкого клиента управляемого приложения
  3.        для Com соединения с внешней базой

Чтобы доставить себе удовольствие от работы с этой функцией, рекомендую разместить её в трёх общих модулях конфигурации. Например, «ОбщегоНазначенияСКД» ,  «ФункцииДляОтчетовСерверСКД» и «ФункцииДляОтчетовСКД».

Также, эти модули можно разместить в расширении конфигурации.

Оба варианты представлены в программном коде.

Для обеспечения чтения внешней базы, во внешней базе следует разместить процедуры «ФункцииДляОтчетовСерверСКД» и «ФункцииДляОтчетовСКД».

 

40 сек.

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

 

 Запускаем 1С:Предприятие в двух режимах.

А) Обычное приложение

Б) Тонкий клиент управляемого приложения

 

И демонстрируем использование функции в каждом режиме.

 

А) Демонстрируем Обычный режим.

Один раз проследим работу функции в конфигураторе.

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

Видим, что в тексте шаблонов присутствуют все параметры настроек.

Наличие закомментированных настроек снизит трудозатраты программиста на их активацию.

В этом примере ввод настроек немного автоматизирован на мышку.    

 

1мин.40сек

Подключим внешнюю базу данных и продолжим демонстрацию.

Формирование строки Com соединения выполним на странице «Настройка внешней базы».

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

Использованный здесь алгоритм чтения внешней базы через Com соединение опубликован в книге «Разработка сложных отчетов в 1С:Предприятии 8»  автора Е.Ю.Хрусталевой.  

 

2мин.40сек

Б) В тонком клиенте повторим все варианты вызова универсальной функции.

Примечание. В управляемом приложение данную функцию следует использовать в паре с другой универсальной функцией «СоздатьКолонкиНаУправляемойФорме» //infostart.ru/public/547849/

На управляемой форме повторим те же варианты настроек, но без конфигуратора.

Поочередно получим табличный документ, дерево значений и таблицу значений.

3 мин. 30 сек.

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

 

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

Желаю удачи всем и каждому.

Функция СформироватьРезультатСКД( цСтруктураЗапускаСКД)  Экспорт

         Перем цАдресРезультатаСКД,цАдресМакетаСКД, цАдресДанныхРасшифровкиСКД;

         Перем цПараметрыСКД, цВариантСКД, цРезультатСКДТип, цНастройки, цОбщиеФормулы;

         Перем цСтрокаСоединения , цВнешниеНаборыДанныхСКД, цВариантБазыВнешнегоСоединения;//, ФлагЭтоТонкийКлиент;

         Перем цПроверитьНаличиеЭтойФункции, цДанныеРасшифровки;

         Перем цПроверятьДоступностьПолей, цПараметрыФункциональныхОпций, цВозможностьПрерыванияПользователем;

        

        

         ФлагПроверитьНаличиеЭтойФункции = цСтруктураЗапускаСКД.Свойство("ПроверитьНаличие",цПроверитьНаличиеЭтойФункции);

         Если ФлагПроверитьНаличиеЭтойФункции Тогда

                 Возврат  Истина;//Есть эта универсальная функция в глобальном модуле

         КонецЕсли;      

        

         цУпрОбыч =ТекущийРежимЗапуска();

        

         ФлагЕстьАдресРезультатаСКД = цСтруктураЗапускаСКД.Свойство("АдресРезультатаСКД",цАдресРезультатаСКД);

         Если ФлагЕстьАдресРезультатаСКД Тогда

                 Если не ЗначениеЗаполнено(цАдресРезультатаСКД) Тогда

                          ФлагЕстьАдресРезультатаСКД = Ложь;

                 ИначеЕсли ЭтоАдресВременногоХранилища(цАдресРезультатаСКД) Тогда

                          УдалитьИзВременногоХранилища(цАдресРезультатаСКД);

                 Иначе

                          цАдресРезультатаСКД = Новый УникальныйИдентификатор  ;

                 КонецЕсли;

         КонецЕсли;

        

         ФлагЕстьАдресДанныхРасшифровкиСКД = цСтруктураЗапускаСКД.Свойство("АдресДанныхРасшифровкиСКД",цАдресДанныхРасшифровкиСКД);

         Если ФлагЕстьАдресДанныхРасшифровкиСКД Тогда

                 Если ЭтоАдресВременногоХранилища(цАдресДанныхРасшифровкиСКД) Тогда

                          УдалитьИзВременногоХранилища(цАдресДанныхРасшифровкиСКД);  

                 Иначе

                          цАдресДанныхРасшифровкиСКД = Новый УникальныйИдентификатор  ;

                 КонецЕсли;

         КонецЕсли;

        

         ФлагЕстьАдресМакетаСКД = цСтруктураЗапускаСКД.Свойство("АдресМакетаСКД",цАдресМакетаСКД);

         Если ФлагЕстьАдресМакетаСКД

                 И ЭтоАдресВременногоХранилища(цАдресМакетаСКД) Тогда

                 цСхемаКомпоновкиДанных = ПолучитьИзВременногоХранилищаСКД(цАдресМакетаСКД);

         Иначе   

                 Сообщение = Новый СообщениеПользователю;

                 Сообщение.Текст = "не указан макет СКД";

                 //Сообщение.Поле = "";

                 Сообщение.Сообщить();

         КонецЕсли;

        

         ФлагНастройкиСКД = цСтруктураЗапускаСКД.Свойство("НастройкиСКД",цНастройки);

         Если ФлагНастройкиСКД Тогда

                 Если ТипЗнч(цНастройки) = тип("Строка") Тогда //ИмяВариантаНастройки

                          цВариантСКД = цНастройки;

                          цНастройки = цСхемаКомпоновкиДанных.ВариантыНастроек[цВариантСКД].Настройки;

                 ИначеЕсли ТипЗнч(цНастройки) = тип("НастройкиКомпоновкиДанных") Тогда   //ТекущаяНастройка

                          //Ok

                 ИначеЕсли цНастройки = Неопределено Тогда

                          цНастройки = цСхемаКомпоновкиДанных.НастройкиПоУмолчанию;

                 Иначе

                          Сообщение = Новый СообщениеПользователю;

                          Сообщение.Текст = "нет настройки СКД";

                          //Сообщение.Поле = "";

                          Сообщение.Сообщить(); 

                 КонецЕсли;

         Иначе

                 цНастройки = цСхемаКомпоновкиДанных.НастройкиПоУмолчанию;

         КонецЕсли;               

 

         ФлагПроверятьДоступностьПолейСКД = цСтруктураЗапускаСКД.Свойство("ПроверятьДоступностьПолей",цПроверятьДоступностьПолей);     

         Если не ФлагПроверятьДоступностьПолейСКД Тогда

                 цПроверятьДоступностьПолей=Истина;

         КонецЕсли;

        

         ФлагПараметрыФункциональныхОпцийСКД = цСтруктураЗапускаСКД.Свойство("ПараметрыФункциональныхОпций",цПараметрыФункциональныхОпций);              

         Если не ФлагПроверятьДоступностьПолейСКД Тогда

                 цПараметрыФункциональныхОпций=Неопределено;

         КонецЕсли;

        

  ФлагВозможностьПрерыванияПользователемСКД = цСтруктураЗапускаСКД.Свойство("ВозможностьПрерыванияПользователем",цВозможностьПрерыванияПользователем);       

         Если не ФлагВозможностьПрерыванияПользователемСКД Тогда

                 цВозможностьПрерыванияПользователем=Истина;

         КонецЕсли;

        

         ///// определим тип РезультатаСКД

         флагТабДок = Ложь ;

         ФлагТЗ = Ложь;

         ФлагДЗ = Ложь;

        

         ФлагЕстьРезультатСКДТип = цСтруктураЗапускаСКД.Свойство("РезультатСКДТип",цРезультатСКДТип);

         Если ФлагЕстьРезультатСКДТип Тогда  //определимТипВозвращаемыхДанных

                 Если ТипЗнч(цРезультатСКДТип) = тип("Строка") Тогда

                          флагТабДок = (ВРег(цРезультатСКДТип) = ВРег("ТабличныйДокумент")

                          ИЛИ ВРег(цРезультатСКДТип) = ВРег("ТабДок" ));

                          ФлагТЗ     = (ВРег(цРезультатСКДТип) = ВРег("ТаблицаЗначений")

                          ИЛИ ВРег(цРезультатСКДТип) = ВРег("ТЗ")) ;

                          ФлагДЗ     = (ВРег(цРезультатСКДТип) = ВРег("ДеревоЗначений")

                          ИЛИ ВРег(цРезультатСКДТип) = ВРег("ДЗ")) ;

                 Иначе

                          флагТабДок = (ТипЗнч(цРезультатСКДТип) = тип("ТабличныйДокумент"));

                          ФлагТЗ     = (ТипЗнч(цРезультатСКДТип) = тип("ТаблицаЗначений"))

                          ИЛИ (ТипЗнч(цРезультатСКДТип) = тип("ДанныеФормыКоллекция")) ;

                          ФлагДЗ     = (ТипЗнч(цРезультатСКДТип) = тип("ДеревоЗначений"))

                          ИЛИ (ТипЗнч(цРезультатСКДТип) = тип("ДанныеФормыДерево")) ;

                         

                 КонецЕсли;

         КонецЕсли;               

        

         Если (флагТабДок или ФлагТЗ или ФлагДЗ )=Ложь Тогда

                 флагТабДок = Истина;

         КонецЕсли;

        

         ФлагЕстьВнешниеНаборыДанныхСКД = цСтруктураЗапускаСКД.Свойство("ВнешниеНаборыДанныхСКД",цВнешниеНаборыДанныхСКД);   

         Если ФлагЕстьВнешниеНаборыДанныхСКД Тогда

                 Если Не ТипЗнч(цВнешниеНаборыДанныхСКД)=Тип("Структура") Тогда

                          ФлагЕстьВнешниеНаборыДанныхСКД = Ложь;

                          Сообщение = Новый СообщениеПользователю;

                          Сообщение.Текст = "предложены не правильные внешние данные: "+цВнешниеНаборыДанныхСКД;

                          //Сообщение.Поле = "";

                          //Сообщение.УстановитьДанные();

                          Сообщение.Сообщить();

                 КонецЕсли;

         КонецЕсли;

        

         ФлагЕстьобщиеФормулы = цСтруктураЗапускаСКД.Свойство("ОбщиеФормулы",цОбщиеФормулы );

         Если НЕ ФлагЕстьобщиеФормулы Тогда

                 цОбщиеФормулы = Истина;

         КонецЕсли;

        

         ФлагПараметрыСКД = цСтруктураЗапускаСКД.Свойство("ПараметрыСКД",цПараметрыСКД);

         Если ФлагПараметрыСКД Тогда

                 Для каждого цЭлем  Из цПараметрыСКД Цикл

                          Попытка

                                   цНастройки.ПараметрыДанных.УстановитьЗначениеПараметра(цЭлем.Ключ, цЭлем.Значение);  //

                          Исключение                                                

                                   цОш = ОписаниеОшибки();                               

                                   сооб= Новый СообщениеПользователю;

                                   сооб.Текст = цОш+ ": "+цЭлем.Ключ+ " = "+цЭлем.Значение;

                                   сооб.Сообщить();

                          КонецПопытки;

                 КонецЦикла;

         КонецЕсли;

        

         ФлагСтрокаСоединенияСКД = цСтруктураЗапускаСКД.Свойство("СтрокаСоединения",цСтрокаСоединения);

         ФлагСоединенияWEB = Ложь;

         Если ФлагСтрокаСоединенияСКД Тогда

                 Если НЕ ЗначениеЗаполнено(цСтрокаСоединения) Тогда

                          цСтрокаСоединения="";

                          ФлагСтрокаСоединенияСКД =Ложь;

                 ИначеЕсли ТипЗнч(цСтрокаСоединения)=Тип("Строка")  Тогда // COMсоединение

                          ФлагСтрокаСоединенияСКД = Не ПустаяСтрока(цСтрокаСоединения);

                         

                 ИначеЕсли ТипЗнч(цСтрокаСоединения)=Тип("Структура")  Тогда // WEBсоединение

                          ФлагСтрокаСоединенияСКД =Ложь;

                          ФлагСоединенияWEB = Истина;               

                 КонецЕсли;

         иначе   

                 цСтрокаСоединения="";

                 ФлагСтрокаСоединенияСКД =Ложь;

         КонецЕсли;

        

         Если ФлагТабДок   Тогда 

                 РезультатСКД = Новый ТабличныйДокумент;

         ИначеЕсли  ФлагТЗ Тогда

                 #Если не ТонкийКлиент Тогда

                          РезультатСКД = Новый ТаблицаЗначений;

                 #КонецЕсли

         ИначеЕсли ФлагДЗ Тогда

                 #Если не ТонкийКлиент Тогда

                          РезультатСКД = Новый ДеревоЗначений;       

                 #КонецЕсли

         КонецЕсли;

        

#Если Сервер Или ТолстыйКлиент Или ВнешнееСоединение Или ЭтоМобильноеПриложениеСервер Или Клиент Тогда

                 цКомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

                 цПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

                 Если ФлагТабДок  Тогда ////получим РезультатСКД       

                          цДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

                          цМакетКомпоновки = цКомпоновщикМакета.Выполнить(цСхемаКомпоновкиДанных,  цНастройки, цДанныеРасшифровки, , , цПроверятьДоступностьПолей, цПараметрыФункциональныхОпций);//СвойМакетОформления);

                         

цПроцессорКомпоновкиДанных.Инициализировать(цМакетКомпоновки, цВнешниеНаборыДанныхСКД, цДанныеРасшифровки, цОбщиеФормулы);

                          цПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

                          цПроцессорВывода.УстановитьДокумент(РезультатСКД);

                         

                          Если ФлагСоединенияWEB Тогда

                                   #Если не ТонкийКлиент Тогда

                                            ПроцессорВывода_ВывестиWEB(цПроцессорВывода ,цПроцессорКомпоновкиДанных, цМакетКомпоновки,  цДанныеРасшифровки, цСтрокаСоединения);

                                   #КонецЕсли

                          ИначеЕсли ФлагСтрокаСоединенияСКД Тогда

                                   ПроцессорВывода_ВывестиCOM(цПроцессорВывода ,цПроцессорКомпоновкиДанных, цМакетКомпоновки,  цДанныеРасшифровки, цСтруктураЗапускаСКД);

                                  

                          Иначе

                                   цПроцессорВывода.Вывести(цПроцессорКомпоновкиДанных, цВозможностьПрерыванияПользователем);

                                  

                          КонецЕсли;

                         

                          Если РезультатСКД.ВысотаТаблицы>500 Тогда

                                   РезультатСКД.ПоказатьУровеньГруппировокСтрок(0);//не обязательно

                                  

                          Иначе

                                   РезультатСКД.ПоказатьУровеньГруппировокСтрок(1);//не обязательно

                                  

                          КонецЕсли;

                         

                 ИначеЕсли ФлагТЗ ИЛИ ФлагДЗ Тогда

                         

цМакетКомпоновки = цКомпоновщикМакета.Выполнить(цСхемаКомпоновкиДанных, цНастройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"), цПроверятьДоступностьПолей, цПараметрыФункциональныхОпций);//СвойМакетОформления);

                          цПроцессорКомпоновкиДанных.Инициализировать(цМакетКомпоновки, цВнешниеНаборыДанныхСКД, , Истина);

                         

                          цПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

                          цПроцессорВывода.УстановитьОбъект(РезультатСКД);

                         

                          Если ФлагСоединенияWEB Тогда

                                   #Если не ТонкийКлиент Тогда

                                            ПроцессорВывода_ВывестиWEB(цПроцессорВывода ,цПроцессорКомпоновкиДанных, цМакетКомпоновки, , цСтрокаСоединения);

                                   #КонецЕсли

                          ИначеЕсли ФлагСтрокаСоединенияСКД Тогда

                                   ПроцессорВывода_ВывестиCOM(цПроцессорВывода ,цПроцессорКомпоновкиДанных, цМакетКомпоновки, , цСтруктураЗапускаСКД );

                                  

                          Иначе

                                   цПроцессорВывода.Вывести(цПроцессорКомпоновкиДанных);

                          КонецЕсли;

                          ////    

                 Иначе

                          Сообщение = Новый СообщениеПользователю;

                          Сообщение.Текст = "ай  СКД";

                          //Сообщение.Поле = "";

                          //Сообщение.УстановитьДанные();

                          Сообщение.Сообщить();

                         

                 КонецЕсли;

                

         #КонецЕсли

        

         Если ФлагЕстьАдресРезультатаСКД=Ложь Тогда

                 ВозвратРезультата = РезультатСКД; 

         Иначе

                 СтрукРезультатСКД=Новый Структура;

                 СтрукРезультатСКД.Вставить("РезультатСКД", РезультатСКД);

                 #Если не ТонкийКлиент Тогда

                          Если ФлагЕстьАдресДанныхРасшифровкиСКД Тогда

                 цАдресДанныхРасшифровкиСКД = ПоместитьВоВременноеХранилище(цДанныеРасшифровки,цАдресДанныхРасшифровкиСКД);

                                   СтрукРезультатСКД.Вставить("ДанныеРасшифровки",  цАдресДанныхРасшифровкиСКД);

                                  

                          Иначе

                                   СтрукРезультатСКД.Вставить("ДанныеРасшифровки",  цДанныеРасшифровки);

                                  

                          КонецЕсли;

                         

                 #КонецЕсли

                 ВозвратРезультата = СтрукРезультатСКД;

                

         КонецЕсли;

        

         Если ФлагЕстьАдресРезультатаСКД Тогда

                  цАдресРезультатаСКД_=ПоместитьВоВременноеХранилище(ВозвратРезультата,цАдресРезультатаСКД);

                 Возврат цАдресРезультатаСКД_;

         Иначе

                 возврат ВозвратРезультата;

         КонецЕсли;

        

КонецФункции

 

 

Примечание.

Файл УФрезультатСКД_2.zip  содержит 1Cv83.dt, 1Cv83.cf и УниверсальнаяФункцияСКД.epf

Для варианта размещения универсальной функции в глобальном модуле следует использовать 1Cv83.dt демонстрационной базы и 1Cv83.cf.

Если функцию нельзя разместить в глобальном модуле, то предложен внешний отчет  УниверсальнаяФункцияСКД.epf

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

Наименование Файл Версия Размер
Универсальная функция - СформироватьРезультатСКД:

.zip 489,90Kb
4
.zip 2.8.05 489,90Kb 4 Скачать
Универсальная функция - Сформировать результат СКД:

.zip 530,08Kb
1
.zip 530,08Kb 1 Скачать
Универсальная функция - Сформировать результат СКД:

.zip 510,56Kb
3
.zip 2.8.06 510,56Kb 3 Скачать

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

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

См. также

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

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

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

1 стартмани

17.08.2015    51432    169    ekaruk    32    

Парсинг Excel-файла

Загрузка и выгрузка в Excel Универсальные функции v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

Шаблон внешней обработки для парсинга Excel без использования COM-объектов, с учетом клиент-серверного взаимодействия, на толстом, тонком и веб-клиенте. С учетом требований безопасности и отображением длительных операций.

1 стартмани

15.09.2020    6245    21    LamerSoft    0    

Дружелюбный интерфейс итогов в диалоге табличных частей, для Управляемых форм.

Работа с интерфейсом Адаптация типовых решений Универсальные функции v8 Абонемент ($m)

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

1 стартмани

14.09.2020    2563    4    DrZombi    9    

Таблица значений в табличный документ (СКД)

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

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

1 стартмани

12.08.2020    17703    5    markivkin    3    

Отправка электронной почты с помощью локального почтового клиента из 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    28396    22    stvorl    0    

Нормализация адреса с помощью API Почты России

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

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

2 стартмани

11.08.2020    4674    9    Cerberdm    5    

Автоматическое построение формы внешней обработки по данным реквизитов, табличных частей и экспортных методов*

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

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

1 стартмани

07.08.2020    2878    0    TSSV    0    

Выполнение кода и получение данных запросов через HTTP сервис

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

Универсальное расширение, которое предоставляет доступ к конфигурации через запросы. Позволяет выполнять любой код в конфигурации и получать данные запросов 1С. Код и запросы 1С либо вводятся прямо в базе, либо передаются в запросе http. Для того, чтобы включить возможность выполнять любой код извне, необходимо включить настройку в расширении. Поддерживаются как управляемые, так и обычные формы!

2 стартмани

19.07.2020    4281    5    vladnet    7    

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

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

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

1 стартмани

02.02.2015    123097    57    ildarovich    63    

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

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

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

2 стартмани

05.05.2020    3244    3    papche    8    

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

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

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

1 стартмани

10.03.2020    7383    1    v.krivenko    17    

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

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

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

1 стартмани

01.03.2020    6426    53    riposte    4    

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

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

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

3 стартмани

04.02.2016    52805    179    TuneSoft    30    

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

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

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

1 стартмани

07.02.2020    14010    54    LastRoot    23    

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

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

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

1 стартмани

23.12.2019    8120    28    kolya_tlt    14    

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

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

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

1 стартмани

30.10.2019    10340    3    John_d    16    

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

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

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

1 стартмани

25.06.2015    30575    4    Serginio    1    

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

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

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

1 стартмани

28.10.2019    9283    40    art.prm    8    

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

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

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

1 стартмани

23.10.2019    8091    6    zatoichi    3    

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

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

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

1 стартмани

22.10.2019    9401    15    mwoleg    8    

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

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

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

1 стартмани

14.11.2015    21788    0    SeiOkami    3    

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

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

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

1 стартмани

22.10.2019    5498    5    strange2007    10    

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

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

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

1 стартмани

21.10.2019    31107    55    Емельянов Алексей    50    

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

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

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

1 стартмани

11.10.2019    21603    109    dm1try    0    

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

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

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

1 стартмани

18.12.2014    27999    41    alex271    68    

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

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

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

1 стартмани

27.09.2019    14042    21    John_d    16    

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    12187    14    osivv    15    

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

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

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

14.06.2019    11971    27    SanchoD    30    

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

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

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

1 стартмани

01.02.2015    73755    52    spec8s    31    

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

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

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

1 стартмани

28.01.2019    8020    2    Wezoowy    1    

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

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

При использовании функции создания схемы компоновки данных согласно https://infostart.ru/public/575659/ было недостаточно возможности группировки колонок и вывода заголовка документа. Эти возможности и были добавлены в функцию.

1 стартмани

10.10.2018    6247    1    KLex    0    

Динамическое заполнение управляемой формы по макету (без использования расширений)

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

Изменение управляемой формы (реквизиты, команды, элементы, предопределенные процедуры) на основании макета формы.

1 стартмани

11.05.2018    8052    0    vsbronnikov    0    

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

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

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

1 стартмани

09.02.2015    26910    20    boogie    41    

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

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

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

1 стартмани

26.02.2018    14189    22    yaxinr    5    

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

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

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

1 стартмани

22.01.2018    12868    2    dusha0020    11    

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

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

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

1 стартмани

12.01.2018    12209    12    o.nikolaev    4    

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

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

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

1 стартмани

14.02.2015    112095    113    daMaster    90    

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

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

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

1 стартмани

30.10.2017    13869    6    GusevNA    4    

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

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

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

1 стартмани

26.10.2017    12789    9    pbabincev    1    

Автозадачи

Управление бизнес-процессами (BPM) Универсальные функции v8::СКД Россия Абонемент ($m)

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

1 стартмани

01.08.2017    32274    194    1c-intelligence    39    

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

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

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

1 стартмани

14.06.2014    41930    41    mtv:)    7    

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

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

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

1 стартмани

28.05.2017    28936    205    Bassgood    11    

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

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

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

1 стартмани

17.05.2017    19132    12    json    4    

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

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

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

1 стартмани

15.05.2017    12908    0    SvoyakMartin    15    

Сравнение строк с выводом различий Промо

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

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

1 стартмани

15.05.2014    23918    73    bahbah    16    

Web сервис 1С

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

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

1 стартмани

21.03.2017    35168    103    hiduk    34    

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

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

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

1 стартмани

12.01.2017    16146    5    SvoyakMartin    17    

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

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

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

1 стартмани

14.11.2016    11402    2    Alex_YAM    4    

Включаем звук в 1С. Доступно и всерьез. Промо

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

Как сделать воспроизведение звука в 1С без внешних компонентов? Решаем средствами интернета. Для тонкого, толстого и web-клиента.

1 стартмани

30.12.2013    85598    271    sikuda    37    

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

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

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

1 стартмани

09.11.2016    11042    4    blockcode    5    

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

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

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

1 стартмани

09.11.2016    16136    13    igorkosmos    5    

Отладка/доработка модуля менеджера "на лету"

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

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

1 стартмани

23.10.2016    32826    21    json    22