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

Выгрузка договоров контрагентов в 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

Поиск