10.
Sykoky
6
12.02.12 15:20
Сейчас в теме
Надоело исправлять ошибки, переписал на скорую руку.
Следующий код необходимо вставить ВМЕСТО процедуры КнопкаВыполнитьНажатие
Перем ЛистExcel;
Процедура ЗаписьДанных(СтрокаExcel, СубТип, СубКод, Счет, Субконто, Сообщать=Ложь, Д_К = "Д")
СчЦикла = 0;
Для каждого ТекСубконто Из Счет.ВидыСубконто Цикл
СубкДт = ЛистExcel.Cells(СтрокаExcel,СубТип+СчЦикла).Value;
КодДт = ЛистExcel.Cells(СтрокаExcel,СубКод+СчЦикла).Value;
СчЦикла = СчЦикла + 1;
Если (СокрЛП(КодДт) = Неопределено) Тогда
Если Сообщать Тогда
сообщить("Параметр №"+СчЦикла+" пуст");
КонецЕсли;
Продолжить;
КонецЕсли;
Попытка
СДт = Справочники[Соответствие.Получить(ТекСубконто.ВидСубконто.ТипЗначения.Типы()[0])].НайтиПоКоду(КодДт, Истина);
Если СДт = Неопределено Тогда
Сообщить("Не найдено " + Д_К + СчЦикла + " субконто "+ КодДт);
Иначе
// Сообщить("Найдено Д" + СчЦикла + " субконто " + КодДт + " " + СДт);
КонецЕсли;
Исключение
Попытка
Перечисление = Перечисления[Соответствие1.Получить(ТекСубконто.ВидСубконто.ТипЗначения.Типы()[0])];
СДт = ПолучитьЗначениеПеречисления(СубкДт, Перечисление);
Исключение
Попытка
СДт = Документы.Партия.НайтиПоНомеру(КодДт);
// Если НЕ СДт.Пустая() Тогда
// КонецЕсли;
Исключение
Сообщить("Ошибка субконто " + Д_К + СчЦикла + КодДт);
КонецПопытки;
КонецПопытки;
КонецПопытки;
Попытка
ОбщегоНазначения.УстановитьСубконто(Счет, Субконто, СчЦикла, СДт, Сообщать);
Исключение
Сообщить("Не установлен " + Д_К + СчЦикла);
КонецПопытки;
Если СчЦикла=3 Тогда
Прервать; // В 7-ке из всего 3
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура КнопкаВыполнитьНажатие(Кнопка)
СоздатьТипы();
Попытка
Файл = ПолучитьCOMОбъект(ПутьКФайлу);
Исключение
Предупреждение("На компе не установлен Excel.");
Возврат
КонецПопытки;
xlCellTypeLastCell = 11;
ЛистExcel = Файл.Sheets(1);
ПоследняяСтрокаExcel = ЛистExcel.Cells.SpecialCells(xlCellTypeLastCell).Row;
Если ПоследняяСтрокаExcel < НомерПервойСтроки Тогда
Предупреждение("НЕ ВЕРНО указана первая строка или в файле Excel первая закладка пуста.");
Возврат;
КонецЕсли;
СтарДатаВремя = "20111231000001"; //********* времянка на 1-й цикл.
НачатьТранзакцию();
СчетчикЦикла = 0;
Для СтрокаExcel = НомерПервойСтроки По ПоследняяСтрокаExcel Цикл
СчетчикЦикла = СчетчикЦикла +1;
Состояние("Строка "+СчетчикЦикла+" из "+ПоследняяСтрокаExcel);
ОбработкаПрерыванияПользователя();
// ***************** Определение строк Excel
ДатаИзXLS = ЛистExcel.Cells(СтрокаExcel,1).Value; // Тут у меня дата такого формата 01.01.2010 и далее нужно ее перевести в формат 1С
СчДт = ЛистExcel.Cells(СтрокаExcel,4).Value;
СчДт = СтрЗаменить(СчДт,".","");
СчКт = ЛистExcel.Cells(СтрокаExcel,5).Value;
СуммаОперации = ЛистExcel.Cells(СтрокаExcel,6).Value;
Количество = ЛистExcel.Cells(СтрокаExcel,26).Value;
Содержание = ЛистExcel.Cells(СтрокаExcel,27).Value;
// ******************
РазделительСтрок = Символы.ПС; // Получим нужный формат даты (20100101230000) из (01.01.2010)
Результат = СтрЗаменить(ДатаИзXLS, ".", РазделительСтрок);
День = СокрЛП(СтрПолучитьСтроку(Результат, 1));
Месяц = СокрЛП(СтрПолучитьСтроку(Результат, 2));
Год = Лев(СокрЛП(СтрПолучитьСтроку(Результат, 3)), 4);
Время = "000001";
ДатаВремя = Год+Месяц+День+Время;
Если СтарДатаВремя <> ДатаВремя
Тогда
Док = Документы.ОперацияБух.СоздатьДокумент();
Док.Дата = ДатаВремя;
Док.Организация = Организация;
Док.Содержание = Содержание;
Док.Ответственный = Ответственный;
Док.Записать();
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Док.Ссылка;
НаборЗаписей.Отбор.Регистратор.Использование = Истина;
Сообщить("Создан документ ОперацияБух № " + Док.Ссылка);
КонецЕсли;
Движения = НаборЗаписей.Добавить();
Движения.Регистратор = Док.Ссылка;
Движения.Период = Док.Дата;
Движения.Организация = Док.Организация;
Движения.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчДт);
Движения.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчКт);
Движения.КоличествоДт = Количество;
Движения.КоличествоКт = Количество;
Движения.Сумма = СуммаОперации;
// ******************************
ЗаписьДанных(СтрокаExcel, 7, 20, Движения.СчетДт, Движения.СубконтоДт, Истина, "Д");
ЗаписьДанных(СтрокаExcel, 10, 23, Движения.СчетКт, Движения.СубконтоКт, Истина, "К");
//*********************************
Попытка
НаборЗаписей.Записать();
Исключение
Сообщить("Ошибка создания набора записей Регистра Бухгалтерии для документа" + Док.Ссылка +" Дт " +Строка(Движения.СчетДт) + " - Кт " + Строка(Движения.СчетКт));
КонецПопытки;
СтарДатаВремя = ДатаВремя;
КонецЦикла;
ЗафиксироватьТранзакцию();
Файл.Close();
Сообщить("Удачно");
Документы.ОперацияБух.ПолучитьФорму("ФормаСписка").Открыть();
КонецПроцедуры