Имя: Пароль:
1C
1С v8
Не заполняет количество в ТЧ
0 Alex70
 
26.06.18
10:04
Всем привет! Прошу камнями сильно не кидать, не давно начал изучать 1С. Суть задачи необходимо получить Спецификацию из нее взять детали входящие в продукцию(напр. Поддон, шкаф №322 и тп), и сделать отбор по складу. По окончанию в табличную часть вывести количество деталей по определенной продукции. Ошибок не выдает, но и не заполняет количество. Что делаю не так? Думаю что то
не так связал или вообще что то криво сделал. Подскажите пожалуйста
Код приведет ниже
__________________________________________________
Процедура ЗаполнитьТЧФормы(Версия = Неопределено)
    Родитель = Неопределено;
    
    Список = Новый СписокЗначений;
    Список.Добавить("Здание");
    Список.Добавить("Каркас");    
    Список.Добавить("Установка");
    Список.Добавить("Поддон");
    Список.Добавить("Блок дверной");
    Список.Добавить("Коробка");
    
    
    ЗапросЗапущено = Новый Запрос;
    ЗапросЗапущено.Текст = "ВЫБРАТЬ
                           |    СУММА(ЗаданияНаВыпускОбороты.КоличествоПриход) КАК КоличествоПриход
                           |ИЗ
                           |    РегистрНакопления.ЗаданияНаВыпуск.Обороты(
                           |            ,
                           |            ,
                           |            ,
                           |            Номенклатура = &Номенклатура
                           |                И Заказ.НоменклатурнаяГруппа = &НоменклатурнаяГруппа) КАК ЗаданияНаВыпускОбороты
                           |ГДЕ
                           |    ЗаданияНаВыпускОбороты.КоличествоПриход > 0";
                          
                          
    ЗапросСпецификаций = Новый Запрос;
    ЗапросСпецификаций.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
                               |    ЗаданиеНаПроизводствоВыпускТехПроцесс.Спецификация
                               |ПОМЕСТИТЬ ВТ_Спецификации
                               |ИЗ
                               |    Документ.ЗаданиеНаПроизводство.ВыпускТехПроцесс КАК ЗаданиеНаПроизводствоВыпускТехПроцесс
                               |ГДЕ
                               |    ЗаданиеНаПроизводствоВыпускТехПроцесс.Номенклатура = &Номенклатура
                               |    И ЗаданиеНаПроизводствоВыпускТехПроцесс.НоменклатурнаяГруппа = &НоменклатурнаяГруппа
                               |
                               |СГРУППИРОВАТЬ ПО
                               |    ЗаданиеНаПроизводствоВыпускТехПроцесс.Спецификация
                               |;
                               |
                               |////////////////////////////////////////////////////////////////////////////////
                               |ВЫБРАТЬ
                               |    ВТ_Спецификации.Спецификация,
                               |    ЗаданиеНаПроизводствоИсходныеКомплектующие.Номенклатура,
                               |    СУММА(ЗаданиеНаПроизводствоИсходныеКомплектующие.Количество) КАК Количество
                               |ИЗ
                               |    ВТ_Спецификации КАК ВТ_Спецификации
                               |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПроизводство.ИсходныеКомплектующие КАК ЗаданиеНаПроизводствоИсходныеКомплектующие
                               |        ПО ВТ_Спецификации.Спецификация = ЗаданиеНаПроизводствоИсходныеКомплектующие.Номенклатура
                               |
                               |СГРУППИРОВАТЬ ПО
                               |    ВТ_Спецификации.Спецификация,
                               |    ЗаданиеНаПроизводствоИсходныеКомплектующие.Номенклатура";    
                              
                              
    Для Каждого стрТовар Из ГрупповаяСпецификация.Товары Цикл
        // ЗапросЗапущено
        ЗапросЗапущено.УстановитьПараметр("Номенклатура", стрТовар.Номенклатура);
        
        стрПродукция = ГрупповаяСпецификация.СборочныеЕдиницы.Найти(стрТовар.НомерКолонки, "НомерКолонки");
        Если стрПродукция = Неопределено Тогда
            Продолжить;
        КонецЕсли;        
        
        ЗапросЗапущено.УстановитьПараметр("НоменклатурнаяГруппа", стрПродукция.НоменклатурнаяГруппа);        
        ВыборкаЗапущено = ЗапросЗапущено.Выполнить().Выбрать();
        
        // ЗапросСпецификаций
        
        ЗапросСпецификаций.УстановитьПараметр("Номенклатура", стрТовар.Номенклатура);
        
        стрСпецификация = ГрупповаяСпецификация.СборочныеЕдиницы.Найти(стрТовар.НомерКолонки, "НомерКолонки");
        Если стрСпецификация = Неопределено Тогда
            Продолжить;
        КонецЕсли;        
        
        ЗапросСпецификаций.УстановитьПараметр("НоменклатурнаяГруппа", стрСпецификация.НоменклатурнаяГруппа);
                            
        ВыборкаСпецификаций = ЗапросСпецификаций.Выполнить().Выбрать();

        
        
        ПоискПоКодуСтроки = табТовары.Строки.НайтиСтроки(Новый Структура("КодСтроки, Наименование, Артикул, Номенклатура",стрТовар.КодСтроки,стрТовар.Наименование,стрТовар.Артикул,стрТовар.Номенклатура),Истина);
        
        Если ПоискПоКодуСтроки.Количество() > 0 Тогда
            
            ПоискПоКодуСтроки = ПоискПоКодуСтроки[0];
            
            ПоискПоКодуСтроки["ИЗД"+стрТовар.НомерКолонки] = стрТовар.Количество;
            
        Иначе
            
            Если стрТовар.КодСвязи = "" Тогда
                
                строкаФормы = табТовары.Строки.Добавить();
                ЗаполнитьЗначенияСвойств(строкаФормы,стрТовар);
                строкаФормы["ИЗД"+стрТовар.НомерКолонки] = стрТовар.Количество;
                Если ВыборкаЗапущено.Следующий() Тогда
                    строкаФормы["ЗАП"+стрТовар.НомерКолонки] = ВыборкаЗапущено.КоличествоПриход;
                    строкаФормы["МЕХ"+стрТовар.НомерКолонки] = ВыборкаЗапущено.КоличествоПриход;
                КонецЕсли;
                Если ВыборкаСпецификаций.Следующий() Тогда
                    строкаФормы["ПОКР"+стрТовар.НомерКолонки] = ВыборкаСпецификаций.Количество;
                КонецЕсли;

                
                    
            Иначе
                //                        
                БылоНайдено = Ложь;
                
                Для Каждого Элемент Из Список Цикл
                    Если Найти(стрТовар.Наименование,Элемент.Значение) > 0 Тогда
                        БылоНайдено = Истина;
                    КонецЕсли;
                КонецЦикла;
                
                ПоискПоКодуСвязи = табТовары.Строки.Найти(стрТовар.КодСвязи,"КодСтроки",Истина);
                
                Если ПоискПоКодуСвязи <> Неопределено Тогда            
                    
                    Если БылоНайдено ИЛИ Сред(ПоискПоКодуСвязи.Артикул,12,1) = "." Тогда
                        
                        строкаФормы = ПоискПоКодуСвязи.Строки.Добавить();
                        ЗаполнитьЗначенияСвойств(строкаФормы,стрТовар);
                        строкаФормы["ИЗД"+стрТовар.НомерКолонки] = стрТовар.Количество;
                        Если ВыборкаЗапущено.Следующий() Тогда
                            строкаФормы["ЗАП"+стрТовар.НомерКолонки] = ВыборкаЗапущено.КоличествоПриход;
                            строкаФормы["МЕХ"+стрТовар.НомерКолонки] = ВыборкаЗапущено.КоличествоПриход;
                        КонецЕсли;
                        Если ВыборкаСпецификаций.Следующий() Тогда
                            строкаФормы["ПОКР"+стрТовар.НомерКолонки] = ВыборкаСпецификаций.Количество;
                        КонецЕсли;
                        
                    Иначе
                        Продолжить;
                    КонецЕсли;
                    
                КонецЕсли;
                
            КонецЕсли;
        
        КонецЕсли;
                
    КонецЦикла;
    
    ПересчитатьСуммуСтроки();
    
    СписокОбхода = Новый СписокЗначений;
    
    // Разворачивает уровни
    Для Каждого Узел Из табТовары.Строки Цикл
        СписокОбхода.Добавить(Узел);
        ЭлементыФормы.Товары.Развернуть(Узел,Истина);
    КонецЦикла;
    
    
            
КонецПроцедуры
1 Darych
 
26.06.18
10:07
в отладчик
2 DrShad
 
26.06.18
10:13
лучше весь этот код стереть и начать заново
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.