Форум программистов, компьютерный форум CyberForum.ru

1C 8.x Внешняя обработка для копирования документов - 1С

Войти
Регистрация
Восстановить пароль
 
Steven_92
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 6
10.01.2017, 11:13     1C 8.x Внешняя обработка для копирования документов #1
Здраствуйте, создаю внешнюю обработку для копирования документов.

Не могу понять как застить ее выбрать организацию и подразделение самостоятельно. Что нужно прописать не знаю.
Вот код:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ВсегоДокументов = 0;
    ДокВыборка = Документы.ИнтекоДоговорОПае.Выбрать(Дата("20160101") );
    
    пока (ДокВыборка.Следующий()) и (ДокВыборка.Номер <> 0000000000000000000004318) цикл  
        
        ТекНомер = СокрЛП(ДокВыборка.Номер);
        ТекДата =  ДокВыборка.Дата;
        ВсегоДокументов = ВсегоДокументов + 1;
        
        НовыйДок = Документы.ИнтекоДоговорОПае.СоздатьДокумент();
        НовыйДок = ДокВыборка.Ссылка.Скопировать();
        НовыйДок.УстановитьНовыйНомер();
        НовыйДок.Дата = Дата("20170101");
        НовыйДок.Организация = [I][B]?????[/B][/I]
        НовыйДок.НомерДоговора = ДокВыборка.НомерДоговора;
        НовыйДок.ФизЛицо = ДокВыборка.ФизЛицо;
        НовыйДок.ПодразделениеОрганизации = [I][B]?????[/B][/I]
        НовыйДок.СрокМесяцев = 11;
        НовыйДок.ДатаНачала = Дата("20170101");
        НовыйДок.ДатаОкончания = Дата("20171201");
        НовыйДок.Записать();
        
        Сообщить("Для документа №" + ТекНомер + "; Уже " + ВсегоДокументов + " обработанно " + ТекДата);
        Сообщить("Создан документс  №" +НовыйДок.Номер + "; И датой" + НовыйДок.Дата);
        
    КонецЦикла;
 
 
КонецПроцедуры
????? - на это место нужно подобрать код.

Версия 1С: 8.2
Конфигурация: Управление сельскохозяйственным предприятием, редакция 1.3
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MonteKristo
40 / 40 / 11
Регистрация: 21.08.2015
Сообщений: 153
10.01.2017, 12:01     1C 8.x Внешняя обработка для копирования документов #2
Что то непонятно, сначала присваивается переменной НовыйДок - создание документа, второй строкой присваивается копирование документа, вы все-таки копируете или создаете? Если копируйте, то копируется документ со всеми реквизитами, включая организацию, я так понял нужно чтобы при копировании организация менялась?
Steven_92
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 6
10.01.2017, 12:08  [ТС]     1C 8.x Внешняя обработка для копирования документов #3
Я копирую документы 2016 года. Меняю год на 2017. И еще мне необходимо при копировании изменить организацию. Да вы правильно думаете. Поможете?
MonteKristo
40 / 40 / 11
Регистрация: 21.08.2015
Сообщений: 153
10.01.2017, 13:19     1C 8.x Внешняя обработка для копирования документов #4
А организация одна или несколько может быть? вариант НайтиПоКоду пробовали?
Volexovich
143 / 120 / 17
Регистрация: 24.10.2011
Сообщений: 505
10.01.2017, 13:32     1C 8.x Внешняя обработка для копирования документов #5
Банальщина: на форму вставь поле организация, заполни и подставляй в документы.
Steven_92
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 6
10.01.2017, 13:38  [ТС]     1C 8.x Внешняя обработка для копирования документов #6
MonteKristo, организация одна. Меня интересует как написать сам код. Я просто в 1С программировании новичок, а дело срочное.

Добавлено через 59 секунд
Volexovich, документов много, это мне прийдется каждый раз выбирать организацию по форме?
MonteKristo
40 / 40 / 11
Регистрация: 21.08.2015
Сообщений: 153
10.01.2017, 13:43     1C 8.x Внешняя обработка для копирования документов #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
По поводу кода:
НовыйДок.Организация = Справочник.Организации.НайтиПоКоду("Тут код организации");
код организации можно посмотреть в самом справочнике.
Steven_92
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 6
10.01.2017, 13:49  [ТС]     1C 8.x Внешняя обработка для копирования документов #8
MonteKristo, не получается. Ругается:

{Форма.Форма.Форма(17,26)}: Переменная не определена (Справочник)
НовыйДок.Организация = <<?>>Справочник.Организации.НайтиПоКоду("000000002"); (Проверка: Толстый клиент (обычное приложение))
MonteKristo
40 / 40 / 11
Регистрация: 21.08.2015
Сообщений: 153
10.01.2017, 13:53     1C 8.x Внешняя обработка для копирования документов #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Справочники
Steven_92
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 6
10.01.2017, 14:34  [ТС]     1C 8.x Внешняя обработка для копирования документов #10
MonteKristo, точно. Спасибо огромное

Добавлено через 2 минуты
Для будущих просматривающих. Код такой:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ВсегоДокументов = 0;
    ДокВыборка = Документы.ИнтекоДоговорОПае.Выбрать(Дата("20160101") );
    
    пока (ДокВыборка.Следующий()) и (ДокВыборка.Номер <> 000000000000000000004318) цикл  
        
        ТекНомер = СокрЛП(ДокВыборка.Номер);
        ТекДата =  ДокВыборка.Дата;
        ВсегоДокументов = ВсегоДокументов + 1;
        
        НовыйДок = Документы.ИнтекоДоговорОПае.СоздатьДокумент();
        НовыйДок = ДокВыборка.Ссылка.Скопировать();
        НовыйДок.УстановитьНовыйНомер();
        НовыйДок.Дата = Дата("20160101");
        НовыйДок.Организация = Справочники.Организации.НайтиПоКоду("000000002");
        НовыйДок.НомерДоговора = ДокВыборка.НомерДоговора;
        НовыйДок.ФизЛицо = ДокВыборка.ФизЛицо;
        НовыйДок.ПодразделениеОрганизации = Справочники.Подразделения.НайтиПоКоду("000000042");     
        НовыйДок.СрокМесяцев = 11;
        НовыйДок.ДатаНачала = Дата("20170101");
        НовыйДок.ДатаОкончания = Дата("20171201");
        НовыйДок.Записать();
        
        Сообщить("Для документа №" + ТекНомер + "; Уже " + ВсегоДокументов + " обработанно " + ТекДата);
        Сообщить("Создан документс  №" +НовыйДок.Номер + "; И датой" + НовыйДок.Дата);
        
    КонецЦикла;
 
 
КонецПроцедуры
Добавлено через 35 минут
MonteKristo, Спасибо что помогли, еще вопрос возник. С подразделением это не работает. Просто пустым оставляет и все. Наверное потому что в справочнике нет отбора по коду. Есть идеи как вписать подразделение?

Добавлено через 15 секунд
MonteKristo, Спасибо что помогли, еще вопрос возник. С подразделением это не работает. Просто пустым оставляет и все. Наверное потому что в справочнике нет отбора по коду. Есть идеи как вписать подразделение?
MonteKristo
40 / 40 / 11
Регистрация: 21.08.2015
Сообщений: 153
10.01.2017, 14:42     1C 8.x Внешняя обработка для копирования документов #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Справочник называется ПодразделенияОрганизаций.
То есть должно быть так
НовыйДок.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000042");
Volexovich
143 / 120 / 17
Регистрация: 24.10.2011
Сообщений: 505
10.01.2017, 16:15     1C 8.x Внешняя обработка для копирования документов #12
У тебя один отбор
1C
1
(ДокВыборка.Номер <> 4318)
, а это значит что можешь тупо на форму воткнуть поле, назвать его Организация, установить связь со справочником организации и перед запуском обработки указывать организацию вручную.
Только проверку не забудь типа
1C
1
Если Организация.Пустая() Тогда Возврат; КонецЕсли;
То же самое сделай с подразделением.

PS Кстати, там надо пересчитывать документ после смены организации и подразделения, погляди стандартную обработку смены организации/подразделения и выполни те же действия.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2017, 18:47     1C 8.x Внешняя обработка для копирования документов
Еще ссылки по теме:

1С Внешняя обработка, создание формы
1С Дополнительные свойста для любого из документов
Внешняя печатная форма для реестра 1С
1С 1C 8.x Обработка по подсчету элементов справочников и документов в ИБ
Внешняя обработка из Далион 1С 1C 8.x

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Steven_92
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 6
10.01.2017, 18:47  [ТС]     1C 8.x Внешняя обработка для копирования документов #13
MonteKristo, Спасибо. Прокатило. Вы меня спасли прям. Сам проглядел, топчусь на одном месте.
Volexovich, Да у вас вроде хороший вариант. Но я в коде 1С новичок. Максимум что осилил, то что вверху. Для меня только такой вариант прост. Спасибо за Сообщение. Позще попробую как у вас сделать для саморазвития.
Yandex
Объявления
10.01.2017, 18:47     1C 8.x Внешняя обработка для копирования документов
Ответ Создать тему
Опции темы

Текущее время: 12:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru