Выгрузка данных в Excel с установкой разных параметров Код 1C v 8.х
Процедура ОсновныеДействияФормыЭкспорт (Кнопка)
Попытка
Попытка
Состояние( "Выгрузка данных из 1С в Microsoft Excel..." ) ;
ExcelПриложение = Новый COMОбъект( "Excel.Application" ) ;
Исключение
Сообщить( "Ошибка при запуске Microsoft Excel."
+ Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
Возврат ;
КонецПопытки ;
Книга = ExcelПриложение. WorkBooks. Add( ) ;
Лист = Книга. WorkSheets( 1 ) ;
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Лист. Cells( 1 , Колонка) . Value = стр. НазваниеРеквизита;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
выборка = Справочники[ИмяСправочника]. Выбрать( ) ;
СтрокаЛиста = 2 ;
Пока выборка. Следующий( ) Цикл
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Попытка
Если ТипЗнч( выборка[стр. НазваниеРеквизита]) = Тип( "Число" ) Тогда
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "0,00" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Формат( выборка[стр. НазваниеРеквизита], "ЧГ=0" ) ;
иначе
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "@" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Строка( выборка[стр. НазваниеРеквизита]) ;
КонецЕсли ;
исключение
Сообщить( "Ошибка установки значения для: " +
выборка[стр. НазваниеРеквизита]) ;
Сообщить( "Стр: " + СтрокаЛиста+ " Кол: " +
Колонка+ " Рек: " + стр. НазваниеРеквизита) ;
КонецПопытки ;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
СтрокаЛиста = СтрокаЛиста + 1 ;
Состояние( "Экспорт из 1С в Excel " + СтрокаЛиста) ;
КонецЦикла ;
Книга. SaveAs( имяФайла) ;
ExcelПриложение. Quit( ) ;
Сообщить( "Файл выгружен успешно: " + имяФайла ) ;
Исключение
Сообщить( "Ошибка записи данных файла :" + имяФайла) ;
Сообщить( ОписаниеОшибки( ) ) ;
Попытка
ExcelПриложение. Quit( ) ;
Исключение
КонецПопытки ;
КонецПопытки ;
КонецПроцедуры
Код 1C v 7.x
Процедура Вывод()
Попытка
Application= СоздатьОбъект( "Excel.Application" ) ;
Исключение
Сообщить( ОписаниеОшибки( ) , "!!!" ) ;
Сообщить( "Возможно, MS Excel не установлен на этом компьютере." ) ;
Возврат ;
КонецПопытки ;
WorkBook= Application. WorkBooks. Add( ) ;
Window= WorkBook. Windows( 1 ) ;
Window. Visible= 0 ;
Если WorkBook. Worksheets. Count= 0 Тогда
WorkBook. Worksheets. Add( ) ;
Иначе
Application. DisplayAlerts= 0 ;
Пока WorkBook. Worksheets. Count> 1 Цикл
WorkBook. Worksheets( 1 ) . Delete( ) ;
КонецЦикла ;
Application. DisplayAlerts= - 1 ;
КонецЕсли ;
Worksheet= WorkBook. Worksheets( 1 ) ;
Worksheet. Name= "Пример вывода" ;
Worksheet. Range( "A1" ) . Value= "Пример вывода из 1С:Предприятия в MS Excel" ;
Worksheet. Range( "A2" ) . Value= "сегодня " + ТекущаяДата( ) ;
Worksheet. Range( "A1:A2" ) . Font. Size= 14 ;
Worksheet. Range( "A1:A2" ) . Font. Bold= - 1 ;
Worksheet. Columns( 1 ) . ColumnWidth= 60 ;
Worksheet. Columns( 2 ) . ColumnWidth= 15 ;
Worksheet. Columns( 3 ) . ColumnWidth= 15 ;
Worksheet. Range( "A4" ) . Value= "Первая колонка" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "A4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "A4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "A4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "A4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "B4" ) . Value= "Вторая" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "B4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "B4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "B4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "C4" ) . Value= "Третья" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "C4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "C4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "C4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Outline. SummaryRow= 0 ;
Worksheet. Range( "A5" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B5" ) . Value= 123.45 ;
Worksheet. Range( "B5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C5" ) . Value= 678.9 ;
Worksheet. Range( "C5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A6" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B6" ) . Value= 123.45 ;
Worksheet. Range( "B6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C6" ) . Value= 678.9 ;
Worksheet. Range( "C6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A7" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B7" ) . Value= 123.45 ;
Worksheet. Range( "C7" ) . Value= 678.9 ;
Worksheet. Range( "A8" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B8" ) . Value= 123.45 ;
Worksheet. Range( "C8" ) . Value= 678.9 ;
Worksheet. Range( "A9" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B9" ) . Value= 123.45 ;
Worksheet. Range( "B9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C9" ) . Value= 678.9 ;
Worksheet. Range( "C9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A10" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B10" ) . Value= 123.45 ;
Worksheet. Range( "C10" ) . Value= 678.9 ;
Worksheet. Range( "A11" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B11" ) . Value= 123.45 ;
Worksheet. Range( "C11" ) . Value= 678.9 ;
Worksheet. Range( "A12" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B12" ) . Value= 123.45 ;
Worksheet. Range( "B12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C12" ) . Value= 678.9 ;
Worksheet. Range( "C12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A13" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B13" ) . Value= 123.45 ;
Worksheet. Range( "B13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C13" ) . Value= 678.9 ;
Worksheet. Range( "C13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A14" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B14" ) . Value= 123.45 ;
Worksheet. Range( "C14" ) . Value= 678.9 ;
Worksheet. Range( "A15" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B15" ) . Value= 123.45 ;
Worksheet. Range( "C15" ) . Value= 678.9 ;
Worksheet. Range( "A16" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B16" ) . Value= 123.45 ;
Worksheet. Range( "B16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C16" ) . Value= 678.9 ;
Worksheet. Range( "C16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A17" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B17" ) . Value= 123.45 ;
Worksheet. Range( "C17" ) . Value= 678.9 ;
Worksheet. Range( "A18" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B18" ) . Value= 123.45 ;
Worksheet. Range( "C18" ) . Value= 678.9 ;
Для НомСтр= 5 по 18 Цикл
Для ы= 7 по 10 Цикл
Worksheet. Range( "A" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C" + НомСтр) . Borders( ы) . LineStyle= 1 ;
КонецЦикла ;
КонецЦикла ;
Worksheet. Range( "7:8" ) . Rows. Group( ) ;
Worksheet. Range( "10:11" ) . Rows. Group( ) ;
Worksheet. Range( "14:15" ) . Rows. Group( ) ;
Worksheet. Range( "17:18" ) . Rows. Group( ) ;
Worksheet. Range( "6:11" ) . Rows. Group( ) ;
Worksheet. Range( "13:18" ) . Rows. Group( ) ;
Worksheet. Outline. ShowLevels( 1 ) ;
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0.00" ;
Исключение
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0,00" ;
Исключение
КонецПопытки ;
КонецПопытки ;
Application. Visible= - 1 ;
Window. Visible= - 1 ;
Worksheet. Range( "A5" ) . S_elect( ) ;
Window. FreezePanes = - 1 ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Табличное поле ~ Оформление строк, ячеек табличного поля (цвет, текст) Одним из полезных свойств элемента управления Табличное поле является возможность настройки оформления его строк программным способом.
Для иллюстрации этой возможности мы снова воспользуемся формой справочника Номенклатура и придадим ей «нестандартный» вид.
Откроем в конфигураторе форму списка справочника Номенклатура и создадим обработчик события формы ПриОткрытии со следующим текстом:
Код 1C v 8.х Процедура ПриОткрытии()
СписокСправочника = ЭлементыФормы. СправочникСписок;
СписокСправочника. ЦветФонаЧередованияСтрок = WEBЦвета. Бежевый;
СписокСправочника. ЧередованиеЦветовСтрок = Истина ;
СписокСправочника. ВертикальныеЛинии = Ложь ;
СписокСправочника. ГоризонтальныеЛинии = Ложь ;
КонецПроцедуры
Вначале мы задаем режим чередования цветов фона строк списка. Первая строка будет выводиться на бежевом фоне, вторая на белом,
третья снова на бежевом и т. д.
Затем мы скрываем линии, разделяющие колонки и строки.
Теперь откроем обработчик события ПриВыводеСтроки табличного поля списка справочника и добавим в него следующие строки:
Код 1C v 8.х Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки,ДанныеСтроки)
Если Не ДанныеСтроки. ЭтоГруппа Тогда
ОтборНоменклатуры = Новый Структура;
ОтборНоменклатуры. Вставить( "Номенклатура" , ДанныеСтроки. Ссылка) ;
ОформлениеСтроки. Ячейки. Цена. ОтображатьТекст = Истина ;
АктуальнаяЦена = РегистрыСведений. Цены. ПолучитьПоследнее( , ОтборНоменклатуры) . Цена;
ОформлениеСтроки. Ячейки. Цена. Текст = АктуальнаяЦена;
Если АктуальнаяЦена< 500 Тогда
ОформлениеСтроки. Ячейки. Цена. ЦветТекста = WEBЦвета. Васильковый;
КонецЕсли ;
Если СтрДлина( СокрЛП( ДанныеСтроки. Наименование) ) > 30 Тогда
ОформлениеСтроки. Ячейки. Наименование. АвтоВысотаЯчейки = Истина ;
ОформлениеСтроки. Ячейки. Наименование. ВысотаЯчейки = 3 ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
Здесь в случае вывода элемента справочника мы анализируем длину его наименования. Если оно более 30 символов, устанавливаем автоматическое определение высоты ячейки, ограничивая ее максимальную высоту тремя строками.
Категория:
Работа с Формой (Диалог) и её элементами Как получить количество ЛЕТ, МЕСЯЦЕВ, ДНЕЙ между датами? Нужно получить разницу между датами
31.12.2009 и
10.01.2005 и отобразить ее как:
4 года 11 месяцев 21 день
Код 1C v 8.х Процедура ТЕСТ_ВыполнитьНажатие(Кнопка)
ДатаНач = Дата(2009, 12, 31);
ДатаКон = Дата(2005, 1, 10);
Лет=0; Мес=0; Дн=0;
РазобратьРазностьДат(ДатаНач, ДатаКон, Лет, Мес, Дн);
ЛетС = ФормаМножественногоЧисла("год","года","лет",Лет);
МесС = ФормаМножественногоЧисла("месяц","месяца","месяцев",Мес);
ДнС = ФормаМножественногоЧисла("день","дня","дней",Дн);
Сообщить(?(Лет>0,Строка(Лет)+" "+ЛетС,"")+" "+?(Мес>0,Строка(Мес)+" "+МесС,"")+" "+Строка(дн)+" "+ДнС);
// Результат будет : 4 года 11 месяцев 21 день
КонецПроцедуры
// Получить разность дат
Процедура РазобратьРазностьДат(Дата1, Дата2, Лет = 0, Месяцев = 0, Дней = 0)
Лет = 0;
Месяцев = 0;
Дней = 0;
Если Дата1 > Дата2 Тогда
ВременнаяДата = Дата1;
Если День(ВременнаяДата) < День(Дата2) Тогда
Дней = (ВременнаяДата - ДобавитьМесяц(ВременнаяДата,-1))/86400;
ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-1);
КонецЕсли;
Если Месяц(ВременнаяДата) < Месяц(Дата2) Тогда
ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-12);
Месяцев = 12;
КонецЕсли;
Лет = Макс( Год(ВременнаяДата) - Год(Дата2), 0);
Месяцев = Макс(Месяцев + Месяц(ВременнаяДата) - Месяц(Дата2), 0);
Дней = Макс(Дней + День(ВременнаяДата) - День(Дата2), 0);
// скорректируем отображаемое значение, если ""вмешалось"" разное количество дней в месяцах
Если Дата2 <> (ДобавитьМесяц(Дата1,-Лет * 12-Месяцев)-Дней * 86400) Тогда
Дней = Дней + (День(КонецМесяца(Дата2)) - День(НачалоМесяца(Дата2))) - (День(КонецМесяца(ДобавитьМесяц(Дата1,-1))) - День(НачалоМесяца(ДобавитьМесяц(Дата1,-1))));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Сформировать множественное число
Функция ФормаМножественногоЧисла(Слово1, Слово2, Слово3, Знач ЦелоеЧисло)
// Изменим знак целого числа, иначе отрицательные числа будут неправильно преобразовываться
Если ЦелоеЧисло < 0 Тогда
ЦелоеЧисло = -1 * ЦелоеЧисло;
КонецЕсли;
Если ЦелоеЧисло <> Цел(ЦелоеЧисло) Тогда
// для нецелых чисел - всегда вторая форма
Возврат Слово2;
КонецЕсли;
// остаток
Остаток = ЦелоеЧисло%10;
Если (ЦелоеЧисло >10) И (ЦелоеЧисло<20) Тогда
// для второго десятка - всегда третья форма
Возврат Слово3;
ИначеЕсли Остаток=1 Тогда
Возврат Слово1;
ИначеЕсли (Остаток>1) И (Остаток<5) Тогда
Возврат Слово2;
Иначе
Возврат Слово3;
КонецЕсли;
КонецФункции
Категория:
Работа с Датами (Временем) Печать табличной части документа в Word'e Вот пример кода создания и заполнения таблиц(пример для 7.7, в 8.х заменить первую строку на МСВорд Новый COMОбъект("Word.Application")):
Код 1C v 7.x МСВорд = СоздатьОбъект("Word.Application");
Документ = МСВорд.Documents;
Документ.Add();
Документ = МСВорд.ActiveDocument();
Документ.Paragraphs.Add();
Диапазон = Документ.Paragraphs(Документ.Paragraphs.Count()).Range;
//Добавим таблицу фиксированного размера 3х2
Документ.Tables.Add(Диапазон,3,2);
Документ.Tables(1).Range.S_elect();
Выбор = МСВорд.S_election();
Выбор.Style = "Сетка таблицы";
//Установим ширину обоих колонок по 8 см
Документ.Tables(1).Columns(1).Width= МСВорд.CentimetersToPoints(8);
Документ.Tables(1).Columns(2).Width= МСВорд.CentimetersToPoints(8);
//Заполнение
Документ.Tables(1).Cell(1,1).Range.Text = "Это первая сирока, первая колонка";
Документ.Tables(1).Cell(2,1).Range.Text = "";
Документ.Tables(1).Cell(3,1).Range.Text = "";
Документ.Tables(1).Cell(1,2).Range.Text = "";
Документ.Tables(1).Cell(2,2).Range.Text = "";
Документ.Tables(1).Cell(3,2).Range.Text = "Это третья строка, вторая колонка";
//Добавим таблицу с произвольным количеством строк, для примера возьмем 4 колонки
//Сначала выведем заголовок таблицы
Документ.Paragraphs.Add();
Диапазон = Документ.Paragraphs(Документ.Paragraphs.Count()).Range;
Документ.Tables.Add(Диапазон,1,4);
Документ.Tables(2).Range.S_elect();
Выбор = МСВорд.S_election();
Выбор.Style = "Сетка таблицы";
Выбор.Rows.AllowBreakAcrossPages = 0;
//Зададим ширину колонок
Документ.Tables(2).Columns(1).Width= МСВорд.CentimetersToPoints(2);
Документ.Tables(2).Columns(2).Width= МСВорд.CentimetersToPoints(4);
Документ.Tables(2).Columns(3).Width= МСВорд.CentimetersToPoints(4);
Документ.Tables(2).Columns(4).Width= МСВорд.CentimetersToPoints(10);
//Заполнение шапки таблицы
Документ.Tables(2).Cell(1,1).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,1).Range.Text = "№";
Документ.Tables(2).Cell(1,2).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,2).Range.Text = "Колонка 2";
Документ.Tables(2).Cell(1,3).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,3).Range.Text = "Колонка 3";
Документ.Tables(2).Cell(1,4).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,4).Range.Text = "Примечание";
//Для документа можно так цикл организовать:
//Предположим, что Док - это документ, тогда
Для А =1 По Док.КоличествоСтрок() Цикл
Док.ПолучитьСтрокуПоНомеру(А);
Выбор.I_nsertRowsBelow(1);
Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
Документ.Tables(2).Cell(А+1,2).Range.Text = Док.РеквизитТабличнойЧастиДокумента1;
Документ.Tables(2).Cell(А+1,3).Range.Text = Док.РеквизитТабличнойЧастиДокумента2;
Документ.Tables(2).Cell(А+1,4).Range.Text = Док.РеквизитТабличнойЧастиДокумента3;
КонецЦикла;
//или выведем таблицу по таблице значений
Для А = 1 По ТЗ.КоличествоСтрок() Цикл
//Добавим строку в таблицу
Выбор.I_nsertRowsBelow(1);
Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
Документ.Tables(2).Cell(А+1,2).Range.Text = ТЗ.ПолучитьЗначение(А,1);
Документ.Tables(2).Cell(А+1,3).Range.Text = ТЗ.ПолучитьЗначение(А,2);
Документ.Tables(2).Cell(А+1,4).Range.Text = ТЗ.ПолучитьЗначение(А,3);
КонецЦикла;
//Запишем Документ
Документ.SaveAs("ПутьИИмяДокумента",0);
Документ.Close();
ТЗ - это таблица значений.
Для документа можно так цикл организовать:
Предположим, что Док - это документ, тогда
Код 1C v 8.2 УП Для А = 1 По Док. КоличествоСтрок( ) Цикл
Док. ПолучитьСтрокуПоНомеру( А) ;
Выбор. I_nsertRowsBelow( 1 ) ;
Документ. Tables( 2 ) . Cell( А+ 1 , 1 ) . Range. Text = Строка( А) ;
Документ. Tables( 2 ) . Cell( А+ 1 , 2 ) . Range. Text = Док. РеквизитТабличнойЧастиДокумента1 ;
Документ. Tables( 2 ) . Cell( А+ 1 , 3 ) . Range. Text = Док. РеквизитТабличнойЧастиДокумента2 ;
Документ. Tables( 2 ) . Cell( А+ 1 , 4 ) . Range. Text = Док. РеквизитТабличнойЧастиДокумента3 ;
КонецЦикла ;
Категория:
Работа с Microsoft Office и OpenOffice Форма ~ Универсальная Форма Вопроса для Пользователя При написании программ, часто возникает ситуация, когда необходимо спросить у пользователя, какие данные он хочет получить.
В данной статье описан пример создания универсальной Формы Вопроса для Пользователя:
1. Создадим в общих формах новую форму "ФормаВопроса", добавим на ней две Надписи (ПЕРВАЯ= Имя: НадписьВыМожете, Заголовок: "Вы можете:" , ВТОРАЯ= Имя: НадписьТекстВопроса), добавим три кнопки (ПЕРВАЯ= Имя: КнопкаДействие1, Заголовок: "Действие1, События Нажатие: КнопкаДействие1, ВТОРАЯ= Имя: КнопкаДействие2, Заголовок: "Действие2, События Нажатие: КнопкаДействие2, ТРЕТЬЯ= Имя: КнопкаДействие3, Заголовок: "Действие3, События Нажатие: КнопкаДействие3) и добавим картику знака вопроса, для красоты.
В свойствах формы,
обязательно снять галочку "Разрешить закрытие" , иначе пользователь сможет нажать на крестик в правом верхнем углу и ответа на вопрос не произойдет
.
2. В модуле опишем действия заданных Событий:
Код 1C v 8.х
Процедура КнопкаДействие1(Элемент)
Закрыть( "1" ) ;
КонецПроцедуры
Процедура КнопкаДействие2(Элемент)
Закрыть( "2" ) ;
КонецПроцедуры
Процедура КнопкаДействие3(Элемент)
Закрыть( "3" ) ;
КонецПроцедуры
Все, форма готова!
Использовать ее, можно с помощью кода:
Код 1C v 8.х
Форма = ПолучитьОбщуюФорму( "ФормаВопроса" ) ;
Форма. Заголовок = "Выберите как сформировать проводки" ;
Форма. ЭлементыФормы. НадписьТекстВопроса. Заголовок = "Сформировать проводки по всем видам начислений или выбрать виды начислений и списка:" ;
Форма. ЭлементыФормы. КнопкаДействие1 . Заголовок = "По всем видам" ;
Форма. ЭлементыФормы. КнопкаДействие2 . Заголовок = "Выбрать виды из списка" ;
Форма. ЭлементыФормы. КнопкаДействие3 . Видимость = ложь ;
Результат = Форма. ОткрытьМодально( ) ;
Если Результат = "1" тогда
СформироватьВсе( ) ;
иначеесли Результат = "2" тогда
СформироватьВыбор( ) ;
КонецЕсли ;
Пользователь увидит вопрос:
Автор:
Евгений Мигачев Категория:
Работа с Формой (Диалог) и её элементами Группировка строк Excel В ниже указанном коде нужно убрать символ
_
Код 1C v 8.х
Worksheet. Range( "7:8" ) . Rows. Group( ) ;
Worksheet. Range( "10:11" ) . Rows. Group( ) ;
Worksheet. Range( "14:15" ) . Rows. Group( ) ;
Worksheet. Range( "17:18" ) . Rows. Group( ) ;
Worksheet. Range( "6:11" ) . Rows. Group( ) ;
Worksheet. Range( "13:18" ) . Rows. Group( ) ;
Worksheet. Outline. ShowLevels( 1 ) ;
Excel. Range( "A3:A6" ) . S_elect( ) ;
Excel. S_election. Rows. Group( ) ;
BegCell = Лист. Cells( 1 , 1 ) ;
EndCell = Лист. Cells( 4 , 1 ) ;
Лист. Range( BegCell, EndCell) . Rows. Group( ) ;
Код 1C v 7.x
Процедура Вывод()
Попытка
Application= СоздатьОбъект( "Excel.Application" ) ;
Исключение
Сообщить( ОписаниеОшибки( ) , "!!!" ) ;
Сообщить( "Возможно, MS Excel не установлен на этом компьютере." ) ;
Возврат ;
КонецПопытки ;
WorkBook= Application. WorkBooks. Add( ) ;
Window= WorkBook. Windows( 1 ) ;
Window. Visible= 0 ;
Если WorkBook. Worksheets. Count= 0 Тогда
WorkBook. Worksheets. Add( ) ;
Иначе
Application. DisplayAlerts= 0 ;
Пока WorkBook. Worksheets. Count> 1 Цикл
WorkBook. Worksheets( 1 ) . Delete( ) ;
КонецЦикла ;
Application. DisplayAlerts= - 1 ;
КонецЕсли ;
Worksheet= WorkBook. Worksheets( 1 ) ;
Worksheet. Name= "Пример вывода" ;
Worksheet. Range( "A1" ) . Value= "Пример вывода из 1С:Предприятия в MS Excel" ;
Worksheet. Range( "A2" ) . Value= "сегодня " + ТекущаяДата( ) ;
Worksheet. Range( "A1:A2" ) . Font. Size= 14 ;
Worksheet. Range( "A1:A2" ) . Font. Bold= - 1 ;
Worksheet. Columns( 1 ) . ColumnWidth= 60 ;
Worksheet. Columns( 2 ) . ColumnWidth= 15 ;
Worksheet. Columns( 3 ) . ColumnWidth= 15 ;
Worksheet. Range( "A4" ) . Value= "Первая колонка" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "A4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "A4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "A4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "A4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "B4" ) . Value= "Вторая" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "B4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "B4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "B4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "C4" ) . Value= "Третья" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "C4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "C4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "C4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Outline. SummaryRow= 0 ;
Worksheet. Range( "A5" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B5" ) . Value= 123.45 ;
Worksheet. Range( "B5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C5" ) . Value= 678.9 ;
Worksheet. Range( "C5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A6" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B6" ) . Value= 123.45 ;
Worksheet. Range( "B6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C6" ) . Value= 678.9 ;
Worksheet. Range( "C6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A7" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B7" ) . Value= 123.45 ;
Worksheet. Range( "C7" ) . Value= 678.9 ;
Worksheet. Range( "A8" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B8" ) . Value= 123.45 ;
Worksheet. Range( "C8" ) . Value= 678.9 ;
Worksheet. Range( "A9" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B9" ) . Value= 123.45 ;
Worksheet. Range( "B9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C9" ) . Value= 678.9 ;
Worksheet. Range( "C9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A10" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B10" ) . Value= 123.45 ;
Worksheet. Range( "C10" ) . Value= 678.9 ;
Worksheet. Range( "A11" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B11" ) . Value= 123.45 ;
Worksheet. Range( "C11" ) . Value= 678.9 ;
Worksheet. Range( "A12" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B12" ) . Value= 123.45 ;
Worksheet. Range( "B12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C12" ) . Value= 678.9 ;
Worksheet. Range( "C12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A13" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B13" ) . Value= 123.45 ;
Worksheet. Range( "B13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C13" ) . Value= 678.9 ;
Worksheet. Range( "C13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A14" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B14" ) . Value= 123.45 ;
Worksheet. Range( "C14" ) . Value= 678.9 ;
Worksheet. Range( "A15" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B15" ) . Value= 123.45 ;
Worksheet. Range( "C15" ) . Value= 678.9 ;
Worksheet. Range( "A16" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B16" ) . Value= 123.45 ;
Worksheet. Range( "B16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C16" ) . Value= 678.9 ;
Worksheet. Range( "C16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A17" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B17" ) . Value= 123.45 ;
Worksheet. Range( "C17" ) . Value= 678.9 ;
Worksheet. Range( "A18" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B18" ) . Value= 123.45 ;
Worksheet. Range( "C18" ) . Value= 678.9 ;
Для НомСтр= 5 по 18 Цикл
Для ы= 7 по 10 Цикл
Worksheet. Range( "A" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C" + НомСтр) . Borders( ы) . LineStyle= 1 ;
КонецЦикла ;
КонецЦикла ;
Worksheet. Range( "7:8" ) . Rows. Group( ) ;
Worksheet. Range( "10:11" ) . Rows. Group( ) ;
Worksheet. Range( "14:15" ) . Rows. Group( ) ;
Worksheet. Range( "17:18" ) . Rows. Group( ) ;
Worksheet. Range( "6:11" ) . Rows. Group( ) ;
Worksheet. Range( "13:18" ) . Rows. Group( ) ;
Worksheet. Outline. ShowLevels( 1 ) ;
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0.00" ;
Исключение
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0,00" ;
Исключение
КонецПопытки ;
КонецПопытки ;
Application. Visible= - 1 ;
Window. Visible= - 1 ;
Worksheet. Range( "A5" ) . S_elect( ) ;
Window. FreezePanes = - 1 ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Функция преобразует строку к множественному числу (Пример: 3 шкафа) Код 1C v 8.х // Параметры функции:
// Слово1 - форма слова в ед числе ("шкаф")
// Слово2 - форма слова для числит 2-4 ("шкафа")
// Слово3 - форма слова для числит 5-10 ("шкафов")
// ЦелоеЧисло - целое число
//
// Возвращаемое значение:
// строку - одну из строк в зависимости от параметра ЦелоеЧисло
//
// Описание:
// Предназначена для формирования "правильной" подписи к числительным
//
Функция ФормаМножественногоЧисла(Слово1, Слово2, Слово3, Знач ЦелоеЧисло) Экспорт
// Изменим знак целого числа, иначе отрицательные числа будут неправильно преобразовываться
Если ЦелоеЧисло < 0 Тогда
ЦелоеЧисло = -1 * ЦелоеЧисло;
КонецЕсли;
Если ЦелоеЧисло <> Цел(ЦелоеЧисло) Тогда
// для нецелых чисел - всегда вторая форма
Возврат Слово2;
КонецЕсли;
// остаток
Остаток = ЦелоеЧисло%10;
Если (ЦелоеЧисло >10) И (ЦелоеЧисло<20) Тогда
// для второго десятка - всегда третья форма
Возврат Слово3;
ИначеЕсли Остаток=1 Тогда
Возврат Слово1;
ИначеЕсли (Остаток>1) И (Остаток<5) Тогда
Возврат Слово2;
Иначе
Возврат Слово3;
КонецЕсли;
КонецФункции
Категория:
Работа с Текстом (Строкой)