Раскрасить ячейки

1. Bukaska 140 03.02.14 17:42 Сейчас в теме
Здравствуйте, не могу понять, раньше в толстом клиенте оператор Новый - ничем не мешал, сейчас хоть данные и доступны на клиенте, но я не пойму как ими воспользоваться

В форме документа в процедуре на клиенте:

Элемент.ПодчиненныеЭлементы.ТЧСписокДокументовВыбран.ЦветФона = Новый Цвет(1,1,1);

сколько вожусь над оператором Новый.. не прокатывает, пишет - несоответствие типов, хотя в отладке видит

Из отладчика: Свойство - вид, Значение - автоцвет, Тип - ВидЦвета
так же в свойствах есть: Зеленый, красный и синий с типом Число.. подскажите пожалуйста как ими воспользоваться
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Rothschild 03.02.14 18:27 Сейчас в теме
(1) Bukaska,
в управляемой форме есть такая штука, как условное оформление.
притянута в управляемую форму из системы компоновки данных.
попробуй покрасить "ячейки" с его помощью.

ЗЫ
а ячейки цэ шо?
цэ ячейки таблицы формы ???
3. Bukaska 140 03.02.14 21:28 Сейчас в теме
(2) Rothschild, в бух 2.0 в толстом клиенте было такое
Была в функция передана переменная: ОформлениеСтрок
и от неё отталкивались: ОформлениеСтрок.Ячейки.ЦветФона = ...
А тут все по другому....Нашла совсем в другой переменной цвет фона
4. jigourt 31 03.02.14 21:43 Сейчас в теме
(3) Bukaska, сначала написал, а потом прочел, что это уже сказали )))

нет оформления строк, потому что управляемый по другому работают, чем обычные )
оно ПриВыводеСтроки в обычных формах
5. Bukaska 140 03.02.14 22:01 Сейчас в теме
(4) jigourt, Я тоже что-то обращалана то, что ПриВыводеСтроки()
Но выделяю ТабличнуюЧасть и выбираю Свойства, там в командах нет обработчиков ПриВыводеСтроки(), есть только ПриАктивацииСтроки()
Или команду нужно искать глобально в свойствах Формы? А то я выделила нужную ТабличнуюЧасть, но там в обработчиках как таковой нет?
6. jigourt 31 03.02.14 22:17 Сейчас в теме
(5) Bukaska, не, в управляемых формах нет такого, теперь через условное оформление
7. Bukaska 140 03.02.14 22:58 Сейчас в теме
(6) jigourt, То есть чисто через условное оформление в свойствах формы?
завтра я там пороюсь, если что, буду доспрашивать)))
А то я роюсь и ищу несуществующие обработчики, как ... почему как...
8. Поручик 4674 03.02.14 23:26 Сейчас в теме
(7) Да, да, да. В управляемом приложении вся раскраска списка и прочие радости происходит через условное оформление формы. Почитайте уже книжку по разработке управляемого интерфейса.
9. Bukaska 140 03.02.14 23:39 Сейчас в теме
(8) Поручик, да я читала, а все время как сравниваю оба клиента, не сразу соображаю что с чем сравнивать...)))
10. jigourt 31 04.02.14 01:42 Сейчас в теме
(7) Bukaska, доспрашивайте, расскажу, пока я еще не до конца разочаровался в человечестве )))
11. Rothschild 04.02.14 07:27 Сейчас в теме
(1) Bukaska,
девчёнки и мальчишки,
а так же их родители!
веселые картинки
увидеть не хотите ли ???
***
Прикрепленные файлы:
12. Rothschild 04.02.14 08:36 Сейчас в теме
(11)
правда возможности условного оформления довольно скромные:
Прикрепленные файлы:
13. Rothschild 04.02.14 08:39 Сейчас в теме
(12)
как впрочем и "интерфейсные" возможности УФ вообще!

например, пиктограммы с помощью условного оформления не выведишь.
придется крепко поизвращаться с колонками реквизитов типа "Картинка"
14. Bukaska 140 04.02.14 09:39 Сейчас в теме
(13) Rothschild, да это -то я видела, вопрос в том, как пометить документ из списка документов табличной части красным цветом, если он был помечен на удаление?
При чем пометить достаточно в одной графе: Выбран, где булевская галочка.Сформировали на один документ сразу три(счет, Акт и счетФактуру). Итого у нас в одной из табчастей лежит для распечатки сразу три документа
Но если они помечены на удаление были, то нужно чтобы в одной колонке фон был красным, если какой-то из документов был полмечен на удаление.
Вот я и не пойму, как возиться здесь с условным оформлением и пытаюсь добраться вручную
15. Rothschild 04.02.14 09:45 Сейчас в теме
(14) Bukaska, попробуй так:
Прикрепленные файлы:
16. Bukaska 140 04.02.14 09:50 Сейчас в теме
(15) Rothschild,
Я взяла цвет фона. Условие: Объект.ПометкаУджаления равно истина, Оформляемые поля - ТЧСписокДокументовВыбран
17. Rothschild 04.02.14 09:51 Сейчас в теме
(15)
при этом тебе в реквизит таблицы формы придется добавить
колонку реквизита с признаком пометки документа на удаление
(эту пометку на удаление необязательно выводить на элемент управления в форме
но потребуется ее коррекно перезаполнять при выборе или подборе документа
в "список для печати").
Восьмой; +1 Ответить
18. Bukaska 140 04.02.14 10:14 Сейчас в теме
(17) Rothschild, Не поняла.. отсюда поподробнее..
Я же взяла на это дело колонку булева типа..
У меня есть колонка в табличнойЧасти: Выбран.. Там тип булево. Я могу их все пометить для печати, но документы, помеченные на удаление доллжны быть выделены в данной колонке другим цветом.
Но смотрю номер не проходит(((
лан.. щас попробую создать колонку
19. Rothschild 04.02.14 10:21 Сейчас в теме
(18) Bukaska,
тебе нужна другая колонка в таблице - "ПометкаУдаления" со значением этой пометки.
а в условном оформлении для всей таблицы выбирай:
в условии
ПометкаУдаления = Истина

а в параметрах оформления -
- то как ты эту строчку хочешь "изгатить",
чтоб юзеру стало противно
и
он ни за что на свете не стал бы печатать документы, помеченные на удаление!!!
20. Rothschild 04.02.14 10:21 Сейчас в теме
(19)
ФУ!!! Какой я сегодня ПЛОХОЙ!!!
21. Bukaska 140 04.02.14 10:24 Сейчас в теме
(19) Rothschild, Не срабатывает. Добавила колонку, открываю документ, открываю табчасть, и никакой реакции по данной колонке, хотя я часть документов в покупках и продажах пометила на удаление, ну там счет, реализацию, а в моем документе они в виде списка не помечаются, разве что ставить и снимать галки корректно отрабатывает

В общем оно работает, если я сама в своём документе пометила какой-то док из списка на удаление
Но если я тот же счет помечу в покупках и продажах в собственных формах списка, то я у себя в документе в табчасти, где у меня сформировано по три документа покупателю, я там его помеченным на удаление не увижу - как быть?

Суть самоделки-документа, я из собственного документа формирую на каждого покупателя по три документа, и вывожу сразу на печать счет, счет-фактуру и акт, но если я их(хоть где) пометила на удаление, то они у меня в моём документе должны показать, что док помечали на удаление
22. Rothschild 04.02.14 10:46 Сейчас в теме
(21) Bukaska,
ты в табличной части документа-"самоделки" хранишь список документов для печати???
23. Rothschild 04.02.14 10:49 Сейчас в теме
(22)
сходи к стати сюда:
Ищу программиста для которого не бывает невозможного
там народ немного раслабляется от рутины дня.
;)
24. Bukaska 140 04.02.14 10:52 Сейчас в теме
(22) Rothschild, да.. У меня две табличных части.
В одной табчасти я ввожу данные по каждому покупателю и у меня есть кнопка: Создать Документы
Данная кнопка формирует сразу в другой табличной части по три документа каждому покупателю в виде списка.
Это сделано для того, чтобы одним разом распечатывать счета и акты за месяц для рассылки клиентам на оплату.

Вот только с этим оформлением мечешься, как курица с яйцом)))
26. Rothschild 04.02.14 10:58 Сейчас в теме
(24) Bukaska,
пометку удаления в подготовленном для печати списке обновляешь,
после того как помечаешь документы на удаление
(уже после того как они попали в тот список) ???
28. Bukaska 140 04.02.14 11:19 Сейчас в теме
(26) Rothschild, В условном оформлении я вручную пометила на удаление, потом перехожу на другую строку и только после этого меняется как надо цвет фона.
Но если я помечу тот же док реализации не в табчасти моего документа, а среди документов реализации, то мой документ этого не увидит
30. mymyka 04.02.14 11:20 Сейчас в теме
(28)Основную таблицу надо указать для динамического списка, иначе как он узнает, что ты пометила документ на удаление?
31. Rothschild 04.02.14 11:25 Сейчас в теме
(30) mymyka,
там списки не динамические - если это "табличные части".
40. mymyka 04.02.14 11:35 Сейчас в теме
(31)(32)Ну тогда в чем вопрос-то? Динамических табличных частей еще не придумали. Или обновлять ТЧ при каждом телодвижении или мутить с ОбработкойОповещения.
25. jigourt 31 04.02.14 10:54 Сейчас в теме
(21) Bukaska, я правильно понял, что при программном заполнении у тебя не отрабатывает условноеоформление, а при интерактивном да? ))
27. Bukaska 140 04.02.14 11:17 Сейчас в теме
(25) jigourt, да.. Я программно пока что и не совалась в данную колонку.
Ну если я вручную тыкаюсь ставить пометку удаления в моём документе - то работает.
Если же я сформировала документы на оплату, а пометила на удаление не в своём документе, а среди списка актов и счетов, то у меня эта пометка не показывается.
Может все таки нужен нужен какой обработчик?
Но при выделении табличной части и поиск в свойствах нужного обработчика: ПриВыводеСтроки - нету, хоть выделяй форма/Свойста - как такового обработчика нету
29. jigourt 31 04.02.14 11:19 Сейчас в теме
(27) Bukaska, если данные
в своём документе
обновились, то попробуй просто обновить форму
32. Bukaska 140 04.02.14 11:25 Сейчас в теме
(29) jigourt, Я документ пробовала закрывать и открывать.. все равно
(30) mymyka, Форма Документа, а не списка..
Просто отдельная табличная часть.. Что я там и не найду основной таблицы, как я поняла по запросу, как в форме списка
33. Rothschild 04.02.14 11:27 Сейчас в теме
(32) Bukaska,
если ты заполняешь в табличной части значение пометки на удаление
на момент добавление документа в список,
то это значение автоматом не изменится,
если ты затем его пометишь на удаление.
***
34. Rothschild 04.02.14 11:29 Сейчас в теме
(33)
по этой причине колонку "ПометкаУдаления" нельзя привязывать к данным объекта.
Ее надо ПриСозданииНаСервере() заполнять по фактическим данным,
а так же при всех манипуляциях со списком документов
35. Rothschild 04.02.14 11:30 Сейчас в теме
(34)
так же было бы полезно добавить команду,
вроде "Обновить пометку удаления"
39. Bukaska 140 04.02.14 11:33 Сейчас в теме
(34) Rothschild, ну вот.. уже не ПриВыводеСтроки, уже ПриСозданииНаСервере)))
Теперь хотя бы ясно, куда копать)
36. Bukaska 140 04.02.14 11:31 Сейчас в теме
(33) Rothschild, Пометка на удаление работает.. сохраняется при перезапуске программы, но только если я пометила из своего документа, а не из других списков
38. jigourt 31 04.02.14 11:32 Сейчас в теме
(36) Bukaska, надо через подписку на событие делать тогда ))
37. jigourt 31 04.02.14 11:32 Сейчас в теме
(32) Bukaska, блин, видимо код смотреть надо )))
121. Rothschild 06.02.14 16:49 Сейчас в теме
(1) Bukaska, ну ты даешь!
за три дня умудрилаль со своими ячейками
в ТОП-ик "Популярные за 30 дней" попасть!
;)))))))))))))))
Восьмой; +1 Ответить
122. Bukaska 140 06.02.14 17:01 Сейчас в теме
(121) Rothschild, ну так.. уметь надо)))
41. Восьмой 88 04.02.14 13:18 Сейчас в теме
пример раскраски ТЧ документа на УФ
Создай на форме команду
&НаКлиенте
Процедура УсловноеОформление(Команда)
ОформитьНаСервере();
КонецПроцедуры


&НаСервере
Процедура ОформитьНаСервере()
//Зададим цвет раскраски строк
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.ЗеленаяЛужайка);
//Зададим условия раскраски
ЭлементУсловия = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементыОтбораКомпоновкиДанных"));
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Количество");//в колекции условия нужно указывать поле реквизита формы
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементУсловия.ПравоеЗначение = 10 ;
//Укажем какое поле ТЧ раскрасить
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары.Товар"); //в коллекции оформляемых полей нужно указывать имя поля таблицы
КонецПроцедуры
GonziK_KIV; arxus; nikki_00; Bukaska; Rothschild; +5 Ответить
42. Rothschild 04.02.14 13:55 Сейчас в теме
(41) Восьмой,
хватило бы и фиксированного в конфигураторе оформления
;)
***
но пример - достойный!
Восьмой; +1 Ответить
43. Bukaska 140 04.02.14 13:59 Сейчас в теме
(42) Rothschild, Пока испытываю при СозданииНаСервере.. Потом рискну команду формы.
И так убрала из формы ссылки на все обработчики модуля, теперь введенные данные не сохраняются... Теперь как дров наломала, нужно их сначала сложить)
44. jigourt 31 04.02.14 14:05 Сейчас в теме
(43) Bukaska, да все-то надо было программно отследить, что документ изменил пометку удаления и поменять это у себя в ТЧ )))

а виновник ее действий теперь мое сообщение плюсует )))))
Rothschild; +1 Ответить
45. Rothschild 04.02.14 14:08 Сейчас в теме
(43) Bukaska,
аккуратно поленья складывай - а то на голову заказчика повалятся!!!
;)))
46. Bukaska 140 04.02.14 14:19 Сейчас в теме
(45) Rothschild, НЕ повалятся.. в печке сожгу)))
Восьмой; +1 Ответить
47. Rothschild 04.02.14 14:49 Сейчас в теме
(46) Bukaska, надеюсь при пожаре ни кто не пострадает.
;)))
48. Bukaska 140 04.02.14 14:59 Сейчас в теме
(47) Rothschild, А что сразу пожар? сплюнь.. Сколько печки люди держат без пожара, а так и в городской квартире никто от пожара не застрахован...
50. Rothschild 04.02.14 18:24 Сейчас в теме
(48) Bukaska, как полагается - три раза:



;)))))))))
49. Bukaska 140 04.02.14 16:20 Сейчас в теме
Ребята.. Что я не так делаю? Почему у меня колонка ПомУдаления не запоминает галочки установленные? Как закрывать док, так они все снимаются
51. Rothschild 04.02.14 18:24 Сейчас в теме
(49) Bukaska,
выкладывай исходники что ли???
52. jigourt 31 04.02.14 18:31 Сейчас в теме
53. Bukaska 140 05.02.14 09:53 Сейчас в теме
(52) jigourt,
На пометку Удаления я сделала так:
Но не запоминается галка даже если я помечу на удаление здесь в документе, а если пометишь в других списках, вообще не увидишь
&НаКлиенте
Процедура ТЧСписокДокументовПомУдаленияПриИзменении(Элемент)
	// Вставить содержимое обработчика.
	ТекущаяСтрока = Элементы.ТЧСписокДокументов.ТекущиеДанные;
	Если НЕ ТекущаяСтрока.Документ.ПометкаУдаления Тогда
		Сообщить("Отмеченные на удаление помечаются красным цветом, съем галочки на удаление снимает пометку удаления!")
	
		
	
	КонецЕсли; 
	
КонецПроцедуры
Показать



&НаКлиенте
Процедура ТЧСписокДокументовВыбранПриИзменении(Элемент)
ТекущийДокумент=Элементы.ТЧСписокДокументов.ТекущиеДанные.Документ;
Элементы.ТЧСписокДокументов.ТекущиеДанные.Документ.ПометкаУдаления Тогда
Если НЕ Элементы.ТЧСписокДокументов.ТекущиеДанные.Выбран И ТекущийДокумент.ПометкаУдаления Тогда
Если Вопрос("Снять пометку удаления выбранного документа?",РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
Элементы.ТЧСписокДокументов.ТекущиеДанные.Документ.ПолучитьОбъект().УстановитьПометкуУдаления(Ложь);

ЭтаФорма.Записать();
Возврат;

КонецЕсли;
КонецЕсли;
КонецПроцедуры

Я из одного документа создаю сразу за месяц по три документа для каждого контрагента
По сути это и есть вторая табличная часть, для которой делались колонки Выбран и ПомУдаления
По колонке:Выбран галки запоминаются после закрытия/открытия, по колонке ПомУдаления - нет
&НаКлиенте
Процедура СоздатьСчета(Команда)
    
    Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
        Сообщить("Необходимо заполнить поле ''Организация''!
        |Обработка прекращена!");
        Возврат;
    КонецЕсли; 
    
    Если ЭтотОбъект.Модифицированность Тогда
        ЭтаФорма.Записать();
    КонецЕсли; 
    
    Если Объект.ДатаАктов<Объект.ДатаСчетов Тогда
        Предупреждение("Дата актов и накладных не может быть меньше даты счетов!
        |Обработка прекращена!");
        Возврат;
    КонецЕсли; 
    
    Если НЕ ЗначениеЗаполнено(Объект.СтатьяОбслуживание) Тогда
        Предупреждение("В документе не заполнено поле ''Абонентское обслуживание'', создание документов не может быть выполнено!!!");
        Возврат;
    КонецЕсли; 
    
    Если НЕ ЗначениеЗаполнено(Объект.СтатьяПрочее) Тогда
        Проверка=ПроверкаПоЧасамНаСервере();
        Если НЕ Проверка Тогда
            Предупреждение("В документе не заполнено поле ''Информационные часы'', создание документов не может быть выполнено!!!");
            Возврат;
        КонецЕсли; 
    КонецЕсли; 
    
    Если ПроверкаТабЧасти()>0 Тогда
        Сообщить("Ошибки заполнения строк документа перечислены в окне ''Служебные сообщения''!
        | Документы для контрагентов создать невозможно!");
        Возврат;
    КонецЕсли; 
    
    ЭтоУСН=ОпределитьУСН(Объект.Организация,Объект.Дата);
    
    Элементы.Страницы.ТекущаяСтраница = Элементы.Страницы.ПодчиненныеЭлементы.ГруппаТЧСписокДокументов; 
    
    Если ПроверкаДокументов()>0 Тогда
        Ответ=ВопросПроСоздание();
        Если Ответ=Неопределено Тогда
            Возврат;
        ИначеЕсли Ответ=Истина Тогда
            ОтметитьНаСервере();
            ЭтаФорма.Записать();
            УдалениеДокументов(Истина);
        КонецЕсли; 
    Иначе
        Ответ=Истина;
    КонецЕсли; 
    
    Колво=Объект.ТабличнаяЧасть1.Количество();
    Если НЕ Ответ Тогда
        КоличествоПоНаличиюСделанныхДокументов(Колво);
    КонецЕсли;
    
    //Проверяем, сколько галок "МесяцаОтдельно" 
    КоличествоПоРаздельнымМесяцам(Колво);
    
    СоздатьСчетаНаСервере(Ответ,Колво);
    
    Сообщить("Создание документов закончено.");
    Объект.ТЧСписокДокументов.Сортировать("Контрагент,Документ");
    ЭтаФорма.Записать();
    
КонецПроцедуры
Показать
54. jigourt 31 05.02.14 10:24 Сейчас в теме
(53) Bukaska, ниче из этих кусков кода не понял. в общем суть такая. есть некий документ, который при создании создает еще какие-то и добавляет данные о них себе в ТЧ. если из документа какой-то из них пометить на удаление, то в ТЧ это видно, а если просто интерактивно пометить на удаление, то в ТЧ документа это не отображается. я правильно понял? ))
55. Bukaska 140 05.02.14 11:16 Сейчас в теме
(54) jigourt, В общем в самодельном документе мы вводим данные в течение месяца по обслуживанию в разрезе клиентов
В конце месяца мы формируем документы, на каждого клиента по три документа(счет, счет-фактура и акт)
Все эти трое документов спокойно можно найти среди счетов, автов и счетов-фактур.. То есть они создаются в базе как новые и отображаются в табличной части самодельного документа.
Кнопка выбора работает, могу выбрать все и снять все(галки)
а вот галка в колонке: Пометка Удаления - она ставится и колонка закрашивается, но.. пока документ открыт.
Я могу на одном из клиентов в списке счетов фактур пометить счет-фактуру на удаление, этого в моем документе в табличной части не отобразится!
Я могу создать заново документы, удалить документы из списка табличной части. Но мой документ не видит документы, если они помечены на удаление из другого места базы, а не из моего документа. А в своём документе я в списке табличной части пометила на удаление и удалила, но если я помечу на удаление в своем документе и закрою документ, при повторном открытии выясняется, что я галки удаления будто бы не ставила
56. Восьмой 88 05.02.14 11:21 Сейчас в теме
(55) Bukaska,
Я могу на одном из клиентов в списке счетов фактур пометить счет-фактуру на удаление, этого в моем документе в табличной части не отобразится!
- дык а кто обновлять форму будет?)
58. Bukaska 140 05.02.14 11:23 Сейчас в теме
(56) Восьмой, Но с колонкой Выбор не было же обновления формы.. не пойму в чем косяк..
Добавить что-ли типа этого:
ЭтаФорма.Обновить();
Сейчас попробую
57. Восьмой 88 05.02.14 11:22 Сейчас в теме
(55) Bukaska, Мудришь опять подруга, ох как мудришь)
59. Bukaska 140 05.02.14 11:25 Сейчас в теме
(57) Восьмой, Но ума-то палата, как в палате №6)))
Добавила в обработчик ТЧСписокДокументовПриИзменении строку:
ЭтаФорма.ОбновитьОтображениеданных();
Все равно даже в своём документе не запоминает галочки пометки на удаление после закрытия документа
60. Восьмой 88 05.02.14 11:34 Сейчас в теме
(53) Bukaska,
при повторном открытии выясняется, что я галки удаления будто бы не ставила

покажи процедуры:
ОтметитьНаСервере();
УдалениеДокументов();
61. Восьмой 88 05.02.14 11:36 Сейчас в теме
Стоп!!! у тебя галочки пометки на удаление это поля тЧ твоего документа или просто добавленная колонка с чекбоксом?
62. Bukaska 140 05.02.14 11:46 Сейчас в теме
(61) Восьмой, В данном случае у меня отдельная колонка помУдаления, которая я не пойму зачем нужна.. Так как колонка сама по себе, она не является составной частью созданных документов.
Она работает только на непосредственное удаление списка документов, пока мой док открыт
&НаСервере
Процедура ОтметитьНаСервере()
	//Объект = РеквизитФормыВЗначение("Объект");
    Для каждого Элемент Из Объект.ТЧСписокДокументов Цикл
     Элемент.Выбран = НЕ  Элемент.Выбран;
	
	 
 КонецЦикла; 
	//ЗначениеВРеквизитФормы(Объект,"Объект"); 	
КонецПроцедуры
Показать


&НаКлиенте
Процедура УдалитьДокументы(Команда)
    
    УдалениеДокументов(Истина);
    
КонецПроцедуры


&НаКлиенте
Процедура УдалениеДокументов(Молча)
    
    Если ЭтаФорма.Модифицированность Тогда
        ЭтаФорма.Записать();
    КонецЕсли; 
    
    Если Объект.ТЧСписокДокументов.Количество() = 0 Тогда
        Предупреждение("Нет документов для удаления!");
        //Сообщить("Нет документов для удаления!");
        Возврат;
    КонецЕсли;
    
    ЕстьПомеченные=Ложь;
    Для каждого СтрокаТЧ Из Объект.ТЧСписокДокументов Цикл
        Если СтрокаТЧ.Выбран  Тогда
            Если НЕ ЕстьПомеченные Тогда
                ЕстьПомеченные=Истина;
                Прервать;
            КонецЕсли; 
        КонецЕсли; 
    КонецЦикла;
    Если НЕ Молча И ЕстьПомеченные Тогда
        Решение=ВопросПроУдаление();
        Если Решение=Ложь Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;
    Если НЕ ЕстьПомеченные Тогда
        Предупреждение("Нет документов, помеченных на удаление!");
        //Сообщить("Нет документов, помеченных на удаление!");
        Возврат;
    КонецЕсли;
    
    УдалитьДоки();
    
    //Удаляем кривые обрывки строк	
    Колво=Объект.ТЧСписокДокументов.Количество();
    Для к=1 По Колво Цикл
        СтрокаТЧ=Объект.ТЧСписокДокументов.Получить(Колво-к);
        //Если СтрокаТЧ.Выбран И СтрокаТЧ.Документ=Неопределено Тогда
        Если СтрокаТЧ.Выбран  Тогда
            Объект.ТЧСписокДокументов.Удалить(Колво-к);
        КонецЕсли; 
    КонецЦикла; 
    Объект.ТЧСписокДокументов.Сортировать("Контрагент,Документ");    //На случай, когда удалено не все
    
    ЭтаФорма.Записать();
КонецПроцедуры
Показать
63. Восьмой 88 05.02.14 12:28 Сейчас в теме
(62) Bukaska,
В данном случае у меня отдельная колонка помУдаления, которая я не пойму зачем нужна
- ты точно 1Сы программист а не гадалка???
Напиши себе тех задание на примере этого:
1. Создать документ XXX - назначение документа создание пакета документов YYY по контрагентам в конце месяца
2. Создать у документа XXX табличну часть (ТЧ) в которой отображается список документов YYY
3. Создать обработчик события заполнение(создание) пакета документов YYY для табличной части документа XXX
4. Для ТЧ документа XXX реализовать механизм установки отметки удаления конкретного документа YYY
5. В ТЧ документа XXX добавить колонку со значением реквизита "пометка удаления" документа YYY
6. Для ТЧ документа XXX установить раскраску строк ТЧ по условию ДокументYYY.ПометкаУдаления = Истина

Учись сначала решать задачу на бумаге а не рисовать из головы.



А теперь покажи главный вот эту процедуру УдалитьДоки();
Она у тебя непосредственно документы должна удалить???

 Если СтрокаТЧ.Выбран  Тогда
            Объект.ТЧСписокДокументов.Удалить(Колво-к);
        КонецЕсли; 
- Выбран я так понял у тебя это поле????

И я чето-то не догоняю - у тебя типа должна быть галочка на "якобы потом удалить" ???
64. Bukaska 140 05.02.14 12:45 Сейчас в теме
(63) Восьмой, Да.. можно вычистить табчасть и снова создать(заполнить) её документами
Колонка ПоУдаления была в течение этой темы создана для условного оформления, раскраски в другой тон..
Но как при формировании табчасти с списком документов выяснить, есть ли помеченные на удаление. А то ведь я чуть ли не все сформированные документы из списка(счета, акты и СФ) пометила на удаление среди их форм списка, но мой док не видит, что они помечены на удаление.. только когда в своём доке ставлю галку пометки, тогда даже и рисунок меняется сразу)
65. Восьмой 88 05.02.14 12:47 Сейчас в теме
(64) Bukaska, а нука напиши мне свое тех задание на примере того что я тебе скинул. по пунктам.
67. Bukaska 140 05.02.14 12:56 Сейчас в теме
(65) Восьмой,
Создать Документ для формирования счетов и актов для единой распечатки в конце месяца.
Создать Табчасть для ввода данных по клиентам, и ещё табличную часть - для формирования списка документов
В табличной части списка документов должен механизм отслеживать пометки на удаление.
Помеченные на удаление документы должны выделяться в списке другим цветом.
66. Восьмой 88 05.02.14 12:56 Сейчас в теме
(64) Bukaska, Показывай процедуру Раскраски ТЧ
68. Bukaska 140 05.02.14 12:57 Сейчас в теме
(66) Восьмой, Раскраска сделана в условном оформлении. Или такой номер не пройдет?
69. Восьмой 88 05.02.14 12:59 Сейчас в теме
(68) Bukaska, Да раскраска ТЧ на примере того как в (41)
70. Bukaska 140 05.02.14 13:06 Сейчас в теме
(69) Восьмой, Так это же что ты привел это получается кнопка на форме.. жать каждый раз на кнопку? Хотя все равно не срабатывает, а условное оформление из свойств - отрабатывает)
&НаКлиенте
Процедура УсловноеОформление(Команда)
ОформитьНаСервере();
КонецПроцедуры


&НаСервере
Процедура ОформитьНаСервере()
//Зададим цвет раскраски строк
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.ЗеленаяЛужайка);
//Зададим условия раскраски
ЭлементУсловия = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТЧСписокДокументов.ПомУдаления");//в колекции условия нужно указывать поле реквизита формы
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементУсловия.ПравоеЗначение = 10 ;
//Укажем какое поле ТЧ раскрасить
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТЧСписокДокументов.ПомУдаления"); //в коллекции оформляемых полей нужно указывать имя поля таблицы
КонецПроцедуры
71. Восьмой 88 05.02.14 13:13 Сейчас в теме
ОформитьНаСервере() - поставь либо в обновление формы либо при создании на сервере" - я тебе вызов через кнопу для примера привел - это тоже самое что через свойства только программным способом

//Здесь ты меня просто без ножа зарезала
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТЧСписокДокументов.ПомУдаления");//в колекции условия нужно указывать поле реквизита формы
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементУсловия.ПравоеЗначение = 10 ;

вместо Объект.ТЧСписокДокументов.ПомУдаления у тебя должно быть что-то вроде Объект.ТЧСписокДокументов.Документ.ПометкаУдаление где "Документ" - это имя поля с твоим документом ты должна проверить саму пометку документа на удаление а не значение твоего поля в ТЧ.
вместо ЭлементУсловия.ПравоеЗначение = 10 ; должно быть ЭлементУсловия.ПравоеЗначение = Истина ; ну зачем ты пометку с числом сравниваешь когда у тебя значение БУЛЕВО?

Новый ПолеКомпоновкиДанных("ТЧСписокДокументов.ПомУдаления") - блин ну укажи ты здесь само поле документа Тч а если нужно чтобы вся строка красилась то нужно добавить поочередно все поля твоей ТЧ

что не ясно?????


Либо блин через свойства загоняй - но блин проверку делай на пометку самого документа!!!!!!!
72. Bukaska 140 05.02.14 13:23 Сейчас в теме
(71) Восьмой, В цикле может проверять?
Объект.ТЧСписокДокументов.Документ.ПометкаУдаление - Мне не попасть так, теперь придется всё это крутить в цикле
74. jigourt 31 05.02.14 13:28 Сейчас в теме
(72) Bukaska, зачем цикл, это в условном оформлении с левой стороны ))
78. Bukaska 140 05.02.14 13:46 Сейчас в теме
(74) jigourt, Всё равно.. в отладке все видит, а сформировала список документов, так он не видит, что в сформированном списке документов имеются помеченные на удаление
Работает только интерактивная пометка удаления, пока документ открыт
79. jigourt 31 05.02.14 13:51 Сейчас в теме
(78) Bukaska, есть скайп?? может через демонстрацию экрана покажешь, что делаешь??
87. Bukaska 140 05.02.14 14:18 Сейчас в теме
(79) jigourt, Вот серверная процедура создания документов
&НаСервере
Процедура СоздатьСчетаНаСервере(Ответ,Колво)
Перем СтрокаМассиваНомеров;
Перем МаксНомер;

    ЭтоУСН=ОпределитьУСН(Объект.Организация,Объект.Дата);
    
    ТекПрефикс=Объект.Организация.Префикс;
    ДлНомераБезПрефикса=Объект.Ссылка.Метаданные().ДлинаНомера-5;
    
    //МассивНомеров=ПолучитьМассивСвободныхНомеров(Колво,ТекПрефикс,ДлНомераБезПрефикса);
    
    СтавкаНДС_Обсл=СтавкаНДС(Объект.СтатьяОбслуживание.СтавкаНДС);
    СтавкаНДС_Проч=СтавкаНДС(Объект.СтатьяПрочее.СтавкаНДС);
    
    СчетаУчета_Обсл = БухгалтерскийУчетПереопределяемый.ПолучитьСчетаУчетаНоменклатуры(Объект.Организация, Объект.СтатьяОбслуживание);
    СчетаУчета_Проч =БухгалтерскийУчетПереопределяемый.ПолучитьСчетаУчетаНоменклатуры(Объект.Организация, Объект.СтатьяПрочее);  
    
    
    ДокСчетТ		= Документы.СчетНаоплатуПокупателю;
    ДокАктТ			= Документы.РеализацияТоваровУслуг;
    ДокСФТ			= Документы.СчетФактураВыданный;
    
    ПерваяСтрока=Истина;
    ПозМассива=0;
    
    ДатаОтдДок= НачалоМесяца(Объект.ДатаАктов);
    
    ЗапросАдресаКонтрагентов=Новый Запрос;
    
    ЗапросАдресаКонтрагентов.Текст=
    "ВЫБРАТЬ
    |   КонтрагентыКонтактнаяИнформация.Ссылка КАК Контрагент,
    |   КонтрагентыКонтактнаяИнформация.Представление КАК Адрес
    |ИЗ
    |   Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
    |ГДЕ
    |   КонтрагентыКонтактнаяИнформация.Ссылка В(&СписокКонтагентов)
    |   И КонтрагентыКонтактнаяИнформация.Тип = &Тип
    |   И КонтрагентыКонтактнаяИнформация.Вид = &Вид";
    
    ЗапросАдресаКонтрагентов.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.Адрес);
    ЗапросАдресаКонтрагентов.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
    
    СписокКонтагентов=Объект.ТабличнаяЧасть1.Выгрузить(,"Контрагент");

    ЗапросАдресаКонтрагентов.УстановитьПараметр("СписокКонтагентов",СписокКонтагентов);
     
    ТаблицаАдресов=ЗапросАдресаКонтрагентов.Выполнить().Выгрузить();
    
    Дописки=Новый СписокЗначений;
    Дописки.Добавить(" ");
    Дописки.Добавить(" (вечерние часы)");
    Дописки.Добавить(" (часы в выходные)");
    Дописки.Добавить(" (часы по доп.тарифу)");
    
    ДелатьСчет=Истина;   
    ДелатьРеал=Истина;
    ДелатьСчФк=Истина;
    
    ДелатьСчетТариф=Истина;
    ДелатьРеалТариф=Истина;
    ДелатьСчтФТариф=Истина;
    
    ДелатьСчетЧасы=Истина;
    ДелатьРеалЧасы=Истина;
    ДелатьСчтФЧасы=Истина;
    
    МассивНомеров=ПолучитьМассивСвободныхНомеров(Колво,ТекПрефикс,ДлНомераБезПрефикса);
    
    Для каждого СтрокаДокумента Из Объект.ТабличнаяЧасть1 Цикл
        Если СтрокаДокумента.МесяцаОтдельно И СтрокаДокумента.Тариф=СтрокаДокумента.Сумма Тогда
            МесяцаОтдельно=Ложь;
        Иначе
            МесяцаОтдельно=СтрокаДокумента.МесяцаОтдельно;
        КонецЕсли;
        
        Если НЕ Ответ Тогда
            НайдМассив=Объект.ТЧСписокДокументов.НайтиСтроки(Новый Структура("Контрагент,Договор",СтрокаДокумента.Контрагент,СтрокаДокумента.Договор));
            
            СуммаСчета=0;
            СуммаРеал=0;
            СуммаСчФ=0;
            
            Для каждого СтрокаМассива Из НайдМассив Цикл
                Если ТипЗнч(СтрокаМассива.Документ)=Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
                    СуммаСчета=СуммаСчета+СтрокаМассива.Документ.СуммаДокумента;
                ИначеЕсли ТипЗнч(СтрокаМассива.Документ)=Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
                    СуммаРеал=СуммаРеал+СтрокаМассива.Документ.СуммаДокумента;
                ИначеЕсли ТипЗнч(СтрокаМассива.Документ)=Тип("ДокументСсылка.СчетФактураВыданный") Тогда
                    СуммаСчФ=СуммаСчФ+СтрокаМассива.Документ.СуммаДокумента;   //есть и просто сумма - та же самая
                КонецЕсли;
            КонецЦикла;
                
            Если СтрокаДокумента.Сумма=СуммаСчета Тогда
                ДелатьСчет=Ложь;
            КонецЕсли;
            Если СтрокаДокумента.Сумма=СуммаРеал Тогда
                ДелатьРеал=Ложь;
            КонецЕсли;
            Если СтрокаДокумента.Сумма=СуммаСчФ Тогда
                ДелатьСчФк=Ложь;
            КонецЕсли;
            
            Если (ДелатьСчет ИЛИ ДелатьРеал ИЛИ ДелатьСчФк) Тогда
                Если МесяцаОтдельно Тогда
                    Если ДелатьСчет И СуммаСчета>0 Тогда
                        Если СтрокаДокумента.Тариф=СуммаСчета Тогда
                            ДелатьСчетТариф=Ложь;
                        ИначеЕсли СтрокаДокумента.Сумма-СтрокаДокумента.Тариф=СуммаСчета Тогда
                            ДелатьСчетЧасы=Ложь;
                        Иначе
                            //ДелатьСчет=Ложь;
                            Сообщить("По контрагенту "+СтрокаДокумента.Контрагент +" сумма в списке подготавливаемых документов не соответствует сумме в ранее созданном счете! Исправьте сумму в списке или удалите старый документ!",СтатусСообщения.Внимание );
                            Возврат;
                        КонецЕсли;
                    КонецЕсли; 
                    
                    Если ДелатьРеал И СуммаРеал>0 Тогда
                        Если СтрокаДокумента.Тариф=СуммаРеал Тогда
                            ДелатьРеалТариф=Ложь;
                        ИначеЕсли СтрокаДокумента.Сумма-СтрокаДокумента.Тариф=СуммаРеал Тогда
                            ДелатьРеалЧасы=Ложь;
                        Иначе
                            //СуммаРеал=Ложь;
                            Сообщить("По контрагенту "+СтрокаДокумента.Контрагент +" сумма в списке подготавливаемых документов не соответствует сумме в ранее созданной реализации! Исправьте сумму в списке или удалите старый документ!",СтатусСообщения.Внимание );
                            Возврат;
                       КонецЕсли;
                    КонецЕсли; 
                    
                    Если ДелатьСчФк И СуммаСчФ>0 Тогда
                        Если СтрокаДокумента.Тариф=СуммаСчФ Тогда
                            ДелатьСчтФТариф=Ложь;
                        ИначеЕсли СтрокаДокумента.Сумма-СтрокаДокумента.Тариф=СуммаСчФ Тогда
                            ДелатьСчтФЧасы=Ложь;
                        Иначе
                            //ДелатьСчФк=Ложь;
                            Сообщить("По контрагенту "+СтрокаДокумента.Контрагент +" сумма в списке подготавливаемых документов не соответствует сумме в ранее созданном счете-фактуре! Исправьте сумму в списке или удалите старый документ!",СтатусСообщения.Внимание );
                            Возврат;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;    
            Иначе
                Сообщить("По контрагенту "+СтрокаДокумента.Контрагент +" сумма в списке подготавливаемых счетов не соответствует сумме в ранее созданном документе! Исправьте сумму в списке или удалите старые и создайте новые документы по контрагенту ",СтатусСообщения.Внимание );
                Возврат;
            КонецЕсли; 
                
            Если НЕ ДелатьСчет И НЕ ДелатьРеал И НЕ ДелатьСчФк Тогда
                Продолжить;
            КонецЕсли; 
        КонецЕсли; //Вариант выполнения "Частично"
        
        //Если СтрокаДокумента.МесяцаОтдельно И СтрокаДокумента.Тариф<СтрокаДокумента.Сумма Тогда
        Если МесяцаОтдельно Тогда
           Кол=2;
        Иначе
            Кол=1;
        КонецЕсли;
        
        Для к=1 По Кол Цикл
            Если Кол=2 И к=1 И (НЕ ДелатьСчетТариф И НЕ ДелатьРеалТариф И НЕ ДелатьСчтФТариф) Тогда
                Продолжить;
            КонецЕсли; 
            Если к=2 И (НЕ ДелатьСчетЧасы И НЕ ДелатьРеалЧасы И НЕ ДелатьСчтФЧасы) Тогда
                Продолжить;
            КонецЕсли;
            ПризнакРеализации=ДелатьРеал и (к=1 и ДелатьРеалТариф) или (к=2 И ДелатьРеалЧасы);
            ПризнакСчета=ДелатьСчет и (к=1 и ДелатьСчетТариф) или (к=2 И ДелатьСчетЧасы);
            ПризнакСчтФ=ДелатьСчФК и (к=1 и ДелатьСчтФТариф) или (к=2 И ДелатьСчтФЧасы);
            
            Если к=2 Тогда
                Если ЗначениеЗаполнено(СтрокаДокумента.ДатаСчетов) Тогда
                    //ДатаСчет= НачалоДня(НачалоМесяца(СтрокаДокумента.ДатаСчета)-1);
                    ДатаСчет= НачалоМесяца(СтрокаДокумента.ДатаСчетов);
                Иначе
                    ДатаСчет=ДатаОтдДок;
                КонецЕсли;
                Если ЗначениеЗаполнено(СтрокаДокумента.ДатаАктов) Тогда
                    //ДатаАкт= НачалоДня(НачалоМесяца(СтрокаДокумента.ДатаАкта)-1);
                    ДатаАкт= НачалоМесяца(СтрокаДокумента.ДатаАктов);
                Иначе
                    ДатаАкт=ДатаОтдДок;
                КонецЕсли;
            Иначе
                Если ЗначениеЗаполнено(СтрокаДокумента.ДатаСчетов) Тогда
                    ДатаСчет	= СтрокаДокумента.ДатаСчетов;
                Иначе
                    ДатаСчет	= Объект.ДатаСчетов;
                КонецЕсли; 
                Если ЗначениеЗаполнено(СтрокаДокумента.ДатаАктов) Тогда
                    ДатаАкт	= СтрокаДокумента.ДатаАктов;
                Иначе
                    ДатаАкт	= Объект.ДатаАктов;
                КонецЕсли; 
            КонецЕсли;
            
            Если НЕ ПерваяСтрока Тогда
                //Некоторые документы могут не создаваться, а нумерация должна идти параллельно				
                Если СтрокаМассиваНомеров.Конец=Неопределено или МаксНомер<СтрокаМассиваНомеров.Конец Тогда
                    МаксНомер=МаксНомер+1;
                Иначе
                    ПозМассива=ПозМассива+1;
                    СтрокаМассиваНомеров=МассивНомеров.Получить(ПозМассива);
                    МаксНомер=СтрокаМассиваНомеров.Начало;
                КонецЕсли;
            КонецЕсли; 
            
            Если ПерваяСтрока Тогда
                Если ДелатьСчет ИЛИ ДелатьРеал ИЛИ ДелатьСчФК Тогда
                    СтрокаМассиваНомеров=МассивНомеров.Получить(ПозМассива);
                    МаксНомер=СтрокаМассиваНомеров.Начало;
                Иначе
                    Продолжить;
                КонецЕсли; 
                ПерваяСтрока=Ложь;
            КонецЕсли;
            
            Если ПризнакСчета Тогда
                ДокСчет=ДокСчетТ.СоздатьДокумент();
                ДокСчет.Дата=ДатаСчет;
                ДокСчет.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним);
                ЗаполнениеДокументов.Заполнить(ДокСчет);
                ДокСчет.ОрганизацияПолучатель=Объект.Организация;
                
                Если НЕ ПризнакРеализации Тогда
                    //Если НайтиИПривязатьДокумент(ДокСчет,СтрокаДокумента.Контрагент,"РеализацияТоваровУслуг",Ложь) Тогда
                    Если НайтиИПривязатьДокумент(ДокСчет,СтрокаДокумента.Контрагент,"РеализацияТоваровУслуг",Истина) Тогда
                        Если МаксНомер>СтрокаМассиваНомеров.Начало Тогда
                            МаксНомер=МаксНомер-1;
                        КонецЕсли; 
                    КонецЕсли; 				
                ИначеЕсли НЕ ПризнакСчтФ Тогда
                    Если НайтиИПривязатьДокумент(ДокСчет,СтрокаДокумента.Контрагент,"СчетФактураВыданный",Ложь) Тогда
                        Если МаксНомер>СтрокаМассиваНомеров.Начало Тогда
                            МаксНомер=МаксНомер-1;
                        КонецЕсли; 
                    КонецЕсли; 				
                Иначе	
                    ДокСчет.Номер=ТекПрефикс+Формат(МаксНомер,"ЧЦ="+ДлНомераБезПрефикса+"; ЧРГ=; ЧВН=; ЧГ=0");
                КонецЕсли; 
                
                //Заполняем документ счет - шапка
                ДокСчет.Комментарий				= "Введен документом: " + Строка(Объект.Ссылка);
                ДокСчет.Контрагент				= СтрокаДокумента.Контрагент;
                ДокСчет.ДоговорКонтрагента		= СтрокаДокумента.Договор;
                ДокСчет.СтруктурнаяЕдиница		= Объект.Счет;
                
                Если НЕ ЭтоУСН Тогда
                    ДокСчет.СуммаВключаетНДС=СтрокаДокумента.НДСВключен;
                    ДокСчет.УчитыватьНДС=Истина;
                КонецЕсли; 
                
                СтрокаСАдресом=ТаблицаАдресов.Найти(СтрокаДокумента.Контрагент,"Контрагент");
                Если СтрокаСАдресом<>неопределено Тогда
                    ДокСчет.АдресДоставки = СтрокаСАдресом.Адрес;	
                КонецЕсли; 
               
            КонецЕсли; 
            
            Если ПризнакРеализации Тогда
                ДокАкт=ДокАктТ.СоздатьДокумент();
                ДокАкт.Дата=ДатаАкт;
                ДокАкт.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним);
                ЗаполнениеДокументов.Заполнить(ДокАкт);
                ДокАкт.Грузоотправитель=Объект.Организация;
                
                Если НЕ ПризнакСчета Тогда
                    Если НайтиИПривязатьДокумент(ДокАкт,СтрокаДокумента.Контрагент,"СчетНаОплатуПокупателю",Ложь) Тогда
                        Если МаксНомер>СтрокаМассиваНомеров.Начало Тогда
                            МаксНомер=МаксНомер-1;
                        КонецЕсли; 
                    КонецЕсли; 				
                ИначеЕсли НЕ ПризнакСчтФ Тогда
                    Если НайтиИПривязатьДокумент(ДокАкт,СтрокаДокумента.Контрагент,"СчетФактураВыданный",Ложь) Тогда
                        Если МаксНомер>СтрокаМассиваНомеров.Начало Тогда
                            МаксНомер=МаксНомер-1;
                        КонецЕсли; 
                    КонецЕсли; 				
                Иначе	
                    ДокАкт.Номер=ТекПрефикс+Формат(МаксНомер,"ЧЦ="+ДлНомераБезПрефикса+"; ЧРГ=; ЧВН=; ЧГ=0");
                КонецЕсли;
                
                //Заполняем документ Реализация - шапка
                ДокАкт.Комментарий				= "Введен документом: " + Строка(Объект.Ссылка);//Строка(ДокСчет);
                ДокАкт.Контрагент				= СтрокаДокумента.Контрагент;
                ДокАкт.ДоговорКонтрагента		= СтрокаДокумента.Договор;
                ДокАкт.СчетУчетаРасчетовСКонтрагентом   = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;
                ДокАкт.СчетУчетаРасчетовПоАвансам       = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданным;
                ДокАкт.ВидОперации                      = Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
                Если НЕ ЭтоУСН Тогда
                    ДокАкт.СуммаВключаетНДС=СтрокаДокумента.НДСВключен;
                    ДокАкт.УчитыватьНДС=Истина;
                КонецЕсли; 
                
            КонецЕсли; 
            
            Если ПризнакСчтФ Тогда
                ДокСФ=ДокСФТ.СоздатьДокумент();
                Если ПризнакРеализации Тогда
                    ДокСФ.Дата=ДокАкт.Дата;
                Иначе
                    ДокСФ.Дата=Объект.ДатаАктов;
                    ДокСФ.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним);
                КонецЕсли; 
                ЗаполнениеДокументов.Заполнить(ДокСФ);
                
                Если НЕ ПризнакРеализации Тогда
                    //Если НайтиИПривязатьДокумент(ДокСФ,СтрокаДокумента.Контрагент,"РеализацияТоваровУслуг",Ложь) Тогда
                    Если НайтиИПривязатьДокумент(ДокСФ,СтрокаДокумента.Контрагент,"РеализацияТоваровУслуг",Истина) Тогда
                        Если МаксНомер>СтрокаМассиваНомеров.Начало Тогда
                            МаксНомер=МаксНомер-1;
                        КонецЕсли; 
                    КонецЕсли;
                ИначеЕсли НЕ ПризнакСчета Тогда
                    Если НайтиИПривязатьДокумент(ДокСФ,СтрокаДокумента.Контрагент,"СчетНаОплатуПокупателю",Ложь) Тогда
                        Если МаксНомер>СтрокаМассиваНомеров.Начало Тогда
                            МаксНомер=МаксНомер-1;
                        КонецЕсли; 
                    КонецЕсли; 				
                Иначе
                    ДокСФ.Номер=ТекПрефикс+Формат(МаксНомер,"ЧЦ="+(ДлНомераБезПрефикса+1)+"; ЧРГ=; ЧВН=; ЧГ=0");
                КонецЕсли; 
                
                //Заполняем документ Счет-фактура - шапка
                ДокСФ.Комментарий				= "Введен документом: " + Строка(Объект.Ссылка);//Строка(ДокСчет);
                ДокСФ.Контрагент				= СтрокаДокумента.Контрагент;
                ДокСФ.ДоговорКонтрагента		= СтрокаДокумента.Договор;
                //Если НЕ СтрокаДокумента.МесяцаОтдельно Тогда
                Если НЕ МесяцаОтдельно Тогда
                    ДокСФ.Сумма                     = СтрокаДокумента.Сумма;  //Видимо, с или без НДС
                    ДокСФ.СуммаДокумента            = СтрокаДокумента.Сумма;  //Видимо, общая
                    Если НЕ ЭтоУСН Тогда
                        ДокСФ.СтавкаНДС=Объект.СтатьяОбслуживание.СтавкаНДС;
                        ДокСФ.СуммаНДС=СтрокаДокумента.Сумма*СтавкаНДС_Обсл/(100+СтавкаНДС_Обсл);
                    Иначе
                        ДокСФ.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС;
                        ДокСФ.СуммаНДС=0;
                    КонецЕсли; 
                КонецЕсли; 
            КонецЕсли; 
            
            Если СтрокаДокумента.Тариф <> 0 и к=1 Тогда
                Если ПризнакСчета Тогда
                    СтрокаДокСчет=ДокСчет.Услуги.Добавить();
                    СтрокаДокСчет.Количество = 1;
                    СтрокаДокСчет.Номенклатура = Объект.СтатьяОбслуживание;
                    СтрокаДокСчет.Содержание=Строка(Объект.СтатьяОбслуживание);
                    СтрокаДокСчет.Цена = СтрокаДокумента.Тариф;
                    СтрокаДокСчет.Сумма = СтрокаДокумента.Тариф*СтрокаДокСчет.Количество;
                    Если ЭтоУСН Тогда
                        СтрокаДокСчет.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                        СтрокаДокСчет.СуммаНДС = 0;
                    Иначе                                               
                        СтрокаДокСчет.СтавкаНДС = Объект.СтатьяОбслуживание.СтавкаНДС;
                        Если СтрокаДокумента.НДСВключен Тогда
                            СтрокаДокСчет.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Обсл/(100+СтавкаНДС_Обсл);
                        Иначе
                            СтрокаДокСчет.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Обсл/100;
                        КонецЕсли; 
                    КонецЕсли;
                    Если МесяцаОтдельно Тогда
                        ЗаписьСчета(ДокСчет,МаксНомер);
                    КонецЕсли; 
                КонецЕсли; 
                
                Если ПризнакРеализации Тогда
                    СтрокаДокАкт=ДокАкт.Услуги.Добавить();
                    СтрокаДокАкт.Количество = 1;
                    СтрокаДокАкт.Номенклатура = Объект.СтатьяОбслуживание;
                    СтрокаДокАкт.Содержание=Строка(Объект.СтатьяОбслуживание);
                    СтрокаДокАкт.Цена = СтрокаДокумента.Тариф;
                    СтрокаДокАкт.Сумма = СтрокаДокумента.Тариф*СтрокаДокАкт.Количество;
                    Если ЭтоУСН Тогда
                        СтрокаДокАкт.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                        СтрокаДокАкт.СуммаНДС = 0;
                    Иначе                                               
                        СтрокаДокАкт.СтавкаНДС = Объект.СтатьяОбслуживание.СтавкаНДС;
                        Если СтрокаДокумента.НДСВключен Тогда
                            СтрокаДокАкт.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Обсл/(100+СтавкаНДС_Обсл);
                        Иначе
                            СтрокаДокАкт.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Обсл/100;
                        КонецЕсли; 
                    КонецЕсли;
                    //Установка счетов учета в реализации
                    ЗаполнитьСчетаБУВСтрокеУслуг(СтрокаДокАкт, СчетаУчета_Обсл, Истина);
                    Если МесяцаОтдельно Тогда
                        ЗаписьРеализации(ДокАкт,ДокСчет,МаксНомер,ПризнакСчета);
                    КонецЕсли; 
                КонецЕсли; 
                
                //Если ДелатьСчФК и СтрокаДокумента.МесяцаОтдельно Тогда
                Если ПризнакСчтФ Тогда
                    ДокСФ.Сумма                     = СтрокаДокумента.Тариф;  //Видимо, с или без НДС
                    ДокСФ.СуммаДокумента            = СтрокаДокумента.Тариф;  //Видимо, общая
                    Если НЕ ЭтоУСН Тогда
                        ДокСФ.СтавкаНДС=Объект.СтатьяОбслуживание.СтавкаНДС;
                        ДокСФ.СуммаНДС=СтрокаДокумента.Тариф*СтавкаНДС_Обсл/(100+СтавкаНДС_Обсл);
                    Иначе
                        ДокСФ.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС;
                        ДокСФ.СуммаНДС=0;
                    КонецЕсли; 
                    Если МесяцаОтдельно Тогда
                         ЗаписьСчФакт(ДокСФ,ДокАкт,МаксНомер,ПризнакРеализации,ПризнакСчета);
                     КонецЕсли;
                КонецЕсли; 
                //Если МесяцаОтдельно Тогда
                //     ЗаписьСчФакт(ДокСФ,ДокАкт,МаксНомер,ПризнакРеализации,ПризнакСчета);
                // КонецЕсли;
                 
                Если МесяцаОтдельно Тогда
                   Продолжить;
                КонецЕсли; 
                 
           КонецЕсли;
            
            //Если МесяцаОтдельно и к=1 Тогда
            //   Продолжить;
            //КонецЕсли; 
            
            Для ид = 1 По 4 Цикл
                 Если СтрокаДокумента["Цена"+ид] = 0 ИЛИ СтрокаДокумента["Колво"+ид]=0 Тогда
                   Продолжить;
                КонецЕсли;
                ТекЦена=СтрокаДокумента["Цена"+ид]*(1+СтрокаДокумента.ПроцентТарифа/100);
                ТекСумма=ТекЦена*СтрокаДокумента["Колво"+ид];
                
                Если ТекСумма=0 Тогда
                    Продолжить;
                КонецЕсли; 
                
                Если ПризнакСчета Тогда
                    СтрокаДокСчет=ДокСчет.Услуги.Добавить();
                    СтрокаДокСчет.Количество = СтрокаДокумента["Колво"+ид];
                    СтрокаДокСчет.Номенклатура = Объект.СтатьяПрочее;
                    СтрокаДокСчет.Содержание=Строка(Объект.СтатьяПрочее)+Дописки.Получить(ид-1);
                    СтрокаДокСчет.Цена = ТекЦена;
                    СтрокаДокСчет.Сумма = ТекСумма;
                    Если ЭтоУСН Тогда
                        СтрокаДокСчет.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                        СтрокаДокСчет.СуммаНДС = 0;
                    Иначе
                        СтрокаДокСчет.СтавкаНДС = Объект.СтатьяПрочее.СтавкаНДС;
                        Если СтрокаДокумента.НДСВключен Тогда
                            СтрокаДокСчет.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Проч/(100+СтавкаНДС_Проч);
                        Иначе
                            СтрокаДокСчет.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Проч/100;
                        КонецЕсли; 
                    КонецЕсли;
              КонецЕсли;
                
                Если ПризнакРеализации Тогда
                    СтрокаДокАкт=ДокАкт.Услуги.Добавить();
                    СтрокаДокАкт.Количество = СтрокаДокумента["Колво"+ид];
                    СтрокаДокАкт.Номенклатура = Объект.СтатьяПрочее;
                    СтрокаДокАкт.Содержание=Строка(Объект.СтатьяПрочее)+Дописки.Получить(ид-1);
                    СтрокаДокАкт.Цена = ТекЦена;
                    СтрокаДокАкт.Сумма = ТекСумма;
                    Если ЭтоУСН Тогда
                        СтрокаДокАкт.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                        СтрокаДокАкт.СуммаНДС = 0;
                    Иначе
                        СтрокаДокАкт.СтавкаНДС = Объект.СтатьяПрочее.СтавкаНДС;
                        Если СтрокаДокумента.НДСВключен Тогда
                            СтрокаДокАкт.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Проч/(100+СтавкаНДС_Проч);
                        Иначе
                            СтрокаДокАкт.СуммаНДС = СтрокаДокСчет.Сумма*СтавкаНДС_Проч/100;
                        КонецЕсли; 
                    КонецЕсли;
                    ЗаполнитьСчетаБУВСтрокеУслуг(СтрокаДокАкт, СчетаУчета_Проч, Истина);
               КонецЕсли;
                
                Если ПризнакСчтФ Тогда
                    ДокСФ.Сумма                     = ТекСумма;  //Видимо, с или без НДС
                    ДокСФ.СуммаДокумента            = ТекСумма;  //Видимо, общая
                    Если НЕ ЭтоУСН Тогда
                        ДокСФ.СтавкаНДС=Объект.СтатьяОбслуживание.СтавкаНДС;
                        ДокСФ.СуммаНДС=ТекСумма*СтавкаНДС_Обсл/(100+СтавкаНДС_Обсл);
                    Иначе
                        ДокСФ.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС;
                        ДокСФ.СуммаНДС=0;
                    КонецЕсли; 
                КонецЕсли; 
                
            КонецЦикла;
            
            Если ПризнакСчета Тогда
                ЗаписьСчета(ДокСчет,МаксНомер);
            КонецЕсли;
            
            Если ПризнакРеализации Тогда
                ЗаписьРеализации(ДокАкт,ДокСчет,МаксНомер,ПризнакСчета);
            КонецЕсли;
            
            Если ПризнакСчтФ Тогда
                ЗаписьСчФакт(ДокСФ,ДокАкт,МаксНомер,ПризнакРеализации,ПризнакСчета);
            КонецЕсли;
            
        КонецЦикла;         //разделение месяцев
        
    КонецЦикла;        //перебор строк документа
КонецПроцедуры // СоздатьСчетаНаСервере(
Показать
82. Восьмой 88 05.02.14 14:02 Сейчас в теме
(78) Bukaska, вид сравнения в списке
84. Bukaska 140 05.02.14 14:11 Сейчас в теме
(82) Восьмой, Всё равно.. что там на рисунке стоит галка пометки на удаление - это моя интерактивная.
закрыть долкумент - и галки в колонке: пометкаУдаления - словно никто не ставил
Хотя так я могу удалить список документов, поставив интерактивную галку.. в открытом документе я действовать могу..а закрою док и открою снова - надо будет опять пометки на удаление ставить.. так моих интерактивных не запоминает, а иных - тем более
86. Восьмой 88 05.02.14 14:14 Сейчас в теме
(84) Bukaska, по интерактивным полям не работает работает только по полям объекта, причем как оказалось без доступа ко вложенным реквизитам - т.е при создании на сервере и при изменении табличной части делаешь вызов процедуры на установку оформления в ней читаешь ТЧ получаешь список всех доков помеченных на удаление ставишь оформление по полю документа с видом значения в списке и туда передаешь список помеченных - так 100 взлетит, только что проверял.
75. Восьмой 88 05.02.14 13:33 Сейчас в теме
(72) Bukaska, мдя сказывается недостаток опыта с УФ)) придется крутить так))

ЭлементУсловия.ЛевоеЗначение а сюда тогда сравнение на документ.

ЭлементУсловия.ПравоеЗначение - сюда загонять список документов помеченных на удаление

либо рисовать отельное поле ПометкаУдаления которое заполнять вместе с ТЧ менять ее вместе с ТЧ и делать по ней отбор... печаль короче)))
85. Bukaska 140 05.02.14 14:14 Сейчас в теме
(75) Восьмой, Вот и не пойму как загнать, если я сформировала документы, потом взяла и в счетах фактурах пометила на удаление СФ, я чищу табчасть списка документов и формирую снова, но он не видит что СФ помечена была на удаление в списке счетов-фактур
PS: У меня документ создает документы с нуля по три на каждого клиента, а при удалении - только вычищает табчасть от документов
88. jigourt 31 05.02.14 14:19 Сейчас в теме
(85) Bukaska, я кажется наконец понял всю проблему ))) тебе видимо вот это надо
ОтобразитьИзменениеДанных(<Ссылка>, <ВидИзменения>)
Примечание:
В случае добавления или изменения данных вызов метода приводит к очистке кэшей на клиенте. В частности, очищается кэш представлений ссылок, кэш данных через точку, кэш данных быстрого выбора, кэш ограничений по типу. Удаляется только та информация, которая стала недействительной

это к этому
но он не видит что СФ помечена была на удаление в списке счетов-фактур
89. Bukaska 140 05.02.14 14:23 Сейчас в теме
(88) jigourt, А куда её вставлять ту процедуру..
Я пробовала вписывать ЭтаФорма.ОбновитьотображениеДанных() и дохлый номер, хотя там может тоже какие -то переменные надо было передавать?
К управляемым формам ещё привыкать и привыкать, а тем более с заморочками на БСП)))
90. Восьмой 88 05.02.14 14:25 Сейчас в теме
(89) Bukaska, прочитай еще раз внимательно (86)
91. jigourt 31 05.02.14 14:26 Сейчас в теме
(90) Восьмой, вот кстати именно из-за такого описания никак не могу въехать, что есть, чего нет, что работает, а что нет ))) ведь проблема по-любому банальная ))
93. Восьмой 88 05.02.14 14:30 Сейчас в теме
(91) jigourt, Смотри - у нее есть документы в Табличной части
она эти документы помечает на удаление
в табличной ей нужно раскрасить строки документов которые помечены на удаление.
Сделать это можно только через оформление - но в оформлении нельзя стукнуться напрямую к пометки удаления документа можно обращаться только к полям самой табличной части - вот в чем вся беда.

ОЙЕЕЕ сори в (86) )))
95. jigourt 31 05.02.14 14:35 Сейчас в теме
(93) Восьмой,
добавить колонку пометки удаления - булево

вариант 1
1. через подписку на событие изменить значение в ТЧ необходимого документа

вариант 2
1. заполнять ТЧ при открытии документа
2. добавить кнопку обновления данных в ТЧ

вариант 2 предпочтительней ))) на мой взгляд
96. Восьмой 88 05.02.14 14:37 Сейчас в теме
(95) jigourt, у нее 2-й вариант реализован но только пункт 2 - загвоздка в раскраске.
98. Bukaska 140 05.02.14 14:40 Сейчас в теме
(96) Восьмой, Раскраска работает, при интерактивной установке галочки в колонке пометкаУдаления
Поставила вручную галочку, ячейка закрасилась..
А надо чтобы оно работало иначе. когда формируется список.. сформировался списолк документов и все видно, что на печать, а что помечено на удаление
101. jigourt 31 05.02.14 14:43 Сейчас в теме
(98) покажи пожалуйста кусочек кода, который добавляет строчку в ТЧ твоего документа ))))
103. Bukaska 140 05.02.14 14:50 Сейчас в теме
(101) jigourt,
&НаСервере
Процедура ПривязкаСтрокиСДокументом(Результат)
    СтрокаСписка=Объект.ТЧСписокДокументов.Добавить();
    СтрокаСписка.Контрагент=Результат.Контрагент;
    СтрокаСписка.Договор=Результат.ДоговорКонтрагента;
    СтрокаСписка.Документ=Результат.Ссылка;
    СтрокаСписка.Сумма=Результат.Ссылка.СуммаДокумента;
    Если ТипЗнч(Результат.Ссылка)=Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        СтрокаСписка.Количество=2;
    Иначе
        СтрокаСписка.Количество=1;
    КонецЕсли; 
КонецПроцедуры
 
Показать
104. jigourt 31 05.02.14 14:53 Сейчас в теме
(103) Bukaska, а где
СтрокаСписка.ПомУдаления = Результат.Ссылка.ПометкаУдаления
?? ))
Bukaska; Восьмой; +2 Ответить
106. Восьмой 88 05.02.14 14:56 Сейчас в теме
(104) jigourt, щас точку запятой забудет поставить и напишет что не работает)))))
107. jigourt 31 05.02.14 14:58 Сейчас в теме
(106) Восьмой, злой ты )) ну учится человек, я так понимаю )))
Rothschild; +1 Ответить
108. Восьмой 88 05.02.14 14:59 Сейчас в теме
(107) jigourt, Я ее знаешь как обожаю))) Такое чувство будто я сам судоку решаю)))
109. jigourt 31 05.02.14 15:02 Сейчас в теме
(108) Восьмой, я этот кусочек кода выпрашивал столько, как будто на свидание приглашал )) вообще хорошо, цветочек умиления в серых буднях программиста )) я даж на свою работу забил ))
111. Восьмой 88 05.02.14 15:04 Сейчас в теме
(109) jigourt, Да такая же фигня жаль что она далеко живет))) - сам бы уже на свиданку позвал)))
112. jigourt 31 05.02.14 15:10 Сейчас в теме
(111) Восьмой, делов-то, билет купил, чубчик набриолинил и вперед )))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот