Выгрузка в Excel
25.05.2008
19:30
#1
"Проблема в следующем: пытабсь написать обработку для выгрузки табличной части документа ВыплатаЗаработнойПлаты в Excel. В результате выполнения процедуры Сформировать() книга все же открывается, но данные, которые предварительно выгружаются в виртуальную таблицу, не попадают в книгу. Похожую процедуру втавлял в модуль самого документа и там она работала (различие только втом, что в последнем случае выгружалась непосредственно табличная часть документ, а в данной обработке табличные части нескольих документов предварительно выгружаются в одну общую виртульную таблицуа).Вот процедура:
Процедура Сформировать()
ТСотрудников = СоздатьОбъект("ТаблицаЗначений");
ВеменнаяТаблица = СоздатьОбъект("ТаблицаЗначений");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Ведомость.ВыгрузитьТабличнуюЧасть(ВременнаяТаблица);
Если ТСотрудников.КоличествоКолонок() = 0 тогда
ВременнаяТаблица.Выгрузить(ТСотрудников);
Иначе
глПереписатьИзТаблицыВТаблицу(ВременнаяТаблица, ТСотрудников);
КонецЕсли;
КонецЦикла;
Excel=СоздатьОбъект("Excel.Application");
NewExcel=Excel.Workbooks.Open("c:\реестр.xls");
NewList=NewExcel.Worksheets("Зачисления");
СписокСтолбцов=СоздатьОбъект("СписокЗначений");
СписокСтолбцов.ДобавитьЗначение("Номер");
СписокСтолбцов.ДобавитьЗначение("Сумма");
СписокСтолбцов.ДобавитьЗначение("Сотрудник");
ЧислоСтрок=ТСотрудников.КоличествоСтрок();
ЧислоВыгруженныхСтрок=Строка(4+ЧислоСтрок);
АдресСтроки="R"+ЧислоВыгруженныхСтрок;
NewRows=NewList.Range("R5",АдресСтроки).EntireRow.Insert;
НомерСтроки="R6";
ТСотрудников.ВыбратьСтроки();
Пока ТСотрудников.ПолучитьСтроку()=1 Цикл
Сотрудник=ТСотрудников.Сотрудник.Наименование;
Сумма=ТСотрудников.Сумма;
Для Ст=1 По СписокСтолбцов.РазмерСписка() Цикл
Ячейка=NewList.Cells(НомерСтроки+4,Ст);
Если Ст=2 Тогда
Ячейка.Value=Сумма;
ИначеЕсли Ст=3 Тогда
Ячейка.Value=Строка(Сотрудник);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Well=NewList.Range("R4").EntireRow.Delete;
Excel.Visible=1;
Excel=0;
КонецПроцедуры;
Что не так?"
Процедура Сформировать()
ТСотрудников = СоздатьОбъект("ТаблицаЗначений");
ВеменнаяТаблица = СоздатьОбъект("ТаблицаЗначений");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Ведомость.ВыгрузитьТабличнуюЧасть(ВременнаяТаблица);
Если ТСотрудников.КоличествоКолонок() = 0 тогда
ВременнаяТаблица.Выгрузить(ТСотрудников);
Иначе
глПереписатьИзТаблицыВТаблицу(ВременнаяТаблица, ТСотрудников);
КонецЕсли;
КонецЦикла;
Excel=СоздатьОбъект("Excel.Application");
NewExcel=Excel.Workbooks.Open("c:\реестр.xls");
NewList=NewExcel.Worksheets("Зачисления");
СписокСтолбцов=СоздатьОбъект("СписокЗначений");
СписокСтолбцов.ДобавитьЗначение("Номер");
СписокСтолбцов.ДобавитьЗначение("Сумма");
СписокСтолбцов.ДобавитьЗначение("Сотрудник");
ЧислоСтрок=ТСотрудников.КоличествоСтрок();
ЧислоВыгруженныхСтрок=Строка(4+ЧислоСтрок);
АдресСтроки="R"+ЧислоВыгруженныхСтрок;
NewRows=NewList.Range("R5",АдресСтроки).EntireRow.Insert;
НомерСтроки="R6";
ТСотрудников.ВыбратьСтроки();
Пока ТСотрудников.ПолучитьСтроку()=1 Цикл
Сотрудник=ТСотрудников.Сотрудник.Наименование;
Сумма=ТСотрудников.Сумма;
Для Ст=1 По СписокСтолбцов.РазмерСписка() Цикл
Ячейка=NewList.Cells(НомерСтроки+4,Ст);
Если Ст=2 Тогда
Ячейка.Value=Сумма;
ИначеЕсли Ст=3 Тогда
Ячейка.Value=Строка(Сотрудник);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Well=NewList.Range("R4").EntireRow.Delete;
Excel.Visible=1;
Excel=0;
КонецПроцедуры;
Что не так?"
25.05.2008
21:26
#2
"ВеменнаяТаблица = СоздатьОбъект("ТаблицаЗначений");
поменять надо на:
ВременнаяТаблица = СоздатьОбъект("ТаблицаЗначений");
но, это мелочи, я думаю, что просто случайная ошибка, а по делу вот:
Во первых, понимаю так, что выполнение функции идет в модуле какого то документа, в котором есть реквизит табличной части Ведомость, в типовой конфигурации такого документа нет, ну да ладно, получается, что вы его сделали сами. Поскольку мы работаем в модуле документа, мы не должны использовать предикат НомерСтроки в качестве собственной переменной, так как это имя реквизита, которое является предопределенным и в любом документе с табличной частью при переборе строк в нем мы имеем номер строки, в которой спозиционирован контекст. Итак, рецепт 1: меняем везде в этой процедуре НомерСтроки на НомерСтрочки. И заводим себе правило, никогда не делать переменную с именем НомерСтроки (я вот привык всегда НомерСтрочки использовать). Рецепт 2: видим, что в вашем алгоритме есть строка НомерСтроки="R6", думаем и понимаем, что это совсем неправильно, так как "R6" это вообще адресация ячейки в рабочем листе, но не номер строки. Смотря ниже по алгоритму видим, что переменная используется в конструкции НомерСтроки+4, интересно, что будет результатом сложения "R6"+4?
) Непонятно что будет. Отсюда делаем вывод, что ваша строчка НомерСтроки="R6" должна на самом деле выглядеть например так: НомерСтрочки=6; Рецепт 3: видим, что перед исполнением цикла идет вставка NewRows=NewList.Range("R5",АдресСтроки).EntireRow.Insert;, видимо для того, чтобы в освободившееся место вставлять сведения. Но! Внутри цикла вы никак не изменяете переменную НомерСтроки, следовательно, все ваши сведения станут писаться исправно в одну и ту же первую строчку вставленной области. Делаем приращение счетчика внутри цикла, то есть НомерСтрочки=НомерСтрочки+1; и вставляем это в
Пока ТСотрудников.ПолучитьСтроку()=1 Цикл
...
Для Ст=1 По СписокСтолбцов.РазмерСписка() Цикл
...
КонецЦикла;
НомерСтрочки=НомерСтрочки+1;
КонецЦикла;
P.S. Пользуйтесь отладчиком, он вам спасет много времени."
поменять надо на:
ВременнаяТаблица = СоздатьОбъект("ТаблицаЗначений");
но, это мелочи, я думаю, что просто случайная ошибка, а по делу вот:
Во первых, понимаю так, что выполнение функции идет в модуле какого то документа, в котором есть реквизит табличной части Ведомость, в типовой конфигурации такого документа нет, ну да ладно, получается, что вы его сделали сами. Поскольку мы работаем в модуле документа, мы не должны использовать предикат НомерСтроки в качестве собственной переменной, так как это имя реквизита, которое является предопределенным и в любом документе с табличной частью при переборе строк в нем мы имеем номер строки, в которой спозиционирован контекст. Итак, рецепт 1: меняем везде в этой процедуре НомерСтроки на НомерСтрочки. И заводим себе правило, никогда не делать переменную с именем НомерСтроки (я вот привык всегда НомерСтрочки использовать). Рецепт 2: видим, что в вашем алгоритме есть строка НомерСтроки="R6", думаем и понимаем, что это совсем неправильно, так как "R6" это вообще адресация ячейки в рабочем листе, но не номер строки. Смотря ниже по алгоритму видим, что переменная используется в конструкции НомерСтроки+4, интересно, что будет результатом сложения "R6"+4?
Пока ТСотрудников.ПолучитьСтроку()=1 Цикл
...
Для Ст=1 По СписокСтолбцов.РазмерСписка() Цикл
...
КонецЦикла;
НомерСтрочки=НомерСтрочки+1;
КонецЦикла;
P.S. Пользуйтесь отладчиком, он вам спасет много времени."
16.10.2009
11:26
#4
"Доброго времени суток!
А мне наоборот надо из Excel загрузить в 1С проводки. Не пойму, где ошибка? В 1С после выбора загружаемого фала выходят только сообщения: "Загрузка проводок" и "Загрузка завершена".
Перем Каталог, ИмяКат;
//*******************************************
Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога,ФЛ)
Если ИдентЭлемДиалога = "ИмяКаталога" Тогда
ФЛ = 0;
ФС.ВыбратьФайл(0,ИмяКат,,"Выберите загружаемый файл",".xls",".xls");
ИмяКаталога = СокрЛП(ФС.ТекКаталог())+"\"+СокрЛП(ИмяКат);
КонецЕсли;
КонецПроцедуры
Процедура ПриВводеИмениКаталога()
Каталог = СокрЛП(ИмяКаталога);
КонецПроцедуры
Процедура ПриОткрытии()
Каталог = ИмяКаталога;
КонецПроцедуры
//*******************************************
Процедура Сформировать()
Фирмы = СоздатьОбъект("Справочник.Фирмы");
Операц = СоздатьОбъект("Операция");
Счетик = СоздатьОбъект("Счет");
СпрОГС = СоздатьОбъект("Справочник.ОГС");
СписФКР = СоздатьОбъект("СписокЗначений");
СписФКР.УдалитьВсе();
СпрФКР = СоздатьОбъект("Справочник.ФКРУчреждения");
спрФКР.ИспользоватьВладельца(Константа.ОсновнаяФирма);
СпрФКР.ВыбратьЭлементы();
Пока СпрФКР.ПолучитьЭлемент() = 1 Цикл
СписФКР.ДобавитьЗначение(СпрФКР.ФКР.ТекущийЭлемент(),СокрЛП(СпрФКР.ФКР.ДляКодаСчета));
КонецЦикла;
СпрКонтр = СоздатьОбъект("Справочник.Контрагенты");
Если СпрКонтр.НайтиПоКоду("0000001122") = 1 Тогда
ТекКонтр = СпрКонтр.ТекущийЭлемент();
КонецЕсли;
СпрЦС = СоздатьОбъект("Справочник.ВидыЦелевыхСредств");
Если СпрЦС.НайтиПоКоду("6") = 1 Тогда
ТекВидЦС = СпрЦС.ТекущийЭлемент();
КонецЕсли;
СпрЛС = СоздатьОбъект("Справочник.ЛицевыеСчета");
Если СпрЛС.НайтиПоНаименованию("Единый казначейский счет") = 1 Тогда
ТекЛС = СпрЛС.ТекущийЭлемент();
КонецЕсли;
БазаОсн = СоздатьОбъект("Excel.Application");
БазаОсн.Visible = 0;
Если ФС.СуществуетФайл(ИмяКаталога) = 0 Тогда
Сообщить("Файл "+ИмяКаталога+" не найден");
Возврат;
КонецЕсли;
Книга = БазаОсн.Workbooks.Open(СокрЛП(ИмяКаталога));
Лист = Книга.Worksheets(1);//
Состояние("Загрузка проводок");
Операц.Новая();
Операц.Документ.ВыбраннаяФирма = Константа.ОсновнаяФирма;
Операц.Содержание = "Ввод проводок по доходам";
КолПров = 0;
НомерСтроки = 1;
ТекБюджет = """";
Пока НомерСтроки < 10000 Цикл
Если Лев(Лист.cells(НомерСтроки,1).value,1) = "ИТОГО" Тогда
Прервать;
КонецЕсли;
КБК = Лев(СтрЗаменить(Лист.cells(НомерСтроки,17).value,".",""""),17);
Если Лев(КБК,3) = "182" Тогда
ТекФКР = СписФКР.Получить(КБК);
Если ПустоеЗначение(ТекФКР) = 1 Тогда
Сообщить("Не найден код КБК "+КБК);
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
КодСчетаД = Сред(СтрЗаменить(Лист.cells(НомерСтроки,17).value,".",""""),19,5);
КодСчетаК = Сред(СтрЗаменить(Лист.cells(НомерСтроки,19).value,".",""""),19,5);
Если Счетик.НайтиПоКоду(Лев(КодСчетаД,3)+"."+Прав(КодСчетаД,2)+".1") = 0 Тогда
Сообщить("Не найден счет "+Лев(КодСчетаД,3)+"."+Прав(КодСчетаД,2)+".1");
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
СчетДебета = Счетик.ТекущийСчет();
Если Начисление = 0 Тогда
Если Лев(СчетДебета.Код,3) = "205" Тогда
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
Иначе
Если Лев(СчетДебета.Код,3) <> "205" Тогда
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
КонецЕсли;
Если Счетик.НайтиПоКоду(Лев(КодСчетаК,3)+"."+Прав(КодСчетаК,2)+".1") = 0 Тогда
Сообщить("Не найден счет "+Лев(КодСчетаК,3)+"."+Прав(КодСчетаК,2)+".1");
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
СчетКредита = Счетик.ТекущийСчет();
ОГСД = Прав(СтрЗаменить(Лист.cells(НомерСтроки,17).value,".",""""),3);
ОГСК = Прав(СтрЗаменить(Лист.cells(НомерСтроки,19).value,".",""""),3);
Если СпрОГС.НайтиПоКоду(ОГСД) = 0 Тогда
Сообщить("Не найден код ОГС "+ОГСД);
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
ОГСДебета = СпрОГС.ТекущийЭлемент();
Если СпрОГС.НайтиПоКоду(ОГСК) = 0 Тогда
Сообщить("Не найден код ОГС "+ОГСК);
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
ОГСКредита = СпрОГС.ТекущийЭлемент();
Сумма = Число(Лист.cells(НомерСтроки,21).value);
Если КолПров > 99 Тогда
Операц.Записать();
Сообщить("Создана операция "+Операц.Документ.НомерДок);
Операц.Новая();
Операц.Документ.ВыбраннаяФирма = Константа.ОсновнаяФирма;
Операц.Содержание = "Ввод проводок по доходам";
КолПров = 0;
КонецЕсли;
Операц.НоваяПроводка();
Операц.Дебет.Счет = СчетДебета;
Операц.Дебет.Субконто(1,ТекФКР);
Операц.Дебет.Субконто(2,ОГСДебета);
Если СчетДебета.КоличествоСубконто() > 2 Тогда
Если СчетДебета.ВидСубконто(3) = ВидыСубконто.ЛицевыеСчета Тогда
Операц.Дебет.Субконто(3,ТекЛС);
КонецЕсли;
Если СчетДебета.ВидСубконто(3) = ВидыСубконто.ВидыЦелевыхСредств Тогда
Операц.Дебет.Субконто(3,ТекВидЦС);
КонецЕсли;
Если СчетДебета.ВидСубконто(3) = ВидыСубконто.Контрагенты Тогда
Операц.Дебет.Субконто(3,ТекКонтр);
КонецЕсли;
КонецЕсли;
Операц.Кредит.Счет = СчетКредита;
Операц.Кредит.Субконто(1,ТекФКР);
Операц.Кредит.Субконто(2,ОГСКредита);
Если СчетКредита.КоличествоСубконто() > 2 Тогда
Если СчетКредита.ВидСубконто(3) = ВидыСубконто.ЛицевыеСчета Тогда
Операц.Кредит.Субконто(3,ТекЛС);
КонецЕсли;
Если СчетКредита.ВидСубконто(3) = ВидыСубконто.ВидыЦелевыхСредств Тогда
Операц.Кредит.Субконто(3,ТекВидЦС);
КонецЕсли;
Если СчетКредита.ВидСубконто(3) = ВидыСубконто.Контрагенты Тогда
Операц.Кредит.Субконто(3,ТекКонтр);
КонецЕсли;
КонецЕсли;
Операц.Сумма = Сумма;
Операц.НомерЖурнала = глНомерЖурнала(СчетДебета,СчетКредита);
Операц.Учреждение = Константа.ОсновнаяФирма;
КолПров = КолПров + 1;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
Если Операц.КоличествоПроводок() > 0 Тогда
Операц.Записать();
Сообщить("Создана операция "+Операц.Документ.НомерДок);
КонецЕсли;
Книга = БазаОсн.Workbooks.Close();
Сообщить("Загрузка завершена");
КонецПроцедуры
P.S.
Таблица выглядит в общем:
наименование операций:номер документа:дата:номер счета по дебету:номер счета по кредиту:сумма
Заранее благодарю.
"
А мне наоборот надо из Excel загрузить в 1С проводки. Не пойму, где ошибка? В 1С после выбора загружаемого фала выходят только сообщения: "Загрузка проводок" и "Загрузка завершена".
Перем Каталог, ИмяКат;
//*******************************************
Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога,ФЛ)
Если ИдентЭлемДиалога = "ИмяКаталога" Тогда
ФЛ = 0;
ФС.ВыбратьФайл(0,ИмяКат,,"Выберите загружаемый файл",".xls",".xls");
ИмяКаталога = СокрЛП(ФС.ТекКаталог())+"\"+СокрЛП(ИмяКат);
КонецЕсли;
КонецПроцедуры
Процедура ПриВводеИмениКаталога()
Каталог = СокрЛП(ИмяКаталога);
КонецПроцедуры
Процедура ПриОткрытии()
Каталог = ИмяКаталога;
КонецПроцедуры
//*******************************************
Процедура Сформировать()
Фирмы = СоздатьОбъект("Справочник.Фирмы");
Операц = СоздатьОбъект("Операция");
Счетик = СоздатьОбъект("Счет");
СпрОГС = СоздатьОбъект("Справочник.ОГС");
СписФКР = СоздатьОбъект("СписокЗначений");
СписФКР.УдалитьВсе();
СпрФКР = СоздатьОбъект("Справочник.ФКРУчреждения");
спрФКР.ИспользоватьВладельца(Константа.ОсновнаяФирма);
СпрФКР.ВыбратьЭлементы();
Пока СпрФКР.ПолучитьЭлемент() = 1 Цикл
СписФКР.ДобавитьЗначение(СпрФКР.ФКР.ТекущийЭлемент(),СокрЛП(СпрФКР.ФКР.ДляКодаСчета));
КонецЦикла;
СпрКонтр = СоздатьОбъект("Справочник.Контрагенты");
Если СпрКонтр.НайтиПоКоду("0000001122") = 1 Тогда
ТекКонтр = СпрКонтр.ТекущийЭлемент();
КонецЕсли;
СпрЦС = СоздатьОбъект("Справочник.ВидыЦелевыхСредств");
Если СпрЦС.НайтиПоКоду("6") = 1 Тогда
ТекВидЦС = СпрЦС.ТекущийЭлемент();
КонецЕсли;
СпрЛС = СоздатьОбъект("Справочник.ЛицевыеСчета");
Если СпрЛС.НайтиПоНаименованию("Единый казначейский счет") = 1 Тогда
ТекЛС = СпрЛС.ТекущийЭлемент();
КонецЕсли;
БазаОсн = СоздатьОбъект("Excel.Application");
БазаОсн.Visible = 0;
Если ФС.СуществуетФайл(ИмяКаталога) = 0 Тогда
Сообщить("Файл "+ИмяКаталога+" не найден");
Возврат;
КонецЕсли;
Книга = БазаОсн.Workbooks.Open(СокрЛП(ИмяКаталога));
Лист = Книга.Worksheets(1);//
Состояние("Загрузка проводок");
Операц.Новая();
Операц.Документ.ВыбраннаяФирма = Константа.ОсновнаяФирма;
Операц.Содержание = "Ввод проводок по доходам";
КолПров = 0;
НомерСтроки = 1;
ТекБюджет = """";
Пока НомерСтроки < 10000 Цикл
Если Лев(Лист.cells(НомерСтроки,1).value,1) = "ИТОГО" Тогда
Прервать;
КонецЕсли;
КБК = Лев(СтрЗаменить(Лист.cells(НомерСтроки,17).value,".",""""),17);
Если Лев(КБК,3) = "182" Тогда
ТекФКР = СписФКР.Получить(КБК);
Если ПустоеЗначение(ТекФКР) = 1 Тогда
Сообщить("Не найден код КБК "+КБК);
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
КодСчетаД = Сред(СтрЗаменить(Лист.cells(НомерСтроки,17).value,".",""""),19,5);
КодСчетаК = Сред(СтрЗаменить(Лист.cells(НомерСтроки,19).value,".",""""),19,5);
Если Счетик.НайтиПоКоду(Лев(КодСчетаД,3)+"."+Прав(КодСчетаД,2)+".1") = 0 Тогда
Сообщить("Не найден счет "+Лев(КодСчетаД,3)+"."+Прав(КодСчетаД,2)+".1");
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
СчетДебета = Счетик.ТекущийСчет();
Если Начисление = 0 Тогда
Если Лев(СчетДебета.Код,3) = "205" Тогда
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
Иначе
Если Лев(СчетДебета.Код,3) <> "205" Тогда
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
КонецЕсли;
Если Счетик.НайтиПоКоду(Лев(КодСчетаК,3)+"."+Прав(КодСчетаК,2)+".1") = 0 Тогда
Сообщить("Не найден счет "+Лев(КодСчетаК,3)+"."+Прав(КодСчетаК,2)+".1");
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
СчетКредита = Счетик.ТекущийСчет();
ОГСД = Прав(СтрЗаменить(Лист.cells(НомерСтроки,17).value,".",""""),3);
ОГСК = Прав(СтрЗаменить(Лист.cells(НомерСтроки,19).value,".",""""),3);
Если СпрОГС.НайтиПоКоду(ОГСД) = 0 Тогда
Сообщить("Не найден код ОГС "+ОГСД);
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
ОГСДебета = СпрОГС.ТекущийЭлемент();
Если СпрОГС.НайтиПоКоду(ОГСК) = 0 Тогда
Сообщить("Не найден код ОГС "+ОГСК);
НомерСтроки = НомерСтроки + 1;
Продолжить;
КонецЕсли;
ОГСКредита = СпрОГС.ТекущийЭлемент();
Сумма = Число(Лист.cells(НомерСтроки,21).value);
Если КолПров > 99 Тогда
Операц.Записать();
Сообщить("Создана операция "+Операц.Документ.НомерДок);
Операц.Новая();
Операц.Документ.ВыбраннаяФирма = Константа.ОсновнаяФирма;
Операц.Содержание = "Ввод проводок по доходам";
КолПров = 0;
КонецЕсли;
Операц.НоваяПроводка();
Операц.Дебет.Счет = СчетДебета;
Операц.Дебет.Субконто(1,ТекФКР);
Операц.Дебет.Субконто(2,ОГСДебета);
Если СчетДебета.КоличествоСубконто() > 2 Тогда
Если СчетДебета.ВидСубконто(3) = ВидыСубконто.ЛицевыеСчета Тогда
Операц.Дебет.Субконто(3,ТекЛС);
КонецЕсли;
Если СчетДебета.ВидСубконто(3) = ВидыСубконто.ВидыЦелевыхСредств Тогда
Операц.Дебет.Субконто(3,ТекВидЦС);
КонецЕсли;
Если СчетДебета.ВидСубконто(3) = ВидыСубконто.Контрагенты Тогда
Операц.Дебет.Субконто(3,ТекКонтр);
КонецЕсли;
КонецЕсли;
Операц.Кредит.Счет = СчетКредита;
Операц.Кредит.Субконто(1,ТекФКР);
Операц.Кредит.Субконто(2,ОГСКредита);
Если СчетКредита.КоличествоСубконто() > 2 Тогда
Если СчетКредита.ВидСубконто(3) = ВидыСубконто.ЛицевыеСчета Тогда
Операц.Кредит.Субконто(3,ТекЛС);
КонецЕсли;
Если СчетКредита.ВидСубконто(3) = ВидыСубконто.ВидыЦелевыхСредств Тогда
Операц.Кредит.Субконто(3,ТекВидЦС);
КонецЕсли;
Если СчетКредита.ВидСубконто(3) = ВидыСубконто.Контрагенты Тогда
Операц.Кредит.Субконто(3,ТекКонтр);
КонецЕсли;
КонецЕсли;
Операц.Сумма = Сумма;
Операц.НомерЖурнала = глНомерЖурнала(СчетДебета,СчетКредита);
Операц.Учреждение = Константа.ОсновнаяФирма;
КолПров = КолПров + 1;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
Если Операц.КоличествоПроводок() > 0 Тогда
Операц.Записать();
Сообщить("Создана операция "+Операц.Документ.НомерДок);
КонецЕсли;
Книга = БазаОсн.Workbooks.Close();
Сообщить("Загрузка завершена");
КонецПроцедуры
P.S.
Таблица выглядит в общем:
наименование операций:номер документа:дата:номер счета по дебету:номер счета по кредиту:сумма
Заранее благодарю.
"
Читают тему
(гостей: 1)