|
Движение по регистрам | ☑ | ||
---|---|---|---|---|
0
myr4ik07
09.10.14
✎
11:18
|
Мира вам.
Есть документ Поступление товаров и услуг я сделал, что бы цены которые есть в колонке Цена попадало в карточку Номенклатуры ЦеныНоменклатуры (для типа цен Закупочная) через регистр сведений ЦеныНоменклатуры [CODE]Для Каждого эл Из Товары Цикл Движение = Движения.ЦеныНоменклатуры.Добавить(); Движение.Период = Дата; Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн"); Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000015"); Движение.Номенклатура = эл.Номенклатура; Движение.Цена = эл.Цена; КонецЦикла; [/CODE] все работает но тут появилась еще одна "хотелка", добавил колонку с полем ввода в форме документа где хочу, что бы при вводе в колонке цены (продажная будет) так же эти цены попадали в карточку номенклатуры ЦеныНоменклатуры (Тип цен РозничныйМаг№1, РозничныйМаг№2), что было и сделано [CODE]Для Каждого эл Из Товары Цикл Движение = Движения.ЦеныНоменклатуры.Добавить(); Движение.Период = Дата; Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн"); Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000011"); Движение.Номенклатура = эл.Номенклатура; Движение.Цена = эл.[B]ЦенаПродажная[/B]; // это добавленное поле КонецЦикла; Для Каждого эл Из Товары Цикл Движение = Движения.ЦеныНоменклатуры.Добавить(); Движение.Период = Дата; Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн"); Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); Движение.Номенклатура = эл.Номенклатура; Движение.Цена = эл.[B]ЦенаПродажная[/B]; [/CODE] что как бы и работает но бывает такое, что в документе не надо изменять поле ввода колонки [B]ЦенаПродажная[/B] и если я не ввожу в это поле значение то естественно удаляется цены с карточки номенклатура ЦеныНоменклатуры для магазинов РозничныйМаг№1, РозничныйМаг№2 я решил добавить условие в одни из последних циклов [CODE]Для Каждого эл Из Товары Цикл Движение = Движения.ЦеныНоменклатуры.Добавить(); Движение.Период = Дата; Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн"); Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); Движение.Номенклатура = эл.Номенклатура; Если эл.ЦенаПродажная = 0 Тогда Прервать; Иначе Движение.Цена = эл.[B]ЦенаПродажная[/B]; КонецЕсли; [/CODE] но тут поработав отладчиком увидел, что значение Движение.Цена при начале первого цикла в условии уже получает значение, а мне как то нужно обойти это получение и сделать так, что если я ничего не ввожу в поле эл.ЦенаПродажная то значение розничных цен оставались не измененными, не менялись. Да, вариант добавление еще одного измерения в регистре сведений есть но тут дело в том, что при открытии карточки номенклатуры страницы ЦеныНоменклатуры происходит получение значение типов цен с измерения Цена, а не Цена1, а отследить где оно такое происходит не получается, там голову можно сломать с километровым кодом и заветвениями в десяток общих модулей и т.д. |
|||
1
Cube
09.10.14
✎
11:26
|
(0) Расстрелять! (с)
Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн"); Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000015"); |
|||
2
Джинн
09.10.14
✎
11:28
|
Чем штатная запись в цены контрагентов не устраивает?
|
|||
3
Михаил Козлов
09.10.14
✎
11:28
|
(1)+ Особенно, когда Движение.ЕдиницаИзмерения окажется от другого товара.
|
|||
4
Ненавижу 1С
гуру
09.10.14
✎
11:29
|
я же тебе тут писал Несколько движений по одному измерению
|
|||
5
barrgand
09.10.14
✎
11:29
|
(0) Тебе уже писали в предыдущей теме, что это бред. Поступление формирует только закупочную цену, все остальные формируй установкой цен.
|
|||
6
Krolik Bezobraznik
09.10.14
✎
11:32
|
Если эл.ЦенаПродажная <> 0 Тогда
Движение = Движения.ЦеныНоменклатуры.Добавить(); Движение.Период = Дата; Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн"); Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); Движение.Номенклатура = эл.Номенклатура; Движение.Цена = эл.[B]ЦенаПродажная[/B]; Иначе Продолжить(); КонецЕсли; |
|||
7
Krolik Bezobraznik
09.10.14
✎
11:33
|
Ремарка небольшая
продолжить; |
|||
8
Шапокляк
09.10.14
✎
11:34
|
Движение.ЕдиницаИзмерения=Эл.Номенклатура.ЕдиницаХраненияОстатков;
|
|||
9
Krolik Bezobraznik
09.10.14
✎
11:38
|
Движение.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
ИЛИ Движение.Валюта = ВалютаДокумента; |
|||
10
myr4ik07
09.10.14
✎
12:21
|
для чего мне цены контрагентов? (2)
|
|||
11
myr4ik07
09.10.14
✎
12:22
|
в смысле? обьясните пожалуйста (3)
|
|||
12
myr4ik07
09.10.14
✎
12:23
|
у нас выходит что в карточке номенклатуры указываем и розничную и продажную цену, но документ поступление товаров проводит по регистру ценыноменклатурыконтрагшентов но этот регистр мне не нужен(5)
|
|||
13
johnny17
09.10.14
✎
12:29
|
(12) Тебе нужен документ "УстановкаЦенНоменклатуры", созданный на основании поступления, в нем и устанавливай нужные цены...
|
|||
14
myr4ik07
09.10.14
✎
12:33
|
тоже думал об этом, в итоге не разобрался как обойти циклом все типы цен в этом документе(13)
|
|||
15
johnny17
09.10.14
✎
12:37
|
(14)
Для Каждого ТипЦены Из ТипыЦен Цикл //ТЧ ТипыЦен Строки = Товары.НайтиСтроки(Новый Структура("ТипЦены", ТипЦены)); Для Каждого Строка Из Строки Цикл //ТЧ Товары <Здесь ТипЦены и Строка.Номенклатура> КонецЦикла; КонецЦикла; |
|||
16
myr4ik07
09.10.14
✎
13:01
|
вот спасибо, я еще не очень умею работать с коллекциями ы запутался как правильно, попробую, спасибо (15)
|
|||
17
HEKPOH
09.10.14
✎
13:10
|
(11) получаешь одни и те же данные несколько раз (т.е. в цикле)
|
|||
18
myr4ik07
09.10.14
✎
15:35
|
(15)
если делаю СоздатьДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); СоздатьДокумент.Дата = РабочаяДата; Для Каждого ТипыЦены Из СоздатьДокумент.ТипыЦен Цикл Строка = Товары.НайтиСтроки(Новый Структура("ТипыЦены", ТипЦен)); Для Каждого Строки Из Строка Цикл КонецЦикла; КонецЦикла; получаю на Для Каждого ТипыЦены Из СоздатьДокумент.ТипыЦен Цикл итератор для значения не определен |
|||
19
Джинн
09.10.14
✎
15:54
|
(10) Потому что одинаковую номенклатуру Вы можете покупать у нескольких поставщиков по разным ценам.
|
|||
20
myr4ik07
09.10.14
✎
16:03
|
(19) так же говорю, что мне незачем знать какая раньше была цена продажи и закупки так как закупку нам сохраняет регистр сведений Ценыноменклатурыконтрагентов и + мы еще в карточку номенклатуры указываем закупочную цену для того, что бы потом в формировании прайс-листа было легко выбрать типы цен с карточки номенклатуры (там у нас виды есть ЗакупочнаяДол, ЗакупочнаяГРН, Розничная№1, Розничная№2)
мне незачем что то сохранять в регистре сведений Ценыноменклатурыконтрагентов он и так все отлично сохраняет, а я хочу с документа изменять ТипыЦен карточки Номенклатура, все эти типы цен (там у нас виды есть ЗакупочнаяДол, ЗакупочнаяГРН, Розничная№1, Розничная№2) |
|||
21
myr4ik07
09.10.14
✎
16:04
|
(19) где то с терминами или названием и ошибся но смысл должен понятный быть
|
|||
22
myr4ik07
09.10.14
✎
16:05
|
ммм ) наконец то сделали так, что номер ответного поста ставиться автоматически перед ответом )) я когда то писал уже об этом ))
|
|||
23
Krolik Bezobraznik
09.10.14
✎
16:07
|
(18) Вы что курили? Вы создали документ, а потом пытаетесь циклом пройтись по его реквизиту?
|
|||
24
myr4ik07
09.10.14
✎
16:20
|
(23) пытаюсь пройтись ))
|
|||
25
myr4ik07
09.10.14
✎
16:20
|
(23) но я не курю
|
|||
26
myr4ik07
09.10.14
✎
16:21
|
(23) кстати, я думаю будет более понятно, что я хочу выполнить ваш код с модуля документа Пост. товар.
|
|||
27
myr4ik07
09.10.14
✎
17:02
|
короче, создал
НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НовыйДокумент.Дата = РабочаяДата; ТабличнаяЧастьТовары = НовыйДокумент.Товары; НоваяСтрока = ТабличнаяЧастьТовары.Добавить(); НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000007150"); НовыйДокумент.Записать(); дошел до формы выбора ТипЦены где ТипЦены это Тип СписокЗначений и там нужно проставить галки для того, что бы были выбраны цены, как тут программное это сделать? |
|||
28
hhhh
09.10.14
✎
17:09
|
(27) отдельная строчка для каждого типа цен. В типовой так и есть.
|
|||
29
myr4ik07
09.10.14
✎
17:18
|
помогите перебрать ТипЦен не получается и все, постоянно итератор
|
|||
30
barrgand
09.10.14
✎
17:24
|
(29) Отладчик тебе поможет
|
|||
31
myr4ik07
09.10.14
✎
17:34
|
короче шо то выходит
НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НовыйДокумент.Дата = РабочаяДата; НоваяСтрокаТипЦен = НовыйДокумент.ТипыЦен.Добавить(); НоваяСтрокаТипЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001"); Для Каждого ТекСтрока Из НовыйДокумент.ТипыЦен Цикл НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000004220"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("840"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Цена = Товары.Цена; КонецЦикла; НовыйДокумент.Записать(); но тут при проведении получаю ошибку уже в модуле документа УстановкаЦенНоменклатуры на строке НоваяСтрока["цена" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Цена; с ошибкой {Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента.Форма(596)}: Поле объекта не обнаружено (цена) НоваяСтрока["цена" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Цена; |
|||
32
myr4ik07
09.10.14
✎
17:39
|
вот эти [] меня сбивают, что это такое? Это таким способом можно "добраться" до реквизита? а + тогда что означает?
|
|||
33
barrgand
09.10.14
✎
17:43
|
(32) Это аналог ".". То есть если например НомерСоответствияТекущейКолонки = 1 тогда НоваяСтрока["цена" + НомерСоответствияТекущейКолонки] = НоваяСтрока.цена1
|
|||
34
hhhh
09.10.14
✎
17:54
|
(32)
Для Каждого СтрокаТовара Из Товары Цикл Для Каждого ТекСтрока Из НовыйДокумент.ТипыЦен Цикл НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.Номенклатура = СтрокаТовара.Номенклатура; НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("840"); НоваяСтрокаТовары.ЕдиницаИзмерения = СтрокаТовара.ЕдиницаИзмерения; НоваяСтрокаТовары.Цена = СтрокаТовара.Цена; КонецЦикла; КонецЦикла; |
|||
35
myr4ik07
09.10.14
✎
18:17
|
ну ... вышло
Если ЭтотОбъект.Грн Тогда НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НовыйДокумент.Дата = РабочаяДата; НоваяСтрокаТипЦен = НовыйДокумент.ТипыЦен.Добавить(); НоваяСтрокаТипЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000015"); Для Каждого эл Из Товары Цикл Для Каждого ТекСтрока Из НовыйДокумент.ТипыЦен Цикл НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000015"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = эл.Номенклатура; НоваяСтрокаТовары.Цена = эл.Цена; КонецЦикла; НовыйДокумент.Записать(); КонецЦикла; КонецЕсли; создается УстановкаЦенНоменклатуры документ с товаром и ценой той что в документе ПТиУ, но не проводиться, почему? |
|||
36
myr4ik07
09.10.14
✎
18:20
|
финиш
оказывается НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); добавить, а не просто запписать() спасибо, до следующей ветки )) потому как это только кусок работы )) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |