Реализация ежедневной переоценки активов и обязательств в 1С 7.7 по Пост.Мин.Фин.РБ от 26.12.2022 N61
Данные > Статьи и инструкции > Программирование
ПРОГРАММИРОВАНИЕ 1С → перейти в меню [СТАТЬИ И ИНСТРУКЦИИ]
В процедуре ПриНачалеРаботыСистемы() в 1С 7.7 Бухгалтерия предприятия:
Если СтрЧислоВхождений(НазваниеНабораПрав(),"ГлБухгалтер")<>0 Тогда
ТекДата = Макс('01.01.23', РабочаяДата()-90);
Если ПустоеЗначение(Константа.ДатаЗапретаРедактирования)=0 Тогда
ТекДата = Макс(Константа.ДатаЗапретаРедактирования, ТекДата);
КонецЕсли;
КонДата = РабочаяДата()-1;
КаталогИнфоУПДАТЕ=КаталогПользователя()+"InfoUpdate";
ИмяИнфоУПДАТЕ=СокрЛП("ezhednevnye_kursovye_raznicy");
ПутьИнфо=КаталогИнфоУПДАТЕ+"\"+ИмяИнфоУПДАТЕ+".txt";
ЗапускаемВопрос = 1;
Если ФС.СуществуетФайл(ПутьИнфо)=1 Тогда
ФайлИнфо = СоздатьОбъект("Текст");
ФайлИнфо.Открыть(ПутьИнфо);
Для ы = 1 По ФайлИнфо.КоличествоСтрок() Цикл
Если Дата(СокрЛП(ФайлИнфо.ПолучитьСтроку(ы)))=РабочаяДата() Тогда
ЗапускаемВопрос = 0; // значит сегодня уже выводили вопрос
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ЗапускаемВопрос = 1 Тогда
Если Вопрос("Провести автоматически ежедневные курсовые разницы
|с "+ТекДата+" по "+КонДата+"
|согласно Пост. Мин.фин.РБ от 26.12.2022 N61?","Да+Нет")="Да" Тогда
глПровестиАвтоматическиЕжедневныеКурсовыеРазницы(ТекДата, КонДата);
Если ФС.СуществуетФайл(ПутьИнфо)=0 Тогда
Если ФС.СуществуетФайл(КаталогИнфоУПДАТЕ)=0 Тогда
ФС.СоздатьКаталог(КаталогИнфоУПДАТЕ);
КонецЕсли;
КонецЕсли;
НашФайл=СоздатьОбъект("Текст");
НашФайл.ДобавитьСтроку(СокрЛП(РабочаяДата()));
НашФайл.Записать(ПутьИнфо);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТекДата = Макс('01.01.23', РабочаяДата()-90);
Если ПустоеЗначение(Константа.ДатаЗапретаРедактирования)=0 Тогда
ТекДата = Макс(Константа.ДатаЗапретаРедактирования, ТекДата);
КонецЕсли;
КонДата = РабочаяДата()-1;
КаталогИнфоУПДАТЕ=КаталогПользователя()+"InfoUpdate";
ИмяИнфоУПДАТЕ=СокрЛП("ezhednevnye_kursovye_raznicy");
ПутьИнфо=КаталогИнфоУПДАТЕ+"\"+ИмяИнфоУПДАТЕ+".txt";
ЗапускаемВопрос = 1;
Если ФС.СуществуетФайл(ПутьИнфо)=1 Тогда
ФайлИнфо = СоздатьОбъект("Текст");
ФайлИнфо.Открыть(ПутьИнфо);
Для ы = 1 По ФайлИнфо.КоличествоСтрок() Цикл
Если Дата(СокрЛП(ФайлИнфо.ПолучитьСтроку(ы)))=РабочаяДата() Тогда
ЗапускаемВопрос = 0; // значит сегодня уже выводили вопрос
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ЗапускаемВопрос = 1 Тогда
Если Вопрос("Провести автоматически ежедневные курсовые разницы
|с "+ТекДата+" по "+КонДата+"
|согласно Пост. Мин.фин.РБ от 26.12.2022 N61?","Да+Нет")="Да" Тогда
глПровестиАвтоматическиЕжедневныеКурсовыеРазницы(ТекДата, КонДата);
Если ФС.СуществуетФайл(ПутьИнфо)=0 Тогда
Если ФС.СуществуетФайл(КаталогИнфоУПДАТЕ)=0 Тогда
ФС.СоздатьКаталог(КаталогИнфоУПДАТЕ);
КонецЕсли;
КонецЕсли;
НашФайл=СоздатьОбъект("Текст");
НашФайл.ДобавитьСтроку(СокрЛП(РабочаяДата()));
НашФайл.Записать(ПутьИнфо);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Процедура №1 в глобальном модуле в 1С 7.7 Бухгалтерия предприятия:
Процедура глПровестиАвтоматическиЕжедневныеКурсовыеРазницы(ТекДата, КонДата)
СписокСчетов = СоздатьОбъект("СписокЗначений");
Сч52 = СчетПоКоду("52"); СписокСчетов.ДобавитьЗначение(Сч52);
Сч554 = СчетПоКоду("55.4"); СписокСчетов.ДобавитьЗначение(Сч554);
Сч558 = СчетПоКоду("55.8"); СписокСчетов.ДобавитьЗначение(Сч558);
Сч559 = СчетПоКоду("55.9"); СписокСчетов.ДобавитьЗначение(Сч559);
Сч5511 = СчетПоКоду("55.11"); СписокСчетов.ДобавитьЗначение(Сч5511);
Сч5522 = СчетПоКоду("55.22"); СписокСчетов.ДобавитьЗначение(Сч5522);
Сч572 = СчетПоКоду("57.2"); СписокСчетов.ДобавитьЗначение(Сч572);
Сч574 = СчетПоКоду("57.4"); СписокСчетов.ДобавитьЗначение(Сч574);
Пока ТекДата<=КонДата Цикл;
//Сообщить("... проверка курса валютных остатков по сч. 52, 55, 57 за "+ТекДата);
Для Номер = 1 По СписокСчетов.РазмерСписка() Цикл
СчЗнач = СписокСчетов.ПолучитьЗначение(Номер); //получить значение и представление
ПереоценкаПоСубконто=0;
Если СчЗнач.КоличествоСубконто() > 0 Тогда
СубкОбор=1;
Для с=1 По СчЗнач.КоличествоСубконто() Цикл
Если СчЗнач.ТолькоОбороты(с)=0 Тогда
СубкОбор=0;
КонецЕсли;
КонецЦикла;
Если СубкОбор=0 Тогда
ПереоценкаПоСубконто=1;
Иначе
ПереоценкаПоСубконто=0;
КонецЕсли;
Иначе
ПереоценкаПоСубконто=0;
КонецЕсли;
Если ПереоценкаПоСубконто=1 Тогда
БИ_Вал = СоздатьОбъект("БухгалтерскиеИтоги");
БИ_Вал.Опции(0,0);
КолОборотСубкСч=0;
Для ИСб = 1 По СчЗнач.КоличествоСубконто() Цикл
Если СчЗнач.ТолькоОбороты(ИСб)=0 Тогда
БИ_Вал.ИспользоватьСубконто(СчЗнач.ВидСубконто(ИСб),,1,0);
Иначе
КолОборотСубкСч=КолОборотСубкСч+1;
КонецЕсли;
КонецЦикла;
БИ_Вал.ВыполнитьЗапрос(ТекДата,ТекДата,СчЗнач,,,1,,3);
У = 1;
БИ_Вал.ВыбратьСубконто(У);
Фл = БИ_Вал.ПолучитьСубконто(У);
СуммаРасхожденияСКурсом=0;
Пока Фл=1 Цикл
КолСубкСч=СчЗнач.КоличествоСубконто()-КолОборотСубкСч;
Если У = КолСубкСч Тогда // ВОТ ЗДЕСЬ -1
БИ_Вал.ВыбратьВалюты();
Пока БИ_Вал.ПолучитьВалюту()=1 Цикл
ОстВал = БИ_Вал.СКД("В")-БИ_Вал.СКК("В");
Если ОстВал>0 Тогда
ОстТек = БИ_Вал.СКД("С")-БИ_Вал.СКК("С");
Курс = БИ_Вал.Валюта.Курс.Получить(ТекДата);
Кратность = БИ_Вал.Валюта.Кратность.Получить(ТекДата);
ОстНов = Окр(ОстВал*Курс/Кратность, 2);
КурсРазн = ОстНов-ОстТек;
Если (Курс <> 0) И (Кратность <> 0) Тогда
ВалСуммаРасч = Окр(ОстТек / Курс,2);
СуммаРасхожденияСКурсом= СуммаРасхожденияСКурсом + КурсРазн;
//Если СуммаРасхожденияСКурсом<>0 Тогда
//Сообщить(СокрЛП(СчЗнач)+" Сумма (по субконто) расхождения с курсом="+КурсРазн+" по вал.сумме="+(ОстВал)+" "+БИ_Вал.Валюта);
//КонецЕсли;
Иначе
ВалСуммаРасч = 0;
СуммаРасхожденияСКурсом=0;
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" не определен курс! ","!!!");
СписокСчетов = СоздатьОбъект("СписокЗначений");
Сч52 = СчетПоКоду("52"); СписокСчетов.ДобавитьЗначение(Сч52);
Сч554 = СчетПоКоду("55.4"); СписокСчетов.ДобавитьЗначение(Сч554);
Сч558 = СчетПоКоду("55.8"); СписокСчетов.ДобавитьЗначение(Сч558);
Сч559 = СчетПоКоду("55.9"); СписокСчетов.ДобавитьЗначение(Сч559);
Сч5511 = СчетПоКоду("55.11"); СписокСчетов.ДобавитьЗначение(Сч5511);
Сч5522 = СчетПоКоду("55.22"); СписокСчетов.ДобавитьЗначение(Сч5522);
Сч572 = СчетПоКоду("57.2"); СписокСчетов.ДобавитьЗначение(Сч572);
Сч574 = СчетПоКоду("57.4"); СписокСчетов.ДобавитьЗначение(Сч574);
Пока ТекДата<=КонДата Цикл;
//Сообщить("... проверка курса валютных остатков по сч. 52, 55, 57 за "+ТекДата);
Для Номер = 1 По СписокСчетов.РазмерСписка() Цикл
СчЗнач = СписокСчетов.ПолучитьЗначение(Номер); //получить значение и представление
ПереоценкаПоСубконто=0;
Если СчЗнач.КоличествоСубконто() > 0 Тогда
СубкОбор=1;
Для с=1 По СчЗнач.КоличествоСубконто() Цикл
Если СчЗнач.ТолькоОбороты(с)=0 Тогда
СубкОбор=0;
КонецЕсли;
КонецЦикла;
Если СубкОбор=0 Тогда
ПереоценкаПоСубконто=1;
Иначе
ПереоценкаПоСубконто=0;
КонецЕсли;
Иначе
ПереоценкаПоСубконто=0;
КонецЕсли;
Если ПереоценкаПоСубконто=1 Тогда
БИ_Вал = СоздатьОбъект("БухгалтерскиеИтоги");
БИ_Вал.Опции(0,0);
КолОборотСубкСч=0;
Для ИСб = 1 По СчЗнач.КоличествоСубконто() Цикл
Если СчЗнач.ТолькоОбороты(ИСб)=0 Тогда
БИ_Вал.ИспользоватьСубконто(СчЗнач.ВидСубконто(ИСб),,1,0);
Иначе
КолОборотСубкСч=КолОборотСубкСч+1;
КонецЕсли;
КонецЦикла;
БИ_Вал.ВыполнитьЗапрос(ТекДата,ТекДата,СчЗнач,,,1,,3);
У = 1;
БИ_Вал.ВыбратьСубконто(У);
Фл = БИ_Вал.ПолучитьСубконто(У);
СуммаРасхожденияСКурсом=0;
Пока Фл=1 Цикл
КолСубкСч=СчЗнач.КоличествоСубконто()-КолОборотСубкСч;
Если У = КолСубкСч Тогда // ВОТ ЗДЕСЬ -1
БИ_Вал.ВыбратьВалюты();
Пока БИ_Вал.ПолучитьВалюту()=1 Цикл
ОстВал = БИ_Вал.СКД("В")-БИ_Вал.СКК("В");
Если ОстВал>0 Тогда
ОстТек = БИ_Вал.СКД("С")-БИ_Вал.СКК("С");
Курс = БИ_Вал.Валюта.Курс.Получить(ТекДата);
Кратность = БИ_Вал.Валюта.Кратность.Получить(ТекДата);
ОстНов = Окр(ОстВал*Курс/Кратность, 2);
КурсРазн = ОстНов-ОстТек;
Если (Курс <> 0) И (Кратность <> 0) Тогда
ВалСуммаРасч = Окр(ОстТек / Курс,2);
СуммаРасхожденияСКурсом= СуммаРасхожденияСКурсом + КурсРазн;
//Если СуммаРасхожденияСКурсом<>0 Тогда
//Сообщить(СокрЛП(СчЗнач)+" Сумма (по субконто) расхождения с курсом="+КурсРазн+" по вал.сумме="+(ОстВал)+" "+БИ_Вал.Валюта);
//КонецЕсли;
Иначе
ВалСуммаРасч = 0;
СуммаРасхожденияСКурсом=0;
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" не определен курс! ","!!!");
КонецЕсли;
ИначеЕсли ОстВал<0 Тогда
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" меньше нуля! ","!!!");
ИначеЕсли ОстВал<0 Тогда
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" меньше нуля! ","!!!");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если У < КолСубкСч Тогда
У = У+1;
Если СчЗнач.ТолькоОбороты(У)=0 Тогда
БИ_Вал.ВыбратьСубконто(У);
КонецЕсли;
КонецЕсли;
Если СчЗнач.ТолькоОбороты(У)=0 Тогда
Фл = БИ_Вал.ПолучитьСубконто(У);
Пока (Фл = 0) И (У > 1) Цикл
У = У-1;
Фл = БИ_Вал.ПолучитьСубконто(У);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если СуммаРасхожденияСКурсом<>0 Тогда
//Сообщить(СокрЛП(СчЗнач)+" Сумма (по субконто) расхождения с курсом="+(СуммаРасхожденияСКурсом)+" по вал.сумме="+ (ОстВал)+" "+БИ_Вал.Валюта);
КонецЦикла;
КонецЕсли;
Если У < КолСубкСч Тогда
У = У+1;
Если СчЗнач.ТолькоОбороты(У)=0 Тогда
БИ_Вал.ВыбратьСубконто(У);
КонецЕсли;
КонецЕсли;
Если СчЗнач.ТолькоОбороты(У)=0 Тогда
Фл = БИ_Вал.ПолучитьСубконто(У);
Пока (Фл = 0) И (У > 1) Цикл
У = У-1;
Фл = БИ_Вал.ПолучитьСубконто(У);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если СуммаРасхожденияСКурсом<>0 Тогда
//Сообщить(СокрЛП(СчЗнач)+" Сумма (по субконто) расхождения с курсом="+(СуммаРасхожденияСКурсом)+" по вал.сумме="+ (ОстВал)+" "+БИ_Вал.Валюта);
глСоздатьДокументПереоценкаВалюты(ТекДата, БИ_Вал);
КонецЕсли;
Иначе
БИ_Вал = СоздатьОбъект("БухгалтерскиеИтоги");
БИ_Вал.Опции(0,0);
БИ_Вал.ВыполнитьЗапрос(ТекДата,ТекДата,СчЗнач,,,1,,3);
БИ_Вал.ВыбратьВалюты();
Пока БИ_Вал.ПолучитьВалюту()=1 Цикл
ОстВал = БИ_Вал.СКД("В")-БИ_Вал.СКК("В");
Если ОстВал>0 Тогда
ОстТек = БИ_Вал.СКД("С")-БИ_Вал.СКК("С");
Курс = БИ_Вал.Валюта.Курс.Получить(ТекДата);
Кратность = БИ_Вал.Валюта.Кратность.Получить(ТекДата);
ОстНов = Окр(ОстВал*Курс/Кратность, 2);
КурсРазн = ОстНов-ОстТек;
Если (Курс <> 0) И (Кратность <> 0) Тогда
ВалСуммаРасч = Окр(ОстТек / Курс,2);
СуммаРасхожденияСКурсом= СуммаРасхожденияСКурсом + КурсРазн;
Если СуммаРасхожденияСКурсом<>0 Тогда
//Сообщить(СокрЛП(СчЗнач)+" Сумма расхождения с курсом="+КурсРазн+" по вал.сумме="+(ОстВал)+" "+БИ_Вал.Валюта);
глСоздатьДокументПереоценкаВалюты(ТекДата, БИ_Вал);
КонецЕсли;
Иначе
ВалСуммаРасч = 0;
СуммаРасхожденияСКурсом=0;
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" не определен курс! ","!!!");
КонецЕсли;
Иначе
БИ_Вал = СоздатьОбъект("БухгалтерскиеИтоги");
БИ_Вал.Опции(0,0);
БИ_Вал.ВыполнитьЗапрос(ТекДата,ТекДата,СчЗнач,,,1,,3);
БИ_Вал.ВыбратьВалюты();
Пока БИ_Вал.ПолучитьВалюту()=1 Цикл
ОстВал = БИ_Вал.СКД("В")-БИ_Вал.СКК("В");
Если ОстВал>0 Тогда
ОстТек = БИ_Вал.СКД("С")-БИ_Вал.СКК("С");
Курс = БИ_Вал.Валюта.Курс.Получить(ТекДата);
Кратность = БИ_Вал.Валюта.Кратность.Получить(ТекДата);
ОстНов = Окр(ОстВал*Курс/Кратность, 2);
КурсРазн = ОстНов-ОстТек;
Если (Курс <> 0) И (Кратность <> 0) Тогда
ВалСуммаРасч = Окр(ОстТек / Курс,2);
СуммаРасхожденияСКурсом= СуммаРасхожденияСКурсом + КурсРазн;
Если СуммаРасхожденияСКурсом<>0 Тогда
//Сообщить(СокрЛП(СчЗнач)+" Сумма расхождения с курсом="+КурсРазн+" по вал.сумме="+(ОстВал)+" "+БИ_Вал.Валюта);
глСоздатьДокументПереоценкаВалюты(ТекДата, БИ_Вал);
КонецЕсли;
Иначе
ВалСуммаРасч = 0;
СуммаРасхожденияСКурсом=0;
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" не определен курс! ","!!!");
КонецЕсли;
ИначеЕсли ОстВал<0 Тогда
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" меньше нуля! ","!!!");
ИначеЕсли ОстВал<0 Тогда
Сообщить("Ошибка в учёте на "+ТекДата+" по счету "+СокрЛП(СчЗнач)+" вал.сумма="+(ОстВал)+""+БИ_Вал.Валюта+" меньше нуля! ","!!!");
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ТекДата = ТекДата + 1;
//КонецЦикла;
КонецЦикла;
КонецПроцедуры
КонецЦикла;
КонецЕсли;
КонецЦикла;
ТекДата = ТекДата + 1;
//КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура №2 в глобальном модуле в 1С 7.7 Бухгалтерия предприятия:
Процедура глСоздатьДокументПереоценкаВалюты(ТекДата, БИ)
НайденПодходящийДокумент=0;
ДокП = СоздатьОбъект("Документ.ПереоценкаВалюты");
ДокП.ВыбратьДокументы(ТекДата, ТекДата);
Пока ДокП.ПолучитьДокумент()=1 Цикл
Если ДокП.Проведен()=1 Тогда
Если ДокП.ДокументСозданАвтоматически = 1 Тогда
Если ДокП.ВыбСчет = БИ.Счет Тогда
НайденПодходящийДокумент=1;
ДокП.Записать();
ДокП.Провести();
Сообщить("Перепроведен документ "+СокрЛП(ДокП.ТекущийДокумент())+" по счету "+СокрЛП(БИ.Счет)+" для корректировки остатка по курсу НБРБ","i");
НайденПодходящийДокумент=0;
ДокП = СоздатьОбъект("Документ.ПереоценкаВалюты");
ДокП.ВыбратьДокументы(ТекДата, ТекДата);
Пока ДокП.ПолучитьДокумент()=1 Цикл
Если ДокП.Проведен()=1 Тогда
Если ДокП.ДокументСозданАвтоматически = 1 Тогда
Если ДокП.ВыбСчет = БИ.Счет Тогда
НайденПодходящийДокумент=1;
ДокП.Записать();
ДокП.Провести();
Сообщить("Перепроведен документ "+СокрЛП(ДокП.ТекущийДокумент())+" по счету "+СокрЛП(БИ.Счет)+" для корректировки остатка по курсу НБРБ","i");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НайденПодходящийДокумент=0 Тогда
ДокП = СоздатьОбъект("Документ.ПереоценкаВалюты");
ДокП.Новый();
ДокП.ДатаДок = ТекДата;
ДокП.ВыбСчет = БИ.Счет;
ДокП.СчетКурсРазниц=Константа.СчетКурсовыхРазниц.Получить(ДокП.ДатаДок);
Если ДокП.СчетКурсРазниц.Выбран()=1 Тогда
Если (СокрЛП(ДокП.СчетКурсРазниц.ВидСубконто(1))="Виды деят.") Или // 90
(СокрЛП(ДокП.СчетКурсРазниц.ВидСубконто(1))="Операц. доходы и расходы") Или // 91
(СокрЛП(ДокП.СчетКурсРазниц.ВидСубконто(1))="Внереализ. доходы и расходы") Тогда // 92
//ДокП.НазначитьТип("Субконто_1", "Справочник."+Строка(СчетКурсРазниц.ВидСубконто(1).Идентификатор()));
Если ДокП.СчетКурсРазниц.ПринадлежитГруппе(СчетПоКоду("91"))=1 Тогда
СуммовыеРазницы = "";
СпрСумРазн = СоздатьОбъект("Справочник.ОперационныеДоходыИРасходы");
Если СпрСумРазн.НайтиПоНаименованию("Курсовые разницы",0,1)=1 Тогда
СуммовыеРазницы = СпрСумРазн.ТекущийЭлемент();
Если СпрСумРазн.НайтиПоКоду("2007")=1 Тогда
Если СокрЛП(СпрСумРазн.Наименование)="Курсовые разницы" Тогда
СуммовыеРазницы = СпрСумРазн.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
ИначеЕсли СпрСумРазн.НайтиПоНаименованию("Курсовая разница",0,1)=1 Тогда
СуммовыеРазницы = СпрСумРазн.ТекущийЭлемент();
КонецЕсли;
Субконто_1=СуммовыеРазницы;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДокП.СтатьяДДС=Перечисление.СтатьяДДС.операционнаядеятельность;
ДокП.ДокументСозданАвтоматически = 1;
ДокП.Руководитель=Константа.Руководитель.Получить(ТекДата);
ДокП.Записать();
ДокП.Провести();
Сообщить("Создан документ "+СокрЛП(ДокП.ТекущийДокумент())+" по счету "+СокрЛП(БИ.Счет)+" для корректировки остатка по курсу НБРБ","i");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НайденПодходящийДокумент=0 Тогда
ДокП = СоздатьОбъект("Документ.ПереоценкаВалюты");
ДокП.Новый();
ДокП.ДатаДок = ТекДата;
ДокП.ВыбСчет = БИ.Счет;
ДокП.СчетКурсРазниц=Константа.СчетКурсовыхРазниц.Получить(ДокП.ДатаДок);
Если ДокП.СчетКурсРазниц.Выбран()=1 Тогда
Если (СокрЛП(ДокП.СчетКурсРазниц.ВидСубконто(1))="Виды деят.") Или // 90
(СокрЛП(ДокП.СчетКурсРазниц.ВидСубконто(1))="Операц. доходы и расходы") Или // 91
(СокрЛП(ДокП.СчетКурсРазниц.ВидСубконто(1))="Внереализ. доходы и расходы") Тогда // 92
//ДокП.НазначитьТип("Субконто_1", "Справочник."+Строка(СчетКурсРазниц.ВидСубконто(1).Идентификатор()));
Если ДокП.СчетКурсРазниц.ПринадлежитГруппе(СчетПоКоду("91"))=1 Тогда
СуммовыеРазницы = "";
СпрСумРазн = СоздатьОбъект("Справочник.ОперационныеДоходыИРасходы");
Если СпрСумРазн.НайтиПоНаименованию("Курсовые разницы",0,1)=1 Тогда
СуммовыеРазницы = СпрСумРазн.ТекущийЭлемент();
Если СпрСумРазн.НайтиПоКоду("2007")=1 Тогда
Если СокрЛП(СпрСумРазн.Наименование)="Курсовые разницы" Тогда
СуммовыеРазницы = СпрСумРазн.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
ИначеЕсли СпрСумРазн.НайтиПоНаименованию("Курсовая разница",0,1)=1 Тогда
СуммовыеРазницы = СпрСумРазн.ТекущийЭлемент();
КонецЕсли;
Субконто_1=СуммовыеРазницы;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДокП.СтатьяДДС=Перечисление.СтатьяДДС.операционнаядеятельность;
ДокП.ДокументСозданАвтоматически = 1;
ДокП.Руководитель=Константа.Руководитель.Получить(ТекДата);
ДокП.Записать();
ДокП.Провести();
Сообщить("Создан документ "+СокрЛП(ДокП.ТекущийДокумент())+" по счету "+СокрЛП(БИ.Счет)+" для корректировки остатка по курсу НБРБ","i");
КонецЕсли;
КонецПроцедуры // глСоздатьДокументПереоценкаВалюты()
КонецПроцедуры // глСоздатьДокументПереоценкаВалюты()
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник