Имя: Пароль:
1C
1С v8
Правила регистрации по сочетанию реквизитов
0 runoff_runoff
 
03.01.17
08:19
Дано:
1. Нужно регистрировать документы Реализация товаров и услуг по сочетанию реквизитов Организация/Контрагент, т.е. пусть есть

организации = {А, Б}
контрагенты = {К, Л}
допустимые сочетания для регистрации = {А/К, Б/Л}

таким образом сочетания А/Л или Б/К запрещены, т.е. документ с "неправильными" сочетаниями не должен регистрироваться !!!

2. В связи с вышеизложенным создан план обмена с табличной частью, содержащей два реквизита: Организация и Контрагент, в таблицу занесены "правильные" сочетания..

3. Есть конфигурация "Конвертация данных 2.1", в которой нужно создать правило регистрации реализаций товаров и услуг..

ОТСЮДА вопрос:
можно ли обойтись без обработчиков событий, а только с помощью (штатного) дерева отбора в Правиле регистрации объекта?..

а если я пишу две строчки в отборе:
Организация  Равно  [Состав].Организация
Контрагент   Равно  [Состав].Контрагент

то в регистрацию попадают "неправильные" сочетания..
1 nordbox
 
03.01.17
08:27
Ради интереса, в чем такая необходимость?
Для начала я бы сделал в одну строчку,
из кучи документов РТУ регистрацию только А/Б и посмотрел что будет,а потом после этого пляски бы устраивал.
2 runoff_runoff
 
03.01.17
08:40
необходимость выгружать реализации из одной базы в поступления в другой.. поэтому такой ограниченный набор сочетаний организаций и контрагентов..

одна строчка "вырождена".. потому что "вхождение" сводится к "равенству"..
3 nordbox
 
03.01.17
08:48
(2) Ну так она у тебя работает?
4 runoff_runoff
 
03.01.17
08:53
(3) так, конечно, работает ;-)
5 nordbox
 
03.01.17
09:08
Тогда для начала сделай тупой перебор табчасти.
Берешь док, проверил соответствие в табчасти и вперед...
6 runoff_runoff
 
03.01.17
09:18
сделал с помощью кода в обработчике ПРО "После обработки"..

СтруктураОтбора = Новый Структура("Организация, Контрагент");

ЗаполнитьЗначенияСвойств(СтруктураОтбора, Объект);

i = 0;

Пока i < Получатели.Количество() Цикл
    Если Получатели[i].Состав.НайтиСтроки(СтруктураОтбора).Количество() = 0 Тогда
        Получатели.Удалить(i);
    Иначе
        i = i + 1;
    КонецЕсли;
КонецЦикла;
7 nordbox
 
03.01.17
09:43
(6) Ну если работает, то удачи ))
С Новым годом! )))

http://umoratv.com/umoristy/nikolai-lukinskii/163-nikolay-lukinskiy-poshel-nafig-s-novym-godom.html