Имя: Пароль:
1C
1С v8
УТ 11. Добавить запись в справочник партнеры программно
0 AsadRoman
 
03.11.14
09:59
Среда: 1С 8.3 УТ 11
Задача: нужно перенести из некоего файла 6000 партнеров.
Решение: написана обработка, которая читает данные из файла и записывает в соответствующие справочники: справочник партнеров, справочник контрагентов, табличную часть справочника партнеров контактную информацию и справочник банковских счетов контрагентов.

Проблема: в справочнике партнеров есть реквизит ЮрФизЛицо, которое имеет вид ПеречислениеСсылка.КомпанияЧастноеЛицо и, по логике вещей, может принимать значения Компания или ЧастноеЛицо.
Соответственно присваиваю значение Партнеры.ЮрФизЛицо = Перечисление.КомпанияЧастноеЛицо.Компания;
и записываю
Партнеры.Записать();
Проверяю результат: В справочнике партнеры запись появляется, в справочнике контрагенты запись появляется, в справочнике банковские счета контрагентов запись не видна. И в справочнике партнеров поле ЮрФизЛицо - незаполнено. Более того на выбор заполнения предлагается четыре варианта.
Вопрос: Куда копать? Про что я забыл? Подскажите пожалуйста.
1 kosts
 
03.11.14
10:20
Тут лучше сравнить, что заполняется при штатном создании, и что получилось при импорте.
2 Рэйв
 
03.11.14
11:32
Такая фигня бывает если это реквизиты формы и заполняются при открытии из регистра сведений.
3 AsadRoman
 
03.11.14
11:45
Где в 8.3 нужно ставить точки останова, чтобы реально останавливалось.
4 kosts
 
03.11.14
11:47
(3) Отладку на сервере наверное надо включить, если не останавливается.
5 Мимохожий Однако
 
03.11.14
11:49
Или отлаживать на файловой версии ))
6 AsadRoman
 
03.11.14
11:50
так файловая версия
7 AsadRoman
 
03.11.14
11:51
В обработке останавливается, а в форме справочника не останавливается.
8 Рэйв
 
03.11.14
11:57
(7)А обработка открывает формы элементов?  Чудны дела твои, господи...
9 AsadRoman
 
03.11.14
12:01
Нет. Обработка ничего не открывает. Я ставлю точки останова в форме, чтобы посмотреть что там заполняется, а остановки не происходит.
10 hhhh
 
03.11.14
12:11
(9) еще раз, обработка не открывает формы справочников. А если бы открывала, то автору обработки сразу бы надо было оторвать руки.
11 Мимохожий Однако
 
03.11.14
12:12
(9)У сервера нет глазок. А форма для глазок и ручек пользователя.
12 AsadRoman
 
03.11.14
12:16
вот я и хочу остановить и посмотреть что там заполняется штатно.
13 AsadRoman
 
03.11.14
12:20
Получилось остановить. А теперь кто-нибудь может объяснить что это такое:
Если ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ФизЛицо") Тогда
        Объект.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.КомпанияЧастноеЛицо.ЧастноеЛицо");
    Иначе
        Объект.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.КомпанияЧастноеЛицо.Компания");
    КонецЕсли;
    
    УправлениеДоступностьюКлиент();
14 AsadRoman
 
03.11.14
12:34
Это не одно и то же:
Партнеры.ЮрФизЛицо = Перечисление.КомпанияЧастноеЛицо.Компания

и

Объект.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.КомпанияЧастноеЛицо.Компания");

???

Почему именно это поле при записи изменяется?
15 kosts
 
03.11.14
12:56
(14) Возможно на форме и в объекте разные типы ЮрФизЛицо, почему так сделано ведомо одним разработчикам...
16 Рэйв
 
03.11.14
13:06
(13)у тебя зачем то сделано два дублирующих друг друга по смыслу перечисления
КомпанияЧастноеЛицо и ЮрФизЛицо и кодер пытается причесать одно в соответствии со значенирем другого.
Нахрена так было сделано - соя логика пасует.Но руки бы я ему все равно оторвал:-)
17 Рэйв
 
03.11.14
13:06
*соя= моя
18 AsadRoman
 
03.11.14
13:19
Это не у меня. Это у 1С. Вопрос в том почему поле не хочет записиваться?
19 kosts
 
03.11.14
13:21
(18) Соответствие типов проверь.
20 AsadRoman
 
03.11.14
13:36
вот эта строка была неправильная:

Контрагенты.Партнер = Партнеры;

нужно:
Партнеры.Сохранить()
Контрагенты.Партнер = справочники.Партнеры.НайтиПоНаименованию(Элемент.Наименование);

Всем спасибо за участие!!! Вопрос закрыт.

P.S. как всегда, обычная невнимательность. ;-)
21 kosts
 
03.11.14
13:37
бывает