Имя: Пароль:
1C
1С v8
Выбор/создание элемента справочника из формы списка. Подскажите, куда копать?
,
0 Zhuravlik
 
08.04.13
17:31
Добрый день. Конфа самописная на 8.1.
Делаю загрузку контрагентов из Excell. При этом в экселе контрагент может быть описан как-угодно (но одной строкой). В эту строку входит полное наименование, и реквизиты (Адрес юр. лица, физ. лица, телефоны и т.п) я пробовал разбивать строку на реквизиты, но это где проходит, где - убого, где вообще нечитаемо. Причем строка поиска может различаться (информативно не меняется, различия в сокращениях, точках, запятых т.е. был <"ООО" ЗАЗ, юр. адр.: такой-то> стал <"ООО" ЗАЗ юридический адр.: такой-то>)
В итоге хочу чтобы пользователь сам вводил нового контрагента со всеми реквизитами, но так чтобы впоследствии этот контрагент уже подтягивался при загрузке файла.
Хочу сделать так:  в контрагентах добавляю атрибут "СтрокаПоиска", с галкой доп. упорядочивание. При загрузке файла делаю поиск по этому атрибуту с значением строки из экселя.
Если Контрагент не найден, открываю форму списка контрагентов, куда передаю эту строку.
В форме списка нужно при создании нового элемента указывать ему реквизит "СтрокаПоиска".
В форме элемента в ПриОткрытии() я разбиваю эту строку на реквизиты, и пользователь уже их сам редактирует, как надо.
Проблема в том, что я в 8 новичек, что сделать - знаю, а как - вопрос.
И вот такие сейчас проблемы:
1) Как в форме списка отловить создание нового элемента, и установить ему значение реквизита?
2) Как в форме списка понять, что введенный элемент был записан, и выбрать его, закрыв саму форму?
3) Когда я в обработке открываю форму списка для ввода контра как получить ссылку на созданный/выбранный элемент?
1 Zhuravlik
 
08.04.13
17:38
+ В форме списка, на закладке "реквизиты" добавил "СтрокаЗагрузки", вызываю на открытие так:

       Список = Справочники.Контрагенты.ПолучитьФорму("ФормаСписка_Загрузка");
       Список.СтрокаЗагрузки = стр;
       Список.ОткрытьМодально();

Код формы списка:

Процедура ВводКонтрагента()
   спрКонтрагенты = Справочники.Контрагенты.СоздатьЭлемент();
   спрКонтрагенты.СтрокаВыгрузки = СтрокаЗагрузки;
   спрКонтрагенты.ПолучитьФорму("ФормаЭлемента").ОткрытьМодально();
   
КонецПроцедуры

Процедура ПриОткрытии()
   
   РежимВыбора = Истина;
   ЗакрыватьПриВыборе = Истина;
   
   ВводКонтрагента();
КонецПроцедуры

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
   ОповеститьОВыборе(ЗначениеВыбора);
КонецПроцедур
2 Zhuravlik
 
08.04.13
17:41
+ Но это я в ПриОТкрытии() создаю. И коряво получается, что открывается модально форма списка, потом - форма элемента.
А по инсерту, как мне открыть форму нового элемента, чтобы у него СтрокаВыгрузки = СтрокаЗагрузки?
3 Maxus43
 
08.04.13
17:43
>>Проблема в том, что я в 8 новичек, что сделать - знаю, а как - вопрос
у меня после (0) проблема с пониманием что делать, а не как делать
4 Zhuravlik
 
08.04.13
17:47
(3) Наверное не следовало мне свою задачу пытаться описать, эт я зря. Просто обычно когда задаешь вопрос, обычно спрашивают "Что ваяешь"? Ну, я сразу и написал.
Ну может по вопросам кто-нибудь подскажет?

1) Как в форме списка отловить создание нового элемента, и установить ему значение реквизита?
2) Как в форме списка понять, что введенный элемент был записан, и выбрать его, закрыв саму форму?
3) Когда я в обработке открываю форму списка для ввода контра как получить ссылку на созданный/выбранный элемент?
5 Dionis Sergeevich
 
08.04.13
18:13
Подписки на события
6 MKZM
 
08.04.13
19:16
В форме списка
Процедура СправочникСписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа)
   Отказ=Истина;
   ТекНоменклатура = Справочники.Контрагенты.ДобавитьНовогоКонтрагента(ЭтаФорма);
КонецПроцедуры
А в менеджере
Функция  ДобавитьНовогоКонтрагента(ФормаВладелец="") Экспорт
 Разные строчки    
КонецФункции
7 Zhuravlik
 
08.04.13
19:22
(6) Не найду предопределенной "ПередНачаломДобавления", у меня 8.1, вы не путаете?
8 MKZM
 
08.04.13
19:23
Может. Посмотрю.
9 MKZM
 
08.04.13
19:24
Под рукой нет 8 и 1. Не смогу посмотреть.
10 Zhuravlik
 
08.04.13
19:25
(8)(9) Нет-нет, это я стормозил. Это предопределенная для табличного поля, а я искал в свойствах формы списка, спасибо за совет.
11 Zhuravlik
 
08.04.13
19:48
(6) Получилось! Как надо. А как программно вызвать событие добавления новой строки?