Шаблон обработки (1.0 / 29.05.12 / CaSH)

03.06.12

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

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

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

Наименование Файл Версия Размер
Шаблон обработки.epf
.epf 13,63Kb
70
.epf 13,63Kb 70 Скачать

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

Также буду благодарен всем кто предложит удобные фишки для реализации в шаблоне (пока на уме только переоткрытие)

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

И вот я надумал составить и выложить некоторый стандарт, который я полагая, может устроить многих при разработке. Причем я постараюсь максимально его "разжевать" и выложить все наработки. Все мы кроме того что разработчики вместе с тем и пользователи, причем чаще всего своих собственных творений. Так что данная стандартизация преследует 2 цели: удобство разработки и удобство пользования. У многит тут отсутствует вообще понятие о разработок, то ли не доросли, то ли переросли, то ли просто не заморачиваються. Однако хотел бы заметить 2 сложно оспариваемые вещи:

1. всем удобно знать что в машинах руль слева и впереди, а дороги правосторонние

2. многие поголовно утверждают что все разработки "Apple" очень удобны и соответственно бешенно популярны (сам я лично не пробовал т.к. не испытывал такой потребности)

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

Итак, начнемс-с-с-с... со структуры, предопределенныых полей в обработках/отчетах очень мало всего 3: Имя, Синоним, Комментарий. Попробуем обойтись ими.

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

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

Чтобы не писать постоянно ее в заголовке окна как и само название обработки можно упростить так:

Процедура ПриОткрытии()
   
Форма.Заголовок = Форма.Метаданные().Синоним + " (" + Форма.Метаданные().Комментарий + ")";
КонецПРоцедуры

Далее я подглядел у alexk-is что очень удобно когда можно прямо из обработки перейти на ее страничку или страничку автора ведь часто забываеш где взял обработку и для чего она. У milkers взял то что прямо из обработки можно за нее плюсануть, т.к. не всегда есть время заходить и плючовать когда много обработок. Вобщем решил я все это сложить в один механизм. И тут есть интересный способ которым я начал пользоваться после того как в модуле формы у меня стала каша из того что множество обработчиков кнопок. И решил я это упростить вот так: предположим у нас есть команданая панель с кучей кнопок, команды у них схожи, а вот процеду рнаплодилось много, тогда мы просто пишем одну процедуру где прописываем все команды но только выполяем их в зависимости от того какая кнопка была нажата. Причем вызывать эту процедуру можно даже без указания кнопки, а просто передав действие строкой - просто и изящно!

Процедура КоманднаяПанельУниверсальноеДействие(Кнопка)
   
Задача = ?(ТипЗнч(Кнопка) = Тип("Строка"), Кнопка, Кнопка.Имя); // универсально получаем Задачу и выполняем ее
   
Если Задача = "ОткрытьСайт" Тогда
       
ЗапуститьПриложение("http://www.infostart.ru/");
    ИначеЕсли
Задача = "ОткрытьСтраницуАвтора" Тогда
       
ЗапуститьПриложение("//infostart.ru/profile/55562/public/");
    КонецЕсли;
КонецПроцедуры

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

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

//==================================================================================================
// Описание:
//      Предназначена для выведение переданных значений в кавычках, позволяющих определить начало и конец
//      значения и выделения его на фоне общего текста сообщения
Функция Кавычки(Значение, Сокращать=Ложь) Экспорт // Версия 1.1 / 20.02.10 / CaSH
   
Возврат "["+?(Сокращать,СокрЛП(Значение),Значение)+"]";
КонецФункции   
// Кавычки()

//==================================================================================================
// Описание:
//      Устанавливает заголовок вормы обработок по единому образцу из методанных обработки
Процедура УстановитьЗаголовокФормы(Форма) Экспорт // Версия 1.1 / 09.12.09 / CaSH
   
Форма.Заголовок = Форма.Метаданные().Синоним + " (" + Форма.Метаданные().Комментарий + ")";
КонецПроцедуры 
// ОформитьЗаголовокФормы()

//==================================================================================================
// Описание:
//      Возвращает из версии представления "1.2.3.4" число "001002003004" для возможности сравнния версий между собой
// Параметры:
//      [КоличествоРазрядов] - количество групп из которых состоит версия, для большей универсальности
Функция ПолучитьВерсию(Знач СтрокаВерсии, КоличествоРазрядов = 2)

   
// хитрый вариант преобразования строки с разделителями в массив строк
   
НовыйМассив = ЗначениеИзСтрокиВнутр("{""#"",51e7a0d2-530b-11d4-b98a-008048da3034,{0,{""S"",""" + СтрЗаменить(СтрЗаменить(СтрокаВерсии, """", """"""), ".", """},{""S"",""") + """}}}");
   
СтрокаВерсии = ""; Счетчик = 0;
    Для каждого
ЭлементМассива Из НовыйМассив Цикл
        Попытка
           
Значение = Число(ЭлементМассива);
        Исключение
           
Значение = 0;
        КонецПопытки;
       
СтрокаВерсии = СтрокаВерсии + Формат(Значение, "ЧЦ=3; ЧН=; ЧВН=");
       
Счетчик = Счетчик + 1;
    КонецЦикла;

    Пока
Счетчик < КоличествоРазрядов Цикл
       
СтрокаВерсии = СтрокаВерсии + "000";
       
Счетчик = Счетчик + 1;
    КонецЦикла;

    Возврат
Число(СтрокаВерсии);
КонецФункции
// ПолучитьВерсию()

Далее привожу сам модуль формы. Имейти ввиду что создав форму я сразу же переименовываю элемент "КоманднаяПанель1" в более понятное "КоманднаяПанельФормы". В добавок у вас должна быть в конфигурации "БиблиотекаКартинок.Информация32", если ее нет поставьте заменитель в метод "ПоказатьОповещениеПользователя()" или вообще удалите упоминание о картинке - все и так заработает 

Перем IE, АдресСтраницыРазработки, ПроверятьОбновлениеРазработкиПриОткрытии; // БЛОК: ОБНОВЛЕНИЕ ВЕРСИИ РАЗРАБОТКИ

// БЛОК: ОБНОВЛЕНИЕ ВЕРСИИ РАЗРАБОТКИ
////////////////////////////////////////////////////////////////////////////////////////////////////


//==================================================================================================
// Описание:
//      Т.к. IE не дает сразу ответа то ожидаем его вызывая процедуру и смотря статус IE а потом выполняем
//      обработку полученного заголовка с указанной страницы
Процедура ПродолжитьПроверкуВерсийРазработки()

    Если
IE.ReadyState < 4 Тогда
       
ПодключитьОбработчикОжидания("ПродолжитьПроверкуВерсийРазработки", 0.1, Истина);
        Возврат;
    КонецЕсли;
   
ВерсияНовая = IE.Document.Title;
   
IE.Quit();
   
IE = Неопределено;
   
ЗаголовокСообщения = "Проверка обновления разработки на infostart.ru";
   
Разработка = Метаданные().Представление();
    Если Не
Найти(ВерсияНовая, Разработка) Тогда
       
ПоказатьОповещениеПользователя(ЗаголовокСообщения, , "Тема " + Кавычки(ВерсияНовая) + " страницы " + Кавычки(АдресСтраницыРазработки) + " не соответствует разработке " Кавычки(Разработка), БиблиотекаКартинок.Важно);
    КонецЕсли;
   
НомПоз = Найти(ВерсияНовая, "(");
    Если
НомПоз = 0 Тогда
       
Сообщить("Ошибка разбора заголовка " + Кавычки(ВерсияНовая) + " страницы разработки " + Кавычки(АдресСтраницыРазработки) + ". Проверка обновления прервана.
        |   Ошибка: Нет скобок для версии
        |   Причины: либо неправильная страница либо она недоступнадля получения версии разработки"
, СтатусСообщения.Важное);
        Возврат;
    КонецЕсли;
   
ВерсияНовая = Сред(ВерсияНовая, НомПоз + 1);
   
ВерсияНовая = Лев(ВерсияНовая, Найти(ВерсияНовая, "/") - 1);

   
ВерсияСтарая = Метаданные().Комментарий;
    Если
ЗначениеЗаполнено(ВерсияСтарая) Тогда
        ВерсияСтарая = Лев(ВерсияСтарая, Найти(ВерсияСтарая, "/") - 1);
    КонецЕсли;

    Если
ПолучитьВерсию(ВерсияНовая) > ПолучитьВерсию(ВерсияСтарая) Тогда
        Если
Вопрос("Разработка " + Кавычки(Разработка) + " имеет версию " + ВерсияСтарая + "
            |На infostart.ru опубликована более новая версия "
+ ВерсияНовая + "
            |
            |Открыть страницу разработки?"
, РежимДиалогаВопрос.ДаНет, 90, КодВозвратаДиалога.Да, ЗаголовокСообщения, КодВозвратаДиалога.Да) = КодВозвратаДиалога.Да Тогда
           
РаботаССайтом("ОткрытьСтраницуРазработки");
        КонецЕсли;
    Иначе
       
ПоказатьОповещениеПользователя(ЗаголовокСообщения, , "Обновлений для разработки " + Кавычки(Разработка) + " нет", БиблиотекаКартинок.Важно);
    КонецЕсли;

КонецПроцедуры
// ПродолжитьПроверкуВерсийРазработки()

//==================================================================================================
// Описание:
//      Из-за использование процедуры ПодключитьОбработчикОжидания() которая не принимает параетров
//      пришлось вынести отдельно
Процедура ПроверитьОбновлениеРазработки()
   
РаботаССайтом("НачатьПроверкуВерсий");
КонецПроцедуры
// ПроверитьОбновлениеРазработки()

//==================================================================================================
// Описание:
//      Сводная процедура содержащая все возможные команды чтобы их не держать в разных местах
Процедура РаботаССайтом(Кнопка)

   
Задача = ?(ТипЗнч(Кнопка) = Тип("Строка"), Кнопка, Кнопка.Имя); // универсально получаем Задачу и выполняем ее

   
Если Задача = "ОткрытьСайт" Тогда

       
ЗапуститьПриложение("http://www.infostart.ru/");

    ИначеЕсли
Задача = "ОткрытьСтраницуАвтора" Тогда

       
ЗапуститьПриложение("//infostart.ru/profile/55562/public/");

    ИначеЕсли
Задача = "ОткрытьСтраницуРазработки" Тогда

       
ЗапуститьПриложение(АдресСтраницыРазработки);

    ИначеЕсли
Задача = "РекомендаватьРазработку" Тогда

       
ЗапуститьПриложение(АдресСтраницыРазработки + "?rate=1");

    ИначеЕсли
Задача = "ПроверитьОбновлениеРазработки" Тогда

       
ПроверитьОбновлениеРазработки(); // небольшая зацикленность но для порядка нужна

   
ИначеЕсли Задача = "НачатьПроверкуВерсий" Тогда

       
Состояние("Подключение к Internet Explorer...");
       
ПоказатьОповещениеПользователя("Запрос номеров версий...", , "Для разработки " + Кавычки(Метаданные().Представление()) + " выполняеться запрос на последнюю версию на сайт www.infostart.ru через браузер Internet Explorer", БиблиотекаКартинок.Информация32);
       
СтрокаОбъекта = "InternetExplorer.Application";
        Попытка
           
IE = Новый COMОбъект(СтрокаОбъекта);
        Исключение
           
Сообщить("Не удалось создать COM-объект: " + Кавычки(СтрокаОбъекта) + "
            |   Ошибка: "
+ ОписаниеОшибки(), СтатусСообщения.Внимание);
            Возврат;
        КонецПопытки;
       
IE.Visible = 0;
       
IE.Silent = -1;
       
IE.Navigate(АдресСтраницыРазработки);
       
ПродолжитьПроверкуВерсийРазработки();

    ИначеЕсли
Задача = "ПроверятьОбновлениеРазработкиПриОткрытии" Тогда

       
ПроверятьОбновлениеРазработкиПриОткрытии = Не ПроверятьОбновлениеРазработкиПриОткрытии;
       
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ПоддержкаРазработки.Кнопки.ПроверятьОбновлениеРазработкиПриОткрытии.Пометка = ПроверятьОбновлениеРазработкиПриОткрытии;
       
СохранитьЗначение(Метаданные().ПолноеИмя() + "_" + Задача, ПроверятьОбновлениеРазработкиПриОткрытии);
        Если Не
ПроверятьОбновлениеРазработкиПриОткрытии Тогда
           
ОтключитьОбработчикОжидания("ПроверитьОбновлениеРазработки");
        КонецЕсли;

    КонецЕсли;

КонецПроцедуры
// РаботаССайтом()

//==================================================================================================
Процедура ПриОткрытии()

   
УстановитьЗаголовокФормы(ЭтаФорма); //$+ CaSH Универсальный механизм

    // БЛОК: ОБНОВЛЕНИЕ ВЕРСИИ РАЗРАБОТКИ
   
ПроверятьОбновлениеРазработкиПриОткрытии = ВосстановитьЗначение("ПроверятьОбновлениеРазработкиПриОткрытии");
   
ПроверятьОбновлениеРазработкиПриОткрытии = ?(ПроверятьОбновлениеРазработкиПриОткрытии = Неопределено, Истина, ПроверятьОбновлениеРазработкиПриОткрытии);
   
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ПоддержкаРазработки.Кнопки.ПроверятьОбновлениеРазработкиПриОткрытии.Пометка = ПроверятьОбновлениеРазработкиПриОткрытии;
    Если
ПроверятьОбновлениеРазработкиПриОткрытии Тогда
       
ПодключитьОбработчикОжидания("ПроверитьОбновлениеРазработки", 10, Истина);
    КонецЕсли;

КонецПроцедуры
// ПриОткрытии()

АдресСтраницыРазработки = "//infostart.ru/public/86911/"; // должно заканчиваться на "/" // БЛОК: ОБНОВЛЕНИЕ ВЕРСИИ РАЗРАБОТКИ

Еще одна важная фишка которая у вас добавиться - при запуске обработки автоматически будет проверена версия указанная вами в переменной "АдресСтраницыРазработки". Только нужно придерживаться правила что заголовок на страничке будет выглядеть аналогично этой разработке.

Кстати нумерация версий должна быть такой: 1.001.102 (3 разряда по 3 цифры), т.е. версия 1.1 это = 1.001, а не 1.100, собственно мне хватает 2 разряда, поэтому я указываю в функции ПолучитьВерсию() КоличествоРазрядов = 2, а количество цифр в разряде не более 3-х!

 

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122172    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7295    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3542    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177755    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

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

3000 руб.

27.08.2019    18116    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23604    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Altair777 644 30.05.12 15:30 Сейчас в теме
Автор, а Вы прогоняли текст публикации в Ворде? ;)

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


И это еще не считая 5 десятков недостающих запятых и 2 десятков прочих стилистических ошибок.
mefio; iov; +2 Ответить
4. CaSH_2004 372 30.05.12 20:08 Сейчас в теме
(1) Вообще-то я накидал это в полночь за 1 час, так что было не до Word'а. А по существу согласен с критикой, просто если бы не сделал тогда потом руки бы не дошли точно т.к. делал по настроению, а так буду вылизывать статью т.к. уже выложил и деваться некуда :)

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

Если есть конкретные предложения с удовольствием выслушаю.
2. Altair777 644 30.05.12 15:34 Сейчас в теме
И по самой публикации - "Все что можно я выкидываю с модуля формы в модуль обработки"
А почему процедура РаботаССайтом(Кнопка) в форме, а не в модуле? Не умеете обратиться к реквизитам формы из модуля обработки?
3. maddy 19 30.05.12 17:14 Сейчас в теме
(2) Altair777, Логично же -- клиентский код на стороне клиента! :)

Резюмируя: надо уже переходить на управляемые формы b "чтобы небыло мучительно больно" разделять клиентский и серверный код даже в обычных формах.
5. CaSH_2004 372 30.05.12 20:10 Сейчас в теме
(3) Интересно что я пришел к тому же выводу исходя вроде-как из других принципов. С управляемыми формами вообще не работал и даже ткорию не сильно читал - только общую. Так что размещение функционала происходила согласно его логике.
9. Erne100 286 31.05.12 14:45 Сейчас в теме
(2) Altair777, Как раз таки она на месте. Где ж как не на клиенте собираетесь запускать приложение?
10. Altair777 644 31.05.12 17:42 Сейчас в теме
(9) Erne100, а при чем тут вообще это?!

В (3) была написана шутка (возможно, глупая). А потом ее тупо обыгрывают.
Внимательно читайте что написано в 2.
22. Erne100 286 11.06.12 07:22 Сейчас в теме
(10) Altair777, а где тут(3) шутка?
Внимательно читайте код и поменьше минусуйте не подумав))
Поясню:
ЗапуститьПриложение("http://www.infostart.ru/");

логичнее выполнять на клиенте, а в управляемом приложении
вообще нельзя корректно выполнить на сервере
(если конечно клиент и сервер не на одной машине).
То же самое можно сказать и про:
IE = Новый COMОбъект(СтрокаОбъекта);

Вообще странно, что именно Вы(с Вашим опытом) этого не увидели.
И потому на шутку больше похожа ваша придирка к чужим словам (2).
К первому(1) Вашему посту претензий нет - Вы же модератор.
Но во втором, похоже, Вы увлеклись.
23. Altair777 644 12.06.12 12:05 Сейчас в теме
(22) Erne100, очередной бред...
Есть разница откуда это запускать - из модуля обработки или из модуля формы обработки? В 2 речь шла именно об этом.

И хватит говорить про управляемое. Данная обработка написана для обычного.
24. Erne100 286 12.06.12 13:59 Сейчас в теме
(23)
Есть разница откуда это запускать - из модуля обработки или из модуля формы обработки?

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

З.Ы. Возможно мой мозг окончательно повернулся в сторону управляемых)))
25. Altair777 644 12.06.12 14:26 Сейчас в теме
(24) Erne100, > В том и дело что нет разницы

Ну... а я про что говорил в (2) ?!
В моем понимании в модуле формы должны находиться процедуры, непосредственно связанные с управлением формой. Не путать с управляемым приложением!
Остальное лучше всего вынести в модуль обработки. Имхо, это будет логично. Особенно, при разработке сложных, "навороченных" отчетов.

Посмотрите любой отчет в типовых. Где находится "стандартная" процедура "СформироватьОтчет"?
6. mtv:) 1027 31.05.12 11:15 Сейчас в теме
(0)
на твою просьбу:"Также буду благодарен всем кто предложит удобные фишки для реализации в шаблоне (пока на уме только переоткрытие)" - советую заглянуть в публикацию Коллекция полезных кнопок и процедур для отчетов и обработок v2.02. Может какие-нибудь фишки из нее тебе понравятся и подойдут...
7. CaSH_2004 372 31.05.12 13:54 Сейчас в теме
(6) Как раз вчера лазил и "открыл" ее для себя заново, т.е. я и раньше видел, но тут второпя я совсем забыл про нее.
Думаю нужна просто ссылка, т.к. кроме "перезагрузки" все остальное спецефичное для отчета например, т.е. просто каркас идей, а не готовый шаблон
Кстати еще вчера удивился почему из кнопок редактирования ТабДокумента у тебя только самая сложная - "фиксация", я так у себя весь комплеект вставил (даже черно/белый режим - некоторым он пригодился)
11. Жолтокнижниг 258 01.06.12 16:22 Сейчас в теме
Поповоду проверки версии, а может парсить страничку регуляркой? Но как я понял получишь дату изменения публикации, условно ее можно считать датой изменения обработки
12. CaSH_2004 372 01.06.12 19:22 Сейчас в теме
(11) Конечно можно, но
1. разбираемый текст примитивен и не стоит того
2. честно говоря не успел заняться регуляркой - руки не доходят плотно изучить, а копи-пастить неохота
14. Жолтокнижниг 258 02.06.12 21:58 Сейчас в теме
(12)
разбираемый текст примитивен
что ты понимаешь под примитивен? пробовал исходник странички посмотреть?
не стоит того
почему же? получишь универсальный метод.
13. iov 406 02.06.12 18:31 Сейчас в теме
(0)исправлено - претензий нет.
16. CaSH_2004 372 03.06.12 00:40 Сейчас в теме
(13)
Совпадение?
А то как же! Публикацию читал хоть? Все честно скопировано у других авторов, или ты предлагаеш самому все картинки рисовать? Код скопирован тоже у них, они его в свою очередь скопировали еще у когонибудь (кое-кто даже не подправив и при этом еще и урезал функционал :)
В публикации указано что:
Далее я подглядел у alexk-is что очень удобно когда можно прямо из обработки перейти на ее страничку или страничку автора ведь часто забываеш где взял обработку и для чего она. У milkers взял то что прямо из обработки можно за нее плюсануть, т.к. не всегда есть время заходить и плюcовать когда много обработок.

Или ты любитель только картинки разглядывать?

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

(14) Я имел ввиду сам текст, а не исходник. Р-р-ребята я не в курсе что для этого нужно исходники смотреть, постараюсь оглядываться :)

(15) Спасибо за 0,5 - конечно попробую, а то так как есть оно тормозит прилично. Как я уже сознался содрал это у alexk-is и думал что так и надо, но я не против новых фокусов
18. iov 406 03.06.12 01:25 Сейчас в теме
(16)исправлено - претензий нет.
20. CaSH_2004 372 03.06.12 11:17 Сейчас в теме
(18) ответ смотри в личке

Москва не сразу строилась, а ты хочеш чтобы хопа - и все красиво и удобно и бесплатно! Чем-то приходиться жертвовать. Я тоже за красивое описание, но еще больше за красивый код (функциональный, универсальный, легкодорабатываемый и читаемый)
Проведем опрос (не знаю как это сделать правильно). Какой вариант лучше:
1. Очень мало публикаций, но все качественно оформленные, появляются раз в месяц-другой (при этом мне кажеться что ресурс загнеться)
2. Пбликаций много, но оформление страдает, появляются каждый день по несколько, авторы выкладывают идеи, критики их пилят :) потом авторы дорабатывают (это как сейчас - ресурс живет и очень даже)

Далее: программное добавление кнопок это первое что пришло мне в голову, однако есть проблема с картинками,
1. некогда их загонять в архив и вытягивать оттуда,
2. и разработчику так будет сложнее внедрять чем просто скопировал меню и все
Так что идея пока бесперспективная

(19) Я тоже задумался как можно закачать обновление, было бы супер
Давай идеи в студию и про рабочий код не забывай! Спасибо за уделенное внимание поднятой проблеме стандртизации!
21. iov 406 03.06.12 20:26 Сейчас в теме
(20) а ты хочешь дать палец на халяву и не боятся что его либо обосрут либо по локоть отхватят?
Тыж на ресурсе программистов тут платить друг другу то не хотят... А потыкать в чужие ошибки - вообще за развлечение... Статью исправил - молодец - комментарии я убрал - претензий нет. Ждем от тебя следующей публикации.
15. Жолтокнижниг 258 02.06.12 22:35 Сейчас в теме
соединение=новый HTTPСоединение("infostart.ru");
файл=ПолучитьИмяВременногоФайла();
соединение.Получить("public/20017/",файл);
тд=новый ТекстовыйДокумент;
тд.Прочитать(файл);
РегулярноеВыражениеX=Новый COMОбъект("VBScript.RegExp");
РегулярноеВыражениеX.Global = Истина;
РегулярноеВыражениеX.IgnoreCase = Истина;
РегулярноеВыражениеX.MultiLine = Истина;
РегулярноеВыражениеX.Pattern="<span class=""tool mdate"">\[(.+?)\]</span>";
наборы=РегулярноеВыражениеX.Execute(тд.ПолучитьТекст());
Сообщить(Дата(наборы.Item(0).SubMatches(0)+":00"));
Показать


Время выполнения 0,565 сек.
ixijixi; bambr1975; +2 Ответить
17. CaSH_2004 372 03.06.12 00:57 Сейчас в теме
(15) Ну вот проверил код, занимательно (в итоге получаю дату), но получается что с твоей подачи нужно все таки изучать регулярку. А я так хотел этого избежать, так что или выложи пожалуйста работоспособный код, или ждем пока я найду время это переварить. Как никак это все твориться в свободное время, а работы завались
19. Жолтокнижниг 258 03.06.12 01:49 Сейчас в теме
А я так хотел этого избежать, так что или выложи пожалуйста работоспособный код, или ждем пока я найду время это переварить
регулярки вещь хорошая, как то давненько их юзал, а тут опять свое применение нашли, советую изучить, времени немного потратишь, а профиту немерено, правда если не злоупотреблять. по поводу роботоспособного кода, ето уже когда свое доделаю могешь посмотреть, понравилась твоя идея с обновлением с сайта, попытаюсь к себе применить. Надо придумать как хранить время последнего обовления
26. Erne100 286 12.06.12 18:33 Сейчас в теме
В пылу дискуссии чуть не забыл главное - поставить плюс автору шаблона.
27. Evil Beaver 8107 26.11.12 17:34 Сейчас в теме
Интересная штука. Обработка отличная, работа проделана колоссальная, но стиль кода!!! Я плакал кровавыми слезами когда все это увидел!
Почему, почему такой спагетти-код, переменные с именами "ы" и "ъ", которые нигде к тому же не используются? Почему перебор колонок табличного макета делается так:
ЗначениеЯчейкиСинонима=Лев(Ячейка.Имя,Поз)+Строка(Число(Прав(Ячейка.Имя,СтрДлина(Ячейка.Имя)-Поз))+4);
ЗначениеЯчейкиИндексаКартинки=Лев(Ячейка.Имя,Поз)+Строка(Число(Прав(Ячейка.Имя,СтрДлина(Ячейка.Имя)-Поз))+3);


Зачем эти мозго*ство с формулами, почему не:
Область.Лево+1;
Область.Лево+2;


Одно и то же ведь, а читать легко и приятно.

С одной стороны, писал человек опытный, с другой - руки бы оторвать за такое качество кода....
28. CaSH_2004 372 26.11.12 18:09 Сейчас в теме
(27) Это точно к данной публикации относится? Я не нашел ничего про "ЗначениеЯчейкиСинонима" или "ЗначениеЯчейкиИндексаКартинки". Укажите где это?
29. Evil Beaver 8107 26.11.12 18:25 Сейчас в теме
Позор на мою седую голову. Да, написал в другое окно. Тысяча извинений!
Оставьте свое сообщение