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

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

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

Уничтожить Временные таблицы запрос текст схемазапроса

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

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

Механизм реализован при помощи относительно нового объекта "СхемаЗапроса". Поэтому работать будет только под платформой начиная с 8.3.5.1068.

Пока что во всех ситуациях ошибок не было, но если появятся, то прошу оставлять примеры в комментариях.

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

Функция ТекстЗапросаСУничтожениямиВременныхТаблиц(ТекстЗапроса) Экспорт

    СхемаЗапроса    = Новый СхемаЗапроса;
    СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);

    ТаблицаЗапроса    = Новый ТаблицаЗначений;
    ТаблицаЗапроса.Колонки.Добавить("ИндексПакетаЗапроса", Новый ОписаниеТипов("Число"));
    ТаблицаЗапроса.Колонки.Добавить("ИспользуемаяВременнаяТаблица", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(150)));

    Для Каждого ПакетЗапроса Из СхемаЗапроса.ПакетЗапросов Цикл

        #Если Клиент Тогда
            Состояние("Обработка пакета " + ПакетЗапроса.Представление());
        #КонецЕсли

        ОбработатьПакет(СхемаЗапроса, ПакетЗапроса, ТаблицаЗапроса);

    КонецЦикла;

    ТаблицаЗапроса.Свернуть("ИндексПакетаЗапроса,ИспользуемаяВременнаяТаблица");

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ТаблицаЗапроса.ИндексПакетаЗапроса,
    |    ТаблицаЗапроса.ИспользуемаяВременнаяТаблица
    |ПОМЕСТИТЬ ВТ_ТаблицаЗапроса
    |ИЗ
    |    &ТаблицаЗапроса КАК ТаблицаЗапроса
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ВТ_ТаблицаЗапроса.ИспользуемаяВременнаяТаблица КАК ИмяТаблицы,
    |    МАКСИМУМ(ВТ_ТаблицаЗапроса.ИндексПакетаЗапроса) + 1 КАК ИндексДляПакетаУдаления
    |ИЗ
    |    ВТ_ТаблицаЗапроса КАК ВТ_ТаблицаЗапроса
    |
    |СГРУППИРОВАТЬ ПО
    |    ВТ_ТаблицаЗапроса.ИспользуемаяВременнаяТаблица
    |
    |УПОРЯДОЧИТЬ ПО
    |    ИндексДляПакетаУдаления УБЫВ";
    Запрос.УстановитьПараметр("ТаблицаЗапроса", ТаблицаЗапроса);
    ТаблицаПоследнегоИспользования    = Запрос.Выполнить().Выгрузить();

    СхемаНовогоЗапроса    = Новый СхемаЗапроса;
    СхемаНовогоЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);

    Для Каждого стрТаблицаПоследнегоИспользования Из ТаблицаПоследнегоИспользования Цикл

        ПакетУничтожения    = СхемаНовогоЗапроса.ПакетЗапросов.Добавить(Тип("ЗапросУничтоженияТаблицыСхемыЗапроса"));
        ПакетУничтожения.ИмяТаблицы = стрТаблицаПоследнегоИспользования.ИмяТаблицы;

        СтарыйИндекс    = СхемаНовогоЗапроса.ПакетЗапросов.Индекс(ПакетУничтожения);
        НовыйИндекс     = стрТаблицаПоследнегоИспользования.ИндексДляПакетаУдаления;

        СхемаНовогоЗапроса.ПакетЗапросов.Сдвинуть(СтарыйИндекс, НовыйИндекс);

    КонецЦикла;

    Возврат СхемаНовогоЗапроса.ПолучитьТекстЗапроса();

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

Процедура ОбработатьПакет(СхемаЗапроса, ПакетЗапроса, ТаблицаЗапроса, ИндексПакетаЗапроса = Неопределено)

    Если ТипЗнч(ПакетЗапроса) = Тип("ЗапросВыбораСхемыЗапроса") Тогда

        ИндексПакетаЗапроса             = ?(ИндексПакетаЗапроса = Неопределено, СхемаЗапроса.ПакетЗапросов.Индекс(ПакетЗапроса), ИндексПакетаЗапроса);
        АнализируемыеВременныеТаблицы   = ДоступныеВременныеТаблицыПакета(ПакетЗапроса);
        АнализируемыеВыражения          = Новый Массив;

        Если НЕ ПустаяСтрока(ПакетЗапроса.ТаблицаДляПомещения) Тогда
            ДобавитьСтрокуВТаблицуЗапроса(ТаблицаЗапроса, ПакетЗапроса.ТаблицаДляПомещения, ИндексПакетаЗапроса);
        КонецЕсли;

        Для Каждого Оператор Из ПакетЗапроса.Операторы Цикл

            Для Каждого Источник Из Оператор.Источники Цикл

                //Источник

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

                //Удаляем найденные ВТ из массива искомых, потому что они уже и так используются

                ИспользуемыеВТ    = ТаблицаЗапроса.НайтиСтроки(Новый Структура("ИндексПакетаЗапроса", ИндексПакетаЗапроса));
                Для Каждого ИспользуемаяВТ Из ИспользуемыеВТ Цикл
                    ИндексЭлемента  = АнализируемыеВременныеТаблицы.Найти(ИспользуемаяВТ.ИспользуемаяВременнаяТаблица);
                    Если ИндексЭлемента <> Неопределено Тогда
                        АнализируемыеВременныеТаблицы.Удалить(ИндексЭлемента);
                    КонецЕсли;
                КонецЦикла;

                //Соединения

                Если АнализируемыеВременныеТаблицы.Количество() > 0 Тогда
                    Для Каждого Соединение Из Источник.Соединения Цикл
                        ИспользуемыеВТ  = ИспользуемыеВременныеТаблицыВВыражении(АнализируемыеВременныеТаблицы, Соединение.Условие);
                        Для Каждого ИспользуемаяВТ Из ИспользуемыеВТ Цикл
                            ДобавитьСтрокуВТаблицуЗапроса(ТаблицаЗапроса, ИспользуемаяВТ, ИндексПакетаЗапроса);
                            ИндексЭлемента  = АнализируемыеВременныеТаблицы.Найти(ИспользуемаяВТ);
                            Если ИндексЭлемента <> Неопределено Тогда
                                АнализируемыеВременныеТаблицы.Удалить(ИндексЭлемента);
                            КонецЕсли;
                        КонецЦикла;
                        Если АнализируемыеВременныеТаблицы.Количество() = 0 Тогда
                            Прервать;
                        КонецЕсли;
                    КонецЦикла;
                КонецЕсли;

            КонецЦикла;

            //Отборы

            Если АнализируемыеВременныеТаблицы.Количество() > 0 Тогда
                Для Каждого Отбор Из Оператор.Отбор Цикл
                    ИспользуемыеВТ  = ИспользуемыеВременныеТаблицыВВыражении(АнализируемыеВременныеТаблицы, Отбор);
                    Для Каждого ИспользуемаяВТ Из ИспользуемыеВТ Цикл
                        ДобавитьСтрокуВТаблицуЗапроса(ТаблицаЗапроса, ИспользуемаяВТ, ИндексПакетаЗапроса);
                        ИндексЭлемента  = АнализируемыеВременныеТаблицы.Найти(ИспользуемаяВТ);
                        Если ИндексЭлемента <> Неопределено Тогда
                            АнализируемыеВременныеТаблицы.Удалить(ИндексЭлемента);
                        КонецЕсли;
                    КонецЦикла;
                    Если АнализируемыеВременныеТаблицы.Количество() = 0 Тогда
                        Прервать;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;

        КонецЦикла;

    ИначеЕсли ТипЗнч(ПакетЗапроса) = Тип("ЗапросУничтоженияТаблицыСхемыЗапроса") Тогда

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

    КонецЕсли;

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

Функция ИспользуемыеВременныеТаблицыВВыражении(АнализируемыеВременныеТаблицы, Выражение)

    ИспользуемыеВременныеТаблицыВВыражении  = Новый Массив;

    ТекстВыражения  = ВРег(Строка(Выражение));
    Если Найти(ТекстВыражения, "ВЫБРАТЬ") <> 0
        И Найти(ТекстВыражения, "ИЗ") <> 0
        И Найти(ТекстВыражения, "КАК") <> 0 Тогда


        Для Каждого ВременнаяТаблица Из АнализируемыеВременныеТаблицы Цикл
            КоординатаИспользованияВТ   = Найти(ТекстВыражения, ВРег(ВременнаяТаблица) + " КАК");
            Если КоординатаИспользованияВТ <> 0 Тогда
                Если Сред(ТекстВыражения, КоординатаИспользованияВТ-1, 1) <> "." Тогда    //отсекаем выражения "Таблица.ИмяВТ КАК ИмяВТ" И "Документ.ИмяВТ КАК ИмяВТ"
                    ИспользуемыеВременныеТаблицыВВыражении.Добавить(ВременнаяТаблица);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;

    КонецЕсли;

    Возврат ИспользуемыеВременныеТаблицыВВыражении;

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

Процедура ДобавитьСтрокуВТаблицуЗапроса(ТаблицаЗапроса, ИспользуемаяВременнаяТаблица, ИндексПакетаЗапроса)

    //Добавляем, если такой ещё нет

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

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

Функция ДоступныеВременныеТаблицыПакета(ПакетЗапроса)

    ДоступныеВременныеТаблицыПакета    = Новый Массив;

    ДоступныеТаблицы    = ПакетЗапроса.ДоступныеТаблицы.Найти("Временные таблицы");
    Если ДоступныеТаблицы <> Неопределено Тогда
        Для Каждого ДоступнаяТаблица Из ДоступныеТаблицы.Состав Цикл
            ДоступныеВременныеТаблицыПакета.Добавить(ДоступнаяТаблица.Имя);
        КонецЦикла;
    КонецЕсли;

    Возврат ДоступныеВременныеТаблицыПакета;

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

 

7

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

Наименование Файл Версия Размер
Подстановка уничтожения временных таблиц в текст запроса
.epf 11,68Kb
14.11.15
0
.epf 1 11,68Kb Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Mi4man 163 15.11.15 11:09 Сейчас в теме
А почему именно "в местах последнего использования ВТ", а не в конце текста запроса?
Можете скинуть ссылку на инфу?
(из личного интереса)
2. Synoecium 650 30.11.15 11:33 Сейчас в теме
(1) Mi4man, Предполагаю, чтобы дальше можно было использовать имя данной ВТ еще раз в том же запросе, но ниже по тексту. Возможно это снижает нагрузку на память для хранения временных таблиц в SQL, но точно не знаю так ли это. Пару раз возникала такая необходимость, но такая, легкая необходимость, решаемая вручную.
Оставьте свое сообщение

См. также

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

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

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

1 стартмани

27.09.2019    1133    2    John_d    14       

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

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

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

10 стартмани

29.07.2019    1955    4    osivv    14       

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

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

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

14.06.2019    3450    329    SanchoD    29       

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

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

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

1 стартмани

04.06.2019    3440    4    botokash    19       

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

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

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

1 стартмани

16.05.2019    4264    5    yku    7       

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

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

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

1 стартмани

31.01.2019    25007    242    bonv    105       

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

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

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

1 стартмани

30.01.2019    5865    10    Mogilnikova    2       

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

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

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

1 стартмани

28.01.2019    2260    1    Wezoowy    1       

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

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

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

1 стартмани

23.11.2018    12956    8    ids79    14       

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

Инструменты и обработки Программист Пользователь Архив с данными 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    11053    10    stvorl    0       

Доработка функции ОбщегоНазначения.ЗаменитьСсылки для автоматической чистки или свёртки табличных частей 4

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

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

1 стартмани

12.09.2018    2906    albert.goncharov    0       

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

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

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

1 стартмани

28.06.2018    7983    1    invertex    7       

Поиск свободного штрихкода одним запросом по оригинальной методике 4

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

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

1 стартмани

19.06.2018    3803    BackHand001    4       

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

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

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

1 стартмани

05.02.2018    7754    6    uri1978    27       

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

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

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

1 стартмани

22.01.2018    7521    2    dusha0020    10       

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

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

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

1 стартмани

12.01.2018    7195    2    o.nikolaev    4       

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

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

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

1 стартмани

29.12.2017    21374    21    agent00mouse    0       

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

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

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

1 стартмани

30.10.2017    8373    5    GusevNA    4       

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

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

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

1 стартмани

26.10.2017    7855    7    pbabincev    1       

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

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

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

1 стартмани

08.10.2017    17595    51    json    8       

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

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

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

1 стартмани

28.05.2017    17396    144    Bassgood    10       

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

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

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

26.05.2017    38322    166    DarkAn    86       

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

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

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

1 стартмани

17.05.2017    11674    9    json    2       

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

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

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

1 стартмани

15.05.2017    9100    SvoyakMartin    15       

Web сервис 1С 24

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

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

1 стартмани

21.03.2017    22136    74    hiduk    33       

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

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

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

1 стартмани

12.01.2017    10940    2    SvoyakMartin    17       

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

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

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

1 стартмани

14.11.2016    7342    2    Alex_YAM    4       

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

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

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

1 стартмани

09.11.2016    7784    3    blockcode    5       

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

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

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

1 стартмани

09.11.2016    10650    11    igorkosmos    4       

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

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

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

1 стартмани

23.10.2016    22699    19    json    22       

Автоматическое разбиение строки на подстроки по ширине колонки / ячейки или по количеству символов 12

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

Длинный адрес контрагента или нестандартная фамилия не входит в одну строку, а РазмещениеТекста = Переносить по какой-либо причине не устраивает? Что можно сделать? Вот пара полезных функций для решения данного вопроса с примерами применения.

1 стартмани

21.10.2016    11740    2    SvoyakMartin    3       

Сверка таблиц при разработке через тестирование 14

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

Данная статья про инструмент, который я использую уже продолжительное время, и который, по моему мнению, заслуживает внимания. Также опишу несколько примеров его применения.

1 стартмани

09.10.2016    12109    11    json    1       

(Удобняшка) выполнение произвольного кода в большом количестве баз 4

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

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

1 стартмани

29.09.2016    9183    1    nomadon    4       

Функция преобразования промежутка времени в строку 7

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

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

1 стартмани

23.09.2016    8320    5    vovant    1       

Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы 49

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

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

1 стартмани

13.09.2016    28209    47    pavley2002    11       

Алгоритм по переносу вложенных запросов в пакеты 15

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

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

1 стартмани

26.08.2016    7921    19    ostapchenko.alexandr    20       

7 правил RFC 4180 22

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

Что такое CSV? Описание правил формата RFC4180 и пара функций чтения/записи CSV текста в ТЗ согласно этим рекомендациям (с экранированием и _поддержкой многострочных полей_).

1 стартмани

22.08.2016    12690    15    kuzyara    2       

Запросы &НаКлиенте для Управляемого приложения 6

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

Разбитый между клиентом и сервером код размывает и усложняет логику прикладного решения. Для запроса из базы данных одной записи предлагаю &НаКлиенте использовать универсальную процедуру "ЗаполнитьИзЗапроса".

1 стартмани

08.05.2016    7146    2    sereginseregin    14       

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

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

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

1 стартмани

10.02.2016    10580    5    sereginseregin    1       

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

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

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

3 стартмани

04.02.2016    35596    151    tunesoft    24       

Динамический отбор динамического списка. Управляемая форма 1С: 8.3 11

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

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

1 стартмани

25.01.2016    16868    23    1prog@bk.ru    3       

Расчет интегралов 8

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

Обработка для расчета определенного интеграла методом прямоугольников

1 стартмани

27.11.2015    8280    sojuznik    12       

Механизм контроля заполнения реквизитов 32

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

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

1 стартмани

25.10.2015    10267    28    yur4ik9408    10       

Регистрация запуска обработок во внешнем источнике данных 16

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

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

1 стартмани

23.10.2015    8420    4    vsuh    2       

Прикрепление внешних файлов к документам и справочникам 1С 8.3 (управляемые формы) 30

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

В данной статье мы рассмотрим, как просто и быстро в любую конфигурацию на базе управляемых форм добавить функционал прикрепления внешних файлов к документам и справочникам. Я начну описание с нуля, т.е. с создания пустой конфигурации. Так что даже любой малоопытный разработчик (вроде меня =) ) сможет реализовать данный функционал в своей или уже написанной конфигурации. Если Вам не хочется разбираться с ниже написанной инструкцией, можете скачать файл*.doc с описанием и скриншотами, либо уже саму готовую конфигурацию.

1 стартмани

15.10.2015    62975    119    omenfarsh    27       

Нелинейная многомерная оптимизация - это просто. Часть 3. Имитация отжига 39

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

Метод имитации отжига для поиска оптимального решения. И, как обычно, универсальная функция поиска этого самого решения.

1 стартмани

13.10.2015    14829    22    dusha0020    5       

Асинхронная загрузка данных на Управляемую Форму. Прогресс бар (УФ 8.3). Индикация состояния процесса 78

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

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

1 стартмани

09.10.2015    28757    133    pbazeliuk    6