for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Вопросы по 1С
  

Перенос цен из 77 в бух 8.3
Аспид
Автор

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

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

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


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




Исправлено: Аспид, 11.04.16 16:24
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
Foxtrot

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


------------------
P.S. будете проходить мимо, не стесняйтесь, проходите
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
Simple777

Сообщений: 23464
Дата: 11.04.16 21:30:40
Было бы любопытно взглянуть, как выглядит код, в котором команды пишутся на китайском языке. Наверняка ведь есть такой софт. На русском же придумали...
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
spinz

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

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

Да, вместо Номенк.Ссылка, достаточно просто Номенк.
Ratings: 0 negative/0 positive

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

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


------------------
Ratings: 0 negative/0 positive

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

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


------------------
Ratings: 0 negative/0 positive

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

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


------------------
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
Foxtrot

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


------------------
P.S. будете проходить мимо, не стесняйтесь, проходите
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
pasha_usue

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

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

Re: Перенос цен из 77 в бух 8.3
pasha_usue

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

Re: Перенос цен из 77 в бух 8.3
pasha_usue

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

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

Re: Перенос цен из 77 в бух 8.3
spinz

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

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

Re: Перенос цен из 77 в бух 8.3
pasha_usue

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

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

Хреновая эффективность получается.
Ratings: 0 negative/0 positive

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

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

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

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

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

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

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


------------------
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
spinz

Сообщений: 5263
Дата: 12.04.16 12:17:03
Ну а зачем давать перепроводить документы, которые перепроводить не положено?
Ни при обновлении конфы, ни при обмене ничего не случится.
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
pasha_usue

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

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

Re: Перенос цен из 77 в бух 8.3
pasha_usue

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

Re: Перенос цен из 77 в бух 8.3
spinz

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

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

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

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



Исправлено: spinz, 12.04.16 12:53
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
pasha_usue

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

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

Классное решение. Качественное.
Ratings: 0 negative/0 positive

Re: Перенос цен из 77 в бух 8.3
spinz

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



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

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

18.08.2019 08:46:00 exec: 0.11
Mem: 1.465 Mb

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