|
v8: Как программно создать элемент в нужной группе справочника | ☑ | ||
---|---|---|---|---|
0
amadeus2010
27.09.13
✎
10:58
|
Добрый день пытаюсь создать программно группы справочника и записать в них элементы справочника. Все создается кроме групп. Вот код
///////////////////////////////////////////////////////////////// Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Наименование = Строка.Родитель; Группа.НаименованиеПолное = Строка.Родитель; Группа.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("məhsulları").Ссылка; Группа.Записать(); Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = Строка.Наименование; Спр.НаименованиеПолное=Строка.Наименование; Спр.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("əd"); Спр.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС; Спр.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("məhsulları").Ссылка; Спр.Весовой = Ложь; Спр.ЕдиницаДляОтчетов =Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("əd").Ссылка ; Спр.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("əd").Ссылка ; Спр.ОсновнойПоставщик = Справочники.Контрагенты.НайтиПоНаименованию(Строка.ОсновнойПоставщик).Ссылка; Спр.ЦеноваяГруппа =Справочники.ЦеновыеГруппы.НайтиПоНаименованию("розничная").Ссылка; Спр.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Родитель).Ссылка; Спр.Записать(); Штрихкоды= РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); Штрихкоды.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Штрихкоды.Владелец = Спр.Ссылка; Штрихкоды.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("əd").Ссылка; Штрихкоды.ПредставлениеШтрихкода = Строка.Штрихкоды; Штрихкоды.Штрихкод = Строка.Штрихкоды; Штрихкоды.Качество = Справочники.Качество.Новый; Штрихкоды.Записать(); //////////////////////////////////////////////////////////////////// В чем может заключаться ошибка? |
|||
1
salvator
27.09.13
✎
11:00
|
Спр.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Родитель).Ссылка;
а че не Спр.Родитель = Группа.Ссылка ? |
|||
2
amadeus2010
27.09.13
✎
11:02
|
(1) так тоже делал, все равно не создается группа
|
|||
3
catena
27.09.13
✎
11:11
|
Показывай, что вокруг, этот кусок кода рабочий.
|
|||
4
vicof
27.09.13
✎
11:16
|
НайтиПоНаименованию уже ссылку возвращает.
Только лишние запросы к базе плодишь. |
|||
5
amadeus2010
27.09.13
✎
11:19
|
Немного переделал код:
////////////////////////////////////////////////////// Таб = Номенклатура.Выгрузить(Новый Структура("Пометка", Истина)); ПоСтрокам = 1; КоличествоИспользуемыхСтрок = Номенклатура.Количество(); Для Каждого Строка Из Таб Цикл ПоСтрокам = ПоСтрокам + 1; Если Строка.Пометка Тогда Группа = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Родитель).Ссылка; Если Группа = Справочники.Номенклатура.ПустаяСсылка() Тогда Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Наименование = Строка.Родитель; Группа.НаименованиеПолное = Строка.Родитель; Группа.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("m?hsullar?"); Группа.Записать(); КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = Строка.Наименование; Спр.НаименованиеПолное=Строка.Наименование; Спр.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("?d"); Спр.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС; Спр.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("m?hsullar?").Ссылка; Спр.Весовой = Ложь; Спр.ЕдиницаДляОтчетов =Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d").Ссылка ; Спр.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d").Ссылка ; Спр.ОсновнойПоставщик = Справочники.Контрагенты.НайтиПоНаименованию(Строка.ОсновнойПоставщик).Ссылка; Спр.ЦеноваяГруппа =Справочники.ЦеновыеГруппы.НайтиПоНаименованию("розничная").Ссылка; Спр.Родитель = Группа.Ссылка; Спр.Записать(); Штрихкоды= РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); Штрихкоды.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Штрихкоды.Владелец = Спр.Ссылка; Штрихкоды.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d").Ссылка; Штрихкоды.ПредставлениеШтрихкода = Строка.Штрихкоды; Штрихкоды.Штрихкод = Строка.Штрихкоды; Штрихкоды.Качество = Справочники.Качество.Новый; Штрихкоды.Записать(); КонецЕсли; КонецЦикла; //////////////////////////////////////////////////////////// сейчас проверю |
|||
6
Aprobator
27.09.13
✎
11:47
|
за подобный код руки надо с корнем выворачивать.
|
|||
7
amadeus2010
27.09.13
✎
12:11
|
(6) зачем так сразу жестко, не работает только та часть котоая должна создать новые группы и поместить в них элементы справочника. Поэтому я и обратился за помощью
|
|||
8
Dzenn
гуру
27.09.13
✎
12:14
|
это что за еретизмы????
|
|||
9
amadeus2010
27.09.13
✎
12:24
|
господа давайте по существу вопроса, если есть ошибка в коде, то прошу подскажите как исправить
|
|||
10
Галахад
гуру
27.09.13
✎
12:31
|
А строка.родитель какой тип имеет?
|
|||
11
catena
27.09.13
✎
12:33
|
(9)По существу: код из (0) рабочий. Хоть и кривой. Я запускаю у себя, у меня всё создается в нужных папках. Либо в другой части кода у тебя что-то портит картину, либо ты что-то не то ожидаешь от этого кода.
|
|||
12
amadeus2010
27.09.13
✎
12:33
|
текстовый, все переменные имеют текстовый тип
|
|||
13
amadeus2010
27.09.13
✎
12:35
|
(11) мне от этого кода надо добиться загрузки товаров в новые группы, только у меня создаются элементы справочника без групп.
|
|||
14
vicof
27.09.13
✎
12:36
|
(13) а ты отладчиком пользовался?
|
|||
15
catena
27.09.13
✎
12:39
|
(13)Значит ты с ними дальше что-то делаешь. Или с группой.
|
|||
16
Галахад
гуру
27.09.13
✎
12:40
|
(14) + 1.
Чему равно Справочники.Номенклатура.НайтиПоНаименованию(Строка.Родитель) |
|||
17
amadeus2010
27.09.13
✎
12:42
|
(16) Справочники.Номенклатура.НайтиПоНаименованию(Строка.Родитель)=Группа;
|
|||
18
Галахад
гуру
27.09.13
✎
12:43
|
(17) Посмотри в отладчике, чему равно (16)
|
|||
19
amadeus2010
27.09.13
✎
12:50
|
сейчас проверю
|
|||
20
amadeus2010
27.09.13
✎
12:58
|
(18) в отладчике (16) равно имени группы, также по отладчику создаются все элементы и группы,
|
|||
21
Галахад
гуру
27.09.13
✎
12:59
|
Значит вопрос решен?
|
|||
22
amadeus2010
27.09.13
✎
13:00
|
в том то и дело что в сам справочник садятся только наименования товаров без групп
|
|||
23
catena
27.09.13
✎
13:02
|
Эх... Меня игнорируют...
|
|||
24
Галахад
гуру
27.09.13
✎
13:03
|
(22) Может ты просто не видишь групп?
|
|||
25
kosts
27.09.13
✎
13:06
|
(24) Ха-ха, в самом деле может быть...
|
|||
26
catena
27.09.13
✎
13:12
|
(24)Отключенная иерархия?
|
|||
27
Галахад
гуру
27.09.13
✎
13:15
|
(26) Ну, как вариант. Не понятно какая у него конфигурация.
|
|||
28
amadeus2010
27.09.13
✎
13:56
|
Конфигурация УТ 10.3.21.2 типовая
|
|||
29
amadeus2010
27.09.13
✎
14:43
|
есть кто?
|
|||
30
Rovan
гуру
27.09.13
✎
14:56
|
(29) да тут полно народу ... запаслись попкорном
|
|||
31
amadeus2010
27.09.13
✎
15:13
|
(30)придется запастись терпением народу:))
|
|||
32
catena
27.09.13
✎
15:19
|
(30)Да ну, он скучный: на контакт не идет, на вопросы не отвечает.
|
|||
33
amadeus2010
27.09.13
✎
15:37
|
(32)да не Красавица я не скучный, просто занят был этой обработкой, кстати вопрос решился, группы создаются и элементы записываются в свои группы, только пока не записываются
Спр.ЕдиницаДляОтчетов Спр.ЕдиницаХраненияОстатков Если указать Спр.ЕдиницаДляОтчетов = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d"); то пишется что не правильно указан владелец для этих переменных, хотя в свойствах реквизита у ЕдиницаДляОтчетов указано СправочникСсылка.ЕдиницыИзмерения вот исправленный код //////////////////////////////////////////////////////////// Группа = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Родитель); Если Группа = Справочники.Номенклатура.ПустаяСсылка() Тогда Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Наименование = Строка.Родитель; Группа.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("m?hsullar?"); Группа.Записать(); КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = Строка.Наименование; Спр.НаименованиеПолное=Строка.Наименование; Спр.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("?d"); Спр.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС; Спр.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("m?hsullar?"); Спр.Весовой = Ложь; Спр.ЕдиницаДляОтчетов = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("?d"); Спр.ЕдиницаХраненияОстатков = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("?d"); Спр.ОсновнойПоставщик = Справочники.Контрагенты.НайтиПоНаименованию(Строка.ОсновнойПоставщик).Ссылка; Спр.ЦеноваяГруппа =Справочники.ЦеновыеГруппы.НайтиПоНаименованию("розничная").Ссылка; Спр.Родитель = Группа.Ссылка; Спр.Записать(); Штрихкоды= РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); Штрихкоды.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Штрихкоды.Владелец = Спр.Ссылка; Штрихкоды.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d"); Штрихкоды.ПредставлениеШтрихкода = Строка.Штрихкоды; Штрихкоды.Штрихкод = Строка.Штрихкоды; Штрихкоды.Качество = Справочники.Качество.Новый; Штрихкоды.Записать(); ////////////////////////////////////////////////////////// |
|||
34
Rovan
гуру
27.09.13
✎
15:50
|
(33) СправочникСсылка.ЕдиницыИзмерения подчинен Справочнику Номенклатура
|
|||
35
amadeus2010
27.09.13
✎
15:57
|
я пробывал также Спр.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("еd"); также выходит ошибка Владельца справочника
|
|||
36
amadeus2010
27.09.13
✎
16:01
|
там получается что после нажатия кнопки записать автоматически единица измерения от Базовая единица измерения присваивается Единица хранения отчетов или остатков т.е если выбрали шт., то и в других будет шт.
|
|||
37
catena
27.09.13
✎
16:03
|
(35)Владелец ей нужен, подчиненный же справочник.
|
|||
38
amadeus2010
27.09.13
✎
16:05
|
(37) т.е для Спр.ЕдиницаДляОтчетов=Спр.Владелец;
|
|||
39
amadeus2010
27.09.13
✎
16:39
|
есть кто? или попкорн закончился?
|
|||
40
Franchiser
гуру
27.09.13
✎
16:43
|
Тебе справочник надо 2 раза записывать: перед тем как пишешь единицу измерения, чтобы была ссылка на владельца и после.
|
|||
41
amadeus2010
27.09.13
✎
16:45
|
(40) не совсем понял,поясни на примере пожалуйста
|
|||
42
samozvanec
27.09.13
✎
16:46
|
(41) смотри СП метод УстановитьСсылкуНового()
|
|||
43
amadeus2010
27.09.13
✎
16:46
|
как бы так
Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = Строка.Наименование; Спр.НаименованиеПолное=Строка.Наименование; Спр.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("?d"); Спр.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС; Спр.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("m?hsullar?"); Спр.Весовой = Ложь; Спр.ОсновнойПоставщик = Справочники.Контрагенты.НайтиПоНаименованию(Строка.ОсновнойПоставщик).Ссылка; Спр.ЦеноваяГруппа =Справочники.ЦеновыеГруппы.НайтиПоНаименованию("розничная").Ссылка; Спр.Родитель = Группа.Ссылка; Спр.Записать(); Спр.ЕдиницаДляОтчетов = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d").Ссылка; Спр.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d").Ссылка; Спр.Записать(); |
|||
44
Franchiser
гуру
27.09.13
✎
16:48
|
Тебе надо создавать элемент спавочника единицы измерения. Создавать элемент, получать объект и т.д.
|
|||
45
Franchiser
гуру
27.09.13
✎
16:51
|
Единица измерения подчинена владельцу, то есть номенклатуре. Пишу с планшета поэтому пример не напишу
|
|||
46
User_Agronom
27.09.13
✎
16:54
|
Нормально группа создается. Возможно переменная Строка в поле Родитель ничего не содержит.
Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Наименование = "Группа номенклатуры"; Группа.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар"); Группа.Записать(); |
|||
47
amadeus2010
27.09.13
✎
17:03
|
(46) сейчас вопрос по Спр.ЕдиницаДляОтчетов = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d").Ссылка;
Спр.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d").Ссылка; При загрузке выходит ошибка Владельца справочника |
|||
48
Franchiser
гуру
27.09.13
✎
17:34
|
Делай поиск запросом с учетом владельца -ссылки на справочник номенклатура....
|
|||
49
Franchiser
гуру
27.09.13
✎
17:37
|
Или так: справочники.единицыизмерения.найтипонаименованию(наименование,,спр.ссылка)
Справочники.<НазваниеСправочника>.НайтиПоНаименованию (<Значение>, <ПоискПоПолномуСоответсвию>, <Родитель>, <Владелец>) |
|||
50
Franchiser
гуру
27.09.13
✎
17:38
|
точнее справочники.единицыизмерения.найтипонаименованию(наименование,,,спр.ссылка)
|
|||
51
Franchiser
гуру
27.09.13
✎
17:43
|
Только если номенклатура новая то ты ничего не найдешь, надо создавать
|
|||
52
User_Agronom
27.09.13
✎
17:46
|
(47) Ну вот про единицы измерения точно нужно man покурить. Ибо искать по наименованию не совсем правильно: так как в организации может числиться автомобиль Mersedes 1 шт и ручка шариковая тоже 1 шт.
Наименование одно, а вот владельцы разные. |
|||
53
SanGvin
27.09.13
✎
17:50
|
пятнично
|
|||
54
amadeus2010
28.09.13
✎
10:25
|
тогда можно по коду товара
|
|||
55
amadeus2010
28.09.13
✎
12:08
|
или можно создать так
////////////////////////////////////////////// Спр.ЕдиницаДляОтчетов = Спр.Ссылка.БазоваяЕдиницаИзмерения.Владелец; Спр.ЕдиницаХраненияОстатков = Спр.Ссылка.БазоваяЕдиницаИзмерения.Владелец; /////////////////////////////////////////////// |
|||
56
Franchiser
гуру
28.09.13
✎
13:59
|
(55) перед тем как что то делать посмотри какой тип у конкретного реквизита в конфигураторе,. Так нельзя, типы не совпадут...
|
|||
57
amadeus2010
30.09.13
✎
15:19
|
добрый день снова обращаюсь со старым вопросом, при загрузке обработкой списка товаров в справочник номенклатура не записываются реквизиты ЕдХраненияОстатков и ЕдДляОтчетов.
Вот исходный код /////////////////////////////////////////////////////// Группа = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Родитель); Если Группа = Справочники.Номенклатура.ПустаяСсылка() Тогда Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Наименование = Строка.Родитель; Группа.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("m?hsullar?"); Группа.Записать(); КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = Строка.Наименование; Спр.НаименованиеПолное=Строка.Наименование; Спр.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("?d"); //Спр.ЕдиницаДляОтчетов = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d"); //Спр.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d"); Спр.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС; Спр.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("m?hsullar?"); Спр.Весовой = Ложь; Спр.ОсновнойПоставщик = Справочники.Контрагенты.НайтиПоНаименованию(Строка.ОсновнойПоставщик).Ссылка; Спр.ЦеноваяГруппа =Справочники.ЦеновыеГруппы.НайтиПоНаименованию("розничная").Ссылка; Спр.Родитель = Группа.Ссылка; Спр.Записать(); Штрихкоды= РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); Штрихкоды.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Штрихкоды.Владелец = Спр.Ссылка; Штрихкоды.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("?d"); Штрихкоды.ПредставлениеШтрихкода = Строка.Штрихкоды; Штрихкоды.Штрихкод = Строка.Штрихкоды; Штрихкоды.Качество = Справочники.Качество.Новый; Штрихкоды.Записать(); Выборка = Справочники.ЕдиницыИзмерения.Выбрать(, Спр.Ссылка); Если Не Выборка.Следующий() Тогда ЕдИзмерения = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); ЕдИзмерения.Владелец = Спр.Ссылка; ЕдИзмерения.ЕдиницаПоКлассификатору = Спр.БазоваяЕдиницаИзмерения; ЕдИзмерения.Коэффициент = 1; ЕдИзмерения.Наименование = Спр.БазоваяЕдиницаИзмерения.Наименование; ЕдИзмерения.Записать(); КонецЕсли; Спр.ЕдиницаДляОтчетов = ЕдИзмерения.Ссылка; Спр.ЕдиницаХраненияОстатков = ЕдИзмерения.Ссылка; ///////////////////////////////////////////////////////// |
|||
58
amadeus2010
30.09.13
✎
15:19
|
остальные реквизиты записаны
|
|||
59
amadeus2010
30.09.13
✎
15:28
|
есть кто?
|
|||
60
hhhh
30.09.13
✎
15:39
|
(59) снова пятница?
Спр.Записать(); |
|||
61
User_Agronom
30.09.13
✎
15:39
|
(57) Выбрось отсюда лишнее, оставь только то, что связано с вопросом.
|
|||
62
amadeus2010
30.09.13
✎
15:43
|
(61) с вопросом по коду связано то что не могу загрузить Единицы измерения для отчетов и для хранения остатков.
(60) Спр.записать надо 2 раза повторить насколько я понял из вашего ответа? |
|||
63
hhhh
30.09.13
✎
15:47
|
(62) ну смотрите (43), ведь правильно у вас было.
|
|||
64
amadeus2010
30.09.13
✎
15:48
|
(60) спасибо за совет получилось, упустил из виду что Спр.записать(); надо указать и после присвоения значения Ед хранения остатков и отчетов
|
|||
65
amadeus2010
30.09.13
✎
16:16
|
еще один вопрос призагрузке 20140 наименований товара вышла ошибка
{Обработка.ЗагрузкаСправочникаНоменклатуры.Форма.Форма.Форма(255)}: Ошибка при вызове метода контекста (Записать) Спр.Записать(); по причине: Значение поля "Родитель" должно быть группой хотя когда тестировал с 15 записями и разными группами такой ошибки не было |
|||
66
amadeus2010
30.09.13
✎
16:21
|
кажется понял в листе ексель клиент дал записи вперемешку, в поле наименование товара попали пустые группы
|
|||
67
hhhh
30.09.13
✎
16:21
|
значит есть группа и элемент с одинаковыми наименованиями
|
|||
68
amadeus2010
30.09.13
✎
16:56
|
у клиента есть группа и элемент с одинаковым именем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |