![]() |
![]() |
|
Помогите разобраться с единицами измерения в Комплексной Автоматизации 2.0 | ☑ | ||
---|---|---|---|---|
0
АндрейВоронин
25.05.16
✎
12:23
|
Доброго времени суток! Пытаюсь разобраться со справочником "УпаковкиЕдиницыИзмерения". В нём реквизит "ЕдиницаИзмерения" - это СправочникСсылка "УпаковкиЕдиницыИзмерения". Как в демо базе создаю единицу "штуки", код "796", владелец - СправочникСсылка.НаборыУпаковок.БазоваяЕдиницаИзмерения. Теперь хочу заполнить "УпаковкиЕдиницыИзмерения" с учётом владельца соответствующей номенклатурой. Пишу такой код:
СпрЕд=Справочники.УпаковкиЕдиницыИзмерения; НайденнаяСсылка=СпрЕд.НайтиПоКоду("796"); выборка=Справочники.Номенклатура.Выбрать(); Пока выборка.Следующий() цикл НовыйОбъект = Справочники.УпаковкиЕдиницыИзмерения.СоздатьЭлемент(); НовыйОбъект.Наименование="шту"; НовыйОбъект.НаименованиеПолное="Штукенция"; НовыйОбъект.Владелец=Выборка.Ссылка; НовыйОбъект.ЕдиницаИзмерения=НайденнаяСсылка; НовыйОбъект.Записать(); КонецЦикла; И смотрю в отладчике. Всё записывается кроме единиц измерения. В отладчике видно, что НовыйОбъект.ЕдиницаИзмерения становится "штуками", но после выполнения НовыйОбъект.Записать() штуки пропадают и в этот реквизит запись не происходит. Подскажите почему запись не проходит? Как в таком случае организовать запись? |
|||
1
Cyberhawk
25.05.16
✎
12:36
|
потому что владелец элемента справочника - элемент справочника "НаборыЕИ", в этом случае реквизит ЕИ пустой
|
|||
2
Cyberhawk
25.05.16
✎
12:37
|
+(1) поправка: не "НаборыЕИ", а "НаборыУпаковок" + еще и предопределенные
|
|||
3
Cyberhawk
25.05.16
✎
12:40
|
Еще и реквизит ТипИзмеряемойВеличины заполнять надобно...
|
|||
4
АндрейВоронин
25.05.16
✎
12:50
|
Тогда, пожалуйста, объясните такой момент. Смотрю демо базу. Там в "УпаковкиЕдиницыИзмерения" такие данные:
очередной элемент: Код - "" (пустой) Наименование - "штуки" Владелец - Номенклатура такая-то ЕдиницаИзмерения - "штуки" (СпрСсылка "УпЕдИзм") ЕдиницаИзмерения.Владелец - СпрСсылка.НаборыУпаковок.БазоваяЕдИзмерения То есть в демо базе все реквизиты заполняются? ТипИзмеряемойВеличины задал |
|||
5
АндрейВоронин
25.05.16
✎
13:36
|
Другими словами как организовать запись в справочник, если есть такая закольцовка: реквизит справочника имеет тип СправочникСсылка.Этот же справочник?
|
|||
6
Cyberhawk
25.05.16
✎
13:44
|
Никакой закольцовки нет, все базовые ЕИ ссылаются (через владельца) на предопределенные наборы упаковок, а реквизит "ЕИ" у них не заполнена.
Все производные ЕИ (упаковки) ссылаются (через владельца) либо на номенклатуру, либо непредопределенные наборы упаковок, а реквизит "ЕИ" у них - это базовая ЕИ (см. выше) |
|||
7
Cyberhawk
25.05.16
✎
13:45
|
Я бы тебе посоветовал завести в пользовательском режиме нужную тебе ЕИ, убедиться, что результат удовлетворительный (по документам и движениям), потом посмотреть все реквизиты и уже только тогда по образу и подобию заводить ЕИ программно (в режиме загрузки)
|
|||
8
АндрейВоронин
25.05.16
✎
14:18
|
Загвоздка в том, что никаких документов нет, база чистая и туда переносится номенклатура из старой базы 7.7. Можно только сравнить с демо базой.
Все производные ЕИ (упаковки) ссылаются (через владельца) либо на номенклатуру... ,а реквизит "ЕИ" у них - это базовая ЕИ (см. выше) Это вроде понятно, но разве в коде который я писал в самом начале не это реализовано? //Создал штуки с пустыми "ЕИ" (как базовую единицу) //Далее назначаем эту "ЕИ" номенклатуре СпрЕд=Справочники.УпаковкиЕдиницыИзмерения; НайденнаяСсылка=СпрЕд.НайтиПоКоду("796"); НовыйОбъект.Владелец=Ссылка на номенклатуру НовыйОбъект.ЕдиницаИзмерения=НайденнаяСсылка; |
|||
9
АндрейВоронин
25.05.16
✎
14:27
|
Причём ведь в отладчике видно, что выполнение строки
НовыйОбъект.ЕдиницаИзмерения=НайденнаяСсылка; проходит, штуки присваиваются. Если бы что-то было не так то должна же ошибка пройти. А вот следующая строка НовыйОбъект.Записать(); всё сбрасывает. |
|||
10
Cyberhawk
25.05.16
✎
14:32
|
У тебя ТипИзмеряемойВеличины не заполнен и запись идет не в режиме загрузки, поэтому прикладной код конфигурации тебе "обнуляет" этот реквизит. Неужели это так сложно было посмотреть в отладчике?
|
|||
11
Cyberhawk
25.05.16
✎
14:33
|
"А вот следующая строка
НовыйОбъект.Записать(); всё сбрасывает." Там еще дохрена строк кода выполняется, по F11 жми и если база серверная, то сервер должен быть в режиме отладки |
|||
12
АндрейВоронин
25.05.16
✎
15:42
|
Тип заполнил, по F11 смотрел, но так не определил где запись теряется. Судя по всему у меня пробел в теории... Можете объяснить, что нужно сделать, что бы реквизит не обнулялся? Или тут без кучи строк кода не обойтись?
|
|||
13
Cyberhawk
25.05.16
✎
16:48
|
Я вроде бы в (10) довольно понятно написал...
Поищи код ".ЕдиницаИзмерения = Неопределено" в модулях конфигурации, может быть так сообразишь, раз "по F11 смотрел, но так не определил где запись теряется"... |
|||
14
АндрейВоронин
26.05.16
✎
09:50
|
Я вроде бы в (10) довольно понятно написал... Имеется в виду "запись идет не в режиме загрузки"? К сожалению это для меня набор слов... Я с этой версией раньше не работал никогда, документации нет, всё приходится методом тыка изучать. Помогла строка НовыйОбъект.ОбменДанными.Загрузка = Истина;
Но вы мне хорошо помогли, подсказали направление, где нужно внимательнее разобраться и найти причину. Искренне благодарю за помощь! Хорошего дня! |
|||
15
Cyberhawk
26.05.16
✎
20:15
|
(14) Да, "режим загрузки" - это когда "ОбменДанными.Загрузка = Истина"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |