:: Вопросы по 1С
Перенос цен из 77 в бух 8.3
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
1С:Предприятие 8.3 (8.3.7.2008)
Бухгалтерия предприятия, редакция 3.0 (3.0.43.174)
УФ. Тонкий клиент.
Пробую перенести цены через Конвертацию 2.0
Именно с ценами беда.

Пробую в обработке, создать цену к материалу.
Номенк= Справочники.Номенклатура.НайтиПоКоду("000000004");
ВыбранныйРегистратор = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ВыбранныйРегистратор.Дата= ТекущаяДата();
Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ВыбранныйРегистратор.Ссылка);
НоваяЗапись = Набор.Добавить();
НоваяЗапись.Регистратор=ВыбранныйРегистратор.Ссылка;
НоваяЗапись.Цена=2345.67;
НоваяЗапись.Номенклатура=Номенк.Ссылка;
Набор.Записать();
//Впечатление что НоваяЗапись надо внести в табличную чяасть ВыбранныйРегистратор - Товары
На строке Набор.Записать();
"Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)"
Вроде строка Набор.Отбор.Регистратор.Установить(ВыбранныйРегистратор.Ссылка);
Но она ничего не меняет. В отладчике вижу
Набор.ОТбор.Регитратор=""

Что я не так делаю?


------------------




Исправлено 1 раз(а). Последнее : Аспид, 11.04.16 16:24
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
Номенк= Справочники.Номенклатура.НайтиПоКоду("000000004");
ВыбранныйРегистратор = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ВыбранныйРегистратор.Дата= ТекущаяДата();
ВыбранныйРегистратор.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("твой_код");
//Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
//Набор.Отбор.Регистратор.Установить(ВыбранныйРегистратор.Ссылка);
//НоваяЗапись = Набор.Добавить();
//НоваяЗапись.Регистратор=ВыбранныйРегистратор.Ссылка;
НоваяЗапись = ВыбранныйРегистратор.Товары.Добавить();
НоваяЗапись.Цена = 2345.67;
НоваяЗапись.Номенклатура = Номенк.Ссылка;
НоваяЗапись.Валюта = Константы.ВалютаРегламентированногоУчета.Получить(); // как вариант
//Набор.Записать();
ВыбранныйРегистратор.Записать(РежимЗаписиДокумента.Проведение);


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Было бы любопытно взглянуть, как выглядит код, в котором команды пишутся на китайском языке. Наверняка ведь есть такой софт. На русском же придумали...
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Аспид
Номенк= Справочники.Номенклатура.НайтиПоКоду("000000004");
ВыбранныйРегистратор = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ВыбранныйРегистратор.Дата= ТекущаяДата();

Здесь нужно добавить строчку "ВыбранныйРегистратор.Записать()", иначе ВыбранныйРегистратор.Ссылка будет пустой ссылкой, т.к. это новый объект.

Да, вместо Номенк.Ссылка, достаточно просто Номенк.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Спасибо Канат. Все как часы пашет.
Теперь надо осмыслить, как этот код в конвертации привязать...
Значит все же, когда есть регистратор, надо создавать запись через регистратор.
Но даже с 1й записью не весело)))
Операция конечно разовая...


------------------
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
spinz
Здесь нужно добавить строчку "ВыбранныйРегистратор.Записать()", иначе ВыбранныйРегистратор.Ссылка будет пустой ссылкой, т.к. это новый объект.
Была такая мысль. Надо будет попробовать.
spinz
Да, вместо Номенк.Ссылка, достаточно просто Номенк.
Никак я не пойму в 1С, Где ссылка, где сам объект.
Что то пропустил видимо.
Можно на пальцах втолковать?


------------------
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Пожалуй еще вопрос появился.
Используя код Каната, с нужной номенклатурой все получилось.
Но любопытно, что у тех элементов номенклатуры, где не было цены, цена не появилась (и не должна), но появился документ,
"Установка цен номенклатуры 00-00000002 от 12.04.2016 7:40:28"
Не понимаю, почему?
Но видимо это дает некоторые доп возможности.
Я могу создать 1 док, и в него записать все цены, по всей номенклатуре?
Пока не пойму как это сделать, но наверное так и надо в конвертации?


------------------
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
в 1це есть встроенный механизм визуализации связей. на твоем примере это хорошо видно. открой в конфигураторе регистр "ЦеныНоменклатуры" и в измерениях увидишь "Номенклатура" у которого в свою очередь установлен параметр "Ведущее" = следовательно из справочника "Номенклатура" мона визуально-из формы автоматом попасть в ентот регистр
если нужна инфа про конвертацию, то мененько было в журнале сисадмин 2015-04 ну и поиск рулит
а по поводу одного документа + кучи номенклатуры, то там лишь одно ограничение чтото кажись не более стотыщ строк в одну табчасть. но эта инфа тебе навряд ли пригодится


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
spinz
Здесь нужно добавить строчку "ВыбранныйРегистратор.Записать()", иначе ВыбранныйРегистратор.Ссылка будет пустой ссылкой, т.к. это новый объект.
Была такая мысль. Надо будет попробовать.
spinz
Да, вместо Номенк.Ссылка, достаточно просто Номенк.
Никак я не пойму в 1С, Где ссылка, где сам объект.
Что то пропустил видимо.
Можно на пальцах втолковать?
Вообще, ваш код был бредом, который нарушает парадигму 1С. В 1С предполагается что пользователь или внешний источник заполняет документы (инкапсулирующие в себе полное описание хозяйственной операции), а документы уже сами, по своим правилам раскладывают движения по плоским табличкам (в вашем случае в регистр сведений ЦеныНоменклатуры).

Канат вам показал правильный пример. Вам только стоит оформить в цикл следующий участок кода.
Foxtrot
НоваяЗапись = ВыбранныйРегистратор.Товары.Добавить();
НоваяЗапись.Цена = 2345.67;
НоваяЗапись.Номенклатура = Номенк.Ссылка;
НоваяЗапись.Валюта = Константы.ВалютаРегламентированногоУчета.Получить(); // как вариант
Тогда в табличную часть документа "Товары" добавится несколько записей по ценам номенклатуры. А при проведении документ создаст соответствующее количество движений по регистру ЦеныНоменклатуры.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
Пока не пойму как это сделать, но наверное так и надо в конвертации?
В конвертации этого всего вообще никак не надо. Конвертация сама организует все эти циклы и обходы табличных частей документов. Там только правила необходимо прописать, а 99% нужного кода там уже прописано.
Вы уже решите для себя, каким инструментом вы пользуетесь, самописным или конвертацией. И решите на чем-нибудь одном пока.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
Никак я не пойму в 1С, Где ссылка, где сам объект.
Что то пропустил видимо.
Можно на пальцах втолковать?
Ссылка это идентификатор объекта. Его текстовое представление может быть таким: {00100938-b2d2-11e5-80d3-002590860a55}, а в памяти лежит представленный выше идентификатор, текстовое представление объекта и ссылка на объект метаданных данного объекта.

А объект это как и в любом объектном языке - объект со всеми его свойствами и методами. Соответственно, когда вы получили ссылку на объект у вас есть только идентификатор, без методов и свойств. И наоборот, у каждого объекта есть свойство "Ссылка", которое содержит идентификатор объекта в базе. Если объект в базу не записан, ссылка не содержит идентификатора (это пустая ссылка). После записи объекта в базу, в базе появляется копия вашего объекта, а у вашего объекта появляется ссылка на его копию в базе.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
pasha_usue
Вообще, ваш код был бредом, который нарушает парадигму 1С. В 1С предполагается что пользователь или внешний источник заполняет документы (инкапсулирующие в себе полное описание хозяйственной операции), а документы уже сами, по своим правилам раскладывают движения по плоским табличкам (в вашем случае в регистр сведений ЦеныНоменклатуры).

Нормальный код. Он существенно быстрей проведения документа и не загаживает БД лишними записями в таблицах табличных частей.
Не стоит следовать любым парадигмам, если это идет в ущерб эффективности.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
spinz
pasha_usue
Вообще, ваш код был бредом, который нарушает парадигму 1С. В 1С предполагается что пользователь или внешний источник заполняет документы (инкапсулирующие в себе полное описание хозяйственной операции), а документы уже сами, по своим правилам раскладывают движения по плоским табличкам (в вашем случае в регистр сведений ЦеныНоменклатуры).

Нормальный код. Он существенно быстрей проведения документа и не загаживает БД лишними записями в таблицах табличных частей.
Не стоит следовать любым парадигмам, если это идет в ущерб эффективности.
Ваще нормальный код. А что случится, если пользователь перепроведёт документ? А если конфигурация при обновлении/обмене/полном перепроведении?

Хреновая эффективность получается.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Не спорьте)))
Даж если и получилось вдруг эффективно что то, то случайно)
А мне сейчас надо научиться правильно делать)))
Аспид
//Впечатление что НоваяЗапись надо внести в табличную чяасть ВыбранныйРегистратор - Товары
Я с самого начала подозревал, что неправильно иду.
И код Каната сразу поставил все на место.

Пашь. Конвертация может и делает что то сама.
Но все же ей надо указать, что делать.

Я и пробовал сначала через конвертацию сделать.
Там она и начала на Регистратор ругаться...
Начал читать, решил руками попробовать.

Теперь стало ясно.

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

Наверное спецам, на 5 минут задача. Но.. .в силу отсуствия понимания- знания, приходится долго возиться, читать...


------------------
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Ну а зачем давать перепроводить документы, которые перепроводить не положено?
Ни при обновлении конфы, ни при обмене ничего не случится.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
spinz
Ну а зачем давать перепроводить документы, которые перепроводить не положено?
Это и называется непонимание парадигмы. Вы каждого пользователя по рукам будете бить, "Этот документ вы ввели вручную, его можно перепроводить. А этот документ выгрузился автоматически, его перепроводить нельзя."

spinz
Ни при обновлении конфы, ни при обмене ничего не случится.
Нуралиев добавил реквизит в документ и поменял процедуру проведения. В процедуре обновления вызывается перепроведение всех документов, у которых есть движения.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
Сейчас пытаюсь все это в конвертацию засунуть)
Я не хочу даже всю историю цен.
Пусть все будет скажем, на сегодня.
Значит надо создать 1 регистратор, на всю выгрузку.
И заполнять его табличную часть...
Кидайте правила конвертации. Тогда можно будет предметно обсуждать.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
pasha_usue
spinz
Ну а зачем давать перепроводить документы, которые перепроводить не положено?
Это и называется непонимание парадигмы. Вы каждого пользователя по рукам будете бить, "Этот документ вы ввели вручную, его можно перепроводить. А этот документ выгрузился автоматически, его перепроводить нельзя."

А вот это называется непониманием того, что нельзя слепо следовать парадигме)) Достаточно просто поместить документ в закрытый период, где редактирование данных запрещено.

pasha_usue
spinz
Ни при обновлении конфы, ни при обмене ничего не случится.
Нуралиев добавил реквизит в документ и поменял процедуру проведения. В процедуре обновления вызывается перепроведение всех документов, у которых есть движения.

Правда? ВСЕ документы от начала ведения учета, скажем, 10 лет назад? Вот за сотни обновлений ни разу не столкнулся с таким. Если в какой-то типовой конфе и есть такой функционал, то тут надо, конечно, гвоздь в голову забивать авторам такой идеи. Ну и допиливать конфу под себя. Иначе окнчания обновления можно и не дождаться))



Исправлено 1 раз(а). Последнее : spinz, 12.04.16 12:53
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
spinz
pasha_usue
spinz
Ну а зачем давать перепроводить документы, которые перепроводить не положено?
Это и называется непонимание парадигмы. Вы каждого пользователя по рукам будете бить, "Этот документ вы ввели вручную, его можно перепроводить. А этот документ выгрузился автоматически, его перепроводить нельзя."

А вот это называется непониманием того, что нельзя слепо следовать парадигме)) Достаточно просто поместить документ в закрытый период, где редактирование данных запрещено.
То-есть, продолжать изобретать велосипед. Вводить дополнительные административные меры, контролировать закрытость периода. Каким-то образом контролировать в открытом периоде, если бухгалтеру нужны свежие данные.

Классное решение. Качественное.
Ratings: 0 negative/0 positive
Re: Перенос цен из 77 в бух 8.3
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
А без подобных административных ограничений никак. Пример. Пусть у пользователя есть право проведения в любом периоде какого-то док-та, двигающего, скажем, бух.регистры. А в каких-то мохнатых годах остались непроведенные доки такого вида (а такое случается сплошь и рядом). И юзер случайно или намеренно проведет подобный документ...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика