Записки     О блоге     Архив записей     Лента

Записки на память

Добавляем в 1С УНФ в журнал картинки.

Добавляем в 1С УНФ в журнал ДокументыПоСкладу для документов ПеремещениеЗапасов картинки наличия подчиненных ордеров.

1 Изменяем запрос динамического списка в Процедуре ПриСозданииНаСервере

СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();

ТекстЗапроса = "ВЫБРАТЬ
               |	ПриходныйОрдер.Проведен КАК Проведен,
               |	ПриходныйОрдер.ДокументОснование КАК ДокументОснование
               |ПОМЕСТИТЬ втПриходныеОрдера
               |ИЗ
               |	Документ.ПриходныйОрдер КАК ПриходныйОрдер
               |ГДЕ
               |	НЕ ПриходныйОрдер.ПометкаУдаления
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |	РасходныйОрдер.Проведен КАК Проведен,
               |	РасходныйОрдер.ДокументОснование КАК ДокументОснование,
               |	РасходныйОрдер.Ссылка КАК Ссылка
               |ПОМЕСТИТЬ втРасходныеОрдера
               |ИЗ
               |	Документ.РасходныйОрдер КАК РасходныйОрдер
               |ГДЕ
               |	НЕ РасходныйОрдер.ПометкаУдаления
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |	ДокументыПоСкладу.Ссылка КАК Ссылка,
               |	ДокументыПоСкладу.Дата КАК Дата,
               |	ДокументыПоСкладу.ПометкаУдаления КАК ПометкаУдаления,
               |	ДокументыПоСкладу.Номер КАК Номер,
               |	ДокументыПоСкладу.Проведен КАК Проведен,
               |	ДокументыПоСкладу.Организация КАК Организация,
               |	ДокументыПоСкладу.Склад КАК СтруктурнаяЕдиница,
               |	ДокументыПоСкладу.Ячейка КАК Ячейка,
               |	ДокументыПоСкладу.Комментарий КАК Комментарий,
               |	ДокументыПоСкладу.Автор КАК Автор,
               |	ДокументыПоСкладу.Тип КАК Тип,
               |	ВЫБОР
               |		КОГДА втРасходныеОрдера.Проведен ЕСТЬ NULL
               |				И ДокументыПоСкладу.Тип = ТИП(Документ.ПеремещениеЗапасов)
               |			ТОГДА 6
               |		ИНАЧЕ ВЫБОР
               |				КОГДА втРасходныеОрдера.Проведен ЕСТЬ NULL
               |					ТОГДА 2
               |				ИНАЧЕ ВЫБОР
               |						КОГДА втРасходныеОрдера.Проведен
               |							ТОГДА 0
               |						ИНАЧЕ 1
               |					КОНЕЦ
               |			КОНЕЦ
               |	КОНЕЦ КАК НомерКартинкиРасходный,
               |	ВЫБОР
               |		КОГДА втПриходныеОрдера.Проведен ЕСТЬ NULL
               |				И ДокументыПоСкладу.Тип = ТИП(Документ.ПеремещениеЗапасов)
               |			ТОГДА 6
               |		ИНАЧЕ ВЫБОР
               |				КОГДА втРасходныеОрдера.Проведен ЕСТЬ NULL
               |					ТОГДА 2
               |				ИНАЧЕ ВЫБОР
               |						КОГДА втРасходныеОрдера.Проведен
               |							ТОГДА 0
               |						ИНАЧЕ 1
               |					КОНЕЦ
               |			КОНЕЦ
               |	КОНЕЦ КАК НомерКартинкиПриходный
               |ИЗ
               |	ЖурналДокументов.ДокументыПоСкладу КАК ДокументыПоСкладу
               |		ЛЕВОЕ СОЕДИНЕНИЕ втРасходныеОрдера КАК втРасходныеОрдера
               |		ПО ДокументыПоСкладу.Ссылка = втРасходныеОрдера.ДокументОснование
               |		ЛЕВОЕ СОЕДИНЕНИЕ втПриходныеОрдера КАК втПриходныеОрдера
               |		ПО ДокументыПоСкладу.Ссылка = втПриходныеОрдера.ДокументОснование";

СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
СвойстваСписка.ОсновнаяТаблица = Список.ОсновнаяТаблица;
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;

ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);	

2 Добавляем новые реквизиты

    /////   РЕКВИЗИТЫ   //////////
    
    МассивДобавляемыхРеквизитов = Новый Массив;
    
    КоллекцияРеквизитов = ПолучитьРеквизиты();
    СтруктураРеквизитов = новый Структура;
    Для каждого ЭлементКоллекцииРеквизитов Из КоллекцияРеквизитов Цикл
        СтруктураРеквизитов.Вставить(ЭлементКоллекцииРеквизитов.Имя,ЭлементКоллекцииРеквизитов); 
	КонецЦикла;   
	
   // ******   Реквизит формы "НомерКартинкиРасходный"    ***********
    
    Если СтруктураРеквизитов.Свойство("НомерКартинкиРасходный") тогда 
        НовыйРеквизит = СтруктураРеквизитов.НомерКартинкиРасходный; 
    Иначе 
        НовыйРеквизит = Новый РеквизитФормы("НомерКартинкиРасходный",Новый ОписаниеТипов("Число",,,));
    КонецЕсли; 
    НовыйРеквизит.СохраняемыеДанные = Ложь;
    Если НЕ СтруктураРеквизитов.Свойство("НомерКартинкиРасходный") Тогда 
        МассивДобавляемыхРеквизитов.Добавить(НовыйРеквизит);
	КонецЕсли;       
	
    // ******   Реквизит формы "НомерКартинкиРасходный"    ***********
    
    Если СтруктураРеквизитов.Свойство("НомерКартинкиПриходный") тогда 
        НовыйРеквизит = СтруктураРеквизитов.НомерКартинкиПриходный; 
    Иначе 
        НовыйРеквизит = Новый РеквизитФормы("НомерКартинкиПриходный",Новый ОписаниеТипов("Число",,,));
    КонецЕсли; 
    НовыйРеквизит.СохраняемыеДанные = Ложь;
    Если НЕ СтруктураРеквизитов.Свойство("НомерКартинкиПриходный") Тогда 
        МассивДобавляемыхРеквизитов.Добавить(НовыйРеквизит);
    КонецЕсли; 
    
    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

3 Добавляем новые колонки на форму.

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