Быстрая загрузка данных большого размера файла Excel в многомерный Массив Код 1C v 8.х
Перем СерверExcel;
Процедура КнопкаВыполнитьНажатие(Кнопка)
ФайлХЛС= СерверExcel. Application. Workbooks. Open( ДокументХЛС) ;
КонечнаяСтрокаДанных= ФайлХЛС. ActiveSheet. UsedRange. Rows. Count;
КоличествоКолонокДанных= ФайлХЛС. ActiveSheet. UsedRange. Columns. Count;
Состояние( "Загрузка в память данных ведомости..." ) ;
ExcelЛист= ФайлХЛС. ActiveSheet;
Область = СерверExcel. Range( ExcelЛист. Cells( 1 , 1 ) , ExcelЛист. Cells( КонечнаяСтрокаДанных, КоличествоКолонокДанных) ) ;
МассивДанныхEXEL = Область. Value. Выгрузить( ) ;
КонецПроцедуры
Процедура ИнициализацииЕкселя()
Состояние( "Происходит инициализация EXCEL..." ) ;
Попытка
СерверExcel1 = Новый COMОбъект( "Excel.Application" ) ;
СерверExcel1. DisplayAlerts = 0 ;
Исключение
ЗапущенExcel = 0 ;
Сообщить( ОписаниеОшибки( ) , "!" ) ;
КонецПопытки ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Как выполнить отбор в регистре сведений по значениям измерений и затем создать запись? Код 1C v 8.х
НаборД = РегистрыСведений. НашРегистр. СоздатьНаборЗаписей( ) ;
НаборД. Отбор. Измерение1 . Установить( Значение1 ) ;
НаборД. Отбор. Измерение2 . Установить( Значение2 ) ;
НаборД. Отбор. Измерение3 . Установить( Значение3 ) ;
СтрокаДанных = НаборД. Добавить( ) ;
СтрокаДанных. Измерение1 = Значение1 ;
СтрокаДанных. Измерение2 = Значение2 ;
СтрокаДанных. Измерение3 = Значение3 ;
СтрокаДанных. Ресурс1 = Значение4 ;
СтрокаДанных. Ресурс2 = Значение5 ;
СтрокаДанных. Реквизит1 = Значение6 ;
СтрокаДанных[ИмяПоля] = Значение7 ;
НаборД. Записать( ) ;
Категория:
Регистры сведений Создание нового документа Для 8.2:
Открыть форму нового документа и предоставить пользователю самому интерактивно записать данные объекта в базу данных:
проще всего использовать метод глобального контекста ОткрытьФорму(). Это можно сделать на клиенте.
Код 1C v 8.2 УП ОткрытьФорму( "Документ.ПриходнаяНакладная.ФормаОбъекта" ) ;
При этом создается новый документ и открывается для редактирования основная форма этого документа.
Если нужно какое-то предварительное заполнение документа начальными данными, то это можно сделать либо с помощью свойств реквизитов документа ЗначениеЗаполнения, ЗаполнятьИзДанныхЗаполнения либо в обработчике события документа ОбработкаЗаполнения.
Создать новый документ программно, программно заполнить его данными и программно записать. Затем, если нужно, показать его пользователю:
можно программно создать документ на сервере, заполнить данными, если это нужно в обработчике события ОбработкаЗаполнения, записать, и передать ссылку на новый документ в метод глобального контекста ОткрытьЗначение(), который откроет форму этого документа. Например:
Код 1C v 8.2 УП &НаКлиенте
Процедура ПриходнаяНакладная(Команда)
СсылкаНаДокумент = СоздатьНовыйДокумент( ) ;
ОткрытьЗначение( СсылкаНаДокумент) ;
КонецПроцедуры
&НаСервере
Функция СоздатьНовыйДокумент()
НовыйДокумент = Документы. ПриходнаяНакладная. СоздатьДокумент( ) ;
НовыйДокумент. Номер = "111" ;
НовыйДокумент. Дата = ТекущаяДата( ) ;
НовыйДокумент. Записать( ) ;
Возврат НовыйДокумент. Ссылка;
КонецФункции
Подробнее об использовании методов ОткрытьЗначение() и ОткрытьФорму() можно прочитать в синтакс-помощнике: Глобальный контекст - Процедуры и функции для интерактивной работы
Код 1C v 8.2 УП
&НаКлиенте
Процедура СоздатьНовыйДокумент(Команда)
Если СоздатьНовыйДокументНаСервере( ) = 0 Тогда
Сообщить( "Не удалось создать новый документ" ) ;
КонецЕсли ;
КонецПроцедуры
&НаСервере
Функция СоздатьНовыйДокументНаСервере()
Перем НоваяРасходнаяНакладная;
Перем СтрокаТЧ;
НоваяРасходнаяНакладная= ДокРасходнаяНакладная. СоздатьДокумент( ) ;
НоваяРасходнаяНакладная. Дата= ТекущаяДата( ) ;
НоваяРасходнаяНакладная. Фирма = Справочники. Фирмы. ОсновнаяФирма;
НоваяРасходнаяНакладная. Контрагент= Справочники. Контрагенты. НайтиПоКоду( "000000001" ) ;
НоваяРасходнаяНакладная. Склад= Справочники. Склады. ОсновнойСклад;
СтрокаТЧ= НоваяРасходнаяНакладная. ТЧТовары. Добавить( ) ;
СтрокаТЧ. Товар= Справочники. Номенклатура. НайтиПоКоду( "000000002" ) ;
СтрокаТЧ. Цена= СтрокаТЧ. Товар. РозничнаяЦена;
СтрокаТЧ. Количество= 2 ;
СтрокаТЧ. Сумма= СтрокаТЧ. Цена* СтрокаТЧ. Количество;
Попытка
НоваяРасходнаяНакладная. Записать( ) ;
Возврат 1 ;
Исключение
Возврат 0 ;
КонецПопытки ;
КонецФункции
Для 8.1:
Код 1C v 8.х
НовДок = Документы. ЗарплатаКВыплатеОрганизаций. ПолучитьФормуНовогоДокумента( ) ;
НовДок. Дата= ТекущаяДата( ) ;
НовДок. Организация= Организация;
НовДок. ПериодРегистрации= ПериодРегистрации;
НовДок. ответственный= глЗначениеПеременной( "глТекущийПользователь" ) ;
НовДок. Комментарий= "Выплата за " + МесяцСтрока;
НовДок. ЭлементыФормы. Комментарий. Доступность= Ложь ;
Для Каждого ТекущаяСтрока Из ТаблицыЗначений Цикл
НС= НовДок. зарплата. добавить( ) ;
нс. Авторасчет= истина ;
нс. Физлицо = ТекущаяСтрока. Физлицо;
нс. ВыплаченностьЗарплаты= Перечисления. ВыплаченностьЗарплаты. НеВыплачено;
нс. сумма= ТекущаяСтрока. Результат;
КонецЦикла ;
НовДок. Открыть( ) ;
НовДок = Документы. РасходнаяНакладная. СоздатьДокумент( ) ;
НовДок. Дата= ТекущаяДата( ) ;
НовыйДок. УстановитьНовыйНомер( ) ;
НовДок. Организация= Организация;
НовДок. ПериодРегистрации= ПериодРегистрации;
НовДок. ответственный= глЗначениеПеременной( "глТекущийПользователь" ) ;
НовДок. Комментарий= "Выплата за " + МесяцСтрока;
НовДок. ЭлементыФормы. Комментарий. Доступность= Ложь ;
Для Каждого ТекущаяСтрока Из ТаблицыЗначений Цикл
НС= НовДок. зарплата. добавить( ) ;
нс. Авторасчет= истина ;
нс. Физлицо = ТекущаяСтрока. Физлицо;
нс. ВыплаченностьЗарплаты= Перечисления. ВыплаченностьЗарплаты. НеВыплачено;
нс. сумма= ТекущаяСтрока. Результат;
КонецЦикла ;
НовДок. Записать( ) ;
НовыйДок = Документы. ПеремещениеТоваров. СоздатьДокумент( ) ;
НовыйДок. Дата = ПолеВводаДаты;
НовыйДок. УстановитьВремя( ) ;
НовыйДок. УстановитьНовыйНомер( ) ;
Для Н= 1 По N Цикл
НоваяСтрока = НовыйДок. Товары. Добавить( ) ;
НоваяСтрока. Номенклатура = СтрокаДанных. Номенклатура;
КонецЦикла ;
НовыйДок. Записать( ) ;
СписокДокументов. Добавить( НовыйДок. Ссылка) ;
Категория:
Документы