Услуги частного программиста 1С удаленно по РФ и с выездом по Москве

 
Акция при первом звонке, бесплатная консультация!

Закажите бесплатную консультацию. Пришлем полный каталог типовых и отраслевых решений «1С» и поможем в выборе.

 

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

Также данное явление имеет место быть при программном изменении настроек видов субконто на счете и записи счета в режиме ОбменДанными.Загрузка = Истина (без этого режима все отрабатывается корректно).

 

Для того чтобы исключить появление таких записей, нужно добавить следующий код в Модуль объекта регистра Хозрасчетный ПередЗаписью или в расширение

 

&После("ПередЗаписью")
Процедура КС_ПередЗаписью(Отказ, РежимЗаписи)

сооНайденные = Новый Соответствие;
Для Каждого Запись Из ЭтотОбъект Цикл
Для Каждого ДтКт Из СтрРазделить("Дт,Кт", ",", Ложь) Цикл
Счет = Запись["Счет" + ДтКт];
Субконто = Запись["Субконто"+ДтКт];
Если Не ЗначениеЗаполнено(Счет) Тогда
Продолжить;
КонецЕсли;

Если Счет.Валютный Тогда
Если Запись["Валюта" + ДтКт] = Null Тогда
Запись["Валюта" + ДтКт] = Справочники.Валюты.ПустаяСсылка();
КонецЕсли;
Иначе
Если Запись["Валюта" + ДтКт] <> Null Тогда
Запись["Валюта" + ДтКт] = Null;
КонецЕсли;
КонецЕсли;

Если Счет.УчетПоПодразделениям Тогда
Если Запись["Подразделение" + ДтКт] = Null Тогда
Запись["Подразделение" + ДтКт] = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
КонецЕсли;
Иначе
Если Запись["Подразделение" + ДтКт] <> Null Тогда
Запись["Подразделение" + ДтКт] = Null;
КонецЕсли;
КонецЕсли;

СоответсвиеТекущихСубконто = Новый Соответствие;
Для Каждого ВидСубконто ИЗ Счет.ВидыСубконто Цикл
СоответсвиеТекущихСубконто.Вставить(ВидСубконто.ВидСубконто,Субконто[ВидСубконто.ВидСубконто]);
КонецЦикла;

Для Каждого ВидСубконто ИЗ Счет.ВидыСубконто Цикл
Субконто.Вставить(ВидСубконто.ВидСубконто,ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение());
Если СоответсвиеТекущихСубконто[ВидСубконто.ВидСубконто]<>Неопределено Тогда
Субконто.Вставить(ВидСубконто.ВидСубконто,СоответсвиеТекущихСубконто[ВидСубконто.ВидСубконто]);
КонецЕсли;
КонецЦикла;

КонецЦикла;
КонецЦикла;

КонецПроцедуры

Опубликовано в Обработки 1С