Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: счет 684 Розрахунки за нарахованими відсотками
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
gorik77
по счету 684 велся учет, после обновления данные с обротки соответственно пропали.
для перевода данных на 6841 сотворилась такая внешняя обработка:


//*******************************************
Процедура Сформировать()
    ДокОперацияПоиск = СоздатьОбъект("Операция");
    ДокОперация = СоздатьОбъект("Операция");
    НачатьТранзакцию();
    ДокОперацияПоиск.ВыбратьОперации();
    Пока ДокОперацияПоиск.ПолучитьОперацию() = 1 Цикл
        Состояние(""+ ДокОперацияПоиск.Документ);
        
        
        Если ДокОперацияПоиск.Документ.Вид() = "Операция" Тогда
            ДокОперация = ДокОперацияПоиск;
        ИначеЕсли ДокОперация.НайтиОперацию(ДокОперацияПоиск.Документ) = 0 Тогда
            Продолжить;    
        КонецЕсли;
        
        ЕстьИзменения = 0;
        ДокОперация.ВыбратьПроводки();
        Пока ДокОперация.ПолучитьПроводку() = 1 Цикл
            
            Если ДокОперация.Дебет.Счет = СчетПоКоду(684) Тогда
                ДокОперация.Дебет.Счет = СчетПоКоду(6841);
                ЕстьИзменения = 1;
            КонецЕсли;
            
            Если ДокОперация.Кредит.Счет = СчетПоКоду(684) Тогда
                ДокОперация.Кредит.Счет = СчетПоКоду(6841);
                ЕстьИзменения = 1;
            КонецЕсли;
            
        КонецЦикла;

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


но что то все равно не так, ничего не происходит.
уточню, проводки были не только документами но и вручную
cvitova
Бухгалтерский учет для Украины 7.70.288
Обработка -> ОбновлениеРелиза
Процедура РазделениеСчета684() - Перенос с 684 на 6841.
gorik77
Цитата(cvitova @ 12.08.11, 23:10) необходимо зарегистрироваться для просмотра ссылки
Бухгалтерский учет для Украины 7.70.288
Обработка -> ОбновлениеРелиза
Процедура РазделениеСчета684() - Перенос с 684 на 6841.


если у вас есть такая обработка в поставке то выложите пожалуйста ее код, потому что у себя я не нашел такую
Vofka
Цитата
если у вас есть такая обработка в поставке то выложите пожалуйста ее код, потому что у себя я не нашел такую

Такая обработка должна біть во всех поставках. Возьмите, например, из последней типовой. Но если у вас её в конфе нет - то вряд ли она у вас вообще запустится.
gorik77
как таковая операции -> Обработка -> ОбновлениеРелиза существует, но в ней только появляется окно и в нем написано типа обновление не требуется, и все. текущий релиз 7.70.288
Vofka
Я с 77 определённо давно не работаю, но судя по всему вы криво обновили конфу. Т.е. из слов cvitova я понял то, что при каком-то очередном обновлении эта обработка разбивает 684 счет и переносит остатки из него на его субсчет. У вас этого не произошло. Почему не произошло - это уже вопрос к вам.
gorik77
все нормально, просто достал процедуру и влепил вместо своей внешней обработки
Процедура Сформировать()
    Перем    Опер, Док, Сч1, Сч2, Таб;
    
    // заменим проводки со счетом 19 на 192
    Состояние("Выполнение изменений в учете гудвила");
    
    Сч1 = СчетПоКоду("684");
    Сч2 = СчетПоКоду("6841");
    
    Если (ПустоеЗначение(Сч1)=1) Или (ПустоеЗначение(Сч1)=2) Тогда
        Возврат; // странно...
    КонецЕсли;
    
    Таб = СоздатьОбъект("ТаблицаЗначений");
    Таб.НоваяКолонка("Док");
    
    Док = СоздатьОбъект("Документ");
    
    Опер = СоздатьОбъект("Операция");
    Опер.ВыбратьОперацииСПроводками(,,Сч1);
    Пока Опер.ПолучитьПроводку()=1 Цикл
        Док.НайтиДокумент(Опер.Документ); // без такой "развязки" Таб будет содержать кучу ссылок на последний документ
                
        Таб.НоваяСтрока();
        Таб.Док = Док.ТекущийДокумент();
    КонецЦикла;
    
    Таб.Свернуть("Док",""); // список документов, в которых есть движения по сч.684
    
    Таб.ВыбратьСтроки();
    Пока Таб.ПолучитьСтроку()=1 Цикл
        Опер.НайтиОперацию(Таб.Док);
        Опер.ВыбратьПроводки();
        Пока Опер.ПолучитьПроводку()=1 Цикл
            // должны исправиться и сложные проводки, и "фокусы" типа Дт684 - Кт684
            Если Опер.Дебет.Счет=Сч1 Тогда
                Опер.Дебет.Счет = Сч2;
            КонецЕсли;
            Если Опер.Кредит.Счет=Сч1 Тогда
                Опер.Кредит.Счет = Сч2
            КонецЕсли;
        КонецЦикла;
        Опер.Записать();
//        глЗаписьЖурналаРегистрации(Комментарий, 2, 9, Таб.Док);
    КонецЦикла;
КонецПроцедуры

закоментировал запись в журнал регистрации и все как по маслу
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.