Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как из регистра накопления получить стоимость для расх. накладной?          
MihaSerb Подменю пользователя
сообщение 08.02.13, 13:19
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Подскажите мне пожалуйста направление для размышления, мне необходимо чтобы при создание документа Расходная накладная списывался товар со складов по себестоимости, определяет стоимость товара в регистре с измерениями (Сумма и количество). Как это возможно реализовать?

logist Подменю пользователя
сообщение 08.02.13, 13:23
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 08.02.13, 13:25
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4549 раз
Рейтинг: 3678.1

Не "измерения", а ресурсы; не "при создании документа", а при проведении. faceoff.gif

Советую ознакомиться и выучить хотя бы базовую терминологию, а то ой как тяжело вам будет и помочь никто нормально не поможет. То что вы спрашиваете - это основы основ, которые описаны во многих книгах. Посмотрите книгу Радченка, много интересного для себя откроете.

MihaSerb Подменю пользователя
сообщение 08.02.13, 16:57
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 08.02.13, 14:25) *
Не "измерения", а ресурсы; не "при создании документа", а при проведении. faceoff.gif

Советую ознакомиться и выучить хотя бы базовую терминологию, а то ой как тяжело вам будет и помочь никто нормально не поможет. То что вы спрашиваете - это основы основ, которые описаны во многих книгах. Посмотрите книгу Радченка, много интересного для себя откроете.


Я ее уже прочитал, перелапатил кучу форумов и статей, в книге есть похожее задание я в нем разобрался, но мое сделать не получается.




ВЫ тоже не сразу же научились на велосипеде ездить.

Vofka Подменю пользователя
сообщение 08.02.13, 16:59
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4549 раз
Рейтинг: 3678.1

Цитата(MihaSerb @ 08.02.13, 16:57) *
Я ее уже прочитал, перелапатил кучу форумов и статей, в книге есть похожее задание я в нем разобрался, но мое сделать не получается.

Ну так что, по быстренькому стелепатировать что вам надо и чем ваше задание отличается от того, что в книге и написать готовое решение? Короче, из вашего вопроса непонятно нифига. Я могу сейчас написать готовый код, но вопросов станет ещё больше, а ещё в результате окажется, что код не правильный, т.к. у вас там какие-то приколы свои.

MihaSerb Подменю пользователя
сообщение 08.02.13, 17:06
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Ну и какой у меня тогда выход, может тогда подскажите что мне еще можно почитать чтобы более тщательней ознакомиться с 1С.

Vofka Подменю пользователя
сообщение 08.02.13, 17:20
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4549 раз
Рейтинг: 3678.1

Я вам рекомендую описать проблему человеческим языком. Если затрудняетесь - вставьте сюда участок из Радченко и скажите чем он вам не подходит. Вообще у нас в разделе для программистов, в большинстве случаев общаются с использованием кода. Вы хоть одну строчку написали? Нет? В чем конкретно проблема?

Zaval Подменю пользователя
сообщение 08.02.13, 17:28
Сообщение #8

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Хм...
1. Если у Вас в регистре по товару есть ОстатокКво и ОстатокСумма, а Вам нужно списать КвоСписания(которое < ОстатокКво), то ничего, кроме КвоСписания и
СуммаСписания = ОстатокСумма/ОстатокКво*КвоСписания

списывать нельзя.
2. А себестоимостью это будет в том случае, если в этом же регистре учтены все затраты, связанные с покупкой, транспортировкой, предпродажной подготовкой, хранением, ..., ..., ... этого товара.

Не замечаете, что связь между 1 и 2 отсутствует как таковая?

ЗЫ. Извините, но столь вольное обращение с терминами не вяжется с "кучей прочитанного" smile.gif

Сообщение отредактировал Zaval - 08.02.13, 17:33

Домовик Подменю пользователя
сообщение 08.02.13, 17:29
Сообщение #9

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

это лабораторная какая-то? в инете они должны быть уже. ищите по ключевым "оперативный учет". есть такие методички по подготовке к сертифицированию программистов 1С, ищите по тому же оперативному учету. и введение в конфигурирование. там объяснения до картинок

MihaSerb Подменю пользователя
сообщение 08.02.13, 17:39
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 08.02.13, 18:20) *
Я вам рекомендую описать проблему человеческим языком. Если затрудняетесь - вставьте сюда участок из Радченко и скажите чем он вам не подходит. Вообще у нас в разделе для программистов, в большинстве случаев общаются с использованием кода. Вы хоть одну строчку написали? Нет? В чем конкретно проблема?





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

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

    Результат = Запрос2.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
             Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

      Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
         ВыборкаДетальныеЗаписи.Сумма = 0;
      Иначе
         ВыборкаДетальныеЗаписи.Цена = ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;
      КонецЕсли;
  
      Движение = Движения.ТоварыНаСкладе.Добавить();

      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

      Движение.Период = Дата;

      Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;

      Движение.Склад = ВыборкаДетальныеЗаписи.Склад;

      Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
      
      Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма;


   КонецЦикла;

   Движения.Записать();




У Радченко отдельный регистр стоимость, а как у меня в задании вывести стоимость я не предполагаю.

Домовик Подменю пользователя
сообщение 08.02.13, 17:57
Сообщение #11

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

у вас цена в запросе - это цена продажи в расходной. вы ей присваиваете себестоимость(путаете) . в запросе нужно сразу добавить поле Себестоимость и формулу(в запросе) СуммаОстаток поделить на Количество остаток.


когда обходите результат выполненного запроса. используете готовое значение Себестоимости. ваш расход равен Себестоимость умножить на Количество(поле из дока).


Но это не все. Есть ньюанс с копейками. Когда количество списываемого равно количеству на остатке, нужно списать просто весь остаток.


если все же без поля себестоимость в запросе
Если ВыборкаДетальныеЗаписи.Количество<ВыборкаДетальныеЗаписи.КоличествоОСтаток Тогда
     Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаОСтаток/ВыборкаДетальныеЗаписи.КоличествоОстаток*ВыборкаДетальныеЗаписи.Количество
Иначе
     Движение.Сумма=ВыборкаДетальныеЗаписи.СуммаОстаток
КонецЕсли;


Сообщение отредактировал Домовик - 08.02.13, 18:12

Спасибо сказали: MihaSerb,

Zaval Подменю пользователя
сообщение 08.02.13, 18:25
Сообщение #12

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Еще и я попробую smile.gif
Цена для РТиУ(Реализации...) устанавливается либо произвольно либо посредством пересчета из другой цены. Можно даже поставить "от фонаря" в самом документе.
Сумма в документе рассчитыватеся из этой цены.
Эта сумма - для учета взаиморасчетов с Контрагентом.
Ни цена, ни сумма документа никак не влияют на себестоимость. Со склада списывается именно себестоимость - остаток по регистру, пересчитанный на проданное количество.

Спасибо сказали: MihaSerb, Домовик,

MihaSerb Подменю пользователя
сообщение 10.02.13, 11:05
Сообщение #13

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Что то все равно нечего не получается, может у мменя есть еще какие-нибудь недачеты.
Движения.ТоварыНаСкладе.Записывать = Истина;
    
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    
    Запрос = Новый Запрос;
    
    // Укажем, какой менеджер временных таблиц использует этот запрос
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;


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

      Запрос.УстановитьПараметр("Ссылка", Ссылка);

      РезультатЗапроса = Запрос.Выполнить();


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

    Результат = Запрос2.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    Движение = Движения.ТоварыНаСкладе.Добавить();

    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    
    Движение.Период = Дата;
    
    Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
    
    Движение.Склад = ВыборкаДетальныеЗаписи.Склад;
    
    Движение.Количество = ВыборкаДетальныеЗаписи.Количество;

    Если ВыборкаДетальныеЗаписи.Количество<ВыборкаДетальныеЗаписи.КоличествоОСтаток Тогда
        
        Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаОСтаток/ВыборкаДетальныеЗаписи.КоличествоОстаток*ВыборкаДетальныеЗаписи.Количество;
  
    Иначе
        
        Движение.Сумма = ВыборкаДетальныеЗаписи.Сумма;
        
    КонецЕсли;

    Движения.Записать();

    КонецЦикла;




Домовик Подменю пользователя
сообщение 11.02.13, 0:22
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

это вопрос уже не по формуле себестоимости, а по самому запросу.

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

первый запрос по имени запрос оставляете в том виде, котором он ранее был. запрос тут для того, чтобы данные из рег остатков выбирались только по номенклатуре вашей расходной.

во втором запросе можно ввести то самое поле себестоимость с формулой. Но тогда Сумма, когда движения пишете, рассчитывайте с учетом этого поля.


если в расходной вы вводите товара больше, чем есть на остатке, то что задача требует? уточняйте, бо тут код по расчету Сумма упрощен.



ничего не получается, это что? вы заходили в отладчик , в цикл вообще заходите? вообще, ставьте на этапах кода "флажки", на какие знаний хватает. или в отладчике точки останова, или использовать сообщить(), или ..

Сообщение отредактировал Домовик - 11.02.13, 0:44

Спасибо сказали: MihaSerb,

MihaSerb Подменю пользователя
сообщение 13.02.13, 15:40
Сообщение #15

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

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

РезультатЗапроса = Запрос.Выполнить();
      
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          
ОбъектДок = Ссылка.Товары.ПолучитьОбъект();
СтрТабЧасти = ОбъектДок.Товары.Добавить();
СтрТабЧасти.Цена = ВыборкаДетальныеЗаписи.Себестоимость;
      
КонецЦикла;


Пользоваться точками остановы у меня не получается, делаю все методом тыка(((.

Домовик Подменю пользователя
сообщение 14.02.13, 8:28
Сообщение #16

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

как точно задание звучит? мало понятно, что вам нужно.

потому-что ранее писали движения по списанию себестоимости, а расчет цены товара от себестоимости в другом месте нужно делать. скорее всего при вводе товара в строке.

Сообщение отредактировал Домовик - 14.02.13, 8:28

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.09.24, 6:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!