Ошибка при вызове метода контекста заполнить

печатная форма. Несоответствие типов (параметр номер ‘1’)
Ø (Волшебник 25.06.2018 15:49) ☑ 0

Droning

25.06.18

13:02

{ВнешняяОбработка.СчетНаОплатуСПечатьюАльянс.МодульОбъекта(361)}: Ошибка при вызове метода контекста (Заполнить)

            ОбластьМакета.Параметры.Заполнить(«АдресОрганизацииШапка»);

по причине:

Несоответствие типов (параметр номер ‘1’)

Добрый день. в чем может быть косяк?

1

Darych

25.06.18

13:04

в несоответствии типа первого параметра

2

singlych

25.06.18

13:05

ПараметрыМакетаТабличногоДокумента (SpreadsheetDocumentTemplateParameters)

Заполнить (Fill)

Синтаксис:

Заполнить(<Объект>)

Параметры:

<Объект> (обязательный)

Тип: Произвольный.

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

Описание:

Заполняет параметры значениями свойств переданного объекта. Заполняются только те параметры, имена которых совпадают с именами свойств объекта.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

Пример:

К=0;

Пока Выборка.Следующий() Цикл

    К = К+1;

    ОбластьМакета = Макет.ПолучитьОбласть(«Строка»);

    ОбластьМакета.Параметры.Заполнить(Выборка);

    ОбластьМакета.Параметры.НомерСтроки = К;

    ТабДок.Вывести(ОбластьМакета);

КонецЦикла;

3

Волшебник

25.06.18

13:06

(1) Шаман!

4

Droning

25.06.18

13:08

Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            ДанныеПечатиШапкаЭконотел = Новый Структура;

                    ДанныеПечатиШапкаЭконотел.Вставить(«АдресОрганизациииШапка», СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаЭконотел.Вставить(«НазваниеОрганизациииШапка», СведенияОПолучателе.ПолноеНаименование);

              ОбластьМакета.Параметры.Заполнить(АдресОрганизациииШапка);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизациииШапка);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел);

                    ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            
            ТабличныйДокумент.Вывести(ОбластьМакета);

            
        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            ДанныеПечатиШапкаГорлинии = Новый Структура;

            ДанныеПечатиШапкаГорлинии.Вставить(АдресОрганизацииШапка, СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаГорлинии.Вставить(НазваниеОрганизацииШапка, СведенияОПолучателе.ПолноеНаименование);

            ОбластьМакета.Параметры.Заполнить(АдресОрганизацииШапка);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизацииШапка);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорлинии);

                    ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорЛинии»);

                        ТабличныйДокумент.Вывести(ОбластьМакета);

            
        КонецЕсли;

5

Droning

25.06.18

13:09

если так, то переменная не определена ни АдресОрганизацииШЩапка ни НазваниеОрганизацииШапка

6

Darych

25.06.18

13:11

в условие небось не заходит.. там же у тя иначеесли

7

Droning

25.06.18

13:13

(6) и как быть?

8

Droning

25.06.18

13:14

у меня 2 шапки, надо при выставлении счета от одной организации высвечивалось лого этой организации , ее адрес и название. для второй соответственно так же

9

Mankubus

25.06.18

13:14

(5) читал (2)? Нужно передать объект а не просто значение

Иди сразу сделай присваиванием область. Параметры. Парам = значениеПарам

10

Droning

25.06.18

13:20

(9) читал. как передать объект то? в макете это поле определено как параметр. нужно создать соответствующий реквизит?

11

catena

25.06.18

13:22

(5)Определи их.

12

Droning

25.06.18

13:41

// Выводим шапку счета

        ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет);

        
        СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Получатель, СведенияОДокументе.ДатаДляПолученияСведений);

         АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «ЮридическийАдрес»);

        НазваниеОРганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «НаименованиеДляПечатныхФорм»);        

        
        
        Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            ДанныеПечатиШапкаЭконотел = Новый Структура;

            
                    ДанныеПечатиШапкаЭконотел.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаЭконотел.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

              ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел);

                    ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            
            ТабличныйДокумент.Вывести(ОбластьМакета);

            
        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            ДанныеПечатиШапкаГорлинии = Новый Структура;

            ДанныеПечатиШапкаГорлинии.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаГорлинии.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

            ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорлинии);

        //АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(

        //    СведенияОбОрганизации, «НаименованиеДляПечатныхФорм,ЮридическийАдрес»);

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорЛинии»);

            //ДанныеПечатиШапкаГорЛинии.Вставить(«АдресОрганизации», АдресОрганизации);

            //ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорЛинии);

            ТабличныйДокумент.Вывести(ОбластьМакета);

13

Волшебник

25.06.18

13:43

(12) Не надо зашивать конкретные ИНН в программный код

ООО «Эконотел» (ИНН 7715990969, ОГРН 1147746091580), Москва

14

Droning

25.06.18

13:47

(13) мне сказали сделать так, привязать лого к инн

15

Droning

25.06.18

13:48

(13) вопрос в том, почему несоответствие типов вылезает, уже после того как я определил переменные

16

Droning

25.06.18

13:48

{ВнешняяОбработка.СчетНаОплатуСПечатьюАльянс.МодульОбъекта(362)}: Ошибка при вызове метода контекста (Заполнить)

            ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

по причине:

Несоответствие типов (параметр номер ‘1’)

17

Волшебник

25.06.18

13:50

(14) Надо завести справочник или регистр сведений Логотипы или добавить реквизит «Логотип» в спр. «Организации».

(16) Научись уже пользоваться отладчиком. Поставь точку останова и посмотри.

18

Darych

25.06.18

13:53

АдресОрганизации — в топку, как структуру называл?

19

Droning

25.06.18

13:56

(18) закомментривал строчки  ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

если ты это имел ввиду. Ошибок не выдает, однако на печати ни адреса ни названия

20

Darych

25.06.18

13:57

ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел )

21

Droning

25.06.18

13:58

(20) и?

22

Darych

25.06.18

13:59

и иди в жопу

23

Droning

25.06.18

14:02

(22) Исправил в макете имя параметра на ДанныеПечатиШапкаЭконотел. Спасибо за верный посыл)))

24

фросия

25.06.18

14:03

(22) сработало!

25

Droning

25.06.18

14:05

(24) теперь впринципе все ответы на форуме можно свести к такому варианту) Животворящее иди в жопу спасет всех ламеров.

26

Droning

25.06.18

14:07

{ВнешняяОбработка.СчетНаОплатуСПечатьюАльянс.МодульОбъекта(73)}: Ошибка при вызове метода контекста (ВыполнитьПакет)

    РезультатЗапроса = Запрос.ВыполнитьПакет();

по причине:

{(46, 17)}: Поле не найдено «СчетНаОплату.ЗаРуководителяПоПриказу»

СчетНаОплату.<<?>>ЗаРуководителяПоПриказу КАК ЗаРуководителяПоПриказу,

27

Droning

25.06.18

14:13

а такое как решается?

28

Droning

25.06.18

14:13

{(46, 17)} что значат эти значения?

29

hhhh

25.06.18

14:15

(26) сначала определись, что такое у тебя СчетНаОплату.  ??

30

фросия

25.06.18

14:16

(28) обычно номер строки на котором спотыкнулся отладчик

31

Волшебник

25.06.18

14:17

(22) Великий Гуру!

32

Droning

25.06.18

14:18

(29) решил проблему. Привет, hhhh!

Но почему-то в печати опять таки нет поля ДанныеПечатиШапкаЭконотел. В печати нужная инфа отсутствует.

Ребят, я понимаю, что никому не интересно отвечать на глупые вопросы. Но все же очень прошу помочь(

33

фросия

25.06.18

14:19

(32) отладчик. используй его!

34

Droning

25.06.18

14:19

(33) а как его использовать с внешними печатными формами? значения не заполняются

35

фросия

25.06.18

14:22

(34) открой ВПФ просто как обработку.  и отлаживай

36

Darych

25.06.18

14:23

(35) ща будут вопрос «она не открывается»…

Путевку повторить?

37

фросия

25.06.18

14:24

(36) подождите, может у него еще действие первой не закончилось

38

Волшебник

25.06.18

14:24

(36) Великий Гуру не повторяется. Сказанного достаточно. Sapienti sat.

39

Droning

25.06.18

14:25

(35) отладка пошла.

40

Droning

25.06.18

14:27

Структура  ДанныеПечатиШапкаЭконотел заполнена как надо…

41

hhhh

25.06.18

14:39

(40) а вы точно уверены что АдресОрганизациииШапка — это то, что надо? три буквы и подряд ??

42

Droning

25.06.18

14:44

(41) // Выводим шапку счета

        ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет);

        
        СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Получатель, СведенияОДокументе.ДатаДляПолученияСведений);

         АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «ЮридическийАдрес»);

        НазваниеОРганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «НаименованиеДляПечатныхФорм»);        

        
        
        Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            
            
                    ДанныеПечатиШапкаЭконотел = Новый Структура;

            
                    ДанныеПечатиШапкаЭконотел.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

                    ДанныеПечатиШапкаЭконотел.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

                
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел);

                                
            ТабличныйДокумент.Вывести(ОбластьМакета);

            
        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            
            
                    ДанныеПечатиШапкаГорлинии = Новый Структура;

                    ДанныеПечатиШапкаГорлинии.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

                    ДанныеПечатиШапкаГорлинии.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

        
        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорлинии);

                
              ТабличныйДокумент.Вывести(ОбластьМакета);

            
        КонецЕсли;

43

Droning

25.06.18

14:44

в данный момент код выглядит так

44

фросия

25.06.18

14:53

а макет?

45

Droning

25.06.18

14:58

46

фросия

25.06.18

14:58

а где в макете

АдресОрганизации

НазваниеОрганизации

?

47

фросия

25.06.18

15:01

как у вас параметр в макете называется — тот параметр и заполняйте в программе

тип параметра примитивный: число, строка.

вот интересно, у вас два параметра, вы его как хотели увидеть

АдресНазвание

или НазваниеАдрес?

или Название и с новой строки адрес, сами подумайте как вам программа должна структуру вывести в строку?

48

Droning

25.06.18

15:09

(47) тогда мне вообще никакая структура не нужна же?

// Выводим шапку счета

        ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет);

        
        СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Получатель, СведенияОДокументе.ДатаДляПолученияСведений);

         АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «ЮридическийАдрес»);

        НазваниеОРганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «НаименованиеДляПечатныхФорм»);        

        
        
        Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            
            
                ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

                ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

                
                                
            ТабличныйДокумент.Вывести(ОбластьМакета);

            
        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            
            
                    ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

                ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

        
        
                
                
              ТабличныйДокумент.Вывести(ОбластьМакета);

            
        КонецЕсли;

49

Droning

25.06.18

15:09

если так, то выдает ошибку по несоответствию типов параметр номер1

50

Droning

25.06.18

15:34

(47) как очевидно задать тип параметра?

51

Darych

25.06.18

15:37

ОбластьМакета.ТвойДолбанныйПараметр = ТвоеБлинЗначение

52

Droning

25.06.18

15:43

(51) ОбластьМакета.ТабличныйДокумент = НазваниеОрганизации;

                 ОбластьМакета.ТабличныйДокумент = АдресОрганизации;

так?

53

Darych

25.06.18

15:44

до свиданья

54

Droning

25.06.18

15:44

ОбластьМакета.НазваниеОрганизации = ТабличныйДокумент;

                 ОбластьМакета.АдресОрганизации = ТабличныйДокумент;  

точнее так?

55

Darych

25.06.18

15:44

не.. лучче прощай

56

Малыш Джон

25.06.18

15:48

… и Droning рисует на своем борту очередную звездочку!

Boom! Headshot!

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

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;
Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;
Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Синтакс-помощник
Синтакс-помощник

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

Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

Ошибка по причине Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.

Изучив статью, вы:

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

В какой момент выходит ошибка

Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:

Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.

Рассмотрим причины ее возникновения и исправление на конкретном примере.

Ошибка в таблице запроса

При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».

В окне сообщений уже указано место возникновения ошибки: Несоответствие типов Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

Для исправления ошибки необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы указанную строчку.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1 С Предприятие:

Из описания видно, что команда СрезПоследних имеет 2 параметра:

  • Период;
  • Отбор.

Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).

После исправления команды запустите отчет в 1 С Бухгалтерия по кнопке Главное меню — Файл — Открыть:

Теперь отчет формируется правильно!

Исправление ошибки в команде 1С

При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2):

1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR.

Для ее исправления необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы строчку с командой НайтиПоСсылкам.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:

  • СписокСсылок;
  • ОбластьПоиска;
  • ВключитьОбъекты;
  • ИсключитьОбъекты.

Параметр ОбластьПоиска имеет тип «массив», а в нашем примере указано число 1: НайтиПоСсылкам(МассивПоиска, 1, , МассивИсключений)Область поиска — необязательный параметр, поэтому исправленная команда может выглядеть следующим образом: НайтиПоСсылкам(МассивПоиска,  ,  , МассивИсключений).

После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть:

Теперь команда поиска ссылок на контрагента отрабатывает правильно.

Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

Ошибка Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.

Изучив статью, вы:

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

Содержание

  • Несоответствие типов в 1С 8.3
    • Ошибка в таблице запроса
    • Исправление ошибки в команде 1С

Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:

Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.

Рассмотрим причины ее возникновения и исправление на конкретном примере.

Ошибка в таблице запроса

При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».

В окне сообщений уже указано место возникновения ошибки: Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

Для исправления ошибки необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы указанную строчку.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Из описания видно, что команда СрезПоследних имеет 2 параметра:

  • Период;
  • Отбор.

Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).

После исправления команды запустите отчет в 1С по кнопке Главное меню — Файл — Открыть:

Теперь отчет формируется правильно!

Скачать внешний отчет Вывод списка цен номенклатуры

Исправление ошибки в команде 1С

При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2):

1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR.

Для ее исправления необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы строчку с командой НайтиПоСсылкам.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:

  • СписокСсылок;
  • ОбластьПоиска;
  • ВключитьОбъекты;
  • ИсключитьОбъекты.

Параметр ОбластьПоиска имеет тип «массив», а в нашем примере указано число 1: НайтиПоСсылкам(МассивПоиска, 1, , МассивИсключений). Область поиска — необязательный параметр, поэтому исправленная команда может выглядеть следующим образом: НайтиПоСсылкам(МассивПоиска,  ,  , МассивИсключений).

После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть:

Теперь команда поиска ссылок на контрагента отрабатывает правильно.

Скачать внешний отчет Поиск ссылок на контрагента

Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике!

См. также:

  • Неоднозначное поле в запросе
  • Исправление технических ошибок при работе с 1С:Бухгалтерия: для начинающих и опытных пользователей
  • Метод объекта не обнаружен
  • Неизвестный идентификатор формы
  • Переменная не определена

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы Бухэксперт8, записи поддерживающих эфиров и вы сможете задавать любые вопросы по программе 1С.

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Содержание:

1.       Несоответствие типов данных

2.       Ошибка внутри таблицы в запросе

3.       Причина ошибки внутри команды

Приветствую, коллеги! В данной статье рассмотрим понятие и описание типа данных и переменных в системе 1С версии 8.3. Также поговорим о распространенной ошибке «Несоответствие типов», изложим инструкцию с по ее устранению. 


1.    Несоответствие типов данных

Тип – это характеристика у значения, которая определяет поведение и свойства, которые имеет данное значение.

В командах внутри системы 1С параметры имеют некую специальную очерёдность, а также все параметры имеют ссылку на данные, которые связаны с каким-либо типом. В случае, когда какой-то из параметров находится в неположенном месте, либо название не соответствует типу, выполняются невозможные действия для конкретного типа – появляется сообщение, в котором говорится о несоответствии типов данных (показано на скриншоте ниже):

Сообщение об ошибке несоответствии типов

Рис. 1 Сообщение об ошибке несоответствии типов

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

2.    Ошибка внутри таблицы в запросе

Рассмотрим пример: при чтении цен из номенклатуры согласно регистру данных «Цены номенклатуры» с общего внешнего отчёта всплывает ошибка «Неоднозначное поле «ТипЦен.Номенклатура».

Ошибка Неоднозначное поле

Рис. 2 Ошибка Неоднозначное поле

Видим, что в окне с сообщением о неполадке указано место в коде, где возникла ошибка несоответствия типов: «Параметр номер «1», в строчке вида:

«РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

Чтобы устранить данную ошибку в первую очередь откроем конфигурацию с данным отчётом и найдем внутри кода с формой строчку, которая была приведена выше:

Исправление ошибки несоответствия типов (Параметр номер 1)

Рис. 3 Исправление ошибки несоответствия типов (Параметр номер 1)

При помощи «Синтаксис-Помощника», в меню конфигурации 1С можно сверить, насколько правильно была написана команда:

Исправление ошибки несоответствия типов

Рис. 4 Проверка написания команды с помощью Синтаксис-Помощника

Согласно описанию, в команде «СрезПоследних» находится два параметра: «Отбор» и «Период».

В случае, когда параметр «Период» не был указан, в данной команде будет пустое поле, а после запятой будет написан параметр для отбора. Для нашего примера этим параметром будет «ТипЦен». После правок команда видоизменится так: «СрезПоследних(,ТипЦен = &ТипЦен).

Исправление команды СрезПоследних

Рис. 5 Исправление команды СрезПоследних

После того как команда СрезПоследних была исправлена, стоит снова сформировать отчёт из «Главное меню → Файл → Открыть». 

3.    Причина ошибки внутри команды

Имеем такую ошибку: когда происходит поиск вариантов ссылок на контрагента в отчёте системы 1С, то возникает ошибка «Несоответствие типов (параметр номер «2»), как на скриншоте ниже:

Несоответствие типов

Рис. 6 Несоответствие типов (параметр номер «2»)

В системе 1С указано то место, где произошла неполадка – это недопустимый параметр номер 2, если кликнуть на кнопку «ERROR». Чтобы её исправить нужно запустить отчёт в конфигураторе системы 1С, далее ищем форму строчки, в которой написана команда «НайтиПоСсылкам», внутри модуля.

Команда НайтиПоСсылкам внутри модуля

Рис. 7 Команда НайтиПоСсылкам внутри модуля

Можно проверить верность того, как написана команда при помощи «Синтаксис-Помощника» в панели меню системы 1С, кнопка будет выделена:

Команда НайтиПоСсылкам

Рис. 8 Команда НайтиПоСсылкам в Синтаксис-Помощнике

По описанию следует: в команде «НайтиПоСсылкам» находится такие четыре параметра: СписокСсылок, ИсключитьОбъекты, ВключитьОбъекты и ОбластьПоиска.

В параметре с названием «ОбластьПоиска» будет тип «массив», в примере указана единица. Параметр «ОбластьПоиска» — не является обязательным, так что команда, которую исправили будет иметь следующий новый вид: НайтиПоСсылкам(МассивПоиска, , , МассивИсключений).

Тип массив в НайтиПоСсылкам

Рис. 9 Тип массив в НайтиПоСсылкам

Далее запускаем наш отчёт в системе 1С.

После наших действий команда работает исправно и ошибки нет.

 НайтиПоСсылкам

Рис. 10 Проверка на наличие ошибок в системе конфигурации 1С


В данной статье было рассмотрено как устранить ошибку несоответствия типов в 1С. На примерах была устранена эта ошибка для запроса и для команды. По данному алгоритму можно всегда устранять данную ошибку.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

  

Droning

25.06.18 — 13:02

{ВнешняяОбработка.СчетНаОплатуСПечатьюАльянс.МодульОбъекта(361)}: Ошибка при вызове метода контекста (Заполнить)

            ОбластьМакета.Параметры.Заполнить(«АдресОрганизацииШапка»);

по причине:

Несоответствие типов (параметр номер ‘1’)

Добрый день. в чем может быть косяк?

  

Darych

1 — 25.06.18 — 13:04

в несоответствии типа первого параметра

  

singlych

2 — 25.06.18 — 13:05

ПараметрыМакетаТабличногоДокумента (SpreadsheetDocumentTemplateParameters)

Заполнить (Fill)

Синтаксис:

Заполнить(<Объект>)

Параметры:

<Объект> (обязательный)

Тип: Произвольный.

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

Описание:

Заполняет параметры значениями свойств переданного объекта. Заполняются только те параметры, имена которых совпадают с именами свойств объекта.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

Пример:

К=0;

Пока Выборка.Следующий() Цикл

    К = К+1;

    ОбластьМакета = Макет.ПолучитьОбласть(«Строка»);

    ОбластьМакета.Параметры.Заполнить(Выборка);

    ОбластьМакета.Параметры.НомерСтроки = К;

    ТабДок.Вывести(ОбластьМакета);

КонецЦикла;

  

Волшебник

3 — 25.06.18 — 13:06

(1) Шаман!

  

Droning

4 — 25.06.18 — 13:08

Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            ДанныеПечатиШапкаЭконотел = Новый Структура;

                    ДанныеПечатиШапкаЭконотел.Вставить(«АдресОрганизациииШапка», СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаЭконотел.Вставить(«НазваниеОрганизациииШапка», СведенияОПолучателе.ПолноеНаименование);

              ОбластьМакета.Параметры.Заполнить(АдресОрганизациииШапка);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизациииШапка);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел);

                    ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            
            ТабличныйДокумент.Вывести(ОбластьМакета);

            

        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            ДанныеПечатиШапкаГорлинии = Новый Структура;

            ДанныеПечатиШапкаГорлинии.Вставить(АдресОрганизацииШапка, СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаГорлинии.Вставить(НазваниеОрганизацииШапка, СведенияОПолучателе.ПолноеНаименование);

            ОбластьМакета.Параметры.Заполнить(АдресОрганизацииШапка);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизацииШапка);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорлинии);

                    ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорЛинии»);

                        ТабличныйДокумент.Вывести(ОбластьМакета);

            
        КонецЕсли;

  

Droning

5 — 25.06.18 — 13:09

если так, то переменная не определена ни АдресОрганизацииШЩапка ни НазваниеОрганизацииШапка

  

Darych

6 — 25.06.18 — 13:11

в условие небось не заходит.. там же у тя иначеесли

  

Droning

7 — 25.06.18 — 13:13

(6) и как быть?

  

Droning

8 — 25.06.18 — 13:14

у меня 2 шапки, надо при выставлении счета от одной организации высвечивалось лого этой организации , ее адрес и название. для второй соответственно так же

  

Mankubus

9 — 25.06.18 — 13:14

(5) читал (2)? Нужно передать объект а не просто значение

Иди сразу сделай присваиванием область. Параметры. Парам = значениеПарам

  

Droning

10 — 25.06.18 — 13:20

(9) читал. как передать объект то? в макете это поле определено как параметр. нужно создать соответствующий реквизит?

  

catena

11 — 25.06.18 — 13:22

(5)Определи их.

  

Droning

12 — 25.06.18 — 13:41

// Выводим шапку счета

        ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет);

        

        СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Получатель, СведенияОДокументе.ДатаДляПолученияСведений);

         АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «ЮридическийАдрес»);

        НазваниеОРганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «НаименованиеДляПечатныхФорм»);        

        

        
        Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            ДанныеПечатиШапкаЭконотел = Новый Структура;

            

                    ДанныеПечатиШапкаЭконотел.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаЭконотел.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

              ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел);

                    ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            
            ТабличныйДокумент.Вывести(ОбластьМакета);

            

        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            ДанныеПечатиШапкаГорлинии = Новый Структура;

            ДанныеПечатиШапкаГорлинии.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

        ДанныеПечатиШапкаГорлинии.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

            ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорлинии);

        //АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(

        //    СведенияОбОрганизации, «НаименованиеДляПечатныхФорм,ЮридическийАдрес»);

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорЛинии»);

            //ДанныеПечатиШапкаГорЛинии.Вставить(«АдресОрганизации», АдресОрганизации);

            //ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорЛинии);

            ТабличныйДокумент.Вывести(ОбластьМакета);

  

Волшебник

13 — 25.06.18 — 13:43

(12) Не надо зашивать конкретные ИНН в программный код

ООО «Эконотел» (ИНН 7715990969, ОГРН 1147746091580), Москва

  

Droning

14 — 25.06.18 — 13:47

(13) мне сказали сделать так, привязать лого к инн

  

Droning

15 — 25.06.18 — 13:48

(13) вопрос в том, почему несоответствие типов вылезает, уже после того как я определил переменные

  

Droning

16 — 25.06.18 — 13:48

{ВнешняяОбработка.СчетНаОплатуСПечатьюАльянс.МодульОбъекта(362)}: Ошибка при вызове метода контекста (Заполнить)

            ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

по причине:

Несоответствие типов (параметр номер ‘1’)

  

Волшебник

17 — 25.06.18 — 13:50

(14) Надо завести справочник или регистр сведений Логотипы или добавить реквизит «Логотип» в спр. «Организации».

(16) Научись уже пользоваться отладчиком. Поставь точку останова и посмотри.

  

Darych

18 — 25.06.18 — 13:53

АдресОрганизации — в топку, как структуру называл?

  

Droning

19 — 25.06.18 — 13:56

(18) закомментривал строчки  ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

          ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

если ты это имел ввиду. Ошибок не выдает, однако на печати ни адреса ни названия

  

Darych

20 — 25.06.18 — 13:57

ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел )

  

Droning

21 — 25.06.18 — 13:58

(20) и?

  

Darych

22 — 25.06.18 — 13:59

и иди в жопу

  

Droning

23 — 25.06.18 — 14:02

(22) Исправил в макете имя параметра на ДанныеПечатиШапкаЭконотел. Спасибо за верный посыл)))

  

фросия

24 — 25.06.18 — 14:03

(22) сработало!

  

Droning

25 — 25.06.18 — 14:05

(24) теперь впринципе все ответы на форуме можно свести к такому варианту) Животворящее иди в жопу спасет всех ламеров.

  

Droning

26 — 25.06.18 — 14:07

{ВнешняяОбработка.СчетНаОплатуСПечатьюАльянс.МодульОбъекта(73)}: Ошибка при вызове метода контекста (ВыполнитьПакет)

    РезультатЗапроса = Запрос.ВыполнитьПакет();

по причине:

{(46, 17)}: Поле не найдено «СчетНаОплату.ЗаРуководителяПоПриказу»

СчетНаОплату.<<?>>ЗаРуководителяПоПриказу КАК ЗаРуководителяПоПриказу,

  

Droning

27 — 25.06.18 — 14:13

а такое как решается?

  

Droning

28 — 25.06.18 — 14:13

{(46, 17)} что значат эти значения?

  

hhhh

29 — 25.06.18 — 14:15

(26) сначала определись, что такое у тебя СчетНаОплату.  ??

  

фросия

30 — 25.06.18 — 14:16

(28) обычно номер строки на котором спотыкнулся отладчик

  

Волшебник

31 — 25.06.18 — 14:17

(22) Великий Гуру!

  

Droning

32 — 25.06.18 — 14:18

(29) решил проблему. Привет, hhhh!

Но почему-то в печати опять таки нет поля ДанныеПечатиШапкаЭконотел. В печати нужная инфа отсутствует.

Ребят, я понимаю, что никому не интересно отвечать на глупые вопросы. Но все же очень прошу помочь(

  

фросия

33 — 25.06.18 — 14:19

(32) отладчик. используй его!

  

Droning

34 — 25.06.18 — 14:19

(33) а как его использовать с внешними печатными формами? значения не заполняются

  

фросия

35 — 25.06.18 — 14:22

(34) открой ВПФ просто как обработку.  и отлаживай

  

Darych

36 — 25.06.18 — 14:23

(35) ща будут вопрос «она не открывается»…

Путевку повторить?

  

фросия

37 — 25.06.18 — 14:24

(36) подождите, может у него еще действие первой не закончилось

  

Волшебник

38 — 25.06.18 — 14:24

(36) Великий Гуру не повторяется. Сказанного достаточно. Sapienti sat.

  

Droning

39 — 25.06.18 — 14:25

(35) отладка пошла.

  

Droning

40 — 25.06.18 — 14:27

Структура  ДанныеПечатиШапкаЭконотел заполнена как надо…

  

hhhh

41 — 25.06.18 — 14:39

(40) а вы точно уверены что АдресОрганизациииШапка — это то, что надо? три буквы и подряд ??

  

Droning

42 — 25.06.18 — 14:44

(41) // Выводим шапку счета

        ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет);

        

        СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Получатель, СведенияОДокументе.ДатаДляПолученияСведений);

         АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «ЮридическийАдрес»);

        НазваниеОРганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «НаименованиеДляПечатныхФорм»);        

        

        
        Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            
                    ДанныеПечатиШапкаЭконотел = Новый Структура;

            

                    ДанныеПечатиШапкаЭконотел.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

                    ДанныеПечатиШапкаЭконотел.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

                
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаЭконотел);

                                
            ТабличныйДокумент.Вывести(ОбластьМакета);

            

        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            
                    ДанныеПечатиШапкаГорлинии = Новый Структура;

                    ДанныеПечатиШапкаГорлинии.Вставить(«АдресОрганизации», СведенияОПолучателе.ЮридическийАдрес);

                    ДанныеПечатиШапкаГорлинии.Вставить(«НазваниеОрганизации», СведенияОПолучателе.ПолноеНаименование);

        
                ОбластьМакета.Параметры.Заполнить(ДанныеПечатиШапкаГорлинии);

                
              ТабличныйДокумент.Вывести(ОбластьМакета);

            
        КонецЕсли;

  

Droning

43 — 25.06.18 — 14:44

в данный момент код выглядит так

  

фросия

44 — 25.06.18 — 14:53

а макет?

  

Droning

45 — 25.06.18 — 14:58

  

фросия

46 — 25.06.18 — 14:58

а где в макете

АдресОрганизации

НазваниеОрганизации

?

  

фросия

47 — 25.06.18 — 15:01

как у вас параметр в макете называется — тот параметр и заполняйте в программе

тип параметра примитивный: число, строка.

вот интересно, у вас два параметра, вы его как хотели увидеть

АдресНазвание

или НазваниеАдрес?

или Название и с новой строки адрес, сами подумайте как вам программа должна структуру вывести в строку?

  

Droning

48 — 25.06.18 — 15:09

(47) тогда мне вообще никакая структура не нужна же?

// Выводим шапку счета

        ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет);

        

        СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СведенияОДокументе.Получатель, СведенияОДокументе.ДатаДляПолученияСведений);

         АдресОрганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «ЮридическийАдрес»);

        НазваниеОРганизации  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПолучателе, «НаименованиеДляПечатныхФорм»);        

        

        
        Если СведенияОПолучателе.ИНН=»7715990969″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаЭконотел»);

            

            
                ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

                ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

                                
            ТабличныйДокумент.Вывести(ОбластьМакета);

            

        ИначеЕсли  СведенияОПолучателе.ИНН=»7705552109″ Тогда

            ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаГорлинии»);

            

            
                    ОбластьМакета.Параметры.Заполнить(НазваниеОрганизации);

                ОбластьМакета.Параметры.Заполнить(АдресОрганизации);

        
                
                
              ТабличныйДокумент.Вывести(ОбластьМакета);

            
        КонецЕсли;

  

Droning

49 — 25.06.18 — 15:09

если так, то выдает ошибку по несоответствию типов параметр номер1

  

Droning

50 — 25.06.18 — 15:34

(47) как очевидно задать тип параметра?

  

Darych

51 — 25.06.18 — 15:37

ОбластьМакета.ТвойДолбанныйПараметр = ТвоеБлинЗначение

  

Droning

52 — 25.06.18 — 15:43

(51) ОбластьМакета.ТабличныйДокумент = НазваниеОрганизации;

                 ОбластьМакета.ТабличныйДокумент = АдресОрганизации;

так?

  

Darych

53 — 25.06.18 — 15:44

до свиданья

  

Droning

54 — 25.06.18 — 15:44

ОбластьМакета.НазваниеОрганизации = ТабличныйДокумент;

                 ОбластьМакета.АдресОрганизации = ТабличныйДокумент;  

точнее так?

  

Darych

55 — 25.06.18 — 15:44

не.. лучче прощай

  

Малыш Джон

56 — 25.06.18 — 15:48

… и Droning рисует на своем борту очередную звездочку!

Boom! Headshot!

Jackshi

59 / 59 / 6

Регистрация: 16.01.2013

Сообщений: 162

1

Несоответствие типов

14.05.2014, 12:23. Показов 15419. Ответов 5

Метки нет (Все метки)


Доброго времени суток. Помогите решить задачу в Бух 3.0

1C
1
2
3
4
5
6
7
8
9
10
11
12
Докум = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(новый УникальныйИдентификатор(мОбъект.id));
Если не ЗначениеЗаполнено(Докум) Тогда
    Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    Док.УстановитьСсылкуНового(новый УникальныйИдентификатор(мОбъект.id));
Иначе 
    Если Докум.ПолучитьОбъект() = Неопределено Тогда
        Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
        Док.УстановитьСсылкуНового(новый УникальныйИдентификатор(мОбъект.id));// в этом месте Ошибка
    Иначе
        Док = Докум.ПолучитьОбъект();
    КонецЕсли;
КонецЕсли;

Докум = Ссылка(<Объект не найден> (170:8cde001e6759045111e3b5045af92b08))

{Форма.Форма.Форма(405)}: Ошибка при вызове метода контекста (УстановитьСсылкуНового)
Док.УстановитьСсылкуНового(новый УникальныйИдентификатор(мОбъект.id));
по причине:
Несоответствие типов (параметр номер ‘1’)

Вроде первый раз не ругается, а вот второй раз….. Почему?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

14.05.2014, 12:23

Ответы с готовыми решениями:

Несоответствие типов
Подскажите пожалуйста мне надо написать программу автоматического формирования кода справочника по…

Несоответствие типов
Помогите исправить пожайлуста.
uses crt,graph;
var
a:array of integer;

Несоответствие типов
Всем привет, выдает ошибку о несоответствие типов хотя в БД стоит тип текстовый
cmd.CommandText =…

Несоответствие типов
var s1,s2,s3:string;
ss1,ss2,ss3 :set of byte;
y:integer;
H:char;

begin
readln(s1);

5

SPR1TE89

21 / 21 / 3

Регистрация: 22.04.2014

Сообщений: 112

14.05.2014, 12:36

2

Jackshi, А если так попробовать?

1C
1
2
НоваяСсылка = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(новый УникальныйИдентификатор(мОбъект.id))
Док.УстановитьСсылкуНового(новаяСсылка);

И еще возможно битая ссылка. Поэтому и ругается.

1

59 / 59 / 6

Регистрация: 16.01.2013

Сообщений: 162

14.05.2014, 12:42

 [ТС]

3

Работает, Спасибо!

А есть возможность избавиться от битой ссылки?

0

21 / 21 / 3

Регистрация: 22.04.2014

Сообщений: 112

14.05.2014, 14:06

4

Jackshi, Вообще есть, но лучше пока не заморачивайтесь).

0

multirum

0 / 0 / 0

Регистрация: 14.09.2020

Сообщений: 6

30.11.2020, 14:07

5

1C
1
2
3
4
5
6
7
Процедура ИзменитьНаСервере()
    КодЭлемента = Справочники.Номенклатура.Выбрать(000000003);
    ИзменениеЦены = КодЭлемента.ПолучитьОбъект();
    ИзменениеЦены.ЦенаПродажи = 30000;
    ИзменениеЦены.Записать();
    Сообщить("Готово");
КонецПроцедуры

{Обработка.ИзменениеЦеныПоКодуЭлемента.Форма.Форма .Форма(4)}: Ошибка при вызове метода контекста (Выбрать)
КодЭлемента = Справочники.Номенклатура.Выбрать(000000003);
по причине:
Несоответствие типов (параметр номер ‘1’)
как исправить ?

0

polax

1783 / 1208 / 437

Регистрация: 16.01.2015

Сообщений: 5,322

30.11.2020, 18:44

6

multirum, Есть такая штука СП — синтакс помощник называется. Обращайтесь к нему чаще.

СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)
Выбрать (Select)
Синтаксис:
Выбрать(<Родитель>, <Владелец>, <Отбор>, <Порядок>)
Параметры:
<Родитель> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Отбор по родителю. Имеет смысл только для многоуровневых справочников. Если параметр не задан, то отбор по родителю не производится. Чтобы отобрать элементы верхнего уровня, нужно в качестве данного параметра указать пустую ссылку на элемент справочника.
<Владелец> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Отбор по владельцу. Имеет смысл только для подчиненных справочников. Если параметр не задан, то отбор по владельцу не производится.
<Отбор> (необязательный)
Тип: Структура.
Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры — значение отбора по этому полю. В качестве полей для отбора могут задаваться только поля «Код», «Наименование» и реквизиты справочника, для которых в конфигураторе признак индексирования установлен в значение «Индексировать» или в значение «Индексировать с доп. упорядоч.».
Важно! Структура может содержать только один элемент.
Если параметр не указан, то отбор не используется.
<Порядок> (необязательный)
Тип: Строка.
Строка с именем реквизита справочника, определяющая упорядочивание элементов в выборке. Может быть указано «Код», «Наименование» или имя одного из реквизитов примитивного типа (Число, Строка, Дата, Булево), для которого установлен признак «Индексирование» в значение «Индексировать» или в «Индексировать с дополнительным упорядочиванием» в конфигураторе. После имени реквизита через пробел может быть указано направление сортировки. Направление определяется: «Убыв» («Desc») — упорядочивать по убыванию; «Возр» («Asc») — упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Если параметр не указан, то порядок определяется основным представлением справочника.
Значение по умолчанию: Пустая строка.
Возвращаемое значение:
Тип: СправочникВыборка.<Имя справочника>.
Описание:
Формирует выборку элементов справочника по заданным условиям.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Номенклатура = Справочники.Номенклатура;
Отбор = Новый Структура("ТипНоменклатуры");
Пусто = Перечисления.ТипыНоменклатуры.ПустаяСсылка();
Отбор.ТипНоменклатуры = Пусто;
Выборка = Номенклатура.Выбрать(,,Отбор, "Наименование Убыв");
Пока Выборка.Следующий()  Цикл
    Объект = Выборка.ПолучитьОбъект();
    Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
    Попытка
        Объект.Записать();
    Исключение
        Предупреждение(НСтр("ru = 'Невозможно записать объект';"
           + " en = 'Can't write object'")
           +" '" + Объект + '"
           |" + ОписаниеОшибки(),60);
    КонецПопытки;
КонецЦикла;

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.11.2020, 18:44

Помогаю со студенческими работами здесь

Несоответствие типов
Добрый день, ни как не могу победить несоответствие типов.
То есть, есть некая форма с полем…

Несоответствие типов
— в этом файле две базы данных, которые должны синхронизироваться. Главная база с названием &quot;а&quot;,…

if then else несоответствие типов
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,…

Несоответствие типов
Делаю прогу, в которой программа ищет — существует ли ряд файлов. Например 153 файла текстi.txt,…

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

Или воспользуйтесь поиском по форуму:

6

После обновления конфигурации 1с упрощенка 8 до версии 8.3.10.2580 платформы и 3.0.52.42 конфигурации при создании счета вылезла ошибка: Несоответствие типов (параметр номер ‘1’) в отладчике: {ОбщийМодуль.РегламентныеЗаданияСервер.Модуль}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору)         РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор); по причине: Несоответствие типов (параметр номер ‘1’) На этом мои познания в программировании 1с заканчиваются. Где собака закопана?

У тебя Идентификатор имеет тип НЕ УНИКАЛЬНЫЙИДЕНТИФИКАТОР. А нужно что бы был УникальныйИдентификатор. МенеджерРегламентныхЗаданий (ScheduledJobsManager) НайтиПоУникальномуИдентификатору (FindByUUID) Синтаксис: НайтиПоУникальномуИдентификатору(<Идентификатор>) Параметры: Тип: УникальныйИдентификатор. Идентификатор регламентного задания. Возвращаемое значение: Тип: РегламентноеЗадание; Неопределено. Если задание для заданного идентификатора не найдено, возвращает Неопределено. Описание: Осуществляет поиск регламентного задания по уникальному идентификатору. Получение регламентного задания возможно только для администратора. Доступность: Сервер, толстый клиент, внешнее соединение.

Соответственно, что мне нужно сделать?

Присвоить переменной Идентификатор тип УникальныйИдентификатор. :)

Так заводская конфигурация и модуль только для чтения.

А ну тогда все..ничего не сделать

Функция ПолучитьРегламентноеЗадание(Знач Идентификатор) Экспорт              ВызватьИсключение( НСтр(«ru = ‘Регламентное задание не найдено.

Вот весь текст модуля. Где исправить идентификатор?

выгрузку-загрузку базы делал?

Выгрузку загрузку — не делал. А что такое тии?

тестирование и исправление в конфигураторе

Тааак. А как ты чистил кэш?

Тестирование  и  исправление запускал. C:Users1AppDataRoaming1C1Cv82 C:Users1AppDataLocal1C1Cv82 Из них грохнул папки с длинными названиями Еще пробовал через ClearCache и тонкий клиент

Выгрузил — загрузил. Все равно так-же.

Пройдись отладчиком, что у тебя в функцию передается? ИМХО, неопределено. И проблема не на самом деле не здесь, а при создании счета.

{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору)         РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор); по причине: Несоответствие типов (параметр номер ‘1’) Это в отладчике

Как посмотреть, что в функцию передается?

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

это значит кэш. про кэш наврал.

Как говАривала Алиса «все чудесатее и чудесатее»)

Не обязательно. Скорее всего на клиенте почистил. :)

Тэги:

Комментарии доступны только авторизированным пользователям

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    Правила раздела:

    • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
    • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
    • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

    Высказать своё мнение о модераторах раздела можно здесь: evGenius

    >
    Проблема с отбором
    , 1с 8.0

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    27.05.08, 06:39

      делаю отбор по значения таким вот образом

      ExpandedWrap disabled

        ДокументСписок.Отбор.Регион.ВидСравнения = ВидСравнения.Равно;

        ДокументСписок.Отбор.Регион.Использование = Истина;

        ДокументСписок.Отбор.Регион.Значение = Пользователь.Регион;

      теперь я хочу сделать что бы значения были не равно а всписке и делаю так:

      ExpandedWrap disabled

        МассивРегионов = Новый СписокЗначений;

        //тут идет запрос и выгрузка в СписЗнач

        ДокументСписок.Отбор.Регион.ВидСравнения = ВидСравнения.ВСписке;

        ДокументСписок.Отбор.Регион.Использование = Истина;

        ДокументСписок.Отбор.Регион.Значение = МассивРегионов;

      НЕ РАБОТАЕТ!!! :no-sad:

      Отбор осуществляется в форме списка документа

      Сообщение отредактировано: alevi — 27.05.08, 07:17


      GrAnd



      Сообщ.
      #2

      ,
      27.05.08, 07:16

        Цитата alevi @ 27.05.08, 06:39

        ДокументСписок.Отбор.Регион.Значение = МассивРегионов;

        Какого типа у тебя ДокументСписок.Отбор.Регион.Значение??? Если это есть СписокЗначений то работает все замечательно при условии

        ExpandedWrap disabled

          ДокументСписок.Отбор.Регион.Значение.ЗагрузитьЗначения(МассивРегионов);


        alevi



        Сообщ.
        #3

        ,
        27.05.08, 07:19

          Цитата GrAnd @ 27.05.08, 07:16

          ДокументСписок.Отбор.Регион.Значение.ЗагрузитьЗначения(МассивРегионов);

          Ошибка при вызове метода контекста (ЗагрузитьЗначения): Несоответствие типов (параметр номер «1»)

          Цитата GrAnd @ 27.05.08, 07:16

          Какого типа у тебя ДокументСписок.Отбор.Регион.Значение;

          Тип: Спис знач

          Сообщение отредактировано: alevi — 27.05.08, 07:27


          Прикреплённый файлПрикреплённый файлssh.GIF (4.13 Кбайт, скачиваний: 385)


          GrAnd



          Сообщ.
          #4

          ,
          27.05.08, 07:47

            Цитата alevi @ 27.05.08, 07:19

            Ошибка при вызове метода контекста (ЗагрузитьЗначения): Несоответствие типов (параметр номер «1»)

            В таком случае прогони заполнение через цикл с помощью метода Добавить(..)

            или измени тип МассивРегионов на Массив

            ExpandedWrap disabled

              МассивРегионов = Новый Массив;

              //тут идет запрос и выгрузка в СписЗнач

              ДокументСписок.Отбор.Регион.ВидСравнения = ВидСравнения.ВСписке;

              ДокументСписок.Отбор.Регион.Использование = Истина;

              ДокументСписок.Отбор.Регион.Значение.ЗагрузитьЗначения(МассивРегионов);

            Версия кака 8.0 или 8.1 ???
            так как в 8.1 есть более гибкая схема работы со списками и массивами


            alevi



            Сообщ.
            #5

            ,
            27.05.08, 07:51

              все работает спасибо! первый вариант в тему, просто немножко вручную поправил список значений…

              с меня пиво :D

              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

              0 пользователей:

              • Предыдущая тема
              • 1С: Проблемы и решения
              • Следующая тема

              Рейтинг@Mail.ru

              [ Script execution time: 0,0306 ]   [ 15 queries used ]   [ Generated: 30.01.23, 09:56 GMT ]  

              Довольно часто начинающие 1С разработчики сталкиваются с ошибками, которых достаточно легко избежать. Ниже мы рассмотрим топ 11 ошибок и способы их исправления. Также доступна видеоверсия статьи

              Содержание

              Поле объекта не обнаружено

              1С ошибка Поле объекта не обнаружено

              Существует множество статей, которые описывают возможные причины возникновения в 1С ошибки “Поле объекта не обнаружено”. Порой это связывают с обновлением платформы, обновлением типового релиза, или с какими-то другими причинами.

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

              Такое сообщение платформа выдает, когда пытается обратиться к свойству объекта языка, которого у данного объекта нет. Не важно, что это за объект – документ, справочник, таблица значений , или сообщение пользователю.

              • Удалили табличную часть, к которой обращаемся в коде?
              • Переименовали реквизит, а в коде не исправили?
              • Заменили значение со ссылки на неопределено?

              Вуаля – платформа выдаст ошибку “Поле объекта не обнаружено”!

              Как исправить? Исходя из природы ошибки – переименовать реквизит на нужное имя, отредактировать код, или использовать правильные обращения к стандартным свойствам объекта.

              Например, у объекта “СообщениеПользователю” нет свойства “Таблица”, и следующий код приведет к ошибке:

              Сообщение = Новый СообщениеПользователю;
              Сообщение.Таблица = “Ошибка”;

              Индекс находится за границами массива

              1С ошибка Индекс находится за пределами массива

              Что означает такое сообщение системы? Как правило, с данной ошибкой разработчик сталкивается при некорректной работе с коллекциями. Самые частые случаи появления ошибки “Индекс находится за границами массива”.

              • Использование при обходе коллекции количества элементов вместо индекса. Индексы начинаются с нуля, а количество элементов – с единицы. Поэтому следующий код гарантированно приведет к ошибке: Массив[Массив.Количество()]
              • Последствия удаления элементов из коллекции, очистки коллекции или замены коллекции на пустую
              • Ошибочное увеличение счетчика в цикле “Для”

               Как исправить? Для удаления элементов из коллекции по условию – использовать обратный цикл. Добавлять условие на соответствие счетчика цикла и индекса массива. Не увеличивать счетчик внутри кода цикла Для … Цикл … КонецЦикла

              Обращение к процедуре как к функции

              ОШибка

              Суть этой ошибки в том, что процедура не может возвращать значение. И если мы в коде используем вызов процедуры справа от знака присваивания, это приведет к ошибке.

              Данная ошибка имеет две вариации – если используется стандартная процедура из методов какого-нибудь объекта, то фраза будет звучать “Обращение к процедуре объекта как к функции”. Если же использовать процедуру, объявленную в коде, то текст ошибки будет “Обращение к процедуре как к функции”.
              При этом ошибка использования процедуры объекта является ошибкой времени выполнения – т.е. на этапе сохранения и проверки конфигурации платформа эту ошибку не обнаружит.

              А вот неправильное использование процедуры синтаксическая проверка (Ctrl + F7) успешно обнаруживает, и не даст сохранить конфигурацию или внешнюю обработку/отчет, пока ошибка не будет устранена.

              Рассмотрим два примера:

              1. Воспроизведем ошибку “Обращение к процедуре как к функции”. При этом платформа не даст сохранить изменения, т.к. не проходит синтакс-контроль.

              2. Воспроизведем ошибку “Обращение к процедуре объекта как к функции”. Здесь мы неверно используем метод объекта массива “Добавить”, который является процедурой.

              Как исправить? Ошибка тривиальная, и исправление тоже. Чаще всего, достаточно внимательно прочитать описание методов объекта во встроенной справке или синтакс-помощнике. Если метод является процедурой, то значений он возвращать не может. Следовательно, нужно модифицировать код так, чтобы такого ошибочного вызова не было.
              Если же используется процедура, объявленная в коде, возможно, есть необходимость изменить ее на функцию, либо также скорректировать код, который эту процедуру использует.

              Процедура не может возвращать значение

              Родственная предыдущей ошибка. Для того, чтобы код возвращал какое-то значение, следует этот код размещать в функции, а не в процедуре.

              В процедуре можно написать ключевое слово “Возврат” без параметров. Это будет означать выход из процедуры.

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

              Процедура ПроцедураНеМожетВозвращатьЗначение(Команда)
              Возврат "Ошибка";
              КонецПроцедуры

              Как исправить? Платформа сама подсказывает, в каком месте кода ошибка. Нужно изменить текст модуля – либо удалить параметр у ключевого слова Возврат, либо убрать его вовсе, либо изменить процедуру на функцию – зависит от того, какая логика у вашей процедуры, и как вы предполагаете ее использовать.

              Переменная не определена

              Такой текст ошибки платформа 1С выдает на этапе синтаксического контроля, при сохранении конфигурации, внешнего отчета или обработки.
              Причин у этой ошибки может быть несколько.

              • Опечатка в имени переменной
              • Обращение к переменной, которая нигде в области видимости не объявлена (неявной инициализацией с присвоением значения, явным образом с использованием ключевого слова “Перем”, или передана в качестве параметра)
              • Написание на клиенте серверного кода. Например, обращение к менеджеру справочников “Справочники”, и т.п. Клиентская часть приложения “не видит ” серверные объекты языка
              • Также ошибка может появиться, если ранее код использовался в режиме толстого клиента, но после был запущен в тонком клиенте.

              Как исправить?

              Внимательно следить за правильностью набранного кода, своевременно объявлять переменные или передавать их в качестве параметров. Писать серверный код только в серверных модулях, а также использовать соответствующие инструкции препроцессора, например “&НаСервере”.

              Значение не является значением объектного типа

              Ошибка “Значение не является значением объектного типа” может возникнуть при неверном обращении к объекту языка. Объектный тип – это такие объекты языка, которые содержат в себе другие объекты – свойства, реквизиты и т.п. Эти свойства доступны через точку, например “Объект.СвойствоЭтогоОбъекта”

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

              Разберем более сложный пример:

              &НаСервере
              Процедура ЗначениеНеЯвляетсяЗначениемОбъектногоТипаНаСервере(Справочники = Ложь)
              Сообщить(Справочники.Сотрудники.ПустаяСсылка());
              КонецПроцедуры

              Ошибка может быть “плавающей”. Если вместо параметра по умолчанию “Справочники = Ложь” будет передан менеджер справочников, то ошибки возникать не будет. А если вызвать процедуру без параметров, то будет использоваться параметр по умолчанию с типом Булево, что и приведет к ошибке.

              Чаще всего чтобы исправить ошибку, нужно в отладчике посмотреть, какой тип значения используется. Можно внести изменения в код, чтобы обеспечить корректное поведение (например, в запросе вместо наименования товара выбрать ссылку, и в коде через точку уже обращаться к свойствам ссылки, а не текстового наименования). А можно добавить проверку на нужный тип значения. Т.е. – если значение того типа, который мы ожидаем – выполняем код. Иначе – не выполняем.

              Ошибка при вызове метода контекста

              Ошибка при вызове метода контекста

              Обнаружены ошибки в 1С Синтаксическая ошибка

              В языке 1С у разных объектов (запросов, справочников, табличных документов и др.) есть предопределенные методы, предусмотренные платформой. Обращение к этим методам требует соблюдения порядка и параметров, правильного синтаксиса и соблюдения условий использования. Например, при чтении табличного документа из файла он не должен быть открыт в другой программе, при подключении к http-соединению оно должно быть доступно, и т.п.

              Если эти условия не соблюдать, платформа в зависимости от версии может выдавать сообщения вида “Ошибка при вызове метода контекста”, и далее будут следовать более подробные сведения об ошибке – стек вызовов, приведших к ошибке, номер строки и позиции в строке, где произошла ошибка.

              Чаще всего ошибка при вызове метода контекста встречается в следующих методах:

              1. Записать
              2. Прочитать
              3. Выполнить
              4. Создать
              5. ПроверитьВывод

              Разберем эту ошибку на примере метода Выполнить объекта Запрос:

              Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 1 ГДЕ ИСТИНА И");
              Запрос.Выполнить();
              

              В тексте запроса допущена ошибка –  после первого условия “ГДЕ ИСТИНА” указан оператор И, но после него нет еще одного условия. В результате при попытке выполнения запроса, платформа вернет ошибку.

              Для исправления ошибки зачастую достаточно внимательно использовать методы, при необходимости уточнять порядок, количество и тип параметров – это можно сделать в справке или синтакс-помощнике (встать курсором на имя метода в коде, и нажать сочетание клавиш Ctrl+F1). В случае запроса – нужно передавать синтаксически корректный текст запроса; в случае проверки вывода на печать – в системе должен быть установлен принтер; в случае подключения к почте – должны быть корректно указаны логин и пароль, и т.п.

              Тип не может быть выбран в запросе в 1С 8.3 (8.2)

              Ошибка Тип не может быть выбран в запросе

              С такой ошибкой начинающие разработчики (да и не только начинающие 😉 ) сталкиваются чаще всего, при чтении запросом данных из таблиц значений, либо из регистров сведений. Все дело в том, что запросы поддерживают далеко не все типы значений. Так, например, нельзя запросом выбрать тип Картинка, ХранилищеЗначений, Шрифт, и многие другие типы, которые не относятся к примитивным или ссылочным типам значений.

              Так, если ресурс регистра сведений имеет тип ХранилищеЗначений, выбрать его запросом будет нельзя. Также, если в таблицу значений поместить значения не подходящих типов, а после передать эту таблицу в качестве параметра-источника данных, выполнение запроса также приведет к ошибке “Тип не может быть выбран в запросе”.

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

              Неверно:

              //ТЗОшибочныйТип.Колонки.Добавить("Контрагент");

              Верно:

              //ТЗОшибочныйТип.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));

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

              Использование в 1С модальных окон в данном режиме запрещено

              Ошибка Использование в 1С модальных окон в данном режиме запрещено​

              Платформа будет выдавать такое сообщение, если в коде используются методы, приводящие к открытию модальных окон. Модальные окна – это окна, которые при открытии блокируют весь остальной интерфейс. В 1С есть несколько модальных методов – например – “Вопрос”, “ОткрытьЗначение”, “Предупреждение”. Кроме того, в коде может использоваться модальный синтаксис открытия форм: “ОткрытьМодально()”

              Если в свойствах конфигурации выбран режим использования модальности “Не использовать”, то выполнение модальных методов будет приводить к этой ошибке “Использование в 1С модальных окон в данном режиме запрещено”.

              Для устранения ошибки можно пойти несколькими путями. Как водится, один – быстрый, другой – правильный 🙂

              Быстрый способ – переключить режим использования модальности в положение “Использовать”.

              Более правильный способ – использовать в коде немодальные вызовы методов. Например, у метода “Вопрос” есть немодальный аналог  – “ПоказатьВопрос”, у метода “Предупреждение” – “ПоказатьПредупреждение”, и т.п. Чаще всего об этих методах дополнительно указано в синтакс-помощнике и справке.

              Кроме того, в последних версиях платформы появились асинхронные методы – “ВопросАсинх”, “ПредупреждениеАсинх” и др. Появление этих методов позволяет писать более простой и понятный асинхронный код, и направлено в первую очередь, на более полноценную поддержку браузерами и работу в веб-клиенте.

              1С 8.3 и 8.2: Запись с такими ключевыми полями существует!

              Данная ошибка появляется при некорректной записи в регистр сведений. Чаще всего с этой ошибкой сталкиваются начинающие разработчики, не до конца понимающие механизмы работы с ключевыми полями (измерениями).

              Суть ошибки следующая – регистр сведений позволяет записать запись (строку таблицы) с уникальным набором ключевых полей – а для периодических регистров также и поля Период. Если следующая запись полностью повторяет значение ключевых полей, но осуществляется методом Записать с параметром Замещать = Истина, то запись в таблице регистра просто заменится на идентичную.

              Однако если поместить две абсолютно одинаковые записи в набор записей, и попытаться его записать – платформа выдаст ошибку. Еще один распространенный случай, когда 1С сообщает “Запись с такими ключевыми полями существует” – это запись в периодический регистр сведений с периодичностью от “День” и выше, подчиненный регистратору.

              В типовых конфигурациях часто эту ошибку можно воспроизвести, если в пользовательском режиме создать два документа “Установка цен номенклатуры” с одной и той же номенклатурой и за один и тот же день. Попытка провести второй документ приведет к ошибке.

              В случае, когда ошибка возникает не в результате действий пользователя, а при выполнении кода, чтобы устранить ее, чаще всего необходимо проанализировать алгоритм записи в регистр. Если запись осуществляется одним набором данных, его предварительно нужно свернуть до уникальных записей. Например, выгрузить в таблицу значений, свернуть, и загрузить в набор записей.

              Поле объекта недоступно для записи в 1С

              Ошибка Поле объекта недоступно для записи в 1С​

              Чаще всего начинающие программисты 1С сталкиваются с этой ошибкой в двух ситуациях.

              Первый случай – это попытка редактирования системных полей, недоступных для записи. Например, в модуле формы сама форма будет содержаться в объекте ЭтаФорма. И попытка присвоить этому реквизиту любое значение приведет к ошибке “Поле объекта недоступно для записи”.

              Второй случай – и с ним новички как раз допускают больше всего ошибок – это попытка редактирования полей ссылки, а не самого объекта. Чаще всего код выглядит примерно так:

              Элемент = Справочники.Сотрудники.НайтиПоКоду("12345");
              Элемент.Наименование = "Новое наименование";

               

              Исполнение данного кода приведет к ошибке, т.к. поля ссылки доступны только для чтения, а метод НайтиПоКоду вернет именно ссылку. Чтобы можно было внести изменения, следует из ссылки получить сам объект – используя соответствующий метод ПолучитьОбъект().

              Для исправления ошибки зачастую достаточно получить объект из ссылки. В случае же попытки редактирования свойств, доступных только на чтение самый правильный подход – анализировать имеющуюся документацию по этим свойствам, и не пытаться присваивать им значения, если платформа этого не предусматривает.

              Ссылка на обработку

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

              Заключение

              Как видите, зачастую ошибки тривиальны, и достаточно просто исправляются. Общие рекомендации – внимательно читать документацию и справку, корректно использовать методы, активно пользоваться отладчиком. Если вы новичок, и хотите освоить программирование в 1С с нуля – могу предложить приобрести мой базовый курс для начинающих. Более подробная информация – по ссылке.

              1

              2

              3

              4

              5

              ..6

              Показывать по
              10
              20
              40
              сообщений

              Новая тема

              Ответить

              Николай Иванов

              Дата регистрации: 13.04.2017
              Сообщений: 32

              Здравствуйте. Используется последний релиз Зарплата и управление персоналом КОРП, редакция 2.5 (2.5.184.1). Платформа 1С:Предприятие 8.3 (8.3.18.1289).
              Формируется регламентный отчет «Расчет по страховым взносам» за 1-й квартал 2023 г.. Отчет формируется по новой форме, ошибок не возникает. Но при попытке заполнить отчет по соответствующей кнопке возникает ошибка «Во время заполнения отчета произошла ошибка: Ошибка при вызове метода контекста (Выполнить)». Никакой дополнительной информации не указывается, в журнале регистрации также никакой информации по ошибке нет. В отладчике видно, что ошибка возникает в процедуре “РасчетПоказателей_РСВ_2023», на этапе выполнения запроса, когда обрабатывается свойство «ЧисленностьЗастрахованныхВРазрезеТарифов2023». Отследить детально сложно, одно из подозрений, что не заполнены какие-то справочные данные, хотя вроде как тарифы заполнены.
              Возможно нужно сделать какие-то дополнительные настройки для выполнения этого отчета, но какие – непонятно.
              Может быть, кто-то сталкивался с этой ошибкой, подскажите пожалуйста пути решения. Или же, может быть, это ошибка релиза?

              gvf

              Дата регистрации: 10.04.2023
              Сообщений: 5

              Николай Иванов,
              Проблема в общем модуле «ЗаполнениеРегламентированнойОтчетности» процедуре «РасчетПоказателей_РСВ_2023»
              в этом коде (здесь ничего не отбирается):

                                |ОБЪЕДИНИТЬ ВСЕ
                                |
                                |ВЫБРАТЬ
                                |      ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОрганизацииЗанимающиесяОбщепитом),
                                |      Доходы.Период,
                                |      Доходы.ФизЛицо
                                |ИЗ
                                |      ВТЗастрахованныеЛицаОрганизации КАК Доходы
                                |            ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыТарифныхСтавокОрганизаций КАК ВидыТарифныхСтавокОрганизаций
                                |            ПО Доходы.Период = ВидыТарифныхСтавокОрганизаций.Период
                                |ГДЕ
                                |      Доходы.ЗастрахованПФР
                                |      И ЕСТЬNULL(ВидыТарифныхСтавокОрганизаций.ВидТарифаСтраховыхВзносов, ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОбщийНалоговыйРежим)) = ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОрганизацииЗанимающиесяОбщепитом)
                                |      И Доходы.ВидТарифаСтраховыхВзносов В (ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОрганизацииЗанимающиесяОбщепитом), ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОбщийНалоговыйРежим))
              и этом (обращение к «КодыТарифов», похоже нет соединения с временной таблицей):

                                |////////////////////////////////////////////////////////////­////////////////////
                                |ВЫБРАТЬ РАЗЛИЧНЫЕ
                                |      ЗастрахованныеНаОПС.ВидТарифаСтраховыхВзносов КАК ВидТарифаСтраховыхВзносов,
                                |      ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,
                                |      МЕСЯЦ(ЗастрахованныеНаОПС.Период) КАК Период,
                                |      ЗастрахованныеНаОПС.ФизЛицо КАК ФизЛицо,
                                |      1 КАК КоличествоОПС
                                |ПОМЕСТИТЬ ВТЗастрахованныеПоМесяцам
                                |ИЗ
                                |      ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС»;
              И еще в форме «ФормаОтчета2023Кв1» самого отчета процедуре «ФормаОтчета2023Кв1» (цикл по неопределенно) в э
              том коде;

                                                  Для Каждого ДопСтрока Из ДопСтрокСтраницы Цикл
                                                        СвойстваМнЧУровня2­ = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»);
                                                        Если СвойстваМнЧУровня2 <> Неопределено Тогда
                                                              СвойстваМнЧУ­ровня2.ТекущееКоличествоСтрок = 0;
                                                        КонецЕсли;
                                                  КонецЦикла;

              gvf

              Дата регистрации: 10.04.2023
              Сообщений: 5

              Николай Иванов,
              * И еще в форме «ФормаОтчета2023Кв1» самого отчета процедуре «ЗаполнитьАвто» (цикл по неопределенно) в э
              том коде;

              Николай Иванов

              Дата регистрации: 13.04.2017
              Сообщений: 32

              gvf,
              Спасибо большое, эту процедуру и имел ввиду, что ошибка возникает в этой процедуре. И что-то были сомнения на строчку запроса
              |      ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,
              — возможно, не прав, но это обращение к временной таблице, а поля там возможно нет такого, хотя в процедуре много временных таблиц, возможно и ошибаюсь.
              А варианты исправления Вы не знаете случайно или ждать обновление/исправления от 1С?

              gvf

              Дата регистрации: 10.04.2023
              Сообщений: 5

              Николай Иванов,
              «А варианты исправления Вы не знаете случайно или ждать обновление/исправления от 1С?»

              Не знаю можно ли здесь писать варианты исправления, для этого нужно понимать суть происходящего в отчете (чего я не знаю).
              В запросе с этим кодом «|      ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,» , если смотреть на предыдущий код в этой же процедуре не хватает соединения с ВТ «ВТКодыТарифов»

              NadinPr

              Дата регистрации: 26.03.2012
              Сообщений: 9

              gvf, спасибо тебе, добрый человек! сэкономил массу времени

              NadinPr

              Дата регистрации: 26.03.2012
              Сообщений: 9

              Николай Иванов, как уже сказано выше, необходимо найти кусок кода и подправить, а потом уже можно ждать у

              моря погоды

              обновление:
              1.общий модуль — заполнениеРегламентированнойОтчетности — РасчетПоказателей_РСВ_2023

              поискать строку ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС

              добавить туда кусок кода:

              |////////////////////////////////////////////////////////////­////////////////////
                                |ВЫБРАТЬ РАЗЛИЧНЫЕ
                                |      ЗастрахованныеНаОПС.ВидТарифаСтраховыхВзносов КАК ВидТарифаСтраховыхВзносов,
                                |      ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,
                                |      МЕСЯЦ(ЗастрахованныеНаОПС.Период) КАК Период,
                                |      ЗастрахованныеНаОПС.ФизЛицо КАК ФизЛицо,
                                |      1 КАК КоличествоОПС
                                |ПОМЕСТИТЬ ВТЗастрахованныеПоМесяцам
                                |ИЗ
                                |      ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС

                                                  //Вставлено 12 апреля 2023
                                |            ЛЕВОЕ СОЕДИНЕНИЕ ВТКодыТарифов КАК КодыТарифов
                                |            ПО ЗастрахованныеНаОПС.ВидТарифаСтраховыхВзносов = КодыТарифов.ВидТарифаСтраховыхВзносов
                                |                  И (ГОД(ЗастрахованныеНаОПС.Период) МЕЖДУ КодыТарифов.ГодС И КодыТарифов.ГодПо)
                                //Вставлено 12 апреля 2023

              2. отчеты — РегламентированныйОтчетРасчетПоСтраховымВзносам — ФормаОтчета2023Кв1

              в алгоритме формы найти строку СвойстваМнЧУровня2 = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»)

              заменить это

                                                        Для Каждого ДопСтрока Из ДопСтрокСтраницы Цикл
                                                              СвойстваМнЧУ­ровня2 = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»);
                                                              Если СвойстваМнЧУровня2 <> Неопределено Тогда
                                                                    Свойст­ваМнЧУровня2.ТекущееКоличествоСтрок = 0;
                                                              КонецЕсли;
                                                        КонецЦикла;
              на это

                                                  Если ДопСтрокСтраницы <> Неопределено Тогда
                                                        Для Каждого ДопСтрока Из ДопСтрокСтраницы Цикл
                                                              СвойстваМнЧУ­ровня2 = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»);
                                                              Если СвойстваМнЧУровня2 <> Неопределено Тогда
                                                                    Свойст­ваМнЧУровня2.ТекущееКоличествоСтрок = 0;
                                                              КонецЕсли;
                                                        КонецЦикла;
                                                  КонецЕсли;

              Николай Иванов

              Дата регистрации: 13.04.2017
              Сообщений: 32

              NadinPr, NadinPr, NadinPr, gvf,
              Понятно, спасибо!
              Надеюсь это многим пригодится!

              Ларионов Сергей

              Дата регистрации: 11.04.2023
              Сообщений: 3

              NadinPr,

              Класс, Спасибо! Заработало!

              vitaly smetanin

              Дата регистрации: 12.04.2023
              Сообщений: 3

              Скажите, пожалуйста
              Есть кусок кода       |      ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС»;

              Куда вставить код нужно? Вместо?

              Читают тему:

              Понравилась статья? Поделить с друзьями:
            • Ошибка получения обработки обслуживания вики принт
            • Ошибка планирования это
            • Ошибка при вызове метода контекста выполнить пакет
            • Ошибка получения обработки обслуживания атол 30ф
            • Ошибка планирования нобелевская премия