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

1С:Предприятие 8.3 (8.3.8.2197)
1С:ERP Управление предприятием 2 (2.2.1.115)
Vofka
Создан раздел по ERP, тему перенес
Егор Динин
Вряд ли вам кто ответит. Опыт внедрения в Украине - у единиц.
Acid
Цитата(kipkoalex @ 10.11.16, 14:13) необходимо зарегистрироваться для просмотра ссылки
УПП чем то схожа с ERP

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

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

Регистры сведений регистрируют только уникальные записи. Если такая запись есть, происходит исключение. Заверните в модуле проведения по этим регистрам в попытку-исключение.
kipkoalex
Acid @ Сегодня, 13:57 необходимо зарегистрироваться для просмотра ссылки ,
Прошу прощения за, возможно, некорректную просьбу, но можете написать что конкретно нужно сделать?) Как я понял, внести изменения в модуль этого регистра, но какие?
Vofka
Текущий документ пытается добавить запись в регистр сведений Периоды актуальности объектов эксплуатации, которая там уже есть. Надо понять, что в этот регистр пишется (проанализируйте содержимое документа, может интуитивно понятно будет), потом откройте этот регистр и посмотрите кто уже добавил запись, которую сейчас пытается добавить ваш документ. Возможно, после этого, станет понятнее что делать дальше.
kipkoalex
Vofka @ Вчера, 17:23 необходимо зарегистрироваться для просмотра ссылки ,
Записал короткое видео (1 минута), в котором показываются мои действия, и записи в регистре сведений "Периоды актуальности объектов эксплуатации" во времени. Вот ссылка:
необходимо зарегистрироваться для просмотра ссылки
andr_andrey
Вот что вы пишете в регистр:


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

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

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


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


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


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

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

А если скурпулезно, то нужно залезть в процедуру ПроведениеСервер.ЗаписатьНаборыЗаписей, и там уже вставлять Попытку-Исключение для конкретного регистра.
andr_andrey
Acid @ Сегодня, 11:00 необходимо зарегистрироваться для просмотра ссылки ,
Проблема в реализации отбора данных для записи в регистр.
В документе есть две табличных части, одна для заполнения пользователем, вторая для разузлования по узлам объекта эксплуатации, которая заполняется автоматически (корректно).
А запрос для отбора построен таким образом, что дублирует строки и естественно при записи дубликатов в регистр будет ошибка.
kipkoalex
Acid @ Сегодня, 11:00 необходимо зарегистрироваться для просмотра ссылки ,
Добавил предложенный вами код, к сожалению проблема не решилась. Привожу полный текст процедуры из документа "РегистрацияНаработок":

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


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


 ! 

необходимо зарегистрироваться для просмотра ссылки: 9
 
max.kolyada
kipkoalex @ 11.11.16, 14:54 необходимо зарегистрироваться для просмотра ссылки ,
Сейчас запускаем управленческий учет на ЕРП, но постоянно обновляем релиз. уже 2.2.3.162.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.