Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
19 Янв 2018, 08:07
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Новичок!!!! Товары на складе  (Прочитано 5234 раз)

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

Оффлайн MevMix

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-21
  • Сайт: 
  • Профессия: Программист 8.1
Добрый день
В 1С программирую совсем недавно.
Хотел спросить Вас
хочу создать простейшую конфигурация "Товар на складе"
Справочники : Клиент, Склад, Номенклатура
Документы: РеализаяТоваров, ПоступлениеТоваров

Регистры, вот тут сложновато
Какие надо регистры создать, для отображения товара на складе и учет его продаж,
ну если пришло 10, то и продать 10, а не 11
Хотелось бы так же чтоб количество отображалось в справочнике Номенклатура

Может у кого есть примерчик поделиться или подсказать как решить вопрос?

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


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Регистр остатков ТоварыНаСкладе
Измерения: Номенклатура, Склад
Ресурсы: Количество, Сумма

Регистр оборотов Продажи
Измерения: Номенклатура, Клиент
Ресурсы: Количество, Сумма

Проверка остатка: в процедуре ОбработкаПроведения документа РеализацияТовара.

Для добавления колонки КоличествоНаСкладе надо настраивать ФормуСписка справочника Номенклатура.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Sinsinmin

  • ***
  • Сообщений: 116
  • РЕПУТАЦИЯ: 9
  • КПД: 8%
  • Регистрация: 2010-08-11
  • Сайт: 
Есть книженция Радченко "Практическое руководство разработчика". Очень отлично подходит для новичка.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Создание отчета о движении номенклатуры (начост, приход, расход, коност) - в самом начале книги "Разработка сложных отчетов".
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн MevMix

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-21
  • Сайт: 
  • Профессия: Программист 8.1
Сделал оба регистра, делал по примеру книги Радченко, но что то не работает, документы проводит, но приход -10 расход 15 и все оК
даже не ругнеться!!!
Вот прилагаю код



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

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

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Ну как минимум, перед строчкой
 ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
надо поставить
КонецЕсли;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

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

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Точку останова вот сюда
"Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда"
и проверяйте себе чему у вас Остаток и ВыборкаРезультатаЗапроса.Количество равны.

Плюс еще режим проведения проверьте.

Вот эти строки рекомендуется убрать
"Движения.ОстаткиМатериалов.Записать();
 Движения.Продажи.Записать();"

Вопрос на засыпку, над которым сам как-то сломал голову ;)
Что будет если в табличной части будет НЕСКОЛЬКО строк одной и той же номенклатуры?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Еще вопрос:
зачем Вам вот это
"|      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
                   |            &МоментВремени,
                   |            Номенклатура В (&СписокНоменклатурыДокумента)
                   |               И Склад = &СкладВДокументе) КАК ОстаткиМатериаловОстаткиНаСкладе
                   |      ПО РеализацияТоваровПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстаткиНаСкладе.Номенклатура"

если Вы этим не пользуетесь?
Хотя по логике этой таблицей и надо пользоваться.
То есть таблицей остатка по конкретному складу...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Sinsinmin

  • ***
  • Сообщений: 116
  • РЕПУТАЦИЯ: 9
  • КПД: 8%
  • Регистрация: 2010-08-11
  • Сайт: 
Лучший способ проведения простых документов это добавить на форму табличную часть которой присвоить типзначения РегистрПроведенияДокумента. В документе поставить запрет проведения и по позициирегистратора в пределах года. И вуаля. Вы будете добавлять данные сразу в регистр. Обычно если два или один регистр, то так и делаю.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Ага. Взять удалить все документы. Создать один - РучноеРедактированиеРегистра.
И заполнять только его. И вуаля.

А как быть с удалением движений конкретных документов?
Заходить в каждый и чистить табличную часть?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
98 Сообщений
AIFrame
77 Сообщений
alex0402
32 Сообщений
kiksi
24 Сообщений
pavl_vs
23 Сообщений
andron81_81
18 Сообщений
alexandr_ll
17 Сообщений
Norfolk
15 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений
Orion
12 Сообщений

* Кто онлайн

  • Точка Гостей: 442
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal