К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Обновление ЗиК: проблема с вычетами

Гость
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
Цитата:
Сообщение от KonstS Посмотреть сообщение
Можно так:
Попробовал, похоже, помогло. По крайней мере, обновление завершилось без проблем и стал нормально проводиться док "Выплата зарплаты" (как оказалось, он не проводился после обновления, ругался "СуммыВычетов[Номер]=СуммыВычетов[Номер]+СуммаВычета;
{Глобальный модуль(34479)**: Значение индексного выражения находится за границами массива
")
Спасибо!


К списку вопросов






Copyright ©, Все права защищены