Вызов конструктора запроса для кода на встроенном языке 1С, заданного в пользовательском режиме

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

Разработка - Практика программирования

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

Конструктор запроса легко вызывается для строки, содержащей готовый текст запроса. Так работают все консоли запросов. Но задача становится нетривиальной, если у нас есть код не на языке запросов, а на встроенном языке 1С:Предприятия. В нём запрос является лишь частью текста и он представлен не в чистом виде, а в виде строковой константы с переносами строк, двойными кавычками и прочими "неудобствами".

Необходимость задавать исполняемый код в пользовательском режиме появляется не так уж и редко. Для этого создано множество инструментов - универсальные регламентные задания,  консоли кода,  динамические подписки на события и т.д. С помощью этих инструментов можно создавать код, содержащий запросы, и хорошо бы иметь возможность вызывать для этих запросов конструктор. Более того, во всем известных "Инструментах разработчика" уже есть решение этой задачи для обычных форм с применением библиотеки регулярных выражений (внешней библиотеки, подключаемой как COM-объект).


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

 

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


Сначала опишем алгоритм на человеческом языке, а затем перейдем к реализации алгоритма на языке платформы.
Нам нужно:

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

2) Извлечь текст до курсора и после курсора.

3) В тексте, расположенном до курсора, найти открывающую запрос кавычку. В тексте расположенном после курсора найти первую несдвоенную кавычку от начала строки, это будет закрывающая кавычка.

4) Отделить текст запроса, расположенный между открывающей и закрывающей кавычками. А также выделить код, расположенный до начала запроса и после него.

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

6) После закрытия конструктора сделать обратное преобразование полученного из него кода запроса. Добавить отступы и привести его к виду, который будет нормально воспринят интерпретатором языка 1С.

7) Соединить новый код запроса с текстом, который раньше располагался до и после текста запроса. Загрузить полученный код в поле формы и восстановить позицию курсора.

 


 

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


1) Упростим процесс кодирования введением дополнительных переменных и определим текущую позицию курсора. Позицию курсора запишем в переменные НачалоСтроки и НачалоКолонки. Значение переменной НачалоСтроки  в ходе алгорима менять не будем. Оно понадобится в конце для восстановления позиции курсора: 

    //БЛОК №1 - ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ

   
ЭлементПоля = ЭлементыФормы.Поле;
   
Кавычка = """";
   
ДвойнаяКавычка = """""";
   
ЗаменаДляДвойнойКавычки = Строка(Новый УникальныйИдентификатор);
   
КоличествоСтрок = ЭлементПоля.КоличествоСтрок();

   
НачалоСтроки = 0;
   
НачалоКолонки = 0;
   
КонецСтроки = 0;
   
КонецКолонки = 0;

   
ЭлементПоля.ПолучитьГраницыВыделения(НачалоСтроки, НачалоКолонки, КонецСтроки, КонецКолонки);
   
ЭлементПоля.УстановитьГраницыВыделения(НачалоСтроки, НачалоКолонки, Началостроки, НачалоКолонки);

 

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

    //БЛОК №2 - ОПРЕДЕЛЕНИЕ ТЕКСТА ДО КУРСОРА И ПОСЛЕ КУРСОРА
   
ЭлементПоля.УстановитьГраницыВыделения(1, 1, Началостроки, НачалоКолонки);
   
ТекстДоКурсора = ЭлементПоля.ВыделенныйТекст;
   
ЭлементПоля.УстановитьГраницыВыделения(НачалоСтроки, НачалоКолонки, КоличествоСтрок+1, 1);
   
ТекстПослеКурсора = ЭлементПоля.ВыделенныйТекст;

   
ЭлементПоля.УстановитьГраницыВыделения(НачалоСтроки, НачалоКолонки, Началостроки, НачалоКолонки);

   
//гарантируем отсутствие в тексте двойных кавычек
   
ТекстДоКурсора = СтрЗаменить(ТекстДоКурсора, ДвойнаяКавычка, ЗаменаДляДвойнойКавычки);
   
//в тексте после курсора необходимо оставить первую кавычку, если сразу после нее идет двойная
    //случай подряд идущих кавычек в количестве более 5-ти штук обрабатывать не будем
   
ТекстПослеКурсора СтрЗаменить(Лев(ТекстПослеКурсора, 1) +
         
СтрЗаменить(Сред(ТекстПослеКурсора, 2), ДвойнаяКавычка, ЗаменаДляДвойнойКавычки), ДвойнаяКавычка, ЗаменаДляДвойнойКавычки) ;

 

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

    //БЛОК №3 - ИЩЕМ ПОЗИЦИЮ ОТКРВАЮЩЕЙ И ЗАКРЫВАЮЩЕЙ КАВЫЧКИ ДЛЯ СТРОКИ ЗАПРОСА

   
ПозицияОткрывающейКавычки = 0;
   
ПозицияЗакрывающейКавычки = 0;

   
ВСтроке = Ложь;
   
КавычкиЕсть = Ложь;
   
ПозицияПредыдущейКавычки = 0;
   
ПоизцияПоследнейКавычки = 0;

   
Позиция = 1;
   
ДлинаТекстаДоКурсора = СтрДлина(ТекстДоКурсора);

   
//ИЩЕМ ОТКРЫВАЮЩУЮ КАВЫЧКУ
   
Пока Позиция <= ДлинаТекстаДоКурсора Цикл

       
ТекущийСимвол = Сред(ТекстДоКурсора, Позиция, 1);

       
ПредыдущийСимвол = " ";
        Если
Позиция > 1 Тогда
           
ПредыдущийСимвол = Сред(ТекстДоКурсора, Позиция-1, 1);
        КонецЕсли;

        Если
ТекущийСимвол = Кавычка Тогда
           
ВСтроке = НЕ ВСтроке;
           
ПозицияПредыдущейКавычки = ПоизцияПоследнейКавычки;
           
ПоизцияПоследнейКавычки = Позиция;
           
КавычкиЕсть = Истина;
        КонецЕсли;

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

            Продолжить;
        КонецЕсли;
       
//Обработка комментария - конец

       
Позиция = Позиция + 1;
    КонецЦикла;

   
//ОСОБЫМ ОБРАЗОМ ОБРАБОТАЕМ СЛУЧАЙ НАХОЖДЕНИЯ КУРСОРА В
    //ДВОЙНОЙ КАВЫЧКЕ ВНУТРИ СТРОКИ ЗАПРОСА
   
Если НЕ ВСтроке И КавычкиЕсть И СтрДлина(ТекстПослеКурсора) > 0 Тогда
        Если 
Сред(ТекстДоКурсора, ДлинаТекстаДоКурсора, 1) = Кавычка И Лев(ТекстПослеКурсора,1) = Кавычка Тогда
           
ВСтроке = Истина;
           
ПоизцияПоследнейКавычки = ПозицияПредыдущейКавычки;
           
ТекстДоКурсора = Лев(ТекстДоКурсора, ДлинаТекстаДоКурсора-1);
           
ТекстПослеКурсора = ЗаменаДляДвойнойКавычки + Сред(ТекстПослеКурсора, 2);
        КонецЕсли;
    КонецЕсли;

   
//ЕСЛИ НАШИЛИ ОТКРЫВАЮЩУЮ КАВЫЧКУ, ТО ИЩЕМ ЗАКРЫВАЮЩУЮ
   
Если ВСтроке Тогда
       
ПозицияОткрывающейКавычки = ПоизцияПоследнейКавычки;
       
ПозицияЗакрывающейКавычки = Найти(ТекстПослеКурсора, Кавычка);
    КонецЕсли;

 

4) Теперь можно выделить код между кавычками (запрос) и код расположенный до и после запроса. Чтобы текст запроса был воспринят конструктором его необходимо преобразовать, убрав из начала каждой его строки вертикальную черту:

    //БЛОК №4 - ОПРЕДЕЛЯЕМ ТЕКСТ ДО ЗАПРОСА, ТЕКСТ ЗАПРОСА И ТЕКСТ ПОСЛЕ ЗАПРОСА
    //ПОСЛЕ ЧЕГО ВОЗРАЩАЕМ ДВОЙНЫЕ КАВЫЧКИ В КОД, НЕ ЯВЛЯЮЩИЙСЯ ЧАСТЬЮ ЗАПРОСА

   
Конструктор = Новый("КонструкторЗапроса");
   
ГраницыЗапросаНайдены = ПозицияОткрывающейКавычки <> 0 И ПозицияЗакрывающейКавычки <> 0;

    Если НЕ
ГраницыЗапросаНайдены Тогда
       
Сообщение = "ЗАПРОС НЕ ОБНАРУЖЕН, БУДЕТ СОЗДАН НОВЫЙ ЗАПРОС";
       
ПоказатьОповещениеПользователя(Сообщение, , Сообщение);
       
ТекстДоНачалаЗапроса = ТекстДоКурсора + Кавычка;
       
ТекстПослеКонцаЗапроса = Кавычка + ТекстПослеКурсора ;
    Иначе

       
ТекстДоНачалаЗапроса = Лев(ТекстДоКурсора, ПозицияОткрывающейКавычки);
       
ТекстПослеКонцаЗапроса = Сред(ТекстПослеКурсора, ПозицияЗакрывающейКавычки);

       
ТекстЗапросаССимвовамиВертикальнойЧерты = Сред(ТекстДоКурсора, ПозицияОткрывающейКавычки + 1)

                + Лев(ТекстПослеКурсора, ПозицияЗакрывающейКавычки -1);

        //для конструктора запроса вместо двойной кавычки будем подставлять одинарную
       
ТекстЗапросаССимвовамиВертикальнойЧерты =

                СтрЗаменить(ТекстЗапросаССимвовамиВертикальнойЧерты, ЗаменаДляДвойнойКавычки, Кавычка);

       
КоличествоСтрокВТексте = СтрЧислоСтрок(ТекстЗапросаССимвовамиВертикальнойЧерты);
       
ТекстЗапроса = "";
        Для
К = 1 To КоличествоСтрокВТексте Цикл
           
СтрокаИзТекстаЗапроса = СокрЛП(СтрПолучитьСтроку(ТекстЗапросаССимвовамиВертикальнойЧерты, К));
            Если
Лев(СтрокаИзТекстаЗапроса, 1) = "|" Тогда
               
//для конструктора запроса убираем вертикальную черту в начале строки
               
СтрокаИзТекстаЗапроса = Сред(СтрокаИзТекстаЗапроса, 2);
            КонецЕсли;

           
ТекстЗапроса = ТекстЗапроса + СтрокаИзТекстаЗапроса + Символы.LF;
        КонецЦикла;

       
Конструктор.Текст = ТекстЗапроса;
    КонецЕсли;

   
//возвращаем двойные кавычки
   
ТекстДоНачалаЗапроса = СтрЗаменить(ТекстДоНачалаЗапроса, ЗаменаДляДвойнойКавычки, ДвойнаяКавычка);
   
ТекстПослеКонцаЗапроса = СтрЗаменить(ТекстПослеКонцаЗапроса, ЗаменаДляДвойнойКавычки, ДвойнаяКавычка);

 

5) Передаем текст запроса в конструктор и, если конструктор отработал успешно, вычисляем отступ, который будем добавлять к строкам запроса. Отступ необходимо добавлять, чтобы код запроса вставился на форму красиво, а не безусловно лепился к левому краю текстового поля:

    //БЛОК №5 - ОТКРЫВАЕМ КОНСТРУКТОР ЗАПРОСА С ПОЛУЧЕННОЙ СТРОКОЙ ЗАПРОСА И В СЛУЧАЕ УСПЕШНОГО
    //РЕЗУЛЬТАТА ВЫЧИСЛЯЕМ ОТСТУП, КОТОРЫЙ БУДЕМ ДОБАВЛЯТЬ К КАЖДОЙ СТРОКЕ ЗАПРОСА

   
Если НЕ Конструктор.ОткрытьМодально() Тогда
        Возврат;
    КонецЕсли;

   
ТекстЗапроса = Конструктор.Текст;
    Если
ПустаяСтрока(ТекстЗапроса) Тогда
        Возврат;
    КонецЕсли;


   
ДлинаТекстаДоНачалаЗапроса = СтрДлина(ТекстДоНачалаЗапроса);
   
Позиция = ДлинаТекстаДоНачалаЗапроса-1;

    Пока
Позиция >= 1 Цикл
        Если
Сред(ТекстДоНачалаЗапроса, Позиция, 1) = Символы.LF Тогда
            Прервать;
        КонецЕсли;
       
Позиция = Позиция - 1;
    КонецЦикла;

   
СтрокаОтступа = Сред(ТекстДоНачалаЗапроса, Позиция+1, ДлинаТекстаДоНачалаЗапроса - Позиция -1);
   
ДлинаСтрокиОтступа = СтрДлина(СтрокаОтступа);
   
СтрокаОтступаИзПробеловИТабуляций = "";


    Для
К = 1 To ДлинаСтрокиОтступа Цикл
        Если
Сред(СтрокаОтступа, К, 1) = Символы.Tab Тогда
           
СтрокаОтступаИзПробеловИТабуляций = СтрокаОтступаИзПробеловИТабуляций + Символы.Tab;
        Иначе
           
СтрокаОтступаИзПробеловИТабуляций = СтрокаОтступаИзПробеловИТабуляций + " ";
        КонецЕсли;
    КонецЦикла;

 

6) Теперь у нас есть текст запроса на языке запросов. Нужно преобразовать его в строку на встроенном языке 1С. Добавляем символы вертикальной черты и отступы, преобразуем одинарные кавычки в двойные:

    //БЛОК №6 - ОБРАБАТЫВАЕМ РЕЗУЛЬТАТ, ЗАМЕНЯЕМ ОДИНАРНЫЕ КАВЫЧКИ НА ДВОЙНЫЕ,
    //ДОБАВЛЯЕМ ОТСТУП И ВЕРТИКАЛЬНУЮ ЧЕРТУ СТРОКАМ ЗАПРОСА НАЧИНАЯ СО ВТОРОЙ

   
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Кавычка, ДвойнаяКавычка);
   
КоличествоСтрокВТексте = СтрЧислоСтрок(ТекстЗапроса);
   
ТекстЗапросаССимвовамиВертикальнойЧерты = СтрПолучитьСтроку(ТекстЗапроса, 1);

    Для
К = 2 To КоличествоСтрокВТексте Цикл
       
ТекстЗапросаССимвовамиВертикальнойЧерты = ТекстЗапросаССимвовамиВертикальнойЧерты +

                   Символы.LF + СтрокаОтступаИзПробеловИТабуляций + "|" + СтрПолучитьСтроку(ТекстЗапроса, К);
    КонецЦикла;


7) Задача фактически решена. Склеиваем код, располагавшийся до запроса, новую строку запроса и код, располагавшийся после запроса. Загружаем получившуюся строку в поле формы и восстанавливаем позицию курсора:

    //ЗАГРУЖАЕМ НОВЫЙ КОД В ТЕКСТОВОЕ ПОЛЕ И УСТАНАВЛИВАЕМ КУРСОР НА ПРЕЖНЮЮ ПОЗИЦИЮ
   
ИтоговыйКод = ТекстДоНачалаЗапроса + ТекстЗапросаССимвовамиВертикальнойЧерты + ТекстПослеКонцаЗапроса;
   
ЭлементПоля.УстановитьТекст(ИтоговыйКод);

   
НоваяКолонка = СтрДлина(СтрокаОтступаИзПробеловИТабуляций)+2;
   
ЭлементПоля.УстановитьГраницыВыделения(НачалоСтроки, НоваяКолонка, НачалоСтроки, НоваяКолонка);
   
ЭтаФорма.ТекущийЭлемент = ЭлементПоля;

 


 

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

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

 

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

 

  

 

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

Наименование Файл Версия Размер
ВызовКонструктораЗапросовВКонсолиКода.epf

.epf 15,34Kb
25.12.13
59
.epf 1 15,34Kb 59 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Dzenn 433 26.12.13 07:34 Сейчас в теме
я ничего не понял из написанного
3. Vladimir Litvinenko 26.12.13 08:13 Сейчас в теме
(1) Публикация предназначена для тех, кто создаёт или планирует создавать инструменты, позволяющие управлять исполняемым кодом 1С прямо из пользовательского режима. Если вам интересно, то пройдите по приведенным в начале публикации ссылкам. Консоль кода - простейший пример инструмента, где это может пригодиться.

А писалось всё это дело для "динамических подписок", которые позволяют не лезть каждый раз в конфигуратор и выгонять пользователей из базы, чтобы добавить/изменить подписку на событие, а задать нужный код из режима 1С:Предприятия.

Это особенно полезно, когда нужно срочно добавить какой-нибудь контроль/запрет при создании/изменении объектов базы. Конструктор запросов позволяет быстрее вносить изменения в такой код.

(2) Учту.
AnKonAlm; +1 Ответить
2. Dzenn 433 26.12.13 07:36 Сейчас в теме
хотелось бы, чтобы гифки шли помедленнее, либо сопроводить их набором жпегов
AnKonAlm; +1 Ответить
4. OneS 5 26.12.13 11:24 Сейчас в теме
Вот какое дело... Человеку не знающему, в контексте поставленной задачи, конструктор не поможет. А кто знает, тому конструктор как то уже и не очень нужен. Консоль запросов тому подтверждение.

Опять же, нужно ли подвергать себя риску обрушить базу ваяя на лету в пользовательском режиме нечто настолько сложное, что без конструктора не обойтись?

Однако автор старался, так что респект однозначно.
AnKonAlm; +1 Ответить
5. Vladimir Litvinenko 26.12.13 12:23 Сейчас в теме
(4) Первую часть вопроса не очень понял. И консоль запросов и консоль кода все активно используют. Более того, есть разработки, где большая часть нового кода задается сначала в пользовательском режиме. Например Мета-конфигуратор в "СКАТ-Профессионал".

В пользовательском режиме можно не "ваять на лету" новые запросы, а быстро изменять уже существующие.

Представьте, что Вам поставили задачу запретить изменение документов, удовлетворяющих сложному условию, которое оптимальнее проверять через запрос. Что вы сделаете? Добавите в конфигураторе подписку на событие "ПередЗаписью" и выгоните всех пользователей из базы? А если через некоторое время это условие поменяется, ведь бизнес у нас переменчив?

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

Посмотрите вот этот скриншот:
http://infostart.ru/upload/iblock/b8e/Pic5.PNG
6. wowik 822 26.12.13 13:17 Сейчас в теме
я так понял это аналог обработок "Выполнить" из ИР.
8. Vladimir Litvinenko 26.12.13 14:23 Сейчас в теме
(6) wowik,
Да, ориентировался на ИР и сначала хотел использовать именно функции ИР для вызова конструктора. Но оказалось, что они используют внешние библиотеки для разбора строк, чего хотелось бы избежать. Еще не получилось связать ИР-овский конструктор и управляемую форму. Может быть плохо старался и еще получится это сделать :) Надеюсь что смогу использовать ИР для вызова контекстной подсказки, там тоже внешние библиотеки задействованы, но без этого уже не обойтись.

(7) Yashazz,
Я рад, что где-то в недрах Ваших обработок существует подобный алгоритм. Осталось подождать пока Вселенский Коллективный Разум объединит мозги всех 1С-ников в единое целое. Тогда мы перестанем делиться алгоритмами и будем создавать идеальные разработки. Кстати не нашел подобного в Ваших публикациях. Вот это не в счет. Там просто строка вставляется, а открыть запрос в конструкторе нельзя.
9. Yashazz 3582 26.12.13 15:55 Сейчас в теме
(8) Не, там нету, я в первую очередь о ней вспомнил и проверил, нифига. В других каких-то было, сейчас не вспомню.

Дело в другом - это ведь фрагмент, кусок, не очень понимаю смысл так его разжёвывать. Впрочем, это лично моё недоумение.
А что до "некрасиво" - после того, как я видел подобные решения на регулярных выражениях, всё остальное меркнет...
10. Vladimir Litvinenko 26.12.13 16:38 Сейчас в теме
(9) Yashazz,
Разжевывать нужно чтобы не только "суперпрофессионалы" всё поняли. Жаль, что многие программисты забывают, что они не всегда были гуру, а когда-то тоже учились.

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



Что до RegExp, то это внешняя по отношению к 1С библиотека. Конечно это своего рода стандарт, но "стандарт" и 1С - вещи слабо совместимые. RegExp используется в 1С через COM-интерфейс, который например не поддерживается в Linux, для которого с недавнего времени тоже есть толстый клиент. Если писать простое универсальное решение для 1С, то лучше чтобы оно зависело только от 1С.
Бывалый77; DigSl; +2 Ответить
15. Yashazz 3582 27.12.13 16:19 Сейчас в теме
(10) Учить новичков - это не на ИС, а на других сайтах, флаг в руки. Здесь - сайт профессионалов.
(12) Ага, я про это и говорил. Безо всяких ВК, сам пробовал, нормально работает.
16. Vladimir Litvinenko 28.12.13 04:10 Сейчас в теме
(15) Субъективное суждение. Потому что одни из самых рейтинговых публикаций на ИС - это разного рода обучалки, переработанные пересказы документации и обработки, направленные на самую широкую аудиторию. Значит есть люди, для которых это полезно и нет ничего плохого в том, чтобы с ними этим делиться.

И мне тоже бывает интересно увидеть новую интерпретацию уже знакомой информации. Не думаю что имеет смысл это обсуждать ибо ведет к холивару.
17. Vladimir Litvinenko 28.12.13 04:14 Сейчас в теме
(15) Это все таки ВК:
В поставку входит два файла:
•rex32.dll - для работы в 32-битных клиентах и сервере
•rex64.dll - для работы в 64-битном сервере
Основные планы на ближайшее будещее - сделать linux-версию.
18. tormozit 6050 28.12.13 07:57 Сейчас в теме
(17) Нет. Это "полуВК" и "полуРасширениеОбъектнойМодели". Когда попробуешь, поймешь.
19. Sitex 30.12.13 09:13 Сейчас в теме
(10) в целом неплохо. Особенно когда в рутине дел это может позабыться.

(15) Yashazz, По вашему суждению, можно при регистрации сделать на ИС сдачу теории...т.п. Чтобы лишних как статье так и комментариев не было.
Прикрепленные файлы:
20. Yashazz 3582 31.12.13 18:36 Сейчас в теме
(19) Это не моё суждение, это определение сайта как такового, посмотрите сами. Впрочем, увы, ИС действительно медленно, но верно превращается во второй DevTrain. :(
21. Vladimir Litvinenko 01.01.14 08:33 Сейчас в теме
(20)
ИС действительно медленно, но верно превращается во второй DevTrain

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


Дальнейшее обсуждение "элементарщины", "баянов" и причитания о судьбе Инфостарта предлагаю перенести в ЭТУ или ЭТУ публикации за Вашим авторством. Они подходят для этого гораздо больше. Признак непрофессионализма - это тратить время на поиск соринки в чужом глазу, вместо того, чтобы улучшать качество собственных работ.
МимохожийОднако; +1 Ответить
24. Yashazz 3582 01.01.14 22:54 Сейчас в теме
(21) Вы, вероятно, не видели вот этого: http://infostart.ru/about/, где в первой же строке сказано "Профессиональное сообщество". Ознакомьтесь, потом будете спорить.Это и вообще всех касается, кто считает ИС "лягушатником для начинающих". И про специалистов, оказывающих профессиональные услуги, тоже, считаю, доступно написано.

Что до меня, я всегда честно оговариваю, что является баяном и что нет, поэтому вы можете переносить разговор куда угодно и о чём угодно, но реплика про соринку и качество работ в любом случае мимо, уважаемый. Признак непрофессионализма в данном случае - явный переход на личности, попытка флейма и переваливания с больной головы на здоровую (сиречь попытки переноса в темы, не имеющие отношения к). Советую быть вежливее и терпимее, и не путать критику публикации с критикой автора. Учитесь уважать окружающих.
Засим участие прекращаю, ибо бессмысленно тратить время не привык.
7. Yashazz 3582 26.12.13 13:32 Сейчас в теме
Баян, да ещё и некрасиво сделанный. Я решил такую задачу давным-давно и её решений видел несметно, ибо элементарщина. Воистину, скоро дождёмся мегапопулярных публикаций на тему "как выбрать элементы из справочника", но зато красивых, с гифками и попунктным разжёвыванием каждой строки.

25. Vladimir Litvinenko 02.01.14 12:28 Сейчас в теме
Да я и так старался избежать перехода на личности. Но сообщения (7), (15) и (20) написанные в резком обвинительном тоне не оставили выбора. Уж извините.
26. Yashazz 3582 05.01.14 01:41 Сейчас в теме
(25) Ладно, проехали. С праздниками всех, кстати. Просто у меня пунктик - очень не люблю баянить сам, иногда и других начинаю пинать, увлёкшись. Прошу пардону.
11. MrFlanker 178 26.12.13 19:11 Сейчас в теме
Гифики помедленей пожалуйста, ну непонятно что ж такое происходит.
12. tormozit 6050 26.12.13 22:59 Сейчас в теме
Кроссплатформенную замену VBScript.RegExp обещал Орефков, но что то тишина у него уже пол года. Видимо крепко засел над снегопатом для 8.3. Кстати в ИР уже давно есть поддержка его компоненты, но отключено внутри, т.к. она пока в некоторых случаях аварийно завершает приложение. Качественный багрепорт ему я еще весной отправил.
Vladimir Litvinenko; +1 Ответить
13. Vladimir Litvinenko 27.12.13 02:16 Сейчас в теме
(12) Интересно, иметь такой инструмент было бы хорошо. Будем ждать.
А реализация планировалась средствами 1С или через какую-то библиотеку?
14. tormozit 6050 27.12.13 08:17 Сейчас в теме
22. МимохожийОднако 130 01.01.14 09:19 Сейчас в теме
23. help1Ckr 01.01.14 15:02 Сейчас в теме
Спасибо за статью, особенно за то что выложили здесь подробное описание алгоритма.
27. servs 69 08.01.14 13:43 Сейчас в теме
Обращаю внимание критиков: способность писать код на языке 1С, не прибегая при этом к dll - это критерий, по которому можно отличить новичков (или лентяев :-) ) от грамотных программистов 1С.

Не использование dll в конкретной задаче - это изюминка статьи,
+ алгоритм также полезен не менее.

Многим профессионалам есть чему поучиться, ящетаю)))

Спасибо за статью! Ставлю жирный плюс!

П.С.: Есть статьи на ИС, которые иногда вызывают у меня такую же реакцию как у критиков выше (например, обработка запуска амми из 1С). Эта статья заслуживает на похвалу. Нужно уметь понять ее ценность, что не каждому дано.
28. Alex1Cnic 129 21.01.14 12:45 Сейчас в теме
А что, интересная статья. Люблю, когда все по-полочкам разложено...
29. Ivon 656 16.07.14 17:23 Сейчас в теме
Вообще молодец. Плюсанул.
30. CaSH_2004 362 21.09.16 21:29 Сейчас в теме
Спасибо, полезная штука, сам такой давно написал, но были огрехи и не хотелось вникать, а тут скопировал, вставил и все взлетело.
31. Terve!R 31.10.16 12:55 Сейчас в теме
Ну вот, думал скачать и сразу использовать, но как всегда пришлось допилить)

Автор, открытие конструктора в тонком клиенте возможно, начиная с версии платформы 8.3.5! А здесь проверка на толстый клиент и привет!
Во-вторых, пришлось переделывать на открытие конструктора через Показать() и оповещение, модальный вызов в тонком клиенте не работает.
Оставьте свое сообщение

См. также

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

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

1 стартмани

03.07.2019    21174    5    m-rv    88    

Интерактивная справка по объектам 1С (автономное расширение)

Практика программирования Работа с интерфейсом v8 ERP2 Абонемент ($m)

База знаний, подключаемая к объектам основной базы. Ведётся интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020    6601    33    sapervodichka    33    

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

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

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

3 стартмани

04.09.2019    25540    22    Stepa86    46    

Алгоритмы поиска пути в графе

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Реализуем алгоритмы поиска пути в графе на платформе 1С 8.3, такие как алгоритм А*, поиск в ширину, жадный поиск, алгоритм Дейкстры и вконце волновой.

1 стартмани

09.07.2019    17949    12    RonX01    10    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    30878    86    m-rv    57    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    22120    13    RocKeR_13    16    

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

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

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

1 стартмани

27.08.2018    38713    56    dsdred    17    

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

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

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

5 стартмани

09.08.2018    28632    26    informa1555    26    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    28701    19    mvxyz    17    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    49031    17    kalyaka    16    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    31686    11    SITR-utyos    13    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

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

1 стартмани

06.12.2017    27416    54    kwazi    6    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.12.2015    28225    71    vasvl123    9    

Паузы при исполнении кода (Sleep для 1С)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

28.11.2017    47046    12    swimdog    42    

Макет в СКД - пример всех возможных типовых вариантов

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

Макет СКД: наглядное представление того, что, как и куда выводится при типовых настройках.

1 стартмани

09.11.2017    22257    76    freelancer    4    

Telegram-боты

Практика программирования v8 Абонемент ($m)

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

1 стартмани

01.09.2017    33238    132    PLAstic    59    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

14.08.2016    48578    36    Demanoidos    60    

Умный дом на 1С + ардуино

Практика программирования v8 Абонемент ($m)

Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.

1 стартмани

07.08.2017    23165    21    sasha777666    63    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.

1 стартмани

30.05.2017    132516    13    signum2009    48    

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

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

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

1 стартмани

13.03.2017    31925    113    romasna    49    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    52159    35    ildarovich    41    

Распознавание текста с помощью нейросетей Google Cloud Vision и 1С

Практика программирования v8 1cv8.cf Абонемент ($m)

Возможности Google Cloud Vision в распознавании текста.

1 стартмани

08.02.2017    30072    127    kiv1c    18    

Графическая схема. Управление при помощи XDTO.

Практика программирования v8 Абонемент ($m)

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

2 стартмани

16.01.2017    22782    105    Alxby    23    

Простой редактор плана помещения JavaScript

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

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

1 стартмани

23.11.2016    21459    96    igel9780    22    

Хранение файлов в томах на диске (для УПП 1.3) Промо

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    58212    10    wowik    32    

Работа с двоичными данными на примере чтения файлов изображений. Новые возможности 8.3.9

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

В статье приводятся новые функции по работе с двоичными данными, появившимися в версии платформы 8.3.9 , на примере анализа формата и размера изображений. А также пример отправки изображения через API ВКонтакте с помощью новых объектов (без использования ОбъединитьФайлы())

1 стартмани

14.11.2016    26593    16    Anton64    22    

Загрузка файлов на сервер с прогрессом и докачкой

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

04.10.2016    13587    53    mrstomak    21    

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

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

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

1 стартмани

03.10.2016    37057    95    json    25    

HTTP-сервис: отчеты [Расширение]

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

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    27245    137    Stepa86    15    

Недокументированное использование стандартных форм Upd.

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

26.07.2016    28681    77    ZhokhovM    60    

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

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

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

1 стартмани

18.05.2016    62606    184    rozer    65    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

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

1 стартмани

26.04.2016    59868    19    arakelyan    19    

Еще один способ расчета остатков на каждый день в запросе

Математика и алгоритмы Практика программирования v8 Абонемент ($m)

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

1 стартмани

24.04.2016    34990    49    ildarovich    23    

Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".

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

Все не раз видели, как в типовых конфигурациях, построенных на основе БСП (Библиотека стандартных подсистем), печатные формы, построенные на основе Табличного документа, выводятся в специальную форму "ПечатьДокументов". Эта форма входит в состав подсистемы "Печать" из БСП. При разработке своих печатных форм, иногда необходимо запросить у пользователя дополнительные данные необходимые для печати. Тут встает вопрос, как в этом случае вывести печатную форму в форму "Печать документа". В этой статье я рассмотрю, как реализовать вывод печатной формы в упомянутую форму из подсистемы "Печать", в случае если мы хотим перед выводом печатной формы запросить у пользователя дополнительные данные. Здесь будут рассмотрены два случая: когда реализуется печатная форма с использованием подсистемы "Дополнительные отчеты и обработки" и когда печатная форма добавляется в конфигурацию в режиме конфигуратора, т.е. вносятся изменения в типовую конфигурацию.

1 стартмани

29.03.2016    91543    181    lopatin    14    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    82169    160    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

1 стартмани

03.03.2016    18577    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

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

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

1 стартмани

17.02.2016    50654    53    yuraos    17    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

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

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

1 стартмани

17.02.2016    56148    179    balanton    23    

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

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

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

1 стартмани

16.02.2016    23644    8    Tatitutu    5    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    37399    20    milkers    4    

Передача больших пакетов через веб-сервисы

Практика программирования Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

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

1 стартмани

06.12.2015    57603    48    YPermitin    19