Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Как стать 1С:Администратором (программистом) Очередной выпуск рассылки+переезд.


Информационный Канал Subscribe.Ru

Курс дистанционного обучения "1С:Администратор"
Урок № Курс дистанционного обучения "1С:Администратор"
19/11/2003 http://mricos.com    E-mail: boss@mricos.com

    Добрый день. Наша рассылка после долгого перерыва снова выходит в свет, но в несколько другом виде. Теперь здесь не будет уроков по программированию 1С в том виде, в котором представлялись ранее.

    Практика показала, что все люди разные и скорость изучения материала разная и области интересов , в том числе и в 1С, самые разные, поэтому теперь здесь будут размещаться выдержки из моего общения с клиентами и посетителями форума сайта фирмы МРИКОС ООО, которая является правоприемницей старой рассылки.

Ну а дальше, без лишних рассуждений перейдем к содержательной части рассылки.

1.Вопрос:

Здравствуйте, подскажите пожалуйста если кто знает: Нужно создать программно (без участия пользователя) документ, вызвать некоторые его процедуры, записать и провести. Т.е вот в таком фрагменте:
Источник=СоздатьОбъект("Документ.ЗаказПоставщику");
Источник.Новый();
Источник.ВводНаОсновании(ДокОснование);
Источник.Провести();
Источник.Записать();
Возникает ошибка : Поле агрегатного объекта не обнаружено (ВводНаОсновании).
А мне нужно именно вызывать процедуры из созданных объектов.

Ответ:

Надо сделать следующее:
1. В модуле откуда надо вызвать процедуры написать:
Конт="Ввод на основании";
ОткрытьФорму("Документ.ЗаказПоставщику",Конт,ДокОснование);

Если нужно, чтобы программно создать новый документ в режиме ввода на основании - то этого достаточно. Таким образом откроется форма нового документа, заполненного в режиме ВводНаОсновании, если же преследуются другие цели, то переходим ко второму шагу (варианту).
2.
В источнике пишем:
Источник=СоздатьОбъект("Документ.ЗаказПоставщику");
Источник.Новый();
Источник.Записать();
Источник.Провести();
Конт="Ввод на основании";
ОткрытьФорму(Источник,Конт);

В модуле документа "ЗаказПоставщику" в процедуру ПриОткрытии
вставить в начало (или в конец) по необходимости написать:
Процедура ПриОткрытии()
//этот параметр передали из процедуры источника
Если Форма.Параметр="Ввод на основании" Тогда
//здесь вызываем процедуры документа "ЗаказПоставщику"
.....
//теперь даем указание программе закрыть документ
СтатусВозврата(0);
Возврат;
КонецЕсли
КонецПроцедуры.

Смотри обсуждение на форуме>>>

2.Вопрос:

Не работает Форма.ТолькоПросмотр(0), по умолчанию стоит Форма.ТолькоПросмотр() = 1,какой файл в базе данных отвечает за это, например я работаю в комплексной ферсии 1С.

Ответ:

Для того чтобы работала Форма.ТолькоПросмотр не надо выяснять какой файл в базе данных за это отвечает.

Нужно просто в искомом объекте(документе, справочнике) в модуле формы установить это значение. Например:

Процедура ПриОткрытии()
Если ИмяПользователя="Марат" Тогда
Форма.ТолькоПросмотр(0);
Иначе
Форма.ТолькоПросмотр(1);
КонецЕсли;
КонецПроцедуры

Что выполняет данный модуль?
Если зашел пользователь с именем "Марат", то документ открывается в обычном режиме работы, а в противном случае - только для просмотра.
ХОчу обратить внимание, что команда Форма.ТолькоПРосмотр(1) не распространяется на кнопки - они будут при этом нажиматься и соответственно могут изменить содержимое документа. Их надо блокировать отдельно.

Возможен и другой вариант.
Посмотрите в пункте меню "Сервис-Параметры-Режим открытия объектов", там должно быть значение "Редактирование", а не "Просмотр".

Смотри обсуждение на форуме>>>

3.Вопрос: Сделал импорт товаров в справочник товары из DBF. Но охота из Exel, чтобы не обрабатывать предварительно файл. Как это дело изладить...чегото не могу добиться...

Ответ:

Внизу представлена урезанная версия одной моих процедур. Я все лишнее убрал, чтобы было понятнее именно в части загрузки из Excel.
Постарался сделать с комментариями
Процедура ЗагрузитьДанные()

ГруппаТовара=СоздатьОбъект("Справочник.Товары");
ИмяФайла="";ПутьКФайлу="";
//находим и выбираем файл *.xls
Если ФС.ВыбратьФайл(0,ИмяФайла,ПутьКФайлу,"Введите имя Excel файла с данными","Excel 6.0/95/97 (*.xls)|*.xls",,)=0 Тогда
Возврат;
КонецЕсли;
//Код будет идти в первой колонке
КодД=1;
//Артикул товара поставщика идет во второй колонке
КАртПост=2;
//Собственный ариткул идет в третьей колонке и т.д.
КАртикла=3;
//создаем объект Excel
ExcelApp = CreateObject("Excel.Application");
РабочиеКниги=ExcelApp.WorkBooks;

//открываем ранее выбранный файл екселя
РабочиеКниги.Open(СокрЛП(ПутьКФайлу)+СокрЛП(ИмяФайла));
//активизируем книгу
РабочаяКнига=ExcelApp.ActiveWorkbook;

//Переменная, которая будет содержать номер анализируемой строки в ексель.
Стр=1;
//выбираем код из первой строки
КодД=ExcelApp.Cells(стр,ККода);
//тут идет перебор до тех пор, пока в колонке КодД (это к примеру первая колонка) есть какое-нибудь значение.
//Как только встретится пустое значение цикл завершится
Пока Число(КодД.Value)>0 Цикл
//получаем ячейку из ексель, стр - содержит номер строки, КАртПост - номер колонки
АртПост =ExcelApp.Cells(стр,КАртПост);
//получаем ячейку из ексель, стр - содержит номер строки, КАртикла - номер колонки
Артикл =ExcelApp.Cells(стр,КАртикла);


НоваяСтрока();
//а теперь из ячейки получаем непосредственно ЗНАЧЕНИЕ.
Арт2 =АртПост.Value;
Арт1 =Артикл.Value;

//переходим к следующей строке
стр=стр+1;
КодД=ExcelApp.Cells(стр,ККода);
КонецЦикла;

ЗапретРедактир=1;
//Закрываем ексель
ExcelApp.Quit();
//деинициализируем переменную с объектом Ексель.
ExcelApp=0;
КонецПроцедуры

Смотри обсуждение на форуме>>>

Уважаемые подписчики, для более тесного и плодотворного общения приглашаю Вас всех к себе на сайт, а самое главное к себе на форум. На форуме Вы можете задать любой вопрос по около 1с-овской тематике и я в меру своих возможностей постараюсь ответить на все ваши вопросы.

Для Вашего удобства общения на форуме предусмотрена регистрация. Она не является обязательной, но желательна, так как позволяет задействовать дополнительные сервисные функции. Одной из самых важных является возможность получать уведомления об ответах в темах, в обсуждении которых вы участвуете, а также получать личные сообщения с форуме, не указывая свой e-mail для публичного доступа (анти-спам).

 

Админ Рустам

Добро пожаловать на сайт фирмы "МРИКОС" ООО



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное