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

03.06.12

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Шаблон обработки.epf
.epf 13,63Kb
70
70 Скачать (1 SM) Купить за 1 850 руб.

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

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

Вот созрел чтобы написать статью о некоторой стандартизаци которую я веду у себя при разработке, и похоже некоторые другие разработчики тоже. Сподвигло на нее то что иногда у разных людей есть настолько удобные фишки которые непроизвольно начинаеш искать в других обработках, хочеться "воткнуть" в свои, но не тяп-ляп, а "по уму". Понятно что у всех свои предпочтения, кто-то любит наваять "одну большую кнопку" как любят клиенты, а если потребуеться 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! 15%

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

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

10000 руб.

02.09.2020    159417    872    399    

861

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7769    55    22    

66

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

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

9360 руб.

17.05.2024    23434    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10420    36    22    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15398    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    187979    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17303    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7694    8    35    

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(19) Я тоже задумался как можно закачать обновление, было бы супер
Давай идеи в студию и про рабочий код не забывай! Спасибо за уделенное внимание поднятой проблеме стандртизации!
21. iov 407 03.06.12 20:26 Сейчас в теме
(20) а ты хочешь дать палец на халяву и не боятся что его либо обосрут либо по локоть отхватят?
Тыж на ресурсе программистов тут платить друг другу то не хотят... А потыкать в чужие ошибки - вообще за развлечение... Статью исправил - молодец - комментарии я убрал - претензий нет. Ждем от тебя следующей публикации.
15. Жолтокнижниг 259 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 373 03.06.12 00:57 Сейчас в теме
(15) Ну вот проверил код, занимательно (в итоге получаю дату), но получается что с твоей подачи нужно все таки изучать регулярку. А я так хотел этого избежать, так что или выложи пожалуйста работоспособный код, или ждем пока я найду время это переварить. Как никак это все твориться в свободное время, а работы завались
19. Жолтокнижниг 259 03.06.12 01:49 Сейчас в теме
А я так хотел этого избежать, так что или выложи пожалуйста работоспособный код, или ждем пока я найду время это переварить
регулярки вещь хорошая, как то давненько их юзал, а тут опять свое применение нашли, советую изучить, времени немного потратишь, а профиту немерено, правда если не злоупотреблять. по поводу роботоспособного кода, ето уже когда свое доделаю могешь посмотреть, понравилась твоя идея с обновлением с сайта, попытаюсь к себе применить. Надо придумать как хранить время последнего обовления
26. Erne100 287 12.06.12 18:33 Сейчас в теме
В пылу дискуссии чуть не забыл главное - поставить плюс автору шаблона.
27. Evil Beaver 8243 26.11.12 17:34 Сейчас в теме
Интересная штука. Обработка отличная, работа проделана колоссальная, но стиль кода!!! Я плакал кровавыми слезами когда все это увидел!
Почему, почему такой спагетти-код, переменные с именами "ы" и "ъ", которые нигде к тому же не используются? Почему перебор колонок табличного макета делается так:
ЗначениеЯчейкиСинонима=Лев(Ячейка.Имя,Поз)+Строка(Число(Прав(Ячейка.Имя,СтрДлина(Ячейка.Имя)-Поз))+4);
ЗначениеЯчейкиИндексаКартинки=Лев(Ячейка.Имя,Поз)+Строка(Число(Прав(Ячейка.Имя,СтрДлина(Ячейка.Имя)-Поз))+3);


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


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

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