вторник, 5 августа 2008 г.

8 Подключение внешнего отчета к стандарной конфигурации

В стандартной конфигурации есть врозможность подключения внешнего отчета, этот отчет затягивается в хранилищеЧтобы подключить внешний отчет:

1)Сервис->Внешние печатные формыДобавить внешнюю печатную форму, перенести ее в хранилище, нажав на папку со стрелкойДобавить в табличную часть документ, в кнопку "Печать" которой надо добавить эту печатную форму

2) Механизм печати такой: после нажатия на кнопку "Печать" в документе, в реквизит <СсылкаНаОбъект> отчета передается ссылка на текущий документ и затем запускаетсяПроцедура <Печать > из модуля обработки Требования ко внешнему отчету (обработке) :1) Должен быть реквизит <СсылкаНаОбъект>, тип которого совпадает с типом документа, из которого вызывается этот отчет

3)Сам вывод печатной формы должен вызываться из процедуры, расположенной в модуле обработки (НЕ В МОДУЛЕ ФОРМЫ!!!)Процедура Печать() Экспорт ...КонецПроцедуры

4)Рекомендуется создать форму, из которой м.будет тестировать обработку. Эта форма должна содержать поле выбора документа (реквизит <СсылкаНаОбъект>) И по нажатию на кнопку д. вызываться процедура Печать()

8.1 8.0 Как в запросе и использовать субконто заданного вида

// Для обычного запроса"ВЫБРАТЬ
ХозрасчетныйОстатки.Счет,
ХозрасчетныйОстатки.КоличествоОстаток,
ХозрасчетныйОстатки.Субконто1.БазоваяЕдиницаИзмерения Как ЕдИзм, Выразить (ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура) Как Субконто1,...


//Касается построителя отчета

{ГДЕ Выразить (ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура).* КАК Субконто1,
Выразить (ХозрасчетныйОстатки.Субконто2 КАК Справочник.Организации).* КАК Субконто2,
ХозрасчетныйОстатки.Субконто1.СРШ_ГруппаНоменклатуры.*,
ХозрасчетныйОстатки.Организация.*}

//если в секции построителя запроса об этом не позаботиться, то будет выводится кнопка для выбора типа

8.1. Как создать границу

КонГраница = Новый Граница(КонДата, ВидГраницы.Включая);

8.1 как работать со списком выбора в форме

ЭлементыФормы.ОснованиеКорректировки.СписокВыбора.Добавить(Перечисления.ОснованияКорректировки.РаскредитацияПеревозчика);

ЭлементыФормы.ОснованиеКорректировки.СписокВыбора.Добавить(Перечисления.ОснованияКорректировки.ОтказПокупателя);





Запись и проведение документов в 7.7

Нужно обрабатывать ошибку, чтобы исключить проблемы, связанные с возможностью захвата таблицы в 7.7

докСторно = Сторно.Новый();
докСторно.НомерДок = СокрЛП(докКорректировка81.Номер);
докСторно.ДатаДок = докКорректировка81.Дата; докСторно.СторнируемыйДокумент = докОказаниеУслуг;
докСторно.Комментарий = "Сформирован из ИБ 8.1";

Попытка
докСторно.Записать();
докСторно.Провести();
Сообщить("Создан и проведен документ " + докСторно);
Исключение
Сообщить(Строка(докСторно)+ " " + ОписаниеОшибки());
КонецПопытки;

Как из 1С 7.7. подключиться по OLE к 1С 8.1

В 1С 7.7.

//Подключает ИБ

Процедура ПодключитьИБ()

Если НастройкиПодключенияКорректны() = 0 Тогда

возврат;

КонецЕсли; //






НовыйПодключенныйОбъект = СоздатьОбъект("V81.COMConnector"); v8 = НовыйПодключенныйОбъект.Connect("Srvr=" + Srvr + ";Ref=" + Ref + ";Usr=" + Usr + ";Pwd=" + Pwd + ";");



Если v8=0 Тогда

Сообщить("Ошибка открытия базы!", "!");

СтатусВозврата(0); Иначе

Сообщить("База удачно подключена");

КонецЕсли;

КонецПроцедуры

В 1С 8.1

Удобно работать через модуль внешнего соединения. В модуле внешнего соединения создаются процедуры и функции для "общения" с 8.1, а из 7.7. вызываются


Например:
(внешнее соединение 8.1)

//Возвращает выборку документов за период
//Используется при загрузке данных в 1С Бухгалтерию 7.7

Функция ВернутьВыборку(ИмяДокумента, ДатаНач, ДатаКон, ИНН_КПП, ОснованиеКорректировки = Неопределено) Экспорт

Запрос = Новый Запрос;

ТекстЗапроса = "ВЫБРАТЬ Организации.Ссылка Как Организация ИЗ Справочник.Организации КАК Организации ГДЕ Организации.ИНН_КПП = &ИНН_КПП" ; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ИНН_КПП", СокрЛП(ИНН_КПП)); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество()=0 Тогда Возврат Выборка;//возвращаем пустую выборку, так как не можем идентифицировать организацию КонецЕсли; Если Выборка.Следующий() Тогда мОрганизация = Выборка.Организация; КонецЕсли; Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ Док.Ссылка Как {ИмяДокумента} ИЗ Документ.{ИмяДокумента} КАК Док ГДЕ Док.Организация = &Организация И Док.Дата МЕЖДУ &Дата1 И &Дата2" + ?(ИмяДокумента = "Реализация"," И Док.Упр = Ложь","") + //отбираем документы Реализация, для которых не установлен реквизит Упр; ?(ИмяДокумента = "Корректировка",?(ЗначениеЗаполнено(ОснованиеКорректировки),"ОснованиеКорректировки = &ОснованиеКорректировки","")"");

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"{ИмяДокумента}",СокрЛП(ИмяДокумента));

Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаНач));

Запрос.УстановитьПараметр("Дата2", КонецДня (ДатаКон));

Запрос.УстановитьПараметр("Организация", мОрганизация); Выборка =

Запрос.Выполнить().Выбрать();

Возврат Выборка;

КонецФункции


В 7.7. обращаемся так:


//**********************************************
ПодготовитьДанныеДляСозданияДокОказаниеУслуг()

Выборка_81 = v8.ВернутьВыборку("Реализация", ДатаНач, ДатаКон,ИНН);

Пока Выборка_81.Следующий() = -1 Цикл

докРеализация_81 = Выборка_81.Реализация; //текущий документ Реализация

Сообщить("Смотрю реализацию:" + Строка(докРеализация_81.Номер) + "....Всего в выборке: " + Строка(Выборка_81.Количество()) + " реализаций" );

СоздатьДокОказаниеУслуг(докРеализация_81);

КонецЦикла;

КонецПроцедуры