![]() |
![]() |
![]() |
|
Запись в файл DBF | ☑ | ||
---|---|---|---|---|
0
доброф
20.11.12
✎
09:34
|
Делаю выгрузку в файл DBF, изначально делал все под толстым клиентом и все работало на клиенте, теперь сказали переделать под тонкий клиент, перенес процедуру на сервер теперь вылетают ошибки. Сначала была ошибка при вызове метода ФайлНоменклатура.Добавить();
После изучения ошибки и некоторых преобразований, эта ошибка ушла но появилась другая: {Форма.Форма.Форма(105)}: Ошибка при вызове метода контекста (СоздатьФайл) ФайлНоменклатура.СоздатьФайл(ФайлДляВыгрузки); по причине: Не определена структура базы 1С 8.2, конфигурация самописная. &НаСервере Процедура Выгрузить2(); ИмяФайлаДляВыгрузки = "Adonent"+ТекущаяДата(); ФайлНоменклатура = Новый XBase; ФайлНоменклатура.Кодировка = КодировкаXBase.OEM; ФайлНоменклатура.поля.Добавить("Code", "S", 20); ФайлНоменклатура.поля.Добавить("AcnVDGO","S",20); ФайлНоменклатура.поля.Добавить("Name","S",60); ФайлНоменклатура.поля.Добавить("Subject","S",100); ФайлНоменклатура.поля.Добавить("CtyCode","S",20); ФайлНоменклатура.поля.Добавить("CtyType","S",20); ФайлНоменклатура.поля.Добавить("CtyName","S",60); ФайлНоменклатура.поля.Добавить("SrtCode","S",20); ФайлНоменклатура.поля.Добавить("SrtType","S",20); ФайлНоменклатура.поля.Добавить("SrtName","S",60); ФайлНоменклатура.поля.Добавить("House","S",20); ФайлНоменклатура.поля.Добавить("Corpus","S",20); ФайлНоменклатура.поля.Добавить("Hlat","S",20); ФайлНоменклатура.поля.Добавить("CutStart","D"); ФайлНоменклатура.поля.Добавить("CutReason","S",40); ФайлНоменклатура.поля.Добавить("CutMode","S",40); ФайлНоменклатура.поля.Добавить("CutFinish","D"); КороткоеИмяФайлаДляВыгрузки = Лев(ИмяФайлаДляВыгрузки,8) + ".dbf"; ФайлДляВыгрузки = "D:" + "\" + КороткоеИмяФайлаДляВыгрузки; ФайлНоменклатура.СоздатьФайл(ФайлДляВыгрузки); ФайлНоменклатура.Записать(); ФайлНоменклатура.ОткрытьФайл(ФайлДляВыгрузки); Если Не ФайлНоменклатура.Открыта() Тогда ФайлНоменклатура.СоздатьФайл(ФайлДляВыгрузки); КонецЕсли; ФайлНоменклатура.АвтоСохранение = Истина; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ |КонтактнаяИнформация.Объект.Код КАК КодАбонента, |"" "" КАК ЛицевойСчетВДГО, |КонтактнаяИнформация.Объект.Наименование КАК ФИОАбонента, |КонтактнаяИнформация.Объект.Подразделения.Наименование КАК АбонентскийПункт, |ВЫРАЗИТЬ(КонтактнаяИнформация.КодПоКЛАДР / 10000000000000 КАК ЧИСЛО(12, 0)) КАК КодНаселенногоПункта, |ВЫБОР |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%г.%"" | ТОГДА КонтактнаяИнформация.Город.Сокращение |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%п.%"" | ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%с.%"" | ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%х.%"" | ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение |КОНЕЦ КАК ТипНасенногоПункта, |ВЫБОР | КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%г.%"" | ТОГДА КонтактнаяИнформация.Город.Наименование | ИНАЧЕ КонтактнаяИнформация.НаселенныйПункт.Наименование |КОНЕЦ КАК НаименованиеНаселенногоПункта, |КонтактнаяИнформация.КодПоКЛАДР / 100000000 КАК КодУлицыПоКладр, |КонтактнаяИнформация.Улица.Сокращение КАК ТипУлицы, |КонтактнаяИнформация.Улица.Наименование КАК НаименованиеУлицы, |КонтактнаяИнформация.Дом КАК Дом, |КонтактнаяИнформация.Корпус КАК Корпус, |КонтактнаяИнформация.Квартира КАК Квартира, |ДатаОтключения.Период КАК ДатаОтключения, |СпособОтключения.ПричинаОтключенияНаименование КАК ПричинаОтключения, |СпособОтключения.Поле1 КАК СпособОтключения, |ДатаПодключения.Период КАК ДатаПодключения |ИЗ |РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СостояниеПодключениеАбонентаСрезПоследних.СостояниеПодключения КАК СостояниеПодключения, | СостояниеПодключениеАбонентаСрезПоследних.Период КАК Период, | СостояниеПодключениеАбонентаСрезПоследних.Абонент.Ссылка КАК АбонентСсылка | ИЗ | РегистрСведений.СостояниеПодключениеАбонента.СрезПоследних КАК СостояниеПодключениеАбонентаСрезПоследних | ГДЕ | СостояниеПодключениеАбонентаСрезПоследних.СостояниеПодключения = ЗНАЧЕНИЕ(Перечисление.СостоянияПодключенияАбонента.Отключен)) КАК ДатаОтключения | ПО КонтактнаяИнформация.Объект.Ссылка = ДатаОтключения.АбонентСсылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СостояниеПодключениеАбонента.Период КАК Период, | СостояниеПодключениеАбонента.Абонент.Ссылка КАК АбонентСсылка, | СостояниеПодключениеАбонента.СостояниеПодключения КАК СостояниеПодключения | ИЗ | РегистрСведений.СостояниеПодключениеАбонента КАК СостояниеПодключениеАбонента | ГДЕ | СостояниеПодключениеАбонента.СостояниеПодключения = ЗНАЧЕНИЕ(Перечисление.СостоянияПодключенияАбонента.Подключен)) КАК ДатаПодключения | ПО КонтактнаяИнформация.Объект.Ссылка = ДатаПодключения.АбонентСсылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВЫБОР | КОГДА ВзаиморасчетыВДГО.УслугаНаселению.Наименование ПОДОБНО ""%сварка%"" | ТОГДА ""Сварка"" | КОГДА ВзаиморасчетыВДГО.УслугаНаселению.Наименование ПОДОБНО ""%Заглушка%"" | ТОГДА ""Загулшка"" | КОГДА ВзаиморасчетыВДГО.УслугаНаселению.Наименование ПОДОБНО ""%УЗУ%"" | ТОГДА ""Установка УЗУ/УБК"" | ИНАЧЕ ""Прочее"" | КОНЕЦ КАК Поле1, | ВзаиморасчетыВДГО.Абонент.Ссылка КАК АбонентСсылка, | ВложенныйЗапрос.ПричинаОтключенияНаименование КАК ПричинаОтключенияНаименование | ИЗ | РегистрНакопления.ВзаиморасчетыВДГО КАК ВзаиморасчетыВДГО | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеПодключениеАбонента.СрезПоследних КАК СостояниеПодключениеАбонентаСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ИзменениеСостоянияПодключенияАбонента.Абонент.Ссылка КАК АбонентСсылка, | ИзменениеСостоянияПодключенияАбонента.ПричинаОтключения.Наименование КАК ПричинаОтключенияНаименование | ИЗ | Документ.ИзменениеСостоянияПодключенияАбонента КАК ИзменениеСостоянияПодключенияАбонента | ГДЕ | ИзменениеСостоянияПодключенияАбонента.ПричинаОтключения.Наименование ЕСТЬ НЕ NULL ) КАК ВложенныйЗапрос | ПО СостояниеПодключениеАбонентаСрезПоследних.Абонент.Ссылка = ВложенныйЗапрос.АбонентСсылка.Ссылка | ПО ВзаиморасчетыВДГО.Абонент.Ссылка = СостояниеПодключениеАбонентаСрезПоследних.Абонент.Ссылка) КАК СпособОтключения | ПО КонтактнаяИнформация.Объект.Ссылка = СпособОтключения.АбонентСсылка.Ссылка |ГДЕ |КонтактнаяИнформация.ТипКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) | и КонтактнаяИнформация.Объект.ДатаЗакрытия ЕСТЬ НЕ NULL"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий()Цикл ФайлНоменклатура.Code = Выборка.КодАбонента; ФайлНоменклатура.AcnVDGO = Выборка.ЛицевойСчетВДГО; ФайлНоменклатура.Name = Выборка.ФИОАбонента; ФайлНоменклатура.Subject = Выборка.АбонентскийПункт; ФайлНоменклатура.CtyCode = СТРОКА(Выборка.КодНаселенногоПункта); ФайлНоменклатура.CtyType = Выборка.ТипНасенногоПункта; ФайлНоменклатура.CtyName = Выборка.НаименованиеНаселенногоПункта; ФайлНоменклатура.SrtType = СТРОКА(Выборка.КодУлицыПоКладр); ФайлНоменклатура.SrtCode = Выборка.ТипУлицы; ФайлНоменклатура.SrtName = Выборка.НаименованиеУлицы; ФайлНоменклатура.House = Выборка.Дом; ФайлНоменклатура.Corpus = Выборка.Корпус; ФайлНоменклатура.Hlat = Выборка.Квартира; ФайлНоменклатура.CutStart = Выборка.ДатаОтключения; ФайлНоменклатура.CutReason = Выборка.ПричинаОтключения; ФайлНоменклатура.CutMode = Выборка.СпособОтключения; ФайлНоменклатура.CutFinish = Выборка.ДатаПодключения; ФайлНоменклатура.Добавить(); ФайлНоменклатура.Записать(); КонецЦикла; ФайлНоменклатура.ЗакрытьФайл(); КонецПроцедуры |
|||
1
Ёпрст
гуру
20.11.12
✎
09:36
|
ФайлНоменклатура.Добавить();
надо раньше |
|||
2
zulu_mix
20.11.12
✎
09:36
|
зачем такой изврат? компонуй на сервере ТЗ с полями примитивного типа, после пиши эту ТЗ в ДБФ
|
|||
3
Волесвет
20.11.12
✎
09:37
|
под тонким на диск д посылать? а он точно знает где этот д??
|
|||
4
vmv
20.11.12
✎
09:37
|
ну что тебе сказать?
изучай контекст исполнения кажого метода дроби аглогитм на клинет и сервер - все а копаться в тонкостях твоих идей зачем? |
|||
5
vmv
20.11.12
✎
09:38
|
ФайлДляВыгрузки = "D:" + "\" + КороткоеИмяФайлаДляВыгрузки;
это будет путь на сервере, учти |
|||
6
zulu_mix
20.11.12
✎
09:41
|
+(2) передавай ТЗ с сервера на клиент и пиши дбф на клиенте
|
|||
7
доброф
20.11.12
✎
14:18
|
Сообщить выбока?
|
|||
8
доброф
20.11.12
✎
14:18
|
Ой выборка)
|
|||
9
доброф
20.11.12
✎
14:20
|
Возврат все же наверно
|
|||
10
доброф
20.11.12
✎
14:29
|
&НаКлиенте
Процедура Выгрузить1(Команда) Выгрузить2(); ИмяФайлаДляВыгрузки = "Adonent"+ТекущаяДата(); ФайлНоменклатура = Новый XBase; ФайлНоменклатура.Кодировка = КодировкаXBase.OEM; ФайлНоменклатура.поля.Добавить("Code", "S", 20); ФайлНоменклатура.поля.Добавить("AcnVDGO","S",20); ФайлНоменклатура.поля.Добавить("Name","S",60); ФайлНоменклатура.поля.Добавить("Subject","S",100); ФайлНоменклатура.поля.Добавить("CtyCode","S",20); ФайлНоменклатура.поля.Добавить("CtyType","S",20); ФайлНоменклатура.поля.Добавить("CtyName","S",60); ФайлНоменклатура.поля.Добавить("SrtCode","S",20); ФайлНоменклатура.поля.Добавить("SrtType","S",20); ФайлНоменклатура.поля.Добавить("SrtName","S",60); ФайлНоменклатура.поля.Добавить("House","S",20); ФайлНоменклатура.поля.Добавить("Corpus","S",20); ФайлНоменклатура.поля.Добавить("Hlat","S",20); ФайлНоменклатура.поля.Добавить("CutStart","D"); ФайлНоменклатура.поля.Добавить("CutReason","S",40); ФайлНоменклатура.поля.Добавить("CutMode","S",40); ФайлНоменклатура.поля.Добавить("CutFinish","D"); КороткоеИмяФайлаДляВыгрузки = Лев(ИмяФайлаДляВыгрузки,8) + ".dbf"; ФайлДляВыгрузки = "D:" + "\" + КороткоеИмяФайлаДляВыгрузки; ФайлНоменклатура.СоздатьФайл(ФайлДляВыгрузки); ФайлНоменклатура.АвтоСохранение = Истина; Выборка = Выгрузить2(); Пока Выборка.Следующий()Цикл ФайлНоменклатура.Добавить(); ФайлНоменклатура.Code = Выборка.КодАбонента; ФайлНоменклатура.AcnVDGO = Выборка.ЛицевойСчетВДГО; ФайлНоменклатура.Name = Выборка.ФИОАбонента; ФайлНоменклатура.Subject = Выборка.АбонентскийПункт; ФайлНоменклатура.CtyCode = СТРОКА(Выборка.КодНаселенногоПункта); ФайлНоменклатура.CtyType = Выборка.ТипНасенногоПункта; ФайлНоменклатура.CtyName = Выборка.НаименованиеНаселенногоПункта; ФайлНоменклатура.SrtType = СТРОКА(Выборка.КодУлицыПоКладр); ФайлНоменклатура.SrtCode = Выборка.ТипУлицы; ФайлНоменклатура.SrtName = Выборка.НаименованиеУлицы; ФайлНоменклатура.House = Выборка.Дом; ФайлНоменклатура.Corpus = Выборка.Корпус; ФайлНоменклатура.Hlat = Выборка.Квартира; ФайлНоменклатура.CutStart = Выборка.ДатаОтключения; ФайлНоменклатура.CutReason = Выборка.ПричинаОтключения; ФайлНоменклатура.CutMode = Выборка.СпособОтключения; ФайлНоменклатура.CutFinish = Выборка.ДатаПодключения; ФайлНоменклатура.Записать(); КонецЦикла; ФайлНоменклатура.ЗакрытьФайл(); КонецПроцедуры &НаСервере функция Выгрузить2(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ |КонтактнаяИнформация.Объект.Код КАК КодАбонента, |"" "" КАК ЛицевойСчетВДГО, |КонтактнаяИнформация.Объект.Наименование КАК ФИОАбонента, |КонтактнаяИнформация.Объект.Подразделения.Наименование КАК АбонентскийПункт, |ВЫРАЗИТЬ(КонтактнаяИнформация.КодПоКЛАДР / 10000000000000 КАК ЧИСЛО(12, 0)) КАК КодНаселенногоПункта, |ВЫБОР |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%г.%"" | ТОГДА КонтактнаяИнформация.Город.Сокращение |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%п.%"" | ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%с.%"" | ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение |КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%х.%"" | ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение |КОНЕЦ КАК ТипНасенногоПункта, |ВЫБОР | КОГДА КонтактнаяИнформация.Представление ПОДОБНО ""%г.%"" | ТОГДА КонтактнаяИнформация.Город.Наименование | ИНАЧЕ КонтактнаяИнформация.НаселенныйПункт.Наименование |КОНЕЦ КАК НаименованиеНаселенногоПункта, |КонтактнаяИнформация.КодПоКЛАДР / 100000000 КАК КодУлицыПоКладр, |КонтактнаяИнформация.Улица.Сокращение КАК ТипУлицы, |КонтактнаяИнформация.Улица.Наименование КАК НаименованиеУлицы, |КонтактнаяИнформация.Дом КАК Дом, |КонтактнаяИнформация.Корпус КАК Корпус, |КонтактнаяИнформация.Квартира КАК Квартира, |ДатаОтключения.Период КАК ДатаОтключения, |СпособОтключения.ПричинаОтключенияНаименование КАК ПричинаОтключения, |СпособОтключения.Поле1 КАК СпособОтключения, |ДатаПодключения.Период КАК ДатаПодключения |ИЗ |РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СостояниеПодключениеАбонентаСрезПоследних.СостояниеПодключения КАК СостояниеПодключения, | СостояниеПодключениеАбонентаСрезПоследних.Период КАК Период, | СостояниеПодключениеАбонентаСрезПоследних.Абонент.Ссылка КАК АбонентСсылка | ИЗ | РегистрСведений.СостояниеПодключениеАбонента.СрезПоследних КАК СостояниеПодключениеАбонентаСрезПоследних | ГДЕ | СостояниеПодключениеАбонентаСрезПоследних.СостояниеПодключения = ЗНАЧЕНИЕ(Перечисление.СостоянияПодключенияАбонента.Отключен)) КАК ДатаОтключения | ПО КонтактнаяИнформация.Объект.Ссылка = ДатаОтключения.АбонентСсылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СостояниеПодключениеАбонента.Период КАК Период, | СостояниеПодключениеАбонента.Абонент.Ссылка КАК АбонентСсылка, | СостояниеПодключениеАбонента.СостояниеПодключения КАК СостояниеПодключения | ИЗ | РегистрСведений.СостояниеПодключениеАбонента КАК СостояниеПодключениеАбонента | ГДЕ | СостояниеПодключениеАбонента.СостояниеПодключения = ЗНАЧЕНИЕ(Перечисление.СостоянияПодключенияАбонента.Подключен)) КАК ДатаПодключения | ПО КонтактнаяИнформация.Объект.Ссылка = ДатаПодключения.АбонентСсылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВЫБОР | КОГДА ВзаиморасчетыВДГО.УслугаНаселению.Наименование ПОДОБНО ""%сварка%"" | ТОГДА ""Сварка"" | КОГДА ВзаиморасчетыВДГО.УслугаНаселению.Наименование ПОДОБНО ""%Заглушка%"" | ТОГДА ""Загулшка"" | КОГДА ВзаиморасчетыВДГО.УслугаНаселению.Наименование ПОДОБНО ""%УЗУ%"" | ТОГДА ""Установка УЗУ/УБК"" | ИНАЧЕ ""Прочее"" | КОНЕЦ КАК Поле1, | ВзаиморасчетыВДГО.Абонент.Ссылка КАК АбонентСсылка, | ВложенныйЗапрос.ПричинаОтключенияНаименование КАК ПричинаОтключенияНаименование | ИЗ | РегистрНакопления.ВзаиморасчетыВДГО КАК ВзаиморасчетыВДГО | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеПодключениеАбонента.СрезПоследних КАК СостояниеПодключениеАбонентаСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ИзменениеСостоянияПодключенияАбонента.Абонент.Ссылка КАК АбонентСсылка, | ИзменениеСостоянияПодключенияАбонента.ПричинаОтключения.Наименование КАК ПричинаОтключенияНаименование | ИЗ | Документ.ИзменениеСостоянияПодключенияАбонента КАК ИзменениеСостоянияПодключенияАбонента | ГДЕ | ИзменениеСостоянияПодключенияАбонента.ПричинаОтключения.Наименование ЕСТЬ НЕ NULL ) КАК ВложенныйЗапрос | ПО СостояниеПодключениеАбонентаСрезПоследних.Абонент.Ссылка = ВложенныйЗапрос.АбонентСсылка.Ссылка | ПО ВзаиморасчетыВДГО.Абонент.Ссылка = СостояниеПодключениеАбонентаСрезПоследних.Абонент.Ссылка) КАК СпособОтключения | ПО КонтактнаяИнформация.Объект.Ссылка = СпособОтключения.АбонентСсылка.Ссылка |ГДЕ |КонтактнаяИнформация.ТипКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) | и КонтактнаяИнформация.Объект.ДатаЗакрытия ЕСТЬ НЕ NULL"; Выборка = Запрос.Выполнить().Выбрать(); Конецфункции Сделал так, выдает ошибку: Значение не является значением объектного типа (Следующий) Пока Выборка.Следующий()Цикл |
|||
11
доброф
20.11.12
✎
14:31
|
К сожалению не знаю что такое "передать ТЗ с сервера на клиент" если можно обьясните
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |