Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 окт 2021, 23:34

Процедура или функция с указанным именем не определена (Записать)

Автор oo oo, 02 фев 2017, 12:00

0 Пользователей и 2 гостей просматривают эту тему.

oo oo

{Документ.НарядЗаказ.Форма.ФормаДокумента.Форма(387,2)}: Процедура или функция с указанным именем не определена (Записать) <<?>>Записать(); (Проверка: Толстый клиент (обычное приложение)){Документ.НарядЗаказ.Форма.ФормаДокумента.Форма(387,2)}: Процедура или функция с указанным именем не определена (Записать) <<?>>Записать(); (Проверка: Тонкий клиент)
Ругается на все вызовы Записать(). Вот пример такой процедуры (Ранее она прекрасно работала):

&НаКлиенте
Процедура КнТех(Команда)
Записать(); //что здесь не так?
ПередатьСсылкуНаДокумент();
Отбор = Новый Структура("Владелец", Объект.НаименованиеЭтикетки);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
Форма = ПолучитьФорму("Справочник.ТехХарактер.ФормаВыбора", ПараметрыФормы);
Объект.ТехХарактер = Форма.ОткрытьМодально();
КонецПроцедуры


Вот такие ошибки возникают при проверке модуля формы документа. Ругается на вызов стандартной процедуры Записать(). Понятия не имею, почему это случилось. Появилось это после того как я написал несколько процедур, добавил дин. список и таб. часть. Процедуры, после написания которых конфигуратор считает, что Записать() не определена:


Функция ПроверитьТипМатериала()

Если Объект.НаименованиеЭтикетки.ТипЦены.ПометкаУдаления Тогда
Сообщить("В - " + СокрЛП(Объект.НаименованиеЭтикетки.Наименование) + ". Указан помеченный на удаление ""Тип материала"", выберите новый тип!");
Объект.НаименованиеЭтикетки = Неопределено;
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;

КонецФункции

&НаКлиенте
Процедура ПриВыбореВтулокПроизв()
Если Объект.ВнутрДиаметрВтулки.Пустая() Тогда
Объект.КоличествоВтулок = 0;
Иначе
КВНТ = ВзятьЧастное(Объект.Тираж, (Объект.КолЭтик * Объект.КолРядовВГотРол));
Если (КВНТ - Цел(КВНТ)) > 0 Тогда
Объект.КоличествоВтулок = Цел(КВНТ) + 1;
Иначе
Объект.КоличествоВтулок = ВзятьЧастное(Объект.Тираж, (Объект.КолЭтик * Объект.КолРядовВГотРол));
КонецЕсли;
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура УказатьДокумент(Пар)

Если Пар = 1 Тогда

Если Объект.Простой Тогда
Элементы.Простой.Доступность = Истина;
Элементы.Общий.Доступность = Ложь;
Сообщить("ВЫПИСАН ПРОСТОЙ НАРЯД НА ОДНУ ЭТИКЕТКУ.");
Иначе
Элементы.Общий.Доступность = Истина;
КонецЕсли;

ИначеЕсли Пар = 2 Тогда

Если Объект.Общий Тогда
Элементы.Общий.Доступность = Истина;
Элементы.Простой.Доступность = Ложь;
Сообщить("ВЫПИСАН ОБЩИЙ НАРЯД НА ЭТИКЕТКИ.");
Иначе
Элементы.Простой.Доступность = Истина;
КонецЕсли;

КонецЕсли;

КонецПроцедуры

&НаСервере
Функция глВернутьЭлемент(НЭ, ДокСсылка)

СтрЭлем = "";
Нашло = 0;       

СпрМС = Справочники.МакетыИСогласование;

ТЗ.Колонки.Добавить("Код");
ТЗ.Колонки.Добавить("ДатД");
ТЗ.Колонки.Добавить("Элемент");
ТЗ.Колонки.Добавить("Наряд");
ТЗ.Колонки.Добавить("Заявка");

Отбор = Новый Структура("Документ", ДокСсылка);
Выборка = СпрМС.Выбрать(,НЭ,Отбор, "Код Возр");

Нашло = 0;

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

Если Выборка.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;

НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Код = Выборка.Код;
НоваяСтрока.ДатД = Выборка.Документ.Дата;
НоваяСтрока.Элемент = Выборка.Ссылка;
НоваяСтрока.Наряд = Выборка.Документ.Ссылка;
НоваяСтрока.Заявка = Выборка.Заявка; 

КонецЦикла;

Если ТЗ.Количество() > 0 Тогда

ТЗ.Сортировать("Код Убыв,ДатД Убыв");

Для каждого стр из ТЗ Цикл

Если стр.Элемент.ВидОперации = 2 Тогда
СтрЭлем = стр.Элемент.Ссылка;
Нашло = 1 ;
Прервать;
Иначе
Если СтрЭлем = "" Тогда
СтрЭлем = стр.Элемент.Ссылка;
Нашло = 0;
КонецЕсли;

Если стр.Наряд = ДокСсылка Тогда
СтрЭлем = стр.Элемент.Ссылка;
Нашло = 2;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Если Нашло = 0 Тогда

Попытка
мис = СпрМС.СоздатьЭлемент();      
мис.ДатаДок = ДокСсылка.Дата;
мис.НомерДок = ДокСсылка.Номер;
мис.ВидДок = ДокСсылка.Метаданные().Имя;

мис.Наименование = СокрЛП(СтрЭлем.Наименование);
мис.ДатаИзгПол = СтрЭлем.ДатаИзгПол;
мис.Макет = СтрЭлем.Макет;
мис.Согласование = СтрЭлем.Согласование;
мис.ФлОбщий = СтрЭлем.ФлОбщий;
мис.ВидОперации = СтрЭлем.ВидОперации;
мис.ФлЗаявка = Ложь;

мис.НовПол = Ложь;

мис.Записать();

СтрЭлем = мис.Ссылка;
Исключение
Возврат Неопределено;
КонецПопытки;

ИначеЕсли Нашло = 1 Тогда

мис = ТЗ.Элемент.ПолучитьОбъект(); мис = Справочники.МакетыИСогласование.ПустаяСсылка();
мис.ДатаДок = ДокСсылка.Дата;
мис.НомерДок = ДокСсылка.Номер;
мис.ВидДок = ДокСсылка.Метаданные().Имя;
мис.ВидОперации = 1;
мис.Записать();

СтрЭлем = мис.Ссылка;
КонецЕсли;
КонецЕсли;

Список = Новый СписокЗначений();

Список.Добавить(СтрЭлем, "СтрЭлем");
Список.Добавить(Нашло, "Нашло");

Возврат Список;

КонецФункции

&НаСервере
Процедура ЗаполнитьДанныеНаряда()  //выгрузка дин. списка в таблицу значений

Запрос = Новый Запрос(ТЗНаряд.ТекстЗапроса);

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

ТЗДанныеНаряда.Загрузить(Результат.Выгрузить());

КонецПроцедуры

&НаСервере
Процедура ОтобразитьКартинку(Рекв, ОбъектК)
Попытка
Если ОбъектК.Пустая() Тогда Возврат; КонецЕсли;
ОбъектСпрФайлы = ОбъектК.ПолучитьОбъект();

ОбработаннаяКартинка = Новый Картинка(ОбъектСпрФайлы.Путь);
ХранилищеКартинки = Новый ХранилищеЗначения(ОбработаннаяКартинка);

ОбъектСпрФайлы.Файл = ХранилищеКартинки;
ОбъектСпрФайлы.Записать();

Рекв = ПолучитьНавигационнуюСсылку(ОбъектК, "Файл");
//Элементы.Рекв.РазмерКартинки = РазмерКартинки.АвтоРазмер;
Исключение
КонецПопытки;
КонецПроцедуры


&НаКлиенте
Процедура ФлагПроверкиНарядов()

ЗаполнитьДанныеНаряда();

Если ТЗДанныеНаряда.Количество() > 0 Тогда

//Элементы.ТЗНаряд.ТекущиеДанные.

Попытка
ТекстОНаряда = СокрЛП(Элементы.ТЗНаряд.ТекущиеДанные.Наименование);
Если НЕ(Элементы.ТЗНаряд.ТекущиеДанные.Картинка.Пустая()) Тогда
ОтобразитьКартинку(Макет, Элементы.ТЗНаряд.ТекущиеДанные.Картинка);
Иначе

КонецЕсли;

Исключение
КонецПопытки;
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПоказатьТаблицу(Пар)

Если Объект.Тираж > 0 Тогда
УказатьДокумент(Пар);

Если Объект.Общий Тогда
Элементы.ВидимостьТаблицы.ТекущаяСтраница = Элементы.ПоказатьТаблицу;
ФлагПроверкиНарядов();

