Как облегчить обновление нетиповой конфигурации?

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

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

или как я обновил УПП с 1.2.5 до 1.2.28...
В результате:
1с 8.1 УПП 1.2.28 со всеми изменениями и рабочими внешними обработками
размер базы 100 гб за счет частичной свертки базы за 2 года (пока без удаления документов — база будет ещё меньше).

 

Было дано:
Сервер IBM на 2х четырехядерных XEON по 2Ггц, 16 Гб оперативной MS SQL 2000 1с 8.1 УПП 1.2.5 с изменениями в формах и модулях ключевых документов и справочников, несколько десятков внешних обработок и печатных форм — замена типовых. средний размер базы за время обновления 110-120 Гб содержание базы на начало обновления: производство, торговля(крупный и мелкий опт) и бухгалтерия с 2006 года; несколько тысяч контрагентов; от 10000 до 20000 торговых документов в месяц. перерыв в работе: с 19 часов субботы до 8 утра воскресенья. Ну и иногда 15-20 минут в день в районе обеда и 1 час где-то в промежуток между 23 и 4 часов ночи.

В результате: 1с 8.1 УПП 1.2.28 со всеми изменениями и рабочими внешними обработками размер базы 100 гб за счет частичной свертки базы за 2 года (пока без удаления документов — база будет ещё меньше).
После некоторых событий досталась мне одному УПП 1.2.5. Её конечно до этого периодически обновляли, но в тот момент последний доступный релиз был версии 1.2.19. Сначала я решил обновить сразу до последнего релиза. Но короткий анализ показал, что этого лучше не делать по нескольким причинам:
  1. При обновлении структуры конфигурации, а не только кода, требуется реструктуризация соответствующих метаданных. При больших объемах данных это занимает очень много времени.

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

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

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

(подробнее читать тут  http://www.infostart.ru/public/18596/)

На первых 3 пункта по отдельности можно было забить (а до 4го ещё тогда не дошел), но все вместе их игнорировать сложно.

Опущу технологию обновления — в общих чертах она совпадала с:

http://www.infostart.ru/public/19310/

http://www.infostart.ru/public/18562/

 

Резонные вопрос — а о чем тогда писать дальше? А вот есть плохо раскрытый пункт про работу руками...в том смысле, что перенос изменений в обновленные объекты. Я хотел написать про облегчение/уменьшение внесения как раз этих ручных операций. Далее пойдет описание событий, кому не интересно переходите к Заключению.

Что облегчило первый перенос - так это почти полностью комментированные изменения. Если этого не было сделано, то сделать это нужно обязательно. Выявить изменения можно запустив Сравнение конфигураций — Конфигурации поставщика и Конфигурации базы данных. У меня уже это было сделано.

Долго ли коротко, последовательно начал переносить изменения. Просто копировать код не получилось. Обновились и модули, в которые вносились изменения, и вызываемые процедуры из общих модулей, и сама структура метаданных. Таким образом, сначала приходилось разбираться зачем сделали изменение, а потом уже частенько заново писать код. Но сложнее всего было с формами: заново вносить изменения в форму — нудная и долгая работа. И опять — это был не конец. Остались внешние печатные формы и обработки, которые использовали типовые функции и процедуры. В них точно также пришлось разбираться заново и искать вызов типовых процедур (менялись названия, модули размещения и кол-во параметров). Особо хочется поблагодарить разработчиков 1с за замену функции ЗначениеНеЗаполнено на ЗначениеЗаполнено... Но вот, наконец, было закончен перенос изменений и я выгрузил cf файл. Как раз к новогодним праздникам и поспел. Обновил конфигурацию на основной базе, объединил с cf файлом...и запустил обновление конфигурации БД... Через несколько часов выявилась и критичность 1 пункта — времени. Конфигуратор отвалился с радостным сообщение о нехватке памяти... Есть такая беда с фрагментированностью оперативной памяти (или как-то так, на старых платформах приводило к ошибке SDBL). Лечится перезагрузкой. В общем, перезагрузил и всё заново. Если бы не такие большие праздники — не успел бы. Хорошо хоть с пакетом обработок проблем не случилось (хотя чуть позже столкнулся с проблемой для Бухгалтерии — пакет обработок выдавал ошибку после длительного процесса). Обновление случилось на грани и заняло несколько сотен часов.

Повторять такое обновление мне хотелось — начал думать как облегчить следующее.

Для начала я решил уменьшить количество измененного кода в типовых модулях. Открываем конфигуратор — какая интересная ветка в конфигурации — «Подписки на события» http://v8.1c.ru/overview/Term_000000153.htm. Достаточно много изменений в конфигурации были сделаны для того, чтобы проверять и ограничивать изменение данных. Именно для таких изменений хорошо подходит подписки на события. Завел общий модуль для подписок и насоздавал оных для замены части измененного кода. Обычно изменения превращались в процедуры, которые:

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

устанавливает какое-то конкретное значение в объекте перед/при его записи

выводит некоторое сообщение

делает дополнительные движения

Но все изменения таким образом переделать не получилось. Остались изменения, связанные с работой форм, полностью самописные функции и процедуры и им подобные. Для того, чтобы облегчить перенос этих изменений при обновлений нужно было уменьшить их объем. Для этого создал общий модуль НашМодуль и загнал туда все самописные функции и процедуры, естественно с ключевым словом Экспорт, если необходимо. Но на этом останавливаться не стал — куски дописанного кода заменил вызовом функций и процедур, которые поместил опять-таки в НашМодуль. Далее последовали куски измененного кода — небольшие изменения я оставил на месте пометив в комментариях в том числе и причину изменений, а вот большие изменения перенес в НашМодуль вместе с последующим типовым кодом. В измененные типовые процедуры добавил вызовы этих процедуры и функций, а после них подходящие по смыслу переходы: Возврат, Прервать, Продолжить. Всё, конечно, изменить малой кровью не получилось, но при последующих обновлениях перенос измененного кода существенно облегчился. Теперь достаточно получить список измененных два раза (относительно основной конфигурации и относительно обновленной), переписать куда-нибудь (хоть в блокнот) список объектов с парой строк измененного кода и после обновления проверить работоспособность функции и процедур в модуле НашМодуль.

Следующее, что я сделал — это вдруг увидел замечательную обработку «Декомпиляция и анализ форм с генерацией кода формы» http://www.infostart.ru/public/22147/. С помощью этой обработки я перевел все изменения в формах в код, который запихнул в тот же самый НашМодуль, а их вызов в модули форм в процедуры ПриОткрытии или ПередОткрытием. И вуаля! Никаких изменений в формах — только код, обновлять который уже много легче.

И всё вроде бы было замечательно...Но осталось несколько десятков внешних обработок и печатных форм. Заново в них исправлять из-за смены модуля, где сидит нужная функция — то ещё удовольствие. Решение было логическим продолжением предыдущих — вызов типовых был перенесен в НашМодуль, а во внешних обработках используется обращение к НашемуМодулю. Таким образом, после обновления достаточно будет проверить НашМодуль и не лазить по всем обработкам.

Закончив все предварительные изменения в конфигурации, я перешел к следующему обновлению. Делал я его уже более классическим способом через файл обновления. Только теперь мне не пришлось сравнивать формы и заново переносить гигантские куски кода или переделать типовые процедуры в нескольких местах. Обычно изменения сводились к добавлению 1-5 строчек в начало или конец процедуры... Вместо предыдущих сотен часов - обновление заняло около 8 часов!!! Причем теперь время обновления не зависит от дотошного знания изменений в конфигурации, т. к. изменений этих в типовых объектах — минимум. Кроме того, не приходится каждый раз обновлять множество внешних обработок!

В дополнении хочу дать ссылку на ещё один способ, прекрасно дополняющий, всё что здесь написано: http://www.infostart.ru/public/16980/ .

 

Заключение

 

Итак, что нужно делать, чтобы облегчить обновление?

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

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

2. Вынос изменений, связанных с записью и обновлением объектов в Подписки на события

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

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

5. Использование обработки «Декомпиляция и анализ форм с генерацией кода формы» http://www.infostart.ru/public/22147/ для изменения форм объектов — не нужно сравнивать формы и переносить изменения в них, а только вызов процедуры.

 В результате скорость обновления нетиповой конфигурации возрастает в несколько раз (в моем случае с пары сотен часов, до 8)

 

 

Приложение 1. Примеры процедур и функций

 

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

 

Процедура НЕТРОГАЕМГРУППЫ(Источник,Отказ) Экспорт

    Если
Источник.ОбменДанными.Загрузка ИЛИ ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда
        Возврат;
    КонецЕсли;

    Если
Источник.ЭтоГруппа Тогда
       
Отказ=Истина;
    КонецЕсли;
КонецПроцедуры


 

Пример, когда при записи реализации в её свойства записывается основной менеджер контрагента, если ещё не заполнено

 

 

Процедура УстановкаТорговогоПредставителяРеализацииПриЗаписи(Источник, Отказ) Экспорт //mav

   
Если Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    Если (НЕ
ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.нашБухгалтер)
            И НЕ
ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.ПолныеПрава))
            И
ПроверкаДатыНаЗапрет(Источник.Дата) Тогда

        Сообщить("Число дней превышено. Проводить нельзя.");
       
Отказ=Истина;
        Возврат;
    КонецЕсли;

   
Запрос=Новый Запрос();
   
Запрос.Текст="ВЫБРАТЬ
                 |  ЗначенияСвойствОбъектов.Значение
                 |ИЗ
                 |  РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                 |ГДЕ
                 |  ЗначенияСвойствОбъектов.Свойство.Код = ""00032      ""
                 |  И ЗначенияСвойствОбъектов.Объект = &Ссылка"
;
   
Запрос.УстановитьПараметр("Ссылка",Источник.Ссылка);
   
Результат=Запрос.Выполнить().Выбрать();

    Если
Результат.Следующий() Тогда
        Если
ЗначениеЗаполнено(Источник.Сделка) Тогда
           
Запрос.УстановитьПараметр("Ссылка",Источник.Сделка);
           
Результат1=Запрос.Выполнить().Выбрать();
            Если
Результат1.Следующий() Тогда
                Если
Результат1.Значение<>Результат.Значение Тогда
                   
Сообщить("Не совпадают менеджеры. Заказ-"+Результат1.Значение+", Реализация-"+Результат.Значение);
                КонецЕсли;
            Иначе
                Если
Результат.Значение<>Источник.Контрагент.ОсновнойМенеджерПокупателя Тогда
                   
Сообщить("Не совпадает Основной менеджер-"+Источник.Контрагент.ОсновнойМенеджерПокупателя+" и Реализация-"+Результат.Значение);
                КонецЕсли;
            КонецЕсли;
        Иначе
            Если
Результат.Значение<>Источник.Контрагент.ОсновнойМенеджерПокупателя Тогда
               
Сообщить("Не совпадает Основной менеджер-"+Источник.Контрагент.ОсновнойМенеджерПокупателя+" и Реализация-"+Результат.Значение);
            КонецЕсли;
        КонецЕсли;

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

        Если
ЗначениеЗаполнено(Менеджер) Тогда
           
Рег=РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
           
Рег.Активность=Истина;
           
Рег.Значение=Менеджер;
           
Рег.Объект=Источник.Ссылка;
           
Рег.Свойство=ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00032      ");
           
Рег.Записать();
           
//Сообщить("В реализации установлен менеджер "+Менеджер);
       
КонецЕсли;
    КонецЕсли;

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


Пример использования декомпиляции форм для создания дополнительных элементов формы. В данном случае добавляется новая колонка в форму реализации. Реквизит "Дата выработки" был предварительно добавлен в реквизиты табличной части документа - это совершенно не мешает обновлению

 

Процедура mavСформироватьВнешнийВидЗаказПокупателя(ЭлементыФормы) Экспорт

   
//-------------------------------------
   
Колонка = ЭлементыФормы.Товары.Колонки.Вставить(19,"ДатаВыработки");
   
Колонка.УстановитьЭлементУправления( Тип("ПолеВвода") );
   
Колонка.Имя = "ДатаВыработки";
   
Колонка.Данные = "ДатаВыработки";
   
Колонка.Ширина = 15;
   
Колонка.ТекстШапки = "Дата выработки";
   
//.....................................
   
Колонка.ЭлементУправления.ВертикальноеПоложение = ВертикальноеПоложение.Верх;
   
Колонка.ЭлементУправления.КнопкаОчистки = ложь;
   
Колонка.ЭлементУправления.ОграничениеТипа = Новый ОписаниеТипов("",,,);
   
//Колонка.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("Строка",,,);

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

 

Пример для пункта 4. Создание "ярлыков" на типовые модули:


Функция mavПолучитьКурсВалюты(Валюта, ДатаКурса) Экспорт

    Возврат(
МодульВалютногоУчета.ПолучитьКурсВалюты(Валюта, ДатаКурса));

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



 

 

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Alraune 1476 21.03.10 23:00 Сейчас в теме
Спасибо. Очень нужная информация.
2. anig99 2720 22.03.10 08:16 Сейчас в теме
Сегодня ещё постараюсь добавить примеры кода
3. Шёпот теней 1765 22.03.10 09:29 Сейчас в теме
я конечно уже старый ... и мне не понять многого ... но когда я читаю такие статьи невольно закрадывается такое ощущение будто 1С это нанотехнология ...

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

это я относительно непонятной для меня усложнЁнности 1С и твоей статьи, как мне кажется поддерживающей эту усложнённость ...

... такое ощущение что "сложность" это цель ...

... вот ...
Ироида; kogon; +2 Ответить
4. anig99 2720 22.03.10 09:43 Сейчас в теме
(3) Насчет усложнения у 1с - соглашусь отчасти. Они, конечно, что сами усложняют, но что-то вынуждены усложнять для соответствия требованиям государства... Взять хотя бы тот же расчет среднего заработка - это же кошмар какой-то...
А насчет статьи... Те же самые философы тоже любят писать толстенькие и не очень книжки, где обмусоливают с разных сторон одну и ту же мысль. И делают они это иногда тоже вынуждено - чтобы понять одну казалось бы простую мысль, нужно полностью повторить все размышление предшествующие им. Так и в моей статье - к коротким 5ти пунктам я шел несколько месяцев. Можно сразу прочитать их и если не понятно что-то прочитать остальное.
larisab; Alraune; +2 Ответить
6. Поручик 4408 22.03.10 10:23 Сейчас в теме
(4)
Я бы ещё добавил применение Методики переопределения и вызова обработчиков событий формы в 1С 8 для внесения своих "дописок"
http://www.infostart.ru/public/16980/

Один из примеров использования здесь
http://infostart.ru/profile/18346/blog/867/
5. Ish_2 1052 22.03.10 10:00 Сейчас в теме
Нет главного пункта.
1. Постоянная, даже на грани фола борьба против изменений конфигурации.
Пользователь должен кровью и потом доказывать необходимость таких изменений .

Без этого пункта статья превращается в инструкции для мальчика по затыканию дырок (виноват , по обновлению конфигурации).
Vida; Ироида; charushkin; BalVlad; Арчибальд; +5 1 Ответить
7. Шёпот теней 1765 22.03.10 10:41 Сейчас в теме
отвлечЁнное:
согласен с (5) ....

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

... основные перемены это изменение расчётов ... большой роли они не оказывают ... хоть меняй и переписывай на дню по 10 раз ...

... другое дело - методика а ещё хуже изменение методологии ...
... если изменения касаются методики ... это доказательство через "пот"
... если изменения касаются методологии ... это доказательство через "кровь"

... к сожалению программисты ещё не вышли на уровень - когда с ними хоть что-то обсуждают ... они до сих пор на уровне мальчиков - программистов ...

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

... вот ...
8. Поручик 4408 22.03.10 10:58 Сейчас в теме
(7)
>>> к сожалению программисты ещё не вышли на уровень - когда с ними хоть что-то обсуждают ... они до сих пор на уровне мальчиков - программистов ...

Смотря где и с кем. Ещё как обсуждают, а шаг влево, вправо карается, как бы это помягче выразиться, непечатными словами неважно в чей адрес.
10. anig99 2720 22.03.10 12:02 Сейчас в теме
(5) абсолютно согласен...просто этот пункт у меня уже или 0 или вообще -1... Любое изменение, которое просят сделать, сначала пробиваю на предмет "кому надо,зачем, законно ли, как можно решить типовыми средствами"
Craig; murat_; Ish_2; +3 Ответить
9. Serj1C 479 22.03.10 11:41 Сейчас в теме
УПП. Один общий "НашМодуль". А как же параллельная работа с хранилищем нескольких разработчиков?
11. anig99 2720 22.03.10 12:08 Сейчас в теме
(9) НашМодуль - это частности. Я работаю с этой конфой абсолютно один. Это раз. Во вторых, когда появляется кто-нибудь ещё, то разработку он ведёт в тестовой конфе.
К проблемам размещения в одном модуле ещё могу добавить конфликт процедур внутри модуля, если они относятся в модулям с различными флажками "Клиент", "Сервер", "Привелигированный"...
12. 8c1.ru 22.03.10 15:44 Сейчас в теме
Если ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда
Возврат;
КонецЕсли;

можно так, или я что то упустил? :
Если РольДоступна("ПолныеПрава") Тогда
возврат;
КонецЕсли;

13. anig99 2720 22.03.10 16:08 Сейчас в теме
14. strange2007 143 24.03.10 10:10 Сейчас в теме
УПП внедряю несколько месяцев. Все другое. Бухи учёт с ног на голову перевернули. Задаю вопросы везде, на всех форумах. Результат - конфу обновляю не задумываясь и все работает.
4 пункт на заметку взял себе
15. Wolfis 6 24.03.10 10:28 Сейчас в теме
Раньше работал на торговле, сейчас на УПП Мясокомбинат, работаю меньше месяца, уже переправил кучу процедур.недавно гдето прочитал название УПП, программист называл ее не как иначе как "УППырышь". в чем-то согласен.Пункт 4 взял на заметку.
16. Арчибальд 2710 24.03.10 10:35 Сейчас в теме
(15) УППырь. В смысле, кровопийца 8-)
17. strange2007 143 24.03.10 11:49 Сейчас в теме
(15) ну и зря. Потом придет внедренец с опытом и будет всё возвращать на место
artmicro; +1 Ответить
18. mad_maksim 91 24.03.10 13:28 Сейчас в теме
Пункт 4 - интересное решение.
19. Wolfis 6 25.03.10 08:04 Сейчас в теме
не дурак и не когда себя таким не считал, внедрял не одну программу. Правил именно то что надо было править из дописок.
20. icwiner 01.04.10 18:09 Сейчас в теме
Вся информация и так интуитивно понятна, но п4 не использовал... Очень полезная поправочка. Большое спасибо :)
21. icwiner 01.04.10 18:18 Сейчас в теме
З.Ы. За ссылку на декомпилятор формы отдельнео спасибо
22. vint2008 12.10.11 12:46 Сейчас в теме
Полезная статья за ссылку отдельное спасибо :)
24. alexkl 22.11.11 15:19 Сейчас в теме
Программист в тот момент. когда соглашается на изменение основной конфигурации, не мальчик для битья, а наркодилер, сажающий на иглу дорогих удовольствий.
fzt; Robot; +2 Ответить
25. strange2007 143 23.11.11 05:02 Сейчас в теме
(24) ...и подписывающий себя на четвертование
26. BalVlad 22.01.12 18:59 Сейчас в теме
(24)(25) - Подписываюсь под Вашими словами.
27. Inerren 31.01.12 09:11 Сейчас в теме
Спасибо за статью. Править конфигурацию начали ещё до меня, а обновляться, чувствую, скоро придётся.
28. vovka-x13 4 31.01.12 09:34 Сейчас в теме
Поиском можно найти нужную информацию
29. vbvirus 31.01.12 09:51 Сейчас в теме
какие обработки, не придумали, чтобы обновить не типовую базу, всё равно приходится, брать бубен, побольше пива, и обновлять ручками. Иначе что то можно пропустить что выстрелит, через месяц или два. Последствия могут быть плачевными. Да и бухи всегда хотят не работать, в смысле работать так чтобы работало за них, им при этом ничего не делать.
30. metmetmet 77 07.02.12 11:03 Сейчас в теме
Спасибо автору, обязательно попробую при следующем обновлении глбально доработанных, да и еще не качественно и коряво. А то блин понапишут, по дорабатывают, а другим сопровождать и разбираться в коде-каракулях! Накипело...
31. adhocprog 1179 02.04.12 15:49 Сейчас в теме
про ярлыки - не понял их назначения.
где почитать подробнее? :)
32. anig99 2720 02.04.12 16:02 Сейчас в теме
(31) цитату к которой вопрос можно?
33. adhocprog 1179 02.04.12 16:52 Сейчас в теме
(32) "4. Замена вызовов типовых процедур и функций в самописном коде (в т.ч. и во внешних обработках) на вызов процедур из собственного модуля. Эти процедуры по сути «ярлык» для вызова типовых. Преимущество в том, что нужно проверить только их, а не искать множество вызовов в куче самописного кода."
т.е. в принципе не понял зачем это надо?
34. anig99 2720 03.04.12 08:34 Сейчас в теме
(33) предположим Вы регулярно в доработках и внешних обработках используете типовые функции и процедуры (например, ПолучитьНомерНаПечать). Во время обновления 1с поменяли местоположение функции (разбили модуль на несколько других модулей), поменяли её название или формат возвращаемых данных. Вам при обновлении нужно отследить такое изменение, а значит пересматривать весь свой код в конфигурации и внешних обработках и проверять работоспособность кода. Если же Вы заранее переназначили вызов через свою функцию-оболочку, то проверить нужно будет только её одну. Т.е. в типовом коде будет ПолучитьНомерНаПечать, а в Вашем коде будет нашПолучитьНомерНаПечать, где внутри будет тот же самый вызов типового ПолучитьНомерНаПечать.
35. adhocprog 1179 03.04.12 09:44 Сейчас в теме
36. mr.Kot 12.04.12 09:19 Сейчас в теме
Забыл "не" перед "хотелось":

Повторять такое обновление мне хотелось — начал думать как облегчить следующее.

Я даже поначалу удивилось, как же может такое обновление хотеться повторить.
37. Оля_ 26.07.12 23:06 Сейчас в теме
Спасибо, очень полезная статья, жаль что не нашла её раньше - пришлось учится на собственных ошибках (-:
38. Andryxa 03.04.13 11:17 Сейчас в теме
Спасибо, Александр! Очень интересно и познавательно.
39. DragonAgo 11 15.04.13 09:36 Сейчас в теме
Спасибо, интересно и можно взять себе на заметку
40. vis_tmp 30 08.02.17 12:39 Сейчас в теме
Спасибо, полезная статья про облегчение обновления нетиповой конфигурации
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

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

22.04.2020    4472    23    Infostart    2    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    18753    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    18251    0    John_d    22    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    28003    0    Yashazz    45    

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    58964    0    user700211_a.straltsou    27    

Как настроить сервер 1С по умолчанию для ПРОФ лицензии после 10.09.2019

Администрирование данных 1С v8 Бесплатно (free)

Здесь мы собираем все данные по настройкам сервера для работы ПРОФ лицензии.

11.09.2019    64521    0    Infostart    90    

[Шпаргалка] Программное создание элементов формы

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

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

06.09.2019    39227    0    rpgshnik    62    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    41343    0    ids79    53    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

15.01.2019    21478    0    itriot11    23    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    64306    0    ids79    40    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    48282    0    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    31227    0    ids79    27    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    35386    0    unichkin    45    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    17602    0    SeiOkami    50    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    45662    0    ids79    20    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    22735    0    dmurk    144    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    27776    0    tormozit    100    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

16.05.2019    38198    0    YPermitin    30    

Выгрузка документа по условию

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15312    0    m-rv    2    

Как прикрутить ГУИД к регистру сведений

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    19066    0    m-rv    17    

Отчет по размерам таблиц в базе данных как одно из средств анализа проблем Промо

Статистика базы данных v8 1cv8.cf Бесплатно (free)

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

21.07.2015    32773    0    Aleksey.Bochkov    15    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    31862    0    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    25180    0    ellavs    88    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    34352    0    ids79    9    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    75314    0    tormozit    129    

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

Тестирование и исправление v8 Россия Бесплатно (free)

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

17.01.2019    26136    0    PoZiTiFFF    53    

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

Администрирование данных 1С v8 Бесплатно (free)

Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом. Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С). На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков). Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres. А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL). Если, конечно, статья придется вам по вкусу.

25.12.2018    35706    2    capitan    147    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    46201    0    tormozit    38    

Чем PostgreSQL может быть полезен разработчику 1С

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

В статье будут рассмотрены примеры, которые могут оказаться полезными в повседневной работе разработчика 1С и не только: как можно сделать снимок рабочей базы без файла резервной копии, как можно эффективно использовать табличные пространства СУБД PostgreSQL, а также как организовать простой и удобный доступ к админке СУБД посредством мобильных устройств.

20.12.2018    22028    0    Shmell    38    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

14.12.2018    37654    0    ids79    72    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32265    0    ids79    40    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

10.09.2017    42173    0    tormozit    74    

Произвольный код в фоновом режиме

Практика программирования v8 1cv8.cf Бесплатно (free)

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

03.09.2018    25557    0    nikita0832    42    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    36308    0    Rain88    46    

Тестер: частые вопросы

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    27401    0    grumagargler    26    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    27226    0    olegtymko    47    

Как сделать запрос на изменение данных

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

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

01.06.2018    28707    0    m-rv    21    

Строим графы средствами 1С (без GraphViz)

Практика программирования v8 Бесплатно (free)

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    23446    0    slozhenikin_com    20    

Распределение расходов пропорционально продажам

Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Практика программирования Финансовый учет и бюджетирование (FRP) Учет доходов и расходов v8 v8::ОУ УТ10 УУ Бесплатно (free)

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    17605    0    Rustig    9    

Несколько версий сервера 1С на одном компьютере

Администрирование данных 1С v8 Бесплатно (free)

Как установить несколько экземляров сервера 1С на один компьютер. Как установить несколько служб агента 1С на один сервер? Как запустить сервера разных платформ на одном компьютере.

18.04.2018    76574    0    spezc    85    

О лицензиях 1С

Администрирование данных 1С v8 Россия Бесплатно (free)

Разбираем вопросы по получению и переполучению лицензии 1С.

30.03.2018    118470    0    D_e_X_T_e_R    166    

[ВсеПросто] "Оперативный" информатор из 1С за 5 мин.

Практика программирования v8 Бесплатно (free)

Быть всегда в курсе дел, даже в дороге!

22.02.2018    25854    0    DarkAn    25    

Минимализмы 3

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    44812    0    ildarovich    45    

Этюды по программированию. Взаимодействие с Microsoft Word

Практика программирования v8 Бесплатно (free)

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

11.12.2017    31610    0    milkers    23    

Метод формирования движений в типовых регистрах нетиповыми регистраторами

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    26739    0    itriot11    34