Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: 1с 7.7 ТИС 9.4 код для открытия заявки покупателя

v7: 1с 7.7 ТИС 9.4 код для открытия заявки покупателя
Я
   nekto44
 
06.12.17 - 06:37
Здравствуйте. 1с я только начал изучать, а в программировании под него я совершенный ноль.

Использую обработку Прыг-скок из excel в 1с.
Задача следующая:
В обработке есть выбор создаваемого документа для введенных из Excel данных
Мне требуется чтобы создавалась заявка покупателя.
Если я правильно понял, то вот код отвечающий за эту функцию.

[code]
Если ВидСоздаваемогоДокумента="ЗаявкаПокупателя" Тогда//мои потуги

            
            ДокСоздаваемый=СоздатьОбъект("Документ.ЗаявкаПокупателя");
            ДокСоздаваемый.Новый();    
            ДокСоздаваемый.Автор=глПользователь;
            ДокСоздаваемый.КодОперации=глКО.Закупка;
            
            ДокСоздаваемый.Склад = глЗначениеПоУмолчанию("ОсновнойСклад");
            ДокСоздаваемый.Контрагент = глЗначениеПоУмолчанию("ОсновнойПоставщик");            
            ТипЦен = глЗначениеПоУмолчанию("ОсновнойТипЦенПокупки");
            ДокСоздаваемый.ТипЦен =ТипЦен;             
            ДокСоздаваемый.Валюта = глРубли;
            ДокСоздаваемый.Курс = глКурсДляВалюты(глРубли,ДокСоздаваемый.ДатаДок);
            ДокСоздаваемый.СуммаВклНДС = ТипЦен.ЦенаВклНДС;            
            ДокСоздаваемый.Фирма = глЗначениеПоУмолчанию("ОсновнаяФирма");                            
            ДокСоздаваемый.Записать();
            
            ТЗПРов.ВыбратьСтроки();
            Пока ТЗПРов.ПолучитьСтроку() = 1 Цикл
                ТекТовар = ТЗПРов.Товар;
                ДокСоздаваемый.НоваяСтрока();
                ДокСоздаваемый.ВидТМЦ       = Перечисление.ВидыТМЦ.Товар;
                ДокСоздаваемый.Номенклатура = ТекТовар;
                ДокСоздаваемый.Количество = ТЗПРов.Количество;
                ДокСоздаваемый.Единица = ТекТовар.БазоваяЕдиница;
                ДокСоздаваемый.Коэффициент = 1;
                ДокСоздаваемый.Цена = ТЗПРов.Цена;;
                ДокСоздаваемый.Сумма = ТЗПРов.Цена*ТЗПРов.Количество;    
                глПересчетТаблЧасти(ДокСоздаваемый.ТекущийДокумент(),"Цена");
                ДокСоздаваемый.Записать();                
            КонецЦикла;                    
            СделатьЗапись(ДокСоздаваемый.ТекущийДокумент());
            ОткрытьФорму(ДокСоздаваемый.ТекущийДокумент());        
[/code] 

И опять же если я правильно понял, одна из ошибок содержиться здесь:

[code]
ДокСоздаваемый.КодОперации=глКО.Закупка;
[/code]

после = должно быть совершенно другое значение, но к сожалению я не смог найти никакой информации, какое значение нужно для Заявки покупателя.

Прошу помочь. Заранее спасибо.
 
 
   igorPetrov
 
1 - 06.12.17 - 06:41
(0) Смотри, тип значения "КодОперации" и всё поймешь.
   Рэйв
 
2 - 06.12.17 - 06:42
(0)
1. Вставь
Сообщить("Тип="ТипЗначениеяСтр(ДокСоздаваемый.КодОперации))
перед
ДокСоздаваемый.КодОперации=глКО.Закупка;

2. сам решил начать учить 1С с7.7 или подсказал кто?:-)
   Рэйв
 
3 - 06.12.17 - 06:43
вернее
Сообщить("Тип="+ТипЗначениеяСтр(ДокСоздаваемый.КодОперации))
   Смотрящий
 
4 - 06.12.17 - 06:54
(0) ДокСоздаваемый=СоздатьОбъект("Документ.ЗаявкаПокупателя");
ДокСоздаваемый.Новый();

глЗаполнитьШапку(ДокСоздаваемый, 0, "Продажа");
// потом обновишь нужные поля шапки
   nekto44
 
5 - 06.12.17 - 06:57
Быстро тут у вас отвечают)
Рэйв, спасибо вам за помощь. 

Раньше использовал Контур Эльба, решил перейти на 1с.
Нужно так как ИП.
По-вопросу, ТипЗначени[b]ея[/b]
Если это не синтаксическая ошибка. то при запуске обработки получаю следующее.

[code]
Сообщить("Тип="+ТипЗначениеяСтр<<?>>(ДокСоздаваемый.КодОперации))
{D:\TISIPL\DB\EXTFORMS\IZEV1C.ERT(2238)}: Функция не обнаружена (ТипЗначениеяСтр)
Сообщить("Тип="+ТипЗначениеяСтр(ДокСоздаваемый.КодОперации)<<?>>)
{D:\TISIPL\DB\EXTFORMS\IZEV1C.ERT(2238)}: Неопознанный оператор
<<?>>КонецЕсли;    
{D:\TISIPL\DB\EXTFORMS\IZEV1C.ERT(2269)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
[/code]

До этого обработка запускалась без ошибок.
   Рэйв
 
6 - 06.12.17 - 07:04
(5)Очепятался конечно, неужели не понятно:-)
   Рэйв
 
7 - 06.12.17 - 07:05
клава вдрызг, менять пора, но белые нынче не выпускают, а я привык
   igorPetrov
 
8 - 06.12.17 - 07:06
(5) Не нужно бездумно копировать код.
   nekto44
 
9 - 06.12.17 - 07:16
Рэйв, я догадался что ошибка, но в силу никаких знаний, подумал возможно так и надо, но все же попробовал и с "e" и "я". во всех трех случаях получал ошибки. лишь при "я" получил такую.
[code]
Сообщить("Тип="+ТипЗначенияСтр(ДокСоздаваемый.КодОперации))<<?>>
{D:\TISIPL\DB\EXTFORMS\IZEV1C.ERT(2238)}: Пропущен символ ';'

если добавить в конце ; то ошибка не меняется.

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

Как правильно прятать код под спойлер на сайте? Жаль конечно что редактировать сообщения нельзя.

IgorPetrov, никогда так не делаю. Изначально сам пытаюсь найти любую информацию в интернете, за помощью в крайнем случае обращаюсь.

Возможно для полной картины вам нужен полный кусок процедуры? Могу обработку загрузить на файлопомойку.

Еще раз спасибо вам за помощь
   Рэйв
 
10 - 06.12.17 - 07:23
(9)';' ставится в конце каждой строки. обычно программерами ставится на чистых рефлексах
 
 Рекламное место пустует
   Рэйв
 
11 - 06.12.17 - 07:23
у тебя видимо их еще нет:-)
   Смотрящий
 
12 - 06.12.17 - 07:29
(9) да ладно. глЗаполнитьШапку - процедура глобального модуля ТиС'а, вызывается при интерактивном создании нового документа ЗаявкаПокупателя
   nekto44
 
13 - 06.12.17 - 07:30
Рэйв, у меня пока только умения бездумно копировать и редактировать чужой код.

я вроде сразу добавлял ; прежде чем написать, видимо где то ошибся.

при
[Сообщить("Тип="+ТипЗначенияСтр(ДокСоздаваемый.КодОперации));]

получаю следующее
[
Сообщить("Тип="+ТипЗначенияСтр(ДокСоздаваемый.КодОперации));
{D:\TISIPL\DB\EXTFORMS\IZEV1C.ERT(2238)}: Поле агрегатного объекта не обнаружено (КодОперации)]
   nekto44
 
14 - 06.12.17 - 07:37
Возможно весь код процедуры поможет прояснить ситуацию?

<code>
Процедура ЗаписатьДокумент()
    Если ТЗПРов.КоличествоСтрок()>0 Тогда
        
        
        ВидСоздаваемогоДокумента=ВидНовогоДокумента.ПолучитьЗначение(ВидНовогоДокумента.ТекущаяСтрока());
        
        
        Если ВидСоздаваемогоДокумента="ПоступлениеТМЦ" Тогда//Приходная накладная

            
            ДокСоздаваемый=СоздатьОбъект("Документ.ПоступлениеТМЦ");
            ДокСоздаваемый.Новый();    
            ДокСоздаваемый.Автор=глПользователь;
            ДокСоздаваемый.КодОперации=глКО.Закупка;
            
            ДокСоздаваемый.Склад = глЗначениеПоУмолчанию("ОсновнойСклад");
            ДокСоздаваемый.Контрагент = глЗначениеПоУмолчанию("ОсновнойПоставщик");            
            ТипЦен = глЗначениеПоУмолчанию("ОсновнойТипЦенПокупки");
            ДокСоздаваемый.ТипЦен =ТипЦен;             
            ДокСоздаваемый.Валюта = глРубли;
            ДокСоздаваемый.Курс = глКурсДляВалюты(глРубли,ДокСоздаваемый.ДатаДок);
            ДокСоздаваемый.СуммаВклНДС = ТипЦен.ЦенаВклНДС;            
            ДокСоздаваемый.Фирма = глЗначениеПоУмолчанию("ОсновнаяФирма");                            
            ДокСоздаваемый.Записать();
            
            ТЗПРов.ВыбратьСтроки();
            Пока ТЗПРов.ПолучитьСтроку() = 1 Цикл
                ТекТовар = ТЗПРов.Товар;
                ДокСоздаваемый.НоваяСтрока();
                ДокСоздаваемый.ВидТМЦ       = Перечисление.ВидыТМЦ.Товар;
                ДокСоздаваемый.Номенклатура = ТекТовар;
                ДокСоздаваемый.Количество = ТЗПРов.Количество;
                ДокСоздаваемый.Единица = ТекТовар.БазоваяЕдиница;
                ДокСоздаваемый.Коэффициент = 1;
                ДокСоздаваемый.Цена = ТЗПРов.Цена;;
                ДокСоздаваемый.Сумма = ТЗПРов.Цена*ТЗПРов.Количество;    
                глПересчетТаблЧасти(ДокСоздаваемый.ТекущийДокумент(),"Цена");
                ДокСоздаваемый.Записать();                
            КонецЦикла;                    
            СделатьЗапись(ДокСоздаваемый.ТекущийДокумент());
            ОткрытьФорму(ДокСоздаваемый.ТекущийДокумент());        
            
        ИначеЕсли ВидСоздаваемогоДокумента="ПоступлениеТМЦКомиссия" Тогда//Приходная накладная

            
            ДокСоздаваемый=СоздатьОбъект("Документ.ПоступлениеТМЦ");
            ДокСоздаваемый.Новый();    
            ДокСоздаваемый.Автор=глПользователь;
            ДокСоздаваемый.КодОперации=глКО.ПриемНаРеализацию;
            
            ДокСоздаваемый.Склад = глЗначениеПоУмолчанию("ОсновнойСклад");
            ДокСоздаваемый.Контрагент = глЗначениеПоУмолчанию("ОсновнойПоставщик");            
            ТипЦен = глЗначениеПоУмолчанию("ОсновнойТипЦенПокупки");
            ДокСоздаваемый.ТипЦен =ТипЦен;             
            ДокСоздаваемый.Валюта = глРубли;
            ДокСоздаваемый.Курс = глКурсДляВалюты(глРубли,ДокСоздаваемый.ДатаДок);
            ДокСоздаваемый.СуммаВклНДС = ТипЦен.ЦенаВклНДС;            
            ДокСоздаваемый.Фирма = глЗначениеПоУмолчанию("ОсновнаяФирма");            
            ДокСоздаваемый.Комментарий = "Заведен автоматически "+Строка(ТекущаяДата());                
            ДокСоздаваемый.Записать();
            
            ТЗПРов.ВыбратьСтроки();
            Пока ТЗПРов.ПолучитьСтроку() = 1 Цикл
                ТекТовар = ТЗПРов.Товар;
                ДокСоздаваемый.НоваяСтрока();
                ДокСоздаваемый.ВидТМЦ       = Перечисление.ВидыТМЦ.Товар;
                ДокСоздаваемый.Номенклатура = ТекТовар;
                ДокСоздаваемый.Количество = ТЗПРов.Количество;
                ДокСоздаваемый.Единица = ТекТовар.БазоваяЕдиница;
                ДокСоздаваемый.Коэффициент = 1;
                ДокСоздаваемый.Цена = ТЗПРов.Цена;;
                ДокСоздаваемый.Сумма = ТЗПРов.Цена*ТЗПРов.Количество;    
                глПересчетТаблЧасти(ДокСоздаваемый.ТекущийДокумент(),"Цена");
                ДокСоздаваемый.Записать();    
            КонецЦикла;                    
            СделатьЗапись(ДокСоздаваемый.ТекущийДокумент());
            ОткрытьФорму(ДокСоздаваемый.ТекущийДокумент());      
            
        ИначеЕсли ВидСоздаваемогоДокумента="ЗаявкаПокупателя" Тогда//мои потуги

            
            ДокСоздаваемый=СоздатьОбъект("Документ.ЗаявкаПокупателя");
            ДокСоздаваемый.Новый();    
            ДокСоздаваемый.Автор=глПользователь;
            Сообщить("Тип="+ТипЗначенияСтр(ДокСоздаваемый.КодОперации));
            ДокСоздаваемый.КодОперации=глКО.Закупка; 
            
            
            ДокСоздаваемый.Склад = глЗначениеПоУмолчанию("ОсновнойСклад");
            ДокСоздаваемый.Контрагент = глЗначениеПоУмолчанию("ОсновнойПоставщик");            
            ТипЦен = глЗначениеПоУмолчанию("ОсновнойТипЦенПокупки");
            ДокСоздаваемый.ТипЦен =ТипЦен;             
            ДокСоздаваемый.Валюта = глРубли;
            ДокСоздаваемый.Курс = глКурсДляВалюты(глРубли,ДокСоздаваемый.ДатаДок);
            ДокСоздаваемый.СуммаВклНДС = ТипЦен.ЦенаВклНДС;            
            ДокСоздаваемый.Фирма = глЗначениеПоУмолчанию("ОсновнаяФирма");                            
            ДокСоздаваемый.Записать();
            
            ТЗПРов.ВыбратьСтроки();
            Пока ТЗПРов.ПолучитьСтроку() = 1 Цикл
                ТекТовар = ТЗПРов.Товар;
                ДокСоздаваемый.НоваяСтрока();
                ДокСоздаваемый.ВидТМЦ       = Перечисление.ВидыТМЦ.Товар;
                ДокСоздаваемый.Номенклатура = ТекТовар;
                ДокСоздаваемый.Количество = ТЗПРов.Количество;
                ДокСоздаваемый.Единица = ТекТовар.БазоваяЕдиница;
                ДокСоздаваемый.Коэффициент = 1;
                ДокСоздаваемый.Цена = ТЗПРов.Цена;;
                ДокСоздаваемый.Сумма = ТЗПРов.Цена*ТЗПРов.Количество;    
                глПересчетТаблЧасти(ДокСоздаваемый.ТекущийДокумент(),"Цена"); 
                ДокСоздаваемый.Записать();                
            КонецЦикла;                    
            СделатьЗапись(ДокСоздаваемый.ТекущийДокумент());
            ОткрытьФорму(ДокСоздаваемый.ТекущийДокумент());        
            
        КонецЕсли;        
    КонецЕсли;    
КонецПроцедуры// ЗаписатьДокумент

</code>
   igorPetrov
 
15 - 06.12.17 - 07:43
(14) Посмотри, есть ли у этого документа "КодОперации".
   nekto44
 
16 - 06.12.17 - 07:48
igorPetrov, где это надо посмотреть?
Единственное упоминание заявки покупателя во всем коде модуля 
<code>ВидНовогоДокумента.ДобавитьЗначение("ЗаявкаПокупателя","Заявка Покупателя");</code>

КодОперации не упоминаеться больше нигде, как только в процедуре.
1с 7.7 ТИС 9.4 код для открытия заявки покупателя
   igorPetrov
 
17 - 06.12.17 - 07:52
(16) В дереве конфигурации. И возьми уже книжки почитай хоть чуть.
   Ясный перец
 
18 - 06.12.17 - 07:55
В шапке документа ЗаявкаПокупателя нет реквизита КодОперации. Есть реквизит ВидОперации с типом значения Перечисление.ВидыОперацийЗаявок

В этом перечислении всего три вида:
Неподтвержденная
НаСклад
НаПоставку
   igorPetrov
 
19 - 06.12.17 - 07:56
(18) Чего не дал ему самому посмотреть?
   nekto44
 
20 - 06.12.17 - 07:58
Прошу прощения что туплю, я всю ночь не спал(не из-за этой проблемы).
В 15 сообщении я выложил весь код процедуры.
Я понимаю, что не круто быть таким(посмотрите и сделайте все за меня). Но и научить за час меня кодить под 1с я думаю врятли выйдет.

Я все таки думаю что проблема здесь, ДокСоздаваемый.КодОперации=глКО.Закупка; 

т.к. изначально в обработке можно было создавать только документы поступления и реализации. о чем ДокСоздаваемый.КодОперации и говорит. для поступления он =глКО.Закупка, для реализации=глКО.ПриемНаРеализацию.

Какой кодОперации должен соответствовать неподтвержденной заявки покупателя?
   igorPetrov
 
21 - 06.12.17 - 08:02
(20) Чукча не читатель? Тебе в (18) написали, что нет такого реквизита у Заявкипокупателя.
   h-sp
 
22 - 06.12.17 - 08:07
(20) выкинь эту строчку про код операции.
   Ясный перец
 
23 - 06.12.17 - 08:08
(20) Поучи матчасть всё-таки...
Упомянутый тобой глКО.ПриемНаРеализацию вообще никак не связан с реализацией. Он применяется при поступлении ТМЦ.
И начинай уже думать. Всё, что нужно, написано в (18)
   nekto44
 
24 - 06.12.17 - 08:10
igorPetrov, я не тупой и умею искать и пользоваться информацией из интернета. но я полез туда, где я абсолютный ноль. представьте что вы в ракетостроение полезли.

Данная "форумная проблема" меня всегда вгоняла в ступор. Я в первом сообщения указал, что я полный осел во всем что касается кода и 1с я изучать недавно начал. Но я не тупой человек.

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

Хотя даже при том что я тупой осел в кодинге, я сумел найти строчку где у меня проблема.
   igorPetrov
 
25 - 06.12.17 - 08:11
(20) Прежде чем начинать программировать, нужно хоть маленькое понимание того, что ты делаешь и зачем.
   igorPetrov
 
26 - 06.12.17 - 08:13
(24) Если ты не понимаешь, что значит строка кода учи мат часть, как тебе написали и только потом пробуй программировать. А ты буковки в слове меняешь и ждешь результат.
Ума, что бы строчку с ошибкой найти не нужно от слова совсем, она при выполнении появляется.
   nekto44
 
27 - 06.12.17 - 08:15
Ладно, я понял. ответа я здесь не дождусь. Вы пытаетесь ребенка научить разбирать двигатель автомобиля, за 15 минут.

Про то что у Заявки покупателя должен быть не код а вид я понял. Я по всякому писал примеры из (18)

У меня нихрена не получилось.

Спасибо за помощь.
   nekto44
 
28 - 06.12.17 - 08:19
(26) т.е. ты думаешь что я увидел строчку с ошибкой, и профессионал написал на форум, о том что я сам ее нашел? не думаю что они меня со смеху обоссут за моё вранье? До изменений кода, никаких ошибок 1с не показывал. просто ничего не происходило при нажатии кнопки.

Могу ли я надеяться, что вы просто напишите мне строчку кода, которую я должен вставить, чтобы нужная мне функция заработала?

Нахрена мне учиться программирования в 1с, чтобы добавить 1 функцию в 1 модуль?
   igorPetrov
 
29 - 06.12.17 - 08:22
"Могу ли я надеяться, что вы просто напишите мне строчку кода, которую я должен вставить, чтобы нужная мне функция заработала? " - Нет.

"Нахрена мне учиться программирования в 1с, чтобы добавить 1 функцию в 1 модуль?" - Позовите специалиста.

"У меня нихрена не получилось. "  - просто не понял.

"Спасибо за помощь." - пожалуйста.
   Ясный перец
 
30 - 06.12.17 - 08:24
(27) Ребёнок, не лезь в двигатель! Руки оторвёт! ))
(28) И пойми ты - дело там не в одной строчке. Исправишь эту - полезут "косяки" в следующих.
Тот код, который приведён в (0) вообще мало имеет общего с правилами создания нового документа ЗаявкаПокупателя.

Позови уже специалиста, наконец.
(ничего личного)
   nekto44
 
31 - 06.12.17 - 08:30
Самое интересное что у меня получилось, я зашел в журнал документов(до этого не заходил, т.к. вылезали ошибки).
Там 2 новых документа 1 пустой(в строке документ - пусто).
А второй это неподтвержденная заявка.
Осталось, понять, что из всего того что я добавлял в код, заработало.

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

Нет это не так работает, по стилю письма можно ведь понять, очередной я дятел, которому лень самому разбираться и он просто пришел за ответом. Или человек, который попытался найти проблему, поискал перед тем как задать вопрос информацию и не найдя ее пришел за советом.
   igorPetrov
 
32 - 06.12.17 - 08:36
(31) "по стилю письма можно ведь понять, очередной я дятел, которому лень самому разбираться и он просто пришел за ответом." - Да. Потому, что не думаешь. И не хочешь, а ищешь готовый ответ.
   nekto44
 
33 - 06.12.17 - 08:40
ДокСоздаваемый.ВидОперации=Перечисление.ВидыОперацийЗаявок.Неподтвержденная; 

делает то что надо, но получаю ошибку

<code>
ДокСоздаваемый.ВидТМЦ       = Перечисление.ВидыТМЦ.Товар;
{D:\TISIPL\DB\EXTFORMS\IZEV1C.ERT(2255)}: Поле агрегатного объекта не обнаружено (ВидТМЦ)
</code>
 
 
   Ясный перец
 
34 - 06.12.17 - 08:43
(33) А я предупреждал в (30)
;)
Ну нету в табличной части документа ЗаявкаПокупателя реквизита ВидТМЦ
   igorPetrov
 
35 - 06.12.17 - 08:54
(33) Тебе сказали, учись сначала прежде писанины. Тупое копирование кода ни к чему не приведет. Это исправишь, следующая пойдет, а за ней еще.
   nekto44
 
36 - 06.12.17 - 08:56
igorPetrov, спасибо за ваши искрометные замечания, они мне очень помогли.

Ясный перец, все сделал, работает как надо. Спасибо вам большое.
   igorPetrov
 
37 - 06.12.17 - 08:58
(36) :)))
   nekto44
 
38 - 06.12.17 - 09:05
Я просто сначала не понял что такое виды тмц товар и к чему это относится, потом допер что в заявке покупателя нет такой строки "ВидТМЦ".
Я думал может это как КодОперации, ВидОперации.
Оказалось все проще.

IgorPetrov, про искрометные комментарии был сарказм.
   igorPetrov
 
39 - 06.12.17 - 09:09
(38) Всё сложнее, к сожалению.)
   Масянька
 
40 - 06.12.17 - 09:39
(38) Открой типовую обработку "Пакетный ввод документов". В качестве мат. части может помочь.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует