Автор: admin, 31.07.2010 рубрики: Изучаем программирование
// *******************************************
// ОСВ указанного счета
Функция Расшифровка(КодСчета, Контрагент, Договор = -1, СчетФактураВыданный = -1)
СЗ = СоздатьОбъект(«СписокЗначений»);
СЗ.Установить(«Отчет», «ОборотноСальдоваяВедомостьПоСчету»);
СЗ.Установить(«Счет», СчетПоКоду(КодСчета));
СЗ.Установить(«Дата1», '01.07.2005'); // дата ввода остатков
СЗ.Установить(«Дата2», Дата2);
СЗ.Установить(«ВидСубконто1», ВидыСубконто.Контрагенты);
СЗ.Установить(«Субконто1», Контрагент);
СЗ.Установить(«ОтборСубконто1», 1);
СЗ.Установить(«ВидСубконто2», ВидыСубконто.Договоры);
Если Договор <> -1 Тогда
СЗ.Установить(«Субконто2», Договор);
КонецЕсли;
СЗ.Установить(«ОтборСубконто2», 1);
Если СчетПоКоду(КодСчета).ВидСубконто(2) = ВидыСубконто.СчетаФактурыВыданные Тогда // 76.Н.1
СЗ.Установить(«ВидСубконто3», ВидыСубконто.СчетаФактурыВыданные);
Если СчетФактураВыданный <> -1 Тогда
СЗ.Установить(«Субконто3», СчетФактураВыданный);
КонецЕсли;
СЗ.Установить(«ОтборСубконто3», 1);
ИначеЕсли СчетПоКоду(КодСчета).ВидСубконто(3) = ВидыСубконто.ВидСделки Тогда // 76.Н.1
СЗ.Установить(«ВидСубконто3», ВидыСубконто.ВидСделки);
СЗ.Установить(«ОтборСубконто3», 3);
КонецЕсли;
Возврат СЗ;
КонецФункции
Связанные [...]
Автор: admin, 31.07.2010 рубрики: Изучаем программирование
//*******************************************************************************
// Предопределенная процедура
Процедура ПриОткрытии()
Конт=Форма.Параметр;
Если ТипЗначенияСтр(Конт)="СписокЗначений" Тогда
Дата1=Конт.Получить(«Дата1»);
Дата2=Конт.Получить(«Дата2»);
Конт.Установить(«ТЗ»,СоздатьФайл());
СтатусВозврата(0);
Иначе
Дата1=НачМесяца(РабочаяДата());
Дата2=КонМесяца(РабочаяДата());
Спр=СоздатьОбъект(«Справочник.Фирмы»);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
СпФирмы.ДобавитьЗначение(Спр.ТекущийЭлемент());
Если Спр.Контрагент=Константа.Мы_в_контр Тогда
СпФирмы.Пометка(СпФирмы.РазмерСписка(),1);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры // ПриОткрытии()
//*******************************************************************************
//*******************************************************************************
Связанные записи
Нет связанных записей.
Автор: admin, 31.07.2010 рубрики: Изучаем программирование
Если КолФирм>1 Тогда
ТЗСвод.Свернуть(«Номенклатура»,"СНД,ДО,КО,СКД,СНДк,ДОк,КОк,СКДк");
ВывестиТаблицу(ТЗСвод,"Сводно");
Файл=КаталогВременныхФайлов() +"Сводно"+ИмяФормы;
ЗакрытьКнигиЕксель(«Сводно»+ИмяФормы);
СпФайлов.ДобавитьЗначение(Файл,"Сводно");
КонецЕсли;
XL.Visible = 0; XL.ScreenUpdating = 0; XL.DisplayAlerts = 0;
XL.Workbooks.Add ();
WBx=XL.ActiveWorkbook;
WBx.SaveAs (КаталогВременныхФайлов() + ИмяФормы);
SheetX=WBx.ActiveSheet;
Для н=1 По СпФайлов.РазмерСписка() Цикл
СтрФирма="";
Файл=СпФайлов.ПолучитьЗначение(н,СтрФирма);
XL.Workbooks.Open (Файл);
WB=XL.ActiveWorkbook;
WB.Save ();
Sheet = WB.ActiveSheet;
Sheet.Name=СтрФирма;
Sheet.Copy (SheetX);
Wb.Close ();
КонецЦикла;
Wbx.Save ();
WBx.Close ();
XL.Workbooks.Open (КаталогВременныхФайлов() + ИмяФормы);
Попытка
WB=XL.ActiveWorkbook;
для i=1 По WB.Sheets.Count () Цикл
Sheet =WB.Sheets (i);
Для НКолонки = 4 по 9 Цикл
Для НСтроки = 1 по Sheet.UsedRange.Row + Sheet.UsedRange.Rows.Count () — 1 Цикл
Если Лев(Sheet.Cells [...]
Автор: admin, 31.07.2010 рубрики: Изучаем программирование
Процедура ДобавитьТЗСвод(ТЗ)
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
ТЗСвод.НоваяСтрока();
ТЗСвод.Номенклатура = ТЗ.Номенклатура;
ТЗСвод.СНД =ТЗ.СНД;
ТЗСвод.ДО =ТЗ.ДО;
ТЗСвод.КО =ТЗ.КО;
ТЗСвод.СКД =ТЗ.СКД;
ТЗСвод.СНДк =ТЗ.СНДк;
ТЗСвод.ДОк =ТЗ.ДОк;
ТЗСвод.КОк =ТЗ.КОк;
ТЗСвод.СКДк =ТЗ.СКДк;
КонецЦикла;
КонецПроцедуры
Процедура Сформировать()
Перем ИмяФ,ПутьФ;
Если ПустоеЗначение(Дата1) = 1 Тогда
Предупреждение(«Укажите дату начала периода отчета»);
Возврат;
КонецЕсли;
Если ПустоеЗначение(Дата2) = 1 Тогда
Предупреждение(«Укажите дату окончания периода отчета»);
Возврат;
КонецЕсли;
ИмяФормы = «ДвижениеЛПКонсолидированная.xls»;
РасположениеФайла(ПутьФ,ИмяФ);
ИмяФОтчета=ПутьФ+ИмяФ;
ТЗСвод = СоздатьТЗНоменклатура();
XL = СоздатьОбъект(«Excel.Application»);
XL.DisplayAlerts = 0;
СпФайлов=СоздатьОбъект(«СписокЗначений»);
СпТЗ=СоздатьОбъект(«СписокЗначений»);
ЗакрытьКнигиЕксель(ИмяФормы);
КолФирм=0;
Для н=1 По СпФирмы.РазмерСписка() Цикл
Если СпФирмы.Пометка(н)=1 Тогда
Фирма=СпФирмы.ПолучитьЗначение(н);
ТЗВых=ПолучитьДанныеФирмы(ИмяФОтчета,Фирма);
Если (ТЗВых<>"") Тогда
СтрФирма=БезПробелов(Строка(СпФирмы.ПолучитьЗначение(н)));
ВывестиТаблицу(ТЗВых,СтрФирма);
КолФирм=КолФирм+1;
ДобавитьТЗСвод(ТЗВых);
ЗакрытьКнигиЕксель(СтрФирма+ИмяФормы);
Файл=КаталогВременныхФайлов() + СтрФирма+ИмяФормы;
СпФайлов.ДобавитьЗначение(Файл,СтрФирма);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Связанные записи
Нет связанных записей.
Автор: admin, 31.07.2010 рубрики: Изучаем программирование
Процедура ЗакрытьКнигиЕксель(Название)
Попытка
Для НомерКниги = 1 По XL.Workbooks.Count () Цикл
Если XL.Workbooks (НомерКниги).Name = Название Тогда
Если Вопрос(«В Excel уже открыта книга „+ Название +“. Закрыть ее с потерей изменений?», 4) 6 Тогда
Возврат;
КонецЕсли;
XL.Workbooks (НомерКниги).Close ();
Прервать;
КонецЕсли;
КонецЦикла;
Исключение
КонецПопытки;
КонецПроцедуры
Процедура ВывестиТаблицу(ТЗ,СтрФирма)
ТЗ.Сортировать(«Номенклатура»);
Таб = СоздатьОбъект(«Таблица»);
Таб.ИсходнаяТаблица(«ДвижениеЛП»);
ПечФирма=Строка(СтрФирма);
Таб.ВывестиСекцию(«Шапка»);
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Номенклатура = ТЗ.Номенклатура;
СуммаНач = ФорматС(ТЗ.СНД);
КолНач = ФорматК(ТЗ.СНДк);
СтоимНач = ФорматС(?(ТЗ.СНДк=0,0,ТЗ.СНД/ТЗ.СНДк));
СуммаПрих = ФорматС(ТЗ.ДО);
КолПрих = ФорматК(ТЗ.ДОк);
СтоимПрих = ФорматС(?(ТЗ.ДОк=0,0,ТЗ.ДО/ТЗ.ДОк));
СуммаРасх = [...]
Автор: admin, 31.07.2010 рубрики: Изучаем программирование
//*******************************************************************************
Функция БезПробелов(Стр)
Стр1=Стр;
Пока Найти(Стр1," «)>0 Цикл
Стр1=СтрЗаменить(Стр1,» «,»");
КонецЦикла;
Возврат Стр1;
КонецФункции
//*******************************************************************************
//*******************************************************************************
Функция ПолучитьДанныеФирмы(ИмяФОтчета,Фирма)
Если Фирма.Контрагент=Константа.Мы_в_контр Тогда
Возврат СоздатьФайл();
Иначе
База = "";
Попытка
База=СоздатьОбъект(«V77.Application»);
Исключение
Сообщить(«Не удается создать объект V77.Application; возможно, недостаточно прав.»);
Возврат "";
КонецПопытки;
Состояние("Открывается база """ + СокрЛП(Фирма.Наименование) + «„«„);
Открыта=База.Initialize (База.RMTrade,“/d»“»+СокрЛП(Фирма.Путь) + ""« /N» + Константа.ПользовательOLE + «/P» + Константа.ПарольOLE, «NO_SPLASH_SHOW»);
Если Открыта = 0 Тогда
Сообщить(Фирма.Наименование + «: невозможно открыть базу. Возможно, база открыта в монопольном режиме или [...]
Автор: admin, 29.07.2010 рубрики: Изучаем программирование
Перем ОСВ;
Перем сзВнутренние;
Перем Баланс;
Перем XL;
Перем Дос
тупКМакросам;
Перем ТЗСвод;
Функция БезПробелов(Стр)
Стр1=Стр;
Пока Найти(Стр1," «)>0 Цикл
Стр1=СтрЗаменить(Стр1,» «,»");
КонецЦикла;
Возврат Стр1;
КонецФункции
//********************************************************************
// выборка из баланса по коду статьи и столбца (в таблицу)
Функция П(Код, Показатель)
НСтроки = 0;
Если Баланс.НайтиЗначение(Код, НСтроки, «Код») = 0 Тогда
Возврат 0;
Иначе
Возврат Баланс.ПолучитьЗначение(НСтроки, Показатель);
КонецЕсли;
КонецФункции
//******************************************************************************
Функция ИмяФайлаХранения()
ИНН = Сред(Константа.ИННОрганизации, 1, 10);
КПП = Сред(Константа.ИННОрганизации, 12, 9);
КаталогПоИНН = СокрЛП(Сред(ИНН,3,8)) + «.» + СокрЛП(Лев(ИНН,2));
КаталогДанныхФирмы = КаталогПоИНН;
// [...]