Версия для печати темы (https://pro1c.org.ua/index.php?s=3d05bef208b8acb8da72695a8e133624&showtopic=33094)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С:ERP Управление предприятием _ Вопрос по регистрации наработок оборудования в ERP

Автор: kipkoalex 10.11.16, 13:13

Добрый день!
Не нашел на форуме тему про ERP, поэтому пишу сюда, так как по моему мнению УПП чем то схожа с ERP.
Пытаюсь разобраться с работой в этой конфигурации, и возникает очень неприятная ошибка. В системе есть возможность регистрировать наработки узлов объектов эксплуатации "От источника" - т.е., к примеру, есть прокатный стан (объект эксплуатации) и есть клети прокатного стана (узлы объекта эксплуатации). Параметр наработки для них один - время работы в часах. И вот для того, чтобы не регистрировать наработки отдельно для прокатного и стана и для каждой клети, есть возможность привязать время работы клетей к времени работы стана. Но при попытке проведения документа регистрации наработок возникает ошибка. Привожу текст:
Запись с такими ключевыми полями уже существует! : ПериодыАктуальностиОбъектовЭксплуатации: (ТУТ ИДЕТ ДАТА ТЕКУЩЕГО ДОКУМЕНТА РЕГИСТРАЦИИ НАРАБОТОК), Регистрация наработок (НОМЕР ДОКУМЕНТА) от (ДАТА И ВРЕМЯ), Прокатный стан номер 1 (Регистры сведений: Периоды актуальности объектов эксплуатации; Номер строки: 2)
Понимаю, что это не совсем верно, но я попробовал отключить движение этого документа по регистру Периоды актуальности объектов эксплуатации. В таком случае документ проводится без проблем, наработки регистрируются, но пропадает возможность автоматически подбирать ремонтные работы по узлам, в зависимости от количества наработки.
Так же менял периодичность регистра на "в пределах секунды" - не помогло.
Если же не включать регистрацию наработок узла от источника, по которому потом оформляется наработка, то документы проводятся без проблем.
Прошу помочь решить эту проблему.
Заранее спасибо!

1С:Предприятие 8.3 (8.3.8.2197)
1С:ERP Управление предприятием 2 (2.2.1.115)

Автор: Vofka 10.11.16, 13:20

Создан раздел по ERP, тему перенес

Автор: Егор Динин 10.11.16, 13:21

Вряд ли вам кто ответит. Опыт внедрения в Украине - у единиц.

Автор: Acid 10.11.16, 13:57

Цитата(kipkoalex @ 10.11.16, 14:13) *
УПП чем то схожа с ERP

Это его реинкарнация на управляемых формах.

Цитата(kipkoalex @ 10.11.16, 14:13) *
ПериодыАктуальностиОбъектовЭксплуатации

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

Автор: kipkoalex 10.11.16, 15:59

Acid @ Сегодня, 13:57 * ,
Прошу прощения за, возможно, некорректную просьбу, но можете написать что конкретно нужно сделать?) Как я понял, внести изменения в модуль этого регистра, но какие?

Автор: Vofka 10.11.16, 17:23

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

Автор: kipkoalex 11.11.16, 0:44

Vofka @ Вчера, 17:23 * ,
Записал короткое видео (1 минута), в котором показываются мои действия, и записи в регистре сведений "Периоды актуальности объектов эксплуатации" во времени. Вот ссылка:
http://pro1c.org.ua/redirect.php?http://www.ex.ua/982616993072

Автор: andr_andrey 11.11.16, 10:57

Вот что вы пишете в регистр:


Это результат запроса:

////////////////////////////////////////////////////////////////////////////////
// ПериодыАктуальностиОбъектовЭксплуатации
ВЫБРАТЬ РАЗЛИЧНЫЕ
    &ДатаРегистрации КАК Период,
    ВЫБОР
        КОГДА Наработки.ОбъектЭксплуатации ССЫЛКА Справочник.ОбъектыЭксплуатации
            ТОГДА Наработки.ОбъектЭксплуатации
        ИНАЧЕ Наработки.ОбъектЭксплуатации.Владелец
    КОНЕЦ КАК ОбъектЭксплуатации
ИЗ
    Документ.РегистрацияНаработок.Наработки КАК Наработки
ГДЕ
    Наработки.Ссылка = &Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    &ДатаРегистрации,
    ВЫБОР
        КОГДА Наработки.ОбъектЭксплуатации ССЫЛКА Справочник.ОбъектыЭксплуатации
            ТОГДА Наработки.ОбъектЭксплуатации
        ИНАЧЕ Наработки.ОбъектЭксплуатации.Владелец
    КОНЕЦ
ИЗ
    Документ.РегистрацияНаработок.РасчетныеНаработки КАК Наработки
ГДЕ
    Наработки.Ссылка = &Ссылка;


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


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

Автор: Acid 11.11.16, 11:00

Если по простому, то так:

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


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

    ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
    
    ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
    
КонецПроцедуры

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

Автор: andr_andrey 11.11.16, 12:00

Acid @ Сегодня, 11:00 * ,
Проблема в реализации отбора данных для записи в регистр.
В документе есть две табличных части, одна для заполнения пользователем, вторая для разузлования по узлам объекта эксплуатации, которая заполняется автоматически (корректно).
А запрос для отбора построен таким образом, что дублирует строки и естественно при записи дубликатов в регистр будет ошибка.

Автор: kipkoalex 11.11.16, 14:54

Acid @ Сегодня, 11:00 * ,
Добавил предложенный вами код, к сожалению проблема не решилась. Привожу полный текст процедуры из документа "РегистрацияНаработок":

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


andr_andrey @ Сегодня, 10:57 * ,
Безусловно - уже сейчас мы видим некоторые вещи, которые хотелось бы добавить в систему. Но, для начала, нам интересно попробовать именно этот модуль - "Управление ремонтами" на небольшом подразделении.
Может знаете кто на форуме разбирается в этой системе (или вы сможете взяться за работу, в перспективе?)?


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 9
 

Автор: max.kolyada 14.04.17, 11:02

kipkoalex @ 11.11.16, 14:54 * ,
Сейчас запускаем управленческий учет на ЕРП, но постоянно обновляем релиз. уже 2.2.3.162.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua