Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  Определение 1-е 2 -е событие 1с 7.7
Змейкин
Отправлено: 22.09.13, 13:38


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Народ помогите есть 2 документа приходная накладная и расходный кассовый для приходной накладной я понял ее движения но для расходно кассового не пойму по чему он мою таблицу значений тбДолги не видит . и она пустая( вот пример
Процедура РассчитатьШапку()

тбДолги = СоздатьОбъект("ТаблицаЗначений");
тбДолги.НоваяКолонка("Фирма",,,,,,,);
тбДолги.НоваяКолонка("Контрагент",,,,,,,);
тбДолги.НоваяКолонка("Договор",,,,,,,);
тбДолги.НоваяКолонка("Счет",,,,,,,);
тбДолги.НоваяКолонка("ВидНДС",,,,,,);
тбДолги.НоваяКолонка("ДокументДолга",,,,,,,);
тбДолги.НоваяКолонка("СуммаОплаты",,,,,,,);
КонецПроцедуры

//*****************************************************
Процедура ДвиженияКредДокумент()
Перем тбДолги;
ВремРегистры = СоздатьОбъект("Регистры");

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

Рег.ВыгрузитьИтоги(тбДолги,1,1);

СуммаПогашения = СуммаОплаты;
СтавкаНДСПогашения = ВидНДС;

тбДолги.ВыбратьСтроку();
Если ДокументОснование.Выбран()=1 Тогда
  Счет = ДокументОснование;
Иначе
  Счет = ТекущийДокумент();
КонецЕсли;
глПогашениеДолга(Контекст, тбДолги, Фирма, Контрагент, Договор, ВидНДС, ДокументОснование, СуммаПогашения);

КонецПроцедуры
//и в глобальном ---------------------------------------------------------------------------------------------------------------------
   Процедура глПогашениеДолга(Конт, тбДолги, Фирма, Контрагент, Договор, ВидНДС, Счет, СуммаПогашения) Экспорт

ВидДок = Конт.Вид();

тбДолги.ВыбратьСтроки();
Пока тбДолги.ПолучитьСтроку()>0 Цикл

Если тбДолги.СуммаДолга<0 Тогда
Продолжить;
КонецЕсли;

Если СуммаПогашения=0 Тогда
Продолжить;
ИначеЕсли тбДолги.СуммаДолга<=СуммаПогашения Тогда
//полное погашение документа долга
тДокументДолга = тбДолги.ДокументДолга;
тСчет = тбДолги.Счет;
тСуммаПогашения = тбДолги.СуммаДолга;
глПогаситьДокументВзаиморасчетов(Конт,1, Фирма, Контрагент, Договор, ВидНДС, тСчет, тДокументДолга, тСуммаПогашения);
СуммаПогашения = СуммаПогашения - тСуммаПогашения;
ИначеЕсли тбДолги.СуммаДолга > СуммаПогашения Тогда
//частичное погашение
тДокументДолга = тбДолги.ДокументДолга;
тСчет = тбДолги.Счет;
тСуммаПогашения = СуммаПогашения;
глПогаситьДокументВзаиморасчетов(Конт,1, Фирма, Контрагент, Договор, ВидНДС, тСчет, тДокументДолга, тСуммаПогашения);
СуммаПогашения = 0;
КонецЕсли;
    Если тбДолги.СуммаОплаты < СуммаПогашения Тогда // Для расходного кассвого
   тДокументДолга = тбДолги.ДокументДолга;
   тСчет = тбДолги.Счет;
тСуммаПогашения = СуммаПогашения;
глПогаситьДокументВзаиморасчетов(Конт,-1, Фирма, Контрагент, Договор, ВидНДС, тСчет, тДокументДолга, тСуммаПогашения);

КонецЕсли;
КонецЦикла;
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #75052 · Ответов: 4 · Просмотров: 2721
 

>  Проверка сотрудников
Змейкин
Отправлено: 14.07.13, 16:17


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


мне ж сначало нужно сравнить если есть уже этот реквизит и он ли одинаковый с ИНН с таблицы?Это мне сделать ти п реквизита числовым и сравнивать?
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #71881 · Ответов: 5 · Просмотров: 3851
 

>  Проверка сотрудников
Змейкин
Отправлено: 13.07.13, 23:30


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


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

Возврат 1;
КонецФункции
//********************************************************************************
******************
Процедура Загрузить()                                                                  
Если ОткрытьБазу()=0 Тогда
     Возврат;
КонецЕсли;
    
ДБФ.КодоваяСтраница(1);
Сч=0;
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(НачМесяца(ДатаВПериоде));
СпрРод=СоздатьОбъект("Справочник.Сотрудники");
;
// Цикл по записям ДБФ базы
Пока ДБФ.ВКонце()=0 Цикл

  тРодитель = ПолучитьПустоеЗначение("Справочник.Сотрудники");
  ЭтоГруппа = ДБФ.Group;
  КодРодителя = ДБФ.CodeR;
  
  Если КодРодителя<>0 Тогда
   Если СпрРод.НайтиПоКоду(КодРодителя,0)=1 Тогда                  
    тРодитель = СпрРод.ТекущийЭлемент();
    СпрСотр.ИспользоватьРодителя(тРодитель);
   Иначе
    Сообщить("Не найден родитель с кодом "+ КодРодителя);
   КонецЕсли;
  Иначе
   СпрСотр.ИспользоватьРодителя(тРодитель);
  КонецЕсли;

   Если СпрСотр.НайтиПоКоду(СокрЛП(ДБФ.Code),0)=0 Тогда
    Если ЭтоГруппа = 1 Тогда
     СпрСотр.НоваяГруппа();
     СпрСотр.Новый();              
     Сообщить("пошла запись")
   Иначе
    СпрСотр.Новый();
   КонецЕсли;
        текИНН = СокрЛП(ДБФ.INN);
  СпрСотр.Код =СокрЛП(ДБФ.Code);
  СпрСотр.Наименование= СокрЛП(ДБФ.Name0);

  Если ЭтоГруппа = 0 Тогда
   СпрСотр.Имя      = СокрЛП(ДБФ.Imya);    //Имя
   СпрСотр.Фамилия  = СокрЛП(ДБФ.Famil);   //Фамилия
   СпрСотр.Отчество = СокрЛП(ДБФ.Otch);    //Отчество

   СпрСотр.Адрес = СокрЛП(ДБФ.Adres);   //Адрес
   СпрСотр.Телефон = СокрЛП(ДБФ.Pfone);    //Телефон
   Если ДБФ.Sex="М" Тогда
    СпрСотр.Пол=Перечисление.Пол.М;
   ИначеЕсли ДБФ.Sex="Ж" Тогда
    СпрСотр.Пол=Перечисление.Пол.Ж;
   КонецЕсли;
      СпрСотр.Должность = СокрЛП(ДБФ.Dol);   //Должность
    
      СпрСотр.ДатаПриема = СокрЛП(ДБФ.Dat1);           //Дата приема
   СпрСотр.Оклад = СокрЛП(ДБФ.Okl);//Оклад
   СпрСотр.Аванс =СокрЛП(ДБФ.Av); //аванс
      //Паспортные данные
      СпрСотр.ПаспортСерия = СокрЛП(ДБФ.Ser);     //Серия
   СпрСотр.ПаспортНомер = СокрЛП(ДБФ.Nom);     //Номер

   СпрСотр.ИНН=СокрЛП(ДБФ.INN);
  КонецЕсли;
       КонецЕсли;
  СпрСотр.Записать();
        Сч=Сч+1;
  Сообщить(Строка(Сч)+"Добавлен элемент справочника - "+ДБФ.Name0+" ИНН: "+текИНН);
  ДБФ.Следующая();
КонецЦикла;
ДБФ.ЗакрытьФайл();
СпрСотр="";
СпрСотрР="";
Сообщить("Загрузка справочника закончена.");
КонецПроцедуры
//********************************************************************************
*******************
Процедура Выбрать()
Если (ФС.ВыбратьФайл(0,ИмяФайла,Путь,"Выбор файла загрузки","DBF файлы|*.DBF")=0) Тогда
  Путь="";
  Возврат;
КонецЕсли;
КонецПроцедуры
Путь=КаталогИБ();
ДатаЗаписи='01.12.2006';
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #71867 · Ответов: 5 · Просмотров: 3851
 

>  Ошибка при загрузке справочника: Код не уникален
Змейкин
Отправлено: 13.07.13, 23:26


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Спасибо всем все уже получилось,да мне нужно было искать код и все заработало
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #71866 · Ответов: 4 · Просмотров: 4230
 

>  Ошибка при загрузке справочника: Код не уникален
Змейкин
Отправлено: 07.07.13, 15:24


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Привет всем народ Проблема не могу загрузить из выгруженной таблицы справочник сотрудников
"Пишет код не уникален" Поля совпадают между выгрузкой и загрузкой совпадают а все равно не загружает с файла

Пример с кода
 Перем Путь, ИмяФайла;
Перем ДБФ;
Функция ОткрытьБазу()
ДБФ = СоздатьОбъект("XBase");
Попытка
  ДБФ.ОткрытьФайл(Путь+ИмяФайла,,0);
Исключение
  Предупреждение("Ошибка отрытия файла " + Путь+ИмяФайла);
  Возврат 0;
КонецПопытки;
Если ДБФ.Открыта() = 0 Тогда
  Предупреждение("Ошибка отрытия файла " + Путь+ИмяФайла);
  Возврат 0;
КонецЕсли;

Возврат 1;
КонецФункции
Процедура Загрузить()
Если ОткрытьБазу()=0 Тогда
     Возврат;
КонецЕсли;
ДБФ.КодоваяСтраница(1);
Сч=0;
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(НачМесяца(ДатаВПериоде));
СпрРод=СоздатьОбъект("Справочник.Сотрудники");
// Цикл по записям ДБФ базы
Пока ДБФ.ВКонце()=0 Цикл

  тРодитель = ПолучитьПустоеЗначение("Справочник.Сотрудники");
  ЭтоГруппа = ДБФ.Group;
  КодРодителя = ДБФ.CodeR;

  Если КодРодителя<>0 Тогда
   Если СпрРод.НайтиПоКоду(КодРодителя,0)=1 Тогда
    тРодитель = СпрРод.ТекущийЭлемент();
    СпрСотр.ИспользоватьРодителя(тРодитель);
   Иначе
    Сообщить("Не найден родитель с кодом "+ КодРодителя);
   КонецЕсли;
  Иначе
   СпрСотр.ИспользоватьРодителя(тРодитель);
  КонецЕсли;
  Если ПустоеЗначение(СпрСотр)=0 Тогда
   СпрРод.Удалить();
   СпрСотр.Удалить();
  Иначе
   Если ЭтоГруппа = 1 Тогда
   СпрСотр.НоваяГруппа();
   СпрСотр.Новый();
  Иначе
   СпрСотр.Новый();
  КонецЕсли;

        текИНН = СокрЛП(ДБФ.INN);
  СпрСотр.Код =СокрЛП(ДБФ.Code);
  СпрСотр.Наименование= СокрЛП(ДБФ.Name0);

  Если ЭтоГруппа = 0 Тогда
   СпрСотр.Имя      = СокрЛП(ДБФ.Imya);    //Имя
   СпрСотр.Фамилия  = СокрЛП(ДБФ.Famil);   //Фамилия
   СпрСотр.Отчество = СокрЛП(ДБФ.Otch);    //Отчество

   СпрСотр.Адрес = СокрЛП(ДБФ.Adres);   //Адрес
   СпрСотр.Телефон = СокрЛП(ДБФ.Pfone);    //Телефон
   Если ДБФ.Sex="М" Тогда
    СпрСотр.Пол=Перечисление.Пол.М;
   ИначеЕсли ДБФ.Sex="Ж" Тогда
    СпрСотр.Пол=Перечисление.Пол.Ж;
   КонецЕсли;
      СпрСотр.Должность = СокрЛП(ДБФ.Dol);   //Должность
    
      СпрСотр.ДатаПриема = СокрЛП(ДБФ.Dat1);           //Дата приема
   СпрСотр.Оклад = СокрЛП(ДБФ.Okl);//Оклад
   СпрСотр.Аванс =СокрЛП(ДБФ.Av); //аванс
      //Паспортные данные
      СпрСотр.ПаспортСерия = СокрЛП(ДБФ.Ser);     //Серия
   СпрСотр.ПаспортНомер = СокрЛП(ДБФ.Nom);     //Номер

   СпрСотр.ИНН=СокрЛП(ДБФ.INN);
  КонецЕсли;
     КонецЕсли;
  СпрСотр.Записать();
        Сч=Сч+1;
  Сообщить(Строка(Сч)+"Добавлен элемент справочника - "+ДБФ.Name0+" ИНН: "+текИНН);
  ДБФ.Следующая();
КонецЦикла;
ДБФ.ЗакрытьФайл();
СпрСотр="";
СпрСотрР="";
Сообщить("Загрузка справочника закончена.");
КонецПроцедуры
Процедура Выбрать()
Если (ФС.ВыбратьФайл(0,ИмяФайла,Путь,"Выбор файла загрузки","DBF файлы|*.DBF")=0) Тогда
  Путь="";
  Возврат;
КонецЕсли;
КонецПроцедуры
Путь=КаталогИБ();
ДатаЗаписи='01.12.2006';



 ! 

Правила: 4, 5!
 
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #71480 · Ответов: 4 · Просмотров: 4230
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 25.06.13, 17:49


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Загвоздка была в выгрузке в этом куске кода не выбирались из за него элементы
 Пока СпрСотры.ПолучитьЭлемент() > 0 Цикл
        Если СпрСотры.ПометкаУдаления()=1 Тогда
            Продолжить;    
        КонецЕсли;
        
        Если ПустоеЗначение(СпрСотры.ДатаПриема)=1 Тогда
            Продолжить;    
        КонецЕсли;
        Если ПустоеЗначение(СпрСотры.ДатаУвольнения)=0 Тогда
            Если СпрСотры.ДатаУвольнения<'01.01.2007' Тогда
                Продолжить;    
            КонецЕсли;
        КонецЕсли;


Цитата(Домовик @ 24.06.13, 19:53) *
  СпрСотр.ИспользоватьРодителя(ПолучитьПустоеЗначение("Справочник.Сотрудники"));

это в загрузке чтобы в дальнейшем хотел сделать чтобы сотрудники записывались в том же порядке как я их выгрузил

Спасибо всем огромное)очень помогли разобраться!!!! icon_beer17.gif
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70991 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 23.06.13, 13:18


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Цитата(Pepe @ 22.06.13, 23:03) *
У вас неправильно организована выборка по справочнику. используется для записи периодических реквизитов. Поэтому непонятно задание для выборки.

Да я даже комментирую датувыборки(на форме Это поле отбора для периодических значений "Тип Дата") периодических элементов и действую. через ВыбратьЭлементы() ПолучитьЭлемент() но запись тоже не происходит колонки записываются а значения нет Не знаю вообще что думать(
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70888 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 22.06.13, 20:10


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943



В самом Справочнике Элементы есть но при просмотре в отладчике по полям пишет ошибка выражения
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70865 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 22.06.13, 17:09


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Цитата(Pepe @ 22.06.13, 13:52) *
Не записывает или записи пустые? Проверьте через КоличествоЗаписей(), КоличествоПолей() (в отладчике) факт занесения информации. Проверить можно через ПолучитьЗначениеПоля () информацию после записи. Можно использовать ф-цию АвтоСохранение(1) после создания базы (не надо использовать Записать()). Можно заменить на
ДБФ.УстановитьЗначениеПоля(Code,СпрСотры.Код)

Поля создаются а значения в них нет пустые столбцы
ДБФ.УстановитьЗначениеПоля(Code,СпрСотры.Код)
так не видит "code" сделал так
ДБФ.УстановитьЗначениеПоля("Code".СпрСотры.Код)
но тоже не помогло(((((( help.gif
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70861 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 22.06.13, 10:14


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


ДБФ=СоздатьОбъект("XBase");

// Определяем поля
ДБФ.ДобавитьПоле("Code","S", 10,);
    ДБФ.ДобавитьПоле("Name0","S",30,);
  ДБФ.Добавить();
  ДБФ.Code  = СпрСотры.Код;
  ДБФ.Name0  = СпрСотры.Наименование;
Цитата(Pepe @ 22.06.13, 10:06) *
Попробуйте не использовать в наименованиях полей системные наименования переменных или имен. Больше всего меня смущает ДБФ.Name.

вот добавил 0 в поле name все равно не записывает бред какойто 09000000.gif (
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70859 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 21.06.13, 18:30


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


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

 ДБФ=СоздатьОбъект("XBase");

// Определяем поля
ДБФ.ДобавитьПоле("Code","S", 10,);
    ДБФ.ДобавитьПоле("Name","S",30,);
  ДБФ.Добавить();
  ДБФ.Code  = СпрСотры.Код;
  ДБФ.Name  = СпрСотры.Наименование;
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70851 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 20.06.13, 18:19


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Загрузка справочника успешно завершена

думаю может в коде что то не так не записывает почемуто(


Столбцы добавляются но значениями справочника не записываются
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70796 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 20.06.13, 17:30


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


С именем и полями разобрался только всеравно ничего в файл не записываеться(
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70793 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 20.06.13, 13:23


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


Цитата(pablo @ 20.06.13, 13:48) *
И зачем открывать базу в начале 2 раза? Для пущего эффекта?

ой ничаянно


Цитата(Vofka @ 20.06.13, 13:51) *
Змейкин, а если Name убрать, все остальные поля считываются нормально?

нет тоже самое я вот выше обработку сделал и просто пытаюсь перезаписать Справочник в эту созданную таблицу но все равно не перезаписывет.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70779 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 20.06.13, 12:50


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


да сделал вот выгрузку(обработка ) которая создает дбф таблицу куда я буду загружать из обработки
вот:
но все равно не выгружается(
Перем Путь, ИмяФайла;

Процедура ВыбратьПутьИмя()
    
    Если ФС.ВыбратьФайл(1, ИмяФайла, Путь, "Укажите имя DBF-файла (Запасы.DBF)","Файлы ДБФ (*.dbf)","dbf") <> 1 Тогда
        Возврат
    КонецЕсли;
    
КонецПроцедуры    

//*******************************************
Процедура Выгрузить()
    
    Попытка                  
        Если ФС.СуществуетФайл(Путь+"\"+ИмяФайла) = 1 Тогда
            ФС.УдалитьФайл(Путь+"\"+ИмяФайла);                
        КонецЕсли;
    Исключение
        Сообщить("Невозможно перезаписать файл с предыдущей выгрузкой.","!!!");
        Возврат;
    КонецПопытки;

    ДБФ=СоздатьОбъект("XBase");
        
    // Определяем поля
    ДБФ.ДобавитьПоле("Code","S", 10,);
    ДБФ.ДобавитьПоле("Name","S",30,);

    ДБФ.ДобавитьПоле("Imya","S",20,);    //Имя
    ДБФ.ДобавитьПоле("Famil","S",25,);   //Фамилия
    ДБФ.ДобавитьПоле("Otch","S",20,);    //Отчество

    ДБФ.ДобавитьПоле("Adres","S",100,);   //Адрес
    ДБФ.ДобавитьПоле("Pfone","S",32,);   //Телефон
    ДБФ.ДобавитьПоле("Sex","S",1,);      //Пол
    ДБФ.ДобавитьПоле("Dol","S",25,);      //Должность

    ДБФ.ДобавитьПоле("Dat1","D",8,);    //Дата приема

    ДБФ.ДобавитьПоле("Okl","N",12,2);    //Оклад
    ДБФ.ДобавитьПоле("Av", "N",12,2);     //Аванс
    ДБФ.ДобавитьПоле("Ser","S",12,2);
    ДБФ.ДобавитьПоле("Nom","S",12,2);

    ДБФ.ДобавитьПоле("Inv", "N",1,0);     //Инвалид
    

    ДБФ.ДобавитьПоле("INN","S",10,);      

    Попытка
        ДБФ.СоздатьФайл(Путь+"\"+ИмяФайла);
    Исключение
        Предупреждение("Ошибка создания файла " + Путь+"\"+ИмяФайла);
        Возврат;
    КонецПопытки;
    Если ДБФ.Открыта() = 0 Тогда
        Предупреждение("Ошибка открытия файла " + Путь+"\"+ИмяФайла);
        Возврат;
    КонецЕсли;

    Сч=0;
    СпрСотры=СоздатьОбъект("Справочник.Сотрудники");
    //ДБФ.КодоваяСтраница(0);
    СпрСотры.ИспользоватьДату(ДатаВыборки);
    СпрСотры.ВыбратьЭлементы();
    Пока СпрСотры.ПолучитьЭлемент() > 0 Цикл
        Если СпрСотры.ПометкаУдаления()=1 Тогда
            Продолжить;    
        КонецЕсли;
        
        Если ПустоеЗначение(СпрСотры.ДатаПриема)=1 Тогда
            Продолжить;    
        КонецЕсли;
        Если ПустоеЗначение(СпрСотры.ДатаУвольнения)=0 Тогда
            Если СпрСотры.ДатаУвольнения<'01.01.2007' Тогда
                Продолжить;    
            КонецЕсли;
        КонецЕсли;
        
        ДБФ.Добавить();
        ДБФ.Code  = СпрСотры.Код;
        ДБФ.Name  = СпрСотры.Наименование;
        ДБФ.Famil = СпрСотры.Фамилия;         //Фамилия
        ДБФ.Imya  =    СпрСотры.Имя;         //Имя
        ДБФ.Otch  = СпрСотры.Отчество;         //Отчество
        
        ДБФ.Adres = СпрСотры.Адрес;                         //Адрес
        ДБФ.Pfone = СпрСотры.Телефон;                       //Телефон
        ДБФ.Sex   = СпрСотры.Пол.Идентификатор();                   //Пол
        //ДБФ.Podr  = СпрСотры.Подразделение.Наименование;          //Подразделение
        ДБФ.Dol   = СпрСотры.Должность;//Должность
        ДБФ.Inv  =     СпрСотры.фЭтоИнвалид;
    
        ДБФ.Dat1  = СпрСотры.ДатаПриема;                 //Дата приема
        //ДБФ.Tip   = Совмещ;                                      //Совместительство
        
        ДБФ.Okl   = СпрСотры.Оклад;                                       //Оклад
          ДБФ.Av    = СпрСотры.Аванс;
        //Паспортные данные
        ДБФ.Ser   = СпрСотры.ПаспортСерия;       //Серия
        ДБФ.Nom   = СпрСотры.ПаспортНомер;       //Номер

        ДБФ.INN   = СпрСотры.ИНН;              //Строка 10

        Попытка
            ДБФ.Записать();
            Сч=Сч+1;
            Сообщить("Добавлена запись №" + Строка(Сч));
        Исключение
            Предупреждение("Ошибка записи!");
            Возврат;
        КонецПопытки;
        
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
    Предупреждение("Выгрузка закончена!");
        
КонецПроцедуры

Процедура ПриОткрытии()
    
    Путь=КаталогИБ()+"\ExtForms";
    ИмяФайла="Сотрики.DBF";
    ДатаВыборки= '31.12.2006';
    
КонецПроцедуры

  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70777 · Ответов: 26 · Просмотров: 15459
 

>  x-base Выгрузка сотрудников в файл дбф
Змейкин
Отправлено: 20.06.13, 12:07


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 20.06.13
Пользователь №: 27943


привет всем помогите!! не могу понять почему пишет "Поле агрегатного объекта не обнаружено (Name) "Дбф я определил(
//*******************************************
Перем Путь, ИмяФайла;
Перем ДБФ;

Функция ОткрытьБазу()
    ДБФ = СоздатьОбъект("XBase");
    Попытка
        ДБФ.ОткрытьФайл(Путь+ИмяФайла,,0);
    Исключение
        Предупреждение("Ошибка отрытия файла " + Путь+ИмяФайла);
        Возврат 0;
    КонецПопытки;
    Если ДБФ.Открыта() = 0 Тогда
        Предупреждение("Ошибка отрытия файла " + Путь+ИмяФайла);
        Возврат 0;
    КонецЕсли;
    
    Возврат 1;
КонецФункции    

Процедура УстановитьДату(ТЭлемент)

    СпрСотр2=СоздатьОбъект("Справочник.Сотрудники");
        Если СпрСотр2.НайтиЭлемент(ТЭлемент)>0 Тогда
            СпрСотр2.ПризнакИзмененияДоходаДляИндексации.Установить(ДБФ.DatZ,1);
            Сообщить("Установлен признак изменения дохода.");
        Иначе
            Сообщить("Не найден элемент "+ТЭлемент);    
        КонецЕсли;

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

Процедура Загрузить()
    ОткрытьБазу();
    Если ОткрытьБазу()=0 Тогда
        Возврат;
    КонецЕсли;


    
ДБФ.КодоваяСтраница(0);
    Сч=0;
    СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
    СпрСотр.ИспользоватьДату(НачМесяца(ДатаВПериоде));
    // Цикл по записям ДБФ базы
    Пока ДБФ.ВКонце()=0 Цикл
      
        //текИНН = СокрЛП(ДБФ.INN);
        //текДатаУвольнения = ДБФ.Data2;
        
        СпрСотр.ИспользоватьРодителя(ПолучитьПустоеЗначение("Справочник.Сотрудники"));
      
        СпрСотр.Новый();
        СпрСотр.Код =СокрЛП(ДБФ.Code);
        СпрСотр.Наименование= СокрЛП(ДБФ.Name);
    
        СпрСотр.Имя      = СокрЛП(ДБФ.Imya);    //Имя
        СпрСотр.Фамилия  = СокрЛП(ДБФ.Famil);   //Фамилия
        СпрСотр.Отчество = СокрЛП(ДБФ.Otch);    //Отчество
    
        СпрСотр.Адрес = СокрЛП(ДБФ.Adres);   //Адрес
        СпрСотр.Телефон = СокрЛП(ДБФ.Pfone);    //Телефон
        Если ДБФ.Sex="М" Тогда
            СпрСотр.Пол=Перечисление.Пол.Мужской;
        ИначеЕсли ДБФ.Sex="Ж" Тогда
            СпрСотр.Пол=Перечисление.Пол.Женский;
        КонецЕсли;

        //СпрСотр.Фирма=НашаФирма;
        СпрСотр.Должность = СокрЛП(ДБФ.Dol);      //Должность
        
        СпрСотр.ДатаПриема = ДБФ.Data1;           //Дата приема
        Если ПустоеЗначение(ДБФ.Data2)=0 Тогда    //Дата увольнения
            СпрСотр.ДатаУвольнения = ДБФ.Data2;
        КонецЕсли;

        Если ДБФ.Tip=0 Тогда
            СпрСотр.ТипСотрудника = 1;           //Основной
        ИначеЕсли ДБФ.Tip=1 Тогда
            СпрСотр.ТипСотрудника = 0;           //Совместитель
        КонецЕсли;
    
        СпрСотр.Оклад = ДБФ.Okl;                 //Оклад
    
        СпрСотр.КвоЛьгот = ДБФ.KLgot;            //Кво льгот
    

        
        //Паспортные данные
        СпрСотр.ПаспортСерия = СокрЛП(ДБФ.Ser);     //Серия
        СпрСотр.ПаспортНомер = СокрЛП(ДБФ.Nom);     //Номер
        СпрСотр.ВыданДата = СокрЛП(ДБФ.DatPas);  //Дата выдачи
        СпрСотр.ВыданКем = СокрЛП(ДБФ.Vydan);     //Кем выдан

        СпрСотр.ИНН=СокрЛП(ДБФ.INN);

        СпрСотр.Записать();
        Сч=Сч+1;
        //Сообщить(Строка(Сч)+"Добавлен элемент справочника - "+ДБФ.Name+" ИНН: "+текИНН);

        УстановитьДату(СпрСотр.ТекущийЭлемент());
            
        ДБФ.Следующая();    
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
    СпрСотр="";
    СпрСотрР="";
    Сообщить("Загрузка справочника закончена.");

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

Процедура Выбрать()
    Если (ФС.ВыбратьФайл(0,ИмяФайла,Путь,"Выбор файла загрузки","DBF файлы|*.DBF")=0) Тогда
        Путь="";
        Возврат;    
    КонецЕсли;    
КонецПроцедуры

Путь=КаталогИБ();

ДатаЗаписи='01.12.2006';
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #70774 · Ответов: 26 · Просмотров: 15459
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 02.05.24, 16:26
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!