Табличное поле ~ Дополнительные колонки в динамическом списке В процессе написания кода для отображения дополнительных вычисляемых полей в динамическом списке документов получились вот такие приемы (просто код, без комментариев).
Код 1C v 8.х Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ТекДокумент = ДанныеСтроки.Ссылка;
СуммаДокумента = ТекДокумент.Товары.Итог("СуммаСНДС");
СуммаБезнал = ТекДокумент.Оплата.Итог("СуммаОплаты");
СуммаНал = ?(СуммаДокумента > СуммаБезнал, СуммаДокумента - СуммаБезнал, 0);
ОформлениеСтроки.Ячейки.СуммаДокумента.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.НаличнаяОплата.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.БезналичнаяОплата.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.СуммаДокумента.Текст = Формат(СуммаДокумента, "ЧДЦ=2; ЧН=");
ОформлениеСтроки.Ячейки.НаличнаяОплата.Текст = Формат(СуммаНал, "ЧДЦ=2; ЧН=");
ОформлениеСтроки.Ячейки.БезналичнаяОплата.Текст = Формат(СуммаБезнал, "ЧДЦ=2; ЧН=");
//Определяем наличие ПКО
Если ТекДокумент.ПолучитьОбъект().ПолучитьСвязанныйПКО() <> Неопределено Тогда
ОформлениеСтроки.Ячейки.ЕстьПКО.ОтображатьКартинку = Истина;
ОформлениеСтроки.Ячейки.ЕстьПКО.Картинка = БиблиотекаКартинок.ВыполненоУспешно32;
КонецЕсли;
КонецПроцедуры
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
//Определяем наличие ПКО
МассивДокументов = Новый Массив;
Для каждого ТекСтрока Из ОформленияСтрок Цикл
МассивДокументов.Добавить(ТекСтрока.ДанныеСтроки.Ссылка);
КонецЦикла;
Запрос = Новый Запрос("ВЫБРАТЬ Основание ИЗ РегистрСведений.АА_СвязанныеДокументы КАК СД ГДЕ СД.Основание В (&Документы)");
Запрос.УстановитьПараметр("Документы", МассивДокументов);
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого ТекСтрока Из ОформленияСтрок Цикл
Ссылка = ТекСтрока.ДанныеСтроки.Ссылка;
ТекСтрока.Ячейки.ЕстьПКО.ЗначениеКартинки = Результат.Найти(Ссылка,"Основание") <> Неопределено;
КонецЦикла;
КонецПроцедуры
Категория:
Работа с Формой (Диалог) и её элементами Выборка документа по номеру и вывод на Печать, в Табличный Документ Код 1C v 7.x
Процедура Печать()
Если (ПустоеЗначение(ДатаНач)=1) или (ПустоеЗначение(ДатаКон)=1) Тогда
Предупреждение("Не задан период отчета");
Возврат;
КонецЕсли;
Заг="За период с "+ДатаНач+" по "+ДатаКон;
Таб=СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Шапка");
Док=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(ДатаНач,ДатаКон);
ИтогоПриход=0;
ИтогоРасход=0;
Чеков=0;
//1C-ovec.ru Нужно выводить документы по Номеру, хотя лучше для этих целей использовать Запрос
ТЗврем = СоздатьОбъект("ТаблицаЗначений");
ТЗврем.НоваяКолонка("Док");
ТЗврем.НоваяКолонка("Дата");
ТЗврем.НоваяКолонка("Номер");
ТЗврем.НоваяКолонка("Приход");
ТЗврем.НоваяКолонка("Расход");
ТЗврем.НоваяКолонка("Чеков");
//Выборка документов
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Проведен()=0 Тогда
Продолжить;
ИначеЕсли (Док.Вид()="ПриходныйОрдерТБ") и (флПКО=1) Тогда
Приход=Док.Сумма;
Расход=0;
ИначеЕсли (Док.Вид()="БезналичнаяОплата") и (флБН=1) Тогда
Приход=Док.Сумма;
Расход=0;
ИначеЕсли (Док.Вид()="РасходныйОрдерТБ") и (флРКО=1) Тогда
Приход=0;
Расход=Док.Сумма;
ИначеЕсли Док.Вид()="Чек" Тогда
Если (Док.Тип=1) и (флЧекиП=1) Тогда
Приход=Док.Сумма;
Расход=0;
Чеков=Чеков+1;
ИначеЕсли (Док.Тип=2) и (флЧекиВ=1) Тогда
Приход=0;
Расход=Док.Сумма;
Чеков=Чеков+1;
Иначе
Продолжить;
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
//Добавим в ТЗ строку
НовСТР=ТЗврем.НоваяСтрока();
ТЗврем.Док = Док;
ТЗврем.Дата = Док.ДатаДок;
ТЗврем.Номер = Док.НомерДок;
ТЗврем.Приход = Приход;
ТЗврем.Расход =Расход;
ТЗврем.Чеков = Чеков;
//Пока рано выводить
//Таб.ВывестиСекцию("Строка");
ИтогоПриход=ИтогоПриход+Приход;
ИтогоРасход=ИтогоРасход+Расход;
КонецЦикла;
//Теперь сортируем по номеру и выводим
ТЗврем.Сортировать("Номер");
ТЗврем.ВыбратьСтроки();
Пока ТЗврем.ПолучитьСтроку() = 1 Цикл
Док=ТЗврем.Док;
Приход=ТЗврем.Приход;
Расход=ТЗврем.Расход;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ВывестиСекцию("Итого");
Таб.ТолькоПросмотр(1);
Таб.Показать("Отчет по кассе");
КонецПроцедуры
Категория:
Документы