Версия для печати темы (https://pro1c.org.ua/index.php?s=4204a9fded786e628dce20b7ba64cfc8&showtopic=48811)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Надо чтоб строки в табличной части меняли фон на другой цвет

Автор: klevenets 11.11.18, 14:26

HELP.

Нужна помощь
Надо чтоб строки в табличной части (например "Реализация товаров и услуг") меняли фон на другой цвет если документ был просмотрен на печать. Т.е. документы которые не распечатали - белые по умолчанию, а например зелёные которые распечатали.

1С:Предприятие 8.3 (8.3.8.1784)
"Управление торговлей для Украины", редакция 2.3

Очень жду Вашей помощи!!!


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 4
 

Автор: Bernet 11.11.18, 14:43

klevenets @ Сегодня, 14:26 * ,
Для начала нужно хранить признак того что документ был распечатан в самой базе. Для этого добавьте реквизит булевного типа в документ, например "Распечатан". При печати записывайте в этот реквизит "Распечатан" = Истина.
В форме списка документа, добавьте обработчик событий "ПриПолученииДанных" и в него добавьте следующий код

Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    ОформлениеСтроки.ЦветФона = ?(ОформлениеСтроки.ДанныеСтроки.Ссылка.Распечатан, WebЦвета.СветлоЗеленый, WebЦвета.Белый);
КонецЦикла;

Автор: klevenets 12.11.18, 7:16

Цитата(Bernet @ 11.11.18, 14:43) *
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    ОформлениеСтроки.ЦветФона = ?(ОформлениеСтроки.ДанныеСтроки.Ссылка.Распечатан, WebЦвета.СветлоЗеленый, WebЦвета.Белый);
КонецЦикла;

Bernet @ Вчера, 14:43 * ,

А куда вставить? Будь так любезны!!!!

//  Процедура печатает выбранный документ 
// Печатается та форма, которая была отпечатана при нажатии в документе кнопки
// печати по умолчанию
//
Процедура ДействияФормыДействиеПечать(Кнопка)

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

    УниверсальныеМеханизмы.НапечататьДокументИзФормыСписка(ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока.ПолучитьОбъект());

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

// Процедура вызывается при выборе пункта подменю "Движения документа по регистрам" меню "Перейти".
// командной панели формы. Процедура отрабатывает печать движений документа по регистрам.
//
Процедура ДействияФормыДвиженияДокументаПоРегистрам(Кнопка)

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

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

КонецПроцедуры // ДействияФормыДвиженияДокументаПоРегистрам()

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

// Обработчик события "Нажатие" кнопки "ОформитьДокументы" в верхней командной панели.
//
Процедура ДействияФормыОформитьДокументы(Кнопка)

    ТекущаяСтрока = ЭлементыФормы.Список.ТекущиеДанные;

    Если ТекущаяСтрока = Неопределено Тогда
        Возврат
    КонецЕсли;

    ТекущийОбъект = ТекущаяСтрока.Ссылка.ПолучитьОбъект();
    ФормаФормированияПакетаДокументов = ТекущийОбъект.ПолучитьФорму("ФормаФормированияПакетаДокументов", ЭтаФорма);
    ФормаФормированияПакетаДокументов.Реализация = ТекущийОбъект;
    ФормаФормированияПакетаДокументов.Открыть();

КонецПроцедуры // ДействияФормыОформитьДокументы()

// Процедура вызывается при нажатии кнопки "ВыгрузитьВФорматеComerceMLФайлПанель"
// подменю "ВыгрузитьВФорматеComerceMLПанель" командной панели формы
//
Процедура ДействияФормыВыгрузитьВФорматеCommerceMLФайлПанель(Кнопка)
    
    Если ЭлементыФормы.Список.ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ЗаполнениеДокументов.ВыгрузитьДокументВФайлCommerceML(ЭлементыФормы.Список.ТекущиеДанные.Ссылка);
        
КонецПроцедуры

// Процедура вызывается при нажатии кнопки "ВыгрузитьВФорматеComerceMLЭлПочтаПанель"
// подменю "ВыгрузитьВФорматеComerceMLПанель" командной панели формы
//
Процедура ДействияФормыВыгрузитьВФорматеCommerceMLЭлПочтаПанель(Кнопка)
    
    Если ЭлементыФормы.Список.ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ЗаполнениеДокументов.ОтправитьДокументПоПочтеCommerceML(ЭлементыФормы.Список.ТекущиеДанные.Ссылка);

КонецПроцедуры

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    // Вставить содержимое обработчика.
КонецПроцедуры


Цитата(Bernet @ 11.11.18, 14:43) *
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    ОформлениеСтроки.ЦветФона = ?(ОформлениеСтроки.ДанныеСтроки.Ссылка.Распечатан, WebЦвета.СветлоЗеленый, WebЦвета.Белый);
КонецЦикла;


Вставляю в низу - пишет ошибку-

{Документ.РеализацияТоваровУслуг.Форма.ФормаСписка.Форма(86,33)}: Переменная не определена (ОформленияСтрок)
Для Каждого ОформлениеСтроки Из <<?>>ОформленияСтрок Цикл (Проверка: Толстый клиент (обычное приложение))


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 9
 

Автор: sava1 12.11.18, 7:44

Цитата(Bernet @ 11.11.18, 14:43) *
В форме списка документа, добавьте обработчик событий "ПриПолученииДанных"

написано-ж

Автор: klevenets 12.11.18, 9:16

sava1 @ Сегодня, 7:44 * ,


Я не совсем продвинутый - так методом тыка разбираюсь потихоньку/
Создал. но выдаёт ошибку уже в базе

Поле объекта не обнаружено (Распечатан)

{Документ.РеализацияТоваровУслуг.Форма.ФормаСписка.Форма(84)}: Поле объекта не обнаружено (Распечатан)
ОформлениеСтроки.ЦветФона = ?(ОформлениеСтроки.ДанныеСтроки.Ссылка.Распечатан, WebЦвета.СветлоЗеленый, WebЦвета.Белый);


Может я что ни так делаю с этим - можете по подробней плиз

ЦИТАТА ВАША
"Для начала нужно хранить признак того что документ был распечатан в самой базе. Для этого добавьте реквизит булевного типа в документ, например "Распечатан". При печати записывайте в этот реквизит "Распечатан" = Истина."

klevenets @ Сегодня, 8:55 * ,



реквизит булевного типа в документ - я добаавил

как при печати записывайте в этот реквизит "Распечатан" = Истина."?

Автор: sava1 12.11.18, 9:25

В модуле объекта найдите процедуру Печать и в конце добавьте -

Распечатан = Истина;
Записать();

Автор: Bernet 12.11.18, 9:28

klevenets @ Сегодня, 9:16 * ,
Найдите в модуле объекта документа процедуру печати соответствующей печатной формы и в этой процедуре добавьте кусочек кода который будет в момент печати устанавливать этот признак.

ДокОбъект = Ссылка.ПолучитьОбъект();
ДокОбъект.Распечатан = Истина;
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);

Автор: klevenets 12.11.18, 10:17

Bernet @ Сегодня, 9:28 * ,


Всё равно ошибка
пробовал и так и так.

Автор: Sanguinius 12.11.18, 10:46

klevenets @ Сегодня, 10:17 * ,

Все уже описано выше.
Вот полный порядок действий для вас:
1. вам нужно добавить реквизит документа типа булево с именем "Распечатан" .
2. в конце процедуры печати документа необходимо добавить строки:

Распечатан = Истина;
Записать();

3. в форме списка, для табличного поля, добавить или дополнить стандартную процедуру "ПриПолученииДанных" (см. свойства табличного поля в форме).
Следующим кодом:
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    ОформлениеСтроки.ЦветФона = ?(ОформлениеСтроки.ДанныеСтроки.Ссылка.Распечатан, WebЦвета.СветлоЗеленый, WebЦвета.Белый);
КонецЦикла;

WebЦвета по точке можете менять по вкусу.

Автор: klevenets 12.11.18, 11:03

Bernet @ Сегодня, 9:28 * ,


А если по тимвиверу - сможет показать?

Автор: Gazulo 12.11.18, 11:07

klevenets @ Сегодня, 11:03 * ,
так

Автор: Sanguinius 12.11.18, 11:19

Цитата(Sanguinius @ 12.11.18, 10:46) *
3. в форме списка

чуть не забыл, между 2 и 3 пунктом вам нужно разместить данный реквизит "распечатано" в табличном поле формы списка.
ПКМ по табличному полю - разместить данные. Если не хотите потом его видеть во время работы можете убрать потом признак видимости у добавленной колонки, работать все равно будет.

Автор: klevenets 12.11.18, 11:40

Sanguinius @ Сегодня, 11:19 * ,

всё делаю по Вашему списку
1 и 2

но при размещении данных - нет такого пункта "Распечатано", хотя реквизит добавил ("Распечатано" - Булево)

klevenets @ Сегодня, 11:38 * ,

и ошибка в базе

{Документ.РеализацияТоваровУслуг.Форма.ФормаСписка.Форма(88)}: Поле объекта не обнаружено (Распечатан)
ОформлениеСтроки.ЦветФона = ?(ОформлениеСтроки.ДанныеСтроки.Ссылка.Распечатан, WebЦвета.СветлоЗеленый, WebЦвета.Белый);

Автор: Gazulo 12.11.18, 11:53

klevenets @ Сегодня, 11:40 * ,
могу подключиться

Автор: Sanguinius 12.11.18, 11:53

klevenets @ Сегодня, 11:40 * ,
Ошибка как раз из за того что не добавлено.



Соблюдайте правильность имени реквизита и обращения к нему. Везде имя должно быть одинаковым "Распечатан".

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua