|
СозданиеНоменклатуры в УТ | ☑ | ||
---|---|---|---|---|
0
Leshasem
02.01.25
✎
23:38
|
Всем привет, второй раз пишу обработку и совсем завис, нужно из файла выгрузить информацию в справочник Номенклатура в 1с УТ 11. Вот пример части, я сильно запутался в Объектах и в ссылочных типах:
СсылкаН = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Продукция", Истина); ОбъектН = СсылкаН.ПолучитьОбъект(); НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); НовыйЭлемент.ОбменДанными.Загрузка = Истина; НовыйЭлемент.ВидНоменклатуры = ОбъектН.Ссылка; НовыйЭлемент.Наименование = "Сок"; НовыйЭлемент.ЕдиницаИзмерения = ЕдИзм.Ссылка; НовыйЭлемент.Артикул = "123"; НовыйЭлемент.Родитель = НоваяГруппа.Ссылка; НовыйЭлемент.Записать(); Всё записывается при создании нового элемента, кроме ВидаНоменклатуры, оно имеет ссылочный тип, но для его записи, нужно вручную открывать и записывать, как исправить? |
|||
1
Звездец
02.01.25
✎
23:42
|
чем штатная загрузка из внешнего файла не устроила?
а код в (0) сильно не полон и по нему ответить по сути нечего |
|||
2
Leshasem
02.01.25
✎
23:52
|
СсылкаН=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Продукция", Истина);
ОбъектН = СсылкаН.ПолучитьОбъект(); НовыйЭлемент.ВидНоменклатуры = ОбъектН.Ссылка; Вопрос только в этой части, непосредственно создание элемента справочника =( |
|||
3
Звездец
02.01.25
✎
23:55
|
(2) отладчик в зубы и вперед. И вообще 2 строка не нужна. Если в первой строке ты правильно получил ссылку, то нет никакого смысла получать объект и потом из него снова получать ссылку
|
|||
4
Волшебник
03.01.25
✎
00:01
|
дурдом
|
|||
5
AlvlSpb
03.01.25
✎
00:20
|
(0) Зачем получать объект, если с ним ничего не планируется делать?
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); НовыйЭлемент.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Продукция"); |
|||
6
Злопчинский
03.01.25
✎
00:48
|
(0) "но для его записи, нужно вручную открывать и записывать, как исправить?"
какая мутная хрень... я вот нихера не понял. то есть запустил обработку. создался элемент. Открываю его ручками, ВидНоменклатуры - пустой? Жму "записать" - и система не ругается и ВидНоменклатуры оказывается после кнопки "Записать" заполненным? или как? . Могу ошибаться, но использование конструкций типа Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Продукция"); без последующей проверки а действительно ли найдено - это откровенный говнокод. Хотя бы тупую заглушку вставили типа Если не найдено тогда а = 1/0; // ибо херня КонецЕсли . |
|||
7
AAA
03.01.25
✎
09:06
|
Виды номенклатуры вообще лучше создать руками. Это очень важный справочник. А затем уже цеплять нужные ссылки на элементы номенклатуры
|
|||
8
Волшебник
03.01.25
✎
10:56
|
(6) Это Ваше "а = 1/0;" - говнокод, а НайтиПоНаименованию() возвращает пустую ссылку, которая вполне годится для присваивания.
|
|||
9
Волшебник
03.01.25
✎
10:58
|
(0) А где чтение файла? где цикл?
|
|||
10
Злопчинский
03.01.25
✎
11:12
|
(8) я в курсе про пустую ссылку. Но пустой ссылки не должно быть там где должна быть непустая ссылка.
|
|||
11
Волшебник
03.01.25
✎
11:14
|
(10) А тут никто не говорил, что вид номенклатуры должен быть заполнен. Более того, здесь вообще нет никакого файла и цикла по его элементам, хотя утверждается "нужно из файла выгрузить информацию в справочник Номенклатура". Вся эта задача — полный бред от тупого бота.
|
|||
12
Александр111
03.01.25
✎
11:15
|
Если СсылкаН<>Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда НовыйЭлемент.ВидНоменклатуры=СсылкаН Иначе
Сообщить("Не такого вида номенклатуры"); Возврат; КонецЕсли; |
|||
13
Волшебник
03.01.25
✎
11:37
|
(12) нарушение лесенки
|
|||
14
Злопчинский
03.01.25
✎
11:54
|
//Проверка лесенки табом
Если Чтото Тогда КудаТо = КогдаТо + КтоТо; КонецЕсли; |
|||
15
Злопчинский
03.01.25
✎
11:55
|
//Проверка лесенки спейсом
Если Чтото Тогда КудаТо = КогдаТо + КтоТо; КонецЕсли; |
|||
16
Leshasem
03.01.25
✎
12:26
|
Проблема в том, что ссылка не является пустой, она получает уже значение вида Номенклатуры "Продукция" с описанием, но только при создании новой номенклатуры, почему-то в поле ввода написано слово Продукция, но оно не выбрано, нужно вручную еще раз выбрать Продукцию, и тогда становятся доступны остальные уже настроенные параметры под этот вид нуменклатуры, ставка НДС, характеристики, тип товара
|
|||
17
Александр111
03.01.25
✎
12:40
|
Тогда добавить пред записью
НовыйЭлемент.Заполнить(Неопределено); https://its.1c.ru/db/v8std/content/451/hdoc |
|||
18
Волшебник
03.01.25
✎
13:42
|
давайте уже читать файл!
Что мы возимся с этим соком?! Что там ещё в файле? Гвозди и валенки? |
|||
19
Злопчинский
03.01.25
✎
13:42
|
" получает уже значение вида Номенклатуры "Продукция" с описанием,"
- "с описанием".. хм.. что бы это значило, ну чисто интересно. |
|||
20
Злопчинский
03.01.25
✎
13:43
|
(16) а какой тип реквизита ВидНоменклатуры на форме еще до заполнения?
|
|||
21
Leshasem
03.01.25
✎
13:56
|
(20) СправочникСсылка.ВидыНоменклатуры
(18) Я убрал полностью цикл, чтобы посмотреть, что происходит , если добавить хотя бы 1 элемент |
|||
22
Leshasem
03.01.25
✎
15:15
|
(19) Вид номенклатуры состоит из наименования и описания
|
|||
23
Волшебник
03.01.25
✎
17:08
|
Интересное решение выставлять
ОбменДанными.Загрузка = Истина; И пытаться заполнить элемент интерактивно. Если не хватает СтавкаНДС, так добавьте строчку в программу Чтобы элемент нУменклатуры получился красивый |
|||
24
ИС-2
naïve
03.01.25
✎
17:20
|
(0) поставь точку оставновки в событии ПередЗаписью у объекта Номенклатура.
И если она не заполнена, то Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Продукция", Истина) не нашло ВидНоменклатуры. Если заполнена, то иди отладчик (F10) и смотри в табло (меню отладка-табло) когда она станет пустой. Только не забудь добавить в табло переменную ЭтотОбъект.ВидНоменклатуры |
|||
25
Волшебник
03.01.25
✎
17:48
|
(24) правильно так: НовыйЭлемент.ВидНоменклатуры
|
|||
26
Leshasem
03.01.25
✎
22:18
|
upd. решено
Просто во время создания элемента вызвал экспортную функцию ЗаполнитьРеквизитыПоВидуНоменклатуры |
|||
27
Волшебник
03.01.25
✎
23:24
|
(26) ой, там ещё много будет открытий, не прощаемся
|
|||
28
Злоп
04.01.25
✎
01:39
|
Я пока сделал вывод что некоторые восьмерочники нифига не знают что должно и зачем отрабатываться при создании нового элемента...
|
|||
29
craxx
04.01.25
✎
09:21
|
По поводу "ОбменДанными.Загрузка = Истина;" в УТ11/КА2/ERP.
Вообще это путь в ад, не только касательно номенклатуры. Ей потом пользоваться невозможно будет, если ты что-то неверно заполнил. Мало того, там создается еще служебная информация, которая в режиме загрузки не создастся. |
|||
30
Звездец
04.01.25
✎
09:30
|
(28) к сожалению это так, но не восьмерошники тут виноваты, а архитектура. Сейчас очень много действий навешано и многие из них выполнены очень не прозрачно и далеко не интуитивно понятно. Хотя если бы многие из них были выделены в отдельные небольшие методы, которые выполнялись бы после действий с объектом в фоне и с возможностью их отслеживания - то было бы сильно проще. А так да, что бы понимать, нужно очень плотно работать с объектом
|
|||
31
craxx
04.01.25
✎
09:38
|
(30) а еще есть ОбъектыРасчетов, которые используются примерно везде, превращая программное создание данных в адский ад.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |