v7: Программная запись элемента подчиненного справочника #580392


#0 by ch53
ОС - Windows XP SP2;   1Cv7.7 - 7.70.027 Бухгалтерия - 7.70.530 Много раз говорили на тему о программной записи элемента подчиненного справочника. Но может кто сталкивался с подобным. Пишу загрузчик данных из сторонней программы. Есть справ."Контрагенты" и подчиненный справ."Договоры". Необходимо создать новый договор у данного контрагента. ... ... Задача не сложная. Но после отработки модуля, в справочнике договоров нового договора не появляется. Ошибок не выдает. В отладчике смотрел - всё формируется и заполняется. Подскажите. В чем дело?
#1 by Рэйв
Контр как получаешь?
#2 by 1Сергей
#3 by chief accountant
Искать по наименованию дубль, эээ как бэ...
#4 by Patrio_O_Muerte
ТипЗначенияСтр(Контр) Чему равны в отладчике?
#5 by Chum
... Постоянно создаю подчиненные элементы. бывает и с трехэтажным подчинением. все работает нормально.
#6 by Chum
кстати, а зачем Строка(ИмяДоговора); ? ИмяДоговора не есть строка, а что-то другое? Зачем преобразование? имхо СокрЛП тут более уместно, если загрузка из excel-я идет
#7 by Chum
ругнулось бы "не задан владелец"
#8 by ch53
Загрузка производится из текстового файла. Наименование контрагента и наименование договора формируются в другой программе, в виде ID-кода. Затем поиск с контролем реквизита, и получаем "Контр" в виде объекта.  "ИмяДоговора" - текст. Согласен, что для него лучше "СокрЛП", а не "Строка".
#9 by Patrio_O_Muerte
Кстати есть вариант, что ты просто неправильно смотришь. Попробуй сделать запрос к справочнику и отсотируй по коду или по какому нибудь признаку, который поможет определить что количество договоров не изменилось
#10 by Patrio_O_Muerte
+И кстати ответь у тебя в отладчике в условие входит то или нет?
#11 by 1Сергей
>>Согласен, что для него лучше "СокрЛП", а не "Строка". Давай зачётку
#13 by Rie
Контр - это у тебя созданный СоздатьОбъект("Справочник.Контрагенты")? Используй Контр.ТекущийЭлемент.
#14 by ch53
Контр - это уже найденный элемент справочника Контрагенты.
#15 by Рэйв
Это не делает Контр текущим элементом
#16 by 1Сергей
+1
#17 by Rie
Покажи оператор присваивания Контр.
#18 by Рэйв
да он судя по всему сделал просто Контр.НайтиПо....
#19 by Rie
На это и пытаюсь намекнуть. Возможен также вариант, что у него Контр = спрКонтрагенты.НайтиПо...
#20 by Рэйв
Это еще хуже. Будет число тогда
#21 by Rie
Вот и интересен ответ ТС.
#22 by ch53
... ... Вот сама процедура, которая формирует переменную Контр.
#23 by 1Сергей
ты попробовал?
#25 by Rie
Извращение, конечно... Но пусть... Контр - глобальная переменная? Или просто никак не описана?
#26 by Рэйв
Жосткий поиск однако...:-)
#27 by Rie
+ И ответь на .
#28 by Rie
Кстати, а что происходит, когда КолЗн=КвоЗн? Не в этом ли прикол?
#29 by KishMish
возмоджно при посике по наименванию сбивается настройки пвладельца я бы посоветовал при создании нового заново указывать владельца
#30 by KishMish
#31 by ch53
Контр в отладчике показывает элемент справочника. Нет. Прикол не в этом. КвоЗн - кол-во зн. зарезервированное для кода. КолЗн - кол-во зн. которые имеются в коде на данный момент. Я так тоже сначала подумал. Но в отладчике Контр позволяет спокойно увидеть ему принадлежащие реквизиты.
#32 by ch53
Вашу конструкцию без поиска использовать нельзя, т.к. возможно на данный момент такой договор существует.
#34 by Rie
И если КвоЗн=КолЗн, то контрагент НЕ ищется - так написано в
#35 by ch53
А вот за это отдельное спасибо! Не заметил вовремя...
#36 by 1Сергей
- Доктор, почему меня все игнорируют? - Следующий! ©
#37 by gp42
...
#38 by ch53
Варианта не проверял. Жестковатый режим.
#39 by 1Сергей
жестковатый? о_О ну, делай помягче...
#40 by Rie
После того, как контрагенты с кодом правильной длины начали находиться - проблема исчезла? Ну и на всякий случай - есть у справочников замечательный метод НайтиПоРеквизиту. С его помощью можно избавиться от цикла в .
#41 by ch53
Спасибо за совет. Я уже думал над этим. Проверю - отпишусь. Метод НайтиПоРеквизиту действительно хороший, но вот использовать его можно не всегда. Существует ограничение, которое я перешагнуть не могу.
#42 by ch53
Всем кто был со мной на связи большое спасибо. Я сейчас вас покину. Начальство напрягает. Надеюсь сегодня попробовать некоторые варианты, а завтра снова буду здесь. До свидания.
#43 by gp42
Защита информации на уровне - Двойной Контур? БД во внутреннем контуре, где нет инета ?
#44 by ch53
Здравствуйте все кто откликнулся на моё обращение. Вопрос я решил. Все дело было в спешке. Как всегда - "Надо еще вчера!...". Действия, производимые со справочниками "Контрагенты" и "Договоры" находятся в теле транзакции. А транзакцию необходимо фиксировать. Вот эту-то команду я и забыл, а отсюда результат - есть выполнение всех команд, но нет отражения результата в справочнике "Договоры" и нет индикации ошибки. Кстати, понял одну вещь - при подобных действиях с подчиненными справочниками, наиболее стабильная и быстрая отработка алгоритма происходит в том случае, когда передача параметра Контр в команду СпрДог.ИспользоватьВладельца(Контр) производится в теле одной процедуры, т.е. уменьшается вероятность потери значения Контр.
#45 by ch53
Большое спасибо всем за замечания и подсказки. Тема закрыта.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С