Изящная доработка движений и проводок документов ERP 2

27.04.16

Задачи пользователя - Адаптация типовых решений

Доработка движений и проводок документов в ERP с минимальным количеством изменений типового кода, на примере добавления в документ "Акт выполненных работ" подразделения в ТЧ "Услуги"

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

Наименование Файл Версия Размер
ОбщийМодуль.zip
.zip 1,01Kb
22
.zip 1,01Kb 22 Скачать

Перед нами стоит следующая задача:

В документе "Акт выполненных работ" добавить возможность указания подразделения в ТЧ "Услги".

И нужно ее сделать так, чтобы потом не было мучительно больно обновлять ERP.

Разобьем нашу задачу на несколько этапов:

0. Добавление реквизита "Подразделение" в ТЧ "Услуги"
1. Вывод данного реквизита на форму документа
2. Исправление движений по регистрам
3. Исправление движений по проводкам

Надеюсь, п.0 не вызывает ни у кого вопросов, поэтому сразу перейдем к п.1

Вывод реквизита на форму документа

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

  • ПриСозданииНаСервере
  • ПриЧтенииНаСервере

ведущие к вызову процедур из модуля МодификацияКонфигурацииПереопределяемый, который и предназначен для доработки.
Добавим на форму вывод реквизита

Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
    Если Форма.ИмяФормы = "Документ.АктВыполненныхРабот.Форма.ФормаДокумента" Тогда
        еус_МодификацияКонфигурации_АктВыполненныхРабот.ПриСозданииНаСервере_ФормаДокумента(Форма, Отказ, СтандартнаяОбработка);
    КонецЕсли;
КонецПроцедуры

Тут мы применим небольшую хитрость. Все изменения формы будем проводить в выделенном модуле. Для чего? Можно, конечно, писать доработки прямо в этом модуле. Но что будет, когда несколько разработчиков захотят доработать свои документы, а все доработки лежат в одном модуле? Конечно же, кто первый захватил модуль в хранилище, тот и работает. Остальные ждут.

Вот для того, чтобы и избежать этого,  выделяем для каждого документа свой модуль.

В реальной жизни, конечно же, в этом документе была не 1 доработка, поэтому такой метод вполне оправдан.

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

Исправление движений по регистрам

Формирование движений документов происходит следующим образом:

  1. Инициализация данных проведения
  2. Запись движений
  3. Контроль регистров


Тут нас интересует пункт "Инициализация данных проведения". Данная инициализция происходит путем вызова процедуры модуля менеджера

Документы.АктВыполненныхРабот.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

Инициализация сотосит из пунктов
1. Инициализация шапки документа

Запрос = Новый Запрос;
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)

2. Формирование списка с текстами запросов

//...
ТекстыЗапроса = Новый СписокЗначений;
ТекстЗапросаТаблицаЗаказыКлиентов(Запрос, ТекстыЗапроса, Регистры);
//...

3. Выполнение запросов

ПроведениеСервер.ИницализироватьТаблицыДляДвижений(Запрос, ТекстыЗапроса, ДополнительныеСвойства.ТаблицыДляДвижений, Истина);

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

Процедура ИницализироватьТаблицыДляДвижений(Запрос, ТекстыЗапроса, Таблицы, ДобавитьРазделитель = Ложь, ДобавлятьСловоТаблица = Истина, ТолькоОтмеченные=Ложь) Экспорт
    //НАЧАЛО ВСТАВКИ
    еус_ОбработчикиПроведенияСервер.ДополнитьТекстыЗапросов(Запрос, ТекстыЗапроса, Таблицы, ДобавитьРазделитель, ДобавлятьСловоТаблица, ТолькоОтмеченные);
    //КОНЕЦ ВСТАВКИ
    ТаблицыЗапроса = ОбщегоНазначенияУТ.ВыгрузитьРезультатыЗапроса(Запрос, ТекстыЗапроса,, ДобавитьРазделитель);
    //...
КонецПроцедуры

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

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

Перейдем непосредственно к доработке движений по регистрам

Функция ТекстЗапроса(Запрос, ТекстыЗапроса, Регистры) Экспорт

    ТекстЗапроса_ВтРаботыУслуги(Запрос, ТекстыЗапроса, Регистры);
    ТекстЗапроса_СебестоимостьТоваров(Запрос, ТекстыЗапроса, Регистры);
    ТекстЗапроса_ВыручкаИСебестоимостьПродаж(Запрос, ТекстыЗапроса, Регистры);
    ТекстЗапроса_МатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры);
    Возврат "";

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

Рассмотрим только вариант с доработкой движений по себестоимости. Для исправления запросов будем использовать объектную модель, которую дает нам СхемаЗапроса

Функция ТекстЗапроса_СебестоимостьТоваров(Запрос, ТекстыЗапроса, Регистры) Экспорт
    
    // Подразденение берем из ТЧ
    ЭлементТекстЗапроса = еус_ОбработчикиПроведенияСервер.НайтиЭлементСписка(ТекстыЗапроса, "СебестоимостьТоваров");
    ТекстЗапроса = ЭлементТекстЗапроса.Значение;
	
    СхемаЗапроса = Новый СхемаЗапроса;
    СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
	
    ТекстПодразделение = 
    "ВЫБОР 
    |	КОГДА ТаблицаУслуги.Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
    |		ТОГДА &Подразделение
    |	ИНАЧЕ
    |		ТаблицаУслуги.Подразделение
    |КОНЕЦ";
	
    ЗапросВыбораСхемыЗапроса = СхемаЗапроса.ПакетЗапросов[0];
    ОператорВыбратьСхемыЗапроса =    ЗапросВыбораСхемыЗапроса.Операторы[0];
    еус_ОбработчикиПроведенияСервер.ДобавитьДоступноеПолеВТаблицу(ОператорВыбратьСхемыЗапроса, "ТаблицаУслуги", "Подразделение");

    еус_ОбработчикиПроведенияСервер.УстановитьПолеЗапроса(ЗапросВыбораСхемыЗапроса, ОператорВыбратьСхемыЗапроса, "Подразделение", "ТаблицаУслуги.Подразделение"); 
    //|	ЛЕВОЕ СОЕДИНЕНИЕ
    //|		ВтАналитика КАК ВтАналитика
    //|	ПО
    //|		ТаблицаУслуги.Номенклатура = ВтАналитика.Номенклатура
    //|		И ТаблицаУслуги.Характеристика = ВтАналитика.Характеристика
    // Не хватает соединения по подразделению
	
    еус_ОбработчикиПроведенияСервер.ДобавитьДоступноеПолеВТаблицу(ОператорВыбратьСхемыЗапроса, "ВтАналитика", "Склад");
    еус_ОбработчикиПроведенияСервер.ДобавитьУсловиеСоединения(ОператорВыбратьСхемыЗапроса, "ТаблицаУслуги", "ВтАналитика", "ТаблицаУслуги.Подразделение = ВтАналитика.Склад");
    ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();

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

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

Исправление движений по проводкам

Порядок формирования проводок из формы документа

1. Кнопка "Дт-Кт"  - Обоработка.ОтражениеДокументовВРеглУчете, команда ПроводкиРеглУчета
2. Кнопка "Отразить в регл. учете" вызыввает следующую процедуру

Процедура ОтразитьДокументВРеглУчетеСервер()

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

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

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

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

Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
Функция ТекстОтраженияВРеглУчете() Экспорт

Эти функции вызываются из функции

РеглУчетВыборкиСерверПовтИсп.ЗапросДанных(ДокументИмя, ЭтоОбъектРасчетов = Истина)

Добавим в эту функцию перехват и добработку текста запросов
Добавим в функцию ЗапросДанных наш текс для перехватя текста запроса

Функция ЗапросДанных(ДокументИмя, ЭтоОбъектРасчетов = Истина) Экспорт
    
    //....
    ТекстВТОтраженияДокумента = ТекстВТОтраженияДокумента(ДокументИмя);
    
    // НАЧАЛО ВСТАВКИ
    еус_ОбработчикиПроведенияСервер.ТекстОтраженияДокумента(ДокументИмя, ТекстОтраженияДокумента); 
    еус_ОбработчикиПроведенияСервер.ТекстВТОтраженияДокумента(ДокументИмя, ТекстВТОтраженияДокумента); 
    //КОНЕЦ ВСТАВКИ
        
    Если ТекстОтраженияДокумента <> "" Тогда
        ТекстОтраженияДокумента = " ОБЪЕДИНИТЬ ВСЕ " + ТекстОтраженияДокумента; 
    КонецЕсли;
    
    Если ДокументИмя = "РасчетСебестоимостиТоваров" Тогда
        Возврат Новый Запрос(""
            + ТекстПустыеВТ()
            + ТекстВТОтраженияДокумента
            + ТекстИнициализации
            + ТекстОтраженияДокумента);
    Иначе
        Возврат Новый Запрос(""
            + ТекстСебестоимость()
            + ТекстПартии()
            + ТекстЗаписиНДС()
            + ТекстУчетнаяПолитика()
            + ТекстВТОтраженияДокумента
            + ТекстИнициализации
            + ТекстЗачетАвансов
            + ТекстРаспределениеРасходов
            + " ОБЪЕДИНИТЬ ВСЕ " + ТекстНДСПоДаннымФинпартий()
            + ТекстОтраженияДокумента);
    КонецЕсли;
КонецФункции

Разобьем доработку проводок на 2 части:

  1. Изменение уже существующего текста запроса
  2. Добавление нового текста запроса

В нашем случае добавления текста не будет, а только изменение существующего

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

Рассмотрим наши функции по доработке текста запроса бух. проводок. В отличие от запросов движений по регистрам, в данном случае мы имеем 1 большой запрос, состоящий из отдельных запросов по каждой проводке, соединенных через "ОБЪЕДИНИТЬ ВСЕ". Это немного усложняет нам работу, а также приносит потенциальную ошибку смены порядка запросов.

Процедура ОбработатьТекстЗапросаОтражениеВРегУчете(Текст) Экспорт
	
    СхемаЗапроса = Новый СхемаЗапроса;
    СхемаЗапроса.УстановитьТекстЗапроса(Текст);
	
    //Чтобы не запутаться в порядке запросов - пронумеруем их
    Таблицы = Новый Соответствие;
    Таблицы.Вставить("ТекстЗадолженностьПокупателяЗаУслуги",  0);
    Таблицы.Вставить("ТекстНачислениеНДСЗаУслуги",            1);
    Таблицы.Вставить("ТекстОказаниеРабот",                    2);
    Таблицы.Вставить("ТекстНеПодтверждениеНулевойСтавкиНДС",  3);
    Таблицы.Вставить("ТекстПродажаАгентскихУслуг",            4);
    Таблицы.Вставить("ТекстВключениеИсключениеНДСВСтоимость", 5);
	
    ЗапросВыбораСхемыЗапроса = СхемаЗапроса.ПакетЗапросов[0];
	
    //ТекстЗадолженностьПокупателяЗаУслуги
    Оператор = ЗапросВыбораСхемыЗапроса.Операторы[Таблицы["ТекстЗадолженностьПокупателяЗаУслуги"]];

    //Заменим Поле пдразделение на получение из табличной части
    ТекстПодразделение =
    "ВЫБОР 
    |	КОГДА Строки.еус_Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
    |	    ТОГДА Операция.Подразделение
    |	ИНАЧЕ
    |	    Строки.еус_Подразделение
    |КОНЕЦ";
	
    еус_ОбработчикиПроведенияСервер.УстановитьПолеЗапроса(ЗапросВыбораСхемыЗапроса, Оператор, "ПодразделениеДт", "ЕСТЬNULL(Расчеты.Подразделение, " + ТекстПодразделение + ")");
    еус_ОбработчикиПроведенияСервер.УстановитьПолеЗапроса(ЗапросВыбораСхемыЗапроса, Оператор, "ПодразделениеКт", ТекстПодразделение);
	
    //ТекстНачислениеНДСЗаУслуги
    Оператор = ЗапросВыбораСхемыЗапроса.Операторы[Таблицы["ТекстНачислениеНДСЗаУслуги"]];
    еус_ОбработчикиПроведенияСервер.УстановитьПолеЗапроса(ЗапросВыбораСхемыЗапроса, Оператор, "ПодразделениеДт", ТекстПодразделение);
	
    //ТекстОказаниеРабот
    Оператор = ЗапросВыбораСхемыЗапроса.Операторы[Таблицы["ТекстОказаниеРабот"]];

    ТекстПодразделение =
    "ВЫБОР 
    |	КОГДА Строки.Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
    |		ТОГДА Операция.Подразделение
    |	ИНАЧЕ
    |		Строки.Подразделение
    |КОНЕЦ";
	
    еус_ОбработчикиПроведенияСервер.ДобавитьДоступноеПолеВТаблицу(Оператор, "Строки", "Подразделение");
    еус_ОбработчикиПроведенияСервер.УстановитьПолеЗапроса(ЗапросВыбораСхемыЗапроса, Оператор, "ПодразделениеДт", ТекстПодразделение);
    еус_ОбработчикиПроведенияСервер.УстановитьПолеЗапроса(ЗапросВыбораСхемыЗапроса, Оператор, "ПодразделениеКт", ТекстПодразделение);
	
	
    //|	ЛЕВОЕ СОЕДИНЕНИЕ
    //|		ВтСтоимости КАК Стоимости
    //|	ПО
    //|		Строки.Ссылка = Стоимости.Ссылка
    //|		И Строки.Номенклатура = Стоимости.Номенклатура
    //|		И Строки.ГруппаФинансовогоУчета = Стоимости.ГруппаФинансовогоУчета
	
    //Не хватает соединения по складу
    еус_ОбработчикиПроведенияСервер.ДобавитьДоступноеПолеВТаблицу(Оператор, "Строки", "Склад");
    еус_ОбработчикиПроведенияСервер.ДобавитьДоступноеПолеВТаблицу(Оператор, "Стоимости", "Склад");
	
    //Все соединения идут на первую таблицу в запросе
    еус_ОбработчикиПроведенияСервер.ДобавитьУсловиеСоединения(Оператор, "ДокументыКОтражению", "Стоимости", "Строки.Склад = Стоимости.Склад");
	
    Текст = СхемаЗапроса.ПолучитьТекстЗапроса();
	
КонецПроцедуры

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

 

P.S. Можете посмотреть другие мои статьи по доработке ERP

Набор тестов xUnit для ERP2, блок Производство

ERP Доработка

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4373    8    4    

17

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2899    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

01.03.2024    1120    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    1934    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

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

2 стартмани

22.08.2023    2022    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. karpik666 3759 05.04.16 13:49 Сейчас в теме
Такая ситуация не только в Erp, но и в Ут 11, даже где-то была статья по доработке Ут с такими же переопределяемыми обработчиками
2. vvr908 446 05.04.16 15:20 Сейчас в теме
Коллеги, а сейчас нет возможности реализовать такие доработки через механизм расширений конфигурации?
3. comptr 30 05.04.16 15:59 Сейчас в теме
(2) vvr908, сейчас - нет, судя по http://v8.1c.ru/o7/201410ext/index.htm и http://v8.1c.ru/o7/201603ext/index.htm
Потом - да, судя по http://v8.1c.ru/o7/201603module/index.htm
Ariva; ryutao; korppinen; config; +4 Ответить
4. Dvornik 20 23.03.17 05:04 Сейчас в теме
7 строка. Опечатка - "Услги".
5. ryutao 50 23.03.17 08:36 Сейчас в теме
Все хорошо, но, коллеги, данный способ требует снятия с поддержки, а это почти вдвое выросший физический объем базы. Такое чувство, что никто с конкретными базами не работает, а только с тестовыми. Последние конфиги ERP, КА, УТ, БП и так еле ворочаются. На данном примере: какова ценность изменения подразделения в ТЧ?
6. acsent 1198 23.03.17 18:36 Сейчас в теме
ЕРП без возможности изменения и в ней работают?
Нет сынок, это фантастика
7. h00k 50 28.04.17 22:07 Сейчас в теме
(6)
ЕРП без возможности изменения и в ней работают?

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

В тестовой базе, после успешного выполнения всех тестов, формируется комплект обновления или поставки. Им и выполняется обновление базы в продуктиве, которая стоит на полной поддержке.
8. acsent 1198 29.04.17 17:04 Сейчас в теме
(7) Своя поставка как раз и означает включение изменений относительно поставки 1С
9. h00k 50 29.04.17 20:49 Сейчас в теме
(8)
Своя поставка как раз и означает включение изменений относительно поставки 1С

Вы вообще о чем?! В рабочих базах не включают возможность изменений, если уж не совсем новички внедрением-доработкой занимаются.
При необходимости доработки типового функционала, разработка ведётся в локальных базах разработчиков, подключенных к хранилищу конфигурации. К этому же хранилищу подключена база для тестирования выполненных доработок и формирования комплектов поставки (обновления). Базы в продуктиве обновляются подготовленными кф-файлами. В них не включают возможность изменения и т.п. - это аксиома.
20. BETEP0K 21.04.22 13:01 Сейчас в теме
(9) А расскажите поподробнее как это делать, несколько раз встречал уже сообщения об этом но деталей не понимаю. Может статья есть какая?
В копии включается возможность изменения...
затем исправляются модули типовые.

А вот дальше как поставку правильно сделать, чтобы в рабочую (в которой не включена возможность изменения) эти изменения залились?
23. vakrikun 133 11.04.23 13:34 Сейчас в теме
(20) В сообщении (9) в целом автор кратко всё описал. Иными словами, допустим, у вас на предприятии используется конфигурация ERP и вам необходимо её дорабатывать. В таком случае рекомендуется использовать подход:

1) Разворачивается хранилище для разработки. К нему подключают базы разработки, условно "dev_1", "dev_2", "dev_3". К этому же хранилищу подключают базу для подготовки обновлений, условно, "update". Вот это хранилище у вас будет стоять на поставке конфигурации ERP от фирмы 1С, именно тут будет включена возможность изменения и тут будет вестись разработка.

2) Когда приходит время обновляться, захватываете рекурсивно корень в хранилище из базы "update". Обновляете на новую версию ERP, затем на этой же базе и тестируете релиз. Когда тестирование завершено с этой же базы создаете поставку для обновления рабочей (обычный *.cf). Как сделать поставку только на инфостарте есть 2-3 статьи, описывать не буду. По итогу у вас создается файл *.cf для обновления, он будет "под замком". Иными словами, вы создали "поставку от поставки", "коробку от коробки".

3) И вот эту поставку (*.cf из шага 2) используете для обновления в продуктовой / рабочей базе, как при обычном обновлении. Получается ваша рабочая база стоит на поставке не у типовой ERP от 1С, а на вашей нетиповой доработанной ERP из хранилища. Рабочая в таком случае всегда на "полном замке" и к храну не подключена.

Условно вот так. Могут быть, конечно, изменения в этой схеме, например, использование 2-х хранилищ: dev и prod. Но принцип остается такой же.
10. vmalov 14 25.08.17 14:44 Сейчас в теме
Статья полезная. Особенно по отражению в рег. учете, которое в фоне выполняется. Отладчиком можно целый день сидеть, искать нужные процедуры.
11. erp3000 04.07.18 13:55 Сейчас в теме
Парень залез править типовые общие модуля и называется это искусство изящная доработка :-)))
12. acsent 1198 04.07.18 18:42 Сейчас в теме
(11) Точечное исправление модуля - это очень даже изящно.
По другому проводки не поправить
13. erp3000 09.07.18 12:06 Сейчас в теме
Проводки (так же как и движения по РН) правятся в модуле менеджера документа в соответствующих запросах. В общий модуль который является ядром данного механизма руками лучше не лазить. Общие модули которые можно редактировать именуются постфиксом "Переопределяемый"
14. acsent 1198 09.07.18 15:25 Сейчас в теме
(13) предлагаешь делать хук в каждом модуле менеджера?
15. erp3000 09.07.18 16:28 Сейчас в теме
Именно, сама концепция движения по РН и РБ об этом говорит, и не надо лазить шаловливыми ручонками в ядро механизма.
16. acsent 1198 09.07.18 18:43 Сейчас в теме
(15) Значит ты не понял идеи.
Вместо того чтобы в каждом модуле дорабатывать запрос, мы его дорабатываем непосредсвенно перед выполнением.
Ну а тексты кладем в именнованные модули для читабельности
21. ids79 8275 10.05.22 11:20 Сейчас в теме
(15)Согласен, запросы, которые формируют движения нужно править именно в модулях менеджера или в общих модулях с приставкой Локализация. Такая концепция системы. Да, мест доработки может быть больше, но зато они понятнее другим разработчикам, и каждый знает за что отвечает. А если каждый начнёт вносить изменения в ядро механизма, это легко может развалить систему. Такие изменения должен делать только архитектор системы или главный программист. И только в том случае, если без этого прям ну ни как не обойтись.
22. acsent 1198 19.05.22 19:29 Сейчас в теме
(21) Сейчас конечно уже концепция не актуальна, ибо есть расширения и ими куда проще править нужные запросы
17. erp3000 09.07.18 18:56 Сейчас в теме
Твоя идея - это самодеятельность, а ЕРП это тебе не самописочка для конторочек, это решение которое необходимо эксплуатировать в крупных компаниях с немалым количеством программистов, и если каждый залезет в общий модуль и в самом ядре механизма начнет делать "изящные доработки", то такую ЕРП и заодно компанию ждет печальная участь..
18. Safron 6 09.10.18 02:20 Сейчас в теме
Сделал все по этой схеме, добавил проводку в проведение Поступление безналичных денежных средств. Проводка добавилась, если нажать "Отразить в регл. учете". Но если делать через "Регламентированный учет--Отражение документов в регл. учете" в первом документе появляется доп. проводка, а в последующих нет. Т. е., начиная со второго документа программа как бы проскакивает изменения в модуле. Не могу понять где копать дальше.
19. user767673 28.05.20 21:09 Сейчас в теме
Вопрос : порядок отражения проводок как изменить?
Спасибо !
Оставьте свое сообщение