0
- 16.01.2012 - 17:38
|
Обновляю Зик 314 на 319. Само обновление проходит нормально, а при первом запуске выдает ошибку : СпрВидыВычетов.Записать(); {Обработка.ОбновлениеИБ.Форма.Модуль(1674)**: Код не уникальный! Насколько смог понять, ругается на вычет с кодом 108. Как быть? Две другие базы обновились без проблем... | |
1
- 16.01.2012 - 21:15
|
1-БВН > Возьми стороннюю обработку по редактированию агрегатных объектов. Такие обработки на встроенный модуль формы или списка не опираются, потому покажут все, и помогут исправить :) Открываешь две базы, и сравниваешь элементы... | |
2
- 17.01.2012 - 08:06
| 1-БВН >Что делал: в конфигураторе убрал галку "контроль уникальности", затем обновил, запустил. Затем пометил оба вычета на удаление (их появится 2), один из них удалился. В общем, как-то так. Попробуй на копии. | |
3
- 17.01.2012 - 08:11
|
Можно так: Выч=СоздатьОбъект("Справочник.ВидыВычетов"); Выч.НайтиПоКоду("108\101",0); Испр108=Выч.ТекущийЭлемент(); Выч.НайтиПоКоду("109\106",0); Испр109=Выч.ТекущийЭлемент(); Выч.НайтиПоКоду("110\102",0); Испр110=Выч.ТекущийЭлемент(); Выч.НайтиПоКоду("112\107",0); Испр112=Выч.ТекущийЭлемент(); Выч.НайтиПоКоду("313\311",0); Испр313=Выч.ТекущийЭлемент(); Спр=СоздатьОбъект("Справочник.Сотрудники"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Выч=СоздатьОбъект("Справочник.ВычетыСотрудниковПоН ДФЛ"); Выч.ИспользоватьВладельца(Спр.ТекущийЭлемент()); Выч.ВЫбратьЭлементы(); Пока ВЫч.ПолучитьЭлемент()=1 Цикл Если Выч.ВидВычета.Код="108" Тогда Сообщить(""+Спр.ТекущийЭлемент()+" меняю "+Выч.ВидВычета+" на "+Испр108,"!"); Выч.ВидВычета=Испр108; Выч.Записать(); ИначеЕсли Выч.ВидВычета.Код="109" Тогда Сообщить(""+Спр.ТекущийЭлемент()+" меняю "+Выч.ВидВычета+" на "+Испр109,"!"); Выч.ВидВычета=Испр109; Выч.Записать(); ИначеЕсли Выч.ВидВычета.Код="110" Тогда Сообщить(""+Спр.ТекущийЭлемент()+" меняю "+Выч.ВидВычета+" на "+Испр110,"!"); Выч.ВидВычета=Испр110; Выч.Записать(); ИначеЕсли Выч.ВидВычета.Код="112" Тогда Сообщить(""+Спр.ТекущийЭлемент()+" меняю "+Выч.ВидВычета+" на "+Испр112,"!"); Выч.ВидВычета=Испр112; Выч.Записать(); ИначеЕсли Выч.ВидВычета.Код="313" Тогда Сообщить(""+Спр.ТекущийЭлемент()+" меняю "+Выч.ВидВычета+" на "+Испр313,"!"); Выч.ВидВычета=Испр313; Выч.Записать(); КонецЕсли; КонецЦикла; КонецЦикла; ВЫч=СоздатьОбъект("Справочник.ВидыВычетов"); Выч.ВыбратьЭлементы(); Пока Выч.ПолучитьЭлемент()=1 Цикл Если Выч.Код="108" Тогда Сообщить("Удален вычет "+ВЫч.ТекущийЭлемент()); выч.Удалить(1); ИначеЕсли Выч.Код="109" Тогда Сообщить("Удален вычет "+ВЫч.ТекущийЭлемент()); выч.Удалить(1); ИначеЕсли Выч.Код="110" Тогда Сообщить("Удален вычет "+ВЫч.ТекущийЭлемент()); выч.Удалить(1); ИначеЕсли Выч.Код="112" Тогда Сообщить("Удален вычет "+ВЫч.ТекущийЭлемент()); выч.Удалить(1); ИначеЕсли Выч.Код="313" Тогда Сообщить("Удален вычет "+ВЫч.ТекущийЭлемент()); выч.Удалить(1); КонецЕсли; КонецЦикла; Пробуйте на свой страх и риск, сначала на копии. Людям, которым сделал, помогло | |
4
- 17.01.2012 - 08:28
| Попробовал, похоже, помогло. По крайней мере, обновление завершилось без проблем и стал нормально проводиться док "Выплата зарплаты" (как оказалось, он не проводился после обновления, ругался "СуммыВычетов[Номер]=СуммыВычетов[Номер]+СуммаВычета; {Глобальный модуль(34479)**: Значение индексного выражения находится за границами массива ") Спасибо! | |
| Интернет-форум Краснодарского края и Краснодара |