Консоль и функция рекурсивного запроса

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

Разработка - Инструментарий разработчика

рекурсия запрос консоль

9
Консоль предназначена для отладки и просмотра результатов выполнения РЕКУРСИВНОГО ЗАПРОСА в режиме 1С:Предприятие.
В консоли реализована универсальная функция для выполнения рекурсивных запросов.

Рекурсивный запрос - удобный способ выборки иерархических данных. Примеры рекурсивной выборки данных в 1С:Предприятие подробно рассмотрены в "Запрос против рекурсии или разузлование номенклатуры", "Транзитивное замыкание запросом" или далее по ссылкам в публикациях. Авторы предложили три варианта решения проблемы бесконечной рекурсии в графах с циклическими ссылками:

  1. Ограничивать количество рекурсивных циклов, предварительно вычислив их максимально возможное значение;
  2. Исключать циклические ссылки, проверяя пройденный путь, сохраняя его в виде строки кодов вершин графа;
  3. Исключать циклические ссылки, проверяя пройденный путь, сохраняя его во временной таблице.

Консоль позволяет опробовать любой из трех вариантов, для этого в консоли реализована специальная функция ВыполнитьРекурсивныйЗапрос(...). В функцию собраны идеи, описанные в вышеупомянутых публикациях:

  • Рекурсивный запрос разбивается на три пакетных подзапроса: Начальный, Рекурсивный, Итоговый;
  • Рекурсивный подзапрос повторяется в цикле. Условие выхода из рекурсивного цикла отличается и описано в особенностях функции;
  • Начальные и промежуточные данные сохраняются во временные таблицы с индексом шага рекурсивного цикла;В тексте подзапросов к именам временных таблиц добавляются служебные окончания "__НАЧАЛО_РЕКУРСИИ__" или "__КОНЕЦ_РЕКУРСИИ__". Служебные окончания автоматически заменяются на соответствующий индекс шага рекурсивного цикла.

Встроенная в консоль функция имеет особенности:

  • В конце начального подзапроса возвращается количество начальных данных;
  • В конце рекурсивного подзапроса возвращается количество данных, отобранное для итоговой выборки;
  • Рекурсивный цикл повторяется до тех пор, пока возвращаемое подзапросом число (количество записей) оказывается больше предыдущего числа (количества записей) - полученного на предыдущем шаге рекурсивного цикла.
  • ВНИМАНИЕ! Не используйте в текстах Начального или Рекурсивного подзапросов стандартную функцию 1С:Предприятие ПРЕДСТАВЛЕНИЕ(), это приводит к бесконечной рекурсии - зависанию системы!
&НаСервере 
Функция ВыполнитьРекурсивныйЗапрос(ЗНАЧ Параметр, ЗНАЧ Значение
, ЗНАЧ ТекстЗапросаИтог
, ЗНАЧ ТекстЗапросаРекурсия
 , ЗНАЧ ТекстЗапросаНачало
 , ЗНАЧ ШагРекурсииНачало = "__НАЧАЛО_РЕКУРСИИ__" // Подменяется в тексте запроса на предыдущий индекс шага рекурсии
 , ЗНАЧ ШагРекурсииКонец = "__КОНЕЦ_РЕКУРСИИ__" // Подменяется в тексте запроса на текущий индекс шага рекурсии
 , ЗНАЧ ЗапросМаксимальноеКоличествоЗаписей = "ВЫБРАТЬ 0;" // для предотвращения бесконечных рекурсий, 0 - без ограничений
, ЗНАЧ РежимОтладки = Ложь ) Экспорт

    Если СокрЛП(ШагРекурсииНачало)="" тогда
        ШагРекурсииНачало = "__НАЧАЛО_РЕКУРСИИ__"
    КонецЕсли;

    Если
СокрЛП(ШагРекурсииКонец)="" тогда
        ШагРекурсииКонец = "__КОНЕЦ_РЕКУРСИИ__"
    КонецЕсли; ТекВремя = ТекущаяДата();

    Если РежимОтладки тогда
        Сообщить(Формат(ТекВремя, "ДЛФ=T") + ", СТАРТ запроса",СтатусСообщения.Информация);
    КонецЕсли;

    Запрос = Новый Запрос();
 
    // Менеджер временных таблиц необходим для сохранения в памяти промежуточных таблиц рекурсии

    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();

    // ИндексРекурсии для генерации шага рекурсии в имени таблицы
    ИндексРекурсии = 0;

    // Если начальный запрос пустой, выполним только итоговый запрос

    Если ТекстЗапросаНачало<>Неопределено И ТекстЗапросаНачало<>"" тогда

        // Выход из рекурсии, когда количество записей в итоговой теблице перестанет прибавляться

        СтароеКоличествоЗаписей = 0;
        НовоеКоличествоЗаписей = 0;

        // Заменим в начальном подзапросе имена таблиц, указав начальный шаг рекрсии
        Запрос.Текст = СтрЗаменить(ТекстЗапросаНачало, ШагРекурсииНачало, Формат(ИндексРекурсии, "ЧН=0; ЧГ=0"));

        Если Параметр<>Неопределено И Параметр<>"" тогда
            Запрос.УстановитьПараметр(Параметр, Значение);
        КонецЕсли;

        // Выполним начальный подзапрос
        Попытка РезультатЗапроса = Запрос.Выполнить();
            Исключение ВызватьИсключение "Ошибка в НАЧАЛЬНОМ подзапросе: " + ОписаниеОшибки() + " !ВНИМАНИЕ! Ключевое слово '"+ШагРекурсииНачало+"' заменено на '"+Формат(ИндексРекурсии, "ЧН=0; ЧГ=0")+"'";
        КонецПопытки
;

        // Если рекурсивный запрос пустой, выполним только итоговый запрос
        Если ТекстЗапросаРекурсия<>Неопределено И ТекстЗапросаРекурсия<>"" тогда

            // Определим указанное в парамтрах максимальное допустимое количество шагов рекурсивного подзапроса
            МаксимальноеКоличествоРекурсий=0;

            Если ЗапросМаксимальноеКоличествоЗаписей<>Неопределено И ЗапросМаксимальноеКоличествоЗаписей<>"" тогда
                ЗапросКоличества = Новый Запрос();
                ЗапросКоличества.Текст = ЗапросМаксимальноеКоличествоЗаписей;

                Попытка

                    РезультатЗапросаКоличества = ЗапросКоличества.Выполнить();
                    ВыборкаДетальныеЗаписи = РезультатЗапросаКоличества.Выбрать();

                    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
                   
                        МаксимальноеКоличествоРекурсий = ВыборкаДетальныеЗаписи.Получить(0);
                   
                        Если ТипЗнч(МаксимальноеКоличествоРекурсий)<>Тип("Число") тогда
                            Сообщить("Запрос '"+ЗапросМаксимальноеКоличествоЗаписей+"' для ограничения максимального количества записей должен быть пустым, либо возвращать число!" ,СтатусСообщения.Внимание);
                            МаксимальноеКоличествоРекурсий=1;
                        КонецЕсли;
                    КонецЕсли;
                Исключение
                    Сообщить("Запрос для ограничения максимального количества записей рекурсии выполнен с ошибкой:" + ОписаниеОшибки() ,СтатусСообщения.Внимание);
                    МаксимальноеКоличествоРекурсий=1;
                КонецПопытки
;
            КонецЕсли;

            // Определим количество записей полученное в начальном подзапросе
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

            Если
ВыборкаДетальныеЗаписи.Следующий() Тогда
           
                НовоеКоличествоЗаписей = ВыборкаДетальныеЗаписи.Получить(0);
           
                Если
ТипЗнч(НовоеКоличествоЗаписей)<>Тип("Число") тогда
                    Сообщить("Начальный подзапрос должен возвращать количество записей в начальной выборке! НАПРИМЕР: 'ВЫБРАТЬ КОЛИЧЕСТВО (*) ИЗ ИтоговаяТаблица"+ШагРекурсииНачало+"' " ,СтатусСообщения.Внимание);
                    НовоеКоличествоЗаписей=1;
                КонецЕсли;
            КонецЕсли;

            Если РежимОтладки тогда
                ТекВремя=ТекущаяДата();
                Сообщить(Формат(ТекВремя, "ДЛФ=T") + ", выполнен НАЧАЛЬНЫЙ подзапрос, количество записей: "+НовоеКоличествоЗаписей,СтатусСообщения.Информация);
            КонецЕсли
;

            // Основной Ц И К Л рекурсии, пока увеличивается количество записей
            Пока НовоеКоличествоЗаписей > СтароеКоличествоЗаписей
                И (МаксимальноеКоличествоРекурсий=0 ИЛИ НовоеКоличествоЗаписей < МаксимальноеКоличествоРекурсий) цикл

                // Сдвигаем количество записей и индекс рекурсии
                СтароеКоличествоЗаписей = НовоеКоличествоЗаписей;
                ИндексРекурсии = ИндексРекурсии + 1;

                // Заменим в рекурсивном подзапросе имена таблиц, указав текущий шаг рекрсии

                Запрос.Текст = СтрЗаменить(ТекстЗапросаРекурсия, ШагРекурсииНачало, Формат(ИндексРекурсии-1, "ЧН=0; ЧГ=0"));
                Запрос.Текст = СтрЗаменить(Запрос.Текст, ШагРекурсииКонец, Формат(ИндексРекурсии, "ЧН=0; ЧГ=0"));

                Если
Параметр<>Неопределено И Параметр<>"" тогда
                    Запрос.УстановитьПараметр(Параметр, Значение);
                КонецЕсли;

                // Выполним рекурсивный подзапрос
                Попытка
                    РезультатЗапроса = Запрос.Выполнить();
                Исключение
                    ВызватьИсключение "Ошибка в РЕКУРСИВНОМ подзапросе: " + ОписаниеОшибки() + " !ВНИМАНИЕ! Ключевые слова: '"+ШагРекурсииНачало+"' заменено на '"+Формат(ИндексРекурсии-1, "ЧН=0; ЧГ=0")+"', " + " '"+ШагРекурсииКонец+"' заменено на '"+Формат(ИндексРекурсии, "ЧН=0; ЧГ=0")+"'";
                КонецПопытки
;

                ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

                // Определим новое количество записей, полученное в рекурсивном подзапросе
                Если ВыборкаДетальныеЗаписи.Следующий() Тогда
               
                    НовоеКоличествоЗаписей = ВыборкаДетальныеЗаписи.Получить(0);

                    Если ТипЗнч(НовоеКоличествоЗаписей)<>Тип("Число") тогда
                        Сообщить("Рекурсивный подзапрос должен возвращать количество записей в итоговой выборке! НАПРИМЕР: 'ВЫБРАТЬ КОЛИЧЕСТВО (*) ИЗ ИтоговаяТаблица"+ШагРекурсииНачало+"' " ,СтатусСообщения.Внимание);
                        НовоеКоличествоЗаписей=1;
                    КонецЕсли;
                КонецЕсли;

                Если РежимОтладки И ТекВремя<>ТекущаяДата() тогда
                    ТекВремя=ТекущаяДата();
                    Сообщить(Формат(ТекВремя, "ДЛФ=T") + ", выполнен " + ИндексРекурсии + " РЕКУРСИВНЫЙ подзапрос, количество записей: "+НовоеКоличествоЗаписей,СтатусСообщения.Информация);
                КонецЕсли
;
           
            КонецЦикла
;
       
        КонецЕсли
;
    КонецЕсли;

    // Заменим в итоговом подзапросе имена таблиц, указав конечный шаг рекрсии
    Запрос.Текст = СтрЗаменить(ТекстЗапросаИтог, ШагРекурсииКонец, Формат(ИндексРекурсии, "ЧН=0; ЧГ=0"));

    Если Параметр<>Неопределено И Параметр<>"" тогда
        Запрос.УстановитьПараметр(Параметр, Значение);
    КонецЕсли
;

    // Выполним итоговый подзапрос
    Попытка
        РезультатЗапроса = Запрос.Выполнить();
    Исключение
        ВызватьИсключение "Ошибка в ИТОГОВОМ подзапросе: " + ОписаниеОшибки() + " !ВНИМАНИЕ! Ключевое слово '"+ШагРекурсииКонец+"' заменено на '"+Формат(ИндексРекурсии, "ЧН=0; ЧГ=0")+"'";
    КонецПопытки
;

    Если
РежимОтладки тогда ТекВремя=ТекущаяДата();
        Сообщить(Формат(ТекВремя, "ДЛФ=T") + ", выполнен ИТОГОВЫЙ подзапрос",СтатусСообщения.Информация);
    КонецЕсли;

    Возврат РезультатЗапроса;
КонецФункции

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

  • “Выполнить” - в стандартном режиме;
  • “Выполнить запрос с указанием времени” - с указанием времени выполнения рекурсивного запроса в формате часы:минуты:секунды.

Пример тестовой таблицы (вставить перед начальным подзапросом)

/////////////////////////////////////////////////////////////////////////////// 
// ФОРМИРОВАНИЕ ТЕСТОВОЙ ТАБЛИЦЫ

ВЫБРАТЬ 0 КАК объект, 1 КАК субъект , "00" КАК с_объект, "01" КАК с_субъект
ПОМЕСТИТЬ таблица10
ОБЪЕДИНИТЬ ВЫБРАТЬ 0 КАК объект, 2 КАК субъект , "00" КАК с_объект, "02" КАК с_субъект
ОБЪЕДИНИТЬ ВЫБРАТЬ 0 КАК объект, 3 КАК субъект , "00" КАК с_объект, "03" КАК с_субъект
ОБЪЕДИНИТЬ ВЫБРАТЬ 0 КАК объект, 4 КАК субъект , "00" КАК с_объект, "04" КАК с_субъект
ОБЪЕДИНИТЬ
ВЫБРАТЬ 0 КАК объект, 5 КАК субъект , "00" КАК с_объект, "05" КАК с_субъект
ОБЪЕДИНИТЬ ВЫБРАТЬ 0 КАК объект, 6 КАК субъект , "00" КАК с_объект, "06" КАК с_субъект
ОБЪЕДИНИТЬ
ВЫБРАТЬ 0 КАК объект, 7 КАК субъект , "00" КАК с_объект, "07" КАК с_субъект
ОБЪЕДИНИТЬ
ВЫБРАТЬ 0 КАК объект, 8 КАК субъект , "00" КАК с_объект, "08" КАК с_субъект
ОБЪЕДИНИТЬ ВЫБРАТЬ 0 КАК объект, 9 КАК субъект , "00" КАК с_объект, "09" КАК с_субъект
ОБЪЕДИНИТЬ ВЫБРАТЬ 0 КАК объект, 10 КАК субъект , "00" КАК с_объект, "10" КАК с_субъект;

ВЫБРАТЬ 100+родитель.субъект КАК объект, 200+потомок.субъект КАК субъект
,
"1"+родитель.с_субъект КАК с_объект, "2"+потомок.с_субъект КАК с_субъект
ПОМЕСТИТЬ
таблица100 ИЗ таблица10 КАК родитель, таблица10 КАК потомок;

ВЫБРАТЬ 200+родитель.субъект КАК объект, 300+потомок.субъект КАК субъект
, "2"+родитель.с_субъект КАК с_объект, "3"+потомок.с_субъект КАК с_субъект
ПОМЕСТИТЬ таблица1000 ИЗ таблица10 КАК родитель, таблица10 КАК потомок;

ВЫБРАТЬ 300+родитель.субъект КАК объект, 400+потомок.субъект КАК субъект
, "3"+родитель.с_субъект КАК с_объект, "4"+потомок.с_субъект КАК с_субъект
ПОМЕСТИТЬ
таблица10000 ИЗ таблица10 КАК родитель, таблица10 КАК потомок;

ВЫБРАТЬ
400+родитель.субъект КАК объект, 500+потомок.субъект КАК субъект
,
"4"+родитель.с_субъект КАК с_объект, "5"+потомок.с_субъект КАК с_субъект
ПОМЕСТИТЬ таблица100000 ИЗ таблица10 КАК родитель, таблица10 КАК потомок;

ВЫБРАТЬ 500+родитель.субъект КАК объект, 600+потомок.субъект КАК субъект
,
"5"+родитель.с_субъект КАК с_объект, "6"+потомок.с_субъект КАК с_субъект
ПОМЕСТИТЬ
таблица1000000 ИЗ таблица10 КАК родитель, таблица10 КАК потомок;

ВЫБРАТЬ
000+объект КАК объект, 100+субъект КАК субъект , "0"+с_объект КАК с_объект
,
"1"+с_субъект КАК с_субъект ПОМЕСТИТЬ таблица ИЗ таблица10
ОБЪЕДИНИТЬ
ВСЕ ВЫБРАТЬ * ИЗ таблица100
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ * ИЗ таблица1000
ОБЪЕДИНИТЬ
ВСЕ ВЫБРАТЬ * ИЗ таблица10000
ОБЪЕДИНИТЬ
ВСЕ ВЫБРАТЬ ПЕРВЫЕ 0 * ИЗ таблица100000
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 0 * ИЗ таблица1000000

// Циклическая ссылка

//0// ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 301 КАК объект, 101 КАК субъект
//0// , "301" КАК с_объект, "101" КАК с_субъект

ИНДЕКСИРОВАТЬ ПО объект, субъект;

УНИЧТОЖИТЬ
таблица10;
УНИЧТОЖИТЬ таблица100;
УНИЧТОЖИТЬ таблица1000;
УНИЧТОЖИТЬ таблица10000;
УНИЧТОЖИТЬ таблица100000;
УНИЧТОЖИТЬ таблица1000000;

// КОНЕЦ ФОРМИРОВАНИЯ ТЕСТОВОЙ ТАБЛИЦЫ
///////////////////////////////////////////////////////////////////////////////

Пример начального подзапроса

/////////////////////////////////////////////////////////////////////////////// 
// НАЧАЛЬНЫЙ ПОДЗАПРОС

ВЫБРАТЬ
объект, субъект , с_объект, с_субъект
, 1 КАК уровень , "."+с_объект+"."+с_субъект+"." КАК путь
, "" КАК старый_путь
ПОМЕСТИТЬ РекурсивнаяТаблица__НАЧАЛО_РЕКУРСИИ__
ИЗ таблица
ГДЕ
объект=0;

//--------- служебная счасть ---------//


// 1.1. ПРОЙДЕННЫЕ УЗЛЫ
// для исключения бесконечной рекурсии
//3//ВЫБРАТЬ РАЗЛИЧНЫЕ объект, субъект
//3//ПОМЕСТИТЬ ПройденныеУзлы__НАЧАЛО_РЕКУРСИИ__
//3//ИЗ РекурсивнаяТаблица__НАЧАЛО_РЕКУРСИИ__

//3//ОБЪЕДИНИТЬ
//3//ВЫБРАТЬ субъект КАК объект, субъект
//3//ИЗ РекурсивнаяТаблица__НАЧАЛО_РЕКУРСИИ__

//3//ИНДЕКСИРОВАТЬ ПО 2,1;


// 1.2. ИТОГОВЫЕ ДАННЫЕ
ВЫБРАТЬ * ПОМЕСТИТЬ ИтоговаяТаблица__НАЧАЛО_РЕКУРСИИ__
ИЗ РекурсивнаяТаблица__НАЧАЛО_РЕКУРСИИ__;

// 1.4. КОЛИЧЕСТВО ЗАПИСЕЙ

ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ ИтоговаяТаблица__НАЧАЛО_РЕКУРСИИ__;

// КОНЕЦ НАЧАЛЬНОГО ПОДЗАПРОСА
///////////////////////////////////////////////////////////////////////////////

Пример рекурсивного подзапроса

/////////////////////////////////////////////////////////////////////////////// 
// РЕКУРСИВНЫЙ ПОДЗАПРОС


ВЫБРАТЬ таблица.*, рекурсия.уровень+1 КАК уровень
, рекурсия.путь+таблица.с_субъект+"." КАК путь
,
рекурсия.путь КАК старый_путь
ПОМЕСТИТЬ РекурсивнаяТаблица__КОНЕЦ_РЕКУРСИИ__
ИЗ РекурсивнаяТаблица__НАЧАЛО_РЕКУРСИИ__ КАК рекурсия
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
таблица ПО таблица.объект=рекурсия.субъект

// соединенние для исключения бесконечной рекурсии
//3//ЛЕВОЕ СОЕДИНЕНИЕ ПройденныеУзлы__НАЧАЛО_РЕКУРСИИ__ ПройденныеУзлы
//3// ПО ПройденныеУзлы.субъект=таблица.объект
//3// И ПройденныеУзлы.объект=таблица.субъект
ГДЕ ИСТИНА
//1// И рекурсия.уровень<8 // ограниечение количества уровней //2// И НЕ рекурсия.путь ПОДОБНО "%."+таблица.с_субъект+".%" //3// И ПройденныеУзлы.субъект ЕСТЬ NULL ;

//--------- служебная счасть ---------//
// 2.1. ПРОЙДЕННЫЕ УЗЛЫ
// для исключения бесконечной рекурсии //3//ВЫБРАТЬ РАЗЛИЧНЫЕ ПройденныеУзлы.объект, Рекурсия.субъект //3//ПОМЕСТИТЬ ПройденныеУзлы__КОНЕЦ_РЕКУРСИИ__ //3//ИЗ РекурсивнаяТаблица__КОНЕЦ_РЕКУРСИИ__ Рекурсия //3//ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПройденныеУзлы__НАЧАЛО_РЕКУРСИИ__ ПройденныеУзлы ПО ПройденныеУзлы.субъект=Рекурсия.объект //3//ОБЪЕДИНИТЬ //3//ВЫБРАТЬ субъект КАК объект, субъект ИЗ РекурсивнаяТаблица__КОНЕЦ_РЕКУРСИИ__ //3//ИНДЕКСИРОВАТЬ ПО 2,1;
// 2.2. ИТОГОВЫЕ ДАННЫЕ ВЫБРАТЬ * ПОМЕСТИТЬ ИтоговаяТаблица__КОНЕЦ_РЕКУРСИИ__ ИЗ ИтоговаяТаблица__НАЧАЛО_РЕКУРСИИ__
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ * ИЗ РекурсивнаяТаблица__КОНЕЦ_РЕКУРСИИ__ ;

// 2.3. ОСВОБОЖДЕНИЕ ПАМЯТИ
//3//УНИЧТОЖИТЬ ПройденныеУзлы__НАЧАЛО_РЕКУРСИИ__;
УНИЧТОЖИТЬ
РекурсивнаяТаблица__НАЧАЛО_РЕКУРСИИ__;
УНИЧТОЖИТЬ ИтоговаяТаблица__НАЧАЛО_РЕКУРСИИ__;

// 2.4. КОЛИЧЕСТВО ЗАПИСЕЙ

ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ ИтоговаяТаблица__КОНЕЦ_РЕКУРСИИ__;

// КОНЕЦ РЕКУРСИВНОГО ПОДЗАПРОСА
///////////////////////////////////////////////////////////////////////////////

Пример итогового подзапроса

/////////////////////////////////////////////////////////////////////////////// 
// ИТОГОВЫЙ ПОДЗАПРОС

ВЫБРАТЬ //ПЕРВЫЕ 10
КОЛИЧЕСТВО(*)
// *
ИЗ ИтоговаяТаблица__КОНЕЦ_РЕКУРСИИ__
//УПОРЯДОЧИТЬ ПО объект, субъект, путь
;

//--------- служебная счасть ---------//
// 3.3. ОСВОБОЖДЕНИЕ ПАМЯТИ
//3//УНИЧТОЖИТЬ ПройденныеУзлы__КОНЕЦ_РЕКУРСИИ__;
УНИЧТОЖИТЬ РекурсивнаяТаблица__КОНЕЦ_РЕКУРСИИ__;
УНИЧТОЖИТЬ ИтоговаяТаблица__КОНЕЦ_РЕКУРСИИ__;
УНИЧТОЖИТЬ таблица;

// конец ИТОГОВЫЙ ПОДЗАПРОС
///////////////////////////////////////////////////////////////////////////////

В подзапросах отмечены комментариями:
//0// - пример циклической ссылки - ВНИМАНИЕ! Возможно зависание системы! Не убирайте данный комментарий, если в рекурсивный запрос не включен механизм исключения циклических ссылок.
//1// - пример ограничения количества шагов рекурсивного цикла.
//2// - пример исключения циклических ссылок через проверку пройденного пути сохраненного в виде строки кодов вершин графа.
//3// - (в разных местах запроса) пример исключения циклических ссылок через проверку пройденного пути сохраненного во временную таблицу.

Время работы рекурсивной выборки в зависимости от количества итоговых записей

Тест файловой СУБД, Core2Duo 2.40GHz, 4ГБ ОЗУ

 Файл-серверная статистика

Кол-во

  записей 

 Время выполнение рекурсивного

запроса (сек.)

Без

 контроля

 Контроль и сохранение

пройденного пути

в строке в таблице
111 110 5 6 37
121 110 6 7 43
211 110 10 11 81
311 110 15 16 124
411 110 20 21 172
511 110 23 25 211
711 110 32 35 257
911 110 41 44 385
 1 111 110
49 54 473


Тест на http://demo.1c.ru

 Тест на demo.1c.ru

 

Кол-во

  записей 

 Время выполнение рекурсивного

запроса (сек.)

Без

 контроля

 Контроль и сохранение

пройденного пути

в строке в таблице
111 110 1 2 7
121 110 1 2 7
211 110 1 4 9
311 110 3 5 9
411 110 3 6 11
511 110 4 7 12
711 110 5 9 15
911 110 10 11 17
 1 111 110
11 11 20

 

 

 

 

 

9

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

Наименование Файл Версия Размер
Консоль РЕКУРСИВНОГО запроса для управляемого приложения
.epf 284,46Kb
10.02.16
5
.epf 0.0.1 284,46Kb 5 Скачать

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

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение

См. также

CF & SQL : конструктор прямых запросов к БД 1С 133

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Россия MS SQL Абонемент ($m) Инструментарий разработчика Администрирование СУБД

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

1 стартмани

02.10.2019    3627    71    dmitrydemenew    18       

Конвейер проверки качества кода 116

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Практика программирования Математика и алгоритмы Разработка

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    4659    10    Stepa86    35       

Модель объекта 6

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    2428    1    vadim1980    0       

Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD 134

Инструменты и обработки Системный администратор Программист Архив с данными v8 Windows Абонемент ($m) Инструментарий разработчика Jenkins

Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.

1 стартмани

03.06.2019    9246    1    ripreal1    74       

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером 182

Инструменты и обработки Программист Подсистема v8 1cv8.cf Абонемент ($m) Инструментарий разработчика

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

1 стартмани

13.05.2019    15256    89    Diversus    38       

Баг или фича? Неожиданное поведение платформы 164

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

Рассмотрим несколько случаев неожиданного поведения платформы 1С, а также что с этим можно cделать.

18.02.2019    11953    30    YPermitin    88       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 509

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

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    24948    242    bonv    102       

Редактор объектов информационной базы 8.3 35

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки

Универсальная внешняя обработка (СДРОбъектУпр) для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.31 от 02.10.2019

2 стартмани

23.01.2019    8468    126    ROL32    21       

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь полноценный оффлайн (обновление от 15.08.19)! 169

Инструменты и обработки Программист Архив с данными v8 v8::Mobile БУ УУ Android Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Абонемент ($m) Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    19685    208    informa1555    167       

PostgreSQL для 1С 8.3: ускоряем резервное копирование и восстановление для отдельной базы очень большого размера 108

Статья Системный администратор Программист Архив с данными v8 1cv8.cf Россия PostgreSQL Абонемент ($m) Производительность и оптимизация (HighLoad) Тестирование и исправление

В этой статье разберем оптимизацию работы с моментальным снимком отдельной базы 1С в кластере PostgreSQL средствами pg_dump.exe, pg_restore.exe, psql.exe в среде Windows Server 2008,2012,2016. А также разберем проблемные ситуации и неожиданные ограничения при работе 1С в связке с PostgreSQL. Для Linux все аналогично.

1 стартмани

03.12.2018    15767    30    vsasav    62       

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

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

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

1 стартмани

23.11.2018    12923    8    ids79    14       

Навигатор по конфигурации базы 1С 8.3 100

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки

Универсальная внешняя обработка (СДРНавигаторУпр) для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Небольшой набор сервисных функций для повседневной работы. Для программистов и пользователей. Платформа 8.3, управляемые формы. Версия 1.1.0.43 от 01.10.2019

3 стартмани

28.10.2018    14644    176    ROL32    43       

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

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

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

1 стартмани

21.09.2018    11020    10    stvorl    0       

Консоль Внедренца v.3.3 113

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика

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

1 стартмани

27.08.2018    9791    232    evvakra    23       

HTTP Сервисы: Путь к своему сервису. Часть 3 133

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Практика программирования

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    14729    29    dsdred    13       

Управляемая консоль запросов, отчетов 3.7.3 (расширение, внешняя обработка) 356

Инструменты и обработки Программист Архив с данными v8 v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m) Консоль запросов

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Выполнение в фоне (с возможностью отмены), Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

1 стартмани

14.08.2018    48681    1080    Evg-Lylyk    409       

HTTP Сервисы: Путь к своему сервису. Часть 2 120

Статья Системный администратор Программист Расширение (cfe) v8 1cv8.cf ERP2 УТ11 КА2 Абонемент ($m) Инструментарий разработчика Практика программирования

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 1». В этой части будет "Микс" из OData+HTTP-Сервис(Get)+СКД. Наш пример будет работать как в браузере, так и в написанной нами обработке. Работать будем с разными версиями платформ.

1 стартмани

13.08.2018    16425    17    dsdred    0       

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 62

Инструменты и обработки Программист Бизнес-аналитик Приложение (apk) v8 Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    14663    23    informa1555    26       

Консоль HTTP-запросов с генерацией кода 164

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Консоль запросов

Консоль HTTP-запросов, которая не только выполняет запросы и получает результат их выполнения, но и генерирует необходимый код. Использую на 8.3.11.2899.

1 стартмани

25.05.2018    14802    215    leongl    15       

Работа со схемой запроса 171

Статья Программист Конфигурация (md, cf) v8 v8::Запросы Абонемент ($m) Инструментарий разработчика Практика программирования

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    27102    72    kalyaka    34       

Регистры правил [Расширение] 13

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 v8::Права УТ11 Абонемент ($m) Инструментарий разработчика Информационная безопасность

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    10097    27    33lab    0       

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

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

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

1 стартмани

29.12.2017    21357    21    agent00mouse    0       

Программное формирование форматированной строки в стиле html+inline CSS 52

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Инструментарий разработчика

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

1 стартмани

18.11.2017    19189    24    bonv    5       

Полезный код для программистов 1С (часть 1). Управление свойствами элементов формы. Хранение копии данных реквизитов 141

Статья Программист Архив с данными v8 Абонемент ($m) Инструментарий разработчика Практика программирования

У каждого программиста за время работы накапливается полезный инструментарий, которым он привык пользоваться. Естественно и у меня он тоже имеется. И вот решено было немного поделиться с сообществом. Возможно идеи не новые. Более того, допускаю, что реализованы они не самым оптимальным образом. Но ведь для этого сообщество и существует, чтобы делиться с ним, получая обратную связь.

1 стартмани

24.09.2017    31355    17    vandalsvq    79       

Трансформатор 1С - SQL 233

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика

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

1 стартмани

28.06.2017    26535    317    Synoecium    44       

OneStyle. Улучшенное форматирование кода в конфигураторе 118

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Инструментарий разработчика

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

1 стартмани

19.06.2017    17347    24    Stepa86    45       

"Конвертация данных" + Git. Решение проблемы различий в файлах 112

Инструменты и обработки Программист Конфигурация (md, cf) v8 КД Абонемент ($m) Инструментарий разработчика Обмен через XML

Как известно, типовая конфигурация «Конвертация данных» обладает одним недостатком, мешающим работать с ней в Git-е. Если выгруженные из нее правила обмена загрузить в другую КД, а потом снова выгрузить, то полученные два файла будут очень сильно отличаться друг от друга, и при сравнении (diff) доработок будет невозможно провести код-ревью, равно как найти сами изменения, которые закоммитил разработчик.

1 стартмани

08.06.2017    16467    30    stas_ganiev    13       

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

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

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

26.05.2017    38306    166    DarkAn    86       

Набор подсистем "Умные таблицы" 64

Инструменты и обработки Системный администратор Программист Архив с данными v8 Беларусь Россия Казахстан Абонемент ($m) Инструментарий разработчика

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    22734    99    Silenser    33       

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений 181

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

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

1 стартмани

13.03.2017    22274    112    romasna    47       

1С: Gitter 1.1 (Хранилище 1С => Git) 114

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика

Развитие проекта gitter http://infostart.ru/public/273126/ . Позволяет выгружать хранилище 1С в репозиторий GIT.

1 стартмани

01.02.2017    19327    40    Stepa86    20       

Сценарное тестирование в помощь программисту 1С 186

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика

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

1 стартмани

11.11.2016    22136    63    grumagargler    47       

Несколько шаблонов для доработки типовых конфигураций 173

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::УФ Абонемент ($m) Практика программирования Инструментарий разработчика

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

1 стартмани

03.10.2016    27453    99    json    25       

Управление задачами: Канбан доска 235

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Инструментарий разработчика БСП (Библиотека стандартных подсистем)

Конфигурация "Управление задачами" с использованием БСП. Канбан доска. Открытый код.Загрузка изменений из хранилища конфигураций 1С и связь с задачами. Проект выложен на github (ссылка в публикации). Управляемые формы. Рассылка уведомлений.

1 стартмани

02.10.2016    47231    465    BlizD    284       

Конструктор-тестер http запросов в 1С 215

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) WEB Инструментарий разработчика

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    33643    299    hlopik    16       

Hello world на metadata.js 249

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) Инструментарий разработчика WEB Мобильная разработка

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

1 стартмани

11.08.2016    47464    115    unpete    205       

Подсистема обмена данными с порталом ИМНС по электронным счетам-фактурам (автоматический обмен) 7

Инструменты и обработки Системный администратор Программист Бухгалтер Конфигурация (md, cf) v8 1cv8.cf Беларусь БУ НДС Абонемент ($m) Инструментарий разработчика Внешние источники данных WEB

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

1 стартмани

28.07.2016    25677    28    c1nil    4       

Лекарство на случай, если перестала работать форма списка для сделок. (ERP). 1

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 ERP2 Абонемент ($m) Тестирование и исправление

Форма списка справочник сделки стала выпадать с ошибкой?  Или все еще в порядке, но хочется спокойно съездить в отпуск, без паники, что менеджеры устроят бунт.

1 стартмани

28.07.2016    16265    milkers    2       

Навигатор по структуре и данным баз 1С 8 28

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика

Просмотр структуры и данных ИБ 1С 8.2, 8.3. Состав, типы объектов, табличных частей, движений. Размер, структура хранения объекта. Для администраторов и разработчиков. Версия 1 - на обычных формах, версия 2 - на управляемых.

1 стартмани

11.07.2016    22800    130    o.nikolaev    17       

Конструктор внешних печатных форм NEW beta (обычные и управляемые приложения!) 124

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Универсальные печатные формы Инструментарий разработчика

Исходная обработка http://infostart.ru/public/162019/, здесь просто исправлены некоторые процедуры и функции для управляемого приложения. (Публикуется с согласия автора SeiOkami) 12.07.2016 - Версия 4.3 - убрал модальность для управляемой формы, изменена встроенная ВПФ . 23.11.2016 - Версия 4.4 - изменена встроенная ВПФ . 03.04.2018 - Версия 4.7 - исправлено сохранение ВПФ в клиент-серверном варианте от vshish. 11.05.2018 - Версия 4.8 - исправление от VovkaPutin плюс убрал из текста модуля ВПФ директивы препроцессора (то, что начинается с "#"), убрал модальность при открытии ВПФ из конструктора. 17.10.2019 - Версия 5.1 - тестировалось на платформе 8.3.15.1700, БП 3.0.73.54

1 стартмани

10.07.2016    41151    450    Alex_E    109       

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения) 185

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Практика программирования БСП (Библиотека стандартных подсистем)

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    45579    136    rozer    52       

Консоль запросов "Запросник" для управляемых форм с подсветкой синтаксиса 35

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Консоль запросов

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

1 стартмани

19.04.2016    30779    263    1С_Мастер    42       

Яндекс.Деньги "Благотворительность" 17

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.

1 стартмани

16.02.2016    17018    9    Tatitutu    5       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Универсальные функции Универсальные обработки

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

3 стартмани

04.02.2016    35568    151    tunesoft    24       

Консоль запросов для УФ с подсветкой синтаксиса и обработкой результата 119

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Консоль запросов

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

1 стартмани

08.01.2016    28142    488    BurningChrome    81       

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

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

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

1 стартмани

14.11.2015    15025    SeiOkami    3       

ADO Консоль запросов с конструктором для управляемого приложения (8.3.6+) 124

Инструменты и обработки Системный администратор Программист Бизнес-аналитик Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Консоль запросов

Обработка "Консоль запросов" для управляемого приложения с возможностью строить запросы к внешним источникам данных по интерфейсу ADO. Имеет встроенный конструктор запросов с типовым интерфейсом для управляемого приложения. В одном пакете можно обращаться к нескольким внешним источникам. В результате ADO запроса можно получить как обычную выборку данных, так и ВременнуюТаблицу, которую можно использовать в других запросах 1С или в контексте ADO... Управляемые формы, платформа не ниже 8.3.6.

1 стартмани

13.11.2015    19319    231    DC    41       

Интерфейс сопоставления объектов для обмена (для типового регистра СоответствиеОбъектовДляОбмена) 22

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 КА1 БП2.0 ЗУП2.5 УТ10 УПП1 Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки Перенос данных из 1C8 в 1C8

Вы внедряете обмен данными между двумя типовыми или основанными на типовых БД и вам необходим инструмент, чтобы сопоставить между собой справочники этих конфигураций? Вы хотите навести порядок в обмене данными, потому что вам надоело вылавливать дублирующиеся объекты? Вам очень хочется перепоручить сопоставление объектов обменивающихся баз пользователям, но нет подходящего и понятного пользователям интерфейса? Тогда вам нужна именно эта обработка!

4 стартмани

11.11.2015    29397    221    catsam    8       

Exec - Выполнение кода, консоль запросов и не только! 70

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Консоль запросов

Незаменимый инструмент администратора БД и программиста: Выполняйте произвольный код из режима 1С Предприятие; сохраняйте/загружайте часто используемые скрипты; выполняйте запросы с замером производительности запроса в целом и каждой из временных таблиц в частности, а также с просмотром содержимого временных таблиц; произвольным образом изменяйте любые объекты БД, редактируя даже не вынесенные на формы реквизиты и записывая изменения в режиме "ОбменДанными.Загрузка = Истина"; легко узнавайте ИД объектов БД; выполняйте прямые запросы к SQL с замером производительности и не только!

5 стартмани

10.11.2015    35677    173    catsam    11       

Работа с push сервисами только средствами 1С 8.2 24

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Сервисные утилиты Инструментарий разработчика Универсальные обработки

Обработка для настройки, тестирования и использования с предустановками для 3-х сервисов. Текст модуля для внедрения в конфигурацию или другие обработки. Уведомления на телефон, компьютер, браузер.

1 стартмани

18.08.2015    23621    45    anig99    1