Убираем развернутое сальдо и неверные итоги валютных взаиморасчетов
Задачи пользователя - Адаптация типовых решений
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
UPD В v1.1 Добавлена кнопка проверки и исправление идёт сразу по трём контурам, Валюты, Направления деятельности, Подразделения.
Для исправления этой проблемы необходимо выполнить приведение типов, в старых документах (а иногда и в новых) 1С зачастую выполняют запись то значения NULL, то значения Справочники.Валюты.ПустаяСсылка что приводит к некорректному отображению в ОСВ.
Создана обработка, которая приводит значения к корректному NULL. Обработка "В одну кнопку", разумеется, сначала необходимо запустить её на тестовой базе.
Выполнялась проверка данного действия на ERP 2.5.8.245 и ERP 2.5.7.402, также, вероятнее всего, подойдёт и для КА соответствующих версий.
Код открытый. Обработка одноразовая, однако можно приведение типов внедрить и в регламентное задание, и в событие перед записью в регистр.
&НаКлиенте
Процедура ОбработатьПроводки(Команда)
ОбработатьПроводкиНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОбработатьПроводкиНаСервере()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Хозрасчетный.Регистратор КАК Регистратор
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| (Хозрасчетный.ВалютаДт = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
| ИЛИ Хозрасчетный.ВалютаКт = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка))
| И НЕ ТИПЗНАЧЕНИЯ(Хозрасчетный.Регистратор) = ТИП(Документ.ОперацияБух)
|
|СГРУППИРОВАТЬ ПО
| Хозрасчетный.Регистратор
|АВТОУПОРЯДОЧИВАНИЕ";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
СтарыеПроводки = Результат.Регистратор.ПолучитьОбъект().Движения.Хозрасчетный;
СтарыеПроводки.Прочитать();
НовыеПроводки = Результат.Регистратор.ПолучитьОбъект().Движения.Хозрасчетный;
НовыеПроводки.Прочитать();
Для Каждого НоваяПроводка из НовыеПроводки Цикл
Если НоваяПроводка.СуммаВРДт = Null Тогда
//Сообщить("Исправлен тип пустого поля проводки ВРКт " + Результат.Регистратор);
НоваяПроводка.СуммаВРДт = 0;
КонецЕсли;
Если НоваяПроводка.СуммаПРДт = Null Тогда
//Сообщить("Исправлен тип пустого поля проводки ПРКт " + Результат.Регистратор);
НоваяПроводка.СуммаПРДт = 0;
КонецЕсли;
Если НоваяПроводка.СуммаВРКт = Null Тогда
//Сообщить("Исправлен тип пустого поля проводки ВРКт " + Результат.Регистратор);
НоваяПроводка.СуммаВРКт = 0;
КонецЕсли;
Если НоваяПроводка.СуммаПРКт = Null Тогда
//Сообщить("Исправлен тип пустого поля проводки ПРКт " + Результат.Регистратор);
НоваяПроводка.СуммаПРКт = 0;
КонецЕсли;
Если НоваяПроводка.ВалютаДТ = Справочники.Валюты.ПустаяСсылка() Тогда
НоваяПроводка.ВалютаДТ = NULL;
КонецЕсли;
Если НоваяПроводка.ВалютаКТ = Справочники.Валюты.ПустаяСсылка() Тогда
НоваяПроводка.ВалютаКТ = NULL;
КонецЕсли;
Для Каждого Субконто Из НоваяПроводка.СубконтоДт Цикл
Если НЕ ЗначениеЗаполнено(Субконто.Ключ) Тогда
НоваяПроводка.СубконтоДт.Удалить(Субконто.Ключ);
КонецЕсли;
КонецЦикла;
Для Каждого Субконто Из НоваяПроводка.СубконтоКт Цикл
Если НЕ ЗначениеЗаполнено(Субконто.Ключ) Тогда
НоваяПроводка.СубконтоКт.Удалить(Субконто.Ключ);
КонецЕсли;
КонецЦикла;
КонецЦикла;
РегистрыБухгалтерии.Хозрасчетный.ВыполнитьДопОбработкуПроводок(НовыеПроводки);
Для Каждого НоваяПроводка из НовыеПроводки Цикл
Если НЕ ЗначениеЗаполнено(НоваяПроводка.Регистратор) Тогда
НовыеПроводки.Удалить(НоваяПроводка);
//Сообщить("Новая проводка в документе " + Результат.Регистратор);
Продолжить;
КонецЕсли;
КонецЦикла;
НовыеПроводки.ОбменДанными.Загрузка = Истина;
НовыеПроводки.Записать();
КонецЦикла;
Сообщить("Готово.");
КонецПроцедуры
Если будете запускать на других конфигурациях, строчку
РегистрыБухгалтерии.Хозрасчетный.ВыполнитьДопОбработкуПроводок(НовыеПроводки);
можно убрать, она в принципе вспомогательная. Запускает типовую обработку проводок.
Было время, я делал в событии перед записью хозрасчетного обработку проводок, вот пример:
Процедура актУдалитьПустыеВалютыВПроводках(Проводки) Экспорт
Для Каждого СтрокаТЧ из Проводки Цикл
Если СтрокаТЧ.ВалютаДТ = Справочники.Валюты.ПустаяСсылка() Тогда
СтрокаТЧ.ВалютаДТ = NULL;
КонецЕсли;
Если СтрокаТЧ.ВалютаКТ = Справочники.Валюты.ПустаяСсылка() Тогда
СтрокаТЧ.ВалютаКТ = NULL;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Вступайте в нашу телеграмм-группу Инфостарт