|
ЗУП. А в чем прикол такого кода? | ☑ | ||
---|---|---|---|---|
0
Target1025
21.07.21
✎
09:32
|
Это код метода Записать() из Увольнения.
ДокументОбъект = РеквизитФормыВЗначение("Объект"); РеквизитыВДанные(ДокументОбъект); УстановитьПривилегированныйРежим(Истина); Если Не СсылкаНаОбъект.Пустая() Тогда // служебное копирование. ДокументОбъект.ДополнительныеСвойства.Вставить("МодификацияЗапрещена"); ДокументОбъект.ОбменДанными.Загрузка = Истина; ДокументОбъект = ДокументОбъект.Скопировать(); ДокументОбъект.Дата = Объект.Дата; КонецЕсли; ВременнаяСсылка = Документы.Увольнение.ПолучитьСсылку(); ДокументОбъект.УстановитьСсылкуНового(ВременнаяСсылка); ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); УстановитьПривилегированныйРежим(Ложь); РеквизитыДляПроведения = Документы.Увольнение.РеквизитыДляПроведения(ВременнаяСсылка); |
|||
1
Ненавижу 1С
гуру
21.07.21
✎
09:38
|
(0) какой момент предлагается обсудить?
|
|||
2
Chai Nic
21.07.21
✎
09:40
|
Код ужасен, как и большинство кода в современных типовых. От лаконичности и самодокументированности модулей старых конфигураций ушли. Теперь бизнес-логику не видно за толстой оберткой вызовов БСП и костылей клиент-серверного взаимодействия. Селяви.
|
|||
3
Target1025
21.07.21
✎
09:46
|
(1) Зачем они делают временную ссылку?
|
|||
4
Галахад
гуру
21.07.21
✎
09:47
|
Забавляет количество заглянувших в ветку и ответивших.
|
|||
5
Target1025
21.07.21
✎
09:48
|
(1) я так понимаю, что из-за этой временной ссылки начала рушиться уникальность по номеру, на что мне начали жаловаться пользователи. Она пытается писаться, когда в системе лежит еще старая ссылка.
|
|||
6
lodger
21.07.21
✎
10:07
|
(3) там вроде есть комментарии
// Для корректной регистрации данных среднего заработка нужно прежде зарегистрировать начисления и отработанное время. ДанныеДляПроведения = ДанныеДокументаДляПроведения(ДанныеДляПроведения); ИсключаемыеРегистраторы.Добавить(ДанныеДляПроведения.ДокументСсылка); // Регистрируем данные документа в учете. Отказ = Ложь; // Смоделируем коллекцию движений документа. НаборыЗаписей = ЗарплатаКадры.НаборыЗаписейРегистратора(Метаданные.Документы.Увольнение, ДанныеДляПроведения.ДокументСсылка); // Регистрация начислений РасчетЗарплатыРасширенный.СформироватьДвиженияНачислений( НаборыЗаписей, Отказ, Объект.Организация, КонецМесяца(Объект.ПериодРегистрации), ДанныеДляПроведения.Начисления, ДанныеДляПроведения.ПоказателиНачислений, Истина); // Регистрация отработанного времени в учете начислений и удержаний. ДанныеДляПроведенияУчетЗарплаты = ОтражениеЗарплатыВУчете.ОписаниеДанныеДляПроведения(); ДанныеДляПроведенияУчетЗарплаты.Движения = НаборыЗаписей; ДанныеДляПроведенияУчетЗарплаты.Организация = Объект.Организация; ДанныеДляПроведенияУчетЗарплаты.ПериодРегистрации = Объект.ПериодРегистрации; ДанныеДляПроведенияУчетЗарплаты.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц; УчетНачисленнойЗарплаты.ЗарегистрироватьОтработанноеВремя(ДанныеДляПроведенияУчетЗарплаты, Отказ, ДанныеДляПроведения.ОтработанноеВремяПоСотрудникам, Истина); // Определяем исключаемый регистратор, который будет использоваться при обновлении корректировок. НаборыЗаписей.ДанныеОВремениДляРасчетаСреднегоОбщий.ДополнительныеСвойства.Вставить("ИсключаемыйРегистратор", СсылкаНаОбъект); // Учет среднего заработка УчетСреднегоЗаработка.ЗарегистрироватьДанныеСреднегоЗаработка(НаборыЗаписей, Отказ, ДанныеДляПроведения.НачисленияДляСреднегоЗаработка, Истина); // Обновляем данные среднего заработка в документе с учетом зарегистрированных начислений. ЗаполнитьПериодРасчетаСреднегоЗаработка(); ОчиститьРассчитанныеДанные(); (5) контроль уникальности включен в конфе поставщика, код тоже типовой. почему у всех робит, а у тебя сбой? |
|||
7
Said_We
21.07.21
✎
10:28
|
(2) Не код в типовых, а копипаст овна - вызовы, подготовка вызова и прочей шелухи.
|
|||
8
Said_We
21.07.21
✎
10:29
|
(4) А что тут отвечать?
У ЗиУП структура таблиц данных через одно место, почему код должен быть иным? |
|||
9
fisher
21.07.21
✎
10:45
|
(3) Если это цельный кусок кода - то непонятно зачем. Атавизм после рефакторинга скорее всего.
|
|||
10
fisher
21.07.21
✎
10:52
|
(5) Не вижу связи. Ты типа думаешь на то, что при записи ранее записанного УстановитьСсылкуНового() что-то нехорошее делает? Я думаю, оно просто игнорируется. Хотя говнокод конечно. Да и вообще оно все смердит.
|
|||
11
fisher
21.07.21
✎
10:55
|
Хотя тогда возникает вопрос, что будет результатом выполнения РеквизитыДляПроведения = Документы.Увольнение.РеквизитыДляПроведения(ВременнаяСсылка);
Это точно типовой код без купюр, который вызывается и при перезаписи в том числе? |
|||
12
ptiz
21.07.21
✎
11:13
|
(0) причем, после Скопировать() - все ДополнительныеСвойства очищаются. Остатки овнокода какого-то.
|
|||
13
lodger
21.07.21
✎
11:42
|
(7) а мне отдельно нравится бизнес-логика на форме документа. причем обоих (одиночный и списочный).
то есть программно с этими документами особо не поработаешь, не вызвав форму документа. |
|||
14
Said_We
21.07.21
✎
11:48
|
ЗУП 3.1 в топку.
Увольнение есть одиночное и списком. Делают движения оба документа. Есть прием - аналогично. А есть отпуск и отпуск списком. Отпуск списком движений не делает. :-) Зачем отдельный документ индивидуальный мне не понятно. Списком достаточно для всех событий иметь и не надо только в его названии это слово "списком" использовать. Индивидуальные документы - это атавизмы, копипасты и т.д. :-) |
|||
15
Target1025
21.07.21
✎
12:52
|
(11) это 3.1.18 ЗУП, метод "ПриЗаписи".
|
|||
16
polosov
21.07.21
✎
12:57
|
(14) ОтпускаСотрудников по большей части кадровый док. Отпуск - расчетный.
|
|||
17
Said_We
21.07.21
✎
13:01
|
(15) У вас кто-то поиздевался над этим модулем.
В типовой овно код, но в вашем случае кто-то добавил. |
|||
18
Said_We
21.07.21
✎
13:04
|
(16) А с остальными документами другая аналогия наблюдается :-)
т.е. другие виды документы списком полноценные, а тут на тебе и только кадровый? На самом деле "ОтпускСписком", только для печатной формы Т-6а. Он даже не кадровый. Он вообще движений не делает никаких. Просто контейнер для сбора печатной формы Т-6а списком. Никакой логики в действиях разработчиков ЗиУП я в части этого документа не вижу. |
|||
19
polosov
21.07.21
✎
13:07
|
(18) F1 нажми в ОтпускаСотрудников.
А если ты оформишь списком на 5000 человек и потом тебе надо будет скорректировать кому-то параметры отпуска, то опять будешь проводить 5000 человек по регистрам? |
|||
20
Said_We
21.07.21
✎
13:21
|
(19) Зачем так сложно? Я захожу в конфигуратор и наблюдаю в движениях документа пустоту.
А если увольнять списком 5 000 или перемещать 5 000 человек и надо будет что-то откорректировать, то данное правило не действует? :-) |
|||
21
Said_We
21.07.21
✎
13:24
|
(19) Опять же никто не мешает вводить документ списком по одному человеку и иметь функционал как у обычного документа не списком. Зачем дублирование функционала двумя видами документов и так почти по каждой операции?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |