Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как вывести колонки
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
kot488
Имеется форма списка с.ф. на утп, на форму довлелены 3 колонки, ДокРеализация, ДокОплата и НалоговаяНакладная. Если по счету формируется выписка какого то из документов то в соответствующей колонке появляется цыфра 1, что говорит нам о том что документ имеется. Но как выводятся эти данные не могу понять.
Создано 3 реквизита ДокРеализация, ДокОплата и НалоговаяНакладная, создано 3 колонки и к каждой колонке подтянут свой реквизит.
Вот весь код на форме
Процедура ДействияФормыДействиеПечать(Кнопка)

    Если ЭлементыФормы.ДокументСписок.ТекущиеДанные = Неопределено тогда
        Возврат
    КонецЕсли;

    РаботаСДиалогами.НапечататьДокументИзФормыСписка(ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка);

КонецПроцедуры // ДействиеПечать()


Процедура ДействияФормыСтруктураПодчиненностиДокумента(Кнопка)
    
    Если ЭлементыФормы.ДокументСписок.ТекущиеДанные = Неопределено тогда
        Возврат
    КонецЕсли;

    РаботаСДиалогами.ПоказатьСтруктуруПодчиненностиДокумента(ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка);
    
КонецПроцедуры


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


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


Процедура ДокументСписокПередУстановкойПометкиУдаления(Элемент, Отказ)
    РолиТекПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Роли;
    Если РольДоступна("Склады") Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры
Vofka

 ! 

kot488, код 1С нужно выделять специальными тегами!
 
Vofka
Давайте сначала. Что именно не получается?
kot488
Цитата(Vofka @ 11.03.16, 13:21) необходимо зарегистрироваться для просмотра ссылки
Что именно не получается?


Хочу разобраться как происходит вывод этих колонок, и потом так же дописать в другой базе
sava1
Цитата(kot488 @ 11.03.16, 11:18) необходимо зарегистрироваться для просмотра ссылки
Создано 3 реквизита ДокРеализация, ДокОплата и НалоговаяНакладная,

Реквизиты в СФ ?
kot488
Цитата(sava1 @ 11.03.16, 14:31) необходимо зарегистрироваться для просмотра ссылки
Реквизиты в СФ ?


Да, я впринцепе вывел уже колонки, но инетерсно все таки докопаться откуда код вывода идет
sava1
Если это реквизиты документа - то ниоткуда - поле Данные реквизита.
Если нет - тогда ПриПолучениииДанных или приВыводеСтроки Табличного поля.
kot488
sava1 @ Сегодня, 14:51 необходимо зарегистрироваться для просмотра ссылки,
Да это реквизиты документа
А как тогда вывод происходит?
sava1
В списке добавляем свои реквизиты (которые документа) и размещаем данные в табличном поле
kot488
Я добавил у каждого нужно документа реквизит СсылкаНаСчет ссылку на счет, добавил колонку Остаток в котором выводится сколько к примеру мы должны и сколько нам должны.
В итоге получилось если делать на основании счета реализацию, то после проведения в соответствующей колонке появляется цыфра 1, к тем документам которые уже выписаны никак не привязать же?

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СчетНаОплатуПокупателю.Ссылка,
    |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацииДок.Ссылка) КАК КолДочДок,
    |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ НалогНакл.Ссылка) КАК КолНалогНакл,
        |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПриходДенег.Ссылка) КАК КолПрихода
    |ИЗ
    |    Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    |            РеализацияТоваровУслуг.СсылкаНаСчет КАК СсылкаНаСчет
    |        ИЗ
    |            Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Проведен = ИСТИНА ) КАК РеализацииДок
    |        ПО СчетНаОплатуПокупателю.Ссылка = РеализацииДок.СсылкаНаСчет
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            НалоговаяНакладная.Ссылка КАК Ссылка,
    |            НалоговаяНакладная.ДокументОснование КАК СсылкаНаСчет
    |        ИЗ
    |            Документ.НалоговаяНакладная КАК НалоговаяНакладная ГДЕ НалоговаяНакладная.Проведен = ИСТИНА) КАК НалогНакл
    |        ПО СчетНаОплатуПокупателю.Ссылка = НалогНакл.СсылкаНаСчет
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ПриходныйКассовыйОрдер.Ссылка КАК Ссылка,
    |            ПриходныйКассовыйОрдер.СсылкаНаСчет КАК СсылкаНаСчет
    |        ИЗ
    |            Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ГДЕ ПриходныйКассовыйОрдер.Проведен = ИСТИНА
    |        
    |        ОБЪЕДИНИТЬ ВСЕ
    |        
    |        ВЫБРАТЬ
    |            ПлатежноеПоручениеВходящее.Ссылка,
    |            ПлатежноеПоручениеВходящее.СсылкаНаСчет
    |        ИЗ
    |            Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее ГДЕ ПлатежноеПоручениеВходящее.Проведен = ИСТИНА) КАК ПриходДенег
    |        ПО СчетНаОплатуПокупателю.Ссылка = ПриходДенег.СсылкаНаСчет
    |ГДЕ
    |    СчетНаОплатуПокупателю.Ссылка В(&СписокСчетов)
    |
    |СГРУППИРОВАТЬ ПО
    |    СчетНаОплатуПокупателю.Ссылка";
    

    ДокСчет = Новый Массив;
    УказательВывода = Новый Соответствие;
        
    Для Каждого Строка Из ОформленияСтрок Цикл    
        ДокСчет.Добавить(Строка.ДанныеСтроки.Ссылка);
        УказательВывода.Вставить(Строка.ДанныеСтроки.Ссылка, Строка.Ячейки);    
        
        ТекущийДолг = 0;
        СтруктураОтбора = Новый Структура();
        СтруктураОтбора.Вставить("Сделка", Строка.ДанныеСтроки.Ссылка);
        ТекущийДолг = РегистрыНакопления.ВзаиморасчетыСКонтрагентами.Остатки(,СтруктураОтбора,"Сделка","СуммаВзаиморасчетов").Итог("СуммаВзаиморасчетов");
        Строка.Ячейки.Остаток.Значение =?(ТекущийДолг = 0,"",ТекущийДолг);
    КонецЦикла;

    Запрос.УстановитьПараметр("СписокСчетов", ДокСчет);              
    РезультатВыборки = Запрос.Выполнить().Выбрать();
    
    Пока РезультатВыборки.Следующий() Цикл
        УказательНаСтроку = УказательВывода.Получить(РезультатВыборки.Ссылка);
        УказательНаСтроку.ДокОплата.Значение = ?(РезультатВыборки.КолПрихода = 0,"",РезультатВыборки.КолПрихода);
        УказательНаСтроку.ДокРеализация.Значение = ?(РезультатВыборки.КолДочДок = 0,"",РезультатВыборки.КолДочДок);
        УказательНаСтроку.НалоговаяНакладная.Значение = ?(РезультатВыборки.КолНалогНакл = 0,"",РезультатВыборки.КолНалогНакл);
        
        
        
        
    КонецЦикла;
    
    ДокСчет = 0;
    УказательВывода = 0;

КонецПроцедуры
sava1
Обработкой
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.