7.7 проблема при загрузке данных из dbf в Бух. справку

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Katu_cha, 26 апр 2010.

  1. TopicStarter Overlay
    Katu_cha
    Offline

    Katu_cha

    Регистрация:
    30 дек 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Вот такая проблема возникла у меня при загрузке данных из dbf-ки в док. "Бухгалтерская справка":загружаются проводки и сумма,субконто загружаются по кодам, соответствующим элементам определенных справочников.Элементы из всех справочников определяются и заполняются нормально,кроме одного: Справочник.ФизЛица..Код из dbf-ки 100% соответсвует коду из справочника.Не могу понять где ошибка.код программы:

    Код:
    Перем База; 
    ////******************************************* 
    
    Процедура ПриОткрытии()
    База= СоздатьОбъект("XBase");
    База.ОткрытьФайл("D:\ВыгрузкаБаз\ERT\Svod.dbf");
    База.КодоваяСтраница(0);
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конецпроцедуры')">КонецПроцедуры	</span>
    
    Процедура Сформировать() 
    ЮрЛицо1=СоздатьОбъект("Справочник.СвоиЮрЛица");
    ЮрЛицо1.НайтиПоКоду("00001"); 
    Спр_СтатьиИздержекОбращения = СоздатьОбъект("Справочник.СтатьиИздержекОбращения");
    Спр_СтатьиОбщехозЗатрат = СоздатьОбъект("Справочник.СтатьиОбщехозяйственныхЗатрат"); 
    Спр_ПрочиеДоходыИРасходы = СоздатьОбъект("Справочник.ПрочиеДоходыИРасходы");
    Спр_Подразделения = СоздатьОбъект("Справочник.Подразделения");
    Спр_ФизЛица = СоздатьОбъект("Справочник.ФизЛица");
    Спр_СвоиЮрЛица=СоздатьОбъект("Справочник.СвоиЮрЛица"); 
    Спр_РасходыБудущихПериодов=СоздатьОбъект("Справочник.РасходыБудущихПериодов");
    
    
    База.Первая(); 
    Пока База.ВКонце() = 0 Цикл   
    ДокСправка = СоздатьОбъект("Документ.БухгалтерскаяСправка");
    ДокСправка.Новый();
    ДокСправка.ЮрЛицо=ЮрЛицо1.ТекущийЭлемент(); 
    к=1; Кол=База.КоличествоЗаписей();
    Для к=1 по Кол Цикл
    ДокСправка.НоваяСтрока();
    СчетДт=СокрЛП(База.ПолучитьЗначениеПоля("SchetDt"));
    СубконтоДт1=СокрЛП(База.ПолучитьЗначениеПоля("Subkonto1d"));  
    СубконтоДт2=СокрЛП(База.ПолучитьЗначениеПоля("Subkonto2d"));
    СчетКт=СокрЛП(База.ПолучитьЗначениеПоля("SchetKt")); 
    СубконтоКт1=СокрЛП(База.ПолучитьЗначениеПоля("Subkonto1k"));
    СубконтоКт2=СокрЛП(База.ПолучитьЗначениеПоля("Subkonto2k"));
    Сумма=СокрЛП(База.ПолучитьЗначениеПоля("Summa"));  
    
    ДокСправка.СчетДт=СчетПоКоду(СчетДт,ПланыСчетов.Основной);                                              ДокСправка.СчетКт=СчетПоКоду(СчетКт,ПланыСчетов.Основной);
    
    Для НомерСубконто = 1 по 3 Цикл 
    ВидСубконто = ДокСправка.СчетДт.ВидСубконто(НомерСубконто);
    ДокСправка.НазначитьТип("СубконтоДт"+сокрЛП(НомерСубконто), СокрЛП(ВидСубконто.ТипСубконто()));
    Если НомерСубконто = 1 Тогда
    Если СокрЛП(ВидСубконто.Идентификатор())="СтатьиОбщехозяйственныхЗатрат" Тогда 
    Спр_СтатьиОбщехозЗатрат.НайтиПоКоду(СубконтоДт1);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_СтатьиОбщехозЗатрат.ТекущийЭлемент());
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор())="СтатьиИздержекОбращения" Тогда
    Спр_СтатьиИздержекОбращения.НайтиПоКоду(СубконтоДт1);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_СтатьиИздержекОбращения.ТекущийЭлемент()); 
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор())="Подразделения" Тогда
    Спр_Подразделения.НайтиПоКоду(СубконтоДт1); 
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_Подразделения.ТекущийЭлемент()); 
    КонецЕсли; 
    Если СокрЛП(ВидСубконто.Идентификатор())="ПрочиеДоходыИРасходы" Тогда
    Спр_ПрочиеДоходыИРасходы.НайтиПоКоду(СубконтоДт1);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_ПрочиеДоходыИРасходы.ТекущийЭлемент()); 
    КонецЕсли; 
    Если СокрЛП(ВидСубконто.Идентификатор())="РасходыБудущихПериодов" Тогда
    Спр_РасходыБудущихПериодов.НайтиПоКоду(СубконтоДт1);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_РасходыБудущихПериодов.ТекущийЭлемент()); 
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор())="ФизЛица" Тогда 
    Спр_ФизЛица.НайтиПоКоду(СубконтоДт1);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_ФизЛица.ТекущийЭлемент());
    КонецЕсли;
    ИначеЕсли НомерСубконто = 2 Тогда
    Если СокрЛП(ВидСубконто.Идентификатор())="СтатьиОбщехозяйственныхЗатрат" Тогда 
    Спр_СтатьиОбщехозЗатрат.НайтиПоКоду(СубконтоДт2);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_СтатьиОбщехозЗатрат.ТекущийЭлемент());
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор())="СтатьиИздержекОбращения" Тогда
    Спр_СтатьиИздержекОбращения.НайтиПоКоду(СубконтоДт2);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_СтатьиИздержекОбращения.ТекущийЭлемент()); 
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор())="Подразделения" Тогда
    Спр_Подразделения.НайтиПоКоду(СубконтоДт2); 
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_Подразделения.ТекущийЭлемент()); 
    КонецЕсли; 
    Если СокрЛП(ВидСубконто.Идентификатор())="ПрочиеДоходыИРасходы" Тогда
    Спр_ПрочиеДоходыИРасходы.НайтиПоКоду(СубконтоДт2);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_ПрочиеДоходыИРасходы.ТекущийЭлемент()); 
    КонецЕсли; 
    Если СокрЛП(ВидСубконто.Идентификатор())="РасходыБудущихПериодов" Тогда
    Спр_РасходыБудущихПериодов.НайтиПоКоду(СубконтоДт2);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_РасходыБудущихПериодов.ТекущийЭлемент()); 
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор())="ФизЛица" Тогда
    Спр_ФизЛица.НайтиПоКоду(СубконтоДт2);
    ДокСправка.УстановитьАтрибут("СубконтоДт"+СокрЛП(строка(НомерСубконто)),Спр_ФизЛица.ТекущийЭлемент());
    КонецЕсли;
    КонецЕсли;
    КонецЦикла; 
    Для НомерСубконто = 1 по 3 Цикл
    ВидСубконто = ДокСправка.СчетКт.ВидСубконто(НомерСубконто);
    ДокСправка.НазначитьТип("СубконтоКт"+сокрЛП(НомерСубконто), СокрЛП(ВидСубконто.ТипСубконто()));
    Если НомерСубконто = 1 тогда
    Если СокрЛП(ВидСубконто.Идентификатор())="ФизЛица" Тогда
    Спр_ФизЛица.НайтиПоКоду(СубконтоКт1);
    ДокСправка.УстановитьАтрибут("СубконтоКт"+СокрЛП(строка(НомерСубконто)),Спр_ФизЛица.ТекущийЭлемент());
    КонецЕсли; 
    Если СокрЛП(ВидСубконто.Идентификатор()) = "СтатьиОбщехозяйственныхЗатрат" Тогда
    Спр_СтатьиОбщехозЗатрат.НайтиПоКоду(СубконтоКт1);
    ДокСправка.УстановитьАтрибут("СубконтоКт"+СокрЛП(строка(НомерСубконто)),Спр_СтатьиОбщехозЗатрат.ТекущийЭлемент());
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор()) = "Подразделения" Тогда
    Спр_Подразделения.НайтиПоКоду(СубконтоКт1);
    ДокСправка.УстановитьАтрибут("СубконтоКт"+СокрЛП(строка(НомерСубконто)),Спр_Подразделения.ТекущийЭлемент());
    КонецЕсли; 
    ИначеЕсли НомерСубконто = 2 тогда
    Если СокрЛП(ВидСубконто.Идентификатор())="ФизЛица" Тогда
    Спр_ФизЛица.НайтиПоКоду(СубконтоКт2);
    ДокСправка.УстановитьАтрибут("СубконтоКт"+СокрЛП(строка(НомерСубконто)),Спр_ФизЛица.ТекущийЭлемент());
    КонецЕсли; 
    Если СокрЛП(ВидСубконто.Идентификатор()) = "СтатьиОбщехозяйственныхЗатрат" Тогда
    Спр_СтатьиОбщехозЗатрат.НайтиПоКоду(СубконтоКт2);
    ДокСправка.УстановитьАтрибут("СубконтоКт"+СокрЛП(строка(НомерСубконто)),Спр_СтатьиОбщехозЗатрат.ТекущийЭлемент());
    КонецЕсли;
    Если СокрЛП(ВидСубконто.Идентификатор()) = "Подразделения" Тогда
    Спр_Подразделения.НайтиПоКоду(СубконтоКт2);
    ДокСправка.УстановитьАтрибут("СубконтоКт"+СокрЛП(строка(НомерСубконто)),Спр_Подразделения.ТекущийЭлемент());
    КонецЕсли; 
    КонецЕсли;								
    КонецЦикла;
    ДокСправка.Сумма = СокрЛП(База.ПолучитьЗначениеПоля("Summa"));  
    База.Следующая(); 
    КонецЦикла;
    Попытка
    ДокСправка.Записать();                                     
    ДокСправка.Провести();               
    Сообщить("-----загружена "+ДокСправка);             
    Исключение
    Сообщить("-----НЕ ЗАГРУЖЕНА "+ДокСправка);             
    КонецПопытки;
    База.Следующая();
    КонецЦикла;
    КонецПроцедуры  
    
    Процедура ПриЗакрытии()
    База.ЗакрытьФайл();
    КонецПроцедуры 
    
  2. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    код в справочнике числовой или текстовый?
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Что за конфигурация? В бух такого справочника нет....
    ВОЗМОЖНО физ.лица это подчиненный справочник (допустим контрагентам)?
  4. TopicStarter Overlay
    Katu_cha
    Offline

    Katu_cha

    Регистрация:
    30 дек 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Загружаю в 1С Бухгалтерия 7.7 Компл.Там есть справочник ФизЛица.Тип кода - текстовый.Справочник ничему не подчинен.
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Длина кода?
    Попробуйте
    Код:
    Спр_ФизЛица.НайтиПоКоду(СокрЛП(СубконтоКт1));
    
    
  6. TopicStarter Overlay
    Katu_cha
    Offline

    Katu_cha

    Регистрация:
    30 дек 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Не получилось..Длина кода - 8. Вид такой,пример: БФ000024
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Попробуйте так:
    Код:
    Спр_ФизЛица.НайтиПоКоду(СокрЛП(СубконтоКт1),0);
    
    
  8. TopicStarter Overlay
    Katu_cha
    Offline

    Katu_cha

    Регистрация:
    30 дек 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Нашла свою ошибку.у меня было: ВидСубконто = ФизЛица,а должно быть ВидСубконто = Сотрудники,и тип значения ФизЛица.В итоге субконто заполняются теперь,но почему-то только по 70 счету,а по 69 нет.
  9. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    в обычном плане счетов на 69 нет субконто

    Вложения:

    • 6555.JPG
      6555.JPG
      Размер файла:
      54 КБ
      Просмотров:
      23
  10. TopicStarter Overlay
    Katu_cha
    Offline

    Katu_cha

    Регистрация:
    30 дек 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    А как сделать чтобы в бух.справку попадало?при ручном выборе субконто,открывается справочник Физ лица и спокойно можно выбрать..
    Посмотреть вложение 4069

    Вложения:

  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Должны попадать...
    НазначитьТип, УстановитьАтрибут....
  12. TopicStarter Overlay
    Katu_cha
    Offline

    Katu_cha

    Регистрация:
    30 дек 2009
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Не попадают :unsure:

Поделиться этой страницей