Имя: Пароль:
1C
 
Как записать программно вид номенклатуры
0 andrspir
 
08.05.08
14:09
Подскажите как при записи нового элемента в Номенклатуру перед этим еще и записать Вид Номенклатуры?
1 Злобный Йожег
 
08.05.08
14:11
У самой номенклатуры или просто в справочник "ВидыНоменклатуры"?
2 andrspir
 
08.05.08
14:14
У самой номенклатуры верси 8.1
3 Злобный Йожег
 
08.05.08
14:16
НовВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
НовВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.КакойТоТип;
НовВидНоменклатуры.Записать();

Номенклатура.ВидНоменклатуры = НовВидНоменклатуры.Ссылка;

Это если новый вид номенклатуры
4 Злобный Йожег
 
08.05.08
14:17
Забыл написать... Наименование вида номенклатуры при создании тоже укажи...
5 andrspir
 
08.05.08
14:17
А то ситуация такая подготовлены элементы номенклатуры для записи и вылетает ошибка что сначала надо записать ВидНоменклатуры
6 Злобный Йожег
 
08.05.08
14:21
Ну... получилось?
7 andrspir
 
08.05.08
14:26
пока нет все равно та же ошибка
8 Злобный Йожег
 
08.05.08
14:27
Покажи, как делаешь
9 andrspir
 
08.05.08
14:29
//Наконец то начинаем записывать элементы
       НовВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
       НовВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
       НовВидНоменклатуры.Записать();

       Номенклатура.ВидНоменклатуры = НовВидНоменклатуры.Ссылка;

   
   
   
   
   Сообщить("********************************************************");
   Сообщить("Протокол загрузки товаров из файла <"+СокрЛП(ИмяФайла)+">");
   Если СоздатьДокументУстановкаЦенНоменклатуры=Истина Тогда
       ТабТиповЦен=новый ТаблицаЗначений;
       ТабТиповЦен.колонки.Добавить("Элемент");
       ТабТиповЦен.колонки.Добавить("Цена1");
       ТабТиповЦен.колонки.Добавить("Цена2");
       ТабТиповЦен.колонки.Добавить("Цена3");
       ТабТиповЦен.колонки.Добавить("ЕдИзм");
   КонецЕсли;    
   КолНовыхТоваров=0;
   КолСтарыхТоваров=0;
   Для индСтроки=0 По ДеревоПоставщика.строки.Количество()-1 цикл
       строкаПоставщика=ДеревоПоставщика.Строки.Получить(индСтроки);
       Если строкаПоставщика.строки.Количество()=0 Тогда
           строкаНоменклатуры=Неопределено;
           ЗагрузитьЭлементНоменклатуры(строкаПоставщика,строкаНоменклатуры);
           Продолжить;
       КонецЕсли;
       строкаНоменклатуры=деревоНоменклатуры.строки.Найти(строкаПоставщика.Наименование);
       Если строкаНоменклатуры=Неопределено Тогда
           Продолжить;
       КонецЕсли;
       Для индСтроки1=0 По строкаПоставщика.строки.Количество()-1 цикл
           строкаПоставщика1=строкаПоставщика.Строки.Получить(индСтроки1);
           Если строкаПоставщика1.строки.Количество()=0 Тогда
               ЗагрузитьЭлементНоменклатуры(строкаПоставщика1,строкаНоменклатуры);
               Продолжить;
           КонецЕсли;
           строкаНоменклатуры1=строкаНоменклатуры.Строки.Найти(строкаПоставщика1.Наименование);
           Если строкаНоменклатуры1=Неопределено Тогда
               Продолжить;
           КонецЕсли;
           Для индСтроки2=0 По строкаПоставщика1.строки.Количество()-1 цикл
               строкаПоставщика2=строкаПоставщика1.Строки.Получить(индСтроки2);
               Если строкаПоставщика2.строки.Количество()=0 Тогда
                   ЗагрузитьЭлементНоменклатуры(строкаПоставщика2,строкаНоменклатуры1);
                   Продолжить;
               КонецЕсли;
               строкаНоменклатуры2=строкаНоменклатуры1.Строки.Найти(строкаПоставщика2.Наименование);
               Если строкаНоменклатуры2=Неопределено Тогда
                   Продолжить;
               КонецЕсли;
               Для индСтроки3=0 По строкаПоставщика2.строки.Количество()-1 цикл
                   строкаПоставщика3=строкаПоставщика2.Строки.Получить(индСтроки3);
                   Если строкаПоставщика3.строки.Количество()=0 Тогда
                       ЗагрузитьЭлементНоменклатуры(строкаПоставщика3,строкаНоменклатуры2);
                       Продолжить;
                   КонецЕсли;
                   строкаНоменклатуры3=строкаНоменклатуры2.Строки.Найти(строкаПоставщика3.Наименование);
                   Если строкаНоменклатуры3=Неопределено Тогда
                       Продолжить;
                   КонецЕсли;
                   Для индСтроки4=0 По строкаПоставщика3.строки.Количество()-1 цикл
                       строкаПоставщика4=строкаПоставщика3.Строки.Получить(индСтроки4);
                       ЗагрузитьЭлементНоменклатуры(строкаПоставщика4,строкаНоменклатуры3);
                   КонецЦикла;    
               КонецЦикла;    
           КонецЦикла;    
       КонецЦикла;    
   КонецЦикла;    
   Сообщить("Записано новых товаров в справочник номенклатуры <"+СокрЛП(КолНовыхТоваров)+">");
   Сообщить("Изменены параметры имеющихся товаров в справочнике номенклатуры <"+СокрЛП(КолСтарыхТоваров)+">");
   Сообщить("********************************************************");
   Если СоздатьДокументУстановкаЦенНоменклатуры=Ложь Тогда
       Возврат;
   КонецЕсли;    



Переменная Номенклатура не определена
10 andrspir
 
08.05.08
14:32
Это кусок из обработки которая работала в версии 8.0
а в 8.1 после конвертации она ругается что нет записи ВидаНоменклатуры при записи элемента в справочник номенклатура
11 Mitriy
 
08.05.08
14:33
(10) а дословно ошибку выложи?
12 andrspir
 
08.05.08
14:36
После добавленПротокол загрузки товаров из файла <C:\NIX3.XLS>
Перед записью в элементе справочника "Номенклатура" необходимо заполнить "вид номенклатуры"!
13 Злобный Йожег
 
08.05.08
14:38
Копай там, где у тебя переменной КолНовыхТоваров (и КолСтарыхТоваров наверно тож...) прибавляется 1.
14 andrspir
 
08.05.08
14:38
Вот ссылка на эту обработку под 8.0
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=120&lid=7018

а после конвертации в 8.1 не хочет записывать элементы
15 Злобный Йожег
 
08.05.08
14:39
+(13) Там смотри, как названа та переменная, которой соответствует элемент справочника "Номенклатура", и к ней обращайся. Используй там участок кода в (3)
16 andrspir
 
08.05.08
14:39
буду искать
17 andrspir
 
08.05.08
14:42
вот эта
элемент=Справочники.Номенклатура.СоздатьЭлемент();
18 Злобный Йожег
 
08.05.08
14:44
Ну и пиши:

НовВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
НовВидНоменклатуры.Наименование = "Товар";
НовВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
НовВидНоменклатуры.Записать();

Элемент.ВидНоменклатуры = НовВидНоменклатуры.Ссылка;

У тебя идет загрузка откуда-то?
19 andrspir
 
08.05.08
14:46
загрузка из файла xls
20 Злобный Йожег
 
08.05.08
14:47
(19) В нем не указано, какие виды должны быть у номенклатуры?
21 andrspir
 
08.05.08
14:49
Все получилось !!!!!!!!!!!!!!!!!!!!!!!!!!!
Огромное спасибо !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший