gifts2017

Грамотное обновление 1С

Опубликовал Осипов Сергей (fixin) в раздел Программирование - Практика программирования

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

Оглавление

Грамотное обновление 1С. 1

Как правильно делать изменения в типовые конфигурации. 1

Помечать изменения комментариями. 1

Добавление своих функции в общий модуль. 2

Добавление параметров в типовую функцию.. 2

Добавление больших кусков кода. 2

Комментарии к модулю писать в отдельной функции. 2

Использование обычных элементов вместо предопределенных. 2

Типовые задачи по доработкам типовых конфигураций. 2

Добавление отчетов. 2

Доработка общих команд типа "Движения документа" и "Структура подчиненности". 2

Программное добавление элементов интерфейса на обычных формах. 3

Добавление колонок в форму списка. 3

Добавление кнопок в панель действий. 3

Назначение обработчиков событий. 4

Добавление новых команд на форму "Рабочий стол". 4

Добавление кнопок на обычную форму. 5

Добавление поля ввода на обычную форму. 6

Программное добавление элементов интерфейса на управляемых формах. 6

Добавление кнопок и действий под них. 6

Добавление группы элементов. 6

Вывести колонку с добавленным полем в табличную часть. 6

Добавить программно колонку в табличную часть. 7

Добавить реквизит в динамический список и отобразить его на форме в табличном поле. 7

Добавить программно поле ввода в форму элемента. 7

Назначение обработчиков событий. 8

Перемещение элементов формы.. 8

Использование дополнительных отчетов и обработок. 8

Как правильно обновлять измененные конфигурации. 8

Как проверить, есть ли доработки в типовую конфигурацию.. 8

Как при сравнении-объединении определить измененные объекты.. 8

Проблемы после обновления. 9

Не показываются некоторые реквизиты формы.. 9

Прочие советы.. 9

Постоянный рефакторинг при сопровождении. 9

 

Как правильно делать изменения в типовые конфигурации

Помечать изменения комментариями

Это самое главное правило. Если изменения не отмечены комментариями, то они с вероятностью 99% будут не замечены и затерты при обновлении.

Размещать комментарии надо не справа, а слева, т.к. справа они могут быть не замечены в узком окне сравнения.

 

Добавление своих функции в общий модуль

Если требуется добавить свою функцию, надо ее добавлять в отдельный общий модуль, а не в типовой общий модуль. В итоге придется совершать меньше операций при обновлении.

 

Добавление параметров в типовую функцию

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

 

Добавление больших кусков кода

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

Комментарии к модулю писать в отдельной функции

Не стоит писать комментарии к модулю в самом модуле. Нужно создать отдельную функцию с говорящим именем, например _ОписаниеИзменений и там описать изменения.

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

 

Использование обычных элементов вместо предопределенных

Можно использовать обычные элементы вместо предопределенных.

Для того, чтобы не было конфликтов кодов, лучше давать им префикс, например код задавать в виде "ПЭ-XXXX".

Типовые задачи по доработкам типовых конфигураций

Добавление отчетов

Если просто добавить новый отчет, то могут быть проблемы с ролями, хотя обычно проблем нет.

Поэтому нужно добавить отчет в справочник дополнительных внешних обработок.

Вызов отчета лучше привязать не к пункту меню/пиктограмме.

А добавить в какую-либо связанную с отчетом форму, например, в форму списка справочника.

 

Доработка общих команд типа "Движения документа" и "Структура подчиненности"

Если вы добавили свой документ, то ему хочется добавить типовые общие команды "Движения документа" и "Структура подчиненности". Но если поменять состав документов для типовой команды, появится постоянная проблема при обновлениях.

Поэтому можно добавить свои команды, скопировав обработки модуля команды (они там примитивные).

В своих командах указать свой собственный состав документов для команды.

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

Программное добавление элементов интерфейса на обычных формах

 

Добавление колонок в форму списка

Нужно организовать перебор колонок списка и вставлять свои колонки после типовых.

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

           
НовКолонка = ЭлементСписок.Колонки.Вставить(ТекПозиция + 2);
           
НовКолонка.Имя = "_ИмяПредыдущегоСотрудника";
           
НовКолонка.Данные = "_ ИмяПредыдущегоСотрудника";
           
НовКолонка.ТекстШапки = "Имя предыдущего сотрудника";
           
НовКолонка.Ширина = 30;

           
НовКолонка = ЭлементСписок.Колонки.Вставить(ТекПозиция + 3);
           
НовКолонка.Имя = "_Руководитель";
           
НовКолонка.Данные = "_Руководитель";
           
НовКолонка.ТекстШапки = "Руководитель";
           
НовКолонка.Ширина = 10;
        КонецЕсли;


    КонецЦикла;

   
НовКолонка = ЭлементСписок.Колонки.Вставить(ТекПозиция + 1);
   
НовКолонка.Имя = "ДатаОткрытия";
   
НовКолонка.Данные = "ДатаОткрытия";
   
НовКолонка.ТекстШапки = "Дата открытия";
   
НовКолонка.Ширина = 10;

   
НовКолонка = ЭлементСписок.Колонки.Вставить(ТекПозиция + 2);
   
НовКолонка.Имя = "ДатаЗакрытия";
   
НовКолонка.Данные = "ДатаЗакрытия";
   
НовКолонка.ТекстШапки = "Дата закрытия";
   
НовКолонка.Ширина = 10;

   
НовКолонка = ЭлементСписок.Колонки.Вставить(ТекПозиция + 3);
   
НовКолонка.Имя = "Условия";
   
НовКолонка.Данные = "Условия";
   
НовКолонка.ТекстШапки = "Комментарий";
   
НовКолонка.Ширина = 20;

Добавление кнопок в панель действий

Нужно программно добавить кнопку и обработчик события по ее нажатию.

Шаг 1. В процедуру при открытии программно добавляем кнопку на панель.

ЭлементыФормы.ДействияФормы.Кнопки.Добавить("ДействиеОтчетПоВакансиям", ТипКнопкиКоманднойПанели.Действие, "Отчет", Новый Действие("ОтчетПоВакансиям"));

Шаг2. Добавляем обработчик нажатия

Процедура ОтчетПоВакансиям(Элемент) Экспорт
   
Предупреждение("Отчет");
КонецПроцедуры

Назначение обработчиков событий

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

Тем более, что обработчики прописываются просто.

 

Добавление новых команд на форму "Рабочий стол"

Добавлять новые команды в интерфейс можно только вручную, это неудобно для обновлений.

 

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

Он описывается в обработке "Рабочий стол".

Чтобы добавить на него команду, нужно внести код добавления команды в "При открытии" этой обработки.

Нужно подобрать место, где разместить кнопку, посмотреть координаты соседних верхней кнопки (координата лево) и левой кнопки (координата верх). Размеры всех кнопок одинаковы.

Вместо кнопки используется надпись, т.к. она позволяет переносить текст надписи на новую строку.

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

Если будет желание добавить новую страницу на панель, то нужно сделать кнопку, которая будет добавлять новую панель. Важно - эта панель не использует типовой механизм закладок, сверху находятся кнопки, которые переключают закладки. Поэтому надо или добавлять свою новую кнопку (что сложно из-за привязок) или добавить кнопку на рабочий стол, которая будет переключаться на эту новую панель:

    НоваяСтраница = ЭлементыФормы.ОсновнаяПанель.Страницы.Добавить();
   
НоваяСтраница.Заголовок = "ДОП";
   
НоваяСтраница.Видимость = истина;

Вот пример, который добавляет новую кнопку вызова обработки "Рассылка поздравлений с днем рождения" и обработчик команды для нее:

 

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

   
ОбработатьЭлементыУправленияПоРежиму();
   
УстановитьВидимостьНаписатьПисьмо();

   
РабочийСтол.УстановитьВидимостьЭлементовУправленияОрганизациями(ЭлементыФормы);


   
// Осипов 2016-02-29 +++ Добавляю кнопку

    //Запоминаем текущую страницу
   
ПредТекСтраница = ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница;

   
//Меняем на нужную страницу... В данном случае персонал
   
ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.Страницы.Персонал;

   
//Добавляем кнопку, если есть роль ПолныеПрава
   
Если РольДоступна("ПолныеПрава") Тогда
       
Кнопка = ЭлементыФормы.Добавить(Тип("Надпись"), "РассылкаПоздравленийДР", Истина, ЭлементыФормы.ОсновнаяПанель);
       
Кнопка.Заголовок = "Рассылка поздравлений с ДР";
       
Кнопка.Лево = 533;
       
Кнопка.Верх = 216;
       
Кнопка.Ширина = 150;
       
Кнопка.Высота = 42;
       
Кнопка.Гиперссылка = истина;
       
Кнопка.УстановитьДействие("Нажатие", Новый Действие("Нажатие_РассылкаПоздравленийДР"));
    КонецЕсли;

   
//Возвращаем текущую страницу
   
ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ПредТекСтраница;

   
//Осипов 2016-02-29 ---
КонецПроцедуры

// Осипов 2016-02-29 +++ Добавляю процедуру кнопки
Процедура Нажатие_РассылкаПоздравленийДР(Элемент) Экспорт
   
РассылкаПоздравлений.СформироватьПисьмо();
   
Предупреждение("Рассылка выполнена");
КонецПроцедуры

// Осипов 2016-02-29 ---

 

Выглядит так:

 

Добавление кнопок на обычную форму

Нужно добавить в процедуру "При открытии" код:

    Кнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), "_ВводРазовыхНачислений", Истина);
   
Кнопка.Заголовок = "Ввод раз.начислений:";
   
Кнопка.Лево = 304;
   
Кнопка.Верх = 30;
   
Кнопка.Ширина = 150;
   
Кнопка.Высота = 19;
   
Кнопка.УстановитьДействие("Нажатие", Новый Действие("Нажатие_ВводРазовыхНачислений"));

 

И саму процедуру для реагирования на нажатие кнопки:

Процедура Нажатие_ВводРазовыхНачислений(Элемент)

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

 

Добавление поля ввода на обычную форму

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

    Поле = ЭлементыФормы.Добавить(Тип("ПолеВвода"), "_ДокументРазовыхНачислений", истина);
   
//Поле.Заголовок = "";
   
Поле.Лево = 460;
   
//Поле.ОграничениеТипа = Новый ОписаниеТипов("ДокументСсылка.РегистрацияРазовыхНачисленийРаботниковОрганизаций");
   
Поле.Данные = "_ДокументРазовыхНачислений";
   
Поле.Верх = 30;
   
Поле.КнопкаВыбора = истина;
   
Поле.Ширина = 150;
   
Поле.Высота = 19;

Программное добавление элементов интерфейса на управляемых формах

Добавление кнопок и действий под них

Можно добавить кнопку и команду для нее полностью программно.

 

В процедуру формы ПриСозданииНаСервере добавить код вида:

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

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

В модуль формы добавить процедуру для реагирования на событие:

&НаКлиенте
Процедура ОткрытьНастройкаПередачиТоваровДетально(Команда)

 
ОткрытьФорму("РегистрСведений._НастройкаПередачиТоваровМеждуОрганизациямиДетальные.Форма", , ЭтаФорма);

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

Добавление группы элементов

    ПередЭлементом = Элементы.ГруппаКомментарий;
   
Элемент = Элементы.Вставить("_ГруппаЗаполненияОстатками", Тип("ГруппаФормы"), ПередЭлементом.Родитель, ПередЭлементом);
   
Элемент.Вид = ВидГруппыФормы.ОбычнаяГруппа;
   
Элемент.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;

Вывести колонку с добавленным полем в табличную часть

После добавления поля в табличную часть его нужно вывести на форму:

    Элемент = Элементы.Добавить("_СегментРасходов", Тип("ПолеФормы"), Элементы.Товары);
   
Элемент.Вид = ВидПоляФормы.ПолеВвода;
   
Элемент.ПутьКДанным = "Объект.Товары._СегментРасходов";

Добавить программно колонку в табличную часть

Описано здесь:

&НаСервере
Процедура ДобавитьКолонкуНаСервере()
  
нРеквизиты = Новый Массив;
  
нРеквизиты.Добавить(Новый РеквизитФормы("Тест3", Новый ОписаниеТипов("Строка"), "Объект.Тест", "Тест3", Истина));
  
ИзменитьРеквизиты(нРеквизиты);

  
нЭлемент = Элементы.Добавить("Тест3", Тип("ПолеФормы"), Элементы.Тест);
  
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
  
нЭлемент.ПутьКДанным = "Объект.Тест.Тест3";
КонецПроцедуры

Добавить реквизит в динамический список и отобразить его на форме в табличном поле

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

При этом тип поля можно брать непосредственно из типа того объекта, из которого он выводится запросом, в данном примере используется тип ресурсов регистра Т_Лицензии.

    Элемент = Элементы.Вставить("КПП", Тип("ПолеФормы"), Элементы.Список, Элементы.Номер);
   
Элемент.Вид = ВидПоляФормы.ПолеВвода;
   
Элемент.ПутьКДанным = "Список.КПП";
   
Элемент.Заголовок = "КПП";

   
Элемент = Элементы.Вставить("Адрес", Тип("ПолеФормы"), Элементы.Список, Элементы.Номер);
   
Элемент.Вид = ВидПоляФормы.ПолеВвода;
   
Элемент.ПутьКДанным = "Список.Адрес";

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

Затем добавить реквизит списка и элемент:

Добавить программно поле ввода в форму элемента

Нужно указать заголовок, если он имеется.

 

Также в примере используется команда вставки, а не добавления, для того, чтобы вставлять в нужную позицию:

    ПередЭлементом = Элементы.Номер;
   
Элемент = Элементы.Вставить("_ДляАлкогольнойДекларации", Тип("ПолеФормы"), ПередЭлементом.Родитель, ПередЭлементом);
   
Элемент.Вид = ВидПоляФормы.ПолеФлажка;
   
Элемент.Заголовок = "Для А.д.";
   
Элемент.ПутьКДанным = " _ДляАлкогольнойДекларации";

Если нужно добавить элемент в некую группу:

    ГруппаЭлемента = Элементы.Группа;
   
Элемент = Элементы.Добавить("_ДляАлкогольнойДекларации", Тип("ПолеФормы"), ГруппаЭлемента);
   
Элемент.Вид = ВидПоляФормы.ПолеФлажка;
   
Элемент.Заголовок = "Для А.д.";
   
Элемент.ПутьКДанным = " _ДляАлкогольнойДекларации";

Если поле ввода не связано с реквизитами объекта, можно добавить реквизит программно:

    ДобавляемыеРеквизиты = Новый Массив;
   
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("_ПоступлениеРасходовПоГТД", Новый ОписаниеТипов("ДокументСсылка.ПоступлениеТоваровУслуг"), , , Истина));
   
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

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

Назначение обработчиков событий

Все обработчики событий назначать в модуле в процедуре ПриСозданииНаСервере. При обновлении можно забыть прописать их и функциональность будет нарушена.

Тем более, что обработчики прописываются просто.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
...
   
УстановитьДействие("ПередЗаписью", "_ПередЗаписьюНаКлиенте");
КонецПроцедуры

&НаКлиенте
Процедура _ПередЗаписьюНаКлиенте(Отказ, ПараметрыЗаписи)
КонецПроцедуры

Перемещение элементов формы

Иногда требуется переместить элементы формы, вот пример:

    Элементы.Переместить(Элементы.КонтактнаяИнформацияПолеEmailКонтрагенты, ЭтаФорма, Элементы.Родитель);
   
Элементы.КонтактнаяИнформацияПолеEmailКонтрагенты.ЦветФона = WebЦвета.БледноЗеленый;
   
Элементы.КонтактнаяИнформацияПолеEmailКонтрагенты.Заголовок = "E-mail";
   
Элементы.КонтактнаяИнформацияПолеEmailКонтрагенты.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево;

   
Элементы.Переместить(Элементы.КонтактнаяИнформацияПолеТелефонКонтрагента, ЭтаФорма, Элементы.Родитель);
   
Элементы.КонтактнаяИнформацияПолеТелефонКонтрагента.ЦветФона = WebЦвета.БледноМиндальный;
   
Элементы.КонтактнаяИнформацияПолеТелефонКонтрагента.Заголовок = "Телефон";
   
Элементы.КонтактнаяИнформацияПолеТелефонКонтрагента.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево;

Использование дополнительных отчетов и обработок

Как открыть отчет/обработку из кнопки/команды

Примерный код:

    ВнешняяОбработкаСсылка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Отчет по авансам", истина);
   
ИмяФайла = КаталогВременныхФайлов() + ВнешняяОбработкаСсылка.УникальныйИдентификатор() + ".tmp";
   
ДвоичныеДанные = ВнешняяОбработкаСсылка.ХранилищеВнешнейОбработки.Получить();
   
ДвоичныеДанные.Записать(ИмяФайла);
   
Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);
   
//Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла); //Для обработок
   
Форма.Открыть();

Как правильно обновлять измененные конфигурации

Как проверить, есть ли доработки в типовую конфигурацию

Нужно сравнить конфигурацию базы с конфигурацией поставщика. Если конфигурации поставщика нет, значит конфигурация полностью типовая.

Как при сравнении-объединении определить измененные объекты

Нужно зайти в пункт "Обновление" и указать новый файл конфигурации.

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

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

При этом если сравнения вылетит, придется сохранять все сначала.

Поэтому если объем изменений большой, можно выписать список дважды измененных объектов (можно сделать скриншоты) и сравнивать в обычном режиме, а не через обновление.

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

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

Проблемы после обновления

Не показываются некоторые реквизиты формы

Если у пользователя собственная настройка формы, то после обновления новые элементы не показываются. Проблема решается редактированием настройки - можно или сбросить на стандартную настройку или включить видимость реквизитов.

Прочие советы

Постоянный рефакторинг при сопровождении

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

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Алексей Роза (DoctorRoza) 27.04.16 09:10
Возможно, это понятно только избранным и просвященным, но за такое:
Добавление поля ввода на обычную форму

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

Поле = ЭлементыФормы.Добавить(Тип("ПолеВвода"), "_ДокументРазовыхНачислений", истина);
    //Поле.Заголовок = "";
    Поле.Лево = 460;
    //Поле.ОграничениеТипа = Новый ОписаниеТипов("ДокументСсылка.РегистрацияРазовыхНачисленийРаботниковОрганизаций");
    Поле.Данные = "_ДокументРазовыхНачислений";
    Поле.Верх = 30;
    Поле.КнопкаВыбора = истина;
    Поле.Ширина = 150;
    Поле.Высота = 19;
...Показать Скрыть


руки бы отрывал, не взирая ни на чины и ни на ранги!

А если еще кнопочек потребуется, будете дальше высчитывать Ш,В и т.п.?
Столкнулся, что более 30 таких писуляк понадобавляли на форму! жесть, изуродовали форму документа!
2. Сергей Ожерельев (Поручик) 27.04.16 09:22
(0) Для конфигураций на основе БСП забыли упомянуть модули МодификацияКонфигурацииХХХХПереопределяемый. Если они присутствуют в конфе, то именно в них надо добавлять свои элементы и реквизиты формы.
cool.vlad4; pisarevEV; MarinaLed; yurii_host; Yashazz; h00k; CSiER; adhocprog; +8 Ответить 2
3. Юрий Гончарук (yukon) 27.04.16 09:50
Грамотное обновление 1С:

п.0 Перед обновлением сделайте бэкап.
Kyrales; Lyolik; forseil; bidond; the1; JohnConnor; energosf_vl; pisarevEV; Йожкин Кот; fzt; Yashazz; h00k; MaxDavid; kashtan; adhocprog; awk; demaxxx; dim369; +18 Ответить 1
4. Осипов Сергей (fixin) 27.04.16 10:29
(3) дада, но это должно быть в ДНК, статья в общемто не об этом, но добавлю. ;-)
(2) да, сталкивался с такой шнягой, но что забавно, даже в конфигурациях на бсп они прописаны не для всех документов почему-то. бардачок.
(1) добавили вручную или кодом? если кодом, то все норм, почему бы и нет. или ты предпочитаешь при каждом обновлении руками рисовать? Код надежнее.
5. Евгений Мартыненков (JohnyDeath) 27.04.16 10:43
Как поступаешь с полным планом обмена, когда в конфигурацию добавлены собственные объекты?
6. Иван Иванов (kosmo0) 27.04.16 10:46
Программное добавление элементов на обычную форму:
- если решили программно добавлять элементы формы, которые ранее были на форме в явном виде. Проще всего использовать обработки типа ДекомпиляцияИАнализФорм (их там несколько с схожим функционалом).
- необходим контроль за этой формой. Иначе возможна ситуация - добавили вы свой элемент, а через некоторое время в типовой конфигурации добавили свой элемент и именно на ЭТО ЖЕ МЕСТО. В итоге один из элементов будет перекрыт и его будет не видно.

Добавление внешнего отчета:
- иногда вносятся небольшие изменения в стандартный отчет (например в шапку). И возникает идея не править стандартный, а создать внешний отчет где будут сделаны нужные изменения. В итоге и стандартный не изменили и то что нужно имеем. Возможна следующая грабля - при очередном обновлении типовой конфигрурации стандартный отчет изменяется. А в наш (переделанный) отчет эти изменения автоматом не встанут. И могут возникнуть существенные расхождения между типовым отчетом и нашим.
7. Осипов Сергей (fixin) 27.04.16 11:16
8. Осипов Сергей (fixin) 27.04.16 11:18
(6) ну про внешний отчет это известная тема, но можно отразить для общности, да, внесу.
Что касается декомпиляции, это да, но из пушки по воробьям, обычно добавляется один-два реквизита.
Думаю, если нужно больше, надо нарисовать отдельную форму и написать код, который будет эту форму вставлять в заданную область (аналог декомпиляции, или вложенная форма). Так надежнее и визуальнее.
9. Григорий (suggestive) 27.04.16 11:39
А как же расширения для управляемых форм?
10. Роберт В е р т и н с к и й (v3rter) 27.04.16 12:08
Может, Грамотная доработка 1С ?

Благодарю, полезный мануал.
11. Fomix (fomix) 27.04.16 13:00
12. Денис Лопато (Terve!R) 27.04.16 13:08
Если вы добавили свой документ, то ему хочется добавить типовые общие команды "Движения документа" и "Структура подчиненности". Но если поменять состав документов для типовой команды, появится постоянная проблема при обновлениях.

Это прежде всего касается подписок на события, когда при добавлении своего документа, например в БП 3.0, его нужно прописывать в десяток подписок, что с вероятностью 99% слетит при очередном обновлении. С подписками проще - там только состав объектов и ссылка на процедуру, которую можно не контролировать. Сам не сразу догадался)
13. Евгений Мартыненков (JohnyDeath) 27.04.16 13:25
(7) fixin, копируешь, а дальше как?
При каждом обновлении типового плана сравнивать его со своим скопированным? Это гемор еще тот
14. Осипов Сергей (fixin) 27.04.16 13:40
(13) а что, там серьезные изменения? гггг....
Ну напиши обработку, чтобы проверяла, что все объекты регистрируются и свой код, который убирает то, что отправляться не должно, фигня вопрос.
(10)(11)(12) я работаю для Вас! ;-)
(9) еще не смотрел, как бы не оказалось таким же мертворожденным дитяткой, как бызнес-процессы
15. Евгений Мартыненков (JohnyDeath) 27.04.16 13:56
(14) просвети. Дополни статью планами обмена
16. Осипов Сергей (fixin) 27.04.16 14:12
(15) что именно не понятно? Полный ПО используешь для риб?
Кстати, как вариант, еще можно снять полный ПО с поддержки. Тогда идентификатор вида ПО останется прежним и не будет затираться обновлениями от 1с.
17. ash (ashvik) 27.04.16 14:29
Не освещена тема использования внешних программ для объединения модулей. Их использование позволяет существенно ускорить процесс обновления.
18. Осипов Сергей (fixin) 27.04.16 14:51
(17) это тема отдельной статьи, имхо, сложно выбрать инструмент, вьехать и т.п. но ок, добавлю ваше замечание, что существуют внешние инструменты.

По мне так можно еще включить мою старую добрую обработку "Парсер", которая парсит модули и добавляет вызовы функций.
19. Sergei Disev (viramen) 27.04.16 21:52
(2) Поручик, Забывают разработчики вставлять вызов во все формы
20. Sergey Andreev (starik-2005) 27.04.16 22:38
(14) fixin, ну для кого мертворожденные, а для кого и инструмент. Я, например, в свое время очень много что на них (бизнес-процессах и задачах) делал. Очень удобная штука.
21. vasja ivanov (vasja_yar) 27.04.16 22:48
Лет 5 назад еще норм статья, сейчас все на БСП и управляемых формах. Не описана работа с предопределенными данными. В целом статья для тех кто только начинает рабоать, много букв и ни о чем
22. vasja ivanov (vasja_yar) 27.04.16 22:50
(7)Какой то странный метод...как потом риб делать?
Расширения - не не слышал...
23. Осипов Сергей (fixin) 27.04.16 23:34
(21) я как раз про управляемые формы и писал. а что не так с предопределенными данными, ггыгыгы, там все просто и тупо объединяется.
(22) риб делается как обычно. Расширения не щупал, но там 1с, как обычно, сделала наверно, криво (подозреваю). хотя могу ошибаться. Читал их статью про эти плагины.

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

(20) это как RLS в правах на изменение. Не эффективно. Главный недостаток БП - то что схему можно рисовать только в конфигураторе, а не на прикладном уровне.
24. Sergey Andreev (starik-2005) 27.04.16 23:50
(23) fixin, на прикладном уровне, поверь, тоже можно. Но не всем дано )))
25. Осипов Сергей (fixin) 28.04.16 00:02
(24) молодец, раз нашел нетиповые возможности. но в типовом виде БП - унылый кал
26. Sergey Andreev (starik-2005) 28.04.16 15:23
(25) fixin, да в большинстве случаев описание схемы в конфигураторе уже достаточно для описания процесса и извлечения пользы.
27. Осипов Сергей (fixin) 28.04.16 17:19
(26) ложь. Найди тут штук 3-4 разработки, которые позволяют рисовать БП в прикладном режиме. Почему-то они сделаны не на бизнес процессах. Ключевое слово для поиска "Бизнес-процессы". Кстати они платные 20-50 тысяч продаются. Подумай почему убогих БП от 1С недостаточно, раз люди готовы платить такие бабки.
28. Sergey Andreev (starik-2005) 28.04.16 18:44
(27) fixin, я на базе бизнес-процессов и задач делал достаточно много всяких полезняшек. Схемы в них - далеко не главное, хотя, конечно, красивое, Например, интеграцию с DHL, когда заявка на доставку создается пользователем, потом утверждается руководителем, потом акцептируется сотрудником службы доставки. После этого в другом бизнес-процессе происходит подтягивание заявок и передача их провайдеру, осуществляющему услуги доставки. Потом автоматически заявки в том самом порядке, в котором их обработал специалист службы доставки, выплевываются из принтера по карточке сотрудника. После того, как заявка акцептируется провайдером, пользователь оповещается о выполнении. С бизнес-процессами и задачами это было сделать очень легко и просто. А т.к. задача для всех бизнес-процессов - это один объект, то он прекрасно может жить в списке задач пользователя, которые пользователь должен выполнить и которые двигают процесс по схеме. Тут как раз тот самый системных подход, о котором все говорят, но никто толком не знает, что это такое.
29. Осипов Сергей (fixin) 29.04.16 08:23
(28) чувак, ну что ты мне сказки рассказываешь? Сила БП в точках процесса. Без них список задач можно было в справочнике хранить (вместо объекта задача) и все. Но вот эти точки как раз можно добавить только в конфигураторе.
Чуть родился новый пункт обхода - надо менять схему.
Можно конечно делать виртуальные схемы, которые предусматривают добавление новых участков. Но тогда мы отходим от простоты схемы БП.
Короче 1с задумало гору, а родила мышь.
30. Максим *** (premier) 29.04.16 11:45
(0) fixin, увидел Вашу статью и опять - негативное отношение. Ничего личного. Негатив - в плане изложения материала. Надо (нужно) сделать так! А кто Вам сказал, что надо и нужно делать так, как это делаете Вы? Может быть, Вы рекомендуете так сделать? Разные понятия, согласитесь. Одно - обязывает, другое - предлагает использовать предложенное решение. Ведь подход к программированию у каждого свой. Вы же навязываете свои решения, практически подталкивая программиста следовать им! К тому же, среди на самом деле полезных советов, я например не увидел даже слово "подсистема". Они, как я полагаю, и предназначены для того, чтобы группировать программный функционал в зависимости от степени его назначения. Я свой новый функционал - созданные объекты конфигурации , общие модули, документы, справочники и т. д. рекомендую объединять в отдельную подсистему. По моему опыту, это сильно упрощает процесс обновления конфигураций.
31. Sergey Andreev (starik-2005) 29.04.16 12:18
(29) fixin, кому как. Мне лично нравится. Но тем, кто постоянно все переписывает и переделывает из-за недостатка архитектурного системного мышления с этим трудно. Мне это сложно понять, но, полагаю, таких "мастеров" полно.
32. Осипов Сергей (fixin) 29.04.16 12:56
(31) молодец, ты единственный Гений, который понял задумку 1с, гыгыгы.
Остальные - неучи. Будем благодарны тебе, если в статье раскажешь как нам правильно юзать БП.
А то люди платят разработчикам систем, где можно юзать справочники и регистры для БП по 20-50, а тут самородок нашел способ использования типовых БП... Гений, че...

(30) много воды, что хотели сказать не понятно, о каком негативе идет речь? У меня сугубо практические выкладки, которые экономят время обновления. Будь они написаны хоть матом, я бы с удовольствием почитал, ибо время - деньги. Опыт выстрадан на собственной шкуре, я уверен что так и НАДО делать. Ну не ручками же управляемые формы в типовых конфах править. И кстати, приведите примеры, как использование подсистем упрощает обновление конфигураций.
33. Максим *** (premier) 29.04.16 16:12
(32) fixin, перечитайте комментарии к своей статье "Как грамотно составить резюме". Может, и поймете, что я имел ввиду. А по поводу подсистем: в 1С:Предприятия и обновления конфигураций - изучайте мат. часть. Там можно фильтр установить и при обновлении к Вашей подсистеме обновления не применятся.
34. Sergey Andreev (starik-2005) 29.04.16 18:09
(32) fixin, да я всегда знал, что некоторым танцорам ботинки жмут - бывает. А какие-то там неизвестные разработчики, которым платят неизвестные конторы за неизвестные БП, которые якобы невозможно написать на стандартном механизме - совсем неубедительно звучит.
35. Роман Волошин (BlaSo) 29.04.16 21:30
Использование обычных элементов вместо предопределенных
Можно использовать обычные элементы вместо предопределенных.
Для того, чтобы не было конфликтов кодов, лучше давать им префикс, например код задавать в виде "ПЭ-XXXX".

Лучше использовать предопределенные и обращение по имени, чем в модулях будет написано НайтиПоКоду()
И тем более лучше не менять правила установки кодов, думаю всем понятно с каким кодом будет создан след.объект после добавления вашего "ПЭ-XXXX".

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

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

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

Зачем перебор-то делать:
лпИндекс = лпКолонки.Индекс(лпКолонки.Цена);
или
лпИндекс = лпКолонки.Индекс(лпКолонки.Найти("Картинка")) ;

Добавление поля ввода на обычную форму
Если просто добавить поле ввода ссылочного типа

Подправьте, это касается полей не связанных с реквизитами

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

Или какой-то олень ее удалил :)
Конфигурация полностью типовая, если не включена возможность изменений (проверять надо в меню Конфигурация - Поддержка - Настройка поддержки)

Как при сравнении-объединении определить измененные объекты

НЕЛЬЗЯ (!) делать обновление через пункт сравнение-объединение, таким образом не обновляется Конфигурация поставщика
Режим лучше использовать "Взять из файла", только так форма получится гарантировано идентичной обновлению.
Для обоюдно измененных модулей использовать Индивидуальную настройку
36. Алексей Ермилов (Alex_E) 29.04.16 21:36
(35) BlaSo, ОООООООЙЙЙЙЙЙЙ, как всё запущено)))))
У вас, уважаемый, принцип - без меня всем писец?
37. Роман Волошин (BlaSo) 29.04.16 21:50
(36) Alex_E, нет)
Написал свои комментарии, принимать их во внимание или нет - решать автору)
38. Алексей Ермилов (Alex_E) 29.04.16 22:03
(37) BlaSo, Это понятно, но в
НЕЛЬЗЯ (!) делать обновление через пункт сравнение-объединение, таким образом не обновляется Конфигурация поставщика
Режим лучше использовать "Взять из файла", только так форма получится гарантировано идентичной обновлению.
Для обоюдно измененных модулей использовать Индивидуальную настройку
сразу видится или махровый клюшечник, или...одно из двух...

взять из файла - то песня...

Если я скажу НЕЛЬЗЯ делать обновление продакшп никак, кроме как через обновление, и как готовится это обновление можно почитать...это тоже можно не принимать во внимание)))
39. Осипов Сергей (fixin) 30.04.16 00:37
(34) ну зато ваша гениальная нетленка, которую никто не видел, звучит еще менее убедительно. гыгыгы. Я говорю о выявленных недостатках и называю их, вы говорите о выявленных вами достоинствах, не называя их. Играли бы мы в преферанс, быть бы вам уже битым канделябрами.

(33) но о том, что вашу подсистему обновлять не надо, знаете только вы, не так ли? а вот механизм "снятия с поддержки" гарантированно защищает объект от изменений. Не убедили.

(35) и какой же элемент будет создан после ПЭ-???? как раз ПЭ защищает от включения в общую систему нумерации.
Про отчеты не согласен, как раз справочник внешних - в 90% случаях идеальное решение.
Про перебор принимается, но это не особо принципиально.
А как можно удалить конфигурацию поставщика? ггггг... Снять с поддержки? Это будет заметно. И чрезвычайно маловероятно.
Имелось ввиду окно сравнения-объединения объектов, а не режим сравнения-объединения конфигураций.
40. Sergey Andreev (starik-2005) 30.04.16 11:17
(39) fixin, о, кто-то захотел со своим здоровьем канделябром )))) Ну-ну, поглядел бы я на Вас поближе ))) А то, что ботинки жмут - ну так или разнашивать надо, или сменить. Помните, как в одном замечательном подростковом фильме Брюс Ли учил молодого парня постоять за себя? Там было про то, что в полный стакан сложно что-то налить. Это про Вас.

ЗЫ: Кстати, слово "Вы" культурные животные с большой буквы пишут, если, конечно, это не обращение к массам. Но вроде тут кроме меня никто про БП ничего не писал.
41. Осипов Сергей (fixin) 30.04.16 11:44
(40) буду благодарен если вы принесете хоть немного полезной информации по 1с в нашу беседу.
42. Sergey Andreev (starik-2005) 30.04.16 11:52
(41) fixin, смотря что считать полезной информацией. У нас с Вами два мнения: кто-то считает, что БП - штука недоработанная, т.к. нельзя ее менять в ходе эксплуатации механизма, не влезая в конфигурацию; кто-то другой думает иначе и считает, что нет никаких препятствий реализовать подобное поведения по типу допреквизитов документов. Да, схема сама по себе не "перерисуется", конечно, но ведь не в схемах дело, а в процессе, который управляет движением задачи от одного исполнителя или группы исполнителей другому (или другой группе). В этом и есть основной смысл БП.
43. Осипов Сергей (fixin) 30.04.16 12:21
(42) почему статичная схема неудачна, я высказался. Если хотите аргументированно спорить, объясните, как вы используете статичные схемы для изменяемых пользователем процессов. Создаете библиотеку шаблонов вложенных БП? ну так это криво и нелогично для пользователя.

Потому люди и пишут платные разработки по БП, что механизм от 1с неудобен пользователю.
44. Алексей Ермилов (Alex_E) 30.04.16 13:01
Сама доработанная программа в мире - это тетрис. У 1С, Навиджена. Сапа пока не наблюдается ни одного решения, которое не нуждается в обновлениях или настройках)))))
45. Sergey Andreev (starik-2005) 30.04.16 13:31
(43) fixin, т.е. Вы считаете, что допреквизиты в справочниках и документах - это нелогично? Тогда чем они лучше БП, если для их изменения логично лишь лезть в конфигуратор?

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

Т.е. у Вас просто нет понимания, зачем нужны эти самые процессы. Из этого и исходит Ваш неверный вывод о том, что статичность процесса является его узким местом. Для меня же ни статичность процесса, ни статичность задачи узким местом не являются, т.к. изменение процесса так или иначе меняет поведение оного, что вполне обосновывает изменение схемы процесса в конфигураторе (и все!), после чего задачи начинают двигаться другой дорогой. Т.е. меняется лишь схема - никакой реструктуризации, никакой доработки. Но, повторюсь, это можно сделать и через механизм допреквизитов (дополнительных точек маршрута с логикой, описанной в справочнике/регистре/табличной части). Но это мне лично ни разу не пригодилось.
46. Роман Волошин (BlaSo) 30.04.16 13:49
(38) Alex_E,
Ха-ха, с клюшками я в принципе не работаю.
Объясняю почему нельзя обновляться в обход механизма стандартного обновления:
Все банально просто, если вы не обновите Конфигурацию поставщика, то фактически исчезает элементарный механизм проверки а что-то же в конфигурации доработано.
Я так понимаю вам ни разу не попадались конфигурации, которые обновляли именно через Сравнение-объединение, и сначала приходится выяснять какое обновление там было установлено целиком, где куски обновлений следующих, а где вообще доработки без комментариев.

"взять из файла - то песня... "

Имелся в виду режим объединения объектов, взамен предложенного "Объединить с приоритетом..."

(39) fixin, Если в справочнике был объект с последним кодом, например 000009, и вы добавляете какой-нибудь ПЭ-001, то следующему систему присвоит код +1 к максимальному (ПЭ-002)
Про перебор принимается, но это не особо принципиально.

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

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

Значит я недопонял)))
47. Роберт В е р т и н с к и й (v3rter) 30.04.16 13:56
А еще бывает конфликт интересов админ-франчайзи, когда приходящий программист всеми силами пытается снять базу с поддержки, чтобы регулярно платно ее обновлять, а админ сопротивляется и показывает инфостартовские обработки для пользовательских "хотелок", оставляющие базу типовой, но не лезет сам их прикручивать. В итоге база остается типовой ))
48. Алексей Ермилов (Alex_E) 30.04.16 14:51
(46) BlaSo,
Все банально просто, если вы не обновите Конфигурацию поставщика, то фактически исчезает элементарный механизм проверки а что-то же в конфигурации доработано.
- кто сказал? Откуда сей бредовый вывод? Стандартное обновление как раз через обновление - сравнение и обновление - из клюшек...

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

Имелся в виду режим объединения объектов, взамен предложенного "Объединить с приоритетом..."
раньше было сложнее. сечас на этапе объединения снятой с поддержки конфигурации (у меня всегда это копия базы клиента, на которой я готовлю обновление) тексты модулей просто включаются в обновление, с изменёнными реквизитами чуть сложнее, но там то же можно (не всегда конечно) решить на этапе объединения (объединение здесь всегда имеется ввиду через Конфигурация - Поддержка - Обновить конфигурацию), если не получается на этапе объединения, то всегда вставляю затычку, которая не позволяет потерять данные на рабочей базе клиента - http://infostart.ru/public/333873/

Обновление через сравнить....клюшечный подход)))))
49. Роман Волошин (BlaSo) 30.04.16 15:37
(48) Alex_E, дабы не виделось то что хочется видеть, а не то что написано:
Нормальное (!) обновление типовой конфигурации (оно же есть стандартное): Конфигурация - Поддержка - Обновить конфигурацию
Некорректное, но периодически встречающееся: Конфигурация - Сравнить, объединить с конфигурацией из файла...

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

вангонутость у Вас страдает - попадались - решается просто - снимается с поддержи совсем (остаётся одна основная конфигурация), потом сравнивается с того же релиза типовой, и принимается решение (90% случаев вертается типовая)))))

У меня ничего не страдает, иногда просто не возможно определить точно релиз, потому что конфигурация является чем-то средним между двумя или тремя релизами :)

50. Алексей Ермилов (Alex_E) 30.04.16 15:58
(49) BlaSo,
теперь в контексте понимания терминов думайте что было написано выше
странно, выше было написано
се банально просто, если вы не обновите Конфигурацию поставщика, то фактически исчезает элементарный механизм проверки а что-то же в конфигурации доработано.
Я так понимаю вам ни разу не попадались конфигурации, которые обновляли именно через Сравнение-объединение, и сначала приходится выяснять какое обновление там было установлено целиком, где куски обновлений следующих, а где вообще доработки без комментариев.

- где я говорил, что не нужно обновлять конфигурацию поставщика, и откуда Вам известно, что мне ни разу не попадались
конфигурации, которые обновляли именно через Сравнение-объединение
?!!!
Если у меня образовывается новый клиент, первое, что я делаю - это проверяю конфигурацию на соответствие типовой!!!
ТО, что конфа у клиента "под замком"не факт, что там типовая, дальше повторяться не буду, см. (48)
51. Роман Волошин (BlaSo) 30.04.16 16:44
(50) Alex_E, Ну так все правильно :)
если вы не обновите Конфигурацию поставщика, то фактически исчезает элементарный механизм проверки а что-то же в конфигурации доработано

Конфигурация поставщика НЕ обновляется только при неправильном накатывании апдейта (Конфигурация - Сравнить, объединить с конфигурацией из файла...)
соответственно в таком случае бессмысленно сравнивать со старой конфигурацией поставщика
52. Алексей Ермилов (Alex_E) 30.04.16 17:00
(51) BlaSo, Потому и говорю, что правильное онвление через обновление)))сравнение и прочая хрень - исключения, от которых отказаться нельзя, но это таки исключения из правил))))
53. Осипов Сергей (fixin) 30.04.16 19:34
(51) мы всегда оставляем конфу поставщика, следовательно обновление через Поддержка - Загрузить из файла. ;-)

(45) много букв еще не значит много смысла. БП, рисуемые в конфигураторе, отображают точки маршрута. В реальных бизнес процессах эти точки хотят рисовать сами пользователи. т.к. процессы динамичны. 1с такой возможности не дает. Следовательно ее решение годится только там, где есть простейшие статичные БП, что собственно говоря мы и видим, т.к. в типовых БП лишь для декораций используются. Не пошли они в ширнармассы.
54. Sergey Andreev (starik-2005) 01.05.16 13:32
(53) fixin, вот это показывает то, что темой Вы не владеете. Точки БП - это то, как аналитик фиксирует потребности бизнеса в схеме решения задачи, а не то, что там себе выдумывает пользователь. Хоть бы вики почитали что-ли:
Бизнес-процесс — это совокупность взаимосвязанных мероприятий или задач, направленных на создание определённого продукта или услуги для потребителей. В качестве графического описания деятельности применяются блок-схемы бизнес-процессов.


По поводу динамичности процесса, то за это отвечает механизм ветвления, разделения и слияния. Учите мат.часть.
55. Осипов Сергей (fixin) 01.05.16 19:37
(54) хохохо, вместо конкретики вы ушли в буквоедство. счастливого пути.
56. Sergey Andreev (starik-2005) 01.05.16 21:20
(55) fixin, да, аргумент что надо. Понятно, почему Вас в Связной не взяли.
57. Осипов Сергей (fixin) 01.05.16 22:19
(56) в случае появления конкретики продолжу с Вами дискуссию.
58. Sergey Andreev (starik-2005) 02.05.16 09:15
59. борян петров (TODD22) 02.05.16 09:46
(35) BlaSo,
Лучше использовать предопределенные и обращение по имени, чем в модулях будет написано НайтиПоКоду()

Крайне вредная рекомендация про предопределённые элементы.... особенно в РИБе.
60. Осипов Сергей (fixin) 02.05.16 10:18
(58) ок
(59) не вижу ничего плохого в НайтиПоКоду, ровно как и в использовании операторов Перейти. Главное четко понимать преимущества того или иного решения.
61. борян петров (TODD22) 02.05.16 10:23
(60) fixin, А я и не писал что это плохо... плохо раздавать советы про предопределённые элементы.
62. Роман Волошин (BlaSo) 03.05.16 15:23
(59) TODD22, Давайте конкретней, если пишите плохо, то напишите почему.
Единственный минус, предопределенных элементов, это НЕ гибкость настройки для пользователя.

(60) fixin, Минуса НайтиПоКоду:
  • Зависит от данных, пользователи по тем или иным причинам могут изменить коды
  • Поиск использования конкретного элемента в конфигурации (согласитесь или нет, но поиск по тексту НайтиПоКоду("00001") как-то хуже чем поиск по конкретному имени, тем более если у вас много разных элементов)

На больших и средних проектах, я при необходимости создаю специальный справочник, куда забрасываю предопределенные значения, а в режиме Предприятия для них указываются значения. Такой себе аналог констант, все настройки в одном месте и при чтении кода видно какое значение используется.
63. Осипов Сергей (fixin) 03.05.16 21:38
(62) хохохо, если вы создаете код не в диапазоне работы пользователя, т.е. код вида ПЭ-*****, то пользователь ну ни в жизнь не догадается создать элемент с таким же кодом, к тому же задублировать ему система не даст. А поменять код имеющегося элемента ему тоже мозгов не хватит. Нет, можно конечно, страховаться и от падения метеорита из космоса, но мы же прикладные программисты, автоматизируем бухучет, а не взлет-посадку Боинга. Прошу соотносить риски и затраты.
64. al petrov (petrov_al) 04.05.16 08:52
при всем моем уважении к вам, с появлением расширений половина из написанных вами рекомендаций становиться невостребованной или для крайне редких разработок
65. Осипов Сергей (fixin) 04.05.16 10:48
(64) ну надо будет покурить расширения, да. Думаю, это не панацея.
66. Осипов Сергей (fixin) 04.05.16 11:15
Касательно расширений: http://v8.1c.ru/o7/201410ext/
Это, конечно, хорошо, но пока не панацея.
Можно перехватывать только события управляемых форм и обрабатывать их по-своему.
Но нельзя изменить алгоритм общего модуля или менеджера документа. Возможно, 1с доработает этот момент, но пока расширения - не универсальный инструмент, применимый чаще для интерфейсных случаев, а не для изменения логики решения.

Для логики опять же остаются только подписки (их в расширениях юзать нельзя, что странно) и непосредственная правка кода.
67. Валерий К (klinval) 04.05.16 16:29
Доработка общих команд типа "Движения документа" и "Структура подчиненности"
...
Поэтому можно добавить свои команды, скопировав обработки модуля команды (они там примитивные).

В своих командах указать свой собственный состав документов для команды.

У нас в базе тоже есть своя команда на структуру подчинённости. Её делали давно и скорее всего не я. Сейчас глянул: она за собой потянула создание своего "критерия отбора" и общей формы структуры подчиненности. База: БП 3.0
Вы как-то без этого обошлись или просто забыли об этом в статье упомянуть?


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

При этом если сравнения вылетит, придется сохранять все сначала.

Поэтому если объем изменений большой, можно выписать список дважды измененных объектов (можно сделать скриншоты) и сравнивать в обычном режиме, а не через обновление.

В 8.3.8 вроде проблема уже решена. Ни разу не юзал, но описание тут. Если нет подписки на ИТС, то вкратце появилась возможность выгрузить (в том числе и автоматически выгружать) и загрузить настройки.
Сохранить настройки – позволяет сохранить в файл выбранные объекты и свойства для объединения, режимы объединения, настройки объединения модулей, форм и табличных документов. Сохраняются только те настроки объединения, которые отличаюбтся от настроек по умолчанию. Сохранение доступно в том случае, если в текущих настройках объединения имеются настроки, отличные от настроек по умолчанию.
...
Загрузить настройки… – настройки окна сбрасываются к настройкам по умолчанию, а затем выполняется загрузка настроек объединения из файла. Загруженный файл становится текущим для выполнения команды сохранения и автоматического сохранения настроек.
68. Валерий К (klinval) 04.05.16 17:09
(66) fixin, по поводу расширений соглашусь, что вроде как штука хорошая, но не панацея. Тоже их не пробовал на практике, но когда только вышли много читал про них и пришёл к выводу, что будет только сложнее с ними работать. Опустим момент, что общие модули нельзя изменять, допустим они это реализуют. Допустим есть изменения вида:
Процедура 1СовскаяПроцедура()
//Код 1С
//Наш код аккуратно меняющий механизмы 1С под нас
//Код 1С
КонецПроцедуры
...Показать Скрыть

Дальше как я понимаю я в расширение добавляю всю эту процедуру. И если 1С-овцы её изменят при обновлении я этого не замечу. Только интерактивно пользователь когда увидит (если заметит) мы поймём что что-то не так. При идеале конечно должны помочь выявить все эти изменения тесты, но во-первых не у всех они есть, во-вторых под каждый чих их придётся писать (было N часов на программирование, стало N*2), да и в-третьих тесты тоже не идеальны и пишутся не на 100% случаев и могут пропустить. А в процессе обновления пропустить дважды измененную процедуру труднее. Плюс если мы выявили такую ситуацию: в окне сравнения сейчас проще изменения внести чем после обновления анализировать в разных окнах код до и код после.

А когда дополнений мало и они именно расширяют, а не изменяют (как в большинстве случаев) что-то в типовой конфе, то можно попробовать и расширения.
69. Яков Коган (Yashazz) 04.05.16 17:57
Гений1С в своём духе. С очень умным видом приведены или устаревшие, или частные, или вообще сомнительные способы. Зато претензия на всеобщесть. Зато куча плюсов, хотя следование рекомендациям as is может плохо кончиться. И как всегда нежелание услышать собеседника в комментах. И главное, всё это уже стопицот раз было в тех или иных формах публиковано, но нет же, надо и свою нетленку выложить)

Единственно, что скажу: ни в коем случае не связывайтесь с расширениями. Лучше курочить типовую и потом её обновлять - там всё зависит от вас, вашей грамотности и правильности кода. А в случае применения расширений всё будет зависеть от неуправляемого множества багов и косяков, которые авторы сего шедевра допустили в платформе.
70. борян петров (TODD22) 04.05.16 18:26
(62) BlaSo,
Давайте конкретней, если пишите плохо, то напишите почему.
Единственный минус, предопределенных элементов, это НЕ гибкость настройки для пользователя.

Если бы минус был бы только с гибкостью настройки для пользователя то вот такая обработка была бы не нужна:
http://infostart.ru/public/305892/
Можете по количеству скачавших понять сколько минусов с предопределёнными элементами. Например у меня была проблема в РИБе когда на 10 магазинов задвоились предопределённые элементы и разлетелись по 150 узлам... Конфигурация была самописная и на предопрелённые элементы было завязано огромное количество функций. И вот после их задвоения и обмена вся сеть встала. Минусов на самом деле больше чем плюсов....
71. Алексей Ермилов (Alex_E) 04.05.16 18:55
(69) Yashazz,
Единственно, что скажу: ни в коем случае не связывайтесь с расширениями. Лучше курочить типовую и потом её обновлять - там всё зависит от вас, вашей грамотности и правильности кода. А в случае применения расширений всё будет зависеть от неуправляемого множества багов и косяков, которые авторы сего шедевра допустили в платформе.
- как то вполне в духе первого предложения первого обзаца предыдущего поста, только про Вас))))

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

Конфигурация на БП 3.0, включена возможность изменения, обновления бывало выходили по паре раз за день, база легко обновляется, используются свои общие модули для подписок на события, свои регистры и справочники - это в изменениях типовой, и - главное -все эти изменения начиная с 8.3.6.* проделываются в окне сравнения, а вот формы типовых справочников/документов, где нужны были изменения, отчеты и обработки и своя подсистема "Алко" вполне себе сидят в расширении, и за год изменения пришлось вносить может пару раз, причем минимальные... С подпискам и на события и некоторыми изменениями общих модулей типовой это случалось гораздо чаще))))
72. Яков Коган (Yashazz) 04.05.16 19:28
(71) Alex_E, ну почитайте мою статью про расширения (http://infostart.ru/public/441730/) и опровергните хоть единый факт из неё и идущих к ней комментариев. Кривой, ненадёжный, нестабильный механизм - такое нельзя использовать в серьёзных промышленных решениях. Насчёт модулей менеджера можете не рассказывать, вполне себе они нихрена не заменяют, если одно расширение вдруг не примонтировалось, а в другом есть их вызовы. Словом, если очень сильно повезёт и комариный чох на вашей стороне, то добавлять свои обработки можно. Не более. Если хотите спать спокойно после обновления платформы)))
73. Алексей Ермилов (Alex_E) 04.05.16 19:37
(72) Yashazz, Да я сплю спокойно, вот уже год, а если что то делать криво, то потом не стоит удивляться, что не работает...

Это не токо к расширениям относится))))

Про опрровергать что-то из Вашей статьи, оно мне надо? Вы из моего поста что опровергнули? Что модуль менеджера обработки из расширения
вполне себе они нихрена не заменяют, если одно расширение вдруг не примонтировалось, а в другом есть их вызовы.
- ну дык то прямое подтверждение, что если что-то сделать криво - чего удивляться, что не работает? Кто заставляет делать вызов из другого расширения, и уж тем более пускать в продакш не проверив?))))
74. Осипов Сергей (fixin) 04.05.16 23:17
(67) klinval, да, прикольно появились кнопочки сохранения и загрузки. На практике еще не юзал, но кнопочки уже видел.

(68) ну батенька, вы захотели, чтобы расширение замечало, что процедура менялась. Это из области фантастики, да и не нужно особо. Надо тестировать как-то расширение на новых релизах. Автотесты вам в помощь, если это серьезное расширение.

(69) буду признателен, если вы выложите свои "гениальные" советы, а то беспочвенно очернять не конструктивно. Конструктивные замечания принимаются - видите, я даже посмотрел расширения. Ничего крамольного в них не вижу.

(70) ну в РИБ надо внимательно относиться к предопределенным, таки да. А не пенять потом на то, что вы не изучили, как работают предопределенные элементы в новых платформах.

(71) охотно верю, но без подписок и перехвата процедур и участков кода общих модулей и модулей документов это какое-то неполноценное решение, пусть допиливают. Это как RLS на измненение - ненужное и избыточное.

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



75. Алексей Ермилов (Alex_E) 04.05.16 23:30
(74) fixin,
буду признателен, если вы выложите свои "гениальные" советы, а то беспочвенно очернять не конструктивно. Конструктивные замечания принимаются - видите, я даже посмотрел расширения. Ничего крамольного в них не вижу.
буду признателен, если будет пояснение в каком именно месте и чё я так очернил?

По поводу советов и пр. выложил здесь кастомизированное решение на расширении - вырезка из той конфигурации, о которой говорил выше - http://infostart.ru/public/363185/

Ещё один совет, не про расширение - проверять изменённые типовые объекты (реквизиты объектов) на этапе подготовки обновления перед обновлением http://infostart.ru/public/333873/ - вроде пустяк, забыть где нить галочку поставить, а вот когда аукнется, уже и не пустяк будет)))
76. борян петров (TODD22) 05.05.16 06:03
(74) fixin,
А не пенять потом на то, что вы не изучили, как работают предопределенные элементы в новых платформах.

А никто и не пеняет. Изучили как работают. Только изучение работы от ошибок не избавляет.... Так что мимо...
77. q_i 26.05.16 15:28
Если просто добавить поле ввода ссылочного типа, то не будет работать кнопка выбора. Как эту проблему решить, пока не понятно, поэтому надо добавлять реквизит формы вручную.

Без добавления реквизита формы вручную:
...
//Поле.Данные = "_ДокументРазовыхНачислений";
Поле.ТипЗначения = Новый ОписаниеТипов("ДокументСсылка.РегистрацияРазовыхНачисленийРаботниковОрганизаций");
...
AlexGroovy; +1 Ответить
79. Никита Грызлов (nixel) 17.06.16 17:54
(78) Sergey Ivanov,
хороший вброс на вентилятор)
80. Осипов Сергей (fixin) 17.06.16 23:55
(78) руки не пробовал перешить чуть повыше?
81. Антон Чарушкин (hulio) 23.06.16 13:45
Уважаемые коллеги, использующие методы "НайтиПо...()", убедительная просьба: делайте функции-обертки для вызова этих методов.
Недавно столкнулся с конфигурацией, в которой конструкция "КакаятоСсылка = Справочники.КакойтоСправочник.НайтиПоКоду("000001")" встречалась раз эдак 300 или даже больше.
Спрашивается, вот что мешало сделать функцию в общем модуле
Функция НужнаяМнеСсылка() Экспорт
   Возврат Справочники.КакойтоСправочник.НайтиПоКоду("000001");
КонецФункции
...Показать Скрыть

?
cool.vlad4; +1 Ответить 1
82. Ийон Тихий (cool.vlad4) 23.06.16 13:58
(81) hulio, я такой же трешняк бывало видел. более того некоторые особо одаренные, делают глобальные переменные КакойтоСправочник = Справочники.КакойтоСправочник, поскольку видимо им лень писать Справочники.КакойтоСправочник. жаль нельзя задавать правила, по которым на некоторые участки кода выдавалось бы сообщение об вероятной ошибке .
и имхо код вообще не должен быть жестко прибит к каким-то определенным данным (исключения есть, правда, но на то они и исключения). т.е. нужно выносить значение либо в форму выбора пользователем, либо в константу, либо куда еще. поскльку есть риск нарваться на неприятности. нет никаких гарантий, что через какое-то количество времени кто-нибудь из пользователей не запустит обработку смены кодов/наименований и т.п.