|
создание штрихкодов для номенклатуры | ☑ | ||
---|---|---|---|---|
0
Валидатор
06.11.13
✎
12:14
|
Гружу данные из файла в ТЗ, и потом на основании этой ТЗ гружу штрихкоды в номенклатуру, так вот, возникает проблема при загрузке штрихкода, делаю так:
Штрихкоды = РС.Штрихкоды. а что мы выбираем потом? нет варианта про создание новой записи, только: СоздатьНаборЗаписи и СоздатьМенеджерЗаписи( |
|||
1
Rie
06.11.13
✎
12:15
|
(0) СоздатьМенеджерЗаписи - что, по-твоему, делает?
|
|||
2
Валидатор
06.11.13
✎
12:16
|
(1) а точно, не увидел видимо(
|
|||
3
Валидатор
06.11.13
✎
12:26
|
ругается, что поле недоступно для записи
{Форма.Форма.Форма(140)}: Поле объекта недоступно для записи (ШтрихКодыНоменклатуры) ШтрихкодыНоменклатуры = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); |
|||
4
Валидатор
06.11.13
✎
12:30
|
НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НоменклатураОбъект.Наименование = Наименование; НоменклатураОбъект.НаименованиеПолное = Наименование; НоменклатураОбъект.Родитель = Группа; НоменклатураОбъект.Артикул = Артикул; ЕдиницаИзмерения = "шт"; НоменклатураОбъект.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдиницаИзмерения); НоменклатураОбъект.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; //Создаем штрихкоды ШтрихкодыНоменклатуры = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); ШтрихКодыНоменклатуры.Владелец = НоменклатураОбъект; ШтрихКодыНоменклатуры.Штрихкод = Штрихкод; ШтрихКодыНоменклатуры.ЕдиницаИзмерения = ЕдиницаИзмерения; ШтрихКодыНоменклатуры.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Попытка ШтрихКодыНоменклатуры.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
5
Гефест
06.11.13
✎
12:33
|
Правильно ругается. Нечего переменные как элементы формы обзывать
|
|||
6
Валидатор
06.11.13
✎
12:36
|
(5) переименовал переменную штрихкод, тоже самое, так что врядли из за наименований
|
|||
7
Гефест
06.11.13
✎
12:38
|
Следующий уровень сложности? Нужно угадать, где ты накосячил не видя кода?
|
|||
8
Валидатор
06.11.13
✎
12:38
|
Функция СоздатьНоменклатуру(Артикул,Наименование,Группа, ШтрихкодыНомен)
НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент(); НоменклатураОбъект.Наименование = Наименование; НоменклатураОбъект.НаименованиеПолное = Наименование; НоменклатураОбъект.Родитель = Группа; НоменклатураОбъект.Артикул = Артикул; ЕдиницаИзмерения = "шт"; НоменклатураОбъект.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдиницаИзмерения); НоменклатураОбъект.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; //Создаем штрихкоды ШтрихкодыНоменклатуры = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); ШтрихКодыНоменклатуры.Заполнить( ШтрихКодыНоменклатуры.Владелец = НоменклатураОбъект; ШтрихКодыНоменклатуры.Штрихкод = ШтрихкодыНомен; ШтрихКодыНоменклатуры.ЕдиницаИзмерения = ЕдиницаИзмерения; ШтрихКодыНоменклатуры.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Попытка ШтрихКодыНоменклатуры.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; // Создадим ед.изм. ЕдИзмОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); ЕдИзмОбъект.Владелец = НоменклатураОбъект; ЕдИзмОбъект.Наименование = ЕдиницаИзмерения; ЕдИзмОбъект.ЕдиницаПоКлассификатору = ЕдиницаИзмерения; ЕдИзмОбъект.Коэффициент = 1; Попытка ЕдИзмОбъект.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; НоменклатураОбъект.ЕдиницаДляОтчетов = ЕдИзмОбъект.Ссылка; НоменклатураОбъект.ЕдиницаХраненияОстатков = ЕдИзмОбъект.Ссылка; Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Возврат Номенклатура; КонецФункции //СоздатьНоменклатуру вот функция по созданию номенклатуры |
|||
9
Ненавижу 1С
гуру
06.11.13
✎
12:39
|
НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
ШтрихКодыНоменклатуры.Владелец = НоменклатураОбъект; //так нельзя |
|||
10
hhhh
06.11.13
✎
12:39
|
(8) ну ошибка
Поле объекта недоступно для записи (ШтрихКодыНоменклатуры) зачем вы переменную Штрихкод переименовывали? |
|||
11
Rie
06.11.13
✎
12:41
|
(8) Не, даже гадать не буду. Поскольку это - не тот код, который исполняется.
|
|||
12
Валидатор
06.11.13
✎
12:43
|
(11) там сначала все в ТЗ грузится, а потом данные из тз передаются в эту функцию:
Для каждого Строчка из ТаблицаЗначений Цикл НоменклатураПоискПоНаименованию = Справочники.Номенклатура.НайтиПоНаименованию(Строчка.Артикул); Если НоменклатураПоискПоНаименованию = Справочники.Номенклатура.ПустаяСсылка() Тогда НоменклатураПоискПоНаименованию = СоздатьНоменклатуру(Строчка.Артикул, Строчка.Номенклатура, ГруппаТоваровНов,Строчка.Штрихкод); НоменклатураПоискПоНаименованию = НоменклатураПоискПоНаименованию.Ссылка; КонецЕсли; |
|||
13
Валидатор
06.11.13
✎
12:43
|
(10) ошибка летит все равно на строке когда я создаю менеджер записей в РС в коде из (8)
|
|||
14
hhhh
06.11.13
✎
12:45
|
(13) а так?
ОфигительныеШтрихкодыНоменклатуры = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); ??? |
|||
15
Alex S D
06.11.13
✎
12:45
|
см (5)
|
|||
16
Валидатор
06.11.13
✎
12:45
|
отладчиком смотрел, доходит суда:
ШтрихкодыНоменклатуры = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); и валит ошибку |
|||
17
Rie
06.11.13
✎
12:46
|
(12) Не знаю, что там куда грузится. Но код с синтаксическими ошибками - не исполняется. Давай реальный код.
|
|||
18
Гефест
06.11.13
✎
12:47
|
(13) Зачем ты переименовал постороннюю переменную, а не ту, на которую у тебя ошибка?
А вообще, выбрось весь этот код |
|||
19
hhhh
06.11.13
✎
12:50
|
(16) ШтрихкодыНоменклатуры - это переменная, элемент твоей формы. Зачем ты в нее регистр сведений какой-то впихиваешь?
|
|||
20
Валидатор
06.11.13
✎
12:51
|
да с переменной я уже понял, что надо было переименовать ее, теперь тут вылезает проблема при записи, сейчас скину ошибку, не записывается штрихкод
|
|||
21
Валидатор
06.11.13
✎
12:52
|
ругается на владельца, хоть я и ставлю Номенклатуру в владельцы штрихкодов только после записи уже созданной номенклатуры
|
|||
22
Ненавижу 1С
гуру
06.11.13
✎
12:54
|
(21) см (9)
|
|||
23
hhhh
06.11.13
✎
12:56
|
(21) это не номенклатуру ставите, а НоменклатуруОбъект.
|
|||
24
Валидатор
06.11.13
✎
12:59
|
{Форма.Форма.Форма(148)}: Ошибка при вызове метода контекста (Записать): Значение поля "Номенклатура" не заполнено или заполнено неверно
Штрихкод: 4602634334795<неи уже имеет владельца "ОБЛОЖКА ДЛЯ ПРАВ,ДОВЕРЕН.". {Форма.Форма.Форма(171)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Штрихкоды"! При первом запуске обработке, номенклатура создается, и пишется в нее штрихкод, потом вылетает ошибка: {Форма.Форма.Форма(148)}: Ошибка при вызове метода контекста (Записать): Значение поля "Номенклатура" не заполнено или заполнено неверно Когда повторно запускаю обработку вылетает: Штрихкод: 4602634334795<неи уже имеет владельца "ОБЛОЖКА ДЛЯ ПРАВ,ДОВЕРЕН.". {Форма.Форма.Форма(171)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Штрихкоды"! 1 вопрос: почему при первом создании валится ошибка 2. как сделать проверку на наличие данных в РС? через срез последних? |
|||
25
Валидатор
06.11.13
✎
12:59
|
Функция СоздатьНоменклатуру(Артикул,Наименование,Группа, Штрихкод)
НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент(); НоменклатураОбъект.Наименование = Наименование; НоменклатураОбъект.НаименованиеПолное = Наименование; НоменклатураОбъект.Родитель = Группа; НоменклатураОбъект.Артикул = Артикул; ЕдиницаИзмерения = "шт"; НоменклатураОбъект.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдиницаИзмерения); НоменклатураОбъект.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; // Создадим ед.изм. ЕдИзмОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); ЕдИзмОбъект.Владелец = НоменклатураОбъект; ЕдИзмОбъект.Наименование = ЕдиницаИзмерения; ЕдИзмОбъект.ЕдиницаПоКлассификатору = ЕдиницаИзмерения; ЕдИзмОбъект.Коэффициент = 1; Попытка ЕдИзмОбъект.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; НоменклатураОбъект.ЕдиницаДляОтчетов = ЕдИзмОбъект.Ссылка; НоменклатураОбъект.ЕдиницаХраненияОстатков = ЕдИзмОбъект.Ссылка; Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; //Создаем штрихкоды Штрихкоды = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); ШтрихКоды.Владелец = Номенклатура; ШтрихКоды.Штрихкод = Штрихкод; ШтрихКоды.ЕдиницаИзмерения = ЕдиницаИзмерения; ШтрихКоды.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Штрихкоды.Качество = Справочники.Качество.Новый; Попытка ШтрихКоды.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Возврат Номенклатура; КонецФункции //СоздатьНоменклатуру |
|||
26
Rie
06.11.13
✎
13:04
|
(25) Вот это:
ЕдИзмОбъект.Владелец = НоменклатураОбъект; впечатляет! Друг! Разберись с системой типов в 1С! |
|||
27
Валидатор
06.11.13
✎
13:05
|
(26) эту строку я убрал, там Неопределено потому что присвается тип спр.номенклатуры
|
|||
28
Rie
06.11.13
✎
13:07
|
(27) "Друг! Разберись с системой типов в 1С!" (с)
Ну, пожалуйста! Убрал строку - а дальше-то что? Кто владельцем будет? И - показывай _рабочий_ код. А то с телепятией что-то сегодня туговато, кто знает, что там у тебя на самом деле выполняется... |
|||
29
Валидатор
06.11.13
✎
13:09
|
(28) а какого владельца я тогда присвою, если у владельца тип неопределено?
|
|||
30
Валидатор
06.11.13
✎
13:10
|
(28) выполняется тот код, который я присылал где функция создать номенклатуру
|
|||
31
hhhh
06.11.13
✎
13:12
|
ЕдИзмОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ЕдИзмОбъект.Владелец = Номенклатура; ЕдИзмОбъект.Наименование = ЕдиницаИзмерения; ЕдИзмОбъект.ЕдиницаПоКлассификатору = ЕдиницаИзмерения; ЕдИзмОбъект.Коэффициент = 1; Попытка ЕдИзмОбъект.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; НоменклатураОбъект.ЕдиницаДляОтчетов = ЕдИзмОбъект.Ссылка; НоменклатураОбъект.ЕдиницаХраненияОстатков = ЕдИзмОбъект.Ссылка; Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
32
Валидатор
06.11.13
✎
13:13
|
с владельцем разобрался, сотался штрихкод
|
|||
33
Валидатор
06.11.13
✎
13:15
|
Функция СоздатьНоменклатуру(Артикул,Наименование,Группа, Штрихкод)
НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент(); НоменклатураОбъект.Наименование = Наименование; НоменклатураОбъект.НаименованиеПолное = Наименование; НоменклатураОбъект.Родитель = Группа; НоменклатураОбъект.Артикул = Артикул; ЕдиницаИзмерения = "шт"; НоменклатураОбъект.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЕдиницаИзмерения); НоменклатураОбъект.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; // Создадим ед.изм. ЕдИзмОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); ЕдИзмОбъект.Владелец = Номенклатура; ЕдИзмОбъект.Наименование = ЕдиницаИзмерения; ЕдИзмОбъект.ЕдиницаПоКлассификатору = ЕдиницаИзмерения; ЕдИзмОбъект.Коэффициент = 1; Попытка ЕдИзмОбъект.Записать(); Исключение КонецПопытки; НоменклатураОбъект.ЕдиницаДляОтчетов = ЕдИзмОбъект.Ссылка; НоменклатураОбъект.ЕдиницаХраненияОстатков = ЕдИзмОбъект.Ссылка; Попытка НоменклатураОбъект.Записать(); Номенклатура = НоменклатураОбъект.Ссылка; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; //Создаем штрихкоды Штрихкоды = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); ШтрихКоды.Владелец = Номенклатура; ШтрихКоды.Штрихкод = Штрихкод; ШтрихКоды.ЕдиницаИзмерения = ЕдиницаИзмерения; ШтрихКоды.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; Штрихкоды.Качество = Справочники.Качество.Новый; Попытка ШтрихКоды.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Возврат Номенклатура; КонецФункции //СоздатьНоменклатуру ругается что уже есть владелец Штрихкод: 4602634334795<неи уже имеет владельца "ОБЛОЖКА ДЛЯ ПРАВ,ДОВЕРЕН.". {Форма.Форма.Форма(175)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Штрихкоды"! какую проверку сделать на наличие владельца? |
|||
34
Rie
06.11.13
✎
13:19
|
(32) Измерения - уникальны. Вот это и смотри. IMHO.
|
|||
35
Валидатор
06.11.13
✎
13:24
|
При поиске по реквизиту, мы указываем ведь 2 нужных параметра из 4 по сути, это наименование реквизита в объекте, и какое значение ищем, так ведь?
|
|||
36
Валидатор
06.11.13
✎
13:25
|
То есть если я хочу найти значение(Строчка.Артикул) по реквизиту в справочнике номенклатура, буду делать так:
Поиск = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Строчка.Артикул); так? |
|||
37
Валидатор
06.11.13
✎
13:26
|
да точно, спс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |