Имя: Пароль:
1C
1C 7.7
v7: идентификационный код продукции и услуг
0 Asia2016
 
04.08.21
20:37
Ввели ИКПУ.  Дописываю в документах. Создали справочник ИКПУ (код периодический). при заполнении в расходной накладной всех не нулевых остатков, выдает код автоматом. но при выборе по одной позиции выдает ошибку
Конт.КодИКПУ = ит.КодИКПУ;
{Глобальный модуль(557)}: Поле агрегатного объекта не обнаружено (КодИКПУ)
1 Asia2016
 
04.08.21
20:38
Процедура Заполнить()
    глОчиститьТабличнуюЧасть(Контекст);
    Если количествоСтрок()>0 Тогда
        Возврат;
    КонецЕсли;    
    //Если Контрагент.Выбран()=0 Тогда Предупреждение ("Выберите Контрагента!");
    //    Возврат;
    //КонецЕсли;

    ВидСубконто = ВидыСубконто.Номенклатура;
    ВыбСчет = "28, 29";
    глЗаполнитьТМЦ(Контекст, Товар, ВидСубконто, ВыбСчет);
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидСубконто,,1);
    Ит.ВключатьСубсчета(-1);
    Если (Выбран() = 1) И (Проведен() = 1) Тогда
        Ит.ВыполнитьЗапрос(ТекущийДокумент(), , "004",,,,,);
        Ит.ВыбратьСчета();
        Пока Ит.ПолучитьСчет() = 1 Цикл
            Ит.ВыбратьСубконто(1);
            Пока Ит.ПолучитьСубконто(1) = 1 Цикл
                Если Ит.СНД(3) > 0 Тогда
                    НоваяСтрока();
                    СчетУчета = Ит.Счет;
                    Товар = Ит.Субконто(1);
                    КодИКПУ = Ит.Субконто(1).КодИКПУ.Получить(ДатаДок);
                    ШтрихКод = Ит.Субконто(1).ШтрихКод.Получить(ДатаДок);
                    Код = Ит.Субконто(1).Код;
                    Остаток = Ит.СНД(3);
                    Себестоимость = Ит.СНД(1) / Остаток;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    Иначе
        Ит.ВыполнитьЗапрос(, ДатаДок, "004",,,,,);
        Ит.ВыбратьСчета();
        Пока Ит.ПолучитьСчет() = 1 Цикл
            Ит.ВыбратьСубконто(1);
            Пока Ит.ПолучитьСубконто(1) = 1 Цикл
                Если Ит.СКД(3) > 0 Тогда
                    НоваяСтрока();
                    СчетУчета = Ит.Счет;
                    Товар = Ит.Субконто(1);
                    КодИКПУ = Ит.Субконто(1).КодИКПУ.Получить(ДатаДок);  
                    ШтрихКод = Ит.Субконто(1).ШтрихКод.Получить(ДатаДок);;
                    Код = Ит.Субконто(1).Код;
                    Остаток = Ит.СКД(3);
                    Себестоимость = Ит.СКД(1) / Остаток;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    КонецЕсли;
    Если КоличествоСтрок()=0 Тогда
        Предупреждение("На данном складе товаров или продукции нет!");
    КонецЕсли;
    СортироватьСтроки("Товар");

КонецПроцедуры  //Заполнить
2 Asia2016
 
04.08.21
20:39
в процедуре заполнить все срабатывает
3 Asia2016
 
04.08.21
20:40
Процедура ВыборТовара()
    
    ВидСубконто = ВидыСубконто.Номенклатура;
    ВыбСчет = "28, 29";
    глВыборТМЦ(Контекст, Товар, ВидСубконто, ВыбСчет);        
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидСубконто, Товар, 2);

    Ит.ВключатьСубсчета(-1);
    Если (Выбран() = 1) И (Проведен() = 1) Тогда
        Ит.ВыполнитьЗапрос(ТекущийДокумент(), , "004",,,,,);
        Ит.ВыбратьСчета();
        Пока Ит.ПолучитьСчет() = 1 Цикл
            Если Ит.СНД(3) > 0 Тогда
                СчетУчета = Ит.Счет;
                Код = Ит.СНД(3).Код;
                Остаток = Ит.СНД(3);                
                КодИКПУ = Ит.СНД(3).КодИКПУ.Получить(ДатаДок);
                ШтрихКод= Ит.СНД(3).ШтрихКод.Получить(ДатаДок);
                Себестоимость = Ит.СНД(1) / Остаток;
            КонецЕсли;
        КонецЦикла;
    Иначе
        Ит.ВыполнитьЗапрос(, ДатаДок, "004",,,,,);
        Ит.ВыбратьСчета();
        Пока Ит.ПолучитьСчет() = 1 Цикл
            Если Ит.СКД(3) > 0 Тогда
                СчетУчета = Ит.Счет;
                Остаток = Ит.СКД(3);
                Код = Ит.СКД(3).Код;
                КодИКПУ = Ит.СКД(3).ИКПУ.Получить(ДатаДок);
                ШтрихКод = Ит.СКД(3).ШтрихКод.Получить(ДатаДок);
                Себестоимость = Ит.СКД(1) / Остаток;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;

КонецПроцедуры  //
при выполнении этого модуля выдает ошибку
4 Злопчинский
 
04.08.21
20:43
(3) мозг включаем
                Остаток = Ит.СНД(3); // остток это - число                
                КодИКПУ = Ит.СНД(3).КодИКПУ.Получить(ДатаДок); // КодИКПУ от ЧЕГО хочешь получить?
5 Злопчинский
 
04.08.21
20:45
ШтрихКод = Ит.СКД(3).ШтрихКод.Получить(ДатаДок); // аналогично
6 Asia2016
 
04.08.21
20:47
7 Asia2016
 
04.08.21
20:51
(4) по запарке копирнули. Но через бух итоги тоже не работает. не могу понять почему при заполнении сплошником все идет, а при выборе по каждой позиции не срабатывает.
8 Asia2016
 
04.08.21
20:58
вот я тормоз надо ит.субконто (2). спасибо
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn