Программное добавление строк в табличную часть справочника.

1. MaximusCompera 24.09.16 09:56 Сейчас в теме
Добрый день! Нужна помощь такого плана: 1С Розница 2.1. Пишу обработку, в которой требуется создать новый элемент справочника "ФизическиеЛица". С этим проблем нет и основные реквизиты, а также подчиненные данные из регистров сведений тоже. А вот при попытке программно добавить значение в табличную часть "КонтактнаяИнформация", а именно телефон - ничего не выходит. При этом система не выдает ошибку и при открытии карточки созданного элемента поле телефон пустое. Вот код:
&НаСервере
Функция СохранитьДКНаСервере(НовоеФЛ, НоваяДК)
	
	Перем СоздаваемоеФЛ, СоздаваемаяДК, КодВозврата;
	КодВозврата = 0;
	
	СоздаваемоеФЛ = Справочники.ФизическиеЛица.СоздатьЭлемент();
	СоздаваемоеФЛ.Наименование				 = НовоеФЛ.Фамилия + " " + НовоеФЛ.Имя + " " + НовоеФЛ.Отчество;
	СоздаваемоеФЛ.ДатаРождения				 = НовоеФЛ.ДатаРождения;
	СоздаваемоеФЛ.Пол					 = НовоеФЛ.Пол;
	СоздаваемоеФЛ.СогласенНаРассылку			 = НовоеФЛ.СогласенНаРассылку;
	СоздаваемоеФЛ.Родитель 					 = Справочники.ФизическиеЛица.НайтиПоНаименованию("Клиенты", Истина).Ссылка;
	
	НоваяСтрока = СоздаваемоеФЛ.КонтактнаяИнформация.Добавить();
	НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
	НоваяСтрока.НомерТелефона = НовоеФЛ.Телефон;
	НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон", Истина, Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Контактная информация справочника ""Физические лица"""));
	НоваяСтрока.Представление = НовоеФЛ.Телефон;
	
	Попытка
		СоздаваемоеФЛ.Записать();
		КодВозврата = 1;
	Исключение
		Возврат 0;
	КонецПопытки;
		
	НаборФИО = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
	ФИО = НаборФИО.Добавить();
	ФИО.ФизЛицо	= СоздаваемоеФЛ.Ссылка;
	ФИО.Фамилия	= НовоеФЛ.Фамилия;
	ФИО.Имя		= НовоеФЛ.Имя;
	ФИО.Отчество	= НовоеФЛ.Отчество;
	ФИО.Период	= ТекущаяДата();
	
	Отказ = Ложь;
	Если Не Отказ Тогда
		Попытка
			НаборФИО.Записать();
		Исключение
			Сообщить(ОписаниеОшибки());
			Возврат 0;
		КонецПопытки;
	КонецЕсли;
	

	Возврат КодВозврата;
	
КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Chameleon1980 24.09.16 12:20 Сейчас в теме
(1) MaximusCompera, вот и я так подумал.
7. user607883 25.09.16 08:34 Сейчас в теме
(1) MaximusCompera, общий модуль управление контактной информацией есть? Если есть посмотри как там все организованно, или привяжись к функциям из него.
или попробуй так:
НоваяСтрока = Контр.КонтактнаяИнформация.Добавить() ;
НоваяСтрока .Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
НоваяСтрока .Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон");
Сообщить("телефон вид" + НоваяСтрока .Вид);
НоваяСтрока .Представление = 02;
9. Alex_E 2355 25.09.16 16:29 Сейчас в теме
(7) user607883, Найти по наименованию - чаще всего вредный совет - телефон - их предопределённых значений справочника, обращение к которым идёт сродни перечислениям, без найти...
13. MaximusCompera 28.09.16 13:29 Сейчас в теме
(9) Alex_E, Спасибо, учту насчет НайтиПоНаименованию(). Но там несколько "Телефонов" в разных группах. Как он может быть предопределенным? Есть телефон для магазинов, для пользователей, для контрагентов. Вот так это выглядит:
Прикрепленные файлы:
14. alwiz3 28.09.16 13:59 Сейчас в теме
(13) Вот предопределенные значения, к ним и надо обращаться
Прикрепленные файлы:
MaximusCompera; +1 Ответить
15. MaximusCompera 28.09.16 14:19 Сейчас в теме
(14) alwiz3, Спасибо! Не знал, где смотреть. Теперь только так и буду писать. Наверное и работать будет быстрее.
2. nayd 9 24.09.16 11:13 Сейчас в теме
Может быть создается строка, но её не видно при открытии карточки физлица.
Можно попробовать в консоли запросов посмотреть и сравнить табчасти их двух карточек: одна в которой виден телефон, другая - которую создаете программно. Чем они отличаются.
MaximusCompera; +1 Ответить
11. MaximusCompera 28.09.16 13:00 Сейчас в теме
(2) nayd, Вот и мне кажется, что создается строка, но не выводится на форме. Буду с консолью запросов разбираться, раньше не имел дел с этим инструментом.
3. Chameleon1980 24.09.16 12:15 Сейчас в теме
Там вроде у спр. Виды КИ есть реквизит использовать
может из-за него
А если руками добавить таку КИ контру?
5. vadim1011985 100 24.09.16 13:10 Сейчас в теме
Может есть регистр сведений КонтактнаяИнформация и данные нужно добавлять именно в этот регистр. Обычно в типовых конфигурациях реализовано именно так
olegmedvedev; +1 Ответить
6. Chameleon1980 24.09.16 13:31 Сейчас в теме
(5) vadim1011985, нет.
КИ в таб части физ. лиц лежит.

Я бы все-же обратил внимание на реквизит (можно так-же консолью проверить т.к. на форму не выведен) "Используется" у справочника "ВидыКонтактнойИнформации"
12. MaximusCompera 28.09.16 13:23 Сейчас в теме
(6) Chameleon1980, не нашел ничего похожего на "Использование" в реквизитах справочника ВидыКИ.
Прикрепленные файлы:
8. Chameleon1980 25.09.16 15:25 Сейчас в теме
та плин. скока раз объяснять.

у спр. ВидыКи есть реквизит "Использование" (ну или типа так)

туда смотри

когда форма создается - передается в общий модуль и именно в этот реквизит там смотрится
MaximusCompera; +1 Ответить
10. MaximusCompera 28.09.16 12:59 Сейчас в теме
Друзья, всем огромное спасибо за ответы. Буду разбираться. Выпадал на пару дней и занимался другой работой.
16. MaximusCompera 28.09.16 14:25 Сейчас в теме
Друзья, всем спасибо за реальную помощь! Всему ошибка - моя невнимательность. Когда я задавал ВидКИ, я использовал вот такой способ:
НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон", Истина, Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Контактная информация справочника ""Физические лица"""));


НО! допустил ошибку - надо было искать не "телефон", а "телефоны". И у меня не проставлялся тип КИ, а по нему и заполняется форма. По совету Alex_E и не без помощи alwiz3 переписал эту строку вот так:
НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонФизическогоЛица;


Теперь все Гуд.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот