|
Как программно присвоить реквизиту документа ссылку на элемент справочника? | ☑ | ||
---|---|---|---|---|
0
Vito
28.06.22
✎
22:07
|
8.3 УНФ 1.6
После программного создания документа, его нужно заполнить. Как реквизитам документа присвоить ссылки на элементы справочников? Пробовал такие варианты, но не получается: ClientOrder = Документы.ЗаказПокупателя.СоздатьДокумент(); ClientOrder.ХозяйственнаяОперация = Справочники.ХозяйственныеОперации.ПолучитьСсылку(Новый УникальныйИдентификатор("05a1ce23-e7d1-11ec-9e54-001e67169891")); ClientOrder.Автор = Справочники.Пользователи.ПолучитьСсылку(Новый УникальныйИдентификатор("d938890a-e7d0-11ec-9e54-001e67169891")); Заранее спасибо за любые подсказки! |
|||
1
vicof
28.06.22
✎
22:45
|
И что именно не получается?
|
|||
2
Vito
28.06.22
✎
22:57
|
не присваиваются значения из справочника. Ошибки не выдает. Хотя другими полям, где присваиваю строки и даты все присваивается.
|
|||
3
Ёпрст
28.06.22
✎
23:02
|
(2) открой отладчик, посмотри, что за ссылка получается из ид
|
|||
4
Ёпрст
28.06.22
✎
23:02
|
Возможно, что она пустая, ибо элементов с таким ИД нема.
|
|||
5
Мультук
гуру
28.06.22
✎
23:42
|
(0)
Я использую вот такой прием ВидЦены = XMLЗначение(Тип("СправочникСсылка.ВидыЦен"), "9825736f-5026-11d9-b586-000d6144255e"); //ЦенаПродажи Для генерации строки гуида простейшая обработка, выбираем ссылку жмем кнопку, копи-пастим код &НаСервере Процедура СсылкуВТекстНаСервере(ЛюбаяСсылка) тт = XMLСтрока(ЛюбаяСсылка); пТип = ОбщегоНазначения.СтроковоеПредставлениеТипа(ТипЗнч(ЛюбаяСсылка)); пСтр = СтрШаблон("XMLЗначение(Тип(""%1""), ""%2"");//%3", пТип, тт, Строка(ЛюбаяСсылка)); Сообщить(пстр); КонецПроцедуры P.S. Начинающим лучше так Автор = Справочники.Пользователи.ПолучитьСсылку(Новый УникальныйИдентификатор("d938890a-e7d0-11ec-9e54-001e67169891")); ClientOrder.Автор = Автор; Ставим на Автор = точку останова и смотрим в отладчике. |
|||
6
Vito
29.06.22
✎
00:05
|
С автором все получилось, а вот с хозяйственной операцией никак не получается.
Разбил код вот так: А = Новый УникальныйИдентификатор("05a1ce23-e7d1-11ec-9e54-001e67169891"); Б = Справочники.ХозяйственныеОперации.ПолучитьСсылку(А); ClientOrder.ХозяйственнаяОперация = Б; А вот что в отладчике: A {<Неизвестный модуль>(1,1)}: Переменная не определена (A) Б Заказ на продажу СправочникСсылка.ХозяйственныеОперации ClientOrder.ХозяйственнаяОперация СправочникСсылка.ХозяйственныеОперации Как видно элемент справочника находится (Б), а вот реквизиту документа не присваивается. |
|||
7
nicxxx
29.06.22
✎
00:15
|
(0)АААААААА!!!! Что это за дичь! Зачем это: "Новый УникальныйИдентификатор()" ???
1С как-бы не предполагает работу с гуидами объектов. Вы вообще хоть что-нибудь про 1С прочитали перед тем, как это писать? В примере из (0) пользовтеля надо получать примерно так: ClientOrder.Автор = Пользователи.ТекущийПользователь(); |
|||
8
timurhv
29.06.22
✎
00:26
|
(7) "1С как-бы не предполагает работу с гуидами объектов"
Конвертации данных расскажите, выгрузке-загрузке данных. |
|||
9
Ёпрст
29.06.22
✎
00:27
|
(6) покажи скриншот того, что в коде и что в отладчике
|
|||
10
Ёпрст
29.06.22
✎
00:28
|
>>Переменная не определена (A) - это всего лишь рус/лат расскладка клавиатуры, у тя А в другом языке, ибо нехер давать короткие имена
|
|||
11
Vito
29.06.22
✎
00:46
|
Насчет переменной А Вы были правы. Скриншот по ссылке: https://disk.yandex.ru/i/iWIOJBGYUFODnw
|
|||
12
Vito
29.06.22
✎
00:49
|
nicxxx В примере из (0) пользовтеля надо получать примерно так:
ClientOrder.Автор = Пользователи.ТекущийПользователь(); Скрипт пишется для загрузки истории заказов за прошедшие 5 лет, это нужно сделать не под текущим пользователем. |
|||
13
Ёпрст
29.06.22
✎
01:01
|
(11) Точку останова поставь ДО записи доумента, у тебя хоз операция херится скорее всего, при записи, в подписке или в модуле дока в Перед/приЗаписи
|
|||
14
Ёпрст
29.06.22
✎
01:03
|
ну или поставь
ClientOrder.ОбменДанными.Загрузка = Истина; //шоб всякий мусор не проверялся |
|||
15
Vito
29.06.22
✎
01:37
|
добавил Вашу строчку, сразу все прописалось. Не разбирался, что она значит. Спасибо!
НО, почему то снесло номер документа буду разбираться завтра куда он пропал. |
|||
16
Мультук
гуру
29.06.22
✎
06:51
|
(14)
>> у тебя хоз операция херится скорее всего, при записи, в подписке или в модуле дока в Перед/приЗаписи Может стоит разобраться почему она херится? Может это "ж-ж-ж" не с проста? >>> ClientOrder.ОбменДанными.Загрузка = Истина;//шоб всякий мусор не проверялся - Вот тебе граната Петька. Петька, выдергивая чеку - прикольно, а для чего эта штучка ? - Ой, в документе все номера пообрывало.... P.S. Жду следующий вопрос: ClientOrder.ОбменДанными.Загрузка = Истина;//шоб всякий мусор не проверялся ClientOrder.Записать(РежимЗаписи.Проведение); |
|||
17
Asmody
29.06.22
✎
06:58
|
Вот так бывает, когда всякие джависты и пэхэпэшники своими лапами в нашу одинесочку лезут!
|
|||
18
Vito
29.06.22
✎
14:39
|
Я даже не джавист и пэшэпэшник, я хуже: я - "эффективный менеджер". Простите, что грязно надругался над одинесочкой: сначала выдернул чеку, а потом почитал инструкцию ... :).
Пока все получилось. Отчитываюсь: 1. ClientOrder.Записать(РежимЗаписи.Проведение); не работает в режиме ClientOrder.ОбменДанными.Загрузка = Истина, а без него тем более, т.к. документ еще полностью не заполнен. 2. Значение реквизита .ХозяйственнаяОперация действительно херилось при записи, но стоило только присвоить реквизиту заказа .ВидОперации нужное значение, как хозоперация сама прописалась и все решилось само собой. Потратил на эту фигню около 16 часов...Зато много чему научился! Всем большое спасибо за помощь! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |