|   |   | 
| 
 | создание штрихкодов для номенклатуры | ☑ | ||
|---|---|---|---|---|
| 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 | 
        да точно, спс     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |