|
Как сравнить тек док и док БД? | ☑ | ||
---|---|---|---|---|
0
pro3ri
07.09.15
✎
09:15
|
Добрый день!
Есть проведенный док РеализацияТиУ, там меняют комментарий, нажимают ок. Товара нет на складе, он ругается и выдает отказ. начал писать обход реквизитов дока и сравнивать с ссылкой, но так нельзя... Для каждого Реквизит Из ЭтотОбъект Цикл Если Реквизит = ЭтотОбъект.Ссылка[Реквизит] Тогда КонецЕсли; КонецЦикла; КонецПроцедуры // ОбработкаПроведения() Нужно сделать так, чтобы если изменился комментарий только программа не выдавала отказ, как сделать? |
|||
1
sash-ml
07.09.15
✎
09:22
|
Для каждого РеквизитМД Из ЭтотОбъект.Метаданные().Реквизиты Цикл
Если ЭтотОбъект[РеквизитМД.Имя] = ЭтотОбъект.Ссылка[РеквизитМД.Имя] Тогда ... КонецЕсли; КонецЦикла; |
|||
2
Лефмихалыч
07.09.15
✎
09:24
|
(1) так тоже нельзя - это запрос в цикле, за это в приличном обществе неприлично ругают
(0) запросом получи значения всех реквизитов, а потом через иметаданные.Реквизиты их сравнивай |
|||
3
pro3ri
07.09.15
✎
09:31
|
(1) спасибо и на этом...
|
|||
4
Матиус
07.09.15
✎
09:33
|
(0) >> Нужно сделать так, чтобы если изменился комментарий только программа не выдавала отказ, как сделать?
При открытии документа загоняй комментарий в доп. свойства объекта, при записи сравнивай. Не нужны никакие лишние чтения из БД. |
|||
5
Брегорьян
07.09.15
✎
09:35
|
(4) а если не открывать?
|
|||
6
Матиус
07.09.15
✎
09:37
|
(4) и перебор реквизитов не нужен.
(5) Комментарий меняют без интерактивного открытия документа? Что там вообще происходит? |
|||
7
pro3ri
07.09.15
✎
09:41
|
(4) >> При открытии документа загоняй комментарий в доп. свойства объекта, при записи сравнивай. Не нужны никакие лишние чтения из БД.
а что за доп свойства? Нужно сделать так, что если только комментарий изменили, то нет проверки на отказ. |
|||
8
Mort
07.09.15
✎
09:46
|
Я думаю в Вашем случае достаточно будет вообще отрубить контроль остатков. Выхлоп будет такой-же, а г-кода - меньше.
|
|||
9
Брегорьян
07.09.15
✎
09:46
|
нарисовать обёртку, меняющую только комментарий?
|
|||
10
Матиус
07.09.15
✎
09:48
|
1. Тогда см. (2). Собирай запрос по метаданным, загоняй в параметры реквизиты и табличные части и ищи изменения.
2. Отключай все на форме кроме комментария и проверяй только его. |
|||
11
Матиус
07.09.15
✎
09:51
|
(10) во втором случае даже проверять не надо, только писать док без движений
|
|||
12
sash-ml
07.09.15
✎
10:06
|
Отвязать на форме комментарий от данных, проверять объект на Модифицированность, если ок, то в режиме обменданными.загрузка обновлять комментарий и записывать
|
|||
13
mikeA
07.09.15
✎
10:26
|
(0)во-первых не ЭтотОбъект.Ссылка[Реквизит] а
ДокументОбъект= ЭтотОбъект.Ссылка.ПолучитьОбъект() ДокументОбъект[Реквизит] ПолучитьОбъект() ессно перед циклом одно чтение из базы данных по-хорошему конечно надо значимые реквизиты получать запросом а само сравнение ДокументОбъект.Комментарий= ""; ЭтотОбъект.Комментарий= ""; ЗначениеВСтрокуВнутр(ДокументОбъект) = ЗначениеВСтрокуВнутр(ЭтотОбъект) и не забыть восстановить комментарий |
|||
14
НЕА123
07.09.15
✎
10:29
|
может веточку до пятницы прикрыть?
|
|||
15
pro3ri
07.09.15
✎
14:02
|
(2) решено так:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.ПометкаУдаления, | РеализацияТоваровУслуг.Номер, | РеализацияТоваровУслуг.Дата, | РеализацияТоваровУслуг.Проведен, | РеализацияТоваровУслуг.ВидОперации, | РеализацияТоваровУслуг.Организация, | РеализацияТоваровУслуг.БанковскийСчетОрганизации, | РеализацияТоваровУслуг.ОтражатьВУправленческомУчете, | РеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете, | РеализацияТоваровУслуг.ОтражатьВНалоговомУчете, | РеализацияТоваровУслуг.Подразделение, | РеализацияТоваровУслуг.Комментарий, | РеализацияТоваровУслуг.Сделка, | РеализацияТоваровУслуг.Склад, | РеализацияТоваровУслуг.ДоговорКонтрагента, | РеализацияТоваровУслуг.Контрагент, | РеализацияТоваровУслуг.КонтрагентТранзит, | РеализацияТоваровУслуг.ТипЦен, | РеализацияТоваровУслуг.ВалютаДокумента, | РеализацияТоваровУслуг.УчитыватьНДС, | РеализацияТоваровУслуг.СуммаВключаетНДС, | РеализацияТоваровУслуг.КурсВзаиморасчетов, | РеализацияТоваровУслуг.СуммаДокумента, | РеализацияТоваровУслуг.КратностьВзаиморасчетов, | РеализацияТоваровУслуг.Ответственный, | РеализацияТоваровУслуг.ВидПередачи, | РеализацияТоваровУслуг.АдресДоставки, | РеализацияТоваровУслуг.Грузополучатель, | РеализацияТоваровУслуг.Грузоотправитель, | РеализацияТоваровУслуг.Проект, | РеализацияТоваровУслуг.ДисконтнаяКарта, | РеализацияТоваровУслуг.Доверенность, | РеализацияТоваровУслуг.Автор, | РеализацияТоваровУслуг.ДокументОснование, | РеализацияТоваровУслуг.Продажа, | РеализацияТоваровУслуг.Товары.( | Ссылка, | НомерСтроки, | ЕдиницаИзмерения, | ЕдиницаИзмеренияМест, | Качество, | Количество, | КоличествоМест, | Коэффициент, | Номенклатура, | ПроцентСкидкиНаценки, | СерияНоменклатуры, | СпособСписанияОстаткаТоваров, | СтавкаНДС, | Сумма, | СуммаНДС, | ХарактеристикаНоменклатуры, | Цена, | Склад, | ПроцентАвтоматическихСкидок, | УсловиеАвтоматическойСкидки, | ЗначениеУсловияАвтоматическойСкидки, | СуммаНП | ), | РеализацияТоваровУслуг.ВозвратнаяТара.( | Ссылка, | НомерСтроки, | Номенклатура, | Количество, | Цена, | Сумма, | СпособСписанияОстаткаТоваров, | Склад, | СуммаНП | ), | РеализацияТоваровУслуг.Услуги.( | Ссылка, | НомерСтроки, | Содержание, | Количество, | Цена, | Сумма, | СтавкаНДС, | СуммаНДС, | Номенклатура, | ПроцентСкидкиНаценки, | СуммаНП, | БухСчет, | Субконто1, | Субконто2, | Субконто3 | ) |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ВстретилсяОтказ = Ложь; Пока Выборка.Следующий() Цикл Для каждого РеквизитМД Из ЭтотОбъект.Метаданные().Реквизиты Цикл Если ЭтотОбъект.Метаданные().Реквизиты.Комментарий.Имя <> "Комментарий" И ЭтотОбъект[РеквизитМД.Имя] <> Выборка[РеквизитМД.Имя] Тогда ВстретилсяОтказ = Истина; Отказ = Истина; КонецЕсли; КонецЦикла; КонецЦикла; Если Не ВстретилсяОтказ Тогда Отказ = Ложь; КонецЕсли; КонецПроцедуры // ОбработкаПроведения() |
|||
16
Брегорьян
07.09.15
✎
14:03
|
(15) на изменения в ТЧ нормально реагирует?
|
|||
17
pro3ri
07.09.15
✎
14:07
|
(16) нет, не замечает изменений тч
|
|||
18
Jonny_Khomich
07.09.15
✎
14:10
|
(17) сделай на форме списка возможность редактировать комментарий.
Допустим под табличным полем добавить поле ввода, и кнопку. Вводить коммент, нажимаешь "ОК", документ записывается без проведения. Можно, допустим, через контектсное меню. Правой кнопкой тыкнул на документ, выбрал пункт "изменить комментарий", в диалоговом окне пишешь комментарий, и записываешь документ без проведения. |
|||
19
Матиус
08.09.15
✎
08:21
|
(17) Тут же уже выложили идеальную проверку
ДокументОбъект= ЭтотОбъект.Ссылка.ПолучитьОбъект() ДокументОбъект.Комментарий = Комментарий; Если ЗначениеВСтрокуВнутр(ДокументОбъект) <> ЗначениеВСтрокуВнутр(ЭтотОбъект) Тогда //Были изменения не только комментария КонецЕсли; |
|||
20
zdas
08.09.15
✎
08:26
|
(0) может сделать отдельный РС комментарии к документам? и не перепрооводить доки?
|
|||
21
pro3ri
09.09.15
✎
14:02
|
В итоге сделали так:
форма, 2 поля ввода,код: Процедура КнопкаВыполнитьНажатие(Кнопка) Объект = СсылкаНаОбъект.ПолучитьОбъект(); Объект.Комментарий = Комментарий; Объект.Записать(); КонецПроцедуры Процедура СсылкаНаОбъектПриИзменении(Элемент) Объект = СсылкаНаОбъект.ПолучитьОбъект(); Комментарий = Объект.Комментарий; КонецПроцедуры обработка встроена в конфу. всем спасибо! |
|||
22
pro3ri
09.09.15
✎
14:04
|
затупил сначала, думал при программной записи будет вып-ся проц Обработка проведения...
|
|||
23
Брегорьян
09.09.15
✎
14:04
|
(22) будет
|
|||
24
pro3ri
09.09.15
✎
14:12
|
(23) https://s.mail.ru/57iZrzQTjCmD/img-2015-09-09-16-18-33.png не сработала
|
|||
25
Брегорьян
09.09.15
✎
14:15
|
(24) не остановилось
|
|||
26
Брегорьян
09.09.15
✎
14:20
|
записать нажал: http://i.imgur.com/1HLQO5K.png
|
|||
27
pro3ri
09.09.15
✎
14:41
|
создай новый док и вставь в мод формы
&НаСервере Процедура Команда1НаСервере() Объект1 = Реквизит1.ПолучитьОбъект(); Объект1.Записать(); КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) Команда1НаСервере(); КонецПроцедуры в мод объекта https://s.mail.ru/5Rt88LuaAGxU/img-2015-09-09-16-46-21.png сама форма https://s.mail.ru/2L8ZsJUEyLv1/img-2015-09-09-16-47-01.png |
|||
28
Брегорьян
09.09.15
✎
14:45
|
(27) мне лениво
|
|||
29
Брегорьян
09.09.15
✎
14:46
|
(27) это ты на УТ10.2 тренируешься?
|
|||
30
pro3ri
09.09.15
✎
14:50
|
самописка 83
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |