Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 02:01

Расход\Приход 8.0

Автор warshadow, 24 фев 2011, 19:42

0 Пользователей и 1 гость просматривают эту тему.

warshadow

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

Klyacksa

Приведите код после выполнения запроса.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

warshadow

//документ РеализацияКнигКонтрагенту (расход)
Процедура ОбработкаПроведения(Отказ, Режим)
Для Каждого ТекСтрокаТаблРеализКниКонтр Из ТаблРеализКниКонтр Цикл

Запрос = Новый Запрос(
    "ВЫБРАТЬ
  | РеализацияКнигКонтрагентуТаблРеализКниКонтр.НаименованиеКниги,
  | РеализацияКнигКонтрагентуТаблРеализКниКонтр.Количество КАК КоличествоПоДокументу,
  | ЕСТЬNULL(ТаблРеализКниКонтрОстатки.КоличествоОстаток, 0) КАК КоличествоНаСкладе
  |      ИЗ
  | Документ.РеализацияКнигКонтрагенту.ТаблРеализКниКонтр КАК РеализацияКнигКонтрагентуТаблРеализКниКонтр
  |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПоступлениеРеализацияСписаниеКниг.Остатки КАК ТаблРеализКниКонтрОстатки
  |    ПО РеализацияКнигКонтрагентуТаблРеализКниКонтр.НаименованиеКниги = ТаблРеализКниКонтрОстатки.НаименованиеКниги
  |   ГДЕ
  | РеализацияКнигКонтрагентуТаблРеализКниКонтр.Ссылка = &Ссылка");
 
  Запрос.УстановитьПараметр("Ссылка",Ссылка);
  Результат = Запрос.Выполнить();
       
                  
      
      // регистр ПоступлениеРеализацияСписаниеКниг Расход
      Движение = Движения.ПоступлениеРеализацияСписаниеКниг.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.НаименованиеКниги = ТекСтрокаТаблРеализКниКонтр.НаименованиеКниги;
      Движение.Издательство = ТекСтрокаТаблРеализКниКонтр.Издательство;
      Движение.Количество = ТекСтрокаТаблРеализКниКонтр.Количество;
   КонецЦикла;
   // записываем движения регистров
   Движения.ПоступлениеРеализацияСписаниеКниг.Записать();
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

warshadow

Я понимаю в этом запросе:

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

Klyacksa

Вот Вы в Результат получили некое значение. Во-первых, Вы его нигде не используете (как по-вашему, программа же должна где-то сравнивать остаток на складе и количество, которое вы хотите списать? :) ).
Во-вторых, Вы на каждом шаге цикла выполняете один и тот же запрос. Спрашивается, зачем?))
И в-третьих, Вы не правильно получили результат запроса.
Должно быть
Выборка=Запрос.Выполнить().Выбрать();
или
Выборка=Запрос.Выполнить().Выгрузить();

В итоге должно быть так:
1) Получили данные из запроса
2) Пробегаем по всем записям результата запроса
3) По каждому товару сравниваем остаток по документу с остатком на складе и если хотим списать больше - ругаться и не давать провести документ.
4) Если же списываем допустимое количество, то добавляем движение
5) после цикла записываем все получившиеся движения в базу.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

А вы запрос в конструкторе делаете или ручками?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

warshadow

Ручками.., вы не подскажите где конструктор ?)
а то уже голову сломал, никак не могу найти

Klyacksa

Правой кнопкой мыши жмете на тексте запроса (или на любом другом, но тогда запрос будет в конструкторе пустой), и выбираете пункт "Конструктор запроса" :)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

warshadow

Спасибо )) Только теперь надо разобраться, что куда вставлять и это по ходу будет очень долго

warshadow

ЦитироватьВот Вы в Результат получили некое значение. Во-первых, Вы его нигде не используете (как по-вашему, программа же должна где-то сравнивать остаток на складе и количество, которое вы хотите списать?  ).
Во-вторых, Вы на каждом шаге цикла выполняете один и тот же запрос. Спрашивается, зачем?))
И в-третьих, Вы не правильно получили результат запроса.
Должно быть
Код:
Выборка=Запрос.Выполнить().Выбрать();
или
Код:
Выборка=Запрос.Выполнить().Выгрузить();

В итоге должно быть так:
1) Получили данные из запроса
2) Пробегаем по всем записям результата запроса
3) По каждому товару сравниваем остаток по документу с остатком на складе и если хотим списать больше - ругаться и не давать провести документ.
4) Если же списываем допустимое количество, то добавляем движение
5) после цикла записываем все получившиеся движения в базу.

Так получается, сначала идет некий запрос,потом условие я так понимаю?

Теги:
Рейтинг@Mail.ru

Поиск