Имя: Пароль:
1C
 
Откуда лезет валюта в отчетах ?
☑
0 vv2304
 
14.10.26
✎
16:21
Типовая отраслевая КОРП на базе бухгалтерии.
Делал слияние баз с пом. переноса ВыгрузкаЗагрузкаДанныхXML.
В базе-источнике валютный учет выключен.
В базе-приемнике валютный учет включен.
Почему-то по некоторым перенесенным контрагентам по 60 счету появились строки "Вал." Хотя в договорах руб.
Отключать константу нельзя.
В проводках документов валюты нет. Если документ перепровести, в бух.отчетах строка "Вал." пропадает, но документы в закрытом периоде, трогать нельзя.
1 Kigo_Kigo
 
14.10.26
✎
17:17
В проводке стоит Валюта как Справочники.Валюты.ПустаяСсылка()
Лечится легко, часто сталкиваемся при обменах, вот код полечить, обработку сам сваяещь


Процедура КоманднаяПанель1ЗаполнитьДокументамиСОшибками(Кнопка)
    ТЧ.Очистить();
    
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    Т.Регистратор КАК Документ,
    |    Т.Счет КАК Счет,
    |    Т.Ошибка КАК Ошибка
    |ИЗ
    |    (ВЫБРАТЬ различные
    |        Хозрасчетный.Регистратор КАК Регистратор,
    |        Хозрасчетный.СчетДт КАК Счет,
    |        ""Валюта не NULL"" КАК Ошибка
    |    ИЗ
    |        РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |    ГДЕ
    |        &ВалютаНеNULL = ИСТИНА
    |        И (&ДатаНач = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                    И &ДатаКон = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                ИЛИ Хозрасчетный.Период МЕЖДУ &ДатаНач И &ДатаКон)
    |        И Хозрасчетный.СчетДт.Валютный = ЛОЖЬ
    |        И НЕ Хозрасчетный.ВалютаДт ЕСТЬ NULL
    |    
    |    ОБЪЕДИНИТЬ ВСЕ
    |    
    |    ВЫБРАТЬ  различные
    |        Хозрасчетный.Регистратор,
    |        Хозрасчетный.СчетКт,
    |        ""Валюта не NULL""
    |    ИЗ
    |        РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |    ГДЕ
    |        &ВалютаНеNULL = ИСТИНА
    |        И (&ДатаНач = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                    И &ДатаКон = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |                ИЛИ Хозрасчетный.Период МЕЖДУ &ДатаНач И &ДатаКон)
    |        И Хозрасчетный.СчетКт.Валютный = ЛОЖЬ
    |        И НЕ Хозрасчетный.ВалютаКт ЕСТЬ NULL) КАК Т
    |
    |СГРУППИРОВАТЬ ПО
    |    Т.Регистратор,
    |    Т.Счет,
    |    Т.Ошибка
    |
    |УПОРЯДОЧИТЬ ПО
    |    Т.Регистратор
    |АВТОУПОРЯДОЧИВАНИЕ"

    
    //"ВЫБРАТЬ РАЗЛИЧНЫЕ
    //                      |    ХозрасчетныйОбороты.Регистратор КАК Документ,
    //                      |    ХозрасчетныйОбороты.Счет КАК Счет,
    //                      |    ""Валюта не NULL"" КАК Ошибка
    //                      |ИЗ
    //                      |    РегистрБухгалтерии.Хозрасчетный.Обороты(
    //                      |            &ДатаНач,
    //                      |            &ДатаКон,
    //                      |            Регистратор,
    //                      |            НЕ Счет.Валютный,
    //                      |            ,
    //                      |            &ВалютаНеNULL
    //                      |                И Валюта = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка),
    //                      |            ,
    //                      |            ) КАК ХозрасчетныйОбороты"
                          //|ОБЪЕДИНИТЬ ВСЕ
                          //|
                          //|ВЫБРАТЬ РАЗЛИЧНЫЕ
                          //|    ХозрасчетныйОбороты.Регистратор,
                          //|    ХозрасчетныйОбороты.Счет,
                          //|    ""Подразделение не NULL""
                          //|ИЗ
                          //|    РегистрБухгалтерии.Хозрасчетный.Обороты(
                          //|            &Дата1,
                          //|            &Дата2,
                          //|            Регистратор,
                          //|            НЕ Счет.УчетПоПодразделениям,
                          //|            ,
                          //|            &ПодразделениеНеNULL
                          //|                И Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка),
                          //|            ,
                          //|            ) КАК ХозрасчетныйОбороты
                          //|
                          //|ОБЪЕДИНИТЬ ВСЕ
                          //|
                          //|ВЫБРАТЬ РАЗЛИЧНЫЕ
                          //|    ХозрасчетныйОбороты.Регистратор,
                          //|    ХозрасчетныйОбороты.Счет,
                          //|    ""Направление деятельности не NULL""
                          //|ИЗ
                          //|    РегистрБухгалтерии.Хозрасчетный.Обороты(
                          //|            &Дата1,
                          //|            &Дата2,
                          //|            Регистратор,
                          //|            НЕ Счет.УчетПоНаправлениямДеятельности,
                          //|            ,
                          //|            &НаправлениеДеятельностиНеNULL
                          //|                И НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка),
                          //|            ,
                          //|            ) КАК ХозрасчетныйОбороты
    );
    
    Запрос.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода));
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(КонПериода));
    
    Запрос.УстановитьПараметр("ВалютаНеNULL", ВалютаНеNULL);
//    Запрос.УстановитьПараметр("ПодразделениеНеNULL", ПодразделениеНеNULL);
//    Запрос.УстановитьПараметр("НаправлениеДеятельностиНеNULL", НаправлениеДеятельностиНеNULL);
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
    
        НовСтр_ТЧ = ТЧ.Добавить();
        ЗаполнитьЗначенияСвойств(НовСтр_ТЧ, Выборка);
        
    КонецЦикла;

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

Процедура УстановитьФлажки(Команда)
    Для Каждого Стр_ТЧ Из ТЧ Цикл
        Стр_ТЧ.Использовать = Истина;
    КонецЦикла;    
КонецПроцедуры

Процедура СнятьФлажки(Команда)
    Для Каждого Стр_ТЧ Из ТЧ Цикл
        Стр_ТЧ.Использовать = Ложь;
    КонецЦикла;
КонецПроцедуры

Процедура ИсправитьNULLНаСервере()
    
    Валюта_ПустаяСсылка = Справочники.Валюты.ПустаяСсылка();
    //Подразделение_ПустаяСсылка = Справочники.СтруктураПредприятия.ПустаяСсылка();
//    НаправлениеДеятельности_ПустаяСсылка = Справочники.НаправленияДеятельности.ПустаяСсылка();
    СписокДокументов = ТЧ.Выгрузить(Новый Структура("Использовать", Истина), "Документ");
    СписокДокументов.Свернуть("Документ");
    
    Индикатор1=0;
    Инд=0;
    КолДок=СписокДокументов.Количество();
    Счетчик=0;
    Для Каждого Стр Из СписокДокументов Цикл
        Счетчик=Счетчик+1;
        Если Инд<>Окр(Счетчик*100/КолДок) тогда
             Инд=Окр(Счетчик*100/КолДок);
             Индикатор1=Инд;
        КонецЕсли;
        //Если Не Стр.Использовать Тогда
        //    Продолжить;
        //КонецЕсли;
        
        НЗ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        НЗ.Отбор.Регистратор.Установить(Стр.Документ);
        НЗ.Прочитать();
        
        флБылиИзменения = Ложь;
        
        Для Каждого Запись_НЗ Из НЗ Цикл
            //Если НЕ Запись_НЗ.СчетДт.Валютный
            //    И Запись_НЗ.ВалютаДт = Валюта_ПустаяСсылка Тогда
            //    Запись_НЗ.ВалютаДт = NULL;
            //    флБылиИзменения = Истина;
            //КонецЕсли;
            //
            //Если НЕ Запись_НЗ.СчетКт.Валютный
            //    И Запись_НЗ.ВалютаКт = Валюта_ПустаяСсылка Тогда
            //    Запись_НЗ.ВалютаКт = NULL;
            //    флБылиИзменения = Истина;
            //КонецЕсли;
            
            Если ВалютаНеNULL И НЕ Запись_НЗ.СчетДт.Валютный
                И ТипЗнч(Запись_НЗ.ВалютаДт) <> Тип("Null") Тогда
                Запись_НЗ.ВалютаДт = NULL;
                ЕстьИзменения = Истина;
            КонецЕсли;
            
            Если ВалютаНеNULL И НЕ Запись_НЗ.СчетКт.Валютный
                И ТипЗнч(Запись_НЗ.ВалютаКт) <> Тип("Null") Тогда
                Запись_НЗ.ВалютаКт = NULL;
                ЕстьИзменения = Истина;
            КонецЕсли;

            
            //Если НЕ Запись_НЗ.СчетДт.УчетПоПодразделениям
            //    И Запись_НЗ.ПодразделениеДт = Подразделение_ПустаяСсылка Тогда
            //    Запись_НЗ.ПодразделениеДт = NULL;
            //    флБылиИзменения = Истина;
            //КонецЕсли;
            //
            //Если НЕ Запись_НЗ.СчетКт.УчетПоПодразделениям
            //    И Запись_НЗ.ПодразделениеКт = Подразделение_ПустаяСсылка Тогда
            //    Запись_НЗ.ПодразделениеКт = NULL;
            //    флБылиИзменения = Истина;
            //КонецЕсли;
            //
            //Если НЕ Запись_НЗ.СчетДт.УчетПоНаправлениямДеятельности
            //    И Запись_НЗ.НаправлениеДеятельностиДт = НаправлениеДеятельности_ПустаяСсылка Тогда
            //    Запись_НЗ.НаправлениеДеятельностиДт = NULL;
            //    флБылиИзменения = Истина;
            //КонецЕсли;
            //
            //Если НЕ Запись_НЗ.СчетКт.УчетПоНаправлениямДеятельности
            //    И Запись_НЗ.НаправлениеДеятельностиКт = НаправлениеДеятельности_ПустаяСсылка Тогда
            //    Запись_НЗ.НаправлениеДеятельностиКт = NULL;
            //    флБылиИзменения = Истина;
            //КонецЕсли;

        КонецЦикла;
        
        Если ЕстьИзменения Тогда
            НЗ.ОбменДанными.Загрузка = Истина;
            НЗ.Записать();
        КонецЕсли;
        
    КонецЦикла;
        Индикатор1=100;

     Сообщить("Обработка выполнена!!!");
    
КонецПроцедуры

Процедура ВыбПериодНажатие(Элемент)
    НастройкаПериода = Новый НастройкаПериода;
    НастройкаПериода.РедактироватьКакИнтервал = Истина;
    НастройкаПериода.РедактироватьКакПериод = Истина;
    НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
    НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
    Если НастройкаПериода.Редактировать() Тогда
        НачПериода = НастройкаПериода.ПолучитьДатуНачала();
        КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
    КонецЕсли;
КонецПроцедуры
2 Kigo_Kigo
 
14.10.26
✎
17:19
А картику прицепил, ну может не то, я тогда хз, у нас по невалютным счетам валютные обороты были
3 Fedor-1971
 
14.10.26
✎
17:35
(0) Посмотри в файл XML по проблемным суммам и подчисти
Как вариант, заполни данные в выборке из источника при выгрузке гарантированно Валюта = Неопределено.
Будет достаточно просто перезагрузить данные

Или как в (1) придётся лечить базу приёмник
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.