Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Nutur
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 4
1

Внешняя обработка для создания документа

25.11.2018, 19:48. Просмотров 2372. Ответов 6
Метки нет (Все метки)

Нужно создать внешнюю обработку для созданию общего заказа поставщику из остальных заказов с выбором периода(Документ Заказ поставщику). Помоги пожалуйста, как нужно правильно создать и заполнить документ.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
&НаКлиенте
Процедура КнопкаВыбораПериода(Команда)
    
  Диалог = Новый ДиалогРедактированияСтандартногоПериода();                                 
    Диалог.Период = Новый СтандартныйПериод(НачПериода, КонПериода);        
    ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("РезультатВыбораПериода",ЭтотОбъект);
    Диалог.Показать(ОписаниеОповещенияОЗакрытии);   
 
КонецПроцедуры
&НаКлиенте
Процедура РезультатВыбораПериода(Результат, ДополнительныеПараметры) Экспорт
 
         Если Результат <> Неопределено Тогда
       НачПериода = Результат.ДатаНачала;
       КонПериода = Результат.ДатаОкончания; 
         КонецЕсли;
 
     КонецПроцедуры
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
&НаСервере
Процедура ОбщийЗаказНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЗаказПоставщикуТовары.Ссылка,
        |   ЗаказПоставщикуТовары.Номенклатура,
        |   ЗаказПоставщикуТовары.Характеристика,
        |   ЗаказПоставщикуТовары.Упаковка,
        |   ЗаказПоставщикуТовары.НоменклатураПоставщика,
        |   ЗаказПоставщикуТовары.КоличествоУпаковок,
        |   ЗаказПоставщикуТовары.Количество,
        |   ЗаказПоставщикуТовары.ВидЦеныПоставщика,
        |   ЗаказПоставщикуТовары.Цена,
        |   ЗаказПоставщикуТовары.Сумма,
        |   ЗаказПоставщикуТовары.ПроцентРучнойСкидки,
        |   ЗаказПоставщикуТовары.СуммаРучнойСкидки,
        |   ЗаказПоставщикуТовары.СтавкаНДС,
        |   ЗаказПоставщикуТовары.СуммаНДС,
        |   ЗаказПоставщикуТовары.СуммаСНДС,
        |   ЗаказПоставщикуТовары.КодСтроки,
        |   ЗаказПоставщикуТовары.Отменено,
        |   ЗаказПоставщикуТовары.СтатьяРасходов,
        |   ЗаказПоставщикуТовары.АналитикаРасходов,
        |   ЗаказПоставщикуТовары.ПричинаОтмены,
        |   ЗаказПоставщикуТовары.Склад,
        |   ЗаказПоставщикуТовары.Назначение,
        |   ЗаказПоставщикуТовары.Подразделение,
        |   ЗаказПоставщикуТовары.СписатьНаРасходы,
        |   ЗаказПоставщикуТовары.Менеджер,
        |   ЗаказПоставщикуТовары.Ссылка.Контрагент,
        |   ЗаказПоставщикуТовары.Ссылка.Соглашение,
        |   ЗаказПоставщикуТовары.Ссылка.Договор
        |ИЗ
        |   Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        |ГДЕ
        |   ЗаказПоставщикуТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
        |   И ЗаказПоставщикуТовары.Ссылка.Партнер = &Партнер
        |   И ЗаказПоставщикуТовары.Ссылка.Организация = &Организация
        |   И ЗаказПоставщикуТовары.Ссылка.ХозяйственнаяОперация = &ХозяйственнаяОперация";
    
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода));
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Партнер", Поставщик);
    Запрос.УстановитьПараметр("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Для каждого рез из РезультатЗапроса Цикл
    НовыйДокумент = Документы.ЗаказПоставщику.СоздатьДокумент();
        НовыйДокумент.Дата = ТекущаяДата();
        НовыйДокумент.Партнер = Поставщик;
        НовыйДокумент.Организация = Организация;
        НовыйДокумент.Контрагент = рез.Контрагент;
        НовыйДокумент.Соглашение = рез.Соглашение;
        НовыйДокумент.Договор = рез.Договор;
        НовыйДокумент.ОбщийЗаказ = Истина;
        
        НовыйДокумент.Записать();
КонецЦикла; 
    
КонецПроцедуры
 
 
&НаКлиенте
     Процедура ОбщийЗаказ(Команда)
         ОбщийЗаказНаСервере();
     КонецПроцедуры
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2018, 19:48
Ответы с готовыми решениями:

Внешняя обработка. Загрузка данных для создания заказов из CSV в 1С 8.3
Здравствуйте. Я новичок в 1С. Нужно создать обработку, которая будет формировать заказы клиента из...

Внешняя обработка, создание документа Заказ Поставщику
Здравствуйте, подскажите, пожалуйста! Во внешней обработке создаю Заказ поставщику на основании...

Внешняя обработка заполнения документа "Заказ покупателя"
Всем опять здравствуйте! Я опять вернулась к этой проблеме, потому что она так и не решилась. ...

Внешняя обработка для копирования документов
Здраствуйте, создаю внешнюю обработку для копирования документов. Не могу понять как застить ее...

Внешняя обработка, не получается загрузить данные в табличную часть документа
Здравствуйте!

6
polax
933 / 610 / 205
Регистрация: 16.01.2015
Сообщений: 2,154
25.11.2018, 21:22 2
Лучший ответ Сообщение было отмечено Nutur как решение

Решение

Nutur,
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
32
33
34
35
36
37
38
39
40
41
42
43
44
&НаСервере
Процедура ОбщийЗаказНаСервере()
    
    Запрос = Новый Запрос;
    //не надо все реквизиты, берите только действительно нужные
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
        |   ЗаказПоставщикуТовары.Характеристика КАК Характеристика,
        |   ЗаказПоставщикуТовары.Упаковка КАК Упаковка,
        |   ЗаказПоставщикуТовары.КоличествоУпаковок КАК КоличествоУпаковок,
        |   ЗаказПоставщикуТовары.Количество КАК Количество,
        |   ЗаказПоставщикуТовары.Цена КАК Цена,
        |   ЗаказПоставщикуТовары.Сумма КАК Сумма,
        |   ЗаказПоставщикуТовары.СтавкаНДС КАК СтавкаНДС,
        |   ЗаказПоставщикуТовары.СуммаНДС КАК СуммаНДС,
        |   ЗаказПоставщикуТовары.СуммаСНДС КАК СуммаСНДС
        |ИЗ
        |   Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        |ГДЕ
        |   ЗаказПоставщикуТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
        |   И ЗаказПоставщикуТовары.Ссылка.Партнер = &Партнер
        |   И ЗаказПоставщикуТовары.Ссылка.Организация = &Организация
        |   И ЗаказПоставщикуТовары.Ссылка.ХозяйственнаяОперация = &ХозяйственнаяОперация";
   //Странно конечно, что условие по партенру а не по контрагенту, но вам виднее 
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода));
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Партнер", Поставщик);
    Запрос.УстановитьПараметр("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    //свернуть ТЗ, чтобы сложить одинаковые позиции из разных заказов 
    РезультатЗапроса.Свернуть("Номенклатура,Характеристика,Упаковка,Цена,СтавкаНДС","КоличествоУпаковок,Количество,Сумма,СуммаНДС,СуммаСНДС";
        НовыйДокумент = Документы.ЗаказПоставщику.СоздатьДокумент();
        НовыйДокумент.Дата = ТекущаяДата();
        НовыйДокумент.Партнер = Поставщик;
        НовыйДокумент.Организация = Организация;
        //ниже заполняем ТЧ нового документа
        НовыйДокумент.Товары.Загрузить(РезультатЗапроса);
        НовыйДокумент.ОбщийЗаказ = Истина; // не знаю, что за реквизит, видимо создан вами
        
        НовыйДокумент.Записать();
КонецЦикла;
0
Nutur
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 4
25.11.2018, 22:22  [ТС] 3
polax, я сделала как Вы сказали, документ создается, но кроме трех реквизитов нечего не заполняется
СозданиеОбщегоЗаказа.rar
0
polax
933 / 610 / 205
Регистрация: 16.01.2015
Сообщений: 2,154
25.11.2018, 22:44 4
Лучший ответ Сообщение было отмечено Nutur как решение

Решение

Nutur, Проверил. ТЧ заполняется. Какие еще надо реквизиты заполнять автоматом?

Добавлено через 9 минут
Если руками не хотите делать, то по аналогии
1C
1
2
НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("Партнер",Поставщик);
    НовыйДокумент.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика;
0
Nutur
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 4
25.11.2018, 22:48  [ТС] 5
polax, Да, все заполняется, не правильный период выбирала. Скажите еще пожалуйста, после того как общий заказ создан, как удалить заказы, которые уже попали в общий заказ?
0
polax
933 / 610 / 205
Регистрация: 16.01.2015
Сообщений: 2,154
25.11.2018, 23:07 6
Лучший ответ Сообщение было отмечено Nutur как решение

Решение

Nutur, ТОгда надо кое-то переделывать:
1. Включите в запрос ЗаказПоставщикуТовары.Ссылка
2. Свертку ТЗ делайте НЕ в РезультатЗапроса (не свернется, Ссылка каждый раз разная ), а в ТЧ документа (там нет ссылки в колонках и ТЧ свернется без проблем)
Т.е.
1C
1
2
НовыйДокумент.Товары.Загрузить(РезультатЗапроса);
НовыйДокумент.Товары.Свернуть("Номенклатура,Характеристика,Упаковка,Цена,СтавкаНДС","КоличествоУпаковок,Количество,Сумма,СуммаНДС,СуммаСНДС");
3. Выгрузите колонку Ссылка из РезультатЗапроса получите массив ссылок
4. Перебором массива в цикле Для Каждого, получайте объект по ссылке и устанавливайте ПометкаУдаления = Истина и запись документа ОтменаПроведения
0
Nutur
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 4
25.11.2018, 23:26  [ТС] 7
polax, Огромное спасибо
0
25.11.2018, 23:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2018, 23:26

Внешняя Обработка (.ert) Для Чеков
Здравсвуйте!! У нас в магазине 1С 7.7 Торговля и склад SQL 2005+ Windows Server 2003 ... Дайте...

внешняя обработка для изменения свойств номенклатуры
1С восьмерка занимаюсь совсем недавно, так что может вопрос и простой, но для меня сложный ) ...

1С ЗУП 3.1 Внешняя обработка печатной формы для Кадровый документ списком
Здравствуйте! Подскажите пожалуйста, кто знает, как правильно добраться до поля Сотрудник.Код (ниже...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru