Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как создать документ из справочника контрагентов?          
4andriy Подменю пользователя
сообщение 25.03.20, 16:24
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 174
Спасибо сказали: 1 раз
Рейтинг: 1

1С 7.7 7.70.027 Предприятие

Есть журнал документов куда нужно зайти и создать документ, тогда выбрать контрагента из справочника и выписать документ.

Как бы реализовать процес наоборот? Зайти в справочник контрагентов и тогда создать для него документ.


 ! 

Правила: 4
 


Сообщение отредактировал Vofka - 25.03.20, 16:30

Prospero Подменю пользователя
сообщение 25.03.20, 22:30
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

4andriy @ Сегодня, 17:24 * ,
А что мешает из модуля справочника создать документ программно? По кнопочке
Документ = СоздатьОбъект("Документ.Ваш_документ");
//...
//...
//...
Документ.Записать();

Sharzem Подменю пользователя
сообщение 26.03.20, 10:29
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

Prospero @ Вчера, 22:30 * ,
Ні, не вірно. В Вашому прикладі будуть створюватися пусті документи які будуть нікому не потрібні.
По перше, в документі в процедурі ПриОткрытии() необхідно:
Процедура ПриОткрытии()
    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
        Если ТипЗначения(Форма.Параметр) = 11 Тогда
            Контрагент = Форма.Параметр;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

По друге, визивати з модуля довідника потрібно наступним чином:
    Если ТекущийЭлемент().ЭтоГруппа() = 0 Тогда
        ОткрытьФорму("Документ.Ваш_документ",ТекущийЭлемент());
    КонецЕсли;

При такому розвитку, введення Нового документу можливо припинити, оскільки відсутній метод Документ.Записать().


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Спасибо сказали: 4andriy,

4andriy Подменю пользователя
сообщение 26.03.20, 19:53
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 174
Спасибо сказали: 1 раз
Рейтинг: 1

Sharzem @ Сегодня, 10:29 * ,
1. додав в ПриОткрытии код щоб дані виділеного контера переносились в новий документ:
Если ПустоеЗначение(ТекущийЭлемент()) = 0 Тогда
Если ТипЗначения(ТекущийЭлемент()) = 11 Тогда
Контрагент = ТекущийЭлемент();
КонецЕсли;
КонецЕсли;


2. знайшов номер документу який мені треба " 7140"

3. написав код:
Процедура накл();
Если ТекущийЭлемент().ЭтоГруппа() = 0 Тогда
ОткрытьФорму("Документ.Накладная.7140",ТекущийЭлемент());
КонецЕсли;
КонецПроцедуры


в результаті при виконанні процедури створюється документ накладна, але документ не заповнений і даних контрагенту немає

4andriy @ Сегодня, 19:41 * ,
тобто задача скопіювати вже створений перед тим заповнений документ і тоді тільки поправити

Prospero Подменю пользователя
сообщение 26.03.20, 21:57
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Sharzem, отчего ж он пустым то будет?
Нет, если создать и потом сразу записать, то будет, согласен smile.gif
Но ТС не указал какой конкретно ему нужно создать документ, а значит, неизвестны конкретные
реквизиты, которые ему нужно заполнять.
Как я понял, ему из справочника Контрагенты нужно создать док с уже заполненными реквизитами данного контрагента?
Так в чем сложность после создания документа программно заполнить реквизиты нужные?
Строки "//....." в моем примере и подразумевают часть кода, заполняющего документ данными из справочника...

Sharzem Подменю пользователя
сообщение 27.03.20, 10:13
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

Цитата(4andriy @ 25.03.20, 16:24) *
выбрать контрагента из справочника и выписать документ

Цитата(4andriy @ 26.03.20, 19:53) *
задача скопіювати вже створений перед тим заповнений документ і тоді тільки поправити

Це все зовсім різне.
Цитата(4andriy @ 26.03.20, 19:53) *
додав в ПриОткрытии код щоб дані виділеного контера переносились

Реалізовано не вірно, оскільки ТекущийЭлемент() для документу в процедурі ПриОткрытии() не є напередвизначеним параметром, доступ до нього можливий лише через Форма.Параметр.
Цитата(4andriy @ 26.03.20, 19:53) *
ОткрытьФорму("Документ.Накладная.7140",ТекущийЭлемент());

Повна несінитниця...
Цитата(Prospero @ 26.03.20, 21:57) *
в моем примере и подразумевают часть кода, заполняющего документ данными из справочника...

Та Ви що.... 47067070.gif

4andriy @ 25.03.20, 16:24 * ,
Опишіть в чому полягає суть завдання. З того, що Ви нагородили вже нічого не зрозуміло.


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

4andriy Подменю пользователя
сообщение 27.03.20, 12:41
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 174
Спасибо сказали: 1 раз
Рейтинг: 1

Sharzem @ Сегодня, 10:13 * ,
1. створити документ - заповнити табличну і інші реквізити
2. дізнатись номер документу через
номердок=ТекущийДокумент();

3. зайти в довідник контрагентів
4. виконати процедуру за якої створиться копія документу за номером і підставиться реквізит "Контрагент"

4andriy Подменю пользователя
сообщение 27.03.20, 17:45
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 174
Спасибо сказали: 1 раз
Рейтинг: 1

код відкриває документ, але не його копію, де вибір накладної реалізований через форму вибору
ОткрытьФорму(Накладная,ТекущийЭлемент());


4andriy Подменю пользователя
сообщение 27.03.20, 23:35
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 174
Спасибо сказали: 1 раз
Рейтинг: 1

4andriy @ Сегодня, 17:45 * ,
Отож,

В Довіднику Контрагенти
Додав Поле ввода з вибором - тип Документ.Накладна (тут можу вибрати в який документ треба підставляти дані контрагента)

В журналі документів є вже створена типова накладна. І щоб не набирати одне і те саме, але лише поправити треба процедуру яка:

Створює копію з документу, який вибраний в Полі ввода і підставляє значення контрагента (реквізит в накладній "Контрагент")

Далі скопіюйований документ можна поправити і при потребі зберегти.

4andriy @ Сегодня, 23:25 * ,
як варіант код який переносить з довідника контрагентів в журнал, а тоді виділяє потрібний документ і тоді копіює, але в цьому випадку не переносяться дані контрагента
Функция кВЖурнал()
    Перем лКонт;
    ОткрытьФорму("Журнал.[Имя журнала].ФормаСписка",лКонт);
    Если ТипЗначения(лКонт)=100 Тогда
        лКонт.УстановитьИнтервал(ДатаДок, ДатаДок);
        лКонт.АктивизироватьОбъект(ТекущийДокумент());

WSHShell = СоздатьОбъект("WScript.Shell");
WSHShell.SendKeys("{F9}");

    КонецЕсли;
КонецФункции

4andriy Подменю пользователя
сообщение 29.03.20, 17:29
Сообщение #10

Завсегдатай
****
Группа: Пользователи
Сообщений: 174
Спасибо сказали: 1 раз
Рейтинг: 1

4andriy @ 27.03.20, 23:35 * ,
получився якийсь такий сирий код)
//добавил в форму справочника контрагентов поле ввода тип документ
//что-бы в форме в поле ввода выбрать документ который будем копировать
Процедура копир()
Если ПустоеЗначение(ТекущийЭлемент())=1 Тогда
Возврат;
КонецЕсли;  
Если ТекущийЭлемент().ЭтоГруппа()=1 Тогда
Возврат;
КонецЕсли;        
Элемент=СоздатьОбъект("Справочник.Контрагенты");
Элемент.найтиЭлемент(ТекущийЭлемент());
ОКПО=КодОКПО;
//открываем журнал всех документов    
ОткрытьФорму("Журнал.Общий");  
//в журнале выделить документ который выбран
АктивизироватьОбъект(копирдок);
//открываем документ
ОткрытьФорму(копирдок,ТекущийЭлемент());
//закрываем документ что-бы в журнале он оказался выделеный
Форма.Закрыть()
//копируем выделеный документ
WSHShell = СоздатьОбъект("WScript.Shell");
WSHShell.SendKeys("{F9}");
//поле контрагент в документе меняем на контрагента с кодом окпо который был выделен в справочнике
Контрагент=ОКПО;
//дальше как обычно правим форму и если надо сохраняем
КонецПроцедуры

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 0:34
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!