КонецЕсли;
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЗаказПриИзменении(Элемент)
Если Объект.Ссылка.Пустая() Тогда
Если Вопрос("Сначала необходимо записать документ. Записать?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
Записать();
Иначе
Сообщить("Документ не записан");
Возврат;
КонецЕсли;
КонецЕсли;

Если ПроверитьТипМатериала() И Объект.Тираж > 0 Тогда
Если НЕ(Объект.НаименованиеЭтикетки.Пустая()) Тогда
ЗаполнитьТехХарактеристики();

КонецЕсли;
КонецЕсли;

Если УчетШва() Тогда
Элементы.ВидШва.Доступность = Истина;
Иначе Элементы.ВидШва.Доступность = Ложь;
КонецЕсли;

ПриВыбореВтулокПроизв();
//РасчетМПВтулок();   Позже

Упаковка();

Если (Объект.Цвет1 + Объект.Цвет2) > 0 Тогда

СтрЭлем = "";

Спис = глВернутьЭлемент(Объект.НаименованиеЭтикетки, Объект.Ссылка);

СтрЭлем = Спис.СтрЭлем;
Нашло = Спис.Нашло;

Объект.Простой = 0;
Объект.Общий = 0;

Если НЕ(СокрЛП(СтрЭлем) = "") Тогда

Если СтрЭлем.ФлОбщий Тогда

Объект.Общий = 1;

Элементы.Общий.Доступность = Истина;
Элементы.Простой.Доступность = Ложь;

ПоказатьТаблицу(2);

Объект.НовыйПротокол = 0;
Объект.СтарыйПротокол = 0;

Иначе

КонецЕсли;

КонецЕсли;


// КонецЕсли
//
//Иначе
//
КонецЕсли;

КонецПроцедуры

&НаСервере
Функция УчетШва()
Возврат ?(Объект.ТипМатериала.УчетШва, Истина, Ложь);
КонецФункции

&НаСервере
Функция Упаковка()
Если Объект.Контрагент.МатериалЗаказчика = Ложь Тогда
Если Объект.НаименованиеЭтикетки.Пленки Тогда
Объект.ФлУпаковка = Истина;
Иначе
Объект.ФлУпаковка = Ложь;
КонецЕсли;
КонецЕсли;
КонецФункции




Собсна, почему это происходит и как от этого спастись?

Kironten

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

oo oo

Цитата: Kironten от 02 фев 2017, 12:03
Записать можно только объект, а объект на клиенте недоступен. Отправляйтесь с записью на сервер.

Спасибо за ответ, но это абсолютно ничего не меняет. Только что сделал так:


&НаСервере
Процедура ЗаписатьДокумент()
          Записать(); //теперь ошибка на этой строке
КонецПроцедуры

&НаКлиенте
Процедура КнТех(Команда)
ЗаписатьДокумент();
ПередатьСсылкуНаДокумент();
Отбор = Новый Структура("Владелец", Объект.НаименованиеЭтикетки);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
Форма = ПолучитьФорму("Справочник.ТехХарактер.ФормаВыбора", ПараметрыФормы);
Объект.ТехХарактер = Форма.ОткрытьМодально();
КонецПроцедуры


Результат:


{Документ.НарядЗаказ.Форма.ФормаДокумента.Форма(677,11)}: Процедура или функция с указанным именем не определена (Записать)
          <<?>>Записать(); (Проверка: Сервер)
{Документ.НарядЗаказ.Форма.ФормаДокумента.Форма(677,11)}: Процедура или функция с указанным именем не определена (Записать)
          <<?>>Записать(); (Проверка: Толстый клиент (обычное приложение))


Kironten

Вы объект не получили.
Есть подозрение, что вы находитесь в модуле формы. Соответственно объектом является форма. У формы НЕТ метода записать.

oo oo

Цитата: Kironten от 02 фев 2017, 12:23
Вы объект не получили.
Есть подозрение, что вы находитесь в модуле формы. Соответственно объектом является форма. У формы НЕТ метода записать.


&НаСервере
Процедура ЗаписатьДокумент()
Объект.Записать();
КонецПроцедуры


Вот так? Результат:


{Документ.НарядЗаказ.Форма.ФормаДокумента.Форма(677)}: Метод объекта не обнаружен (Записать)
Объект.Записать();


Kironten

Нет.
Поставьте точку останова и посмотрите, какой тип вы имеете в "объект"-е на сервере.
Я так думаю у вас там просто ДанныеФормы, а никак не ДокументОбъект.

oo oo

Цитата: Kironten от 02 фев 2017, 12:43
Нет.
Поставьте точку останова и посмотрите, какой тип вы имеете в "объект"-е на сервере.
Я так думаю у вас там просто ДанныеФормы, а никак не ДокументОбъект.

Да, действительно, Объект - это ДанныеФормы. Как мне в таком случае обратиться к ДокументОбъекту? Подскажите, пожалуйста.
Добавлено: 02 фев 2017, 13:17


Цитата: Kironten от 02 фев 2017, 12:43
Нет.
Поставьте точку останова и посмотрите, какой тип вы имеете в "объект"-е на сервере.
Я так думаю у вас там просто ДанныеФормы, а никак не ДокументОбъект.

Я еще кое-что заметил. В стандартных командах нету команд: "Записать", "Сохранить". И с командной панели эти кнопки пропали.


Добавлено: 02 фев 2017, 13:53


Все, разобрался.В реквизитах формы документа в свойствах реквизита "Объект" не стоял флажок "Основной реквизит". Он каким-то образом сам снялся. Поставил. И команды появились и метод Записать() работает (кстати, только с клиента, на сервере он просит какой-то параметр).

Думаю, что кому-то будет полезно.

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск