Имя: Пароль:
1C
1С v8
Проблемы с получение данных из запроса
0 Wolfily
 
25.09.12
10:33
Здравствуйте. Сразу оговорюсь, имею средний уровень знаний программирования в 1С.
Собственно вопрос - Есть процедура с запрос на выборку, который запускается из обработки:
Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
   Для Каждого Строка Из Лимиты Цикл
       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    ТоварыОрганизацийОстаткиИОбороты.Склад,
                      |    ТоварыОрганизацийОстаткиИОбороты.Номенклатура,
                      |    ТоварыОрганизацийОстаткиИОбороты.КоличествоКонечныйОстаток КАК Остаток
                      |ИЗ
                      |    РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты КАК ТоварыОрганизацийОстаткиИОбороты
                      |ГДЕ
                      |    ТоварыОрганизацийОстаткиИОбороты.Склад = &Склад
                      |    И ТоварыОрганизацийОстаткиИОбороты.Номенклатура = &Номенклатура";
       Запрос.УстановитьПараметр("Склад", ЭлементыФормы.Склад.Значение);
       Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура.Наименование);
       Результат = Запрос.Выполнить().Выбрать();
       
       ???
       
       Строка.ОстатокНПШТ = Строка.ОстатокНПКГ/Строка.НормаРасходаПоСпецификации;
       Строка.ВыпускПлановый = Строка.ЛимитОтпуска/Строка.НормаРасходаПоСпецификации;
       Строка.ПлановаяПотребность = Строка.ЛимитОтпуска-Строка.ОстатокНПКГ;
   КонецЦикла;
КонецПроцедуры

Как записать в колонку строки табличной части Строка.ОстатокНПКГ значение из запроса Остаток?

Заранее благодарю всех за ответы!!!
1 Ненавижу 1С
 
гуру
25.09.12
10:34
запрос в цикле, не использование параметров - ай яй яй
2 Wolfily
 
25.09.12
10:36
Понимаю, что нужен рефакторинг) Но пока хотя бы так сделать) Запросом всего 1 значение выбрать нужно, вот и впихал в цикл)
3 Шапокляк
 
25.09.12
10:36
(1) Но это ерунда по сравнению с
Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура.Наименование);
4 Shurjk
 
25.09.12
10:36
Провокация однако. Запрос в цикле.
5 Wolfily
 
25.09.12
10:37
Хорошо, как нужно написать?)
6 Рэйв
 
25.09.12
10:37
тРез=Запрос.Выполнить().Выгрузить();
Если тРез.Количество()>0 Тогда
  Строка.ОстатокНПКГ=тРез[0].Остаток;
КонецЕсли;

...а за такие ошибки , как создание объекта в цикле,обычно увольняют:-)
7 Godofsin
 
25.09.12
10:38
(5) без цикла
8 Ork
 
25.09.12
10:39
(0) Нет обхода результата.
Всмысле такого :
//начиная отсюда
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
   Строка.ОстатокНПКГ = Строка.ОстатокНПКГ + Результат.Остаток;
КонецЦикла;

Можно записать короче, если в выборку заведомо попадает только одна запись.

А вообще код, конечно жесть.
9 Рэйв
 
25.09.12
10:40
(8)А сколько там строк будет если у него условие по номенклатуре и складу :-) Одна и будет
10 Maxus43
 
25.09.12
10:40
судя по коментам, фраза:
>>имею средний уровень знаний программирования в 1С
Ложь
11 Wolfily
 
25.09.12
10:41
Не отрицаю) обучение начал всего месяц назад)
12 Ork
 
25.09.12
10:41
(9) А если там еще аналитика по партиям? (для примера).
13 Wolfily
 
25.09.12
10:42
Нет, партионный учет не ведется
14 Рэйв
 
25.09.12
10:43
(12)Ну ..Если партии тогда да.
15 Жан Пердежон
 
25.09.12
10:44
(0) средний уровень тут рядом не лежал
16 Segate
 
25.09.12
10:45
(12) ты реально веришь, что человек который ссылку с наименованием сравнивает - ведет аналитику по партиям? )))
17 Reset
 
25.09.12
10:45
нужно вместо Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура.Наименование);
написать Запрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоКоду(Строка.Номенклатура.Ссылка.Код));
Вот тогда эпично будет. Так не эпично.
18 Segate
 
25.09.12
10:47
(0) у тебя есть список номенклатуры, пчему ты не можешь взять остатки по складу сразу по всей этой номенклатуре?
19 cw014
 
25.09.12
10:47
ЭлементыФормы.Склад.Значение - тоже эпик
20 Wolfily
 
25.09.12
10:47
Спасибо за предложенные варианты! Выводит пустые значения в табличную часть... В отчет все остатки показывает... С чем может быть связанно?
21 Wolfily
 
25.09.12
10:48
Как должно быть?)) Я понимаю, что все это - сплошной косяк)
22 Шапокляк
 
25.09.12
10:51
(14) Там для каждого товара будет столько строк, у скольких организаций есть остаток по этому товару на этом складе, а если учесть, что и другие измерения в регистре могут быть разными для сочетания товар-склад.
И, опять же, ТС не видит разницы между ссылкой на элемент справочника и его наименованием,так что он сильно льстит себе, говоря о среднем уровне.
23 Reset
 
25.09.12
10:51
Подтверждаю, что все сплошной косяк.
Дословный ответ на вопрос
"Как записать в колонку строки табличной части Строка.ОстатокНПКГ значение из запроса Остаток?" :
Если Результат.Следующий() тогда
 Строка.ОстатокНПКГ=Результат.Остаток;
Иначе
 Строка.ОстатокНПКГ=0;
КонецЕсли;

Но работать все равно не будет изза (3)
24 Deon
 
25.09.12
10:51
Издеваются, засранцы, над падаваном ))) ай-яй-яй )
25 Reset
 
25.09.12
10:52
точнее изза многого
26 Wolfily
 
25.09.12
10:53
У нас есть админ 1с, мне дали задачку простую) Нужно в документе Изменение лимитов отпуска материалов учитывать остатки на складе) Так что не судите строго)
27 Deon
 
25.09.12
10:53
(0) Переименуй переменную "Строка" во что-нибудь другое, красненьким нечитабельно же ваще
28 Reset
 
25.09.12
10:56
(27) Это главная проблема, несомненно
29 Deon
 
25.09.12
10:56
(28) Безусловно )
30 Oleg_Kag
 
25.09.12
10:58
1-ое и самое главное: в дальнейших строках обработки я НЕ увидел обращения к "оборотам"->РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты меняем на
РегистрНакопления.ТоварыОрганизаций.Остатки
2) Стараемся максимально уточнить параметры обращения к регистру накопления.
а) Дата на которую нужны остатки
б) список номенклатуры по которой необходимы остатки (это минимум из то, что я вижу)
РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаНаКоторуюВыбираемОстатки,Номенклатура В (&НоменклатураПоКоторойОтбираем))
НоменклатураПоКоторойОтбираем - вот этот список откуда надо брать... откуда не понятно, т.к. не понятно какой тип данных у Лимиты

p.s. мой уровень в 1С близкий к уровню Мертвого моря, то есть где-то "в минусе"
31 Wolfily
 
25.09.12
10:59
Лимиты - табличная часть обработки
32 Deon
 
25.09.12
11:00
(20) Ты уже исправил назначение параметров запроса?
33 Reset
 
25.09.12
11:00
(30) С датой в точности наоборот :) "Пока есть возможность, стараемся не уточнять дату остатоков"
34 Jofa
 
25.09.12
11:01
Зачем запрос крутить в Цикле???
35 Jofa
 
25.09.12
11:01
+(34)Сервера крутые стоят?
36 Wolfily
 
25.09.12
11:02
Нет еще) Склад берется со 2ой вкладки обработки, а Наименование номенклатуры берем после заполнения "Лимиты". ЗЫ: Обработка стандартная, в ней ничего не менял.
37 Reset
 
25.09.12
11:03
(36) Там еще могут быть характеристики, серии, качество и тп. Их нужно все учитывать
38 cw014
 
25.09.12
11:03
ОстатокНПШТ, ОстатокНПКГ

Какие развернутые для понимания значения показателей...
39 Reset
 
25.09.12
11:04
+ Организация, судя по названию регистра
40 Deon
 
25.09.12
11:04
(36) Ты пытаешься засунуть в запрос не ссылку на позицию номенклатуры, а именно название номенклатуры. Оно так работать не будет. Ведь в тексте запроса ты сравниваешь именно ссылки
41 cw014
 
25.09.12
11:04
(38) ОстатокВГЧЦ, ОстатокКЛМН :)
42 Oleg_Kag
 
25.09.12
11:05
Если там действительно ТаблицаЗначений, то можно параметр по номенклатуре передать как

Запрос.УстановитьПараметр("МассивНоменклатуры", ТаблицаЗначений.ВыгрузитьКолонку("Номенклатура"));
43 Deon
 
25.09.12
11:05
(38) Что такое "НП" непонятно, с "ШТ" и "КГ" как раз всё просто )
44 Reset
 
25.09.12
11:06
(38) Остататок в ШТуках, КГраммах
45 Wolfily
 
25.09.12
11:06
НП - Незавершенное производство))
46 Reset
 
25.09.12
11:07
(41) ОстататокЁклмн.
47 Deon
 
25.09.12
11:07
(45) Показывай уже исправленный код
48 Wolfily
 
25.09.12
11:09
Я так и не понял откуда взять Склад и Номенклатуру...
Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
   Для Каждого Строка Из Лимиты Цикл
       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    ТоварыОрганизацийОстатки.Склад,
                      |    ТоварыОрганизацийОстатки.Номенклатура,
                      |    ТоварыОрганизацийОстатки.КоличествоОстаток КАК Остаток
                      |ИЗ
                      |    РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
                      |ГДЕ
                      |    ТоварыОрганизацийОстатки.Склад = &Склад
                      |    И ТоварыОрганизацийОстатки.Номенклатура = &Номенклатура";
       Запрос.УстановитьПараметр("Склад", ЭлементыФормы.Склад.Значение);
       Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура.Наименование);
       Результат = Запрос.Выполнить().Выбрать();
       Если Результат.Следующий() тогда
             Строка.ОстатокНПКГ=Результат.Остаток;
       Иначе
             Строка.ОстатокНПКГ=0;
       КонецЕсли;
       Строка.ОстатокНПШТ = Строка.ОстатокНПКГ/Строка.НормаРасходаПоСпецификации;
       Строка.ВыпускПлановый = Строка.ЛимитОтпуска/Строка.НормаРасходаПоСпецификации;
       Строка.ПлановаяПотребность = Строка.ЛимитОтпуска-Строка.ОстатокНПКГ;
   КонецЦикла;
КонецПроцедуры
49 Segate
 
25.09.12
11:09
(36) Склад - реквизит наверное! Инфа 146% если нет, то писал остальную обработку какой то валера )))

ну и я уже говорил, что запрос надо делать один раз только вместо Номенклатура = &Номенклатура, надо ставить Номенклатура В &Номенклатура

И грузить туда список нужной номенклатуры
50 cw014
 
25.09.12
11:10
(46) :) ОстатокКГАМ
51 Шапокляк
 
25.09.12
11:15
(48) Ты читаешь ответы?
       Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура.Наименование);
и опять запрос в цикле и все прочие косяки!
52 Wolfily
 
25.09.12
11:16
Исправляю все)
53 Deon
 
25.09.12
11:17
(52) Напиши так и попробуй:
     Запрос.УстановитьПараметр("Склад", Склад);
     Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура);
54 Deon
 
25.09.12
11:17
Но не забудь самое главное - переименовать "Строка"
55 Segate
 
25.09.12
11:17
Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
   МассивНоменклатуры = Лимиты.ВыгрузитьКолонку("Номенклатура");
       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    ТоварыОрганизацийОстатки.Склад,
                      |    ТоварыОрганизацийОстатки.Номенклатура,
                      |    ТоварыОрганизацийОстатки.КоличествоОстаток КАК Остаток
                      |ИЗ
                      |    РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
                      |ГДЕ
                      |    ТоварыОрганизацийОстатки.Склад = &Склад
                      |    И ТоварыОрганизацийОстатки.Номенклатура В &Номенклатура";
       Запрос.УстановитьПараметр("Склад", Склад);
       Запрос.УстановитьПараметр("Номенклатура",МассивНоменклатуры);
       Результат = Запрос.Выполнить().Выбрать();
       Пока Результат.Следующий() тогда
             СтрокаТЗ = Лимиты.Найти(Результат.Номенклатура);
СтрокаТЗ.ОстатокНПКГ=Результат.Остаток;
      Конеццикла;


//Тут как то так... но я точно не проверял, и не смотрел.

Дальше вообще лучше запихнуть пересчеты в отдельную процедуру. которую вызывать например из ЛимитыОстатокНПКГПриИзменении
56 dsdred
 
25.09.12
11:17
Я 2 месяц на 1с сижу и такога страха не наблюдал
У тебя запрос то вообще данные возвращает? в отладчике мотрел результаты?
57 Jofa
 
25.09.12
11:19
Вот так будет выглядеть :

Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
         
       Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("Склад", ЭлементыФормы.Склад.Значение);
       Запрос.УстановитьПараметр("МассивНоменклатуры", Лимиты.ВыгрузитьКолонку("Номенклатура"));
       

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

       КонецЦикла;
         
КонецПроцедуры
58 Deon
 
25.09.12
11:21
(55)(57) А чего вы так упорно условия отбора таблицы ТоварыОрганизацийОстатки пихаете в ГДЕ?
59 cw014
 
25.09.12
11:22
(57)

           НайденаяСтрока .ОстатокНПШТ = Строка.ОстатокНПКГ/Строка.НормаРасходаПоСпецификации;
           НайденаяСтрока .ВыпускПлановый = Строка.ЛимитОтпуска/Строка.НормаРасходаПоСпецификации;
           НайденаяСтрока .ПлановаяПотребность = Строка.ЛимитОтпуска-Строка.ОстатокНПКГ;


Надо так наверное, иначе свалимся:

           НайденаяСтрока .ОстатокНПШТ = ?(Строка.НормаРасходаПоСпецификации = 0,0,Строка.ОстатокНПКГ/Строка.НормаРасходаПоСпецификации);
           НайденаяСтрока .ВыпускПлановый = ?(Строка.НормаРасходаПоСпецификации = 0,0,Строка.ЛимитОтпуска/Строка.НормаРасходаПоСпецификации);
           НайденаяСтрока .ПлановаяПотребность = Строка.ЛимитОтпуска-Строка.ОстатокНПКГ;
60 cw014
 
25.09.12
11:22
(58) +100500
61 cw014
 
25.09.12
11:23
(58) и остаток собирается на конец света, а не на момент документа
62 Deon
 
25.09.12
11:23
(59) ПлановуюПотребность на отрицательное значение можно ещё проверить )))
63 cw014
 
25.09.12
11:24
(62) Не обязательно. При присвоении отрицательного значения к полю с признаком "Неотрицательный" в квалификаторе приравнивает его к нулю
64 Deon
 
25.09.12
11:24
(61) Как я понял, так и надо. Это ж обработка, а не документ
65 cw014
 
25.09.12
11:25
(65) Хммм, очень похоже на документ.
66 Segate
 
25.09.12
11:26
(58) я просто переписал его запрос, так чтоб он был похож на правду. Можно все заменить на:
ВЫБРАТЬ     ТоварыОрганизацийОстатки.Номенклатура,
                         ТоварыОрганизацийОстатки.КоличествоОстаток КАК Остаток  ИЗ РегистрНакопления.УчетНоменклатуры.Остатки(КонПериода,
   Номенклатура = &МассивНоменклатуры)

ЗЫ По мне дак экономия времени(если ам не овер 9000 строк) минимальна. Так что параметры можно куда угодно засовывать...
67 Wolfily
 
25.09.12
11:26
Из документа вызывается обработка, в ней как раз происходят расчеты, которые записываются в документ
68 Deon
 
25.09.12
11:26
Кстати ) (55)(57) А если в ТЗ есть 2 строки с одинаковой номенклатурой? )
69 Jofa
 
25.09.12
11:28
(58)Тогда так :

Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
         
       Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("Склад", ЭлементыФормы.Склад.Значение);
       Запрос.УстановитьПараметр("МассивНоменклатуры", Лимиты.ВыгрузитьКолонку("Номенклатура"));
       Запрос.УСтановитьПараметр("Период", Новый Граница (Дата, ВидГраницы Включая));
       

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

       КонецЦикла;
         
КонецПроцедуры
70 Deon
 
25.09.12
11:28
(66) Ну, по большому счету, в случае с (0) вообще лучше без запроса обойтись )
71 Jofa
 
25.09.12
11:29
Вот так надёжней

Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
         
       Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("Склад", ЭлементыФормы.Склад.Значение);
       Запрос.УстановитьПараметр("МассивНоменклатуры", Лимиты.ВыгрузитьКолонку("Номенклатура"));
       Запрос.УСтановитьПараметр("Период", Новый Граница (Дата, ВидГраницы Включая));        

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


       КонецЦикла;
         
КонецПроцедуры
72 Deon
 
25.09.12
11:30
(71) А в каких случаях может это выполнится:
Если НайденаяСтрока = Неопределено Тогда
73 Segate
 
25.09.12
11:31
(71) и все равно нифига не взлетит )))) Потому как "строка" у тебя уе нет. Да и остатокНПКГ ты упорно не заполняешь )
74 Segate
 
25.09.12
11:32
(72) Он из индии, сначала автоматом еще дописал:
Если НайденаяСтрока = Неопределено Тогда
               
               Сообщить("Тро ло ло", СтатусСообщения.ОченьВажное);
               
               Продолжить;
           //вот тут чистые деньги
           КонецЕсли;  

Но потом коммент стер.
75 cw014
 
25.09.12
11:32
(72) В том случае если остатка по этой номенклатуре нет на этом складе
76 Deon
 
25.09.12
11:32
(74) )))))))))
77 Deon
 
25.09.12
11:33
(75) Погоди, он же циклом перебирает результат запроса, а не "Лимиты"
78 Wolfily
 
25.09.12
11:34
Я окончательно запутался...
79 Deon
 
25.09.12
11:34
(77) Что тоже можно считать ашипкой, ибо для позиций без остатка не выполнятся строчки:
           НайденаяСтрока .ВыпускПлановый = ?(Строка.НормаРасходаПоСпецификации = 0,0,Строка.ЛимитОтпуска/Строка.НормаРасходаПоСпецификации);
           НайденаяСтрока .ПлановаяПотребность = Строка.ЛимитОтпуска-Строка.ОстатокНПКГ;
80 Deon
 
25.09.12
11:35
(78) Всегда пожалуйста! Заходи ещё! )))
81 Wolfily
 
25.09.12
11:36
Я понимаю свои косяки хотя бы, это радует)
82 Jofa
 
25.09.12
11:36
(72)На всякий Случай, а случаи разныебывают ..)
83 Deon
 
25.09.12
11:36
(81) Тогда показывай исправленное )
84 cw014
 
25.09.12
11:39
Мб так?

ВЫБРАТЬ
   ЕСТЬNULL(Лимиты.Номенклатура,ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура
ПОМЕСТИТЬ ЛИМИТЫ
ИЗ
   &Лимиты КАК Лимиты
;

ВЫБРАТЬ
   Лимиты.Номенклатура КАК Номенклатура,
   ТоварыОрганизацийОстатки.КоличествоОстаток КАК ОстатокНПКГ
ИЗ
   Лимиты КАК Лимиты
   ЛЕВОЕ СОЕДИНЕНИЕ
       РегистрНакопления.ТоварыОрганизаций.Остатки(&Период, Склад = &Склад И Номенклатура В(&МассивНоменклатуры)) КАК ТоварыОрганизацийОстатки
       ПО Лимиты.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура
;

УНИЧТОЖИТЬ Лимиты
85 Wolfily
 
25.09.12
11:39
Секунду, ругается на переменную Строка
86 Deon
 
25.09.12
11:40
(84) Вот я тоже за такой способ, и не придется в цикле искать строку. Хотя хз, что по скорости лучше.
87 Deon
 
25.09.12
11:40
(85) Да не может быть! )))
88 Jofa
 
25.09.12
11:41
Вот почти готовый

Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
         
       Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("Склад", ЭлементыФормы.Склад.Значение);
       Запрос.УстановитьПараметр("МассивНоменклатуры", Лимиты.ВыгрузитьКолонку("Номенклатура"));
       Запрос.УСтановитьПараметр("Период", Новый Граница (Дата, ВидГраницы Включая));        

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


       КонецЦикла;
         
КонецПроцедуры
89 Segate
 
25.09.12
11:41
(85) не смотри на то что тебе жофа пишет... там ересь ) в (55) должно работать, Только поправку на (68) надо сделать
90 Deon
 
25.09.12
11:42
(89) И ещё на (79) ;)
91 Jofa
 
25.09.12
11:42
(89)Разжованое в рот положил уже .)
92 cw014
 
25.09.12
11:43
Запрос - готовая табличная часть...

ВЫБРАТЬ
   ЕСТЬNULL(Лимиты.Номенклатура,ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
   ЕСТЬNULL(Лимиты.НормаРасходаПоСпецификации, 0) КАК НормаРасходаПоСпецификации,
   ЕСТЬNULL(Лимиты.ЛимитОтпуска, 0) КАК ЛимитОтпуска
ПОМЕСТИТЬ ЛИМИТЫ
ИЗ
   &Лимиты КАК Лимиты
;

ВЫБРАТЬ
   Лимиты.Номенклатура КАК Номенклатура,
   ТоварыОрганизацийОстатки.КоличествоОстаток КАК ОстатокНПКГ,
   Лимиты.НормаРасходаПоСпецификации КАК НормаРасходаПоСпецификации,
   ВЫБОР
       КОГДА Лимиты.НормаРасходаПоСпецификации = 0
           ТОГДА 0
       ИНАЧЕ
           ТоварыОрганизацийОстатки.КоличествоОстаток / Лимиты.НормаРасходаПоСпецификации
   КОНЕЦ КАК ОстатокНПШТ,
   ВЫБОР
       КОГДА Лимиты.НормаРасходаПоСпецификации = 0
           ТОГДА 0
       ИНАЧЕ
           Лимиты.ЛимитОтпуска/ Лимиты.НормаРасходаПоСпецификации
   КОНЕЦ КАК ВыпускПлановый,
   Лимиты.ЛимитОтпуска - ВЫБОР
       КОГДА Лимиты.НормаРасходаПоСпецификации = 0
           ТОГДА 0
       ИНАЧЕ
           ТоварыОрганизацийОстатки.КоличествоОстаток / Лимиты.НормаРасходаПоСпецификации
   КОНЕЦ КАК ПлановаяПотребность
ИЗ
   Лимиты КАК Лимиты
   ЛЕВОЕ СОЕДИНЕНИЕ
       РегистрНакопления.ТоварыОрганизаций.Остатки(&Период, Склад = &Склад И Номенклатура В(&МассивНоменклатуры)) КАК ТоварыОрганизацийОстатки
       ПО Лимиты.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура
;

УНИЧТОЖИТЬ Лимиты
93 Jofa
 
25.09.12
11:43
(0)в (88) РТМ
94 cw014
 
25.09.12
11:44
(92) Только запрос нужно с менеджером временных таблиц создавать, в качестве параметра "Лимиты" выгружать таблицу значений, а после выполнения можно сделать так

Лимиты.Загрузить(Запрос.Выполнить().Выгрузить());
95 Jofa
 
25.09.12
11:46
(94) Ты все поля ТЧ Лимиты описал в ВТ?
96 Deon
 
25.09.12
11:46
(92) Вот это самое красивое решение, имхо
97 Deon
 
25.09.12
11:46
(95) уел )
98 Segate
 
25.09.12
11:48
(96) не люблю такие решения и людей которые их пишут для тч в 5-10 строк )))

Их отлаживать труднее, и писать дольше )

а скорость работы будет почти одинаковая
99 Jofa
 
25.09.12
11:48
(97)Согласен производительнее будет через ВТ
100 Jofa
 
25.09.12
11:49
(98)В случае с (92)Быстрее будет ..
101 cw014
 
25.09.12
11:50
Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
   Запрос = Новый Запрос("ВЫБРАТЬ
   ЕСТЬNULL(Лимиты.Номенклатура,ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
   ЕСТЬNULL(Лимиты.НормаРасходаПоСпецификации, 0) КАК НормаРасходаПоСпецификации,
   ЕСТЬNULL(Лимиты.ЛимитОтпуска, 0) КАК ЛимитОтпуска
ПОМЕСТИТЬ ЛИМИТЫ
ИЗ
   &Лимиты КАК Лимиты
;

ВЫБРАТЬ
   Лимиты.Номенклатура КАК Номенклатура,
   ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) КАК ОстатокНПКГ,
   Лимиты.НормаРасходаПоСпецификации КАК НормаРасходаПоСпецификации,
   ВЫБОР
       КОГДА Лимиты.НормаРасходаПоСпецификации = 0
           ТОГДА 0
       ИНАЧЕ
           ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) / Лимиты.НормаРасходаПоСпецификации
   КОНЕЦ КАК ОстатокНПШТ,
   ВЫБОР
       КОГДА Лимиты.НормаРасходаПоСпецификации = 0
           ТОГДА 0
       ИНАЧЕ
           Лимиты.ЛимитОтпуска/ Лимиты.НормаРасходаПоСпецификации
   КОНЕЦ КАК ВыпускПлановый,
   Лимиты.ЛимитОтпуска - ВЫБОР
       КОГДА Лимиты.НормаРасходаПоСпецификации = 0
           ТОГДА 0
       ИНАЧЕ
           ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) / Лимиты.НормаРасходаПоСпецификации
   КОНЕЦ КАК ПлановаяПотребность
ИЗ
   Лимиты КАК Лимиты
   ЛЕВОЕ СОЕДИНЕНИЕ
       РегистрНакопления.ТоварыОрганизаций.Остатки(&Период, Склад = &Склад И Номенклатура В(&МассивНоменклатуры)) КАК ТоварыОрганизацийОстатки
       ПО Лимиты.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура
;

УНИЧТОЖИТЬ Лимиты")
   Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   Запрос.УстановитьПараметр("Лимиты", Лимиты.Выгрузить());
   Запрос.УстановитьПараметр("Склад", Склад);
   Запрос.УстановитьПараметр("МассивНоменклатуры", Лимиты.ВыгрузитьКолонку("Номенклатура"));
   Запрос.УcтановитьПараметр("Период", Новый Граница (Дата, ВидГраницы Включая));
   Лимиты.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
102 cw014
 
25.09.12
11:50
Точку с запятой забыл после
УНИЧТОЖИТЬ Лимиты");
103 cw014
 
25.09.12
11:51
Лимиты - это табличная часть или таблица значений?
104 Wolfily
 
25.09.12
11:51
Табличная часть
105 cw014
 
25.09.12
11:52
(97) другие поля табличной части я к сожалению не знаю так как автор про них ни слова не сказал
106 Wolfily
 
25.09.12
11:56
Лимиты содержат: Номенклатура, ХарактеристикаНоменклатуры, Периодичность, ЛимитОтпуска, ЕдиницаИзмерения, Коэффициент, КонтролироватьЛимит, НормаРасходаПоСпецификации, ОстатокНПШТ, ОстатокНПКГ, ВыпускПлановый, ПлановаяПотребность
107 Deon
 
25.09.12
11:56
(94) А кстати, у таблицы значений нету метода Загрузить()
108 Wolfily
 
25.09.12
11:56
Но не все участвуют, часть из них рассчитывается до этой процедуру
109 cw014
 
25.09.12
11:57
(107) см (104)
110 cw014
 
25.09.12
11:58
(108) типы полей в студию, скорректирую процедуру
111 Deon
 
25.09.12
12:00
(109) А, точно
(92) А зачем ты используешь ЕСТЬNULL ?
112 Jofa
 
25.09.12
12:00
А я предупреждал в (95) Теперь можно задуматься о производительности
113 Deon
 
25.09.12
12:01
(110) А как же масштабируемость? Вдруг он колонку потом в табличку добавит и процедура будет её затирать?
114 Wolfily
 
25.09.12
12:01
Лимиты содержат: Номенклатура - ссылка, ЛимитОтпуска, НормаРасходаПоСпецификации, ОстатокНПШТ, ОстатокНПКГ, ВыпускПлановый, ПлановаяПотребность - Число
115 Jofa
 
25.09.12
12:02
(111)Думаю поле номенклатура В ВТ может отсутствовать
116 cw014
 
25.09.12
12:02
(111) Если выгружать табличную часть в таблицу значений - то впринципе не нужно, там типизированные колонки. А вот если использовать табличную часть например из результата запроса - там составной тип данных, включая NULL...
117 cw014
 
25.09.12
12:04
(114) ХарактеристикаНоменклатуры, Периодичность, ЕдиницаИзмерения, Коэффициент, КонтролироватьЛимит - а это?
118 Wolfily
 
25.09.12
12:05
Они заполняются ранее, их тоже нужно?)
119 cw014
 
25.09.12
12:05
(118) Лесом
120 Jofa
 
25.09.12
12:06
(0)Не морочься с Вт и (92) тебе (88) достаточно
121 Wolfily
 
25.09.12
12:07
Ошибки есть:
{Обработка.РасчетЛимитовОтпуска.Форма.ФормаОсновная.Форма(560,76)}: Ожидается символ ')'
       Запрос.УСтановитьПараметр("Период", Новый Граница (Дата, ВидГраницы<<?>> Включая));         (Проверка: Толстый клиент (обычное приложение))
{Обработка.РасчетЛимитовОтпуска.Форма.ФормаОсновная.Форма(560,85)}: Неопознанный оператор
       Запрос.УСтановитьПараметр("Период", Новый Граница (Дата, ВидГраницы Включая)<<?>>);         (Проверка: Толстый клиент (обычное приложение))
{Обработка.РасчетЛимитовОтпуска.Форма.ФормаОсновная.Форма(568,38)}: Ошибка в выражении
       Результат = Запрос.Выполнить(<<?>>).Выбрать(); (Проверка: Толстый клиент (обычное приложение))
{Обработка.РасчетЛимитовОтпуска.Форма.ФормаОсновная.Форма(586,20)}: Обнаружено логическое завершение исходного текста модуля
       КонецЦикла;<<?>>  (Проверка: Толстый клиент (обычное приложение))
122 Deon
 
25.09.12
12:08
(120) Тока он с ошибками )
123 cw014
 
25.09.12
12:08
(121) Новый Граница(Дата, ВидГраницы.Включая);
124 Wolfily
 
25.09.12
12:09
Я просто не совсем вкурил, что за конструкции) Вот и спрашиваю)
125 Jofa
 
25.09.12
12:09
Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
         
       Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("Склад", ЭлементыФормы.Склад.Значение);
       Запрос.УстановитьПараметр("МассивНоменклатуры", Лимиты.ВыгрузитьКолонку("Номенклатура"));
       Запрос.УСтановитьПараметр("Период", Новый Граница (Дата, ВидГраницы.Включая));        

       Запрос.Текст = "ВЫБРАТЬ
                      |    ТоварыОрганизацийОстатки.Номенклатура,
                      |    ТоварыОрганизацийОстатки.КоличествоОстаток КАК Остаток
                      |ИЗ
                      |    РегистрНакопления.ТоварыОрганизаций.Остатки(&Период, Склад = &Склад
                      |    И Номенклатура В(&МассивНоменклатуры)) КАК ТоварыОрганизацийОстатки";
       
       Результат = Запрос.Выполнить().Выбрать();
       
       Пока Результат.Следующий() Цикл
           
           НайденаяСтрока = Лимиты.Найти(Результат.Номенклатура, "Номенклатура");
           
           // На всякий який

           Если НайденаяСтрока = Неопределено Тогда
               
               Сообщить("Тро ло ло", СтатусСообщения.ОченьВажное);
               
               Продолжить;
           
           КонецЕсли;  
         
           НайденаяСтрока .ОстатокНПКГ = Результат.Остаток;
           НайденаяСтрока .ОстатокНПШТ = ?(НайденаяСтрока.НормаРасходаПоСпецификации = 0,0,НайденаяСтрока.ОстатокНПКГ/НайденаяСтрока.НормаРасходаПоСпецификации);
           НайденаяСтрока .ВыпускПлановый = ?(НайденаяСтрока.НормаРасходаПоСпецификации = 0,0,НайденаяСтрока.ЛимитОтпуска/НайденаяСтрока.НормаРасходаПоСпецификации);
           НайденаяСтрока .ПлановаяПотребность = НайденаяСтрока.ЛимитОтпуска - НайденаяСтрока.ОстатокНПКГ;


       КонецЦикла;
         
КонецПроцедуры
126 Wolfily
 
25.09.12
12:10
{Обработка.РасчетЛимитовОтпуска.Форма.ФормаОсновная.Форма(560,60)}: Переменная не определена (Дата)
       Запрос.УСтановитьПараметр("Период", Новый Граница (<<?>>Дата, ВидГраницы.Включая));         (Проверка: Толстый клиент (обычное приложение))

Откуда дату берет?
127 Deon
 
25.09.12
12:10
А я уж подумал он "Дата" съел без ошибок )
128 Jofa
 
25.09.12
12:10
Ну что там взлетело?
129 cw014
 
25.09.12
12:10
(125) тебе лучше все таки по табличной части бежать. "ВыпускПлановый" можно же расчитать без остатка
130 Deon
 
25.09.12
12:12
(126) Напиши Дата = ТекущаяДата(); и не парься
И кончайте уже зарезервированные слова для переменных использовать, они этого стесняются, краснеют.
131 Jofa
 
25.09.12
12:12
(127)Я тоже так подумал .)
132 cw014
 
25.09.12
12:15
(126) а откуда он у тебя склад берет?
133 Jofa
 
25.09.12
12:15
(0)Есть форме поле дата или период
134 cw014
 
25.09.12
12:16
(126) И вообще, последний вариант мой и все, умываю руки:

Процедура КоманднаяПанельЛимитыЗаполнить(Кнопка)
   
   Запрос = Новый Запрос("ВЫБРАТЬ
   |    Лимиты.Номенклатура КАК Номенклатура,
   |    Лимиты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |    Лимиты.Периодичность КАК Периодичность,
   |    Лимиты.ЛимитОтпуска КАК ЛимитОтпуска,
   |    Лимиты.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |    Лимиты.Коэффициент КАК Коэффициент,
   |    Лимиты.КонтролироватьЛимит КАК КонтролироватьЛимит,
   |    Лимиты.НормаРасходаПоСпецификации КАК НормаРасходаПоСпецификации
   |ПОМЕСТИТЬ Лимиты
   |ИЗ
   |    &Лимиты КАК Лимиты
   |;
   |
   |ВЫБРАТЬ
   |    Лимиты.Номенклатура КАК Номенклатура,
   |    Лимиты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |    Лимиты.Периодичность КАК Периодичность,
   |    Лимиты.ЛимитОтпуска КАК ЛимитОтпуска,
   |    Лимиты.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   |    Лимиты.Коэффициент КАК Коэффициент,
   |    Лимиты.КонтролироватьЛимит КАК КонтролироватьЛимит,
   |    Лимиты.НормаРасходаПоСпецификации КАК НормаРасходаПоСпецификации
   |    ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) КАК ОстатокНПКГ,
   |    ВЫБОР
   |        КОГДА Лимиты.НормаРасходаПоСпецификации = 0
   |            ТОГДА 0
   |        ИНАЧЕ
   |            ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) / Лимиты.НормаРасходаПоСпецификации
   |    КОНЕЦ КАК ОстатокНПШТ,
   |    ВЫБОР
   |        КОГДА Лимиты.НормаРасходаПоСпецификации = 0
   |            ТОГДА 0
   |        ИНАЧЕ
   |            Лимиты.ЛимитОтпуска/ Лимиты.НормаРасходаПоСпецификации
   |    КОНЕЦ КАК ВыпускПлановый,
   |    Лимиты.ЛимитОтпуска - ВЫБОР
   |        КОГДА Лимиты.НормаРасходаПоСпецификации = 0
   |            ТОГДА 0
   |        ИНАЧЕ
   |            ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) / Лимиты.НормаРасходаПоСпецификации
   |    КОНЕЦ КАК ПлановаяПотребность
   |ИЗ
   |    Лимиты КАК Лимиты
   |    ЛЕВОЕ СОЕДИНЕНИЕ
   |        РегистрНакопления.ТоварыОрганизаций.Остатки(, Склад = &Склад И Номенклатура В(&МассивНоменклатуры)) КАК ТоварыОрганизацийОстатки
   |        ПО Лимиты.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура
   |;
   |
   |УНИЧТОЖИТЬ Лимиты");
   Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   Запрос.УстановитьПараметр("Лимиты", Лимиты.Выгрузить());
   Запрос.УстановитьПараметр("Склад", Склад);
   Запрос.УстановитьПараметр("МассивНоменклатуры", Лимиты.ВыгрузитьКолонку("Номенклатура"));
   Лимиты.Загрузить(Запрос.Выполнить().Выгрузить());
   
КонецПроцедуры
135 Wolfily
 
25.09.12
12:16
ЭлементыФормы.Склад.Значение, в свою очередь сюда попадает значение (в обработку) из документа (из которого вызывается обработка)
136 Jofa
 
25.09.12
12:16
(130)Просто я незнаю как у него параметр дата задан ..
137 cw014
 
25.09.12
12:17
(136) Понятно. А вот поле "Данные" у элемента "Склад" на форме что содержит?
138 Wolfily
 
25.09.12
12:18
Значение в смысле?
139 cw014
 
25.09.12
12:18
Смысл в значении...
140 Jofa
 
25.09.12
12:19
(137)Незнаю что .. Это у (0) Нужно спраштвать
141 Wolfily
 
25.09.12
12:19
Дошло)
142 Wolfily
 
25.09.12
12:20
В Данные - Склад написанно
143 Jofa
 
25.09.12
12:20
(0)Поле Склад какой тип Имеет
144 Wolfily
 
25.09.12
12:21
Тип затенен, видно только - Справочник.Ссылка.Склад
145 cw014
 
25.09.12
12:21
(144) У поля на форме есть свойство "Данные". Что в этом поле?
146 Wolfily
 
25.09.12
12:21
"Склад" так и написано)
147 Wolfily
 
25.09.12
12:22
{Обработка.РасчетЛимитовОтпуска.Форма.ФормаОсновная.Форма(638)}: Ошибка при вызове метода контекста (Выполнить)
   Лимиты.Загрузить(Запрос.Выполнить().Выгрузить());
по причине:
{(24, 5)}: Синтаксическая ошибка "ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0)"
<<?>>ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) КАК ОстатокНПКГ,

Вот такая ошибка при использовании ВТ
148 Jofa
 
25.09.12
12:22
(146)Он спрашивает про форму см.Свойство формы
149 cw014
 
25.09.12
12:23
(147) А полный код ошибки дашь?
150 Wolfily
 
25.09.12
12:23
Блин, я понял это) Я скриншот бы прислал, но никак)) Данные: Склад Тип значения: Справочник.Ссылка.Склад
151 Wolfily
 
25.09.12
12:24
Больше ничего, я не вру)
152 cw014
 
25.09.12
12:24
(150) - в предыдущей строке в конце запятую поставь - забыл
153 cw014
 
25.09.12
12:24
|    Лимиты.НормаРасходаПоСпецификации КАК НормаРасходаПоСпецификации,
154 Jofa
 
25.09.12
12:25
ПКМ по форме свойство
155 Jofa
 
25.09.12
12:26
Там смори Данные
156 Wolfily
 
25.09.12
12:27
Джофа я все понимаю) У поля Склад Данные - Склад))
157 cw014
 
25.09.12
12:28
(156) - сделал как я сказал? Заработало?
158 Jofa
 
25.09.12
12:28
Да забудь ты про поле Склад ПКМ по шапке формы своство
159 Wolfily
 
25.09.12
12:28
Да, остатки считает, только не вычитает...
160 Wolfily
 
25.09.12
12:29
ОбработкаОбъект)))
161 Jofa
 
25.09.12
12:29
а дальше
162 Jofa
 
25.09.12
12:30
ТипЗначения
163 Wolfily
 
25.09.12
12:30
ОбработкаОбъект.РасчетЛимитовОтпуска
164 Jofa
 
25.09.12
12:31
конфа какая?
165 Wolfily
 
25.09.12
12:32
1.3 УППшка
166 Jofa
 
25.09.12
12:32
(0)Тебе нужно кажи десаннтной сьесть чтобы утолщица ..)
167 cw014
 
25.09.12
12:32
(159) что не вычитает?
168 Wolfily
 
25.09.12
12:34
Сек...)
169 Wolfily
 
25.09.12
12:35
Строка.ПлановаяПотребность = Строка.ЛимитОтпуска-Строка.ОстатокНПКГ

Вот этой строчки в запросе не найду
170 Wolfily
 
25.09.12
12:35
Джофа, что-что?:)
171 cw014
 
25.09.12
12:36
(169)     |    Лимиты.ЛимитОтпуска - ВЫБОР
   |        КОГДА Лимиты.НормаРасходаПоСпецификации = 0
   |            ТОГДА 0
   |        ИНАЧЕ
   |            ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) / Лимиты.НормаРасходаПоСпецификации
   |    КОНЕЦ КАК ПлановаяПотребность
172 cw014
 
25.09.12
12:36
Тьфу
173 cw014
 
25.09.12
12:37
Вот когда научишься обзывать нормально поля - тогда и можно будет что то решить с одного раза
174 cw014
 
25.09.12
12:37
Вместо кода (171) делай
| Лимиты.ЛимитОтпуска - ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) КАК ПлановаяПотребность,
175 Wolfily
 
25.09.12
12:37
Дурак я))) ПРошу прощени  все работает!)))
176 Wolfily
 
25.09.12
12:38
Огромное спасибо всем!!! Одной проблемой меньше)))
177 Wolfily
 
25.09.12
12:38
Здесь можно пиво передать как-нибудь?)))
178 Deon
 
25.09.12
12:38
Урррра! Бинго!!!! Заработало!!!!!!!!
179 Jofa
 
25.09.12
12:39
Можно
180 Jofa
 
25.09.12
12:42
На Сотку кидай по 300р на нос
181 Jofa
 
25.09.12
12:48
все в приват ушли?
182 Segate
 
25.09.12
12:58
Я думаю, про пиво - вопрос был риторический ))
Зато человек познакомился с двумя методами обработки ТЧ. Узнал новое про запросы, типы данных, менеджер Временных таблиц, И еще много всего вкусного )
183 Wolfily
 
25.09.12
13:01
Я на эмоциях!!! Перевариваю все, что узнал))) Столько нервов вам вымотал, ппц наверное)))
184 Jofa
 
25.09.12
13:07
Истина - рождается в споре
185 Jofa
 
25.09.12
13:14
(183) да не очень . .
186 Jofa
 
25.09.12
13:21
Мозги по размяли
187 cw014
 
25.09.12
13:58
(177) Реквизиты банковские выслать? :)
188 Fedot200
 
25.09.12
14:55
(184) Из двух спорящих один дурачок, а другой негодяй. Негодяй знает истину, а дурачок думает что он знает истину. Как-то так. :-)
ЗЫ
Спасибо, некоторые моменты интересны были.
189 Jofa
 
25.09.12
15:05
(188)Не факт Истину может знать тот и другой только видеть её по разному ..
190 Fedot200
 
25.09.12
15:15
(189) Тогда это не спор, а обсуждение получается.