Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 21:38

Выгрузка договоров контрагентов в DBF

Автор slimuz, 02 июн 2015, 09:34

0 Пользователей и 1 гость просматривают эту тему.

slimuz

Здравствуйте.
Поставлена задача написать по выгрузке договоров и приложений договоров контрагентов в DBF, не хватает отдельного поля связующего приложения к договорам. Отдельное поле с "родителем" приложений не подходит. Бухгалтерия 3.0 КОРП. Я новичок в этом деле, подскажите как можно решить эту задачу ?

Процедура ВыполнитьЗапросНаСервереНаСервере()
Сообщить("Начало");
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.OEM;

ДБФ.поля.Добавить("ID", "S", 20);
ДБФ.поля.Добавить("DOC_NUM", "S", 20);
ДБФ.поля.Добавить("NAME", "S", 70);
ДБФ.поля.Добавить("RODITEL", "S", 70);
ДБФ.поля.Добавить("DATE", "S", 40);
ДБФ.поля.Добавить("TYPE", "S", 50);
ДБФ.поля.Добавить("VALIDITY", "S", 40);
ДБФ.поля.Добавить("PAY_PERIOD", "S", 20);
ДБФ.поля.Добавить("VAL", "S", 10);
ДБФ.поля.Добавить("PRICE_TYPE", "S", 30);
ДБФ.поля.Добавить("COMPANY", "S", 40);
ДБФ.поля.Добавить("COMPAN_RUK", "S", 50);
ДБФ.поля.Добавить("COM_R_DOL", "S", 30);
ДБФ.поля.Добавить("KONTRAGENT", "S", 130);
ДБФ.поля.Добавить("FULL_KONTR", "S", 135);
ДБФ.поля.Добавить("KONTR_RUK", "S", 50);
ДБФ.поля.Добавить("KONT_R_DOL", "S", 30);
ДБФ.поля.Добавить("KOMMENT", "S", 100);

ДБФ.СоздатьФайл(ПутьКФайлу);
                                                 
    Запрос = Новый Запрос;           
Запрос.Текст = "ВЫБРАТЬ
| Договоры.Код,
| Договоры.Номер,
| Договоры.Наименование,
| Договоры.Родитель,
| Договоры.Дата,
| Договоры.ВидДоговора,
| Договоры.СрокДействия,
| Договоры.СрокОплаты,
| Договоры.ВалютаВзаиморасчетов,
| Договоры.ТипЦен,
| Договоры.Организация,
| Договоры.Руководитель,
| Договоры.ДолжностьРуководителя,
| Договоры.Владелец,
| Контрагенты.НаименованиеПолное,
| Договоры.РуководительКонтрагента,
| Договоры.ДолжностьРуководителяКонтрагента,
| Договоры.Комментарий
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК Договоры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО Договоры.Владелец=Контрагенты.Ссылка";

Выборка = Запрос.Выполнить().Выгрузить();
                                                                     
Для Каждого СтрокаВыборки Из Выборка Цикл
ДБФ.Добавить();
ДБФ.ID = СтрокаВыборки.Код;
ДБФ.DOC_NUM = СтрокаВыборки.Номер;
ДБФ.NAME = СтрокаВыборки.Наименование;
ДБФ.RODITEL = СтрокаВыборки.Родитель;
ЕСЛИ СтрокаВыборки.Дата='00010101' Тогда
СтрокаВыборки.Дата=null;
КонецЕсли;
ДБФ.DATE = СтрокаВыборки.Дата;
ДБФ.TYPE = СтрокаВыборки.ВидДоговора;
ЕСЛИ СтрокаВыборки.СрокДействия='00010101' Тогда
СтрокаВыборки.СрокДействия=null;
КонецЕсли;
ДБФ.VALIDITY = СтрокаВыборки.СрокДействия;
ЕСЛИ СтрокаВыборки.СрокОплаты=0 Тогда
СтрокаВыборки.СрокОплаты=null;
КонецЕсли;
ДБФ.PAY_PERIOD = СтрокаВыборки.СрокОплаты;
ДБФ.VAL = СтрокаВыборки.ВалютаВзаиморасчетов;
ДБФ.PRICE_TYPE = СтрокаВыборки.ТипЦен;
ДБФ.COMPANY = СтрокаВыборки.Организация;
ДБФ.COMPAN_RUK = СтрокаВыборки.Руководитель;
ДБФ.COM_R_DOL = СтрокаВыборки.ДолжностьРуководителя;
ДБФ.KONTRAGENT = СтрокаВыборки.Владелец;
ДБФ.FULL_KONTR = СтрокаВыборки.НаименованиеПолное;
ДБФ.KONTR_RUK = СтрокаВыборки.РуководительКонтрагента;
ДБФ.KONTR_RUK = СтрокаВыборки.ДолжностьРуководителяКонтрагента;
ДБФ.KOMMENT = СтрокаВыборки.Комментарий;
ДБФ.Записать();

КонецЦикла;

Если ДБФ.Открыта() Тогда
ДБФ.ЗакрытьФайл();
КонецЕсли;

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

vitasw

А как связываются приложения и договора? Думаю, что или через владельца или в приложениях есть реквизит, указывающий на договор.

cska-fanat-kz

1. просто параллельно: зачем в запросе нужен справочник Контрагенты если НаименованиеПолное прекрасно можно получить из Владельца?
2. Приложение к договору - это доп.соглашение? которое также является элементом справочника Договоры?
3. Ну основной вопрос как эта связь реализована на стороне ДБФ?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Цитата: cska-fanat-kz от 02 июн 2015, 09:45просто параллельно: зачем в запросе нужен справочник Контрагенты если НаименованиеПолное прекрасно можно получить из Владельца?

Ну, я б сказал, что идеалогически запрос написан правильно, как по учебнику. Но согласен, что в контексте данной задачи пересечением можно пренебречь и и доставать наименование из владельца

slimuz

Цитата: cska-fanat-kz от 02 июн 2015, 09:45
1. просто параллельно: зачем в запросе нужен справочник Контрагенты если НаименованиеПолное прекрасно можно получить из Владельца?
2. Приложение к договору - это доп.соглашение? которое также является элементом справочника Договоры?
3. Ну основной вопрос как эта связь реализована на стороне ДБФ?

1. Контрагенты, нужны для связи с другим ДБФ.
2. В общем то приложение к договору создаётся как отдельный договор (просто пишется Прил. №... к дог. № ...), единственное что указывается это в какую группу он входит (Папка).
3. Пока ни как.

vitasw

Сурово. Без нового реквизита построить нормальную связь практически нереально.

cska-fanat-kz

Цитата: slimuz от 02 июн 2015, 10:101. Контрагенты, нужны для связи с другим ДБФ.

да на здоровье.
просто чем вот это
    |    Договоры.Владелец,
    |    Контрагенты.НаименованиеПолное,

отличается от
    |    Договоры.Владелец,
    |    Договоры.Владелец.НаименованиеПолное,

??
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Цитата: slimuz от 02 июн 2015, 10:10В общем то приложение к договору создаётся как отдельный договор (просто пишется Прил. №... к дог. № ...), единственное что указывается это в какую группу он входит (Папка)

у нас в бюджетке например мы сделали у договора реквизит ОсновнойДоговор и соответственно у допсоглашения он заполняется...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Цитата: cska-fanat-kz от 02 июн 2015, 10:40просто чем вот это
    |    Договоры.Владелец,
    |    Контрагенты.НаименованиеПолное,
Явное левое соединение. Платформа построить запрос только к одному реквизиту.
Цитата: cska-fanat-kz от 02 июн 2015, 10:40отличается от
    |    Договоры.Владелец,
    |    Договоры.Владелец.НаименованиеПолное,
Неявное левое соединение.Платформа построит запрос с наличием всех реквизитов каждого контрагента в запросе на каждую запись.
Для разовых, редковыполняющихся запросов - можно не заморачиваться.
При сложных объемных часто выполняющихся запросах различия во времени выполнения становится более заметным.

cska-fanat-kz

Цитата: vitasw от 02 июн 2015, 12:39
Цитата: cska-fanat-kz от 02 июн 2015, 10:40просто чем вот это
    |    Договоры.Владелец,
    |    Контрагенты.НаименованиеПолное,
Явное левое соединение. Платформа построить запрос только к одному реквизиту.
Цитата: cska-fanat-kz от 02 июн 2015, 10:40отличается от
    |    Договоры.Владелец,
    |    Договоры.Владелец.НаименованиеПолное,
Неявное левое соединение.Платформа построит запрос с наличием всех реквизитов каждого контрагента в запросе на каждую запись.
Для разовых, редковыполняющихся запросов - можно не заморачиваться.
При сложных объемных часто выполняющихся запросах различия во времени выполнения становится более заметным.


В общем и целом согласен, но в качестве "ответного бурчания"...
http://www.forum.mista.ru/topic.php?id=615947
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск