Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Помогите разобраться с проблемой 7.7 (http://forums.kuban.ru/f1040/pomogite_razobrat-sya_s_problemoj_7_7_a-6736889.html)

VASH 20.04.2015 13:58

Помогите разобраться с проблемой 7.7
 
Итак. Имеется справочник номенклатуры. И имеется подчиненный справочник "ПоследняяПара". Смысл в том, чтобы в последний справочник складывать ту номенклатуру, которая будет участвовать в данной акции. Ну, соответственно, документом, проведение - снятие проведения.

Проблема в том, что поиск при отмене проведения ну никак не хочет работать. Я начинающий, прошу не пинать. Про то что можно просто на номенклатуру добавить реквизит и не париться я знаю. Просто хочу в данном случае понять чего я не допонимаю. Спасибо, коллеги !

++++++++++++++++++++++++++++++++
Процедура ОбработкаПроведения()

//Здесь следует написать алгоритм проведения документа


СпрПар = СоздатьОбъект("Справочник.ПоследняяПара");
ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

СпрПар.Новый();
СпрПар.Номенклатура = Номенклатура;
СпрПар.Записать();
Сообщить("Товар: "+Номенклатура +" добавлен в справочник участников акции последняя пара");
КонецЦикла;

КонецПроцедуры

Процедура ОбработкаУдаленияПроведения()
// Процедура выполняется при отмене проведения
// или удалении документа
// Номенклатура — это реквизит документа
Спр = СоздатьОбъект("Справочник.ПоследняяПара");
Спр.ВыбратьЭлементы();
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Сообщить(Номенклатура);
Сообщить(Спр.НайтиПоКоду(Номенклатура.Код));

// СпрПар.Удалить(1);

КонецЦикла;
КонецПроцедуры

DeiMos 20.04.2015 14:14

Ищи не по коду, а по реквизиту "Номенклатура".
Поскольку коды-то разные...

DeiMos 20.04.2015 14:16

И опять жеж, ничего не понятно с подчинённостью.
Из твоего кода нигде не видно, что справочник "ПоследняяПара" чему-либо подчинён.

VASH 20.04.2015 14:23

Дело в том, что у меня номенклатура имеет дополнительные реквизиты как то артикул цвет размер наименование... Последняя пара имеет реквизит Номенклатура из справочника номенклатура.

Sasha 20.04.2015 15:10

(0)
В таком виде работать со справочником из документа не надо, а если пользователь возьмет и перепроведет документ, раз так 5 ?
В ТиС есть справочник прайс-лист, используй его (заведи прайс лист "ПоследняяПара" и добавляйте в него нужную номенклатуру, не нужную удаляйте) и никакие дополнительные справочники городить не нужно.
А уже обработку списка номенклатуры этого прайс листа добавь там где нужно.

Sasha 20.04.2015 15:15

(+4)для отбора номенклатуры списком можно так же использовать "Свойства номенклатуры", в общем, вариантов много

VASH 20.04.2015 15:46

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

pivovarovivan 20.04.2015 15:51

Для поиска используй ВыбратьПоРеквизиту, предварительно поставив свойство "Сортировка" для реквизита "Номенклатура".
А лучше сделай подчинённый справочник.
И учти, что при непосредственном удалении элемента сбивается выборка. Сначала собирай в список значений, потом удаляй.

VASH 20.04.2015 16:01

(7) Извини, а можно пример ? Реально, запутался.

Sasha 20.04.2015 16:05

(6)"решение не правильное, я это понимаю" - это хорошо. Значит удаляй свой справочник и код из проведения документа, используй по максимуму штатные механизмы.
P.S. При перепроведении вызов процедуры "ОбработкаУдаленияПроведения" не производится.

serpent 20.04.2015 16:12

Даже если учесть (9)

мне код видится так...

Спр = СоздатьОбъект("Справочник.ПоследняяПара");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если Спр.НайтиПоКоду(Номенклатура.Код)) = 1 Тогда
Попытка
СпрПар.Удалить(1);
Исключение
Сообщить(ОписаниеОшибки);
КонецПопытки;
КонецЕсли;
КонецЦикла;

serpent 20.04.2015 16:18

(8)
УдаляемыйТовар = СоздатьОбъект("ТаблицаЗначений");
УдаляемыйТовар.НоваяКолонка("Товар");

Спр = СоздатьОбъект("Справочник.ПоследняяПара");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если Спр.НайтиПоКоду(Номенклатура.Код)) = 1 Тогда
УдаляемыйТовар.НоваяСтрока();
УдаляемыйТовар.Товар = Спр.ТекущийЭлемент();
КонецПопытки;
КонецЕсли;
КонецЦикла;

УдаляемыйТовар.ВыбратьСтроки();
Пока УдаляемыйТовар.ПолучитьСтроку()=1 Цикл
Если Спр.НайтиЭлемент(УдаляемыйТовар.Товар) = 1 Тогда
Спр.Удалить(1);
КонецЕсли;
КонецЦикла;

serpent 20.04.2015 16:19

(11) забыл удалить "КонецПопытки;"

VASH 20.04.2015 16:25

Спасибо, буду пробовать. Надо почитать все таки про подчиненные справочники :(

Sasha 20.04.2015 16:33

(11,13)не взлетит.

VASH 20.04.2015 16:42

(14) Хорошо, мне просто нужен пример как сделать так чтобы подобное решение взлетело ...

Чучундер 20.04.2015 16:46

15-VASH > чтобы взлетело - выбирают нужный вариант решения.
а ты какото свинтпрульный аппарат сделал и хочешь чтобы он как истребитель летал...

Чучундер 20.04.2015 16:48

а утебя вместо выбора варианта решения херня какая-то типа хочу забить гвоздь в рельсу - не получается, как забить гвоздь в рельсу?
а ЗАДАЧА_то стояла не про забивание гвоздя в рельсу, а совсем о другом.. а у тебя - гвоздь и рельса

user1C 20.04.2015 16:50

(15)
для начала нужно расписать подробно цель и смысл задачи, для которой необходим взлет...

pivovarovivan 20.04.2015 18:37

Если я правильно (0) понял, то надо пометить товары, участвующие в акции. Тогда, на мой взгляд, лучше в справочнике "Номенклатура" создать периодический реквизит "УчаствуетВАкции", а при проведении документа использовать УстановитьРеквизитСправочника(Товар,"УчаствуетВАкции",1,ДатаС)
УстановитьРеквизитСправочника(Товар,"УчаствуетВАкции",0,ДатаПо)

VASH 20.04.2015 20:16

Ребята, я просто хочу разобраться. То что сказал уважаемый (19) - согласен. Прсото у меня следующая задача - создавать справочник с количеством бракованного товара с привязкой не только по номенклатуре, но и по магазинам. Вот я и тренеруюсь на кошках.

Sasha 20.04.2015 21:05

(20) что дальше с этой информацией планируете делать ?

VASH 21.04.2015 09:16

(21) Далее - продажи. На ТД стоят те же базы, УРБД, так вот чтобы могли или нет продать ранее разрешенный бракованный товар.

Sasha 21.04.2015 13:00

(22)Решение о продаже/не продаже принимается в центре? Весь список бракованного товара запрещается/разрешается целиком или по позициям брака?

VASH 21.04.2015 13:18

Ребята, по коду он ищет по коду именно справочника ПоследняяПара. А как сделать чтобы он искал по коду Родителя, то есть Номенклатура ?

VASH 21.04.2015 13:19

(23) По позициям, причем не запрещается, а будет скидка, но это не важно.

user1C 21.04.2015 18:19

(24)
внимательно прочитал (9)?

Чучундер 21.04.2015 20:37

20-VASH > ты дятел. откуда ты знаешь "..у меня следующая задача - создавать справочник с количеством бракованного товара с привязкой не только по номенклатуре, но и по магазинам" - это то что ты описал - это не задача, это некий выбраныый тобой способ решения какой-то задачи. какая именно задача стоит - до сих пор ты ВНЯТНо изложить не смог. есть смонения что сможешь внятно реализвать то, что не смог внятно изложить


Текущее время: 00:17. Часовой пояс GMT +3.