Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Изменение подчиненности элемента в прайс листе

maxzpua
читатель
офлайн
Дата регистрации: 13.05.2009
Сообщений: 3
Пост №1
 
13.05.2009 17:29

"Люди добрые помогите. Пытаюсь написать код, при котором автоматически менялась бы подчиненность в справочнике прайс-лист, при изменении подчиненности в справочнике номенклатура. Вот код:<br>Процедура ПриПереносеЭлементаВДругуюГруппу()<br> спр=СоздатьОбъект("Справочник.ПрайсЛист"); <br> спр1=СоздатьОбъект("Справочник.Номенклатура"); <br> текэл = Спр1.ТекущийЭлемент();<br> спр.НайтиПоНаименованию(текэл); <br> спр.Родитель=Спр1.Родитель; <br> спр.Выгружен=0;<br> спр.Записать(); <br> СтатусВозврата(0);<br> Возврат;<br>КонецПроцедуры <br><br>Выдает сообщение об ошибке<br><br>{Справочник.Номенклатура.ФормаСписка.ФормаСписка.Модуль(205)}: Не выбран элемент!<br>спр.Родитель=Спр1.Родитель; <br><br>Где может быть ошибка? "

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №2
 
13.05.2009 19:06

"Интересно как это все понимать:<br>> спр=СоздатьОбъект("Справочник.ПрайсЛист"); <br>Спр - это Прайс лист, ладно.<br><br>> спр1=СоздатьОбъект("Справочник.Номенклатура"); <br>Спр1 - это номенклатуры<br><br>> текэл = Спр1.ТекущийЭлемент();<br>Извините, а что вы получите через ТекущийЭлемент(), если после создания объекта ничего не выбирали? Может сначала найдете интересующий вас объект.<br><br>> спр.НайтиПоНаименованию(текэл); <br>А это вообще бред - НайтиПоНаименованию подразумевает, что ищется наименование. А вы вместо наименования подсовываете Объект, да еще и Номенклатуры. Конечно преобразование в строку пройдет, но вы уверены, что результатом будет именно наименование? К тому же ищите Наименование Прайса = Наименованию Номенклатуры (может конечно они у вас и равны по каким-то причинам)<br><br>> спр.Родитель=Спр1.Родитель; <br>И это писк, который переводиться так: ПрайсЛист = Номенклатура. :)<br><br>Короче - ошибок пруд пруди :)<br>"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №3
 
13.05.2009 21:12

"Процедура ПриПереносеЭлементаВДругуюГруппу(ТекЭл, НовГр)<br><br>спр=СоздатьОбъект("Справочник.ПрайсЛист");<br><br>Спр.НайтиПоНаименованию(НовГр.Наименование);<br>НовГрПрайсЛиста = Спр.ТекущийЭлемент();<br><br>спр.НайтиПоНаименованию(текэл.Наименование); <br>Спр.Родитель = НовГрПрайсЛиста;<br>Спр.Записать();<br><br>КонецПроцедуры<br><br><br>"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №4
 
13.05.2009 21:41

"Что то я мучался, мучался... не могу вспомнить в какой конфигурации есть этот справочник. Точно помню, что видел, но где не помню. Вроде в каких то старых релизах "Торговля и склад". Там смысл был в том, что помимо справочника номенклатуры существовал отдельный справочник "ПрайсЛист", куда можно было добавлять ссылки на справочник номенклатуры и организовать в нем отражение лишь нужной части справочника номенклатуры и сгруппировать их каким то иным образом, не обязательно совпадающим с группировками справочника Номенклатуры. Поскольку вы такую задачу решаете, выходит, что у вас справочники Номенклатуры и Прайс лист по структуре синхронны. Исходя из этого соображения, вот вариант решения:<br><br>В форме списка справочника Номенклатура пишем:<br>Процедура ПриПереносеЭлементаВДругуюГруппу(Элемент,Группа)<br> ПрайсЛист=СоздатьОбъект("Справочник.ПрайсЛист");<br> Если ПрайсЛист.НайтиПоРеквизиту("Товар",Элемент)=1 Тогда<br>      ПарныйЭлементВПрайсЛисте=ПрайсЛист.ТекущийЭлемент();<br>      СтруктураГрупп=СоздатьОбъект("СписокЗначений");<br>      Если ПустоеЗначение(Группа)=0 Тогда<br>       ТекГруппа=Группа;<br>       Пока 1=1 Цикл<br>            СтруктураГрупп.ДобавитьЗначение(ТекГруппа);<br>            ТекГруппа=ТекГруппа.Родитель;<br>            Если ПустоеЗначение(ТекГруппа)=1 Тогда<br>             Прервать;<br>            КонецЕсли;<br>       КонецЦикла;<br>      КонецЕсли;<br>      ПозиционированиеВСтруктуреГруппПрайсЛистаКорректно=1;<br>      ПрайсЛист.ИспользоватьРодителя(ПолучитьПустоеЗначение("Справочник.ПрайсЛист"));<br>      РазмерСтруктурыГрупп=СтруктураГрупп.РазмерСписка();<br>      Для i=1 По РазмерСтруктурыГрупп Цикл<br>       НомерГруппыВСтруктуре=РазмерСтруктурыГрупп-i+1;<br>       Если ПрайсЛист.НайтиПоНаименованию(СтруктураГрупп.ПолучитьЗначение(НомерГруппыВСтруктуре).Наименование,1,1)=1 Тогда<br>            ПрайсЛист.ИспользоватьРодителя(ПрайсЛист.ТекущийЭлемент());<br>       Иначе<br>            ПозиционированиеВСтруктуреГруппПрайсЛистаКорректно=0;<br>            Прервать;<br>       КонецЕсли;<br>      КонецЦикла;<br>      Если ПозиционированиеВСтруктуреГруппПрайсЛистаКорректно=1 Тогда<br>       НовыйРодительВПрайсЛисте=ПрайсЛист.ТекущийЭлемент();<br>       Если ПрайсЛист.НайтиЭлемент(ПарныйЭлементВПрайсЛисте)=1 Тогда<br>            ПрайсЛист.Родитель=НовыйРодительВПрайсЛисте;<br>            ПрайсЛист.Записать();<br>       КонецЕсли;<br>      КонецЕсли;<br> КонецЕсли;<br>КонецПроцедуры"

maxzpua
читатель
офлайн
Дата регистрации: 13.05.2009
Сообщений: 3
Пост №5
 
14.05.2009 09:13

Я не волшебник, я только учусь. Спасибо за критику. Учту.

maxzpua
читатель
офлайн
Дата регистрации: 13.05.2009
Сообщений: 3
Пост №6
 
14.05.2009 10:54

Большое спасибо! Просто огромное! Все работает!

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация