Имя: Пароль:
1C
IT-новости
v8: Внешняя обработка для заполнения объектов в УФ (продолжение)
0 lnk_lnk
 
17.03.14
12:15
Мне очень помог этот форум, когда я только начинала писать внешние обработки на БП 3.0 / УТ 11...
Поэтому хочу помочь теперь будущим жаждущим с кодом:

//*************************************************************************
&НаСервере
Процедура ВыполнитьКомандуНаСервере()
    
    ОбъектДок = Объект.СсылкаНаОбъект.ПолучитьОбъект();

    ОбъектДок.Комментарий = "aaaaaaaaaaaaaaaaaa000000000000011122233344456ловарывлораыловарывлра111222333444";
    ОбъектДок.Записать(РежимЗаписиДокумента.Запись);
    
КонецПроцедуры    

//*************************************************************************
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт  // для Внешних обработок - ОБЯЗАТЕЛЬНАЯ процедура
    //ПараметрыОбработки.ИдентификаторКоманды    ="ОткрытьТекущуюФорму"=    Строка   //ПараметрыОбработки.ОбъектыНазначения    =Массив    =Массив
    
    Объект.СсылкаНаОбъект = ОбъектыНазначенияМассив[0];
    
    Ответ = Вопрос("Документ автоматически переСОХРАНИТСЯ... ", РежимДиалогаВопрос.ОКОтмена);
    Если Ответ = КодВозвратаДиалога.ОК Тогда
        
        ВыполнитьКомандуНаСервере();
        
        КлючПоиска1  = Новый Структура("Ключ", Объект.СсылкаНаОбъект);    
        Форма = ОткрытьФорму("Документ.ОтчетПроизводстваЗаСмену.Форма.ФормаДокумента", КлючПоиска1);
        Форма.Прочитать();
        
    КонецЕсли;

КонецПроцедуры
1 х86
 
17.03.14
12:23
что это?
2 lnk_lnk
 
17.03.14
12:45
(1) Это Модуль формы Внешней обработки БП 3.0.

С помощью Внешней обработки нужно было поменять реквизиты документа. Почему-то в БП 3.0 то, что проходило в УТ 11 для обновления реквизитов документа не стало работать.

Долго искала в И-нете как поправить - ничего путного не нашла...

Народ через окна предлагал получать доступ к Форме документа...

==== В Итоге - выложила то, что, возможно, кому-то поможет...
3 13_Mult
 
17.03.14
13:08
Уберите это скорее, а то ещё научится кто.
4 13_Mult
 
17.03.14
13:10
А почему в личке Пол: Мужской
5 Torquader
 
17.03.14
13:11
Вашими стараниями только железную дорогу и строить.
В общем, "костыли забивать" вы прекрасно умеете.
6 Torquader
 
17.03.14
13:12
(4) Видимо потому, что lnk - это ссылка, а дважды ссылка на пустоту.
7 13_Mult
 
17.03.14
13:14
(6) +
8 lnk_lnk
 
17.03.14
13:44
почему? "костыли забивать"
9 lnk_lnk
 
17.03.14
14:07
у меня для УТ11 работало:


//*************************************************************************
&НаСервере
Процедура ЗагрузитьДанныеИзУТНаСервере()
    
    Объект.ЦенаВключаетНДС = Объект.ОткрытыйДокументУТ.ЦенаВключаетНДС;
    
    Объект.ТЗ_ТЧ.Очистить();
    
    Для Каждого Строка из Объект.ОткрытыйДокументУТ.Товары Цикл
        
        НоваяСтрокаТЗ = Объект.ТЗ_ТЧ.Добавить();
        
        ЗаполнитьЗначенияСвойств(НоваяСтрокаТЗ, Строка);
        НоваяСтрокаТЗ.ЦенаБезНДС = НоваяСтрокаТЗ.Цена;
        НоваяСтрокаТЗ.ЦенаСНДС      = ?(НоваяСтрокаТЗ.КоличествоУпаковок = 0, 0, НоваяСтрокаТЗ.СуммаСНДС / НоваяСтрокаТЗ.КоличествоУпаковок );
        НоваяСтрокаТЗ.Цена         = НоваяСтрокаТЗ.ЦенаСНДС;
        НоваяСтрокаТЗ.БылаСумма     = НоваяСтрокаТЗ.Сумма;
        НоваяСтрокаТЗ.Сумма         = НоваяСтрокаТЗ.СуммаСНДС;

    КонецЦикла;  // Для Каждого Строка из Объект.ОткрытыйДокументУТ.Товары Цикл
    
КонецПроцедуры

//************************************************************************* +++
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ЗагрузитьДанныеИзУТНаСервере();
    
КонецПроцедуры

//*************************************************************************
&НаСервере
Функция ПоместитьТоварыВХранилище()
    
    Товары = Новый ТаблицаЗначений;
    Товары.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    Товары.Колонки.Добавить("КоличествоУпаковок", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,3,ДопустимыйЗнак.Неотрицательный)));
    Товары.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(15,2,ДопустимыйЗнак.Неотрицательный)));
    Товары.Колонки.Добавить("Характеристика");
    Товары.Колонки.Добавить("Упаковка");
    Товары.Колонки.Добавить("ВидЦены");    
    
    Для Каждого СтрокаТЗ ИЗ Объект.ТЗ_ТЧ Цикл
        
        НоваяСтрока = Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
        
    КонецЦикла;
    
    АдресТоваровВХранилище = ПоместитьВоВременноеХранилище(Товары, УникальныйИдентификатор);
    
    Возврат АдресТоваровВХранилище;
    
КонецФункции

//************************************************************************* +++
&НаСервере
Процедура ПеренестиДанныеВДокументНаСервере() Экспорт
    
    Документ = Объект.ОткрытыйДокументУТ.ПолучитьОбъект();
    
    Документ.ЦенаВключаетНДС = Истина;
    
    ФлМодифицирован = Ложь;
    инд = 0;
    Для Каждого СтрокаТЗ ИЗ Документ.Товары Цикл
        
        Если СтрокаТЗ.Номенклатура <> Справочники.Номенклатура.ПустаяСсылка() Тогда
            
            СтрокаТЗ.Цена = Объект.ТЗ_ТЧ[инд].ЦенаСНДС;
            
            ЗаполнитьЗначенияСвойств(СтрокаТЗ, Объект.ТЗ_ТЧ[инд]);
            
            ФлМодифицирован = Истина;
            инд = инд + 1;
        КонецЕсли;
        
    КонецЦикла;
    Если ФлМодифицирован Тогда
        Документ.Записать(РежимЗаписиДокумента.Запись);
    КонецЕсли;    
    
КонецПроцедуры

//*************************************************************************
&НаКлиенте
Процедура ПеренестиДанныеВДокумент(Команда)
    
    Ответ = Вопрос("В документе установится:" + Символы.ПС +"--------------------"+ Символы.ПС +
                   "<Цена включает НДС> = ДА; " + Символы.ПС + Символы.ПС +
                   "<Цена> заменится на <Цена с НДС>; " + Символы.ПС + Символы.ПС +
                   "Документ автоматически переСОХРАНИТСЯ... ", РежимДиалогаВопрос.ОКОтмена);
    Если Ответ = КодВозвратаДиалога.ОК Тогда

        АдресТоваровВХранилище     = ПоместитьТоварыВХранилище();
        
        Структура = Новый Структура("АдресТоваровВХранилище", АдресТоваровВХранилище);
        
        ПеренестиДанныеВДокументНаСервере();
        ОповеститьОВыборе(Структура);
        
    КонецЕсли;
    
КонецПроцедуры

//*************************************************************************
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт  // для Внешних обработок - ОБЯЗАТЕЛЬНАЯ процедура
    //ПараметрыОбработки.ИдентификаторКоманды    ="ОткрытьТекущуюФорму"=    Строка   //ПараметрыОбработки.ОбъектыНазначения    =Массив    =Массив
    
    Объект.ОткрытыйДокументУТ = ОбъектыНазначенияМассив[0];
    
    ОткрытьФормуМодально(ЭтаФорма);
    
КонецПроцедуры


Но для БП 3.0 это работать не стало...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.