Имя: Пароль:
1C
1С v8
Подскажите как создать спецификацию
0 msk-07
 
22.04.14
14:22
Подскажите, имея наименование в коде номенклатуры, как можно создать для этой номенклатуры спецификацию?

примерно шаблон кода напишите.

Буду очень признателен!
1 shuhard
 
22.04.14
14:29
(0) [наименование в коде номенклатуры]
чё ?
2 wade25
 
22.04.14
14:34
(1) Посмотри темы ТС.
А автор имеет ввиду как программно создать спецификацию номенклатуры.
  (0) Смотри, в каком регистре хранятся спецификации и гугли как создать запись в регистре сведений.
3 neo_matrix_123
 
22.04.14
14:35
есть такое. щас раскопаю
4 NcSteel
 
22.04.14
14:37
У меня есть палка копалка, подскажите как стать человеком?
5 vicof
 
22.04.14
14:39
(4) Нужно копать. И чем больше, тем лучше.
6 msk-07
 
22.04.14
14:48
(3) Буду благодарен если шаблончик какой нибудь кинешь.
7 neo_matrix_123
 
22.04.14
14:51
кстати не к системе интеграции случаем это надо. то, что ищу, у меня для лоцман
8 msk-07
 
22.04.14
14:53
(7) это нужно лично мне
9 vicof
 
22.04.14
15:05
(0)
Спека = Справочники.СпецификацииНоменклатуры.СоздатьЭлемент();
Спека.Владелец = СсылканаНоменклатуру;
Спека.Записать();
10 vicof
 
22.04.14
15:05
(8) Давно бы уже руки к клаве протянул и попробовал
11 Kalambur
 
22.04.14
15:06
(9) Спека.Владелец = Спека.ВыходныеИзделия.Номенклатура
12 vicof
 
22.04.14
15:08
(11) А тут детали не уточняются, просили пример кода.
13 neo_matrix_123
 
22.04.14
15:17
СоединениеСТаблицейСпецификаций();    
    РодительСпецификаций = Справочники.СпецификацииНоменклатуры.НайтиПоНаименованию("Спецификации из Лоцмана");
    
    Если РодительСпецификаций = Справочники.СпецификацииНоменклатуры.ПустаяСсылка() Тогда
        
        РодительСпецификацийГруппа = Справочники.СпецификацииНоменклатуры.СоздатьГруппу();
        РодительСпецификацийГруппа.Наименование = "Спецификации из Лоцмана";
        РодительСпецификацийГруппа.Записать();
        РодительСпецификаций = РодительСпецификацийГруппа.Ссылка;
        
    КонецЕсли;    
    
    К=0;
    
    Счетчик = 1;
    Для каждого строка из ТЗСпецификаций Цикл
        Сообщить (Счетчик);
        Счетчик = Счетчик +1;
        
        ФлагЧегоДелаем = "";    
        Сообщить ("ФлагЧегоДелаем");
        КодНоменклатуры = СокрЛП(строка.Код1С);
        Сообщить ("Код Номенклатуры");
        Сообщить (КодНоменклатуры);

        СпрНоменклатура    = Справочники.Номенклатура.НайтиПоКоду(КодНоменклатуры);
        Сообщить ("СпрНоменклатура");
        Сообщить (СпрНоменклатура);
        СоставСпецификации = ПолучитьНаполнениеСпецификации(Строка);
        
        Если  СоставСпецификации.Количество() = 0 Тогда    
            Сообщить ("СоставСпецификации.Количество() = 0");
            Продолжить;        
        КонецЕсли;    
        
        Если (СпрНоменклатура = Неопределено) или (СпрНоменклатура = Справочники.Номенклатура.ПустаяСсылка()) Тогда
            Сообщить("Не найдена номенклатура с кодом: "+строка.Код1С);
            Продолжить;
        КонецЕсли;
        
ФлагЧегоДелаем = "Создаем";
            СпрСпецификацияОбъект=Справочники.СпецификацииНоменклатуры.СоздатьЭлемент();
            СпрСпецификацияОбъект.Родитель = РодительСпецификаций;
            
            //***** С этого места изменение родителя спецификации
            // на основании полученого кода.
            
            
            РодительПоКоду = ОбработкаКода (Строка.НаименованиеСЛоцмана, СпрНоменклатура.Наименование);
            Если Не РодительПоКоду = 0 Тогда
                СпрСпецификацияОбъект.Родитель = РодительПоКоду;
            КонецЕсли;
СпрСпецификацияОбъект.ВидСпецификации      = Перечисления.ВидыСпецификаций.Сборочная;
        СпрСпецификацияОбъект.Комментарий          = "##Перенесено из Лоцман по спецификации "+Строка.НаименованиеСЛоцмана;
        СпрСпецификацияОбъект.Ответственный        = глЗначениеПеременной("глТекущийПользователь");
СпрСпецификацияОбъект.Состояние            = Перечисления.СостоянияОбъектов.Утвержден;
            СпрСпецификацияОбъект.Активная             = Истина;
            СпрСпецификацияОбъект.ДатаУтверждения      = ТекущаяДата()-60*60*24;
СтрокаВИ = СпрСпецификацияОбъект.ВыходныеИзделия.Добавить();
        СтрокаВИ.Номенклатура = СпрНоменклатура;
        
        //****** единица измерений
        СтрокаВИ.ЕдиницаИзмерения = СпрНоменклатура.ЕдиницаХраненияОстатков;
        СтрокаВИ.Кратность = 1;
        //******
        Если Строка.Максимум = "" Тогда
            СтрокаВИ.Количество   = Строка.Максимум;
        Иначе
            СтрокаВИ.Количество = 1;
        КонецЕсли;
        
        СпрСпецификацияОбъект.Наименование = СпрНоменклатура.Наименование;
        Для каждого строкаСостава из СоставСпецификации Цикл
            
            СтрокаИсхКомпл = СпрСпецификацияОбъект.ИсходныеКомплектующие.Добавить();
            
            КодНоменклатуры = СокрЛП(строкаСостава.Kod_1C);    
            СпрНоменклатураИсх    = Справочники.Номенклатура.НайтиПоКоду(КодНоменклатуры);
            
            Если СпрНоменклатураИсх = Неопределено Тогда
                
                Сообщить("Не найдено наполнение номенклатуры по коду "+строкаСостава.Kod_1C);    
                Продолжить;    
            КонецЕсли;    
            
            СтрокаИсхКомпл.Номенклатура = СпрНоменклатураИсх;
            СтрокаИсхКомпл.СтатьяЗатрат = СпрНоменклатураИсх.СтатьяЗатрат;
            СтрокаИсхКомпл.ВидВоспроизводства = СпрНоменклатураИсх.ВидВоспроизводства;
далее кусок обработки ЕИ с утановлением владельца
СтрокаИсхКомпл.ЕдиницаИзмерения = СпрНоменклатураИсх.ЕдиницаХраненияОстатков;
Если Не ЕдИзмеренияПроверка = СпрНоменклатураИсх.БазоваяЕдиницаИзмерения Тогда
                    
                    
                ЗапросЕдиниц = Новый Запрос;
                ЗапросЕдиниц.Текст =
                "ВЫБРАТЬ
                |    ЕдиницыИзмерения.Ссылка,
                |    ЕдиницыИзмерения.Представление,
                |    ЕдиницыИзмерения.Владелец,
                |    ПРЕДСТАВЛЕНИЕ(ЕдиницыИзмерения.Владелец),
                |    ЕдиницыИзмерения.ЕдиницаПоКлассификатору,
                |    ПРЕДСТАВЛЕНИЕ(ЕдиницыИзмерения.ЕдиницаПоКлассификатору)
                |ИЗ
                |    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
                |ГДЕ
                |    ЕдиницыИзмерения.ПометкаУдаления = ЛОЖЬ
                |    И ЕдиницыИзмерения.Владелец = &Владелец
                |    И ЕдиницыИзмерения.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору";
                
                ЗапросЕдиниц.УстановитьПараметр("Владелец", СпрНоменклатураИсх);
                ЗапросЕдиниц.УстановитьПараметр("ЕдиницаПоКлассификатору", ЕдИзмеренияПроверка);
                
                РезультатЗапроса = ЗапросЕдиниц.Выполнить();
                
                ВыборкаДетали = РезультатЗапроса.Выбрать();
                НетЗаписи = ИСТИНА;
                Пока ВыборкаДетали.Следующий() Цикл
                    СсылкаСправочникаЕдиниц = ВыборкаДетали.Ссылка;
                    ЭлементСправочникаЕдиниц = СсылкаСправочникаЕдиниц;
                    НетЗаписи = ЛОЖЬ;        
                КонецЦикла;
                Если НетЗаписи = ИСТИНА Тогда
                    ЭлементСправочникаЕдиниц = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
                    
                    Сообщить (СпрНоменклатураИсх);
                    ЭлементСправочникаЕдиниц.Владелец = СпрНоменклатураИсх;
                    ЭлементСправочникаЕдиниц.Наименование = ЕдИзмеренияПроверка.Наименование;
                    ЭлементСправочникаЕдиниц.Коэффициент = 1;
                    ЭлементСправочникаЕдиниц.ЕдиницаПоКлассификатору = ЕдИзмеренияПроверка;
                    ЭлементСправочникаЕдиниц.Записать();
                    ЭлементСправочникаЕдиниц = ЭлементСправочникаЕдиниц.Ссылка;
                КонецЕсли;
СтрокаИсхКомпл.ЕдиницаИзмерения = ЭлементСправочникаЕдиниц;

//другие ТЧ обрабатываем по аналогии

СпрСпецификацияОбъект.Записать();
        
        РегСвед = РегистрыСведений.ОсновныеСпецификацииНоменклатуры.СоздатьМенеджерЗаписи();
        РегСвед.Номенклатура                = СпрНоменклатура;
        РегСвед.Период                      = ТекущаяДата()-60*60*24;
        РегСвед.СпецификацияНоменклатуры    = СпрСпецификацияОбъект.Ссылка;
        регСвед.Записать();
14 neo_matrix_123
 
22.04.14
15:24
устанавливается наличие владельца в справочнике Номенклатура - продукция, полуфабрикат и т.д.
далее если создается новый заполняем сначала болванку с шапкой спецификации. присваиваем нужный статус - в примере только утвержден. потом загружаем данные в ТЧ исходные комплектующие. отдельный кусок кода на имеющиеся подчиненные ЕИ или на их создание внутри.
устанавливаем необходимые значения в колонки ТЧ (статья затрат и т.д.)

остальные ТЧ по аналогии.
потом запись делаем в РС основные спецификации номенклатуры
вот как-то так...
15 msk-07
 
22.04.14
16:22
Спасибо!