8.х Загрузить адреса

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем OIT, 13 мар 2008.

  1. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Код:
    НайденныйСотрудник =
    Справочники.ФизическиеЛица.НайтиПоНаименованию(НаименованиеСотрудника,Истина);
    НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
    НаборЗаписей.Объект=НайденныйСотрудник;
    НаборЗаписей.Период=Дата('2008, 02, 01');
    НаборЗаписей.Тип=Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002",Истина);
    НаборЗаписей.Записать();
    
    Я таким образом пытаюсь через этот набор загрузить адреса физлиц
    Выдает сообщение Запись не верна Значение поля "Тип" не может быть пустым
    Но мне не понятно, я даже ручным способом пробую ввести запись в КонтактнуюИнформацию,
    в физлица попадает введенная в ручную информация а в КонтактнойИнформации пусто и объект
    не определен
    Подскажите пожалуйста в чем дело
    Благодарю Вас
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В какой конфе то хоть?
  3. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Конфиг 2.5.7.2(пл 8.1)
    Благодарю
  4. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    В отладчике проверьте - находит ли все ваши элементы через такой поиск по коду, наименованию?
  5. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Физлица по наименованию находятся я таким же образом загрузила паспортные
    данные в регистр сведений , тип контактной информации находится из перечисления
    это я исправила но все равно пусто
    я вижу вот в чем отличия в регистре сведений(паспортные данные) сразу видны на закладке физлица
    а в регистре сведений(контактная информация) на закладке тип,вид,значение а
    когда начинаешь вводить в ручную появляется объект физлица данные попадают в физлица а в регистре сведений(контактная информация) не заполняется даже вручную что-то не пойму
    Может быть вы что-то можете предположить
    Благодарю Вас
  6. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Я не совсем понял вопрос последний.
    Вы проверьте типы данных. Мне кажется вот что:
    В регистре контактной информации есть измерения "Тип" и "Вид", причем они разные (Тип, например "Адрес", а Вид "Адрес фактический". Соответственно вы Тип пытаетесь заполнить Видом, а тут несоответствие типов данных идет и Тип не заполняется.

    Вам надо посмотреть типы данных для измерений регистра: Тип, Вид
    Заполнить абсолютно все измерения, когда вы запись добавляете.
  7. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Не смогла я выразить свое непонимание
    Дело в том, что я указываю тип -адрес и вид информации-адрес по прописке физлица
    у меня не записывается выходит сообщение "Не удалось записать данные о контактной
    информации .Запись с такими ключевыми полями существует"
    Вот я не пойму суть этого процесса и Вас запутала Я думала загружу физлица в регистр сведений а потом через него загружу адреса
    Может быть вы подскажите
    Благодарю Вас
  8. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Вот таким образом я написала код ,но выдает сообщение
    "Операция не выполнена не заполнен объект"
    НайденныйСотрудник в физлицах существует

    Код:
    НайденныйСотрудник = Справочники.ФизическиеЛица.НайтиПоНаименованию(НаименованиеСотрудника,Истина);
    НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
    НаборЗаписей.Записать();
    НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
    НаборЗаписей.Период=Дата('2008, 02, 01');
    НаборЗаписей.Вид=Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002",Истина);
    НаборЗаписей.Тип=Перечисления.ТипыКонтактнойИнформации.Адрес;
    НаборЗаписей= РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    Запись=НаборЗаписей.Добавить();
    Запись.Объект=НайденныйСотрудник;
    НаборЗаписей.Записать();
    
    Что же я не так делаю подскажите пожалуйста
    Благодарю Вас
  9. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Попробуйте так:
    Код:
    НайденныйСотрудник = Справочники.ФизическиеЛица.НайтиПоНаименованию(НаименованиеСотрудника,Истина);
    Вид=Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002",Истина);
    НаборЗаписей= РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Объект.Значение = НайденныйСотрудник;
    НаборЗаписей.Отбор.Объект.Использование = Истина;
    НаборЗаписей.Отбор.Вид.Значение = Вид;
    НаборЗаписей.Отбор.Вид.Использование = Истина;
    НаборЗаписей.Отбор.Тип.Значение = Перечисления.ТипыКонтактнойИнформации.Адрес;
    НаборЗаписей.Отбор.Тип.Использование = Истина;
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    Запись=НаборЗаписей.Добавить();
    Запись.Объект =НайденныйСотрудник;
    Запись.Вид      =Вид;
    Запись.Тип      =Перечисления.ТипыКонтактнойИнформации.Адрес;
    //  Здесь пишем значения полей
    Запись.Поле1 = <какое-то значение> //Обычно в этом поле название региона
    //------------------------------------------------
    Запись.Поле10 = <какое-то значение> 
    //  Конец записи значений полей
    НаборЗаписей.Записать();
    
    
  10. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Я использовала ваш код ,но он тоже выдает сообщение
    "Операция невыполнена.Не заполнен объект"
    Не могу понять в чем дело
    Может быть у вас есть еще какие -то идеи
    Благодарю Вас
  11. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Проверьте в отладчике тип переменной НайденныйСотрудник.
  12. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Может ли быть в этом причина:
    Когда в ручную захожу на объект сбоку буква "Т" и представляется выбор из
    четырех справочников(пользователи,физлица,контрагенты,организации)
    я делаю выбор физлица и открывается справочник выбираю конкретное лицо
    или это не имеет значение
    Благодарю Вас
  13. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Может быть эта ситуация что-то Вам подскажет
    Когда в ручную ввожу адрес через контактную информацию
    адрес в физлицах появляется

    Если же выполняю код адрес в физ лицах не появляется
    но если после выполнения кода я буду вводить адрес через контактную
    информацию то выдает сообщение
    "Запись с такими ключевыми полями существует"
    хотя адреса в физлицах отсутствуют
    Как это понять
    Благодарю Вас
  14. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Код:
    НайденныйСотрудник = Справочники.ФизическиеЛица.НайтиПоНаименованию(НаименованиеСотрудника,Истина);
    Если НЕ НайденныйСотрудник.Пустая() Тогда
    Вид=Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002",Истина);
    НаборЗаписей= РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Объект.Значение = НайденныйСотрудник;
    НаборЗаписей.Отбор.Объект.Использование = Истина;
    НаборЗаписей.Отбор.Вид.Значение = Вид;
    НаборЗаписей.Отбор.Вид.Использование = Истина;
    НаборЗаписей.Отбор.Тип.Значение = Перечисления.ТипыКонтактнойИнформации.Адрес;
    НаборЗаписей.Отбор.Тип.Использование = Истина;
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    Запись=НаборЗаписей.Добавить();
    Запись.Объект =НайденныйСотрудник;
    Запись.Вид      =Вид;
    Запись.Тип      =Перечисления.ТипыКонтактнойИнформации.Адрес;
    //  Здесь пишем значения полей
    Запись.Поле1 = <какое-то значение> //Обычно в этом поле название региона
    //------------------------------------------------
    Запись.Поле10 = <какое-то значение> 
    //  Конец записи значений полей
    НаборЗаписей.Записать();
    Иначе
    Предупреждиение("Сотрудник не найден в справочнике");
    КонецЕсли;
    
    
    
    Возможно так для Вас будет понятнее.
  15. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Я поставила предупреждение ,но во время работы этого кода
    предупреждение не вышло значит все сотрудники нашлись - но в адресах пусто
    почему -то адреса не попадают в физлица
    Что же делать
    А вот когда вручную вводим объект мы не сразу попадаем в справочник физлица
    мы его выбираем из предлагаемого набора
    ни в этом ли дело
    Благодарю Вас
  16. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    и ошибка, что объект незаполнен тоже не выскакивает?
    Код проверял на 2.5.6.4 (Демо)) - все работает.
    Как у Вас это оформлено? Через внешнюю обработку или непосредственно где-то в конфигурации.
    Если через внешнюю - есть ли возможность на не взглянуть?
  17. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Вот внешняя обработка

    Код:
    Процедура ПрочитатьИзФайла(ИмяФайла) Экспорт
    Файл = Новый XBase;
    Файл.Кодировка = КодировкаXBase.OEM;
    Файл.ОткрытьФайл(ИмяФайла);
    тзДанных.Очистить();	
    Файл.Первая();
    Пока Не(Файл.ВКонце()) Цикл
    НоваяСтрока = тзДанных.Добавить();
    НоваяСтрока.Фамилия  = Файл.FIO1;
    НоваяСтрока.Имя 	 = Файл.FIO2;
    НоваяСтрока.Отчество  = Файл.FIO3;
    НоваяСтрока.Отметка  = Истина;
    Файл.Следующая();
    КонецЦикла;
    Файл.ЗакрытьФайл();
    КонецПроцедуры
    Процедура СформироватьОперации() Экспорт 
    Для каждого СтрокаДанных Из тзДанных Цикл
    Если СтрокаДанных.Отметка  <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    Строка=Сред(СтрокаДанных.Фамилия,2,16);
    Строка1=Сред(СтрокаДанных.Фамилия,1,1)+Нрег(Строка);
    Строка=Сред(СтрокаДанных.Имя,2,12);
    Строка2=Сред(СтрокаДанных.Имя,1,1)+Нрег(Строка);
    Строка=Сред(СтрокаДанных.Отчество,2,16);
    Строка3=Сред(СтрокаДанных.Отчество,1,1)+Нрег(Строка);
    ФИО=СокрП(Строка1)+" "+СокрП(Строка2)+" "+(Строка3);
    Сотрудник = НайтиСотрудника(ФИО);
    КонецЕсли;	
    КонецЦикла;
    КонецПроцедуры
    Функция НайтиСотрудника(НаименованиеСотрудника)
    НайденныйСотрудник = 
    Справочники.ФизическиеЛица.НайтиПоНаименованию(НаименованиеСотрудника,Истина);
    Если НЕ НайденныйСотрудник.Пустая() Тогда
    Вид=Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00002",Истина);
    НаборЗаписей= РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Объект.Значение = НайденныйСотрудник;
    НаборЗаписей.Отбор.Объект.Использование = Истина;
    НаборЗаписей.Отбор.Вид.Значение = Вид;
    НаборЗаписей.Отбор.Вид.Использование = Истина;
    НаборЗаписей.Отбор.Тип.Значение = Перечисления.ТипыКонтактнойИнформации.Адрес;
    НаборЗаписей.Отбор.Тип.Использование = Истина;
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    Запись=НаборЗаписей.Добавить();
    Запись.Объект =НайденныйСотрудник;
    Запись.Вид      =Вид;
    Запись.Тип      =Перечисления.ТипыКонтактнойИнформации.Адрес; 
    Запись.Поле1="Чувашская Респ.";
    Запись.Поле3="Шумерля г.";
    НаборЗаписей.Записать();	
    Иначе
    Предупреждение("Сотрудник не найден в справочнике");
    КонецЕсли;
    КонецФункции 
    
    
    Эта обработка выполняется и никаких сообщений не выдает
    то что сотрудники должны быть найдены я не сомневаюсь
    а дальше не получается
    Благодарю Вас
  18. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Заполните Реквизит регистра "Представление"
    Код:
    Запись.Представление = "ля-ля-ля";
    
    
    Тогда информация будет отображаться в списке при открытии физического лица.

    И еще есть такая обработка: "РедактированиеКонтактнойИнформации" в ней кстати можно посмотреть как и что формируется.
  19. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Все получилось
    Очень благодарна
  20. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Можно ли посмотреть обработку"Редактирование контактной информации" и где
    Благодарю Вас

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