Всем доброго времени суток! УТ 10.3 на Платформе 8.2. Необходимо, чтобы в списке контрагентов отображалась колонка с телефонами контрагента и, соответственно была возможность поиска контрагента по номеру телефона. Подскажите как реализовать. Добавить на форму списка новую колонку не проблема, а вот как заставить 1С в этой новой колонке отображать номера телефонов... Внешние отчеты можно не предлагать.
По теме из базы знаний
- Загрузка телефонов из Excel в УТ
- Маршрутный лист с контрагентами, контактами и товарами УТ 11 / КА 2 / ERP 2
- Исправление телефонных номеров в конфигурации Альфа-Авто:Автосалон+Автосервис+Автозапчасти
- Избавиться от скана таблицы в плане запроса
- Загрузка данных контрагентов из России, Беларуси и Казахстана из веб-сервисов.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) внешние отчеты тут не помогут. Чтобы вывести телефоны в колонку, придется дописать процедуры ПриПолученииДанных() или ПриВыводеСтроки() ((3) прав совершенно, что вы будете делать, когда телефонов много?). А для поиска придется писать отдельную функцию, и параллельно решить вопрос с разными способами записи телефона, жестко прописывать все шаблоны при записи телефона...
примерно так (надо дописать самостоятельно немного):
Функция ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок)
Массив = Новый Массив;
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
// ЕСЛИ НУЖНО ВКЛЮЧАЕМ КОНТРОЛЬ НА ГРУППУ
Массив.Добавить(ОформлениеСтроки.Данныестроки.Ссылка);
КонецЦикла;
Возврат Массив;
КонецФункции // ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок)
Функция ПолучитьТаблицуОформленияСтрок(МассивСсылокСчетов)
Запрос = Новый Запрос;
Запрос.Текст =
//ЗДЕСЬ ПИШЕМ ЗАПРОС - ЧТО НУЖНО ПОЛУЧИТЬ (ТЕЛЕФОНЫ
Запрос.УстановитьПараметр("МассивСсылокСчетов", МассивСсылокСчетов);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции // ПолучитьСписокСсылок(ОформленияСтрок)()
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
МассивСсылокСчетов = ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок);
ТаблицаДанныхОформленияСтрок = ПолучитьТаблицуОформленияСтрок(МассивСсылокСчетов);
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
Данныестроки = ОформлениеСтроки.Данныестроки;
СтрокаОформленияСтрок = ТаблицаДанныхОформленияСтрок.Найти(ОформлениеСтроки.Данныестроки.Ссылка, "Контрагент");
Если СтрокаОформленияСтрок = Неопределено Тогда
Продолжить;
КонецЕсли;
Телефоны = СтрокаОформленияСтрок.Телефоны;
ОформлениеСтроки.Ячейки.Телефоны.УстановитьТекст(Телефоны);
КонецЦикла;
КонецПроцедуры
Функция ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок)
Массив = Новый Массив;
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
// ЕСЛИ НУЖНО ВКЛЮЧАЕМ КОНТРОЛЬ НА ГРУППУ
Массив.Добавить(ОформлениеСтроки.Данныестроки.Ссылка);
КонецЦикла;
Возврат Массив;
КонецФункции // ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок)
Функция ПолучитьТаблицуОформленияСтрок(МассивСсылокСчетов)
Запрос = Новый Запрос;
Запрос.Текст =
//ЗДЕСЬ ПИШЕМ ЗАПРОС - ЧТО НУЖНО ПОЛУЧИТЬ (ТЕЛЕФОНЫ
Запрос.УстановитьПараметр("МассивСсылокСчетов", МассивСсылокСчетов);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции // ПолучитьСписокСсылок(ОформленияСтрок)()
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
МассивСсылокСчетов = ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок);
ТаблицаДанныхОформленияСтрок = ПолучитьТаблицуОформленияСтрок(МассивСсылокСчетов);
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
Данныестроки = ОформлениеСтроки.Данныестроки;
СтрокаОформленияСтрок = ТаблицаДанныхОформленияСтрок.Найти(ОформлениеСтроки.Данныестроки.Ссылка, "Контрагент");
Если СтрокаОформленияСтрок = Неопределено Тогда
Продолжить;
КонецЕсли;
Телефоны = СтрокаОформленияСтрок.Телефоны;
ОформлениеСтроки.Ячейки.Телефоны.УстановитьТекст(Телефоны);
КонецЦикла;
КонецПроцедуры
(13)Нет, не получится. Полем комментарий периодически пользуюсь по назначению.
Я чё-то туплю на этапе добавления колонки в форму.
Сделал следующее:
1) в справочник контрагент добавил реквизит "Телефон". В свойствах реквизита НЕ УДАЕТСЯ задать Тип связанный как-то с "ТипыКонтактнойИнформации.Телефон" поэтому осталось "строка"
2) добавил на форму списка колонку "Телефон" . В свойствах установил Элемент управления как "Поле ввода", Данные из списка выбрал "Телефон"
3) В модуль формы списка добавил процедуру:
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
НаборЗаписей.Очистить();
УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(НаборЗаписей, ОформлениеСтроки.ДанныеСтроки.Ссылка);
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
ОформлениеСтроки.Ячейки.Телефон.Значение = Запись.Представление;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Естественно 1С к этой процедуре даже обращаться не хочет. И, соответственно никакими ошибками не ругается. Не знаю куда копать...
Я чё-то туплю на этапе добавления колонки в форму.
Сделал следующее:
1) в справочник контрагент добавил реквизит "Телефон". В свойствах реквизита НЕ УДАЕТСЯ задать Тип связанный как-то с "ТипыКонтактнойИнформации.Телефон" поэтому осталось "строка"
2) добавил на форму списка колонку "Телефон" . В свойствах установил Элемент управления как "Поле ввода", Данные из списка выбрал "Телефон"
3) В модуль формы списка добавил процедуру:
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
НаборЗаписей.Очистить();
УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(НаборЗаписей, ОформлениеСтроки.ДанныеСтроки.Ссылка);
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
ОформлениеСтроки.Ячейки.Телефон.Значение = Запись.Представление;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Естественно 1С к этой процедуре даже обращаться не хочет. И, соответственно никакими ошибками не ругается. Не знаю куда копать...
Радуют такие люди ;)
Хоть Поручик как правило грубоват, но по факту он частенько прав. Люди не знающие элементарный базис, хотят получить бесплатно готовое решение.
По задаче я бы сначала получил строковый список телефонов, т.к. их реально может быть много, ну а потом засунул бы значения этих строчек в эту колонку. Возможно прибавил туда же еще и комментарий из телефона, в нем тоже частенько пишут дополнительные мобильные.
Фраза: "Естественно 1С к этой процедуре даже обращаться не хочет." возникает скорей всего потому, что автор добавил скопированные строчки с форума в модуль формы, не воспользовавшись событиями самой формы. т.е. не установив связи. Что говорит о полном отсутствии базиса.
Хоть Поручик как правило грубоват, но по факту он частенько прав. Люди не знающие элементарный базис, хотят получить бесплатно готовое решение.
По задаче я бы сначала получил строковый список телефонов, т.к. их реально может быть много, ну а потом засунул бы значения этих строчек в эту колонку. Возможно прибавил туда же еще и комментарий из телефона, в нем тоже частенько пишут дополнительные мобильные.
Фраза: "Естественно 1С к этой процедуре даже обращаться не хочет." возникает скорей всего потому, что автор добавил скопированные строчки с форума в модуль формы, не воспользовавшись событиями самой формы. т.е. не установив связи. Что говорит о полном отсутствии базиса.
а у меня получилось, кажется я чтото начинаю понимать, спасибо поручику... за верные советы, когда некому помочь, а денег платить много - жалко, начинаешь копать сам, - иногда получается. Я вывел основной телефон контрагента по стандартной статье в 1С.
А я сделал так:
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Контрагент = Справочники.Контрагенты.НайтиПоКоду(ДанныеСтроки.Код).Ссылка;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ФизЛицо", Контрагент);
Запрос.УстановитьПараметр("ТипКИ", Перечисления.ТипыКонтактнойИнформации.Телефон);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Объект,
| ПРЕДСТАВЛЕНИЕ(КонтактнаяИнформация.Объект),
| КонтактнаяИнформация.Тип,
| КонтактнаяИнформация.Вид,
| ПРЕДСТАВЛЕНИЕ(КонтактнаяИнформация.Вид),
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &ФизЛицо
| И КонтактнаяИнформация.Тип = &ТипКИ
| И КонтактнаяИнформация.Вид = &ВидКИ";
ТелефонКонтрагента = Запрос.Выполнить().Выгрузить();
Для каждого Строка из ТелефонКонтрагента Цикл
Телефон = Строка.Представление;
КонецЦикла;
ОформлениеСтроки.Ячейки.Телефон.УстановитьТекст(Телефон);
КонецПроцедуры
Соответственно добавляется реквизит Телефон и одноименный столбец в форме списка.
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Контрагент = Справочники.Контрагенты.НайтиПоКоду(ДанныеСтроки.Код).Ссылка;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ФизЛицо", Контрагент);
Запрос.УстановитьПараметр("ТипКИ", Перечисления.ТипыКонтактнойИнформации.Телефон);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Объект,
| ПРЕДСТАВЛЕНИЕ(КонтактнаяИнформация.Объект),
| КонтактнаяИнформация.Тип,
| КонтактнаяИнформация.Вид,
| ПРЕДСТАВЛЕНИЕ(КонтактнаяИнформация.Вид),
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &ФизЛицо
| И КонтактнаяИнформация.Тип = &ТипКИ
| И КонтактнаяИнформация.Вид = &ВидКИ";
ТелефонКонтрагента = Запрос.Выполнить().Выгрузить();
Для каждого Строка из ТелефонКонтрагента Цикл
Телефон = Строка.Представление;
КонецЦикла;
ОформлениеСтроки.Ячейки.Телефон.УстановитьТекст(Телефон);
КонецПроцедуры
Соответственно добавляется реквизит Телефон и одноименный столбец в форме списка.
А поруччик то жжет напалмом......
Вобщем можно пойти след путем, хотя не факт что этот путь самый быстродейственный
Скорее всего телефон контрагента хранится в регистре сведений контактная информация...
на форме списка справочника делаем колонку "НомерТелефона"
Далее в можуле формы в обработчике "ПривыводеСтроки" вставляем запросец который дергает из регистра контактная информация "НомерТелефона" с установленным параметром текущий контрагент....
а далее результат запроса возвращаем в эту колонку на форме с помощью ЗаполнитьЗначенияСвоийств()
главное имя колонки в результате запроса должно быть равно имени колонки на форме
Вобщем можно пойти след путем, хотя не факт что этот путь самый быстродейственный
Скорее всего телефон контрагента хранится в регистре сведений контактная информация...
на форме списка справочника делаем колонку "НомерТелефона"
Далее в можуле формы в обработчике "ПривыводеСтроки" вставляем запросец который дергает из регистра контактная информация "НомерТелефона" с установленным параметром текущий контрагент....
а далее результат запроса возвращаем в эту колонку на форме с помощью ЗаполнитьЗначенияСвоийств()
главное имя колонки в результате запроса должно быть равно имени колонки на форме
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот