Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/37: Рейтинг темы: голосов - 37, средняя оценка - 4.76
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
1
1C 8.x

Не понимаю задание (приход-расход партий товаров)

10.10.2012, 18:56. Показов 7036. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Я делаю учебное задание и ни разу не сталкивался с некоторыми вещами, которые нужно сделать(в прошлом опыте не сталкивался). А задание на завтра нужно сделать.

Не понятно вот что:
1.Создать справочник Партии : рекв. Дата, Цена(Ну тут понятно).

2.В регистр ОстаткиТоваров добавить измерение Партия (ну что сделать - понятно. А вот для чего это измерение нужно не понятно, потому не понятно что туда заносить при проводке).

3.Документ ПриходнаяНакладная формирует партию автоматически (как я понял приходная накладная это и есть партия товара. Но ведь в этой Приходной будет 100 единиц, а в другой 542 единицы ... что ж получается и эта и другая накладные являются партиями товара?)

4.В документ РасходнаяНакладная (по этой накладной отгружаются товары) добавить реквизит Партия . Пользователь выбирает партию из списка (список я так понял хранится в регистре ОстаткиМатериалов). (Так это получается что мы можем отгружать только в том количестве которое к нам пришло? Например если по первой Приходной мы завезли на склад 100 единиц товара, а по второй 554 единицы, то соответственно мы можем отгружать по Расходной только 100 и 554 ? а если нам надо 300 отгрузить? )

Подскажите, пожалуйста, кто знает, где можно почитать про партии и про то, как с ними в 1С обращаться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2012, 18:56
Ответы с готовыми решениями:

Приход/Расход/Остаток товаров - выборка
Здравствуйте, есть таблицы Нужно написать запрос. Структура запроса: Наименование...

Приход/расход и идентификация товаров путем чтения штрих-кода (ООП)
Добрий день. Задали написать проект, но не могу понять несколько моментов. Может кто разъяснит: 1)...

Приход/Расход
Доброго времени суток. пишу курсовую по учету товаров,подскажите,пожалуйста,как сделать так,если...

Расход\Приход 8.0
Добрый день! Начал не так давно программировать в 1С 8.0, наткнулся на такую трудность - у меня...

22
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
10.10.2012, 19:45 2
http://ru.wikipedia.org/wiki/%... 1%84%D0%BE

Цитата Сообщение от CJS Посмотреть сообщение
2.В регистр ОстаткиТоваров добавить измерение Партия (ну что сделать - понятно. А вот для чего это измерение нужно не понятно, потому не понятно что туда заносить при проводке).
Создавать элемент справочника "Партии" и записывать в это измерение.

Цитата Сообщение от CJS Посмотреть сообщение
3.Документ ПриходнаяНакладная формирует партию автоматически (как я понял приходная накладная это и есть партия товара.
Создаете элемент справочника "Партии".

Цитата Сообщение от CJS Посмотреть сообщение
Но ведь в этой Приходной будет 100 единиц, а в другой 542 единицы ... что ж получается и эта и другая накладные являются партиями товара?)
Да это так. И обычно сам документ и используют в качестве партий, в вашем случае почему то создается элемент справочника.

Цитата Сообщение от CJS Посмотреть сообщение
(Так это получается что мы можем отгружать только в том количестве которое к нам пришло? Например если по первой Приходной мы завезли на склад 100 единиц товара, а по второй 554 единицы, то соответственно мы можем отгружать по Расходной только 100 и 554 ? а если нам надо 300 отгрузить? )
Чтобы отгрузить 300 Вы выбираете 100 из первой партии и 200 из второй. В чем проблема то? Вам нужно контролировать, что нельзя отгрузить больше чем есть в партии и все.
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
10.10.2012, 20:45  [ТС] 3
Цитата Сообщение от Fenomen Посмотреть сообщение
Создавать элемент справочника "Партии" и записывать в это измерение.
Вот здесь 2 вопроса. Правильно ли я понимаю:
1. Создается справочник Партии, который при поступлении новой партии пополняется очередной строкой. А при расходовании партии, строка относящаяся к расходованной партии удаляется.
2. В регистр накопления просто записывается номер партии и Цена партии.
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
10.10.2012, 21:03 4
Цитата Сообщение от CJS Посмотреть сообщение
А при расходовании партии, строка относящаяся к расходованной партии удаляется.
Нет он не удаляется. Как Вы его удалите если он у Вас будет в движениях?
Цитата Сообщение от CJS Посмотреть сообщение
2. В регистр накопления просто записывается номер партии и Цена партии.
Туда записывается ссылка на элемент справочника.
1
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
10.10.2012, 22:30 5
Не зря хитрый иезуит со справочником дал задание. Если В один день двумя поступлениями пришла номенклатура по одной цене - это будет одна партия. Я думаю, это ловушка, потому и не по-людски предлагается партионный учет. А Дата - это чтобы ФИФО или ЛИФО, а не абы как.
основная задача партионного учета - определить реальную себестоимость товара, а потому и прибыль. Поступление записывается в регистр порциями, которые определяет измерение - партия. Дата принципиальна, поскольку прибыль считается от: средней цены или по очереди поступления в прямом или обратном порядке (FirstInFirstOut или LastIFO). Понятно, что без изма Партия, определяющего нужную порцию поступления, налоговая нас сгноит.
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
11.10.2012, 10:53  [ТС] 6
Спасибо. Сегодня буду пробовать.

Добавлено через 2 часа 24 минуты
При проведении ПриходнойНакладной добавляю запись вот так(тут все ОК) :
1C
1
2
3
4
5
6
    
    НовыйЭлемент=Справочники.Партии.СоздатьЭлемент();
    НовыйЭлемент.Наименование="приходная накладная";
    НовыйЭлемент.Дата=Дата;
    НовыйЭлемент.Цена=Сумма;
    НовыйЭлемент.Записать();
Далее, здесь же в проведении в регистрНакопления , в измерение Партия добавляю этот элемент (измерение Партия имеет тип СправочникСсылка.Партии) :
1C
1
Движение.Партия = НовыйЭлемент;
Строку в справочник Партии оно добавило, а вот в измерение Партия регистра накопления оно ничего не добавило - пустое поле.

Что-то ничего не понимаю - что там должно отобразиться? Правильно ли я заношу?

Далее нужно будет отбирать по Дате и по Сумме эту запись из регистра накопления.
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
11.10.2012, 12:06 7
1C
1
Движение.Партия = НовыйЭлемент.Ссылка;
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
11.10.2012, 12:44  [ТС] 8
Цитата Сообщение от Dethmontt Посмотреть сообщение
1C
1
Движение.Партия = НовыйЭлемент.Ссылка;
Спасибо, сработало - записывает в регистрНакопления в измерение Партия созданную Партию.

Должно было и дальше сработать , но оно почему-то не хочет.

А суть такова что в РасходнойНакладной я выбираю партию (реквизит Партия, с типом СправочникСсылка.Партии).
ПриИзменении Партии, должны автоматически заполняться другие реквизиты РасходнойНакладной. Заполняться они должны строкой из регистраНакопления , той строкой, которая соответствует выбранной Партии.

В отладчике функция вызываемая на сервере отрабатывает и получает нужные значения. Но что-то не то ...

Вот такие функции:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
&НаСервере
 Функция  ВыборкаПоПартии (Объект1)     
ЗаписиРегистраНакопления = РегистрыНакопления.ОстатокТМЦ;
ОтборПоПартии = Новый Структура("Партия" );
ОтборПоПартии.Вставить( "Партия",Объект1.Ссылка);
//ОтборПоПартии.Вставить("ВидДвижения","Приход");
Элемент1 = ЗаписиРегистраНакопления.Выбрать(ОтборПоПартии);
 Возврат   Элемент1;
 КонецФункции
 
 
 
&НаКлиенте
Процедура ПартияПриИзменении(Элемент)
    СтрокаРегНакоп = ВыборкаПоПартии(Объект.Партия)  ;
    СтрокаТчРасход = Элементы.Расход.ТекущиеДанные;
    СтрокаТчРасход.ТМЦ= СтрокаРегНакоп.ТМЦ;
КонецПроцедуры
Вот такую ошибку выдает:
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(81)}: Ошибка при вызове метода контекста (ВыборкаПоПартии)
СтрокаРегНакоп = ВыборкаПоПартии(Объект.Партия) ;
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'РегистрНакопленияВыборка.ОстатокТМЦ'
Не пойму что не так - вроде бы можно передавать в функцию , типы одинаковые у реквизита в Документе и у реквизита в регистреНакопления ... функция получения строки регистраНакопления тоже вроде правильно ...

Добавлено через 3 минуты
Пробовал и так (но не помогает) :
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 &НаСервере
 Функция  ВыборкаПоПартии (Объект1)     
ЗаписиРегистраНакопления = РегистрыНакопления.ОстатокТМЦ;
ОтборПоПартии = Новый Структура("Партия" );
ОтборПоПартии.Вставить( "Партия",Объект1); // Теперь здесь не "Объект.Ссылка"
//ОтборПоПартии.Вставить("ВидДвижения","Приход");
Элемент1 = ЗаписиРегистраНакопления.Выбрать(ОтборПоПартии);
 Возврат   Элемент1;
 
КонецФункции
 
 
 
 
&НаКлиенте
Процедура ПартияПриИзменении(Элемент)
//Ниже добавлено УникальныйИдентификатор()
    СтрокаРегНакоп = ВыборкаПоПартии(Объект.Партия.УникальныйИдентификатор())  ; 
    СтрокаТчРасход = Элементы.Расход.ТекущиеДанные;
    СтрокаТчРасход.ТМЦ= СтрокаРегНакоп.ТМЦ;
       //Пер=    Константы.МетодСписанияПартий.Получить();   
КонецПроцедуры
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
11.10.2012, 13:15 9
Зачем вы выборку возвращаете на клиент?
1C
1
2
Элемент1 = ЗаписиРегистраНакопления.Выбрать(ОтборПоПартии);
 Возврат   Элемент1;
Добавлено через 35 секунд
Не проще ли текущиеДанные передать на сервер?
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
11.10.2012, 18:48  [ТС] 10
Цитата Сообщение от Dethmontt Посмотреть сообщение
Зачем вы выборку возвращаете на клиент?
1C
1
2
Элемент1 = ЗаписиРегистраНакопления.Выбрать(ОтборПоПартии);
 Возврат   Элемент1;
Добавлено через 35 секунд
Не проще ли текущиеДанные передать на сервер?
Да , действительно проще. Но только ругается потом.
Вот так переделал:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
&НаКлиенте
Процедура ПартияПриИзменении(Элемент)
    СтрокаТчРасход = Элементы.Расход.ТекущиеДанные;
    ЗаполнениеТабЧасти(Объект.Партия, СтрокаТчРасход)  ;    
КонецПроцедуры
 
 
 
 &НаСервере
 Процедура   ЗаполнениеТабЧасти(Объект1,СтрокаТч)      
ЗаписиРегистраНакопления = РегистрыНакопления.ОстатокТМЦ;
ОтборПоПартии = Новый Структура("Партия" );
ОтборПоПартии.Вставить( "Партия",Объект1.ссылка);
ОтборПоПартии.Вставить("ВидДвижения","Приход");
Элемент1 = ЗаписиРегистраНакопления.Выбрать(ОтборПоПартии);
СтрокаТч.ТМЦ= Элемент1.ТМЦ; //Добавляю в ту табЧасть, которую передал сюда
 
КонецПроцедуры
Вот так ругнулось:
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(80)}: Значение не является значением объектного типа (ТМЦ)
СтрокаТч.ТМЦ= Элемент1.ТМЦ;
Ругнулось именно на СтрокаТч.ТМЦ, я проверял.

А еще пробовал не передавать табличную часть, а получить ее на сервере (не проходит):
1C
1
СтрокаТабЧасти = Элементы.Расход.ТекущиеДанные;
А еще вот так пробовал:
1C
1
/ЭтаФорма.Объект.Расход. // пробовал разные функции выбрать, но не получается их реализовать

Подскажите где можно почитать об этом?
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
11.10.2012, 21:31 11
Цитата Сообщение от CJS Посмотреть сообщение
Вот так переделал:
Код 1C

&НаКлиенте
Процедура ПартияПриИзменении(Элемент)
* * СтрокаТчРасход = Элементы.Расход.ТекущиеДанные;
* * ЗаполнениеТабЧасти(Объект.Партия, СтрокаТчРасход) *;* *
КонецПроцедуры
&НаСервере
*Процедура * ЗаполнениеТабЧасти(Объект1,СтрокаТч) * * *
ЗаписиРегистраНакопления = РегистрыНакопления.ОстатокТМЦ;
ОтборПоПартии = Новый Структура("Партия" );
ОтборПоПартии.Вставить( "Партия",Объект1.ссылка);
ОтборПоПартии.Вставить("ВидДвижения","Приход");
Элемент1 = ЗаписиРегистраНакопления.Выбрать(ОтборПоПартии);
СтрокаТч.ТМЦ= Элемент1.ТМЦ; //Добавляю в ту табЧасть, которую передал сюда
КонецПроцедуры
Вот так ругнулось:
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(80)}: Значение не является значением объектного типа (ТМЦ)
СтрокаТч.ТМЦ= Элемент1.ТМЦ;
Ругнулось именно на СтрокаТч.ТМЦ, я проверял.
А еще пробовал не передавать табличную часть, а получить ее на сервере (не проходит):

СтрокаТабЧасти = Элементы.Расход.ТекущиеДанные;
А еще вот так пробовал:

/ЭтаФорма.Объект.Расход. // пробовал разные функции выбрать, но не получается их реализовать
Подскажите где можно почитать об этом?
Начнем с того, что у Вас неправильная логика работы. Судя по зданию пользователь должен выбрать партию из списка. Причем по ней должен быть остаток. А вы сейчас почему то при изменении партии, записываете на ее место первую попавшуюся.
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
11.10.2012, 22:05  [ТС] 12
Цитата Сообщение от Fenomen Посмотреть сообщение
Начнем с того, что у Вас неправильная логика работы. Судя по зданию пользователь должен выбрать партию из списка. Причем по ней должен быть остаток. А вы сейчас почему то при изменении партии, записываете на ее место первую попавшуюся.
Там получается в поле Партии пользователь из списка выбирает партию ... и вот во время того, как он выбрал партию, я обрабатываю это событие. То есть обрабатывается та партия, которую пользователь выбрал.

Кстати , вот такое НаКлиенте тоже не срабатывает:
1C
1
Объект.Расход.Получить(0)
Это , напомню, у меня имя табличнойЧасти - Расход .
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
11.10.2012, 22:09 13
Цитата Сообщение от CJS Посмотреть сообщение
То есть обрабатывается та партия, которую пользователь выбрал.
Что значит обрабатывается? Чего Вы хотите добиться после того, как пользователь выбрал партию?
0
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
11.10.2012, 22:14  [ТС] 14
Цитата Сообщение от Fenomen Посмотреть сообщение
Чего Вы хотите добиться после того, как пользователь выбрал партию?
Если пошагово, то вот так:
1. Пользователь выбирает нужную партию из списка.
2. Система начинает обработку события ПартияПриИзменении. В обработчике этого события система заполняет табличную часть документа (один из реквизитов табличной части это ТМЦ).
2.1. Система выбирает в регистре накопления нужную строку(это вроде работает).
2.2. Система заполняет табличную часть документа теми данными, которые выбрала из регистра.
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
11.10.2012, 22:54 15
Цитата Сообщение от CJS Посмотреть сообщение
2. Система начинает обработку события ПартияПриИзменении. В обработчике этого события система заполняет табличную часть документа (один из реквизитов табличной части это ТМЦ).
2.1. Система выбирает в регистре накопления нужную строку(это вроде работает).
2.2. Система заполняет табличную часть документа теми данными, которые выбрала из регистра.
Зачем? Ведь пользователь уже выбрал партию!
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
12.10.2012, 08:57 16
Цитата Сообщение от CJS Посмотреть сообщение
В обработчике этого события система заполняет табличную часть документа
Это Вы, батенька, со вводом на основании попутали. У партии другое предназначение: реализуется из партии несколько раз по разным ценам. Т.е. партия - это не комплект номенклатуры. Это ОДНА номенклатурина, с определёнными параметрами поставки, нужными при отгрузке.
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
12.10.2012, 09:50  [ТС] 17
Цитата Сообщение от Fenomen Посмотреть сообщение
Зачем? Ведь пользователь уже выбрал партию!
А по условию в справочнике хранится только Цена партии и Дата. А остальное из РегистраНакопления нужно выбирать.

Добавлено через 5 минут
Цитата Сообщение от duk337 Посмотреть сообщение
Это Вы, батенька, со вводом на основании попутали. У партии другое предназначение: реализуется из партии несколько раз по разным ценам. Т.е. партия - это не комплект номенклатуры. Это ОДНА номенклатурина, с определёнными параметрами поставки, нужными при отгрузке.
Вот это я упустил из виду, потом обязательно нужно учесть. Сейчас хотя бы заполнить ТабЧасть документа РасходнаяНакладная.

Ох скока ж тут нужно суметь! А пользователь же еще будет вводить в расходной разное количество .... а количество будет превышать имеющееся в партии и тогда должно браться из другой партии .... а из другой партии(той же номенклатуры) это уже другая цена ...


А нет ли у кого-то примера реализации этого дела? а то предчувствую что не разберусь ...

Добавлено через 35 минут
Цитата Сообщение от CJS Посмотреть сообщение
А нет ли у кого-то примера реализации этого дела? а то предчувствую что не разберусь ...
Опешил , в интернете хватает примеров. Буду переделывать.
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
12.10.2012, 09:58 18
Цитата Сообщение от CJS Посмотреть сообщение
А остальное из РегистраНакопления нужно выбирать.
Остальное - это что?
0
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
12.10.2012, 11:13  [ТС] 19
Цитата Сообщение от Fenomen Посмотреть сообщение
Остальное - это что?
Вот такие поля: Склад, Наименование ТМЦ, Количество

Добавлено через 4 минуты
Вот так еще попробовал:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 &НаСервере
 Процедура   ЗаполнениеТабЧасти(Объект1)       
     
     ЗаписиРегистраНакопления = РегистрыНакопления.ОстатокТМЦ;
ОтборПоПартии = Новый Структура("Партия" );
ОтборПоПартии.Вставить( "Партия",Объект1.ссылка);
Элемент1 = ЗаписиРегистраНакопления.Выбрать(ОтборПоПартии);
НоваяСтрока = Объект.Расход.Добавить();
                   
    Для Каждого Строка Из Объект.Расход Цикл
    Строка.ТМЦ=Элемент1.ТМЦ; 
    Сообщить(Строка.ТМЦ);
    Сообщить(Элемент1.ТМЦ);
КонецЦикла;
 
КонецПроцедуры
 
 
 
&НаКлиенте
Процедура ПартияПриИзменении(Элемент)
    ЗаполнениеТабЧасти(Объект.Партия)  ;  
КонецПроцедуры
Ошибок никаких не выдает, даже добавляет пустую строку в ТабЧасть.
А пустую от того добавляет, что не определено Элемент1 ... ничего не понимаю!
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
12.10.2012, 11:24 20
Цитата Сообщение от CJS Посмотреть сообщение
Вот такие поля: Склад, Наименование ТМЦ, Количество
Либо задача поставлена неправильно, либо вы ее понимаете не правильно.

Представьте реальную ситуацию:
Менеджер отгружает товар. Как он по Вашей партии поймет что, он отгружает?
Обычно все идет наоборот. Пользователь указывает, Номенклатуру, Склад, а потом выбирает партию из которой нужно его продать, причем система должна дать ему список партий по этой номенклатуре и складу и только те по которым есть остаток.
1
12.10.2012, 11:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2012, 11:24
Помогаю со студенческими работами здесь

Приход/Расход в 1C 7.7
Здравствуйте, помогите пожалуйста! У меня такой вопрос: Есть склад, припустим на него пришло 100...

Расход-приход
Здравствуйте. Проблема в следующем. Имеется таблица со счетами , приход, расход. Хочу сделать...

Приход - Расход
Помогите пожалуйста с отчетом. Как сделать в нем чтобы выводилась разница между ПРИХОДОМ и РАСХОДОМ...

Приход/Расход 1С 7.7
Здравствуйте, помогите новачку, пожалуйста! У меня такой вопрос: Есть склад, припустим на него...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru