Имя: Пароль:
1C
 
Организация вывода сообщения об ошибке
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
Супер сайт. Будем учиться