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

27.04.16

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
ОбщийМодуль.zip
.zip 1,01Kb
26 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

И нужно ее сделать так, чтобы потом не было мучительно больно обновлять 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 Доработка

См. также

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

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

29400 руб.

29.06.2023    8422    26    15    

35

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    9232    100    17    

56

Адаптация типовых решений Бухгалтер 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Разработка для упрощения процедуры передачи данных о выплатах для конфигурации 1С:ЗиКГУ. Данное расширение предоставляет возможность экспортировать данные «Распоряжения» непосредственно из документа "Ведомость в банк" в формате XML.

3840 руб.

13.11.2024    1676    3    4    

4

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

Маленькая заметка (в трех разных масштабах) для тех, кто часто видит окно при входе в ЗУП «Новые сообщения для расшифровки по 1С-Отчетность», которое появляется через 60 секунд после запуска программы, как раз когда вы уже добрались до интересующей вас формы и начали в ней что-то активно делать:

1 стартмани

17.06.2024    6220    76    Znata_PI    7    

22

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    6373    dimanich70    17    

22

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

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

01.03.2024    14115    dimanich70    11    

26

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

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

1 стартмани

27.10.2023    5468    44    TempTablesManager    16    

58
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. karpik666 3985 05.04.16 13:49 Сейчас в теме
Такая ситуация не только в Erp, но и в Ут 11, даже где-то была статья по доработке Ут с такими же переопределяемыми обработчиками
2. vvr908 451 05.04.16 15:20 Сейчас в теме
Коллеги, а сейчас нет возможности реализовать такие доработки через механизм расширений конфигурации?
3. comptr 50 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 1206 23.03.17 18:36 Сейчас в теме
ЕРП без возможности изменения и в ней работают?
Нет сынок, это фантастика
7. h00k 51 28.04.17 22:07 Сейчас в теме
(6)
ЕРП без возможности изменения и в ней работают?

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

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

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

А вот дальше как поставку правильно сделать, чтобы в рабочую (в которой не включена возможность изменения) эти изменения залились?
23. vakrikun 145 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 1206 04.07.18 18:42 Сейчас в теме
(11) Точечное исправление модуля - это очень даже изящно.
По другому проводки не поправить
13. erp3000 09.07.18 12:06 Сейчас в теме
Проводки (так же как и движения по РН) правятся в модуле менеджера документа в соответствующих запросах. В общий модуль который является ядром данного механизма руками лучше не лазить. Общие модули которые можно редактировать именуются постфиксом "Переопределяемый"
14. acsent 1206 09.07.18 15:25 Сейчас в теме
(13) предлагаешь делать хук в каждом модуле менеджера?
15. erp3000 09.07.18 16:28 Сейчас в теме
Именно, сама концепция движения по РН и РБ об этом говорит, и не надо лазить шаловливыми ручонками в ядро механизма.
16. acsent 1206 09.07.18 18:43 Сейчас в теме
(15) Значит ты не понял идеи.
Вместо того чтобы в каждом модуле дорабатывать запрос, мы его дорабатываем непосредсвенно перед выполнением.
Ну а тексты кладем в именнованные модули для читабельности
21. ids79 8682 10.05.22 11:20 Сейчас в теме
(15)Согласен, запросы, которые формируют движения нужно править именно в модулях менеджера или в общих модулях с приставкой Локализация. Такая концепция системы. Да, мест доработки может быть больше, но зато они понятнее другим разработчикам, и каждый знает за что отвечает. А если каждый начнёт вносить изменения в ядро механизма, это легко может развалить систему. Такие изменения должен делать только архитектор системы или главный программист. И только в том случае, если без этого прям ну ни как не обойтись.
22. acsent 1206 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 Сейчас в теме
Вопрос : порядок отражения проводок как изменить?
Спасибо !
Оставьте свое сообщение