![]() |
![]() |
![]() |
|
Организация вывода сообщения об ошибке | ☑ | ||
---|---|---|---|---|
0
gosh28
29.12.09
✎
09:21
|
Народ подскажите пожалуйста как организовать вывод сообщения об ошибке в документе. Если человек заказывает в документе большее количество товара, чем осталось на складе.
|
|||
1
Irbis
29.12.09
✎
09:23
|
Окно сообщений, предупреждение, отдельная форма сообщений об ошибках и т. д. и т. п.
|
|||
2
Нууф-Нууф
29.12.09
✎
10:43
|
в модуле проведения поставь проверку остатка.
|
|||
3
Rico_1C
29.12.09
✎
10:47
|
Настройки дополнительных прав..
|
|||
4
anatoly
29.12.09
✎
11:03
|
в событие "передЗаписью" вставить проверку остатков.
|
|||
5
gosh28
29.12.09
✎
18:27
|
А никто не может кусок привести в пример. Может кто то делал это?
|
|||
6
Slon747
29.12.09
✎
18:37
|
(4) Логичнее проверять при проведении
(5) В типовой УТ было |
|||
7
IamAlexy
29.12.09
✎
18:38
|
правильно сделать так:
допустим у тебя есть реквизиты реквизит1 реквизит2 реквизит3 реквизит4 в процедуре при записи, или лучше в обработке проведения ставишь проверку если НЕ ЗначениеЗаполнено(Реквизит1) Тогда Предупреждение("не заполнен реквизит1",60); Отказ=Истина; Возврат; КонецЕсли; если НЕ ЗначениеЗаполнено(Реквизит2) Тогда Предупреждение("не заполнен реквизит2",60); Отказ=Истина; Возврат; КонецЕсли; если НЕ ЗначениеЗаполнено(Реквизит3) Тогда Предупреждение("не заполнен реквизит3",60); Отказ=Истина; Возврат; КонецЕсли; если НЕ ЗначениеЗаполнено(Реквизит4) Тогда Предупреждение("не заполнен реквизит4",60); Отказ=Истина; Возврат; КонецЕсли; пользователи скажут тебе спасибу. |
|||
8
Slon747
29.12.09
✎
18:40
|
(7) Предупреждение() в модуле дока юзать нельзя
|
|||
9
ll13
29.12.09
✎
18:42
|
(7) За такой код руки оторвать.
|
|||
10
Slon747
29.12.09
✎
18:44
|
А вот как в типовой. При проведении:
------- Если НЕ ЗначениеЗаполнено(КлючЗначение.Значение) Тогда ПредставлениеРеквизита = МетаданныеРеквизиты[КлючЗначение.Ключ].Представление(); СтрокаСообщения = "Не заполнено значение реквизита """ + СокрЛП(ПредставлениеРеквизита) + """!"; Иначе СтрокаСообщения = КлючЗначение.Значение; КонецЕсли; ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + СтрокаСообщения, Отказ, Заголовок); ------- Модуль ОбщегоНазначения Процедура СообщитьОбОшибке(ТекстСообщения, Отказ = Ложь, Заголовок = "", Статус = Неопределено) Экспорт Если Статус = Неопределено Тогда Статус = СтатусСообщения.Важное; КонецЕсли; ТекстСообщения = СформироватьТекстСообщения(ТекстСообщения); Отказ = Истина; #Если ВнешнееСоединение Тогда Если ЗначениеЗаполнено(Заголовок) Тогда ТекстСообщения = Заголовок + Символы.ПС + ТекстСообщения; Заголовок = ""; КонецЕсли; ВызватьИсключение (ТекстСообщения); #Иначе Если ЗначениеЗаполнено(Заголовок) Тогда Сообщить(Заголовок); Заголовок = ""; КонецЕсли; Сообщить(ТекстСообщения, Статус); #КонецЕсли КонецПроцедуры // СообщитьОбОшибке() |
|||
11
AndreyFAN
29.12.09
✎
18:44
|
в (7) будет выскакивать Предупреждение по каждой позиции, а если ошибок несколько, то неудобно.
я накапливаю Предупреждения, типа: ТекстПредупреждения="": Для каждого СтрокаТЧ из Таблица цикл Если СтрокаТЧ.Количество>СтрокаТЧ.КолНаСкладе тогда ТекстПредупреждения=ТекстПредупреждения+СтрокаТЧ.Наименование+" НаСкладе меньше!"+Символы.ПС; КонецЕсли; Если ТекстПредупреждения<>"" тогда Предупреждение(ТекстПредупреждения,60); Отказ=Истина; КонецЕсли; |
|||
12
Рэйв
29.12.09
✎
18:45
|
(5)>>А никто не может кусок привести в пример. Может кто то делал это?
Если Количество>КоличествоНаСкладе Тогда Сообщить("НЕ хватает однака...."); Отказ=Истина; Возврат; КонецЕсли; |
|||
13
Slon747
29.12.09
✎
18:46
|
+(11) А главное - "Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения"
|
|||
14
gosh28
29.12.09
✎
18:46
|
Вот вот мне как раз такая нужна ерунда чтобы с регистром сверял. Завтра злому преподу ) на растерзание.
|
|||
15
AndreyFAN
29.12.09
✎
18:47
|
в 11 надо цикл закрыть только перед вторым если Если
|
|||
16
Slon747
29.12.09
✎
18:49
|
(15) А лучше сразу вывести всё, что не хватает, чтоб юзер видел полную картину. Но только в Сообщить()
|
|||
17
AndreyFAN
29.12.09
✎
18:50
|
(16) можно и Сообщить, просто я не люблю окно Сообщений, Предупреждение как-то цивильней смотрится :-)
|
|||
18
ll13
29.12.09
✎
18:53
|
(17) Угу, особенно при программном групповом проведении.
|
|||
19
gosh28
29.12.09
✎
18:53
|
А это в обработке проведения?
Если СтрокаТЧ.Количество>СтрокаТЧ.КолНаСкладе тогда ТекстПредупреждения=ТекстПредупреждения+СтрокаТЧ.Наименование+" НаСкладе меньше!"+Символы.ПС; КонецЕсли; Если ТекстПредупреждения<>"" тогда Предупреждение(ТекстПредупреждения,60); Отказ=Истина; КонецЕсли; |
|||
20
Slon747
29.12.09
✎
18:56
|
(19) В обработке проведения Предупреждение() НЕЛЬЗЯ.
Если даже завернуть в #ЕСЛИ КЛИЕНТ, то как тогда (18)??? |
|||
21
AndreyFAN
29.12.09
✎
18:59
|
правильно так
ТекстПредупреждения=""; Для каждого СтрокаТЧ из Таблица цикл Если СтрокаТЧ.Количество>СтрокаТЧ.КолНаСкладе тогда ТекстПредупреждения=ТекстПредупреждения+СтрокаТЧ.Наименование+" НаСкладе меньше!"+Символы.ПС; КонецЕсли; КонецЦикла; Если ТекстПредупреждения<>"" тогда Предупреждение(ТекстПредупреждения,60); Отказ=Истина; КонецЕсли; Да, у меня в ОбработкеПроведения, про ЕслиКлиент, я не в курсе, не пользую Клиента... пусть поправят профиПроги |
|||
22
gosh28
29.12.09
✎
18:59
|
А вместо Предупреждение Сообщить не покатит тоже
|
|||
23
Slon747
29.12.09
✎
19:00
|
(22) Покатит, тк.к "Не используется" и "Недоступен" - разные вещи
|
|||
24
gosh28
29.12.09
✎
19:05
|
AndreyFAN а как из регистра достать значение остатка и записать в нужную ячейку
|
|||
25
Slon747
29.12.09
✎
19:06
|
(21) А всё равно задолбаешься клаву бить, если понадобится оперативно (с проверкой) проводить групповой обработкой :)
|
|||
26
AndreyFAN
29.12.09
✎
19:17
|
(25) групповой обработкой будут проводиться уже проведённые и проверенные документы, у меня так во всяком случае... и ошибки не выскакивают...
хотя для этого надо ещё кучу капканов в конфе понаставить, типа проведение задним числом, слетание галочек для товароведа при таких проведениях, и много ещё чего... |
|||
27
AndreyFAN
29.12.09
✎
19:18
|
эх, показал бы я вам свою ПроцедуруПроверки в Приходной... да уж слишком большая...
накоплено за 15 лет практики... реализовано... |
|||
28
IamAlexy
29.12.09
✎
19:19
|
лучше так
если Не ЗначениеЗаполнено(Реквизит1) Тогда Предупреждение("Ты все сделал неправильно"); ЗавершитьРаботуСистемы(ложь); КонецЕсли; |
|||
29
AndreyFAN
29.12.09
✎
19:23
|
(24) самое простое, в процедуру ПриВыбореТовара, или как у тебя там зазывается реквизит
СтрокаТЧ=ЭлементыФормы.ТМЦ.ТекущаяСтрока; Отбор = Новый Структура; Отбор.Вставить("Товар", СтрокаТЧ.Товар); Отбор.Вставить("Фирма", глФирма); Отбор.Вставить("Склад", Склад); СтрокаТЧ.ОстатокНаСкладе=РегистрыНакопления.ОстаткиТоваров.Остатки(Дата,Отбор).Итог("Количество"); ну и набор параметров твой соответственно, как и имя Регистра |
|||
30
Irbis
29.12.09
✎
19:57
|
Вообще-то проверять надо еще до записи. Я в форме перед записью это делаю. Программно заполняемые документы - забота программиста. Для подстраховки ЗаписатьВФорме() использовать можно.
|
|||
31
Irbis
29.12.09
✎
19:58
|
А остатки при проведении, при первом косяке проведение прекращается, в сообщить описание "ошибки".
|
|||
32
AndreyFAN
29.12.09
✎
20:00
|
при моём варианте проведение не прекращается при первой ошибке... накапливается текстовая переменнная, и при окончании проверки всего документа производится Отмена проведения с одновременным выводом Предупреждения с ошибками
|
|||
33
Irbis
29.12.09
✎
20:02
|
(32) Предупреждение - зло, все подробности лучше в сообщить.
|
|||
34
AndreyFAN
29.12.09
✎
20:02
|
(30) проверять, кончено, нужно и до записи, чтобы юзер сразу видел что он ввёл например количество больше чем есть на складе, НО
надо и при проведении опять проверить, потому что может другой юзер уже выбрать тот же товар со склада |
|||
35
AndreyFAN
29.12.09
✎
20:04
|
(33) я уже ответил в (26)
|
|||
36
Irbis
29.12.09
✎
20:07
|
(34) До записи дока остатки вообще смысла нет проверять. Я проверяю только заполненность обязательных реквизитов, влияющих на работу программы и проведение документа, дубли строк в ТЧ и т. п. Остатки только при проведении, имхо так правильнее.
|
|||
37
Irbis
29.12.09
✎
20:08
|
(35) Предупреждение зло потому что при выполнении на стороне сервера ошибки повалятся.
|
|||
38
gosh28
29.12.09
✎
20:15
|
Сделал так - ошибку не выдает, но и не заполняет ячейку. Может я сморозил где (
Процедура ЗаказТоварОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтрокаТабличнойЧасти=ЭлементыФормы.Заказ.ТекущаяСтрока; Отбор = Новый Структура; Отбор.Вставить("Товар", СтрокаТабличнойЧасти.Товар); СтрокаТабличнойЧасти.КоличествоНаСкладе=РегистрыНакопления.Остатки.Остатки(Дата,Отбор).Итог("Количество"); КонецПроцедуры |
|||
39
AndreyFAN
29.12.09
✎
20:18
|
(38) может у тебя реквизит в таблице ЗаказТовар? а в отборе Товар.
|
|||
40
AndreyFAN
29.12.09
✎
20:19
|
попробуй поменять
Отбор.Вставить("Товар", СтрокаТабличнойЧасти.ЗаказТовар); |
|||
41
gosh28
29.12.09
✎
20:34
|
Для проверки закоментил и единицу поставил - результат положительный. Если комент уберу ошибку не выдает - все ОК, но ничего не добавляет в ячейку ((
Процедура РасчитатьОстаток(СтрокаТабличнойЧасти) Отбор = Новый Структура; Отбор.Вставить("Товар", СтрокаТабличнойЧасти.Товар); СтрокаТабличнойЧасти.КоличествоНаСкладе=1;//РегистрыНакопления.Остатки.Остатки(Дата,Отбор).Итог("Количество"); КонецПроцедуры |
|||
42
AndreyFAN
29.12.09
✎
20:40
|
у тебя в табличной части документа реквизит ЗаказТовара или Товар?
регистр накопления точно называется Остатки? в регистре накопления реквизит точно Количество? |
|||
43
Slon747
29.12.09
✎
20:41
|
+(42) Товар точно есть в наличии на эту Дату?
|
|||
44
Armando
29.12.09
✎
20:44
|
Еще почитай "Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8". Статья "Требования по локализации модулей".
|
|||
45
AndreyFAN
29.12.09
✎
20:48
|
(43) :-)))))) ржал... убились бы искать!
|
|||
46
Slon747
29.12.09
✎
20:50
|
(45) Не понял. Регистр накопления. На эту Дату могло быть накоплено 0. Вот и не выводится.
|
|||
47
Slon747
29.12.09
✎
20:52
|
+(46) Ну или я не поянл твой смех. Вероятно и правда смешно :)
|
|||
48
AndreyFAN
29.12.09
✎
20:52
|
(46) дык и я про это... если не учесть твоё замечание можно до декабря 2012 года искать почему ячейка пустая... :-))))
|
|||
49
gosh28
29.12.09
✎
20:52
|
Не понял Slon747, я чайник в чем ошибка
|
|||
50
Slon747
29.12.09
✎
20:53
|
(48) :)
|
|||
51
gosh28
29.12.09
✎
20:53
|
Млин в декабре 2012 меня уже в армию заберут )
|
|||
52
gosh28
29.12.09
✎
20:54
|
Не уже выпустят. Помогите народ
|
|||
53
Slon747
29.12.09
✎
20:54
|
(49) Я обычно запросом получаю (внутри 1с все равно все в запрос превращается).
Если надо - напишу запрос |
|||
54
AndreyFAN
29.12.09
✎
20:54
|
ну ты же не отвечаешь на вопросы в 42 и 43, а мы не телепаты...
|
|||
55
AndreyFAN
29.12.09
✎
20:55
|
чтобы написал запрос, пусть точно даст реквизиты
|
|||
56
gosh28
29.12.09
✎
20:56
|
Ааа сори. Документ ЗаказКлиента с реквизитами Товар, КоличествоНаСкладе
РегистрНакопления.Остатки с Измерением - Товар и Ресурсом Количество |
|||
57
gosh28
29.12.09
✎
20:57
|
Бли
|
|||
58
gosh28
29.12.09
✎
20:57
|
ТабличнаяЧасть - Заказ в ней строки - Товар, КоличествоНаСкладе
|
|||
59
gosh28
29.12.09
✎
20:59
|
ЗаказКлиент.Заказ в ней - Товар, КоличествоНаСкладе и т.д.
РегистрыНакопления.Остатки в нем - Товар, Количество (( Вроде все верно по реквезитам было. |
|||
60
AndreyFAN
29.12.09
✎
21:00
|
ну и осталось ответить на: А точно на складе на дату документа есть остаток этого товара?
|
|||
61
AndreyFAN
29.12.09
✎
21:01
|
хотя Слон счес сделает что если 0, то пусть ругается :-)
|
|||
62
gosh28
29.12.09
✎
21:02
|
Да. На складе куча товара. Добавил еще и все равно
|
|||
63
Slon747
29.12.09
✎
21:05
|
Попробуй так:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиТоваров.Количество |ИЗ | РегистрНакопления.ОстаткиТоваров.Остатки(&Дата, Товар = &Товар) КАК ОстаткиТоваров"; Запрос.УстановитьПараметр(Товар, СтрокаТабличнойЧасти.Товар); Выборка = Запрос.Выполнить().Выбрать(); СтрокаТабличнойЧасти.КоличествоНаСкладе = ?(Выборка.Следующий(), Выборка.Количество, 0); |
|||
64
Slon747
29.12.09
✎
21:06
|
+(63) И дату в параметры добавь. Я забыл
|
|||
65
AndreyFAN
29.12.09
✎
21:06
|
по тем параметрам, что ты дал то в (38) должно работать
|
|||
66
AndreyFAN
29.12.09
✎
21:07
|
(63) у него регистр Остатки а не ОстаткиТоваров...
Гош, исправь |
|||
67
Slon747
29.12.09
✎
21:08
|
(66) ОстаткиТоваров я в (29) увидел :)
|
|||
68
gosh28
29.12.09
✎
21:23
|
Процедура РасчитатьОстаток(СтрокаТабличнойЧасти)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Остатки.Количество |ИЗ | РегистрНакопления.Остатки.Остатки(&Дата, Товар = &Товар) КАК ОстаткиТоваров"; Запрос.УстановитьПараметр(Дата, СтрокаТабличнойЧасти.Товар); Выборка = Запрос.Выполнить().Выбрать(); СтрокаТабличнойЧасти.КоличествоНаСкладе = ?(Выборка.Следующий(), Выборка.Количество, 0); //Отбор = Новый Структура; //Отбор.Вставить("Товар", СтрокаТабличнойЧасти.Товар); //СтрокаТабличнойЧасти.КоличествоНаСкладе=РегистрыНакопления.Остатки.Остатки(Дата,Отбор,"Товар").Итог("Количество"); КонецПроцедуры Выдает ошибку: ( {Документ.ЗаказКлиента.Форма.ФормаДокумента(15)}: Ошибка при вызове метода контекста (Выполнить): {(2, 5)}: Поле не найдено "Остатки.Количество" <<?>>Остатки.Количество Выборка = Запрос.Выполнить().Выбрать(); по причине: {(2, 5)}: Поле не найдено "Остатки.Количество" <<?>>Остатки.Количество |
|||
69
AndreyFAN
29.12.09
✎
21:24
|
РегистрНакопления.Остатки.Остатки(&Дата, Товар = &Товар) КАК Остатки";
|
|||
70
Slon747
29.12.09
✎
21:24
|
(68) Призывник, а что ты в (59) писал?
"РегистрыНакопления.Остатки в нем - Товар, Количество" |
|||
71
AndreyFAN
29.12.09
✎
21:25
|
КАК Остатки
|
|||
72
Slon747
29.12.09
✎
21:27
|
(70)(71) Ну да. Это я протупил
|
|||
73
gosh28
29.12.09
✎
21:29
|
Исправил теперь выдает
{Документ.ЗаказКлиента.Форма.ФормаДокумента(15)}: Ошибка при вызове метода контекста (Выполнить): {(4, 39)}: Не задано значение параметра "Дата" РегистрНакопления.Остатки.Остатки(<<?>>&Дата, Товар = &Товар) Выборка = Запрос.Выполнить().Выбрать(); по причине: {(4, 39)}: Не задано значение параметра "Дата" РегистрНакопления.Остатки.Остатки(<<?>>&Дата, Товар = &Товар) |
|||
74
gosh28
29.12.09
✎
21:30
|
А текст такой. Что там с датой не пойму )) Аты-баты
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.Остатки.Остатки(&Дата, Товар = &Товар)"; Запрос.УстановитьПараметр(Дата, СтрокаТабличнойЧасти.Товар); Выборка = Запрос.Выполнить().Выбрать(); СтрокаТабличнойЧасти.КоличествоНаСкладе = ?(Выборка.Следующий(), Выборка.Количество, 0); //Отбор = Новый Структура; //Отбор.Вставить("Товар", СтрокаТабличнойЧасти.Товар); //СтрокаТабличнойЧасти.КоличествоНаСкладе=РегистрыНакопления.Остатки.Остатки(Дата,Отбор,"Товар").Итог("Количество"); КонецПроцедуры |
|||
75
Slon747
29.12.09
✎
21:37
|
Так я ж писал, что дату надо еще.
И куда ты дату в товар засунул? Так попробуй: Запрос.УстановитьПараметр(Дата, ЭтотОбъект.Дата); Запрос.УстановитьПараметр(Товар, СтрокаТабличнойЧасти.Товар); |
|||
76
gosh28
29.12.09
✎
21:42
|
Не получается а реквизит СтрокаТабличнойЧасти Товар есть и реквизит в Регистре Остатки тоже Товар (
{Документ.ЗаказКлиента.Форма.ФормаДокумента(15,46)}: Переменная не определена (Товар) Запрос.УстановитьПараметр(<<?>>Товар, СтрокаТабличнойЧасти.Товар); |
|||
77
hhhh
29.12.09
✎
21:42
|
(75) Разводящий?
|
|||
78
gosh28
29.12.09
✎
21:42
|
Кто?
|
|||
79
Slon747
29.12.09
✎
21:43
|
(77) Что?
|
|||
80
Slon747
29.12.09
✎
21:44
|
Ковычки.
Запрос.УстановитьПараметр("Дата", ЭтотОбъект.Дата); Запрос.УстановитьПараметр("Товар", СтрокаТабличнойЧасти.Товар); |
|||
81
gosh28
29.12.09
✎
21:44
|
Вот полный текст:
Процедура РасчитатьОстаток(СтрокаТабличнойЧасти) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.Остатки.Остатки(Дата, Товар = &Товар)"; Запрос.УстановитьПараметр(Дата, ЭтотОбъект.Дата); Запрос.УстановитьПараметр(Товар, СтрокаТабличнойЧасти.Товар); Выборка = Запрос.Выполнить().Выбрать(); СтрокаТабличнойЧасти.КоличествоНаСкладе = ?(Выборка.Следующий(), Выборка.Количество, 0); //Отбор = Новый Структура; //Отбор.Вставить("Товар", СтрокаТабличнойЧасти.Товар); //СтрокаТабличнойЧасти.КоличествоНаСкладе=РегистрыНакопления.Остатки.Остатки(Дата,Отбор,"Товар").Итог("Количество"); КонецПроцедуры (( опять туплю чтоли |
|||
82
Slon747
29.12.09
✎
21:45
|
(81) Я тебя с ковычками развел
|
|||
83
gosh28
29.12.09
✎
21:46
|
Крыша едет... не могу
{(4, 39)}: Поле не найдено "Дата" РегистрНакопления.Остатки.Остатки(<<?>>Дата, Товар = &Товар) |
|||
84
Slon747
29.12.09
✎
21:48
|
(83) РегистрНакопления.Остатки.Остатки(&Дата, Товар = &Товар)
|
|||
85
gosh28
29.12.09
✎
21:52
|
Ну вот пришел к тому с чего начинал - ошибок не выводит но в строку ничего не заносит.
Сделал отчет по остаткам товаров - В отчете Остаток - 12 шт. Т.е. остаток на складе все таки есть... но. А без даты можно тут как то обойтись технически? |
|||
86
Slon747
29.12.09
✎
21:54
|
(85) Отладчиком проверял?
|
|||
87
AndreyFAN
29.12.09
✎
21:58
|
я ую... вот отредактировано вроде :-)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Остатки.Количество |ИЗ | РегистрНакопления.Остатки.Остатки(&Дата, Товар = &Товар) КАК Остатки"; Запрос.УстановитьПараметр(Товар, СтрокаТабличнойЧасти.Товар); Запрос.УстановитьПараметр(Дата, ТекущаяДата()); Выборка = Запрос.Выполнить().Выбрать(); СтрокаТабличнойЧасти.КоличествоНаСкладе = ?(Выборка.Следующий(), Выборка.Количество, 0); |
|||
88
Slon747
29.12.09
✎
21:59
|
(87) Тока названия параметров - в кавычки
|
|||
89
AndreyFAN
29.12.09
✎
22:00
|
бл... :-)))
|
|||
90
Slon747
29.12.09
✎
22:01
|
Так глядишь, за окном 2012-й будет :)
|
|||
91
gosh28
29.12.09
✎
22:03
|
{(2, 13)}: Поле не найдено "Остатки.Количество"
Остатки.<<?>>Количество |
|||
92
AndreyFAN
29.12.09
✎
22:04
|
ну что ж, продолжим...
значит у тебя в регистре реквизит не Количество |
|||
93
hhhh
29.12.09
✎
22:04
|
(91) ну открой наконец синтакс помощник. НЕт такого поля "Количество" и физически не может быть.
|
|||
94
Slon747
29.12.09
✎
22:07
|
(93) А почему физически не может быть ресурса "Количество"?
|
|||
95
AndreyFAN
29.12.09
✎
22:07
|
(93) ???
при чем здесь синтаксис? я ресурс в РегистреНакопления как хочу могу назвать... |
|||
96
gosh28
29.12.09
✎
22:09
|
Процедура РасчитатьОстаток(СтрокаТабличнойЧасти)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.Остатки.Остатки(&Дата, Товар = &Товар)"; Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Запрос.УстановитьПараметр("Товар", СтрокаТабличнойЧасти.Товар); Выборка = Запрос.Выполнить().Выбрать(); КоличествоНаСкладе = ?(Выборка.Следующий(), Выборка.Количество, 0); КонецПроцедуры Вот все вобщем правильно. блин без ошибок же. Причем это уже второй вариант. С датой какая то хрень. У меня в документе ЗаказКлиента стоит 29.12.09 00:00 а в регистре остатки - 29.12.09 и время. Может в этом дело. |
|||
97
Slon747
29.12.09
✎
22:09
|
(96) Да. В этом.
|
|||
98
gosh28
29.12.09
✎
22:10
|
А как сделать чтоб время было не 00:00 (
|
|||
99
hhhh
29.12.09
✎
22:12
|
(98) поставить в документе заказ галочку "Оперативное проведение"
|
|||
100
Slon747
29.12.09
✎
22:12
|
В параметре Дата у тебя текущая дата (со временем). А регистре - позже
|
|||
101
NcSteel
29.12.09
✎
22:12
|
(100) 100
|
|||
102
AndreyFAN
29.12.09
✎
22:12
|
100!
|
|||
103
AndreyFAN
29.12.09
✎
22:13
|
Слон!!!!!!!!! Всё испортил и не юзанул
|
|||
104
gosh28
29.12.09
✎
22:13
|
Стоит!
|
|||
105
Slon747
29.12.09
✎
22:14
|
(103) Ааа. Не заметил. Первый раз был на 100 и пропустил :)
|
|||
106
gosh28
29.12.09
✎
22:14
|
Стоит!Оперативное проведение - разрешить
|
|||
107
Slon747
29.12.09
✎
22:15
|
Короче. У тебя отбирается на текущую дату (со временем). Если на эту дату были остатки, то вернет
|
|||
108
gosh28
29.12.09
✎
22:18
|
Кто виноват я понял. А что делать
|
|||
109
Slon747
29.12.09
✎
22:21
|
Запрос выполняется без ошибок?
Должны быть остатки на дату проведения дока. Они есть? Если нет, перепроведи документ поступления (или что там у тя) на вчера. Остатки есть? Тогда проверяй отладиком |
|||
110
gosh28
29.12.09
✎
22:35
|
Все. Сделал. Просто надо было в обработке проведения делать мне потому что на момент заполнения известна только дата, а время подставляется только в процессе проведения. Ну вот вобщем все соединенное.
ОГРОМНОЕ СПАСИБО народ, что помогли ) AndreyFAN&Slon747: ТекстПредупреждения="Не хватает на складе"; Для Каждого ТекСтрокаЗаказ Из Заказ Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.Остатки.Остатки(&Дата, Товар = &Товар)"; Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Запрос.УстановитьПараметр("Товар", ТекСтрокаЗаказ.Товар); Выборка = Запрос.Выполнить().Выбрать(); КоличествоНаСкладе = ?(Выборка.Следующий(), Выборка.Количество, 0); Если ТекСтрокаЗаказ.Количество>КоличествоНаСкладе тогда Предупреждение(ТекстПредупреждения,60); Отказ=Истина; КонецЕсли; КонецЦикла; |
|||
111
AndreyFAN
29.12.09
✎
22:37
|
да, только ты убрал Наименование из сообщения, не будет понятно какого товара не хватает
|
|||
112
Slon747
29.12.09
✎
22:39
|
(110) "потому что на момент заполнения известна только дата, а время подставляется только в процессе проведения"
Чё то я непонял, да и ладно. Главное, что получилось |
|||
113
AndreyFAN
29.12.09
✎
22:40
|
поменяй
Предупреждение(ТекстПредупреждения,60); на Сообщить(""+ТекСтрокаЗаказ.Товар+" - не хватает НаСкладе!"); чтобы не клацать на каждый крик по клаве |
|||
114
Slon747
29.12.09
✎
22:41
|
Кстати, в ТЧ товар может повторяться, а остаток у тебя сравнивается построчно.
Так что будь к разговору со злым преподом. |
|||
115
Slon747
29.12.09
✎
22:42
|
(114) "будь" = "будь готов"
|
|||
116
gosh28
29.12.09
✎
22:45
|
Да. Я готов. У меня косяков полно. Только кроме них есть еще многое совсем не сделанное а времени до завтрашнего утра, которое начнется с совещания на работе а закончится приговором на учебе. В общем СПС. Пока пусть так!!! ))) ПОЛУЧИЛОСЬ однако.
|
|||
117
AndreyFAN
29.12.09
✎
22:47
|
Надо смотреть видеоуроки Павла Чистова....
там и про свёрстку строк повторяющихся строк очень понятно объяснил... не помню оригинальную ссылку, но тут выложено тоже Чистова http://1cgeo.com/index.php?option=com_docman&task=cat_view&gid=34&Itemid=54 |
|||
118
gosh28
29.12.09
✎
23:01
|
Супер сайт. Будем учиться
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |