Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику bob210250 ::: Спасибо сказали: 3 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
06.10.11, 10:13 При проведение калькуляции - ошибка
Цитата(Vofka @ 06.10.11, 11:11) *
bob210250,
ПРАВИЛА!!!

Виноват, исправлюсь!
Vofka,
05.10.11, 17:53 При проведение калькуляции - ошибка
При попытке провести калькуляцию: пустую табл. часть или только с затратами (без ТМЦ) вылетает ошибка:

Пока буфСчет.Получить()=1 Цикл
{Глобальный модуль(3253)}: Поле агрегатного объекта не обнаружено (Получить)

Перед этим появляется окно списка счетов...
Короче что-то так замудрено не могу понять, а бух. наседает - ей так надо!
У кого есть предложения, на этот счет?
Ardi,
27.09.11, 11:18 Справочники ТМЦ-Состав продукции, как скопировать в паре
За помощь спасибо, но...
Как на меня так ваши предложения больно усложнены, я этого не люблю (из многолетнего опыта разработки
с 1975г).
Я ночью придумад, как сделать проще. Я разнес эти действия в две процедуры:
ВводНового() - фиксирую факт наличия в "Состав прод" подчиенных эл-тов у копируемого эл-та
кТМЦ_.
А в процедуре ПриЗаписи() реализую перезапись "Состава прод".
И интерактив остается, и не ругается и все работает.
Дело в том что конструкция

Попытка
ТМЦ1.Записать();
Исключение
КонецПопытки;

не работает, Записать() очень непростая команда, если вы находитесь в интерактивном вводе.

Ниже полность две процедуры и мои вставки // Гр_


// =============================== 
Перем  кТМЦ_,ФлСостава;
// Гр_
.....

// ===============================
Процедура ВводНового(ПризнакКопирования,кТМЦ)  
    ФлСостава = 0;
    Если ПризнакКопирования = 1 Тогда  
        // Гр___________________________________________________________________________
        Если (кТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Продукция) Или (кТМЦ.ВидТМЦ = Перечисление.ВидыТМЦ.Полуфабрикат) Тогда
            СпрС = СоздатьОбъект("Справочник.СоставПродукции");
            СпрС.ИспользоватьВладельца(кТМЦ);
            Если СпрС.ВыбратьЭлементы() = 1 Тогда
                ФлСостава =1;  
                кТМЦ_ = кТМЦ;
            КонецЕсли;
        КонецЕсли;  
        // Гр__________________________________________
        Возврат;
    КонецЕсли;
    Валюта_Прод = глВосстановитьЗначение(,"ОсновнаяВалюта");
    Валюта_Прих = глВосстановитьЗначение(,"ОсновнаяВалюта");
    ВидТМЦ = Перечисление.ВидыТМЦ.Товар;
    ИзмВид();
    СтавкаНДС = глВосстановитьЗначение(,"БазНДС");
    БазЕдиница = глВосстановитьЗначение(,"БазЕдиница");
    ИспользоватьДату('01.01.1980');
    ВидДеятельности = глВосстановитьЗначение(,"БазВидДеятельности");
КонецПроцедуры

// ===============================
Процедура ПриЗаписи()
    Перем    Партия;
    
    глСохранитьЗначение(Контекст,"СчетЗатрат",СчетЗатрат);
    Если глЗаписьПериодическихРеквизитов(Контекст) = 0 Тогда
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    Если Выбран() = 0 Тогда
        Записать(); // этот метод не возвращает 0 в случае неудачи и не "ловится" Попыткой
        Попытка
            глПолучитьПартиюПоУмолчанию(Партия, ТекущийЭлемент());
        Исключение        
            // будем считать, что ошибка была еще в Записать()
            // например, "код не уникален"
            СтатусВозврата(0); // иначе получим сообщение об ошибке 2 раза
        КонецПопытки;
        // Гр___________________________________________________________________________
        Если ФлСостава = 1 Тогда      // при копировании элемента ТМЦ есть записи в подчиненном Спр."Состав продукции"
            ТЭ =ТекущийЭлемент();
            СпрТ = СоздатьОбъект("Справочник.СоставПродукции");
            СпрТ.ИспользоватьВладельца(ТЭ);      
            СпрТ.ИспользоватьРодителя("");
            СпрС = СоздатьОбъект("Справочник.СоставПродукции");  
            // переписываем все элементы "Состава продукции" из исходного ТМЦ в результирующий
            СпрС.ИспользоватьВладельца(кТМЦ_);
            СпрС.ВыбратьЭлементы();
            Пока СпрС.ПолучитьЭлемент() = 1  Цикл
                СпрТ.Новый();
                СпрТ.Владелец = ТЭ;
                СпрТ.Наименование = СпрС.Наименование;
                СпрТ.Затрата = СпрС.Затрата;
                СпрТ.Кво = СпрС.Кво;
                СпрТ.Записать();    
            КонецЦикла;
        КонецЕсли;
        // Гр___________________________________________________________________________
    КонецЕсли;
КонецПроцедуры
al51al51,

RSS Текстовая версия Сейчас: 28.03.24, 19:14
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!